STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228102
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

swfchan turned sixteen years old yesterday! (5may2024)

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/46510491?noj=FRM46510491-7DC" width="1" height="1"></div>

Infect Evolve Repeat 2 - infect red bloodcells and destroy white ones.swf

This is the info page for
Flash #134478

(Click the ID number above for more basic data on this flash file.)


Text
latency 1 - repro 3 - damage 2 -
2399 infected - 2389 destroyed - 238923 spawne

99999 EP - stage 23

descr
asd

name

menu

0 / 100 · 1

infect. destroy.

time left: 00:02

progress saved

888/888

<p align="left"></p>

<p align="left"></p>

level complete!

level complete!

<p align="left"><font face="Trebuchet MS" size="14" color="#000000" letterSpacing="0.000000" kerning="0">Sorry, there&apos;s no highscore table available for this website. You can play for the Highscore on MINDistortion.tv though.</font></p>

highscores

connecting...

enter your name:

submit

submit

Your hall of fame is empty. Here you will find past infections once you start a new game.

hall of fame

achievements

<p align="left"><font face="Trebuchet MS" size="14" color="#000000" letterSpacing="0.000000" kerning="0">Developed &amp; Designed by Manuel Fallmann</font></p>

<p align="left"><font face="Trebuchet MS" size="14" color="#000000" letterSpacing="0.000000" kerning="0">Music by All work and no play make Jack a dull boy All work and no play make Jack a dull boy All work and no play make Jack a dull boy </font></p>

credits

• infect:
Drag germs onto red bloodcells to infect them.

You are an infection. These are your objectives.

• reproduce:
More germs will spawn from infected bloodcells.

• survive:
Avoid white bloodcells and antibiotics.

• destroy:
Attack white bloodcells if you're powerful enough.

• evolve:
Earn evolution points and upgrade your skills.

how to play

Achievement Unlocked!

name of achievement

latency level 6

germs take less time to spawn

1234

upgrade

200 DNS

Newgrounds API Connector

Connecting to the Newgrounds Gateway...

Connection Established!

YOU ARE NOT LOGGED IN!

You will not be able to use any
members-only features!

Some features may be
temporarily unavailable.

API CONNECTION FAILED

NOTICE!

A new version is now available!
Click the button below to check it out.

View latest version

UNAUTHORIZED USE!!

This website is hosting this file without proper consent!
Click the button below to view a legal version.

View authorized version

infect. evolve. repeat

infect. evolve. repeat

<p align="left"><font face="Trebuchet MS" size="16" color="#000000" letterSpacing="0.000000" kerning="0"><b>Developed by MINDistortion.tv</b></font></p>

v.1.21 NG

you've gone pandemic!

you've gone pandemic!

you've gone pandemic!

congratulations on finishing the campaign.
now let's see how far you can get in endless mode!

do the evolution!

do the evolution!

required

stage: 300 DNA + time bonus 100 DNA | total: 1500 / 2000 · level 6
stage: 300 DNA + time bonus 100 DNA | total: 1500 / 2000 · level 6

available points: 500 DNA

ActionScript [AS3]

Section 1
//NewgroundsAPIAsset_API_Conencted_4 (APIConnector_fla.NewgroundsAPIAsset_API_Conencted_4) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_API_Conencted_4 extends MovieClip { public function NewgroundsAPIAsset_API_Conencted_4(){ addFrameScript(36, this.frame37); } function frame37(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 2
//NewgroundsAPIAsset_ConnectingAPI_2 (APIConnector_fla.NewgroundsAPIAsset_ConnectingAPI_2) package APIConnector_fla { import flash.display.*; public dynamic class NewgroundsAPIAsset_ConnectingAPI_2 extends MovieClip { public function NewgroundsAPIAsset_ConnectingAPI_2(){ addFrameScript(9, this.frame10); } function frame10(){ stop(); } } }//package APIConnector_fla
Section 3
//NewgroundsAPIAsset_Connection_Error_7 (APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_Connection_Error_7 extends MovieClip { public function NewgroundsAPIAsset_Connection_Error_7(){ addFrameScript(9, this.frame10, 20, this.frame21); } function frame10(){ stop(); } function frame21(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 4
//NewgroundsAPIAsset_Load_Indicator_3 (APIConnector_fla.NewgroundsAPIAsset_Load_Indicator_3) package APIConnector_fla { import flash.display.*; import flash.events.*; public dynamic class NewgroundsAPIAsset_Load_Indicator_3 extends MovieClip { public function NewgroundsAPIAsset_Load_Indicator_3(){ addFrameScript(0, this.frame1); } public function onEnterFrame(_arg1:Event):void{ if (((visible) && (stage))){ rotation = (rotation + 30); } else { removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); }; } function frame1(){ addEventListener(Event.ENTER_FRAME, this.onEnterFrame); } } }//package APIConnector_fla
Section 5
//NewgroundsAPIAsset_Login_Warning_5 (APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5) package APIConnector_fla { import flash.display.*; import com.newgrounds.components.*; public dynamic class NewgroundsAPIAsset_Login_Warning_5 extends MovieClip { public function NewgroundsAPIAsset_Login_Warning_5(){ addFrameScript(9, this.frame10, 20, this.frame21); } function frame10(){ stop(); } function frame21(){ APIConnector(parent).clear(); } } }//package APIConnector_fla
Section 6
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int; _local9 = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.writeUTFBytes(_arg1); return (hashBinary(_local2)); } private static function createBlocks(_arg1:ByteArray):Array{ var _local2:Array; var _local3:int; var _local4:int; var _local5:int; _local2 = new Array(); _local3 = (_arg1.length * 8); _local4 = 0xFF; _local5 = 0; while (_local5 < _local3) { _local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32))); _local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3; return (_local2); } public static function hashBinary(_arg1:ByteArray):String{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:Array; var _local11:int; var _local12:int; _local2 = 1732584193; _local3 = -271733879; _local4 = -1732584194; _local5 = 271733878; _local10 = createBlocks(_arg1); _local11 = _local10.length; _local12 = 0; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; digest = new ByteArray(); digest.writeInt(_local2); digest.writeInt(_local3); digest.writeInt(_local4); digest.writeInt(_local5); digest.position = 0; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hashBytes(_arg1:ByteArray):String{ return (hashBinary(_arg1)); } } }//package com.adobe.crypto
Section 7
//PNGEncoder (com.adobe.images.PNGEncoder) package com.adobe.images { import flash.display.*; import flash.utils.*; public class PNGEncoder { private static var crcTableComputed:Boolean = false; private static var crcTable:Array; private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{ var _local4:uint; var _local5:uint; var _local6:uint; var _local7:int; var _local8:uint; var _local9:uint; var _local10:uint; if (!crcTableComputed){ crcTableComputed = true; crcTable = []; _local9 = 0; while (_local9 < 0x0100) { _local8 = _local9; _local10 = 0; while (_local10 < 8) { if ((_local8 & 1)){ _local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1)))); } else { _local8 = uint((_local8 >>> 1)); }; _local10++; }; crcTable[_local9] = _local8; _local9++; }; }; _local4 = 0; if (_arg3 != null){ _local4 = _arg3.length; }; _arg1.writeUnsignedInt(_local4); _local5 = _arg1.position; _arg1.writeUnsignedInt(_arg2); if (_arg3 != null){ _arg1.writeBytes(_arg3); }; _local6 = _arg1.position; _arg1.position = _local5; _local8 = 4294967295; _local7 = 0; while (_local7 < (_local6 - _local5)) { _local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8)))); _local7++; }; _local8 = uint((_local8 ^ uint(4294967295))); _arg1.position = _local6; _arg1.writeUnsignedInt(_local8); } public static function encode(_arg1:BitmapData):ByteArray{ var _local2:ByteArray; var _local3:ByteArray; var _local4:ByteArray; var _local5:int; var _local6:uint; var _local7:int; _local2 = new ByteArray(); _local2.writeUnsignedInt(2303741511); _local2.writeUnsignedInt(218765834); _local3 = new ByteArray(); _local3.writeInt(_arg1.width); _local3.writeInt(_arg1.height); _local3.writeUnsignedInt(134610944); _local3.writeByte(0); writeChunk(_local2, 1229472850, _local3); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.height) { _local4.writeByte(0); if (!_arg1.transparent){ _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | 0xFF))); _local7++; }; } else { _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel32(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | (_local6 >>> 24)))); _local7++; }; }; _local5++; }; _local4.compress(); writeChunk(_local2, 1229209940, _local4); writeChunk(_local2, 1229278788, null); return (_local2); } } }//package com.adobe.images
Section 8
//JSON (com.adobe.serialization.json.JSON) package com.adobe.serialization.json { public class JSON { public static function decode(_arg1:String){ var _local2:JSONDecoder; _local2 = new JSONDecoder(_arg1); return (_local2.getValue()); } public static function encode(_arg1:Object):String{ var _local2:JSONEncoder; _local2 = new JSONEncoder(_arg1); return (_local2.getString()); } } }//package com.adobe.serialization.json
Section 9
//JSONDecoder (com.adobe.serialization.json.JSONDecoder) package com.adobe.serialization.json { public class JSONDecoder { private var value; private var tokenizer:JSONTokenizer; private var token:JSONToken; public function JSONDecoder(_arg1:String){ tokenizer = new JSONTokenizer(_arg1); nextToken(); value = parseValue(); } private function nextToken():JSONToken{ return ((token = tokenizer.getNextToken())); } private function parseObject():Object{ var _local1:Object; var _local2:String; _local1 = new Object(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; while (true) { if (token.type == JSONTokenType.STRING){ _local2 = String(token.value); nextToken(); if (token.type == JSONTokenType.COLON){ nextToken(); _local1[_local2] = parseValue(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting } or , but found " + token.value)); }; } else { tokenizer.parseError(("Expecting : but found " + token.value)); }; } else { tokenizer.parseError(("Expecting string but found " + token.value)); }; }; return (null); } private function parseArray():Array{ var _local1:Array; _local1 = new Array(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; while (true) { _local1.push(parseValue()); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting ] or , but found " + token.value)); }; }; return (null); } public function getValue(){ return (value); } private function parseValue():Object{ if (token == null){ tokenizer.parseError("Unexpected end of input"); }; switch (token.type){ case JSONTokenType.LEFT_BRACE: return (parseObject()); case JSONTokenType.LEFT_BRACKET: return (parseArray()); case JSONTokenType.STRING: case JSONTokenType.NUMBER: case JSONTokenType.TRUE: case JSONTokenType.FALSE: case JSONTokenType.NULL: return (token.value); default: tokenizer.parseError(("Unexpected " + token.value)); }; return (null); } } }//package com.adobe.serialization.json
Section 10
//JSONEncoder (com.adobe.serialization.json.JSONEncoder) package com.adobe.serialization.json { import flash.utils.*; public class JSONEncoder { private var jsonString:String; public function JSONEncoder(_arg1){ jsonString = convertToString(_arg1); } private function arrayToString(_arg1:Array):String{ var _local2:String; var _local3:int; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { if (_local2.length > 0){ _local2 = (_local2 + ","); }; _local2 = (_local2 + convertToString(_arg1[_local3])); _local3++; }; return ((("[" + _local2) + "]")); } private function convertToString(_arg1):String{ if ((_arg1 is String)){ return (escapeString((_arg1 as String))); }; if ((_arg1 is Number)){ return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null"); } else { if ((_arg1 is Boolean)){ return ((_arg1) ? "true" : "false"); } else { if ((_arg1 is Array)){ return (arrayToString((_arg1 as Array))); }; if ((((_arg1 is Object)) && (!((_arg1 == null))))){ return (objectToString(_arg1)); }; }; }; return ("null"); } private function escapeString(_arg1:String):String{ var _local2:String; var _local3:String; var _local4:Number; var _local5:int; var _local6:String; var _local7:String; _local2 = ""; _local4 = _arg1.length; _local5 = 0; while (_local5 < _local4) { _local3 = _arg1.charAt(_local5); switch (_local3){ case "\"": _local2 = (_local2 + "\\\""); break; case "\\": _local2 = (_local2 + "\\\\"); break; case "\b": _local2 = (_local2 + "\\b"); break; case "\f": _local2 = (_local2 + "\\f"); break; case "\n": _local2 = (_local2 + "\\n"); break; case "\r": _local2 = (_local2 + "\\r"); break; case "\t": _local2 = (_local2 + "\\t"); break; default: if (_local3 < " "){ _local6 = _local3.charCodeAt(0).toString(16); _local7 = ((_local6.length == 2)) ? "00" : "000"; _local2 = (_local2 + (("\\u" + _local7) + _local6)); } else { _local2 = (_local2 + _local3); }; }; _local5++; }; return ((("\"" + _local2) + "\"")); } private function objectToString(_arg1:Object):String{ var s:String; var classInfo:XML; var value:Object; var key:String; var v:XML; var o = _arg1; s = ""; classInfo = describeType(o); if (classInfo.@name.toString() == "Object"){ for (key in o) { value = o[key]; if ((value is Function)){ } else { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(key) + ":") + convertToString(value))); }; }; } else { for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name]))); }; }; return ((("{" + s) + "}")); } public function getString():String{ return (jsonString); } } }//package com.adobe.serialization.json
Section 11
//JSONParseError (com.adobe.serialization.json.JSONParseError) package com.adobe.serialization.json { public class JSONParseError extends Error { private var _text:String; private var _location:int; public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){ super(_arg1); name = "JSONParseError"; _location = _arg2; _text = _arg3; } public function get text():String{ return (_text); } public function get location():int{ return (_location); } } }//package com.adobe.serialization.json
Section 12
//JSONToken (com.adobe.serialization.json.JSONToken) package com.adobe.serialization.json { public class JSONToken { private var _value:Object; private var _type:int; public function JSONToken(_arg1:int=-1, _arg2:Object=null){ _type = _arg1; _value = _arg2; } public function set value(_arg1:Object):void{ _value = _arg1; } public function get value():Object{ return (_value); } public function set type(_arg1:int):void{ _type = _arg1; } public function get type():int{ return (_type); } } }//package com.adobe.serialization.json
Section 13
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer) package com.adobe.serialization.json { public class JSONTokenizer { private var loc:int; private var ch:String; private var obj:Object; private var jsonString:String; public function JSONTokenizer(_arg1:String){ jsonString = _arg1; loc = 0; nextChar(); } private function skipComments():void{ if (ch == "/"){ nextChar(); switch (ch){ case "/": do { nextChar(); } while (((!((ch == "\n"))) && (!((ch == ""))))); nextChar(); break; case "*": nextChar(); while (true) { if (ch == "*"){ nextChar(); if (ch == "/"){ nextChar(); break; }; } else { nextChar(); }; if (ch == ""){ parseError("Multi-line comment not closed"); }; }; break; default: parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )")); }; }; } private function isDigit(_arg1:String):Boolean{ return ((((_arg1 >= "0")) && ((_arg1 <= "9")))); } private function readNumber():JSONToken{ var _local1:JSONToken; var _local2:String; var _local3:Number; _local1 = new JSONToken(); _local1.type = JSONTokenType.NUMBER; _local2 = ""; if (ch == "-"){ _local2 = (_local2 + "-"); nextChar(); }; if (!isDigit(ch)){ parseError("Expecting a digit"); }; if (ch == "0"){ _local2 = (_local2 + ch); nextChar(); if (isDigit(ch)){ parseError("A digit cannot immediately follow 0"); }; } else { while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; if (ch == "."){ _local2 = (_local2 + "."); nextChar(); if (!isDigit(ch)){ parseError("Expecting a digit"); }; while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; if ((((ch == "e")) || ((ch == "E")))){ _local2 = (_local2 + "e"); nextChar(); if ((((ch == "+")) || ((ch == "-")))){ _local2 = (_local2 + ch); nextChar(); }; if (!isDigit(ch)){ parseError("Scientific notation number needs exponent value"); }; while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; _local3 = Number(_local2); if (((isFinite(_local3)) && (!(isNaN(_local3))))){ _local1.value = _local3; return (_local1); }; parseError((("Number " + _local3) + " is not valid!")); return (null); } private function nextChar():String{ return ((ch = jsonString.charAt(loc++))); } public function getNextToken():JSONToken{ var _local1:JSONToken; var _local2:String; var _local3:String; var _local4:String; _local1 = new JSONToken(); skipIgnored(); switch (ch){ case "{": _local1.type = JSONTokenType.LEFT_BRACE; _local1.value = "{"; nextChar(); break; case "}": _local1.type = JSONTokenType.RIGHT_BRACE; _local1.value = "}"; nextChar(); break; case "[": _local1.type = JSONTokenType.LEFT_BRACKET; _local1.value = "["; nextChar(); break; case "]": _local1.type = JSONTokenType.RIGHT_BRACKET; _local1.value = "]"; nextChar(); break; case ",": _local1.type = JSONTokenType.COMMA; _local1.value = ","; nextChar(); break; case ":": _local1.type = JSONTokenType.COLON; _local1.value = ":"; nextChar(); break; case "t": _local2 = ((("t" + nextChar()) + nextChar()) + nextChar()); if (_local2 == "true"){ _local1.type = JSONTokenType.TRUE; _local1.value = true; nextChar(); } else { parseError(("Expecting 'true' but found " + _local2)); }; break; case "f": _local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar()); if (_local3 == "false"){ _local1.type = JSONTokenType.FALSE; _local1.value = false; nextChar(); } else { parseError(("Expecting 'false' but found " + _local3)); }; break; case "n": _local4 = ((("n" + nextChar()) + nextChar()) + nextChar()); if (_local4 == "null"){ _local1.type = JSONTokenType.NULL; _local1.value = null; nextChar(); } else { parseError(("Expecting 'null' but found " + _local4)); }; break; case "\"": _local1 = readString(); break; default: if (((isDigit(ch)) || ((ch == "-")))){ _local1 = readNumber(); } else { if (ch == ""){ return (null); }; parseError((("Unexpected " + ch) + " encountered")); }; }; return (_local1); } private function skipWhite():void{ while (isWhiteSpace(ch)) { nextChar(); }; } private function isWhiteSpace(_arg1:String):Boolean{ return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r")))); } public function parseError(_arg1:String):void{ throw (new JSONParseError(_arg1, loc, jsonString)); } private function skipIgnored():void{ var _local1:int; do { _local1 = loc; skipWhite(); skipComments(); } while (_local1 != loc); } private function isHexDigit(_arg1:String):Boolean{ var _local2:String; _local2 = _arg1.toUpperCase(); return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F")))))); } private function readString():JSONToken{ var _local1:JSONToken; var _local2:String; var _local3:String; var _local4:int; _local1 = new JSONToken(); _local1.type = JSONTokenType.STRING; _local2 = ""; nextChar(); while (((!((ch == "\""))) && (!((ch == ""))))) { if (ch == "\\"){ nextChar(); switch (ch){ case "\"": _local2 = (_local2 + "\""); break; case "/": _local2 = (_local2 + "/"); break; case "\\": _local2 = (_local2 + "\\"); break; case "b": _local2 = (_local2 + "\b"); break; case "f": _local2 = (_local2 + "\f"); break; case "n": _local2 = (_local2 + "\n"); break; case "r": _local2 = (_local2 + "\r"); break; case "t": _local2 = (_local2 + "\t"); break; case "u": _local3 = ""; _local4 = 0; while (_local4 < 4) { if (!isHexDigit(nextChar())){ parseError((" Excepted a hex digit, but found: " + ch)); }; _local3 = (_local3 + ch); _local4++; }; _local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16))); break; default: _local2 = (_local2 + ("\\" + ch)); }; } else { _local2 = (_local2 + ch); }; nextChar(); }; if (ch == ""){ parseError("Unterminated string literal"); }; nextChar(); _local1.value = _local2; return (_local1); } } }//package com.adobe.serialization.json
Section 14
//JSONTokenType (com.adobe.serialization.json.JSONTokenType) package com.adobe.serialization.json { public class JSONTokenType { public static const NUMBER:int = 11; public static const FALSE:int = 8; public static const RIGHT_BRACKET:int = 4; public static const NULL:int = 9; public static const TRUE:int = 7; public static const RIGHT_BRACE:int = 2; public static const UNKNOWN:int = -1; public static const COMMA:int = 0; public static const LEFT_BRACKET:int = 3; public static const STRING:int = 10; public static const LEFT_BRACE:int = 1; public static const COLON:int = 6; } }//package com.adobe.serialization.json
Section 15
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local3:String; var _local4:int; var _local5:int; _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int; _local3 = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 16
//HMAC (com.hurlant.crypto.hash.HMAC) package com.hurlant.crypto.hash { import flash.utils.*; public class HMAC { private var bits:uint; private var hash:IHash; public function HMAC(_arg1:IHash, _arg2:uint=0){ this.hash = _arg1; this.bits = _arg2; } public function getHashSize():uint{ if (bits != 0){ return ((bits / 8)); }; return (hash.getHashSize()); } public function dispose():void{ hash = null; bits = 0; } public function compute(_arg1:ByteArray, _arg2:ByteArray):ByteArray{ var _local3:ByteArray; var _local4:ByteArray; var _local5:ByteArray; var _local6:uint; var _local7:ByteArray; var _local8:ByteArray; if (_arg1.length > hash.getInputSize()){ _local3 = hash.hash(_arg1); } else { _local3 = new ByteArray(); _local3.writeBytes(_arg1); }; while (_local3.length < hash.getInputSize()) { _local3[_local3.length] = 0; }; _local4 = new ByteArray(); _local5 = new ByteArray(); _local6 = 0; while (_local6 < _local3.length) { _local4[_local6] = (_local3[_local6] ^ 54); _local5[_local6] = (_local3[_local6] ^ 92); _local6++; }; _local4.position = _local3.length; _local4.writeBytes(_arg2); _local7 = hash.hash(_local4); _local5.position = _local3.length; _local5.writeBytes(_local7); _local8 = hash.hash(_local5); if ((((bits > 0)) && ((bits < (8 * _local8.length))))){ _local8.length = (bits / 8); }; return (_local8); } public function toString():String{ return ((("hmac-" + ((bits > 0)) ? (bits + "-") : "") + hash.toString())); } } }//package com.hurlant.crypto.hash
Section 17
//IHash (com.hurlant.crypto.hash.IHash) package com.hurlant.crypto.hash { import flash.utils.*; public interface IHash { function toString():String; function getHashSize():uint; function getInputSize():uint; function hash(_arg1:ByteArray):ByteArray; } }//package com.hurlant.crypto.hash
Section 18
//MD2 (com.hurlant.crypto.hash.MD2) package com.hurlant.crypto.hash { import flash.utils.*; public class MD2 implements IHash { public static const HASH_SIZE:int = 16; private static const S:Array = [41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, 39, 53, 62, 204, 231, 191, 247, 151, 3, 0xFF, 25, 48, 179, 72, 165, 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, 31, 26, 219, 153, 141, 51, 159, 17, 131, 20]; public function getHashSize():uint{ return (HASH_SIZE); } public function toString():String{ return ("md2"); } public function getInputSize():uint{ return (16); } public function hash(_arg1:ByteArray):ByteArray{ var _local2:uint; var _local3:uint; var _local4:uint; var _local5:ByteArray; var _local6:uint; var _local7:ByteArray; var _local8:uint; var _local9:uint; var _local10:uint; _local2 = _arg1.length; _local3 = (((16 - (_arg1.length % 16))) || (16)); do { _arg1[_arg1.length] = _local3; } while ((_arg1.length % 16) != 0); _local4 = _arg1.length; _local5 = new ByteArray(); _local6 = 0; _local3 = 0; while (_local3 < _local4) { _local8 = 0; while (_local8 < 16) { _local6 = (_local5[_local8] = (_local5[_local8] ^ S[(_arg1[(_local3 + _local8)] ^ _local6)])); _local8++; }; _local3 = (_local3 + 16); }; _arg1.position = _arg1.length; _arg1.writeBytes(_local5); _local4 = (_local4 + 16); _local7 = new ByteArray(); _local3 = 0; while (_local3 < _local4) { _local8 = 0; while (_local8 < 16) { _local7[(32 + _local8)] = ((_local7[(16 + _local8)] = _arg1[(_local3 + _local8)]) ^ _local7[_local8]); _local8++; }; _local9 = 0; _local8 = 0; while (_local8 < 18) { _local10 = 0; while (_local10 < 48) { _local9 = (_local7[_local10] ^ S[_local9]); _local7[_local10] = _local9; _local10++; }; _local9 = ((_local9 + _local8) & 0xFF); _local8++; }; _local3 = (_local3 + 16); }; _local7.length = 16; _arg1.length = _local2; return (_local7); } } }//package com.hurlant.crypto.hash
Section 19
//MD5 (com.hurlant.crypto.hash.MD5) package com.hurlant.crypto.hash { import flash.utils.*; public class MD5 implements IHash { public static const HASH_SIZE:int = 16; private function ff(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7)); } private function hh(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7)); } private function cmn(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint):uint{ return ((rol((((_arg2 + _arg1) + _arg4) + _arg6), _arg5) + _arg3)); } public function getHashSize():uint{ return (HASH_SIZE); } private function ii(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7)); } private function rol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } public function toString():String{ return ("md5"); } public function getInputSize():uint{ return (64); } private function gg(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7)); } public function hash(_arg1:ByteArray):ByteArray{ var _local2:uint; var _local3:String; var _local4:Array; var _local5:uint; var _local6:Array; var _local7:ByteArray; _local2 = (_arg1.length * 8); _local3 = _arg1.endian; while ((_arg1.length % 4) != 0) { _arg1[_arg1.length] = 0; }; _arg1.position = 0; _local4 = []; _arg1.endian = Endian.LITTLE_ENDIAN; _local5 = 0; while (_local5 < _arg1.length) { _local4.push(_arg1.readUnsignedInt()); _local5 = (_local5 + 4); }; _local6 = core_md5(_local4, _local2); _local7 = new ByteArray(); _local7.endian = Endian.LITTLE_ENDIAN; _local5 = 0; while (_local5 < 4) { _local7.writeUnsignedInt(_local6[_local5]); _local5++; }; _arg1.length = (_local2 / 8); _arg1.endian = _local3; return (_local7); } private function core_md5(_arg1:Array, _arg2:uint):Array{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; _arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32))); _arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2; _local3 = 1732584193; _local4 = 4023233417; _local5 = 2562383102; _local6 = 271733878; _local7 = 0; while (_local7 < _arg1.length) { _arg1[_local7] = ((_arg1[_local7]) || (0)); _arg1[(_local7 + 1)] = ((_arg1[(_local7 + 1)]) || (0)); _arg1[(_local7 + 2)] = ((_arg1[(_local7 + 2)]) || (0)); _arg1[(_local7 + 3)] = ((_arg1[(_local7 + 3)]) || (0)); _arg1[(_local7 + 4)] = ((_arg1[(_local7 + 4)]) || (0)); _arg1[(_local7 + 5)] = ((_arg1[(_local7 + 5)]) || (0)); _arg1[(_local7 + 6)] = ((_arg1[(_local7 + 6)]) || (0)); _arg1[(_local7 + 7)] = ((_arg1[(_local7 + 7)]) || (0)); _arg1[(_local7 + 8)] = ((_arg1[(_local7 + 8)]) || (0)); _arg1[(_local7 + 9)] = ((_arg1[(_local7 + 9)]) || (0)); _arg1[(_local7 + 10)] = ((_arg1[(_local7 + 10)]) || (0)); _arg1[(_local7 + 11)] = ((_arg1[(_local7 + 11)]) || (0)); _arg1[(_local7 + 12)] = ((_arg1[(_local7 + 12)]) || (0)); _arg1[(_local7 + 13)] = ((_arg1[(_local7 + 13)]) || (0)); _arg1[(_local7 + 14)] = ((_arg1[(_local7 + 14)]) || (0)); _arg1[(_local7 + 15)] = ((_arg1[(_local7 + 15)]) || (0)); _local8 = _local3; _local9 = _local4; _local10 = _local5; _local11 = _local6; _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, 3614090360); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, 3905402710); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, 3250441966); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, 4118548399); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, 2821735955); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, 4249261313); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, 2336552879); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, 4294925233); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, 2304563134); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, 4254626195); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, 2792965006); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, 4129170786); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, 3225465664); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, 3921069994); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, 3593408605); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, 3634488961); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, 3889429448); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, 3275163606); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, 4107603335); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, 2850285829); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, 4243563512); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, 2368359562); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, 4294588738); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, 2272392833); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, 4259657740); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, 2763975236); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, 4139469664); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, 3200236656); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, 3936430074); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, 3572445317); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, 3654602809); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, 3873151461); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, 3299628645); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, 4096336452); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, 2878612391); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, 4237533241); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, 2399980690); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, 4293915773); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, 2240044497); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, 4264355552); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, 2734768916); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, 4149444226); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, 3174756917); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, 3951481745); _local3 = (_local3 + _local8); _local4 = (_local4 + _local9); _local5 = (_local5 + _local10); _local6 = (_local6 + _local11); _local7 = (_local7 + 16); }; return ([_local3, _local4, _local5, _local6]); } } }//package com.hurlant.crypto.hash
Section 20
//SHA1 (com.hurlant.crypto.hash.SHA1) package com.hurlant.crypto.hash { public class SHA1 extends SHABase implements IHash { public static const HASH_SIZE:int = 20; private function ft(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint):uint{ if (_arg1 < 20){ return (((_arg2 & _arg3) | (~(_arg2) & _arg4))); }; if (_arg1 < 40){ return (((_arg2 ^ _arg3) ^ _arg4)); }; if (_arg1 < 60){ return ((((_arg2 & _arg3) | (_arg2 & _arg4)) | (_arg3 & _arg4))); }; return (((_arg2 ^ _arg3) ^ _arg4)); } private function kt(_arg1:uint):uint{ return (((_arg1)<20) ? 1518500249 : ((_arg1)<40) ? 1859775393 : ((_arg1)<60) ? 2400959708 : 3395469782); } override public function toString():String{ return ("sha1"); } override public function getHashSize():uint{ return (HASH_SIZE); } private function rol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } override protected function core(_arg1:Array, _arg2:uint):Array{ var _local3:Array; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:uint; var _local14:uint; var _local15:uint; var _local16:uint; _arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (24 - (_arg2 % 32)))); _arg1[((((_arg2 + 64) >> 9) << 4) + 15)] = _arg2; _local3 = []; _local4 = 1732584193; _local5 = 4023233417; _local6 = 2562383102; _local7 = 271733878; _local8 = 3285377520; _local9 = 0; while (_local9 < _arg1.length) { _local10 = _local4; _local11 = _local5; _local12 = _local6; _local13 = _local7; _local14 = _local8; _local15 = 0; while (_local15 < 80) { if (_local15 < 16){ _local3[_local15] = ((_arg1[(_local9 + _local15)]) || (0)); } else { _local3[_local15] = rol((((_local3[(_local15 - 3)] ^ _local3[(_local15 - 8)]) ^ _local3[(_local15 - 14)]) ^ _local3[(_local15 - 16)]), 1); }; _local16 = ((((rol(_local4, 5) + ft(_local15, _local5, _local6, _local7)) + _local8) + _local3[_local15]) + kt(_local15)); _local8 = _local7; _local7 = _local6; _local6 = rol(_local5, 30); _local5 = _local4; _local4 = _local16; _local15++; }; _local4 = (_local4 + _local10); _local5 = (_local5 + _local11); _local6 = (_local6 + _local12); _local7 = (_local7 + _local13); _local8 = (_local8 + _local14); _local9 = (_local9 + 16); }; return ([_local4, _local5, _local6, _local7, _local8]); } } }//package com.hurlant.crypto.hash
Section 21
//SHA224 (com.hurlant.crypto.hash.SHA224) package com.hurlant.crypto.hash { public class SHA224 extends SHA256 { public function SHA224(){ h = [3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]; } override public function getHashSize():uint{ return (28); } override public function toString():String{ return ("sha224"); } } }//package com.hurlant.crypto.hash
Section 22
//SHA256 (com.hurlant.crypto.hash.SHA256) package com.hurlant.crypto.hash { public class SHA256 extends SHABase implements IHash { protected var h:Array; protected static const k:Array = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]; public function SHA256(){ h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; super(); } protected function rrol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << (32 - _arg2)) | (_arg1 >>> _arg2))); } override public function toString():String{ return ("sha256"); } override public function getHashSize():uint{ return (32); } override protected function core(_arg1:Array, _arg2:uint):Array{ var _local3:Array; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:uint; var _local14:uint; var _local15:uint; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:uint; var _local22:uint; var _local23:uint; var _local24:uint; var _local25:uint; _arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (24 - (_arg2 % 32)))); _arg1[((((_arg2 + 64) >> 9) << 4) + 15)] = _arg2; _local3 = []; _local4 = h[0]; _local5 = h[1]; _local6 = h[2]; _local7 = h[3]; _local8 = h[4]; _local9 = h[5]; _local10 = h[6]; _local11 = h[7]; _local12 = 0; while (_local12 < _arg1.length) { _local13 = _local4; _local14 = _local5; _local15 = _local6; _local16 = _local7; _local17 = _local8; _local18 = _local9; _local19 = _local10; _local20 = _local11; _local21 = 0; while (_local21 < 64) { if (_local21 < 16){ _local3[_local21] = ((_arg1[(_local12 + _local21)]) || (0)); } else { _local24 = ((rrol(_local3[(_local21 - 15)], 7) ^ rrol(_local3[(_local21 - 15)], 18)) ^ (_local3[(_local21 - 15)] >>> 3)); _local25 = ((rrol(_local3[(_local21 - 2)], 17) ^ rrol(_local3[(_local21 - 2)], 19)) ^ (_local3[(_local21 - 2)] >>> 10)); _local3[_local21] = (((_local3[(_local21 - 16)] + _local24) + _local3[(_local21 - 7)]) + _local25); }; _local22 = (((rrol(_local4, 2) ^ rrol(_local4, 13)) ^ rrol(_local4, 22)) + (((_local4 & _local5) ^ (_local4 & _local6)) ^ (_local5 & _local6))); _local23 = ((((_local11 + ((rrol(_local8, 6) ^ rrol(_local8, 11)) ^ rrol(_local8, 25))) + ((_local8 & _local9) ^ (_local10 & ~(_local8)))) + k[_local21]) + _local3[_local21]); _local11 = _local10; _local10 = _local9; _local9 = _local8; _local8 = (_local7 + _local23); _local7 = _local6; _local6 = _local5; _local5 = _local4; _local4 = (_local23 + _local22); _local21++; }; _local4 = (_local4 + _local13); _local5 = (_local5 + _local14); _local6 = (_local6 + _local15); _local7 = (_local7 + _local16); _local8 = (_local8 + _local17); _local9 = (_local9 + _local18); _local10 = (_local10 + _local19); _local11 = (_local11 + _local20); _local12 = (_local12 + 16); }; return ([_local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11]); } } }//package com.hurlant.crypto.hash
Section 23
//SHABase (com.hurlant.crypto.hash.SHABase) package com.hurlant.crypto.hash { import flash.utils.*; public class SHABase implements IHash { public function getHashSize():uint{ return (0); } public function toString():String{ return ("sha"); } public function getInputSize():uint{ return (64); } public function hash(_arg1:ByteArray):ByteArray{ var _local2:uint; var _local3:String; var _local4:uint; var _local5:Array; var _local6:uint; var _local7:Array; var _local8:ByteArray; var _local9:uint; _local2 = _arg1.length; _local3 = _arg1.endian; _arg1.endian = Endian.BIG_ENDIAN; _local4 = (_local2 * 8); while ((_arg1.length % 4) != 0) { _arg1[_arg1.length] = 0; }; _arg1.position = 0; _local5 = []; _local6 = 0; while (_local6 < _arg1.length) { _local5.push(_arg1.readUnsignedInt()); _local6 = (_local6 + 4); }; _local7 = core(_local5, _local4); _local8 = new ByteArray(); _local9 = (getHashSize() / 4); _local6 = 0; while (_local6 < _local9) { _local8.writeUnsignedInt(_local7[_local6]); _local6++; }; _arg1.length = _local2; _arg1.endian = _local3; return (_local8); } protected function core(_arg1:Array, _arg2:uint):Array{ return (null); } } }//package com.hurlant.crypto.hash
Section 24
//ARC4 (com.hurlant.crypto.prng.ARC4) package com.hurlant.crypto.prng { import flash.utils.*; import com.hurlant.crypto.symmetric.*; import com.hurlant.util.*; public class ARC4 implements IPRNG, IStreamCipher { private const psize:uint = 0x0100; private var S:ByteArray; private var i:int;// = 0 private var j:int;// = 0 public function ARC4(_arg1:ByteArray=null){ i = 0; j = 0; super(); S = new ByteArray(); if (_arg1){ init(_arg1); }; } public function decrypt(_arg1:ByteArray):void{ encrypt(_arg1); } public function init(_arg1:ByteArray):void{ var _local2:int; var _local3:int; var _local4:int; _local2 = 0; while (_local2 < 0x0100) { S[_local2] = _local2; _local2++; }; _local3 = 0; _local2 = 0; while (_local2 < 0x0100) { _local3 = (((_local3 + S[_local2]) + _arg1[(_local2 % _arg1.length)]) & 0xFF); _local4 = S[_local2]; S[_local2] = S[_local3]; S[_local3] = _local4; _local2++; }; this.i = 0; this.j = 0; } public function dispose():void{ var _local1:uint; _local1 = 0; if (S != null){ _local1 = 0; while (_local1 < S.length) { S[_local1] = (Math.random() * 0x0100); _local1++; }; S.length = 0; S = null; }; this.i = 0; this.j = 0; Memory.gc(); } public function encrypt(_arg1:ByteArray):void{ var _local2:uint; _local2 = 0; while (_local2 < _arg1.length) { var _temp1 = _local2; _local2 = (_local2 + 1); var _local3 = _temp1; _arg1[_local3] = (_arg1[_local3] ^ next()); }; } public function next():uint{ var _local1:int; i = ((i + 1) & 0xFF); j = ((j + S[i]) & 0xFF); _local1 = S[i]; S[i] = S[j]; S[j] = _local1; return (S[((_local1 + S[i]) & 0xFF)]); } public function getBlockSize():uint{ return (1); } public function getPoolSize():uint{ return (psize); } public function toString():String{ return ("rc4"); } } }//package com.hurlant.crypto.prng
Section 25
//IPRNG (com.hurlant.crypto.prng.IPRNG) package com.hurlant.crypto.prng { import flash.utils.*; public interface IPRNG { function init(_arg1:ByteArray):void; function next():uint; function dispose():void; function getPoolSize():uint; function toString():String; } }//package com.hurlant.crypto.prng
Section 26
//Random (com.hurlant.crypto.prng.Random) package com.hurlant.crypto.prng { import flash.utils.*; import flash.text.*; import com.hurlant.util.*; import flash.system.*; public class Random { private var psize:int; private var ready:Boolean;// = false private var seeded:Boolean;// = false private var state:IPRNG; private var pool:ByteArray; private var pptr:int; public function Random(_arg1:Class=null){ var _local2:uint; ready = false; seeded = false; super(); if (_arg1 == null){ _arg1 = ARC4; }; state = (new (_arg1) as IPRNG); psize = state.getPoolSize(); pool = new ByteArray(); pptr = 0; while (pptr < psize) { _local2 = (65536 * Math.random()); var _local3 = pptr++; pool[_local3] = (_local2 >>> 8); var _local4 = pptr++; pool[_local4] = (_local2 & 0xFF); }; pptr = 0; seed(); } public function seed(_arg1:int=0):void{ if (_arg1 == 0){ _arg1 = new Date().getTime(); }; var _local2 = pptr++; pool[_local2] = (pool[_local2] ^ (_arg1 & 0xFF)); var _local3 = pptr++; pool[_local3] = (pool[_local3] ^ ((_arg1 >> 8) & 0xFF)); var _local4 = pptr++; pool[_local4] = (pool[_local4] ^ ((_arg1 >> 16) & 0xFF)); var _local5 = pptr++; pool[_local5] = (pool[_local5] ^ ((_arg1 >> 24) & 0xFF)); pptr = (pptr % psize); seeded = true; } public function toString():String{ return (("random-" + state.toString())); } public function dispose():void{ var _local1:uint; _local1 = 0; while (_local1 < pool.length) { pool[_local1] = (Math.random() * 0x0100); _local1++; }; pool.length = 0; pool = null; state.dispose(); state = null; psize = 0; pptr = 0; Memory.gc(); } public function autoSeed():void{ var _local1:ByteArray; var _local2:Array; var _local3:Font; _local1 = new ByteArray(); _local1.writeUnsignedInt(System.totalMemory); _local1.writeUTF(Capabilities.serverString); _local1.writeUnsignedInt(getTimer()); _local1.writeUnsignedInt(new Date().getTime()); _local2 = Font.enumerateFonts(true); for each (_local3 in _local2) { _local1.writeUTF(_local3.fontName); _local1.writeUTF(_local3.fontStyle); _local1.writeUTF(_local3.fontType); }; _local1.position = 0; while (_local1.bytesAvailable >= 4) { seed(_local1.readUnsignedInt()); }; } public function nextByte():int{ if (!ready){ if (!seeded){ autoSeed(); }; state.init(pool); pool.length = 0; pptr = 0; ready = true; }; return (state.next()); } public function nextBytes(_arg1:ByteArray, _arg2:int):void{ while (_arg2--) { _arg1.writeByte(nextByte()); }; } } }//package com.hurlant.crypto.prng
Section 27
//RSAKey (com.hurlant.crypto.rsa.RSAKey) package com.hurlant.crypto.rsa { import flash.utils.*; import com.hurlant.math.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class RSAKey { public var dmp1:BigInteger; protected var canDecrypt:Boolean; public var d:BigInteger; public var e:int; public var dmq1:BigInteger; public var n:BigInteger; public var p:BigInteger; public var q:BigInteger; protected var canEncrypt:Boolean; public var coeff:BigInteger; public function RSAKey(_arg1:BigInteger, _arg2:int, _arg3:BigInteger=null, _arg4:BigInteger=null, _arg5:BigInteger=null, _arg6:BigInteger=null, _arg7:BigInteger=null, _arg8:BigInteger=null){ this.n = _arg1; this.e = _arg2; this.d = _arg3; this.p = _arg4; this.q = _arg5; this.dmp1 = _arg6; this.dmq1 = _arg7; this.coeff = _arg8; canEncrypt = ((!((n == null))) && (!((e == 0)))); canDecrypt = ((canEncrypt) && (!((d == null)))); } public function verify(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _decrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 1); } public function dump():String{ var _local1:String; _local1 = ((((("N=" + n.toString(16)) + "\n") + "E=") + e.toString(16)) + "\n"); if (canDecrypt){ _local1 = (_local1 + (("D=" + d.toString(16)) + "\n")); if (((!((p == null))) && (!((q == null))))){ _local1 = (_local1 + (("P=" + p.toString(16)) + "\n")); _local1 = (_local1 + (("Q=" + q.toString(16)) + "\n")); _local1 = (_local1 + (("DMP1=" + dmp1.toString(16)) + "\n")); _local1 = (_local1 + (("DMQ1=" + dmq1.toString(16)) + "\n")); _local1 = (_local1 + (("IQMP=" + coeff.toString(16)) + "\n")); }; }; return (_local1); } protected function doPrivate2(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; var _local3:BigInteger; var _local4:BigInteger; if ((((p == null)) && ((q == null)))){ return (_arg1.modPow(d, n)); }; _local2 = _arg1.mod(p).modPow(dmp1, p); _local3 = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; _local4 = _local2.subtract(_local3).multiply(coeff).mod(p).multiply(q).add(_local3); return (_local4); } public function decrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _decrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 2); } private function _decrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArray, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local7:uint; var _local8:int; var _local9:BigInteger; var _local10:BigInteger; var _local11:ByteArray; if (_arg5 == null){ _arg5 = pkcs1unpad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; _local7 = getBlockSize(); _local8 = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg2, _arg4); _local10 = _arg1(_local9); _local11 = _arg5(_local10, _local7); _arg3.writeBytes(_local11); }; } protected function doPublic(_arg1:BigInteger):BigInteger{ return (_arg1.modPowInt(e, n)); } public function dispose():void{ e = 0; n.dispose(); n = null; Memory.gc(); } private function _encrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArray, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local7:uint; var _local8:int; var _local9:BigInteger; var _local10:BigInteger; if (_arg5 == null){ _arg5 = pkcs1pad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; _local7 = getBlockSize(); _local8 = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg5(_arg2, _local8, _local7, _arg6), _local7); _local10 = _arg1(_local9); _local10.toArray(_arg3); }; } private function rawpad(_arg1:ByteArray, _arg2:int, _arg3:uint):ByteArray{ return (_arg1); } public function encrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _encrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 2); } private function pkcs1pad(_arg1:ByteArray, _arg2:int, _arg3:uint, _arg4:uint=2):ByteArray{ var _local5:ByteArray; var _local6:uint; var _local7:int; var _local8:Random; var _local9:int; _local5 = new ByteArray(); _local6 = _arg1.position; _arg2 = Math.min(_arg2, _arg1.length, ((_local6 + _arg3) - 11)); _arg1.position = _arg2; _local7 = (_arg2 - 1); while ((((_local7 >= _local6)) && ((_arg3 > 11)))) { --_arg3; var _local10 = _arg3; var _temp1 = _local7; _local7 = (_local7 - 1); _local5[_local10] = _arg1[_temp1]; }; --_arg3; _local10 = _arg3; _local5[_local10] = 0; _local8 = new Random(); while (_arg3 > 2) { _local9 = 0; while (_local9 == 0) { _local9 = ((_arg4)==2) ? _local8.nextByte() : 0xFF; }; --_arg3; var _local11 = _arg3; _local5[_local11] = _local9; }; --_arg3; _local11 = _arg3; _local5[_local11] = _arg4; --_arg3; var _local12 = _arg3; _local5[_local12] = 0; return (_local5); } private function pkcs1unpad(_arg1:BigInteger, _arg2:uint, _arg3:uint=2):ByteArray{ var _local4:ByteArray; var _local5:ByteArray; var _local6:int; _local4 = _arg1.toByteArray(); _local5 = new ByteArray(); _local6 = 0; while ((((_local6 < _local4.length)) && ((_local4[_local6] == 0)))) { _local6++; }; if (((!(((_local4.length - _local6) == (_arg2 - 1)))) || ((_local4[_local6] > 2)))){ trace(((("PKCS#1 unpad: i=" + _local6) + ", expected b[i]==[0,1,2], got b[i]=") + _local4[_local6].toString(16))); return (null); }; _local6++; while (_local4[_local6] != 0) { ++_local6; if (_local6 >= _local4.length){ trace((((("PKCS#1 unpad: i=" + _local6) + ", b[i-1]!=0 (=") + _local4[(_local6 - 1)].toString(16)) + ")")); return (null); }; }; while (++_local6 < _local4.length) { _local5.writeByte(_local4[_local6]); }; _local5.position = 0; return (_local5); } public function getBlockSize():uint{ return (((n.bitLength() + 7) / 8)); } public function toString():String{ return ("rsa"); } public function sign(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _encrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 1); } protected function doPrivate(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; var _local3:BigInteger; if ((((p == null)) || ((q == null)))){ return (_arg1.modPow(d, n)); }; _local2 = _arg1.mod(p).modPow(dmp1, p); _local3 = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; return (_local2.subtract(_local3).multiply(coeff).mod(p).multiply(q).add(_local3)); } protected static function bigRandom(_arg1:int, _arg2:Random):BigInteger{ var _local3:ByteArray; var _local4:BigInteger; if (_arg1 < 2){ return (BigInteger.nbv(1)); }; _local3 = new ByteArray(); _arg2.nextBytes(_local3, (_arg1 >> 3)); _local3.position = 0; _local4 = new BigInteger(_local3); _local4.primify(_arg1, 1); return (_local4); } public static function parsePublicKey(_arg1:String, _arg2:String):RSAKey{ return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16))); } public static function generate(_arg1:uint, _arg2:String):RSAKey{ var _local3:Random; var _local4:uint; var _local5:RSAKey; var _local6:BigInteger; var _local7:BigInteger; var _local8:BigInteger; var _local9:BigInteger; var _local10:BigInteger; _local3 = new Random(); _local4 = (_arg1 >> 1); _local5 = new RSAKey(null, 0, null); _local5.e = parseInt(_arg2, 16); _local6 = new BigInteger(_arg2, 16); while (true) { while (true) { _local5.p = bigRandom((_arg1 - _local4), _local3); if ((((_local5.p.subtract(BigInteger.ONE).gcd(_local6).compareTo(BigInteger.ONE) == 0)) && (_local5.p.isProbablePrime(10)))){ break; }; }; while (true) { _local5.q = bigRandom(_local4, _local3); if ((((_local5.q.subtract(BigInteger.ONE).gcd(_local6).compareTo(BigInteger.ONE) == 0)) && (_local5.q.isProbablePrime(10)))){ break; }; }; if (_local5.p.compareTo(_local5.q) <= 0){ _local10 = _local5.p; _local5.p = _local5.q; _local5.q = _local10; }; _local7 = _local5.p.subtract(BigInteger.ONE); _local8 = _local5.q.subtract(BigInteger.ONE); _local9 = _local7.multiply(_local8); if (_local9.gcd(_local6).compareTo(BigInteger.ONE) == 0){ _local5.n = _local5.p.multiply(_local5.q); _local5.d = _local6.modInverse(_local9); _local5.dmp1 = _local5.d.mod(_local7); _local5.dmq1 = _local5.d.mod(_local8); _local5.coeff = _local5.q.modInverse(_local5.p); break; }; }; return (_local5); } public static function parsePrivateKey(_arg1:String, _arg2:String, _arg3:String, _arg4:String=null, _arg5:String=null, _arg6:String=null, _arg7:String=null, _arg8:String=null):RSAKey{ if (_arg4 == null){ return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16), new BigInteger(_arg3, 16))); }; return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16), new BigInteger(_arg3, 16), new BigInteger(_arg4, 16), new BigInteger(_arg5, 16), new BigInteger(_arg6, 16), new BigInteger(_arg7), new BigInteger(_arg8))); } } }//package com.hurlant.crypto.rsa
Section 28
//AESKey (com.hurlant.crypto.symmetric.AESKey) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class AESKey implements ISymmetricKey { private var state:ByteArray; private var tmp:ByteArray; private var Nr:uint; private var keyLength:uint; private var key:ByteArray; private static const _Xtime2:Array = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 27, 25, 31, 29, 19, 17, 23, 21, 11, 9, 15, 13, 3, 1, 7, 5, 59, 57, 63, 61, 51, 49, 55, 53, 43, 41, 47, 45, 35, 33, 39, 37, 91, 89, 95, 93, 83, 81, 87, 85, 75, 73, 79, 77, 67, 65, 71, 69, 123, 121, 127, 125, 115, 113, 119, 117, 107, 105, 111, 109, 99, 97, 103, 101, 155, 153, 159, 157, 147, 145, 151, 149, 139, 137, 143, 141, 131, 129, 135, 133, 187, 185, 191, 189, 179, 177, 183, 181, 171, 169, 175, 173, 163, 161, 167, 165, 219, 217, 223, 221, 211, 209, 215, 213, 203, 201, 207, 205, 195, 193, 199, 197, 251, 249, 0xFF, 253, 243, 241, 247, 245, 235, 233, 239, 237, 227, 225, 231, 229]; private static const _Xtime9:Array = [0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 0xFF, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70]; private static const Nb:uint = 4; private static const _XtimeB:Array = [0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 0xFF, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163]; private static const _XtimeE:Array = [0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 0xFF, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141]; private static const _Xtime2Sbox:Array = [198, 248, 238, 246, 0xFF, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44]; private static const _Xtime3Sbox:Array = [165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 0xFF, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58]; private static const _InvSbox:Array = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 0xFF, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]; private static const _XtimeD:Array = [0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 0xFF, 180, 185, 174, 163, 128, 141, 154, 151]; private static const _Sbox:Array = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 0xFF, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]; private static var XtimeE:ByteArray = new ByteArray(); private static var i:uint = 0; private static var Xtime2Sbox:ByteArray = new ByteArray(); private static var Xtime3Sbox:ByteArray = new ByteArray(); private static var _Rcon:Array = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]; private static var Sbox:ByteArray = new ByteArray(); private static var Rcon:ByteArray = new ByteArray(); private static var InvSbox:ByteArray = new ByteArray(); private static var Xtime2:ByteArray = new ByteArray(); private static var Xtime9:ByteArray = new ByteArray(); private static var XtimeB:ByteArray = new ByteArray(); private static var XtimeD:ByteArray = new ByteArray(); public function AESKey(_arg1:ByteArray){ tmp = new ByteArray(); state = new ByteArray(); keyLength = _arg1.length; this.key = new ByteArray(); this.key.writeBytes(_arg1); expandKey(); } public function toString():String{ return (("aes" + (8 * keyLength))); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local3:uint; state.position = 0; state.writeBytes(_arg1, _arg2, (Nb * 4)); addRoundKey(key, ((Nr * Nb) * 4)); invShiftRows(); _local3 = Nr; while (_local3--) { addRoundKey(key, ((_local3 * Nb) * 4)); if (_local3){ invMixSubColumns(); }; }; _arg1.position = _arg2; _arg1.writeBytes(state); } protected function invShiftRows():void{ var _local1:uint; state[0] = InvSbox[state[0]]; state[4] = InvSbox[state[4]]; state[8] = InvSbox[state[8]]; state[12] = InvSbox[state[12]]; _local1 = InvSbox[state[13]]; state[13] = InvSbox[state[9]]; state[9] = InvSbox[state[5]]; state[5] = InvSbox[state[1]]; state[1] = _local1; _local1 = InvSbox[state[2]]; state[2] = InvSbox[state[10]]; state[10] = _local1; _local1 = InvSbox[state[6]]; state[6] = InvSbox[state[14]]; state[14] = _local1; _local1 = InvSbox[state[3]]; state[3] = InvSbox[state[7]]; state[7] = InvSbox[state[11]]; state[11] = InvSbox[state[15]]; state[15] = _local1; } public function dispose():void{ var _local1:uint; var _local2:Random; _local2 = new Random(); _local1 = 0; while (_local1 < key.length) { key[_local1] = _local2.nextByte(); _local1++; }; Nr = _local2.nextByte(); _local1 = 0; while (_local1 < state.length) { state[_local1] = _local2.nextByte(); _local1++; }; _local1 = 0; while (_local1 < tmp.length) { tmp[_local1] = _local2.nextByte(); _local1++; }; key.length = 0; keyLength = 0; state.length = 0; tmp.length = 0; key = null; state = null; tmp = null; Nr = 0; Memory.gc(); } protected function invMixSubColumns():void{ var _local1:uint; tmp.length = 0; tmp[0] = (((XtimeE[state[0]] ^ XtimeB[state[1]]) ^ XtimeD[state[2]]) ^ Xtime9[state[3]]); tmp[5] = (((Xtime9[state[0]] ^ XtimeE[state[1]]) ^ XtimeB[state[2]]) ^ XtimeD[state[3]]); tmp[10] = (((XtimeD[state[0]] ^ Xtime9[state[1]]) ^ XtimeE[state[2]]) ^ XtimeB[state[3]]); tmp[15] = (((XtimeB[state[0]] ^ XtimeD[state[1]]) ^ Xtime9[state[2]]) ^ XtimeE[state[3]]); tmp[4] = (((XtimeE[state[4]] ^ XtimeB[state[5]]) ^ XtimeD[state[6]]) ^ Xtime9[state[7]]); tmp[9] = (((Xtime9[state[4]] ^ XtimeE[state[5]]) ^ XtimeB[state[6]]) ^ XtimeD[state[7]]); tmp[14] = (((XtimeD[state[4]] ^ Xtime9[state[5]]) ^ XtimeE[state[6]]) ^ XtimeB[state[7]]); tmp[3] = (((XtimeB[state[4]] ^ XtimeD[state[5]]) ^ Xtime9[state[6]]) ^ XtimeE[state[7]]); tmp[8] = (((XtimeE[state[8]] ^ XtimeB[state[9]]) ^ XtimeD[state[10]]) ^ Xtime9[state[11]]); tmp[13] = (((Xtime9[state[8]] ^ XtimeE[state[9]]) ^ XtimeB[state[10]]) ^ XtimeD[state[11]]); tmp[2] = (((XtimeD[state[8]] ^ Xtime9[state[9]]) ^ XtimeE[state[10]]) ^ XtimeB[state[11]]); tmp[7] = (((XtimeB[state[8]] ^ XtimeD[state[9]]) ^ Xtime9[state[10]]) ^ XtimeE[state[11]]); tmp[12] = (((XtimeE[state[12]] ^ XtimeB[state[13]]) ^ XtimeD[state[14]]) ^ Xtime9[state[15]]); tmp[1] = (((Xtime9[state[12]] ^ XtimeE[state[13]]) ^ XtimeB[state[14]]) ^ XtimeD[state[15]]); tmp[6] = (((XtimeD[state[12]] ^ Xtime9[state[13]]) ^ XtimeE[state[14]]) ^ XtimeB[state[15]]); tmp[11] = (((XtimeB[state[12]] ^ XtimeD[state[13]]) ^ Xtime9[state[14]]) ^ XtimeE[state[15]]); _local1 = 0; while (_local1 < (4 * Nb)) { state[_local1] = InvSbox[tmp[_local1]]; _local1++; }; } private function expandKey():void{ var _local1:uint; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; _local7 = (key.length / 4); Nr = (_local7 + 6); _local6 = _local7; while (_local6 < (Nb * (Nr + 1))) { _local1 = key[((4 * _local6) - 4)]; _local2 = key[((4 * _local6) - 3)]; _local3 = key[((4 * _local6) - 2)]; _local4 = key[((4 * _local6) - 1)]; if (!(_local6 % _local7)){ _local5 = _local4; _local4 = Sbox[_local1]; _local1 = (Sbox[_local2] ^ Rcon[(_local6 / _local7)]); _local2 = Sbox[_local3]; _local3 = Sbox[_local5]; } else { if ((((_local7 > 6)) && (((_local6 % _local7) == 4)))){ _local1 = Sbox[_local1]; _local2 = Sbox[_local2]; _local3 = Sbox[_local3]; _local4 = Sbox[_local4]; }; }; key[((4 * _local6) + 0)] = (key[(((4 * _local6) - (4 * _local7)) + 0)] ^ _local1); key[((4 * _local6) + 1)] = (key[(((4 * _local6) - (4 * _local7)) + 1)] ^ _local2); key[((4 * _local6) + 2)] = (key[(((4 * _local6) - (4 * _local7)) + 2)] ^ _local3); key[((4 * _local6) + 3)] = (key[(((4 * _local6) - (4 * _local7)) + 3)] ^ _local4); _local6++; }; } protected function addRoundKey(_arg1:ByteArray, _arg2:uint):void{ var _local3:uint; _local3 = 0; while (_local3 < 16) { state[_local3] = (state[_local3] ^ _arg1[(_local3 + _arg2)]); _local3++; }; } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local3:uint; state.position = 0; state.writeBytes(_arg1, _arg2, (Nb * 4)); addRoundKey(key, 0); _local3 = 1; while (_local3 < (Nr + 1)) { if (_local3 < Nr){ mixSubColumns(); } else { shiftRows(); }; addRoundKey(key, ((_local3 * Nb) * 4)); _local3++; }; _arg1.position = _arg2; _arg1.writeBytes(state); } protected function mixSubColumns():void{ tmp.length = 0; tmp[0] = (((Xtime2Sbox[state[0]] ^ Xtime3Sbox[state[5]]) ^ Sbox[state[10]]) ^ Sbox[state[15]]); tmp[1] = (((Sbox[state[0]] ^ Xtime2Sbox[state[5]]) ^ Xtime3Sbox[state[10]]) ^ Sbox[state[15]]); tmp[2] = (((Sbox[state[0]] ^ Sbox[state[5]]) ^ Xtime2Sbox[state[10]]) ^ Xtime3Sbox[state[15]]); tmp[3] = (((Xtime3Sbox[state[0]] ^ Sbox[state[5]]) ^ Sbox[state[10]]) ^ Xtime2Sbox[state[15]]); tmp[4] = (((Xtime2Sbox[state[4]] ^ Xtime3Sbox[state[9]]) ^ Sbox[state[14]]) ^ Sbox[state[3]]); tmp[5] = (((Sbox[state[4]] ^ Xtime2Sbox[state[9]]) ^ Xtime3Sbox[state[14]]) ^ Sbox[state[3]]); tmp[6] = (((Sbox[state[4]] ^ Sbox[state[9]]) ^ Xtime2Sbox[state[14]]) ^ Xtime3Sbox[state[3]]); tmp[7] = (((Xtime3Sbox[state[4]] ^ Sbox[state[9]]) ^ Sbox[state[14]]) ^ Xtime2Sbox[state[3]]); tmp[8] = (((Xtime2Sbox[state[8]] ^ Xtime3Sbox[state[13]]) ^ Sbox[state[2]]) ^ Sbox[state[7]]); tmp[9] = (((Sbox[state[8]] ^ Xtime2Sbox[state[13]]) ^ Xtime3Sbox[state[2]]) ^ Sbox[state[7]]); tmp[10] = (((Sbox[state[8]] ^ Sbox[state[13]]) ^ Xtime2Sbox[state[2]]) ^ Xtime3Sbox[state[7]]); tmp[11] = (((Xtime3Sbox[state[8]] ^ Sbox[state[13]]) ^ Sbox[state[2]]) ^ Xtime2Sbox[state[7]]); tmp[12] = (((Xtime2Sbox[state[12]] ^ Xtime3Sbox[state[1]]) ^ Sbox[state[6]]) ^ Sbox[state[11]]); tmp[13] = (((Sbox[state[12]] ^ Xtime2Sbox[state[1]]) ^ Xtime3Sbox[state[6]]) ^ Sbox[state[11]]); tmp[14] = (((Sbox[state[12]] ^ Sbox[state[1]]) ^ Xtime2Sbox[state[6]]) ^ Xtime3Sbox[state[11]]); tmp[15] = (((Xtime3Sbox[state[12]] ^ Sbox[state[1]]) ^ Sbox[state[6]]) ^ Xtime2Sbox[state[11]]); state.position = 0; state.writeBytes(tmp, 0, (Nb * 4)); } protected function shiftRows():void{ var _local1:uint; state[0] = Sbox[state[0]]; state[4] = Sbox[state[4]]; state[8] = Sbox[state[8]]; state[12] = Sbox[state[12]]; _local1 = Sbox[state[1]]; state[1] = Sbox[state[5]]; state[5] = Sbox[state[9]]; state[9] = Sbox[state[13]]; state[13] = _local1; _local1 = Sbox[state[2]]; state[2] = Sbox[state[10]]; state[10] = _local1; _local1 = Sbox[state[6]]; state[6] = Sbox[state[14]]; state[14] = _local1; _local1 = Sbox[state[15]]; state[15] = Sbox[state[11]]; state[11] = Sbox[state[7]]; state[7] = Sbox[state[3]]; state[3] = _local1; } public function getBlockSize():uint{ return (16); } while (i < 0x0100) { Sbox[i] = _Sbox[i]; InvSbox[i] = _InvSbox[i]; Xtime2Sbox[i] = _Xtime2Sbox[i]; Xtime3Sbox[i] = _Xtime3Sbox[i]; Xtime2[i] = _Xtime2[i]; Xtime9[i] = _Xtime9[i]; XtimeB[i] = _XtimeB[i]; XtimeD[i] = _XtimeD[i]; XtimeE[i] = _XtimeE[i]; i++; }; i = 0; while (i < _Rcon.length) { Rcon[i] = _Rcon[i]; i++; }; } }//package com.hurlant.crypto.symmetric
Section 29
//BlowFishKey (com.hurlant.crypto.symmetric.BlowFishKey) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class BlowFishKey implements ISymmetricKey { private var S3:Array; private var S2:Array; private var P:Array; private var key:ByteArray;// = null private var S0:Array; private var S1:Array; private static const KP:Array = [608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731]; private static const KS0:Array = [3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946]; private static const KS1:Array = [1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055]; private static const KS3:Array = [976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]; private static const ROUNDS:uint = 16; private static const KS2:Array = [3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504]; private static const BLOCK_SIZE:uint = 8; private static const P_SZ:uint = (ROUNDS + 2); private static const SBOX_SK:uint = 0x0100; public function BlowFishKey(_arg1:ByteArray){ key = null; super(); this.key = _arg1; setKey(_arg1); } private function F(_arg1:uint):uint{ return ((((S0[(_arg1 >>> 24)] + S1[((_arg1 >>> 16) & 0xFF)]) ^ S2[((_arg1 >>> 8) & 0xFF)]) + S3[(_arg1 & 0xFF)])); } private function BytesTo32bits(_arg1:ByteArray, _arg2:uint):uint{ return ((((((_arg1[_arg2] & 0xFF) << 24) | ((_arg1[(_arg2 + 1)] & 0xFF) << 16)) | ((_arg1[(_arg2 + 2)] & 0xFF) << 8)) | (_arg1[(_arg2 + 3)] & 0xFF))); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ decryptBlock(_arg1, _arg2, _arg1, _arg2); } private function decryptBlock(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray, _arg4:uint):void{ var _local5:uint; var _local6:uint; var _local7:uint; _local5 = BytesTo32bits(_arg1, _arg2); _local6 = BytesTo32bits(_arg1, (_arg2 + 4)); _local5 = (_local5 ^ P[(ROUNDS + 1)]); _local7 = ROUNDS; while (_local7 > 0) { _local6 = (_local6 ^ (F(_local5) ^ P[_local7])); _local5 = (_local5 ^ (F(_local6) ^ P[(_local7 - 1)])); _local7 = (_local7 - 2); }; _local6 = (_local6 ^ P[0]); Bits32ToBytes(_local6, _arg3, _arg4); Bits32ToBytes(_local5, _arg3, (_arg4 + 4)); } private function setKey(_arg1:ByteArray):void{ var _local2:uint; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; S0 = KS0.concat(); S1 = KS1.concat(); S2 = KS2.concat(); S3 = KS3.concat(); P = KP.concat(); _local2 = _arg1.length; _local3 = 0; _local4 = 0; while (_local4 < P_SZ) { _local5 = 0; _local6 = 0; while (_local6 < 4) { var _temp1 = _local3; _local3 = (_local3 + 1); _local5 = ((_local5 << 8) | (_arg1[_temp1] & 0xFF)); if (_local3 >= _local2){ _local3 = 0; }; _local6++; }; P[_local4] = (P[_local4] ^ _local5); _local4++; }; processTable(0, 0, P); processTable(P[(P_SZ - 2)], P[(P_SZ - 1)], S0); processTable(S0[(SBOX_SK - 2)], S0[(SBOX_SK - 1)], S1); processTable(S1[(SBOX_SK - 2)], S1[(SBOX_SK - 1)], S2); processTable(S2[(SBOX_SK - 2)], S2[(SBOX_SK - 1)], S3); } public function dispose():void{ var _local1:uint; _local1 = 0; _local1 = 0; while (_local1 < S0.length) { S0[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S1.length) { S1[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S2.length) { S2[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < S3.length) { S3[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < P.length) { P[_local1] = 0; _local1++; }; S0 = null; S1 = null; S2 = null; S3 = null; P = null; _local1 = 0; while (_local1 < key.length) { key[_local1] = 0; _local1++; }; key.length = 0; key = null; Memory.gc(); } private function encryptBlock(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray, _arg4:uint):void{ var _local5:uint; var _local6:uint; var _local7:uint; _local5 = BytesTo32bits(_arg1, _arg2); _local6 = BytesTo32bits(_arg1, (_arg2 + 4)); _local5 = (_local5 ^ P[0]); _local7 = 1; while (_local7 < ROUNDS) { _local6 = (_local6 ^ (F(_local5) ^ P[_local7])); _local5 = (_local5 ^ (F(_local6) ^ P[(_local7 + 1)])); _local7 = (_local7 + 2); }; _local6 = (_local6 ^ P[(ROUNDS + 1)]); Bits32ToBytes(_local6, _arg3, _arg4); Bits32ToBytes(_local5, _arg3, (_arg4 + 4)); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ encryptBlock(_arg1, _arg2, _arg1, _arg2); } private function Bits32ToBytes(_arg1:uint, _arg2:ByteArray, _arg3:uint):void{ _arg2[(_arg3 + 3)] = _arg1; _arg2[(_arg3 + 2)] = (_arg1 >> 8); _arg2[(_arg3 + 1)] = (_arg1 >> 16); _arg2[_arg3] = (_arg1 >> 24); } private function processTable(_arg1:uint, _arg2:uint, _arg3:Array):void{ var _local4:uint; var _local5:uint; var _local6:uint; _local4 = _arg3.length; _local5 = 0; while (_local5 < _local4) { _arg1 = (_arg1 ^ P[0]); _local6 = 1; while (_local6 < ROUNDS) { _arg2 = (_arg2 ^ (F(_arg1) ^ P[_local6])); _arg1 = (_arg1 ^ (F(_arg2) ^ P[(_local6 + 1)])); _local6 = (_local6 + 2); }; _arg2 = (_arg2 ^ P[(ROUNDS + 1)]); _arg3[_local5] = _arg2; _arg3[(_local5 + 1)] = _arg1; _arg2 = _arg1; _arg1 = _arg3[_local5]; _local5 = (_local5 + 2); }; } public function toString():String{ return ("blowfish"); } public function getBlockSize():uint{ return (BLOCK_SIZE); } } }//package com.hurlant.crypto.symmetric
Section 30
//CBCMode (com.hurlant.crypto.symmetric.CBCMode) package com.hurlant.crypto.symmetric { import flash.utils.*; public class CBCMode extends IVMode implements IMode { public function CBCMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, _arg2); } public function toString():String{ return ((key.toString() + "-cbc")); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray; var _local3:ByteArray; var _local4:uint; var _local5:uint; _local2 = getIV4d(); _local3 = new ByteArray(); _local4 = 0; while (_local4 < _arg1.length) { _local3.position = 0; _local3.writeBytes(_arg1, _local4, blockSize); key.decrypt(_arg1, _local4); _local5 = 0; while (_local5 < blockSize) { _arg1[(_local4 + _local5)] = (_arg1[(_local4 + _local5)] ^ _local2[_local5]); _local5++; }; _local2.position = 0; _local2.writeBytes(_local3, 0, blockSize); _local4 = (_local4 + blockSize); }; padding.unpad(_arg1); } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray; var _local3:uint; var _local4:uint; padding.pad(_arg1); _local2 = getIV4e(); _local3 = 0; while (_local3 < _arg1.length) { _local4 = 0; while (_local4 < blockSize) { _arg1[(_local3 + _local4)] = (_arg1[(_local3 + _local4)] ^ _local2[_local4]); _local4++; }; key.encrypt(_arg1, _local3); _local2.position = 0; _local2.writeBytes(_arg1, _local3, blockSize); _local3 = (_local3 + blockSize); }; } } }//package com.hurlant.crypto.symmetric
Section 31
//CFB8Mode (com.hurlant.crypto.symmetric.CFB8Mode) package com.hurlant.crypto.symmetric { import flash.utils.*; public class CFB8Mode extends IVMode implements IMode { public function CFB8Mode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function toString():String{ return ((key.toString() + "-cfb8")); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray; var _local3:ByteArray; var _local4:uint; var _local5:uint; var _local6:uint; _local2 = getIV4d(); _local3 = new ByteArray(); _local4 = 0; while (_local4 < _arg1.length) { _local5 = _arg1[_local4]; _local3.position = 0; _local3.writeBytes(_local2); key.encrypt(_local2); _arg1[_local4] = (_arg1[_local4] ^ _local2[0]); _local6 = 0; while (_local6 < (blockSize - 1)) { _local2[_local6] = _local3[(_local6 + 1)]; _local6++; }; _local2[(blockSize - 1)] = _local5; _local4++; }; } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray; var _local3:ByteArray; var _local4:uint; var _local5:uint; _local2 = getIV4e(); _local3 = new ByteArray(); _local4 = 0; while (_local4 < _arg1.length) { _local3.position = 0; _local3.writeBytes(_local2); key.encrypt(_local2); _arg1[_local4] = (_arg1[_local4] ^ _local2[0]); _local5 = 0; while (_local5 < (blockSize - 1)) { _local2[_local5] = _local3[(_local5 + 1)]; _local5++; }; _local2[(blockSize - 1)] = _arg1[_local4]; _local4++; }; } } }//package com.hurlant.crypto.symmetric
Section 32
//CFBMode (com.hurlant.crypto.symmetric.CFBMode) package com.hurlant.crypto.symmetric { import flash.utils.*; public class CFBMode extends IVMode implements IMode { public function CFBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function toString():String{ return ((key.toString() + "-cfb")); } public function decrypt(_arg1:ByteArray):void{ var _local2:uint; var _local3:ByteArray; var _local4:ByteArray; var _local5:uint; var _local6:uint; var _local7:uint; _local2 = _arg1.length; _local3 = getIV4d(); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.length) { key.encrypt(_local3); _local6 = (((_local5 + blockSize))<_local2) ? blockSize : (_local2 - _local5); _local4.position = 0; _local4.writeBytes(_arg1, _local5, _local6); _local7 = 0; while (_local7 < _local6) { _arg1[(_local5 + _local7)] = (_arg1[(_local5 + _local7)] ^ _local3[_local7]); _local7++; }; _local3.position = 0; _local3.writeBytes(_local4); _local5 = (_local5 + blockSize); }; } public function encrypt(_arg1:ByteArray):void{ var _local2:uint; var _local3:ByteArray; var _local4:uint; var _local5:uint; var _local6:uint; _local2 = _arg1.length; _local3 = getIV4e(); _local4 = 0; while (_local4 < _arg1.length) { key.encrypt(_local3); _local5 = (((_local4 + blockSize))<_local2) ? blockSize : (_local2 - _local4); _local6 = 0; while (_local6 < _local5) { _arg1[(_local4 + _local6)] = (_arg1[(_local4 + _local6)] ^ _local3[_local6]); _local6++; }; _local3.position = 0; _local3.writeBytes(_arg1, _local4, _local5); _local4 = (_local4 + blockSize); }; } } }//package com.hurlant.crypto.symmetric
Section 33
//CTRMode (com.hurlant.crypto.symmetric.CTRMode) package com.hurlant.crypto.symmetric { import flash.utils.*; public class CTRMode extends IVMode implements IMode { public function CTRMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, _arg2); } public function toString():String{ return ((key.toString() + "-ctr")); } private function core(_arg1:ByteArray, _arg2:ByteArray):void{ var _local3:ByteArray; var _local4:ByteArray; var _local5:uint; var _local6:uint; _local3 = new ByteArray(); _local4 = new ByteArray(); _local3.writeBytes(_arg2); _local5 = 0; while (_local5 < _arg1.length) { _local4.position = 0; _local4.writeBytes(_local3); key.encrypt(_local4); _local6 = 0; while (_local6 < blockSize) { _arg1[(_local5 + _local6)] = (_arg1[(_local5 + _local6)] ^ _local4[_local6]); _local6++; }; _local6 = (blockSize - 1); while (_local6 >= 0) { var _local7 = _local3; var _local8 = _local6; var _local9 = (_local7[_local8] + 1); _local7[_local8] = _local9; if (_local3[_local6] != 0){ break; }; _local6--; }; _local5 = (_local5 + blockSize); }; } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray; _local2 = getIV4d(); core(_arg1, _local2); padding.unpad(_arg1); } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray; padding.pad(_arg1); _local2 = getIV4e(); core(_arg1, _local2); } } }//package com.hurlant.crypto.symmetric
Section 34
//DESKey (com.hurlant.crypto.symmetric.DESKey) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class DESKey implements ISymmetricKey { protected var encKey:Array; protected var key:ByteArray; protected var decKey:Array; private static const SP8:Array = [268439616, 0x1000, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 0x1000, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 0x1000, 64, 268697664, 0x1000, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696]; private static const bytebit:Array = [128, 64, 32, 16, 8, 4, 2, 1]; private static const bigbyte:Array = [0x800000, 0x400000, 0x200000, 0x100000, 524288, 262144, 131072, 65536, 0x8000, 0x4000, 0x2000, 0x1000, 0x0800, 0x0400, 0x0200, 0x0100, 128, 64, 32, 16, 8, 4, 2, 1]; private static const pc1:Array = [56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3]; private static const pc2:Array = [13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31]; private static const Df_Key:Array = [1, 35, 69, 103, 137, 171, 205, 239, 254, 220, 186, 152, 118, 84, 50, 16, 137, 171, 205, 239, 1, 35, 69, 103]; private static const totrot:Array = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; private static const SP1:Array = [16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 0x0400, 16843776, 16843780, 0x0400, 16778244, 16842756, 16777216, 4, 0x0404, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 0x0404, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 0x0400, 16842756, 65536, 66560, 16777220, 0x0400, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 0x0404, 66564, 16843776, 0x0404, 16778240, 16778240, 0, 65540, 66560, 0, 16842756]; private static const SP2:Array = [2148565024, 2147516416, 0x8000, 1081376, 0x100000, 32, 2148532256, 2147516448, 2147483680, 2148565024, 2148564992, 2147483648, 2147516416, 0x100000, 32, 2148532256, 0x108000, 0x100020, 2147516448, 0, 2147483648, 0x8000, 1081376, 2148532224, 0x100020, 2147483680, 0, 0x108000, 32800, 2148564992, 2148532224, 32800, 0, 1081376, 2148532256, 0x100000, 2147516448, 2148532224, 2148564992, 0x8000, 2148532224, 2147516416, 32, 2148565024, 1081376, 32, 0x8000, 2147483648, 32800, 2148564992, 0x100000, 2147483680, 0x100020, 2147516448, 2147483680, 0x100020, 0x108000, 0, 2147516416, 32800, 2147483648, 2148532256, 2148565024, 0x108000]; private static const SP3:Array = [520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 0x0200, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 0x0200, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 0x0200, 131080, 134349320, 134218240, 134217736, 0x0200, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584]; private static const SP4:Array = [8396801, 8321, 8321, 128, 8396928, 0x800081, 0x800001, 8193, 0, 0x802000, 0x802000, 8396929, 129, 0, 0x800080, 0x800001, 1, 0x2000, 0x800000, 8396801, 128, 0x800000, 8193, 8320, 0x800081, 1, 8320, 0x800080, 0x2000, 8396928, 8396929, 129, 0x800080, 0x800001, 0x802000, 8396929, 129, 0, 0, 0x802000, 8320, 0x800080, 0x800081, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 0x2000, 0x800001, 8193, 8396928, 0x800081, 8193, 8320, 0x800000, 8396801, 128, 0x800000, 0x2000, 8396928]; private static const SP5:Array = [0x0100, 34078976, 34078720, 1107296512, 524288, 0x0100, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 0x0100, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 0x0100, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080]; private static const SP6:Array = [536870928, 541065216, 0x4000, 541081616, 541065216, 16, 541081616, 0x400000, 536887296, 4210704, 0x400000, 536870928, 0x400010, 536887296, 536870912, 16400, 0, 0x400010, 536887312, 0x4000, 0x404000, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 0x404000, 541081600, 536870912, 536887296, 16, 541065232, 0x404000, 541081616, 0x400000, 16400, 536870928, 0x400000, 536887296, 536870912, 16400, 536870928, 541081616, 0x404000, 541065216, 4210704, 541081600, 0, 541065232, 16, 0x4000, 541065216, 4210704, 0x4000, 0x400010, 536887312, 0, 541081600, 536870912, 0x400010, 536887312]; private static const SP7:Array = [0x200000, 69206018, 67110914, 0, 0x0800, 67110914, 2099202, 69208064, 69208066, 0x200000, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 0x200002, 67110912, 67108866, 69206016, 69208064, 0x200002, 69206016, 0x0800, 2050, 69208066, 0x200800, 2, 67108864, 0x200800, 67108864, 0x200800, 0x200000, 67110914, 67110914, 69206018, 69206018, 2, 0x200002, 67108864, 67110912, 0x200000, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 0x200800, 0, 2, 69208066, 0, 2099202, 69206016, 0x0800, 67108866, 67110912, 0x0800, 0x200002]; public function DESKey(_arg1:ByteArray){ this.key = _arg1; this.encKey = generateWorkingKey(true, _arg1, 0); this.decKey = generateWorkingKey(false, _arg1, 0); } protected function generateWorkingKey(_arg1:Boolean, _arg2:ByteArray, _arg3:uint):Array{ var _local4:Array; var _local5:ByteArray; var _local6:ByteArray; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:uint; _local4 = []; _local5 = new ByteArray(); _local6 = new ByteArray(); _local8 = 0; while (_local8 < 56) { _local7 = pc1[_local8]; _local5[_local8] = !(((_arg2[(_arg3 + (_local7 >>> 3))] & bytebit[(_local7 & 7)]) == 0)); _local8++; }; _local9 = 0; while (_local9 < 16) { if (_arg1){ _local10 = (_local9 << 1); } else { _local10 = ((15 - _local9) << 1); }; _local11 = (_local10 + 1); _local4[_local10] = (_local4[_local11] = 0); _local8 = 0; while (_local8 < 28) { _local7 = (_local8 + totrot[_local9]); if (_local7 < 28){ _local6[_local8] = _local5[_local7]; } else { _local6[_local8] = _local5[(_local7 - 28)]; }; _local8++; }; _local8 = 28; while (_local8 < 56) { _local7 = (_local8 + totrot[_local9]); if (_local7 < 56){ _local6[_local8] = _local5[_local7]; } else { _local6[_local8] = _local5[(_local7 - 28)]; }; _local8++; }; _local8 = 0; while (_local8 < 24) { if (_local6[pc2[_local8]]){ _local4[_local10] = (_local4[_local10] | bigbyte[_local8]); }; if (_local6[pc2[(_local8 + 24)]]){ _local4[_local11] = (_local4[_local11] | bigbyte[_local8]); }; _local8++; }; _local9++; }; _local9 = 0; while (_local9 != 32) { _local12 = _local4[_local9]; _local13 = _local4[(_local9 + 1)]; _local4[_local9] = (((((_local12 & 0xFC0000) << 6) | ((_local12 & 4032) << 10)) | ((_local13 & 0xFC0000) >>> 10)) | ((_local13 & 4032) >>> 6)); _local4[(_local9 + 1)] = (((((_local12 & 258048) << 12) | ((_local12 & 63) << 16)) | ((_local13 & 258048) >>> 4)) | (_local13 & 63)); _local9 = (_local9 + 2); }; return (_local4); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(encKey, _arg1, _arg2, _arg1, _arg2); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(decKey, _arg1, _arg2, _arg1, _arg2); } public function dispose():void{ var _local1:uint; _local1 = 0; _local1 = 0; while (_local1 < encKey.length) { encKey[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < decKey.length) { decKey[_local1] = 0; _local1++; }; encKey = null; decKey = null; _local1 = 0; while (_local1 < key.length) { key[_local1] = 0; _local1++; }; key.length = 0; key = null; Memory.gc(); } protected function desFunc(_arg1:Array, _arg2:ByteArray, _arg3:uint, _arg4:ByteArray, _arg5:uint):void{ var _local6:uint; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:uint; _local8 = ((_arg2[(_arg3 + 0)] & 0xFF) << 24); _local8 = (_local8 | ((_arg2[(_arg3 + 1)] & 0xFF) << 16)); _local8 = (_local8 | ((_arg2[(_arg3 + 2)] & 0xFF) << 8)); _local8 = (_local8 | (_arg2[(_arg3 + 3)] & 0xFF)); _local7 = ((_arg2[(_arg3 + 4)] & 0xFF) << 24); _local7 = (_local7 | ((_arg2[(_arg3 + 5)] & 0xFF) << 16)); _local7 = (_local7 | ((_arg2[(_arg3 + 6)] & 0xFF) << 8)); _local7 = (_local7 | (_arg2[(_arg3 + 7)] & 0xFF)); _local6 = (((_local8 >>> 4) ^ _local7) & 252645135); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 4)); _local6 = (((_local8 >>> 16) ^ _local7) & 0xFFFF); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 16)); _local6 = (((_local7 >>> 2) ^ _local8) & 858993459); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 2)); _local6 = (((_local7 >>> 8) ^ _local8) & 0xFF00FF); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 8)); _local7 = (((_local7 << 1) | ((_local7 >>> 31) & 1)) & 4294967295); _local6 = ((_local8 ^ _local7) & 2863311530); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ _local6); _local8 = (((_local8 << 1) | ((_local8 >>> 31) & 1)) & 4294967295); _local9 = 0; while (_local9 < 8) { _local6 = ((_local7 << 28) | (_local7 >>> 4)); _local6 = (_local6 ^ _arg1[((_local9 * 4) + 0)]); _local10 = SP7[(_local6 & 63)]; _local10 = (_local10 | SP5[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP3[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP1[((_local6 >>> 24) & 63)]); _local6 = (_local7 ^ _arg1[((_local9 * 4) + 1)]); _local10 = (_local10 | SP8[(_local6 & 63)]); _local10 = (_local10 | SP6[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP4[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP2[((_local6 >>> 24) & 63)]); _local8 = (_local8 ^ _local10); _local6 = ((_local8 << 28) | (_local8 >>> 4)); _local6 = (_local6 ^ _arg1[((_local9 * 4) + 2)]); _local10 = SP7[(_local6 & 63)]; _local10 = (_local10 | SP5[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP3[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP1[((_local6 >>> 24) & 63)]); _local6 = (_local8 ^ _arg1[((_local9 * 4) + 3)]); _local10 = (_local10 | SP8[(_local6 & 63)]); _local10 = (_local10 | SP6[((_local6 >>> 8) & 63)]); _local10 = (_local10 | SP4[((_local6 >>> 16) & 63)]); _local10 = (_local10 | SP2[((_local6 >>> 24) & 63)]); _local7 = (_local7 ^ _local10); _local9++; }; _local7 = ((_local7 << 31) | (_local7 >>> 1)); _local6 = ((_local8 ^ _local7) & 2863311530); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ _local6); _local8 = ((_local8 << 31) | (_local8 >>> 1)); _local6 = (((_local8 >>> 8) ^ _local7) & 0xFF00FF); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 8)); _local6 = (((_local8 >>> 2) ^ _local7) & 858993459); _local7 = (_local7 ^ _local6); _local8 = (_local8 ^ (_local6 << 2)); _local6 = (((_local7 >>> 16) ^ _local8) & 0xFFFF); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 16)); _local6 = (((_local7 >>> 4) ^ _local8) & 252645135); _local8 = (_local8 ^ _local6); _local7 = (_local7 ^ (_local6 << 4)); _arg4[(_arg5 + 0)] = ((_local7 >>> 24) & 0xFF); _arg4[(_arg5 + 1)] = ((_local7 >>> 16) & 0xFF); _arg4[(_arg5 + 2)] = ((_local7 >>> 8) & 0xFF); _arg4[(_arg5 + 3)] = (_local7 & 0xFF); _arg4[(_arg5 + 4)] = ((_local8 >>> 24) & 0xFF); _arg4[(_arg5 + 5)] = ((_local8 >>> 16) & 0xFF); _arg4[(_arg5 + 6)] = ((_local8 >>> 8) & 0xFF); _arg4[(_arg5 + 7)] = (_local8 & 0xFF); } public function toString():String{ return ("des"); } public function getBlockSize():uint{ return (8); } } }//package com.hurlant.crypto.symmetric
Section 35
//ECBMode (com.hurlant.crypto.symmetric.ECBMode) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class ECBMode implements IMode, ICipher { private var key:ISymmetricKey; private var padding:IPad; public function ECBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ this.key = _arg1; if (_arg2 == null){ _arg2 = new PKCS5(_arg1.getBlockSize()); } else { _arg2.setBlockSize(_arg1.getBlockSize()); }; this.padding = _arg2; } public function encrypt(_arg1:ByteArray):void{ var _local2:uint; var _local3:ByteArray; var _local4:ByteArray; var _local5:uint; padding.pad(_arg1); _arg1.position = 0; _local2 = key.getBlockSize(); _local3 = new ByteArray(); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.length) { _local3.length = 0; _arg1.readBytes(_local3, 0, _local2); key.encrypt(_local3); _local4.writeBytes(_local3); _local5 = (_local5 + _local2); }; _arg1.length = 0; _arg1.writeBytes(_local4); } public function decrypt(_arg1:ByteArray):void{ var _local2:uint; var _local3:ByteArray; var _local4:ByteArray; var _local5:uint; _arg1.position = 0; _local2 = key.getBlockSize(); if ((_arg1.length % _local2) != 0){ throw (new Error(("ECB mode cipher length must be a multiple of blocksize " + _local2))); }; _local3 = new ByteArray(); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.length) { _local3.length = 0; _arg1.readBytes(_local3, 0, _local2); key.decrypt(_local3); _local4.writeBytes(_local3); _local5 = (_local5 + _local2); }; padding.unpad(_local4); _arg1.length = 0; _arg1.writeBytes(_local4); } public function dispose():void{ key.dispose(); key = null; padding = null; Memory.gc(); } public function getBlockSize():uint{ return (key.getBlockSize()); } public function toString():String{ return ((key.toString() + "-ecb")); } } }//package com.hurlant.crypto.symmetric
Section 36
//ICipher (com.hurlant.crypto.symmetric.ICipher) package com.hurlant.crypto.symmetric { import flash.utils.*; public interface ICipher { function encrypt(_arg1:ByteArray):void; function dispose():void; function getBlockSize():uint; function toString():String; function decrypt(_arg1:ByteArray):void; } }//package com.hurlant.crypto.symmetric
Section 37
//IMode (com.hurlant.crypto.symmetric.IMode) package com.hurlant.crypto.symmetric { public interface IMode extends ICipher { } }//package com.hurlant.crypto.symmetric
Section 38
//IPad (com.hurlant.crypto.symmetric.IPad) package com.hurlant.crypto.symmetric { import flash.utils.*; public interface IPad { function pad(_arg1:ByteArray):void; function unpad(_arg1:ByteArray):void; function setBlockSize(_arg1:uint):void; } }//package com.hurlant.crypto.symmetric
Section 39
//IStreamCipher (com.hurlant.crypto.symmetric.IStreamCipher) package com.hurlant.crypto.symmetric { public interface IStreamCipher extends ICipher { } }//package com.hurlant.crypto.symmetric
Section 40
//ISymmetricKey (com.hurlant.crypto.symmetric.ISymmetricKey) package com.hurlant.crypto.symmetric { import flash.utils.*; public interface ISymmetricKey { function encrypt(_arg1:ByteArray, _arg2:uint=0):void; function dispose():void; function getBlockSize():uint; function toString():String; function decrypt(_arg1:ByteArray, _arg2:uint=0):void; } }//package com.hurlant.crypto.symmetric
Section 41
//IVMode (com.hurlant.crypto.symmetric.IVMode) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class IVMode { protected var lastIV:ByteArray; protected var iv:ByteArray; protected var blockSize:uint; protected var padding:IPad; protected var prng:Random; protected var key:ISymmetricKey; public function IVMode(_arg1:ISymmetricKey, _arg2:IPad=null){ this.key = _arg1; blockSize = _arg1.getBlockSize(); if (_arg2 == null){ _arg2 = new PKCS5(blockSize); } else { _arg2.setBlockSize(blockSize); }; this.padding = _arg2; prng = new Random(); iv = null; lastIV = new ByteArray(); } public function set IV(_arg1:ByteArray):void{ iv = _arg1; lastIV.length = 0; lastIV.writeBytes(iv); } protected function getIV4d():ByteArray{ var _local1:ByteArray; _local1 = new ByteArray(); if (iv){ _local1.writeBytes(iv); } else { throw (new Error("an IV must be set before calling decrypt()")); }; return (_local1); } protected function getIV4e():ByteArray{ var _local1:ByteArray; _local1 = new ByteArray(); if (iv){ _local1.writeBytes(iv); } else { prng.nextBytes(_local1, blockSize); }; lastIV.length = 0; lastIV.writeBytes(_local1); return (_local1); } public function get IV():ByteArray{ return (lastIV); } public function dispose():void{ var _local1:uint; if (iv != null){ _local1 = 0; while (_local1 < iv.length) { iv[_local1] = prng.nextByte(); _local1++; }; iv.length = 0; iv = null; }; if (lastIV != null){ _local1 = 0; while (_local1 < iv.length) { lastIV[_local1] = prng.nextByte(); _local1++; }; lastIV.length = 0; lastIV = null; }; key.dispose(); key = null; padding = null; prng.dispose(); prng = null; Memory.gc(); } public function getBlockSize():uint{ return (key.getBlockSize()); } } }//package com.hurlant.crypto.symmetric
Section 42
//NullPad (com.hurlant.crypto.symmetric.NullPad) package com.hurlant.crypto.symmetric { import flash.utils.*; public class NullPad implements IPad { public function pad(_arg1:ByteArray):void{ } public function unpad(_arg1:ByteArray):void{ } public function setBlockSize(_arg1:uint):void{ } } }//package com.hurlant.crypto.symmetric
Section 43
//OFBMode (com.hurlant.crypto.symmetric.OFBMode) package com.hurlant.crypto.symmetric { import flash.utils.*; public class OFBMode extends IVMode implements IMode { public function OFBMode(_arg1:ISymmetricKey, _arg2:IPad=null){ super(_arg1, null); } public function toString():String{ return ((key.toString() + "-ofb")); } private function core(_arg1:ByteArray, _arg2:ByteArray):void{ var _local3:uint; var _local4:ByteArray; var _local5:uint; var _local6:uint; var _local7:uint; _local3 = _arg1.length; _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.length) { key.encrypt(_arg2); _local4.position = 0; _local4.writeBytes(_arg2); _local6 = (((_local5 + blockSize))<_local3) ? blockSize : (_local3 - _local5); _local7 = 0; while (_local7 < _local6) { _arg1[(_local5 + _local7)] = (_arg1[(_local5 + _local7)] ^ _arg2[_local7]); _local7++; }; _arg2.position = 0; _arg2.writeBytes(_local4); _local5 = (_local5 + blockSize); }; } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray; _local2 = getIV4d(); core(_arg1, _local2); } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray; _local2 = getIV4e(); core(_arg1, _local2); } } }//package com.hurlant.crypto.symmetric
Section 44
//PKCS5 (com.hurlant.crypto.symmetric.PKCS5) package com.hurlant.crypto.symmetric { import flash.utils.*; public class PKCS5 implements IPad { private var blockSize:uint; public function PKCS5(_arg1:uint=0){ this.blockSize = _arg1; } public function unpad(_arg1:ByteArray):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = (_arg1.length % blockSize); if (_local2 != 0){ throw (new Error("PKCS#5::unpad: ByteArray.length isn't a multiple of the blockSize")); }; _local2 = _arg1[(_arg1.length - 1)]; _local3 = _local2; while (_local3 > 0) { _local4 = _arg1[(_arg1.length - 1)]; _arg1.length--; if (_local2 != _local4){ throw (new Error((((("PKCS#5:unpad: Invalid padding value. expected [" + _local2) + "], found [") + _local4) + "]"))); }; _local3--; }; } public function pad(_arg1:ByteArray):void{ var _local2:uint; var _local3:uint; _local2 = (blockSize - (_arg1.length % blockSize)); _local3 = 0; while (_local3 < _local2) { _arg1[_arg1.length] = _local2; _local3++; }; } public function setBlockSize(_arg1:uint):void{ blockSize = _arg1; } } }//package com.hurlant.crypto.symmetric
Section 45
//SimpleIVMode (com.hurlant.crypto.symmetric.SimpleIVMode) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class SimpleIVMode implements IMode, ICipher { protected var mode:IVMode; protected var cipher:ICipher; public function SimpleIVMode(_arg1:IVMode){ this.mode = _arg1; cipher = (_arg1 as ICipher); } public function encrypt(_arg1:ByteArray):void{ var _local2:ByteArray; cipher.encrypt(_arg1); _local2 = new ByteArray(); _local2.writeBytes(mode.IV); _local2.writeBytes(_arg1); _arg1.position = 0; _arg1.writeBytes(_local2); } public function decrypt(_arg1:ByteArray):void{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.writeBytes(_arg1, 0, getBlockSize()); mode.IV = _local2; _local2 = new ByteArray(); _local2.writeBytes(_arg1, getBlockSize()); cipher.decrypt(_local2); _arg1.length = 0; _arg1.writeBytes(_local2); } public function dispose():void{ mode.dispose(); mode = null; cipher = null; Memory.gc(); } public function toString():String{ return (("simple-" + cipher.toString())); } public function getBlockSize():uint{ return (mode.getBlockSize()); } } }//package com.hurlant.crypto.symmetric
Section 46
//TripleDESKey (com.hurlant.crypto.symmetric.TripleDESKey) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.util.*; public class TripleDESKey extends DESKey { protected var decKey2:Array; protected var decKey3:Array; protected var encKey2:Array; protected var encKey3:Array; public function TripleDESKey(_arg1:ByteArray){ super(_arg1); encKey2 = generateWorkingKey(false, _arg1, 8); decKey2 = generateWorkingKey(true, _arg1, 8); if (_arg1.length > 16){ encKey3 = generateWorkingKey(true, _arg1, 16); decKey3 = generateWorkingKey(false, _arg1, 16); } else { encKey3 = encKey; decKey3 = decKey; }; } override public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(decKey3, _arg1, _arg2, _arg1, _arg2); desFunc(decKey2, _arg1, _arg2, _arg1, _arg2); desFunc(decKey, _arg1, _arg2, _arg1, _arg2); } override public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ desFunc(encKey, _arg1, _arg2, _arg1, _arg2); desFunc(encKey2, _arg1, _arg2, _arg1, _arg2); desFunc(encKey3, _arg1, _arg2, _arg1, _arg2); } override public function dispose():void{ var _local1:uint; super.dispose(); _local1 = 0; if (encKey2 != null){ _local1 = 0; while (_local1 < encKey2.length) { encKey2[_local1] = 0; _local1++; }; encKey2 = null; }; if (encKey3 != null){ _local1 = 0; while (_local1 < encKey3.length) { encKey3[_local1] = 0; _local1++; }; encKey3 = null; }; if (decKey2 != null){ _local1 = 0; while (_local1 < decKey2.length) { decKey2[_local1] = 0; _local1++; }; decKey2 = null; }; if (decKey3 != null){ _local1 = 0; while (_local1 < decKey3.length) { decKey3[_local1] = 0; _local1++; }; decKey3 = null; }; Memory.gc(); } override public function toString():String{ return ("3des"); } } }//package com.hurlant.crypto.symmetric
Section 47
//XTeaKey (com.hurlant.crypto.symmetric.XTeaKey) package com.hurlant.crypto.symmetric { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class XTeaKey implements ISymmetricKey { public const NUM_ROUNDS:uint = 64; private var k:Array; public function XTeaKey(_arg1:ByteArray){ _arg1.position = 0; k = [_arg1.readUnsignedInt(), _arg1.readUnsignedInt(), _arg1.readUnsignedInt(), _arg1.readUnsignedInt()]; } public function dispose():void{ var _local1:Random; var _local2:uint; _local1 = new Random(); _local2 = 0; while (_local2 < k.length) { k[_local2] = _local1.nextByte(); delete k[_local2]; _local2++; }; k = null; Memory.gc(); } public function encrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; _arg1.position = _arg2; _local3 = _arg1.readUnsignedInt(); _local4 = _arg1.readUnsignedInt(); _local6 = 0; _local7 = 2654435769; _local5 = 0; while (_local5 < NUM_ROUNDS) { _local3 = (_local3 + ((((_local4 << 4) ^ (_local4 >> 5)) + _local4) ^ (_local6 + k[(_local6 & 3)]))); _local6 = (_local6 + _local7); _local4 = (_local4 + ((((_local3 << 4) ^ (_local3 >> 5)) + _local3) ^ (_local6 + k[((_local6 >> 11) & 3)]))); _local5++; }; _arg1.position = (_arg1.position - 8); _arg1.writeUnsignedInt(_local3); _arg1.writeUnsignedInt(_local4); } public function decrypt(_arg1:ByteArray, _arg2:uint=0):void{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; _arg1.position = _arg2; _local3 = _arg1.readUnsignedInt(); _local4 = _arg1.readUnsignedInt(); _local6 = 2654435769; _local7 = (_local6 * NUM_ROUNDS); _local5 = 0; while (_local5 < NUM_ROUNDS) { _local4 = (_local4 - ((((_local3 << 4) ^ (_local3 >> 5)) + _local3) ^ (_local7 + k[((_local7 >> 11) & 3)]))); _local7 = (_local7 - _local6); _local3 = (_local3 - ((((_local4 << 4) ^ (_local4 >> 5)) + _local4) ^ (_local7 + k[(_local7 & 3)]))); _local5++; }; _arg1.position = (_arg1.position - 8); _arg1.writeUnsignedInt(_local3); _arg1.writeUnsignedInt(_local4); } public function toString():String{ return ("xtea"); } public function getBlockSize():uint{ return (8); } public static function parseKey(_arg1:String):XTeaKey{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.writeUnsignedInt(parseInt(_arg1.substr(0, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(8, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(16, 8), 16)); _local2.writeUnsignedInt(parseInt(_arg1.substr(24, 8), 16)); _local2.position = 0; return (new XTeaKey(_local2)); } } }//package com.hurlant.crypto.symmetric
Section 48
//Crypto (com.hurlant.crypto.Crypto) package com.hurlant.crypto { import flash.utils.*; import com.hurlant.crypto.symmetric.*; import com.hurlant.crypto.hash.*; import com.hurlant.crypto.rsa.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class Crypto { private var b64:Base64; public static function getCipher(_arg1:String, _arg2:ByteArray, _arg3:IPad=null):ICipher{ var _local4:Array; var _local5:ICipher; _local4 = _arg1.split("-"); switch (_local4[0]){ case "simple": _local4.shift(); _arg1 = _local4.join("-"); _local5 = getCipher(_arg1, _arg2, _arg3); if ((_local5 is IVMode)){ return (new SimpleIVMode((_local5 as IVMode))); }; return (_local5); case "aes": case "aes128": case "aes192": case "aes256": _local4.shift(); if ((_arg2.length * 8) == _local4[0]){ _local4.shift(); }; return (getMode(_local4[0], new AESKey(_arg2), _arg3)); case "bf": case "blowfish": _local4.shift(); return (getMode(_local4[0], new BlowFishKey(_arg2), _arg3)); case "des": _local4.shift(); if (((!((_local4[0] == "ede"))) && (!((_local4[0] == "ede3"))))){ return (getMode(_local4[0], new DESKey(_arg2), _arg3)); }; if (_local4.length == 1){ _local4.push("ecb"); }; case "3des": case "des3": _local4.shift(); return (getMode(_local4[0], new TripleDESKey(_arg2), _arg3)); case "xtea": _local4.shift(); return (getMode(_local4[0], new XTeaKey(_arg2), _arg3)); case "rc4": _local4.shift(); return (new ARC4(_arg2)); }; return (null); } public static function getHash(_arg1:String):IHash{ switch (_arg1){ case "md2": return (new MD2()); case "md5": return (new MD5()); case "sha": case "sha1": return (new SHA1()); case "sha224": return (new SHA224()); case "sha256": return (new SHA256()); }; return (null); } public static function getRSA(_arg1:String, _arg2:String):RSAKey{ return (RSAKey.parsePublicKey(_arg2, _arg1)); } private static function getMode(_arg1:String, _arg2:ISymmetricKey, _arg3:IPad=null):IMode{ switch (_arg1){ case "ecb": return (new ECBMode(_arg2, _arg3)); case "cfb": return (new CFBMode(_arg2, _arg3)); case "cfb8": return (new CFB8Mode(_arg2, _arg3)); case "ofb": return (new OFBMode(_arg2, _arg3)); case "ctr": return (new CTRMode(_arg2, _arg3)); case "cbc": default: return (new CBCMode(_arg2, _arg3)); }; } public static function getKeySize(_arg1:String):uint{ var _local2:Array; _local2 = _arg1.split("-"); switch (_local2[0]){ case "simple": _local2.shift(); return (getKeySize(_local2.join("-"))); case "aes128": return (16); case "aes192": return (24); case "aes256": return (32); case "aes": _local2.shift(); return ((parseInt(_local2[0]) / 8)); case "bf": case "blowfish": return (16); case "des": _local2.shift(); switch (_local2[0]){ case "ede": return (16); case "ede3": return (24); default: return (8); }; case "3des": case "des3": return (24); case "xtea": return (8); case "rc4": if (parseInt(_local2[1]) > 0){ return ((parseInt(_local2[1]) / 8)); }; return (16); }; return (0); } public static function getPad(_arg1:String):IPad{ switch (_arg1){ case "null": return (new NullPad()); case "pkcs5": default: return (new PKCS5()); }; } public static function getHMAC(_arg1:String):HMAC{ var _local2:Array; var _local3:uint; _local2 = _arg1.split("-"); if (_local2[0] == "hmac"){ _local2.shift(); }; _local3 = 0; if (_local2.length > 1){ _local3 = parseInt(_local2[1]); }; return (new HMAC(getHash(_local2[0]), _local3)); } } }//package com.hurlant.crypto
Section 49
//BarrettReduction (com.hurlant.math.BarrettReduction) package com.hurlant.math { import com.hurlant.math.*; class BarrettReduction implements IReduction { private var r2:BigInteger; private var q3:BigInteger; private var mu:BigInteger; private var m:BigInteger; function BarrettReduction(_arg1:BigInteger){ r2 = new BigInteger(); q3 = new BigInteger(); BigInteger.ONE.dlShiftTo((2 * _arg1.t), r2); mu = r2.divide(_arg1); this.m = _arg1; } public function reduce(_arg1:BigInteger):void{ var _local2:BigInteger; _local2 = (_arg1 as BigInteger); _local2.drShiftTo((m.t - 1), r2); if (_local2.t > (m.t + 1)){ _local2.t = (m.t + 1); _local2.clamp(); }; mu.multiplyUpperTo(r2, (m.t + 1), q3); m.multiplyLowerTo(q3, (m.t + 1), r2); while (_local2.compareTo(r2) < 0) { _local2.dAddOffset(1, (m.t + 1)); }; _local2.subTo(r2, _local2); while (_local2.compareTo(m) >= 0) { _local2.subTo(m, _local2); }; } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; if ((((_arg1.s < 0)) || ((_arg1.t > (2 * m.t))))){ return (_arg1.mod(m)); }; if (_arg1.compareTo(m) < 0){ return (_arg1); }; _local2 = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } } }//package com.hurlant.math
Section 50
//bi_internal (com.hurlant.math.bi_internal) package com.hurlant.math { public namespace bi_internal = "http://crypto.hurlant.com/BigInteger"; }//package com.hurlant.math
Section 51
//BigInteger (com.hurlant.math.BigInteger) package com.hurlant.math { import flash.utils.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; public class BigInteger { bi_internal var a:Array; bi_internal var s:int; public var t:int; public static const ONE:BigInteger = nbv(1); public static const ZERO:BigInteger = nbv(0); public static const DM:int = (DV - 1); public static const F1:int = 22; public static const F2:int = 8; public static const lplim:int = ((1 << 26) / lowprimes[(lowprimes.length - 1)]); public static const lowprimes:Array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 0x0101, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509]; public static const FV:Number = Math.pow(2, BI_FP); public static const BI_FP:int = 52; public static const DV:int = (1 << DB); public static const DB:int = 30; public function BigInteger(_arg1=null, _arg2:int=0){ var _local3:ByteArray; var _local4:int; super(); a = new Array(); if ((_arg1 is String)){ _arg1 = Hex.toArray(_arg1); _arg2 = 0; }; if ((_arg1 is ByteArray)){ _local3 = (_arg1 as ByteArray); _local4 = ((_arg2) || ((_local3.length - _local3.position))); fromArray(_local3, _local4); }; } public function clearBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_andnot)); } public function negate():BigInteger{ var _local1:BigInteger; _local1 = nbi(); ZERO.subTo(this, _local1); return (_local1); } public function andNot(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); bitwiseTo(_arg1, op_andnot, _local2); return (_local2); } public function modPow(_arg1:BigInteger, _arg2:BigInteger):BigInteger{ var _local3:int; var _local4:int; var _local5:BigInteger; var _local6:IReduction; var _local7:Array; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:Boolean; var _local14:BigInteger; var _local15:BigInteger; var _local16:BigInteger; _local3 = _arg1.bitLength(); _local5 = nbv(1); if (_local3 <= 0){ return (_local5); }; if (_local3 < 18){ _local4 = 1; } else { if (_local3 < 48){ _local4 = 3; } else { if (_local3 < 144){ _local4 = 4; } else { if (_local3 < 0x0300){ _local4 = 5; } else { _local4 = 6; }; }; }; }; if (_local3 < 8){ _local6 = new ClassicReduction(_arg2); } else { if (_arg2.isEven()){ _local6 = new BarrettReduction(_arg2); } else { _local6 = new MontgomeryReduction(_arg2); }; }; _local7 = []; _local8 = 3; _local9 = (_local4 - 1); _local10 = ((1 << _local4) - 1); _local7[1] = _local6.convert(this); if (_local4 > 1){ _local16 = new BigInteger(); _local6.sqrTo(_local7[1], _local16); while (_local8 <= _local10) { _local7[_local8] = new BigInteger(); _local6.mulTo(_local16, _local7[(_local8 - 2)], _local7[_local8]); _local8 = (_local8 + 2); }; }; _local11 = (_arg1.t - 1); _local13 = true; _local14 = new BigInteger(); _local3 = (nbits(_arg1.a[_local11]) - 1); while (_local11 >= 0) { if (_local3 >= _local9){ _local12 = ((_arg1.a[_local11] >> (_local3 - _local9)) & _local10); } else { _local12 = ((_arg1.a[_local11] & ((1 << (_local3 + 1)) - 1)) << (_local9 - _local3)); if (_local11 > 0){ _local12 = (_local12 | (_arg1.a[(_local11 - 1)] >> ((DB + _local3) - _local9))); }; }; _local8 = _local4; while ((_local12 & 1) == 0) { _local12 = (_local12 >> 1); _local8--; }; _local3 = (_local3 - _local8); if (_local3 < 0){ _local3 = (_local3 + DB); _local11--; }; if (_local13){ _local7[_local12].copyTo(_local5); _local13 = false; } else { while (_local8 > 1) { _local6.sqrTo(_local5, _local14); _local6.sqrTo(_local14, _local5); _local8 = (_local8 - 2); }; if (_local8 > 0){ _local6.sqrTo(_local5, _local14); } else { _local15 = _local5; _local5 = _local14; _local14 = _local15; }; _local6.mulTo(_local14, _local7[_local12], _local5); }; while ((((_local11 >= 0)) && (((_arg1.a[_local11] & (1 << _local3)) == 0)))) { _local6.sqrTo(_local5, _local14); _local15 = _local5; _local5 = _local14; _local14 = _local15; --_local3; if (_local3 < 0){ _local3 = (DB - 1); _local11--; }; }; }; return (_local6.revert(_local5)); } public function isProbablePrime(_arg1:int):Boolean{ var _local2:int; var _local3:BigInteger; var _local4:int; var _local5:int; _local3 = abs(); if ((((_local3.t == 1)) && ((_local3.a[0] <= lowprimes[(lowprimes.length - 1)])))){ _local2 = 0; while (_local2 < lowprimes.length) { if (_local3[0] == lowprimes[_local2]){ return (true); }; _local2++; }; return (false); }; if (_local3.isEven()){ return (false); }; _local2 = 1; while (_local2 < lowprimes.length) { _local4 = lowprimes[_local2]; _local5 = (_local2 + 1); while ((((_local5 < lowprimes.length)) && ((_local4 < lplim)))) { var _temp1 = _local5; _local5 = (_local5 + 1); _local4 = (_local4 * lowprimes[_temp1]); }; _local4 = _local3.modInt(_local4); while (_local2 < _local5) { var _temp2 = _local4; var _temp3 = _local2; _local2 = (_local2 + 1); if ((_temp2 % lowprimes[_temp3]) == 0){ return (false); }; }; }; return (_local3.millerRabin(_arg1)); } private function op_or(_arg1:int, _arg2:int):int{ return ((_arg1 | _arg2)); } public function mod(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = nbi(); abs().divRemTo(_arg1, null, _local2); if ((((s < 0)) && ((_local2.compareTo(ZERO) > 0)))){ _arg1.subTo(_local2, _local2); }; return (_local2); } protected function addTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int; _local3 = 0; _local4 = 0; _local5 = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (this.a[_local3] + _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1); var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 + _arg1.s); while (_local3 < t) { _local4 = (_local4 + this.a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 + _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1); _local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 > 0){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = _local4; } else { if (_local4 < -1){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = (DV + _local4); }; }; _arg2.t = _local3; _arg2.clamp(); } protected function bitwiseTo(_arg1:BigInteger, _arg2:Function, _arg3:BigInteger):void{ var _local4:int; var _local5:int; var _local6:int; _local6 = Math.min(_arg1.t, t); _local4 = 0; while (_local4 < _local6) { _arg3.a[_local4] = _arg2(this.a[_local4], _arg1.a[_local4]); _local4++; }; if (_arg1.t < t){ _local5 = (_arg1.s & DM); _local4 = _local6; while (_local4 < t) { _arg3.a[_local4] = _arg2(this.a[_local4], _local5); _local4++; }; _arg3.t = t; } else { _local5 = (s & DM); _local4 = _local6; while (_local4 < _arg1.t) { _arg3.a[_local4] = _arg2(_local5, _arg1.a[_local4]); _local4++; }; _arg3.t = _arg1.t; }; _arg3.s = _arg2(s, _arg1.s); _arg3.clamp(); } protected function modInt(_arg1:int):int{ var _local2:int; var _local3:int; var _local4:int; if (_arg1 <= 0){ return (0); }; _local2 = (DV % _arg1); _local3 = ((s)<0) ? (_arg1 - 1) : 0; if (t > 0){ if (_local2 == 0){ _local3 = (a[0] % _arg1); } else { _local4 = (t - 1); while (_local4 >= 0) { _local3 = (((_local2 * _local3) + a[_local4]) % _arg1); _local4--; }; }; }; return (_local3); } protected function chunkSize(_arg1:Number):int{ return (Math.floor(((Math.LN2 * DB) / Math.log(_arg1)))); } bi_internal function dAddOffset(_arg1:int, _arg2:int):void{ while (t <= _arg2) { var _local3 = t++; a[_local3] = 0; }; a[_arg2] = (a[_arg2] + _arg1); while (a[_arg2] >= DV) { a[_arg2] = (a[_arg2] - DV); ++_arg2; if (_arg2 >= t){ _local3 = t++; a[_local3] = 0; }; _local3 = a; var _local4 = _arg2; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; }; } bi_internal function lShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; _local3 = (_arg1 % DB); _local4 = (DB - _local3); _local5 = ((1 << _local4) - 1); _local6 = (_arg1 / DB); _local7 = ((s << _local3) & DM); _local8 = (t - 1); while (_local8 >= 0) { _arg2.a[((_local8 + _local6) + 1)] = ((a[_local8] >> _local4) | _local7); _local7 = ((a[_local8] & _local5) << _local3); _local8--; }; _local8 = (_local6 - 1); while (_local8 >= 0) { _arg2.a[_local8] = 0; _local8--; }; _arg2.a[_local6] = _local7; _arg2.t = ((t + _local6) + 1); _arg2.s = s; _arg2.clamp(); } public function getLowestSetBit():int{ var _local1:int; _local1 = 0; while (_local1 < t) { if (a[_local1] != 0){ return (((_local1 * DB) + lbit(a[_local1]))); }; _local1++; }; if (s < 0){ return ((t * DB)); }; return (-1); } public function subtract(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); subTo(_arg1, _local2); return (_local2); } public function primify(_arg1:int, _arg2:int):void{ if (!testBit((_arg1 - 1))){ bitwiseTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), op_or, this); }; if (isEven()){ dAddOffset(1, 0); }; while (!(isProbablePrime(_arg2))) { dAddOffset(2, 0); while (bitLength() > _arg1) { subTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), this); }; }; } public function gcd(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; var _local3:BigInteger; var _local4:int; var _local5:int; var _local6:BigInteger; _local2 = ((s)<0) ? negate() : clone(); _local3 = ((_arg1.s)<0) ? _arg1.negate() : _arg1.clone(); if (_local2.compareTo(_local3) < 0){ _local6 = _local2; _local2 = _local3; _local3 = _local6; }; _local4 = _local2.getLowestSetBit(); _local5 = _local3.getLowestSetBit(); if (_local5 < 0){ return (_local2); }; if (_local4 < _local5){ _local5 = _local4; }; if (_local5 > 0){ _local2.rShiftTo(_local5, _local2); _local3.rShiftTo(_local5, _local3); }; while (_local2.sigNum() > 0) { _local4 = _local2.getLowestSetBit(); if (_local4 > 0){ _local2.rShiftTo(_local4, _local2); }; _local4 = _local3.getLowestSetBit(); if (_local4 > 0){ _local3.rShiftTo(_local4, _local3); }; if (_local2.compareTo(_local3) >= 0){ _local2.subTo(_local3, _local2); _local2.rShiftTo(1, _local2); } else { _local3.subTo(_local2, _local3); _local3.rShiftTo(1, _local3); }; }; if (_local5 > 0){ _local3.lShiftTo(_local5, _local3); }; return (_local3); } bi_internal function multiplyLowerTo(_arg1:BigInteger, _arg2:int, _arg3:BigInteger):void{ var _local4:int; var _local5:int; _local4 = Math.min((t + _arg1.t), _arg2); _arg3.s = 0; _arg3.t = _local4; while (_local4 > 0) { --_local4; var _local6 = _local4; _arg3.a[_local6] = 0; }; _local5 = (_arg3.t - t); while (_local4 < _local5) { _arg3.a[(_local4 + t)] = am(0, _arg1.a[_local4], _arg3, _local4, 0, t); _local4++; }; _local5 = Math.min(_arg1.t, _arg2); while (_local4 < _local5) { am(0, _arg1.a[_local4], _arg3, _local4, 0, (_arg2 - _local4)); _local4++; }; _arg3.clamp(); } public function modPowInt(_arg1:int, _arg2:BigInteger):BigInteger{ var _local3:IReduction; if ((((_arg1 < 0x0100)) || (_arg2.isEven()))){ _local3 = new ClassicReduction(_arg2); } else { _local3 = new MontgomeryReduction(_arg2); }; return (exp(_arg1, _local3)); } bi_internal function intAt(_arg1:String, _arg2:int):int{ return (parseInt(_arg1.charAt(_arg2), 36)); } public function testBit(_arg1:int):Boolean{ var _local2:int; _local2 = Math.floor((_arg1 / DB)); if (_local2 >= t){ return (!((s == 0))); }; return (!(((a[_local2] & (1 << (_arg1 % DB))) == 0))); } bi_internal function exp(_arg1:int, _arg2:IReduction):BigInteger{ var _local3:BigInteger; var _local4:BigInteger; var _local5:BigInteger; var _local6:int; var _local7:BigInteger; if ((((_arg1 > 4294967295)) || ((_arg1 < 1)))){ return (ONE); }; _local3 = nbi(); _local4 = nbi(); _local5 = _arg2.convert(this); _local6 = (nbits(_arg1) - 1); _local5.copyTo(_local3); while (--_local6 >= 0) { _arg2.sqrTo(_local3, _local4); if ((_arg1 & (1 << _local6)) > 0){ _arg2.mulTo(_local4, _local5, _local3); } else { _local7 = _local3; _local3 = _local4; _local4 = _local7; }; }; return (_arg2.revert(_local3)); } public function toArray(_arg1:ByteArray):uint{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:Boolean; var _local8:int; _local2 = 8; _local3 = ((1 << 8) - 1); _local4 = 0; _local5 = t; _local6 = (DB - ((_local5 * DB) % _local2)); _local7 = false; _local8 = 0; var _temp1 = _local5; _local5 = (_local5 - 1); if (_temp1 > 0){ if ((((_local6 < DB)) && (((a[_local5] >> _local6) > 0)))){ _local7 = true; _arg1.writeByte(_local4); _local8++; }; while (_local5 >= 0) { if (_local6 < _local2){ _local4 = ((a[_local5] & ((1 << _local6) - 1)) << (_local2 - _local6)); var _temp2 = _local4; _local5 = (_local5 - 1); _local6 = (_local6 + (DB - _local2)); _local4 = (_temp2 | (a[_local5] >> _local6)); } else { _local6 = (_local6 - _local2); _local4 = ((a[_local5] >> _local6) & _local3); if (_local6 <= 0){ _local6 = (_local6 + DB); _local5--; }; }; if (_local4 > 0){ _local7 = true; }; if (_local7){ _arg1.writeByte(_local4); _local8++; }; }; }; return (_local8); } public function dispose():void{ var _local1:Random; var _local2:uint; _local1 = new Random(); _local2 = 0; while (_local2 < a.length) { a[_local2] = _local1.nextByte(); delete a[_local2]; _local2++; }; a = null; t = 0; s = 0; Memory.gc(); } private function lbit(_arg1:int):int{ var _local2:int; if (_arg1 == 0){ return (-1); }; _local2 = 0; if ((_arg1 & 0xFFFF) == 0){ _arg1 = (_arg1 >> 16); _local2 = (_local2 + 16); }; if ((_arg1 & 0xFF) == 0){ _arg1 = (_arg1 >> 8); _local2 = (_local2 + 8); }; if ((_arg1 & 15) == 0){ _arg1 = (_arg1 >> 4); _local2 = (_local2 + 4); }; if ((_arg1 & 3) == 0){ _arg1 = (_arg1 >> 2); _local2 = (_local2 + 2); }; if ((_arg1 & 1) == 0){ _local2++; }; return (_local2); } bi_internal function divRemTo(_arg1:BigInteger, _arg2:BigInteger=null, _arg3:BigInteger=null):void{ var pm:BigInteger; var pt:BigInteger; var y:BigInteger; var ts:int; var ms:int; var nsh:int; var ys:int; var y0:int; var yt:Number; var d1:Number; var d2:Number; var e:Number; var i:int; var j:int; var t:BigInteger; var qd:int; var m = _arg1; var q = _arg2; var r = _arg3; pm = m.abs(); if (pm.t <= 0){ return; }; pt = abs(); if (pt.t < pm.t){ if (q != null){ q.fromInt(0); }; if (r != null){ copyTo(r); }; return; }; if (r == null){ r = nbi(); }; y = nbi(); ts = s; ms = m.s; nsh = (DB - nbits(pm.a[(pm.t - 1)])); if (nsh > 0){ pm.lShiftTo(nsh, y); pt.lShiftTo(nsh, r); } else { pm.copyTo(y); pt.copyTo(r); }; ys = y.t; y0 = y.a[(ys - 1)]; if (y0 == 0){ return; }; yt = ((y0 * (1 << F1)) + ((ys)>1) ? (y.a[(ys - 2)] >> F2) : 0); d1 = (FV / yt); d2 = ((1 << F1) / yt); e = (1 << F2); i = r.t; j = (i - ys); t = ((q)==null) ? nbi() : q; y.dlShiftTo(j, t); if (r.compareTo(t) >= 0){ var _local5 = r.t++; r.a[_local5] = 1; r.subTo(t, r); }; ONE.dlShiftTo(ys, t); t.subTo(y, y); while (y.t < ys) { y.(y.t++); //not popped }; while ((j = (j - 1)), (j - 1) >= 0) { i = (i - 1); qd = ((r.a[(i - 1)])==y0) ? DM : ((Number(r.a[i]) * d1) + ((Number(r.a[(i - 1)]) + e) * d2)); if ((r.a[i] = (r.a[i] + y.am(0, qd, r, j, 0, ys))) < qd){ y.dlShiftTo(j, t); r.subTo(t, r); while ((qd = (qd - 1)), r.a[i] < (qd - 1)) { r.subTo(t, r); }; }; }; if (q != null){ r.drShiftTo(ys, q); if (ts != ms){ ZERO.subTo(q, q); }; }; r.t = ys; r.clamp(); if (nsh > 0){ r.rShiftTo(nsh, r); }; if (ts < 0){ ZERO.subTo(r, r); }; } public function remainder(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); divRemTo(_arg1, null, _local2); return (_local2); } public function divide(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); divRemTo(_arg1, _local2, null); return (_local2); } public function divideAndRemainder(_arg1:BigInteger):Array{ var _local2:BigInteger; var _local3:BigInteger; _local2 = new BigInteger(); _local3 = new BigInteger(); divRemTo(_arg1, _local2, _local3); return ([_local2, _local3]); } public function valueOf():Number{ var _local1:Number; var _local2:Number; var _local3:uint; _local1 = 1; _local2 = 0; _local3 = 0; while (_local3 < t) { _local2 = (_local2 + (a[_local3] * _local1)); _local1 = (_local1 * DV); _local3++; }; return (_local2); } public function shiftLeft(_arg1:int):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); if (_arg1 < 0){ rShiftTo(-(_arg1), _local2); } else { lShiftTo(_arg1, _local2); }; return (_local2); } public function multiply(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); multiplyTo(_arg1, _local2); return (_local2); } bi_internal function am(_arg1:int, _arg2:int, _arg3:BigInteger, _arg4:int, _arg5:int, _arg6:int):int{ var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; _local7 = (_arg2 & 32767); _local8 = (_arg2 >> 15); while (--_arg6 >= 0) { _local9 = (a[_arg1] & 32767); var _temp1 = _arg1; _arg1 = (_arg1 + 1); _local10 = (a[_temp1] >> 15); _local11 = ((_local8 * _local9) + (_local10 * _local7)); _local9 = ((((_local7 * _local9) + ((_local11 & 32767) << 15)) + _arg3.a[_arg4]) + (_arg5 & 1073741823)); _arg5 = ((((_local9 >>> 30) + (_local11 >>> 15)) + (_local8 * _local10)) + (_arg5 >>> 30)); var _temp2 = _arg4; _arg4 = (_arg4 + 1); var _local12 = _temp2; _arg3.a[_local12] = (_local9 & 1073741823); }; return (_arg5); } bi_internal function drShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = _arg1; while (_local3 < t) { _arg2.a[(_local3 - _arg1)] = a[_local3]; _local3++; }; _arg2.t = Math.max((t - _arg1), 0); _arg2.s = s; } public function add(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); addTo(_arg1, _local2); return (_local2); } bi_internal function multiplyUpperTo(_arg1:BigInteger, _arg2:int, _arg3:BigInteger):void{ var _local4:int; _arg2--; _local4 = (_arg3.t = ((t + _arg1.t) - _arg2)); _arg3.s = 0; while (--_local4 >= 0) { _arg3.a[_local4] = 0; }; _local4 = Math.max((_arg2 - t), 0); while (_local4 < _arg1.t) { _arg3.a[((t + _local4) - _arg2)] = am((_arg2 - _local4), _arg1.a[_local4], _arg3, 0, 0, ((t + _local4) - _arg2)); _local4++; }; _arg3.clamp(); _arg3.drShiftTo(1, _arg3); } protected function nbi(){ return (new BigInteger()); } protected function millerRabin(_arg1:int):Boolean{ var _local2:BigInteger; var _local3:int; var _local4:BigInteger; var _local5:BigInteger; var _local6:int; var _local7:BigInteger; var _local8:int; _local2 = subtract(BigInteger.ONE); _local3 = _local2.getLowestSetBit(); if (_local3 <= 0){ return (false); }; _local4 = _local2.shiftRight(_local3); _arg1 = ((_arg1 + 1) >> 1); if (_arg1 > lowprimes.length){ _arg1 = lowprimes.length; }; _local5 = new BigInteger(); _local6 = 0; while (_local6 < _arg1) { _local5.fromInt(lowprimes[_local6]); _local7 = _local5.modPow(_local4, this); if (((!((_local7.compareTo(BigInteger.ONE) == 0))) && (!((_local7.compareTo(_local2) == 0))))){ _local8 = 1; while ((((_local8++ < _local3)) && (!((_local7.compareTo(_local2) == 0))))) { _local7 = _local7.modPowInt(2, this); if (_local7.compareTo(BigInteger.ONE) == 0){ return (false); }; }; if (_local7.compareTo(_local2) != 0){ return (false); }; }; _local6++; }; return (true); } bi_internal function dMultiply(_arg1:int):void{ a[t] = am(0, (_arg1 - 1), this, 0, 0, t); t++; clamp(); } private function op_andnot(_arg1:int, _arg2:int):int{ return ((_arg1 & ~(_arg2))); } bi_internal function clamp():void{ var _local1:int; _local1 = (s & DM); while ((((t > 0)) && ((a[(t - 1)] == _local1)))) { t--; }; } bi_internal function invDigit():int{ var _local1:int; var _local2:int; if (t < 1){ return (0); }; _local1 = a[0]; if ((_local1 & 1) == 0){ return (0); }; _local2 = (_local1 & 3); _local2 = ((_local2 * (2 - ((_local1 & 15) * _local2))) & 15); _local2 = ((_local2 * (2 - ((_local1 & 0xFF) * _local2))) & 0xFF); _local2 = ((_local2 * (2 - (((_local1 & 0xFFFF) * _local2) & 0xFFFF))) & 0xFFFF); _local2 = ((_local2 * (2 - ((_local1 * _local2) % DV))) % DV); return (((_local2)>0) ? (DV - _local2) : -(_local2)); } protected function changeBit(_arg1:int, _arg2:Function):BigInteger{ var _local3:BigInteger; _local3 = BigInteger.ONE.shiftLeft(_arg1); bitwiseTo(_local3, _arg2, _local3); return (_local3); } public function equals(_arg1:BigInteger):Boolean{ return ((compareTo(_arg1) == 0)); } public function compareTo(_arg1:BigInteger):int{ var _local2:int; var _local3:int; _local2 = (s - _arg1.s); if (_local2 != 0){ return (_local2); }; _local3 = t; _local2 = (_local3 - _arg1.t); if (_local2 != 0){ return (_local2); }; while (--_local3 >= 0) { _local2 = (a[_local3] - _arg1.a[_local3]); if (_local2 != 0){ return (_local2); }; }; return (0); } public function shiftRight(_arg1:int):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); if (_arg1 < 0){ lShiftTo(-(_arg1), _local2); } else { rShiftTo(_arg1, _local2); }; return (_local2); } bi_internal function multiplyTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:BigInteger; var _local4:BigInteger; var _local5:int; _local3 = abs(); _local4 = _arg1.abs(); _local5 = _local3.t; _arg2.t = (_local5 + _local4.t); while (--_local5 >= 0) { _arg2.a[_local5] = 0; }; _local5 = 0; while (_local5 < _local4.t) { _arg2.a[(_local5 + _local3.t)] = _local3.am(0, _local4.a[_local5], _arg2, _local5, 0, _local3.t); _local5++; }; _arg2.s = 0; _arg2.clamp(); if (s != _arg1.s){ ZERO.subTo(_arg2, _arg2); }; } public function bitCount():int{ var _local1:int; var _local2:int; var _local3:int; _local1 = 0; _local2 = (s & DM); _local3 = 0; while (_local3 < t) { _local1 = (_local1 + cbit((a[_local3] ^ _local2))); _local3++; }; return (_local1); } public function byteValue():int{ return (((t)==0) ? s : ((a[0] << 24) >> 24)); } private function cbit(_arg1:int):int{ var _local2:uint; _local2 = 0; while (_arg1 != 0) { _arg1 = (_arg1 & (_arg1 - 1)); _local2++; }; return (_local2); } bi_internal function rShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; _arg2.s = s; _local3 = (_arg1 / DB); if (_local3 >= t){ _arg2.t = 0; return; }; _local4 = (_arg1 % DB); _local5 = (DB - _local4); _local6 = ((1 << _local4) - 1); _arg2.a[0] = (a[_local3] >> _local4); _local7 = (_local3 + 1); while (_local7 < t) { _arg2.a[((_local7 - _local3) - 1)] = (_arg2.a[((_local7 - _local3) - 1)] | ((a[_local7] & _local6) << _local5)); _arg2.a[(_local7 - _local3)] = (a[_local7] >> _local4); _local7++; }; if (_local4 > 0){ _arg2.a[((t - _local3) - 1)] = (_arg2.a[((t - _local3) - 1)] | ((s & _local6) << _local5)); }; _arg2.t = (t - _local3); _arg2.clamp(); } public function modInverse(_arg1:BigInteger):BigInteger{ var _local2:Boolean; var _local3:BigInteger; var _local4:BigInteger; var _local5:BigInteger; var _local6:BigInteger; var _local7:BigInteger; var _local8:BigInteger; _local2 = _arg1.isEven(); if (((((isEven()) && (_local2))) || ((_arg1.sigNum() == 0)))){ return (BigInteger.ZERO); }; _local3 = _arg1.clone(); _local4 = clone(); _local5 = nbv(1); _local6 = nbv(0); _local7 = nbv(0); _local8 = nbv(1); while (_local3.sigNum() != 0) { while (_local3.isEven()) { _local3.rShiftTo(1, _local3); if (_local2){ if (((!(_local5.isEven())) || (!(_local6.isEven())))){ _local5.addTo(this, _local5); _local6.subTo(_arg1, _local6); }; _local5.rShiftTo(1, _local5); } else { if (!_local6.isEven()){ _local6.subTo(_arg1, _local6); }; }; _local6.rShiftTo(1, _local6); }; while (_local4.isEven()) { _local4.rShiftTo(1, _local4); if (_local2){ if (((!(_local7.isEven())) || (!(_local8.isEven())))){ _local7.addTo(this, _local7); _local8.subTo(_arg1, _local8); }; _local7.rShiftTo(1, _local7); } else { if (!_local8.isEven()){ _local8.subTo(_arg1, _local8); }; }; _local8.rShiftTo(1, _local8); }; if (_local3.compareTo(_local4) >= 0){ _local3.subTo(_local4, _local3); if (_local2){ _local5.subTo(_local7, _local5); }; _local6.subTo(_local8, _local6); } else { _local4.subTo(_local3, _local4); if (_local2){ _local7.subTo(_local5, _local7); }; _local8.subTo(_local6, _local8); }; }; if (_local4.compareTo(BigInteger.ONE) != 0){ return (BigInteger.ZERO); }; if (_local8.compareTo(_arg1) >= 0){ return (_local8.subtract(_arg1)); }; if (_local8.sigNum() < 0){ _local8.addTo(_arg1, _local8); } else { return (_local8); }; if (_local8.sigNum() < 0){ return (_local8.add(_arg1)); }; return (_local8); } bi_internal function fromArray(_arg1:ByteArray, _arg2:int):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; _local3 = _arg1.position; _local4 = (_local3 + _arg2); _local5 = 0; _local6 = 8; t = 0; s = 0; while (--_local4 >= _local3) { _local7 = ((_local4 < _arg1.length)) ? _arg1[_local4] : 0; if (_local5 == 0){ var _local8 = t++; a[_local8] = _local7; } else { if ((_local5 + _local6) > DB){ a[(t - 1)] = (a[(t - 1)] | ((_local7 & ((1 << (DB - _local5)) - 1)) << _local5)); _local8 = t++; a[_local8] = (_local7 >> (DB - _local5)); } else { a[(t - 1)] = (a[(t - 1)] | (_local7 << _local5)); }; }; _local5 = (_local5 + _local6); if (_local5 >= DB){ _local5 = (_local5 - DB); }; }; clamp(); _arg1.position = Math.min((_local3 + _arg2), _arg1.length); } bi_internal function copyTo(_arg1:BigInteger):void{ var _local2:int; _local2 = (t - 1); while (_local2 >= 0) { _arg1.a[_local2] = a[_local2]; _local2--; }; _arg1.t = t; _arg1.s = s; } public function intValue():int{ if (s < 0){ if (t == 1){ return ((a[0] - DV)); }; if (t == 0){ return (-1); }; } else { if (t == 1){ return (a[0]); }; if (t == 0){ return (0); }; }; return ((((a[1] & ((1 << (32 - DB)) - 1)) << DB) | a[0])); } public function min(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))<0) ? this : _arg1); } public function bitLength():int{ if (t <= 0){ return (0); }; return (((DB * (t - 1)) + nbits((a[(t - 1)] ^ (s & DM))))); } public function shortValue():int{ return (((t)==0) ? s : ((a[0] << 16) >> 16)); } public function and(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); bitwiseTo(_arg1, op_and, _local2); return (_local2); } protected function toRadix(_arg1:uint=10):String{ var _local2:int; var _local3:Number; var _local4:BigInteger; var _local5:BigInteger; var _local6:BigInteger; var _local7:String; if ((((((sigNum() == 0)) || ((_arg1 < 2)))) || ((_arg1 > 32)))){ return ("0"); }; _local2 = chunkSize(_arg1); _local3 = Math.pow(_arg1, _local2); _local4 = nbv(_local3); _local5 = nbi(); _local6 = nbi(); _local7 = ""; divRemTo(_local4, _local5, _local6); while (_local5.sigNum() > 0) { _local7 = ((_local3 + _local6.intValue()).toString(_arg1).substr(1) + _local7); _local5.divRemTo(_local4, _local5, _local6); }; return ((_local6.intValue().toString(_arg1) + _local7)); } public function not():BigInteger{ var _local1:BigInteger; var _local2:int; _local1 = new BigInteger(); _local2 = 0; while (_local2 < t) { _local1[_local2] = (DM & ~(a[_local2])); _local2++; }; _local1.t = t; _local1.s = ~(s); return (_local1); } bi_internal function subTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int; _local3 = 0; _local4 = 0; _local5 = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (a[_local3] - _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1); var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 - _arg1.s); while (_local3 < t) { _local4 = (_local4 + a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 - _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1); _local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 - _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 < -1){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = (DV + _local4); } else { if (_local4 > 0){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = _local4; }; }; _arg2.t = _local3; _arg2.clamp(); } public function clone():BigInteger{ var _local1:BigInteger; _local1 = new BigInteger(); this.copyTo(_local1); return (_local1); } public function pow(_arg1:int):BigInteger{ return (exp(_arg1, new NullReduction())); } public function flipBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_xor)); } public function xor(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); bitwiseTo(_arg1, op_xor, _local2); return (_local2); } public function or(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); bitwiseTo(_arg1, op_or, _local2); return (_local2); } public function max(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))>0) ? this : _arg1); } bi_internal function fromInt(_arg1:int):void{ t = 1; s = ((_arg1)<0) ? -1 : 0; if (_arg1 > 0){ a[0] = _arg1; } else { if (_arg1 < -1){ a[0] = (_arg1 + DV); } else { t = 0; }; }; } bi_internal function isEven():Boolean{ return ((((t)>0) ? (a[0] & 1) : s == 0)); } public function toString(_arg1:Number=16):String{ var _local2:int; var _local3:int; var _local4:int; var _local5:Boolean; var _local6:String; var _local7:int; var _local8:int; if (s < 0){ return (("-" + negate().toString(_arg1))); }; switch (_arg1){ case 2: _local2 = 1; break; case 4: _local2 = 2; break; case 8: _local2 = 3; break; case 16: _local2 = 4; break; case 32: _local2 = 5; break; }; _local3 = ((1 << _local2) - 1); _local4 = 0; _local5 = false; _local6 = ""; _local7 = t; _local8 = (DB - ((_local7 * DB) % _local2)); var _temp1 = _local7; _local7 = (_local7 - 1); if (_temp1 > 0){ if ((((_local8 < DB)) && (((a[_local7] >> _local8) > 0)))){ _local5 = true; _local6 = _local4.toString(36); }; while (_local7 >= 0) { if (_local8 < _local2){ _local4 = ((a[_local7] & ((1 << _local8) - 1)) << (_local2 - _local8)); var _temp2 = _local4; _local7 = (_local7 - 1); _local8 = (_local8 + (DB - _local2)); _local4 = (_temp2 | (a[_local7] >> _local8)); } else { _local8 = (_local8 - _local2); _local4 = ((a[_local7] >> _local8) & _local3); if (_local8 <= 0){ _local8 = (_local8 + DB); _local7--; }; }; if (_local4 > 0){ _local5 = true; }; if (_local5){ _local6 = (_local6 + _local4.toString(36)); }; }; }; return ((_local5) ? _local6 : "0"); } public function setBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_or)); } public function abs():BigInteger{ return (((s)<0) ? negate() : this); } bi_internal function nbits(_arg1:int):int{ var _local2:int; var _local3:int; _local2 = 1; _local3 = (_arg1 >>> 16); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 16); }; _local3 = (_arg1 >> 8); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 8); }; _local3 = (_arg1 >> 4); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 4); }; _local3 = (_arg1 >> 2); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 2); }; _local3 = (_arg1 >> 1); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 1); }; return (_local2); } public function sigNum():int{ if (s < 0){ return (-1); }; if ((((t <= 0)) || ((((t == 1)) && ((a[0] <= 0)))))){ return (0); }; return (1); } public function toByteArray():ByteArray{ var _local1:int; var _local2:ByteArray; var _local3:int; var _local4:int; var _local5:int; _local1 = t; _local2 = new ByteArray(); _local2[0] = s; _local3 = (DB - ((_local1 * DB) % 8)); _local5 = 0; var _temp1 = _local1; _local1 = (_local1 - 1); if (_temp1 > 0){ if ((((_local3 < DB)) && (!(((a[_local1] >> _local3) == ((s & DM) >> _local3)))))){ var _temp2 = _local5; _local5 = (_local5 + 1); var _local6 = _temp2; _local2[_local6] = (_local4 | (s << (DB - _local3))); }; while (_local1 >= 0) { if (_local3 < 8){ _local4 = ((a[_local1] & ((1 << _local3) - 1)) << (8 - _local3)); var _temp3 = _local4; _local1 = (_local1 - 1); _local3 = (_local3 + (DB - 8)); _local4 = (_temp3 | (a[_local1] >> _local3)); } else { _local3 = (_local3 - 8); _local4 = ((a[_local1] >> _local3) & 0xFF); if (_local3 <= 0){ _local3 = (_local3 + DB); _local1--; }; }; if ((_local4 & 128) != 0){ _local4 = (_local4 | -256); }; if ((((_local5 == 0)) && (!(((s & 128) == (_local4 & 128)))))){ _local5++; }; if ((((_local5 > 0)) || (!((_local4 == s))))){ var _temp4 = _local5; _local5 = (_local5 + 1); _local6 = _temp4; _local2[_local6] = _local4; }; }; }; return (_local2); } bi_internal function squareTo(_arg1:BigInteger):void{ var _local2:BigInteger; var _local3:int; var _local4:int; _local2 = abs(); _local3 = (_arg1.t = (2 * _local2.t)); while (--_local3 >= 0) { _arg1.a[_local3] = 0; }; _local3 = 0; while (_local3 < (_local2.t - 1)) { _local4 = _local2.am(_local3, _local2.a[_local3], _arg1, (2 * _local3), 0, 1); if ((_arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local2.t)] + _local2.am((_local3 + 1), (2 * _local2.a[_local3]), _arg1, ((2 * _local3) + 1), _local4, ((_local2.t - _local3) - 1)))) >= DV){ _arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local2.t)] - DV); _arg1.a[((_local3 + _local2.t) + 1)] = 1; }; _local3++; }; if (_arg1.t > 0){ _arg1.a[(_arg1.t - 1)] = (_arg1.a[(_arg1.t - 1)] + _local2.am(_local3, _local2.a[_local3], _arg1, (2 * _local3), 0, 1)); }; _arg1.s = 0; _arg1.clamp(); } private function op_and(_arg1:int, _arg2:int):int{ return ((_arg1 & _arg2)); } protected function fromRadix(_arg1:String, _arg2:int=10):void{ var _local3:int; var _local4:Number; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:int; var _local9:int; fromInt(0); _local3 = chunkSize(_arg2); _local4 = Math.pow(_arg2, _local3); _local5 = false; _local6 = 0; _local7 = 0; _local8 = 0; while (_local8 < _arg1.length) { _local9 = intAt(_arg1, _local8); if (_local9 < 0){ if ((((_arg1.charAt(_local8) == "-")) && ((sigNum() == 0)))){ _local5 = true; }; } else { _local7 = ((_arg2 * _local7) + _local9); ++_local6; if (_local6 >= _local3){ dMultiply(_local4); dAddOffset(_local7, 0); _local6 = 0; _local7 = 0; }; }; _local8++; }; if (_local6 > 0){ dMultiply(Math.pow(_arg2, _local6)); dAddOffset(_local7, 0); }; if (_local5){ BigInteger.ZERO.subTo(this, this); }; } bi_internal function dlShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = (t - 1); while (_local3 >= 0) { _arg2.a[(_local3 + _arg1)] = a[_local3]; _local3--; }; _local3 = (_arg1 - 1); while (_local3 >= 0) { _arg2.a[_local3] = 0; _local3--; }; _arg2.t = (t + _arg1); _arg2.s = s; } private function op_xor(_arg1:int, _arg2:int):int{ return ((_arg1 ^ _arg2)); } public static function nbv(_arg1:int):BigInteger{ var _local2:BigInteger; _local2 = new (BigInteger); _local2.fromInt(_arg1); return (_local2); } } }//package com.hurlant.math
Section 52
//ClassicReduction (com.hurlant.math.ClassicReduction) package com.hurlant.math { import com.hurlant.math.*; class ClassicReduction implements IReduction { private var m:BigInteger; function ClassicReduction(_arg1:BigInteger){ this.m = _arg1; } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function reduce(_arg1:BigInteger):void{ _arg1.divRemTo(m, null, _arg1); } public function convert(_arg1:BigInteger):BigInteger{ if ((((_arg1.s < 0)) || ((_arg1.compareTo(m) >= 0)))){ return (_arg1.mod(m)); }; return (_arg1); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } } }//package com.hurlant.math
Section 53
//IReduction (com.hurlant.math.IReduction) package com.hurlant.math { import com.hurlant.math.*; interface IReduction { function convert(_arg1:BigInteger):BigInteger; function revert(_arg1:BigInteger):BigInteger; function reduce(_arg1:BigInteger):void; function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void; function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void; } }//package com.hurlant.math
Section 54
//MontgomeryReduction (com.hurlant.math.MontgomeryReduction) package com.hurlant.math { import com.hurlant.math.*; class MontgomeryReduction implements IReduction { private var um:int; private var mp:int; private var mph:int; private var mpl:int; private var mt2:int; private var m:BigInteger; function MontgomeryReduction(_arg1:BigInteger){ this.m = _arg1; mp = _arg1.invDigit(); mpl = (mp & 32767); mph = (mp >> 15); um = ((1 << (BigInteger.DB - 15)) - 1); mt2 = (2 * _arg1.t); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } public function revert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; _local2 = new BigInteger(); _arg1.abs().dlShiftTo(m.t, _local2); _local2.divRemTo(m, null, _local2); if ((((_arg1.s < 0)) && ((_local2.compareTo(BigInteger.ZERO) > 0)))){ m.subTo(_local2, _local2); }; return (_local2); } public function reduce(_arg1:BigInteger):void{ var _local2:int; var _local3:int; var _local4:int; while (_arg1.t <= mt2) { var _local5 = _arg1.t++; _arg1.a[_local5] = 0; }; _local2 = 0; while (_local2 < m.t) { _local3 = (_arg1.a[_local2] & 32767); _local4 = (((_local3 * mpl) + ((((_local3 * mph) + ((_arg1.a[_local2] >> 15) * mpl)) & um) << 15)) & BigInteger.DM); _local3 = (_local2 + m.t); _arg1.a[_local3] = (_arg1.a[_local3] + m.am(0, _local4, _arg1, _local2, 0, m.t)); while (_arg1.a[_local3] >= BigInteger.DV) { _arg1.a[_local3] = (_arg1.a[_local3] - BigInteger.DV); _local5 = _arg1.a; ++_local3; var _local6 = _local3; var _local7 = (_local5[_local6] + 1); _local5[_local6] = _local7; }; _local2++; }; _arg1.clamp(); _arg1.drShiftTo(m.t, _arg1); if (_arg1.compareTo(m) >= 0){ _arg1.subTo(m, _arg1); }; } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } } }//package com.hurlant.math
Section 55
//NullReduction (com.hurlant.math.NullReduction) package com.hurlant.math { public class NullReduction implements IReduction { public function reduce(_arg1:BigInteger):void{ } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); } public function convert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); } } }//package com.hurlant.math
Section 56
//Base64 (com.hurlant.util.Base64) package com.hurlant.util { import flash.utils.*; public class Base64 { public static const version:String = "1.0.0"; private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; public function Base64(){ throw (new Error("Base64 class is static container only")); } public static function encode(_arg1:String):String{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.writeUTFBytes(_arg1); return (encodeByteArray(_local2)); } public static function encodeByteArray(_arg1:ByteArray):String{ var _local2:String; var _local3:Array; var _local4:Array; var _local5:uint; var _local6:uint; var _local7:uint; _local2 = ""; _local4 = new Array(4); _arg1.position = 0; while (_arg1.bytesAvailable > 0) { _local3 = new Array(); _local5 = 0; while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) { _local3[_local5] = _arg1.readUnsignedByte(); _local5++; }; _local4[0] = ((_local3[0] & 252) >> 2); _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4)); _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6)); _local4[3] = (_local3[2] & 63); _local6 = _local3.length; while (_local6 < 3) { _local4[(_local6 + 1)] = 64; _local6++; }; _local7 = 0; while (_local7 < _local4.length) { _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7])); _local7++; }; }; return (_local2); } public static function decode(_arg1:String):String{ var _local2:ByteArray; _local2 = decodeToByteArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function decodeToByteArray(_arg1:String):ByteArray{ var _local2:ByteArray; var _local3:Array; var _local4:Array; var _local5:uint; var _local6:uint; var _local7:uint; _local2 = new ByteArray(); _local3 = new Array(4); _local4 = new Array(3); _local5 = 0; while (_local5 < _arg1.length) { _local6 = 0; while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length)))) { _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local5 + _local6))); _local6++; }; _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4)); _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2)); _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]); _local7 = 0; while (_local7 < _local4.length) { if (_local3[(_local7 + 1)] == 64){ break; }; _local2.writeByte(_local4[_local7]); _local7++; }; _local5 = (_local5 + 4); }; _local2.position = 0; return (_local2); } } }//package com.hurlant.util
Section 57
//Hex (com.hurlant.util.Hex) package com.hurlant.util { import flash.utils.*; public class Hex { public static function fromString(_arg1:String, _arg2:Boolean=false):String{ var _local3:ByteArray; _local3 = new ByteArray(); _local3.writeUTFBytes(_arg1); return (fromArray(_local3, _arg2)); } public static function toString(_arg1:String):String{ var _local2:ByteArray; _local2 = toArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function toArray(_arg1:String):ByteArray{ var _local2:ByteArray; var _local3:uint; _arg1 = _arg1.replace(/\s|:/gm, ""); _local2 = new ByteArray(); if ((_arg1.length & (1 == 1))){ _arg1 = ("0" + _arg1); }; _local3 = 0; while (_local3 < _arg1.length) { _local2[(_local3 / 2)] = parseInt(_arg1.substr(_local3, 2), 16); _local3 = (_local3 + 2); }; return (_local2); } public static function fromArray(_arg1:ByteArray, _arg2:Boolean=false):String{ var _local3:String; var _local4:uint; _local3 = ""; _local4 = 0; while (_local4 < _arg1.length) { _local3 = (_local3 + ("0" + _arg1[_local4].toString(16)).substr(-2, 2)); if (_arg2){ if (_local4 < (_arg1.length - 1)){ _local3 = (_local3 + ":"); }; }; _local4++; }; return (_local3); } } }//package com.hurlant.util
Section 58
//Memory (com.hurlant.util.Memory) package com.hurlant.util { import flash.net.*; import flash.system.*; public class Memory { public static function gc():void{ try { new LocalConnection().connect("foo"); new LocalConnection().connect("foo"); } catch(e) { }; } public static function get used():uint{ return (System.totalMemory); } } }//package com.hurlant.util
Section 59
//APIConnector (com.newgrounds.components.APIConnector) package com.newgrounds.components { import flash.display.*; import flash.events.*; import com.newgrounds.*; import flash.utils.*; public class APIConnector extends MovieClip { public var errorDialog:MovieClip; public var background:MovieClip; public var viewLatestButton:SimpleButton; public var closeButton:SimpleButton; public var viewAuthorizedButton:SimpleButton; private var _initialized:Boolean; private var _movieId:String; private var _encryptionKey:String; private var _movieVersion:String; private var _showConnectingPopup:Boolean;// = true private var _useErrorPopup:Boolean;// = true private var _medalPopup:MedalPopup; private var _popDelay:Timer; public function APIConnector(){ this._popDelay = new Timer(3000, 1); super(); addFrameScript(0, this.frame1, 6, this.frame7, 7, this.frame8); if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; this.useErrorPopup = true; this.useMedalPopup = true; this._popDelay.addEventListener(TimerEvent.TIMER, this.errorTimerHandler); addEventListener(Event.ENTER_FRAME, this.enterFrameHandler); if (stage){ addEventListener(Event.RENDER, this.renderHandler); stage.invalidate(); } else { this.clear(); }; } public function get movieId():String{ return (this._movieId); } public function set movieId(_arg1:String):void{ this._movieId = _arg1; } public function get encryptionKey():String{ return (this._encryptionKey); } public function set encryptionKey(_arg1:String):void{ this._encryptionKey = _arg1; } public function get movieVersion():String{ return (this._movieVersion); } public function set movieVersion(_arg1:String):void{ this._movieVersion = _arg1; } public function get debugMode():Boolean{ return (API.debugMode); } public function set debugMode(_arg1:Boolean):void{ API.debugMode = true; } public function get useFakeSession():Boolean{ return (API.getFakeSession()); } public function set useFakeSession(_arg1:Boolean):void{ API.setFakeSession(true); } public function get useMedalPopup():Boolean{ return (!((this._medalPopup == null))); } public function set useMedalPopup(_arg1:Boolean):void{ if (((_arg1) && (!(this._medalPopup)))){ this._medalPopup = new MedalPopup(); addChild(this._medalPopup); } else { if (((!(_arg1)) && (this._medalPopup))){ removeChild(this._medalPopup); this._medalPopup = null; }; }; } public function get useErrorPopup():Boolean{ return (this._useErrorPopup); } public function set useErrorPopup(_arg1:Boolean):void{ this._useErrorPopup = _arg1; API.addEventListener(APIEvent.API_CONNECTED, this.movieConnectedHandler); if (this._useErrorPopup){ API.addEventListener(APIEvent.NEW_VERSION_AVAILABLE, this.newVersionAvailableHandler); API.addEventListener(APIEvent.HOST_BLOCKED, this.hostBlockedHandler); } else { API.removeEventListener(APIEvent.NEW_VERSION_AVAILABLE, this.newVersionAvailableHandler); API.removeEventListener(APIEvent.HOST_BLOCKED, this.hostBlockedHandler); }; } public function get showConnectingPopup():Boolean{ return (this._showConnectingPopup); } public function set showConnectingPopup(_arg1:Boolean):void{ this._showConnectingPopup = _arg1; if (((!(_arg1)) && ((((currentLabel == "connecting")) || ((currentLabel == "connected")))))){ this.clear(); }; } public function clear():void{ gotoAndStop("idle"); } public function connect():void{ API.setVersion(this._movieVersion); API.connect(root.loaderInfo, this._movieId, this._encryptionKey); visible = true; if (this.showConnectingPopup){ gotoAndStop("connecting"); }; } private function renderHandler(_arg1:Event):void{ removeEventListener(Event.RENDER, this.renderHandler); this.clear(); this.connect(); } private function movieConnectedHandler(_arg1:APIEvent):void{ if (_arg1.success){ if (((((((API.isPublishedHost()) && (API.hostIsCompatible()))) && (!(API.hasUserSession())))) && (!(API.debugMode)))){ gotoAndStop("no_login"); this._popDelay.start(); visible = true; } else { if (this.showConnectingPopup){ gotoAndStop("connected"); }; }; } else { gotoAndStop("no_connect"); this._popDelay.start(); visible = true; }; } private function newVersionAvailableHandler(_arg1:APIEvent):void{ gotoAndStop("new_version"); visible = true; this.centerOnStage(); } private function hostBlockedHandler(_arg1:APIEvent):void{ gotoAndStop("bad_host"); visible = true; this.centerOnStage(); } private function closeButtonClickHandler(_arg1:Event):void{ this.clear(); } private function officialVersionClickHandler(_arg1:Event):void{ API.loadOfficialURL(); } private function enterFrameHandler(_arg1:Event):void{ this.forceAlwaysOnTop(); } private function initButtons():void{ if (this.viewLatestButton){ this.viewLatestButton.addEventListener(MouseEvent.CLICK, this.officialVersionClickHandler); }; if (this.viewAuthorizedButton){ this.viewAuthorizedButton.addEventListener(MouseEvent.CLICK, this.officialVersionClickHandler); }; if (this.closeButton){ this.closeButton.addEventListener(MouseEvent.CLICK, this.closeButtonClickHandler); }; } private function forceAlwaysOnTop():void{ var myIndex:uint; var topIndex:uint; if (((parent) && (visible))){ try { myIndex = parent.getChildIndex(this); topIndex = (parent.numChildren - 1); if (myIndex != topIndex){ parent.setChildIndex(this, topIndex); }; } catch(e:Error) { }; }; } private function centerOnStage():void{ if (stage){ x = (stage.stageWidth / 2); y = (stage.stageHeight / 2); }; } private function errorTimerHandler(_arg1:TimerEvent):void{ if (this.errorDialog){ this.errorDialog.gotoAndPlay("closeme"); } else { this.clear(); }; } function frame1(){ stop(); } function frame7(){ this.initButtons(); } function frame8(){ this.initButtons(); } } }//package com.newgrounds.components
Section 60
//FlashAd (com.newgrounds.components.FlashAd) package com.newgrounds.components { import flash.display.*; import flash.events.*; import com.newgrounds.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class FlashAd extends Sprite { public var background:MovieClip; private var _showBackground:Boolean; private var _adURLLoader:URLLoader; private var _adRect:Sprite; private var _mask:Shape; private var _ad:Loader; private static const DEBUG_AD_URL:String = "http://www.ngads.com/adtest.php"; private static const REMOVED_FROM_STAGE:String = "removedFromStage"; private static var _adResetTime:uint = 0; private static var _adURL:URLRequest; public function FlashAd(_arg1:Boolean=true){ if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; Security.allowDomain("server.cpmstar.com"); this._adRect = new Sprite(); this._adRect.graphics.beginFill(0); this._adRect.graphics.moveTo(0, 0); this._adRect.graphics.lineTo(300, 0); this._adRect.graphics.lineTo(300, 250); this._adRect.graphics.lineTo(0, 250); this._adRect.graphics.lineTo(0, 0); this._adRect.graphics.endFill(); this._mask = new Shape(); this._mask.graphics.beginFill(0); this._mask.graphics.moveTo(0, 0); this._mask.graphics.lineTo(300, 0); this._mask.graphics.lineTo(300, 250); this._mask.graphics.lineTo(0, 250); this._mask.graphics.lineTo(0, 0); this._mask.graphics.endFill(); addChild(this._adRect); this._adRect.addChild(this._mask); this._adRect.visible = false; x = Math.round(x); y = Math.round(y); scaleX = 1; scaleY = 1; if (this.background){ if (this.background.ngLinkButton){ this.background.ngLinkButton.addEventListener(MouseEvent.CLICK, this.linkClickHandler); }; if (this.background.loadingClip){ this.background.loadingClip.visible = false; }; }; if (API.isFlashVersion(9, 0, 28)){ addEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage); }; if (API.adsApproved){ this.loadAdFeed(API.adFeedURL); } else { API.addEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false, 0, true); }; this.showBackground = _arg1; } public function get showBackground():Boolean{ return (this._showBackground); } public function set showBackground(_arg1:Boolean):void{ this._showBackground = _arg1; if (this.background){ this.background.visible = _arg1; this._adRect.mask = (_arg1) ? this.background.adMask : null; }; } public function removeAd():void{ removeEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; if (this._adURLLoader){ try { this._adURLLoader.close(); } catch(e:Error) { }; }; if (this._adRect){ this._adRect.visible = false; }; if (this._ad){ trace("[NewgroundsAPI] :: Ad removed"); try { this._ad.close(); } catch(e:Error) { }; try { Object(this._ad).unloadAndStop(true); } catch(e:Error) { _ad.unload(); }; if (this._ad.parent){ this._ad.parent.removeChild(this._ad); }; }; this._ad = null; } private function onAdsApproved(_arg1:APIEvent):void{ API.removeEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false); if (_arg1.success){ this.loadAdFeed(API.adFeedURL); } else { trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!"); }; } private function loadAdFeed(_arg1:String):void{ var adFeedURL = _arg1; this._adURLLoader = new URLLoader(); this._adURLLoader.addEventListener(Event.COMPLETE, this.onAdFeedLoaded); this._adURLLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError); this._adURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAdError); if (!adFeedURL){ trace("[Newgrounds API] :: Invalid feed URL!"); return; }; if (this.hasAdElapsed){ if (adFeedURL.indexOf("?") > -1){ _adURL = new URLRequest(((adFeedURL + "&random=") + Math.random())); } else { _adURL = new URLRequest(((adFeedURL + "?random=") + Math.random())); }; }; try { this._adURLLoader.load(_adURL); } catch(e:Error) { onAdError(null); }; if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } private function loadAd(_arg1:String):void{ var url = _arg1; if (this._ad){ this.removeAd(); }; this._ad = new Loader(); this._ad.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onAdLoaded); this._ad.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError); try { Object(this._ad.contentLoaderInfo).uncaughtErrorEvents.addEventListener("uncaughtError", function (_arg1:Event):void{ }); } catch(error:Error) { }; this._ad.load(new URLRequest(url), new LoaderContext(false, new ApplicationDomain(null))); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } private function onAdFeedLoaded(_arg1:Event):void{ var _local2:URLLoader = URLLoader(_arg1.target); if (((_local2.data) && (!((_local2.data == ""))))){ this.loadAd((_local2.data as String)); } else { dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad"))); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; }; } private function onAdFeedError(_arg1:Event):void{ trace("[NewgroundsAPI] :: Unable to load ad feed!"); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; } private function onAdError(_arg1:Event):void{ dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad"))); this.removeAd(); } private function onAdLoaded(_arg1:Event):void{ this._adRect.addChild(this._ad); this._ad.mask = this._mask; this._adRect.visible = true; if (this.background){ if (this._showBackground){ this._adRect.mask = this.background.adMask; }; if (this.background.loadingClip){ this.background.loadingClip.visible = false; }; }; trace("[NewgroundsAPI] :: Ad loaded!"); dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, true)); } private function onRemovedFromStage(_arg1:Event):void{ this.removeAd(); } private function get hasAdElapsed():Boolean{ if (getTimer() >= _adResetTime){ _adResetTime = (getTimer() + ((1000 * 60) * 5)); return (true); }; return (false); } private function linkClickHandler(_arg1:MouseEvent):void{ API.loadNewgrounds(); } } }//package com.newgrounds.components
Section 61
//MedalPopup (com.newgrounds.components.MedalPopup) package com.newgrounds.components { import flash.display.*; import flash.events.*; import com.newgrounds.*; import flash.utils.*; import flash.text.*; public class MedalPopup extends MovieClip { public var medalNameText:TextField; public var medalValueText:TextField; public var medalContainer:Sprite; private var _initialized:Boolean; private var _medal:Medal; private var _medalIcon:Bitmap; private var _medalQueue:Array; private var _popDelay:Timer; public function MedalPopup(){ this._medalQueue = []; this._popDelay = new Timer(3000, 1); super(); addFrameScript(0, this.frame1, 9, this.frame10, 18, this.frame19); if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; visible = false; addEventListener(Event.ENTER_FRAME, this.enterFrameHandler); stop(); API.addEventListener(APIEvent.MEDAL_UNLOCKED, this.onMedalUnlocked, false, 0, true); this._popDelay.addEventListener(TimerEvent.TIMER, this.timerHandler); } public function get popupTime():Number{ return ((this._popDelay.delay / 1000)); } public function set popupTime(_arg1:Number):void{ if (isNaN(_arg1)){ _arg1 = 3; }; this._popDelay.delay = (_arg1 * 1000); } private function enterFrameHandler(_arg1:Event):void{ var myIndex:uint; var topIndex:uint; var event = _arg1; if (((this._medalQueue.length) && (!(visible)))){ this._medal = this._medalQueue.pop(); this._popDelay.start(); gotoAndPlay("medal_show"); visible = true; }; if (((visible) && (parent))){ try { myIndex = parent.getChildIndex(this); topIndex = (parent.numChildren - 1); if (myIndex != topIndex){ parent.setChildIndex(this, topIndex); }; } catch(error:Error) { }; }; } private function onMedalUnlocked(_arg1:APIEvent):void{ if (((((_arg1.success) && (_arg1.data))) && ((_arg1.data is Medal)))){ this._medalQueue.push(Medal(_arg1.data)); }; } private function showMedalInfo():void{ if (!this._medal){ return; }; if (this.medalContainer){ this._medalIcon = this._medal.createIconBitmap(); this.medalContainer.addChild(this._medalIcon); }; if (this.medalNameText){ this.medalNameText.text = this._medal.name; }; if (this.medalValueText){ this.medalValueText.text = (this._medal.value.toString() + "pts"); }; this._popDelay.start(); stop(); } private function timerHandler(_arg1:TimerEvent):void{ if (((this._medalIcon) && (this._medalIcon.parent))){ this._medalIcon.parent.removeChild(this._medalIcon); this._medalIcon = null; }; gotoAndPlay("medal_hide"); this._popDelay.stop(); } function frame1(){ stop(); } function frame10(){ this.showMedalInfo(); stop(); } function frame19(){ stop(); visible = false; } } }//package com.newgrounds.components
Section 62
//API (com.newgrounds.API) package com.newgrounds { import flash.display.*; import flash.events.*; import com.newgrounds.components.*; import flash.utils.*; import com.adobe.serialization.json.*; import flash.net.*; import com.adobe.crypto.*; import com.adobe.images.*; import flash.system.*; public class API { public static const VERSION:String = "2.13"; private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php"; private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/"; private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/"; private static var do_echo:Boolean = false; private static var _debug:Boolean = true; private static var _connected:Boolean = false; private static var _isMetadataLoaded:Boolean = false; private static var _preloadComplete:Boolean = false; private static var _adsApproved:Boolean = false; private static var _saveGroupId:uint; private static var _saveFileId:uint; private static var _trackerId:uint; private static var _movieId:String; private static var _encryptionKey:String; private static var _url:String; private static var _host:String; private static var connected:Boolean; private static var version:String; private static var ad_url:String; private static var _fakeSession:Boolean = false; private static var publisher_id:uint; private static var session_id:String; private static var user_email:String; private static var user_name:String; private static var user_id:uint; private static var userpage_format:String; private static var _medals:Array; private static var timeoutTimer:Timer = new Timer(8000, 1); private static var _userpageFormat:String; private static var _scoreboards:Array = new Array(); private static var _bridge:Bridge; private static var save_file:SaveFile; private static var _imageFilePath:String; private static var _saveFilePath:String; private static var _saveGroups:Array = []; private static var root:DisplayObject; private static var _eventDispatcher:EventDispatcher = new EventDispatcher(); private static var score_page_counts:Object = new Object(); private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X"; private static var compressor:BaseN = new BaseN(compression_radix); public static var errors:Dictionary = APIError.init_codes(); private static var sharedObjects:Dictionary = new Dictionary(); private static var _preloadAssets:Array = []; public static var periods:Object = getPeriodAliases(); private static var period_aliases:Object = {t:{name:"Today", alias:"TODAY"}, p:{name:"Yesterday", alias:"YESTERDAY"}, w:{name:"This Week", alias:"THIS_WEEK"}, m:{name:"This Month", alias:"THIS_MONTH"}, y:{name:"This Year", alias:"THIS_YEAR"}, a:{name:"All-Time", alias:"ALL_TIME"}}; private static var secureCommand:String; public static function get adFeedURL():String{ return (ad_url); } public static function get preloadComplete():Boolean{ return (_preloadComplete); } private static function assertConnected():Boolean{ if (!_connected){ return (false); }; return (true); } public static function setVersion(_arg1:String):void{ if (((_arg1) && (!((_arg1 == ""))))){ version = _arg1; }; } public static function setUserEmail(_arg1:String):void{ user_email = _arg1; } public static function setFakeSession(_arg1:Boolean):void{ _fakeSession = _arg1; } public static function getFakeSession():Boolean{ return (_fakeSession); } public static function get debugMode():Boolean{ return (_debug); } public static function set debugMode(_arg1:Boolean):void{ _debug = _arg1; } public static function getTrackerID():uint{ return (_trackerId); } public static function getUserID():uint{ return (user_id); } public static function getUserName():String{ return (user_name); } public static function isConnected():Boolean{ return (_connected); } public static function getID():uint{ return (_trackerId); } public static function getOfficialURL():String{ var _local1:String = ((((((GATEWAY_URL + "?tracker_id=") + _movieId) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random()); if (debugMode){ _local1 = (_local1 + "&debug=1"); }; return (_local1); } public static function get adsApproved():Boolean{ return (_adsApproved); } public static function hasUserSession():Boolean{ return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0))))); } public static function isNewgrounds():Boolean{ return ((((publisher_id == 1)) || ((getHost().toLowerCase().indexOf("ungrounded.net") > -1)))); } public static function hostIsCompatible():Boolean{ return (!((publisher_id == 0))); } public static function hasUserEmail():Boolean{ return (((!((user_email == null))) && (!((user_email == ""))))); } public static function connectionTimeOut(_arg1:Event=null):void{ dispatchEvent(new APIEvent(APIEvent.API_CONNECTED, false, new APIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out."))); } public static function connect(_arg1:LoaderInfo, _arg2:String, _arg3:String=null):void{ var loaderInfo = _arg1; var m_id = _arg2; var encrypt_key = _arg3; if (!loaderInfo){ fatalError("Null loaderInfo paremeter passed in to connectMovie!", ""); return; }; try { if (loaderInfo.loader){ loaderInfo = loaderInfo.loader.loaderInfo; }; } catch(error:Error) { }; _url = loaderInfo.url; _host = _url; if ((((_host.indexOf("http://") > -1)) || ((_host.indexOf("https://") > -1)))){ _host = _host.split("/")[2].toLowerCase(); } else { _host = "localhost"; }; var flashVars:Object = loaderInfo.parameters; if (isPublishedHost()){ debugMode = false; }; if (((!(debugMode)) && (flashVars))){ if (flashVars.NewgroundsAPI_UserName){ user_name = flashVars.NewgroundsAPI_UserName; }; if (flashVars.NewgroundsAPI_UserID){ user_id = flashVars.NewgroundsAPI_UserID; }; if (flashVars.NewgroundsAPI_PublisherID){ publisher_id = flashVars.NewgroundsAPI_PublisherID; } else { publisher_id = 1; }; if (flashVars.NewgroundsAPI_UserpageFormat){ _userpageFormat = flashVars.NewgroundsAPI_UserpageFormat; }; if (flashVars.NewgroundsAPI_SessionID){ session_id = flashVars.NewgroundsAPI_SessionID; }; if (flashVars.NewgroundsAPI_SaveGroupID){ _saveGroupId = flashVars.NewgroundsAPI_SaveGroupID; }; if (flashVars.NewgroundsAPI_SaveFileID){ _saveFileId = flashVars.NewgroundsAPI_SaveFileID; }; if (flashVars.NewgroundsAPI_SandboxID){ _bridge = new Bridge(flashVars.NewgroundsAPI_SandboxID); }; } else { publisher_id = 1; if (_fakeSession){ session_id = "D3bu64p1U53R"; user_id = 10; user_name = "API-Debugger"; }; }; if (connected){ fatalError("NewgroundsAPI.connect() - connection already in progress", "connect"); return; }; timeoutTimer.start(); if (!m_id){ fatalError("NewgroundsAPI.connectMovie() - missing required movieId parameter", "connectMovie"); }; _movieId = String(m_id); _trackerId = uint(_movieId.substring(0, _movieId.indexOf(":"))); _encryptionKey = encrypt_key; connected = true; sendCommand("connectMovie", {host:getHost(), movie_version:version}); } private static function getHost():String{ return (_host); } public static function isPublishedHost():Boolean{ return (((!((getHost() == "localhost"))) && ((getHost().indexOf("file://") == -1)))); } public static function loadUserPage(_arg1:uint=0, _arg2:String=null):Boolean{ var _local3:String; if ((((_arg1 == 0)) && ((_arg2 == null)))){ if (hasUserSession()){ _arg1 = user_id; _arg2 = user_name; } else { return (false); }; }; if (publisher_id == 1){ _local3 = (("http://" + _arg2.toLowerCase()) + ".newgrounds.com"); navigateToURL(new URLRequest(_local3), "_blank"); return (true); }; if (userpage_format){ _local3 = userpage_format; _local3 = _local3.split(":user_id:").join(_arg1.toString()); _local3 = _local3.split(":user_name:").join(escape(_arg2)); navigateToURL(new URLRequest(_local3), "_blank"); return (true); }; return (false); } public static function loadNewgrounds():void{ sendCommand("loadNewgrounds", {host:getHost()}, true); } public static function loadOfficialURL():void{ navigateToURL(new URLRequest(getOfficialURL())); } public static function loadMySite():void{ sendCommand("loadMySite", {host:getHost()}, true); } public static function loadCustomLink(_arg1:String):void{ sendCommand("loadCustomLink", {host:getHost(), link:_arg1}, true); } public static function logCustomEvent(_arg1:String):void{ sendCommand("logCustomEvent", {host:getHost(), event:_arg1}); } public static function getScoreBoard(_arg1:String):ScoreBoard{ var _local2:ScoreBoard; for each (_local2 in _scoreboards) { if (_local2.name == _arg1){ return (_local2); }; }; return (null); } public static function getScoreBoardById(_arg1:uint):ScoreBoard{ var _local2:ScoreBoard; for each (_local2 in _scoreboards) { if (_local2.id == _arg1){ return (_local2); }; }; return (null); } public static function postScore(_arg1:String, _arg2:uint, _arg3:String=""):void{ if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)")); return; }; if (_arg3 == null){ _arg3 = ""; }; sendSecureCommand("postScore", {user_name:user_name, board:_arg1, value:_arg2, publisher_id:publisher_id, tag:_arg3}); } public static function loadScores(_arg1:String, _arg2:String=null, _arg3:String=null):void{ var _local4 = "loadScores"; var _local5:ScoreBoard = getScoreBoard(_arg1); if (((!(_local5)) || (!(_local5.id)))){ sendError({command_id:getCommandID(_local4)}, new APIError("MISSING_PARAM", "missing required ScoreBoard instance")); return; }; var _local6:Object = {}; _local6.publisher_id = publisher_id; if (_arg2){ _local6.period = _arg2; } else { _local6.period = _local5.period; }; _local6.board = _local5.id; _local6.num_results = _local5.num_results; _local6.page = _local5.page; if (((!(_arg3)) || ((_arg3 == "")))){ _local6.tag = _local5.tag; } else { _local6.tag = _arg3; }; sendCommand(_local4, _local6); } public static function loadScoresInRange(_arg1:String, _arg2:String="All-Time", _arg3:uint=1, _arg4:uint=10):void{ if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)")); return; }; var _local5:ScoreBoard = getScoreBoard(_arg1); if (_local5){ _local5.loadScoresInRange(_arg2, _arg3, _arg4); } else { sendWarning((("loadScoresInRange: Scoreboard " + _arg1) + " could not be found.")); }; } private static function populateMedals(_arg1:Array):void{ var _local2:uint; var _local3:Object; if (_medals === null){ _medals = new Array(); _local2 = 0; while (_local2 < _arg1.length) { _local3 = _arg1[_local2]; _medals.push(Medal.createFromObject(_local3)); _local2++; }; }; sendMessage("Medals loaded!"); } private static function populateSaveGroups(_arg1:Array):void{ var _local3:SaveGroup; _saveGroups = []; var _local2:uint; while (_local2 < _arg1.length) { _local3 = SaveGroup.createFromObject(_arg1[_local2]); _saveGroups.push(_local3); _local2++; }; } private static function populateScoreBoards(_arg1:Array):void{ _scoreboards = []; var _local2:uint; while (_local2 < _arg1.length) { _scoreboards.push(new ScoreBoard(_arg1[_local2].id, _arg1[_local2].name, "")); _local2++; }; } public static function getMedals():Array{ return (_medals); } public static function getMedalById(_arg1:uint):Medal{ var _local2:Medal; for each (_local2 in _medals) { if (_local2.id == _arg1){ return (_local2); }; }; return (null); } public static function getMedal(_arg1:String):Medal{ var _local2:Medal; for each (_local2 in _medals) { if (_local2.name == _arg1){ return (_local2); }; }; return (null); } public static function unlockMedal(_arg1:String):void{ var _local3:Object; var _local4:Object; if (((!(_arg1)) || ((_arg1 == "")))){ sendError({command_id:getCommandID("unlockMedal")}, new APIError("MISSING_PARAM", "missing required medal name")); return; }; var _local2:Medal = getMedal(_arg1); if (!_local2){ sendMessage(("No medal with name: " + _arg1)); return; }; if (((hasUserSession()) || (debugMode))){ sendMessage((("Attempting to unlock '" + _local2.name) + "'")); if (_local2.unlocked){ sendWarning((("Medal '" + _local2.name) + "' is already unlocked!")); return; }; _local3 = new Object(); _local3.medal_id = _local2.id; sendSecureCommand("unlockMedal", _local3); } else { sendMessage(("Locally unlocking " + _local2.name)); if (_local2.unlocked){ sendWarning((("Medal '" + _local2.name) + "' is already unlocked!")); return; }; _local2.unlocked = true; _local4 = loadLocal("medals_unlocked"); if (!_local4){ _local4 = new Object(); }; _local4[_local2.id.toString()] = true; saveLocal("medals_unlocked", _local4); callListener(APIEvent.UNLOCK_MEDAL, true, {medal:_local2}); }; } public static function loadMedals():void{ if (_medals){ dispatchEvent(new APIEvent(APIEvent.MEDALS_LOADED, true, {medals:getMedals()})); return; }; var _local1:Object = new Object(); if (hasUserSession()){ _local1.publisher_id = publisher_id; _local1.user_id = user_id; }; sendCommand("getMedals", _local1); } public static function saveLocal(_arg1:String, _arg2:Object, _arg3:uint=0):void{ var sharedObj:SharedObject; var save_id = _arg1; var save_data = _arg2; var size_allocation = _arg3; try { if (!sharedObjects[save_id]){ sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id)); }; sharedObj = sharedObjects[save_id]; sharedObj.data[save_id] = encodeData(save_data); sharedObj.flush(); } catch(e:Error) { sendWarning(("saveLocal ERROR: " + e)); }; } public static function loadLocal(_arg1:String):Object{ var sharedObj:SharedObject; var save_id = _arg1; try { if (!sharedObjects[save_id]){ sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id)); }; sharedObj = sharedObjects[save_id]; if (((((sharedObj) && (sharedObj.data))) && (sharedObj.data[save_id]))){ return (decodeData(sharedObj.data[save_id])); } else { return (null); }; } catch(e:Error) { sendWarning(("loadLocal ERROR: " + e)); }; return (null); } public static function encodeData(_arg1:Object):String{ return (compressHex(RC4.encrypt(JSON.encode(_arg1), _encryptionKey))); } public static function decodeData(_arg1:String){ return (JSON.decode(RC4.decrypt(uncompressHex(_arg1), _encryptionKey))); } private static function compressHex(_arg1:String):String{ var _local2:uint = (_arg1.length % 6); var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local3 = (_local3 + compressor.encode(uint(("0x" + _arg1.substr(_local4, 6))), 4)); _local4 = (_local4 + 6); }; return ((_local2.toString() + _local3)); } private static function uncompressHex(_arg1:String):String{ var _local4:uint; var _local6:String; var _local7:uint; var _local8:String; var _local2:uint = uint(_arg1.charAt(0)); var _local3 = ""; var _local5:uint = 1; while (_local5 < _arg1.length) { _local6 = _arg1.substr(_local5, 4); _local7 = uint(compressor.decode(_local6)); _local8 = _local7.toString(16); if ((_local5 + 4) < _arg1.length){ _local4 = 6; } else { _local4 = _local2; }; while (_local8.length < _local4) { _local8 = ("0" + _local8); }; _local3 = (_local3 + _local8); _local5 = (_local5 + 4); }; return (_local3); } public static function getSaveGroupById(_arg1:uint):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var _local2:uint; while (_local2 < _saveGroups.length) { if (_saveGroups[_local2].id == _arg1){ return (_saveGroups[_local2]); }; _local2++; }; return (null); } public static function getSaveGroup(_arg1:String):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var _local2:uint; while (_local2 < _saveGroups.length) { if (_saveGroups[_local2].name == _arg1){ return (_saveGroups[_local2]); }; _local2++; }; return (null); } public static function getCurrentSaveFile(){ return (save_file); } public static function setCurrentSaveFile(_arg1:SaveFile){ save_file = _arg1; } public static function newSaveQuery(_arg1:String):SaveGroupQuery{ var _local2:SaveGroup = getSaveGroup(_arg1); if (_local2){ return (_local2.newQuery()); }; return (null); } public static function executeSaveQuery(_arg1:SaveGroupQuery):void{ sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.groupId, query:JSON.encode(_arg1.toObject())}, false, null, _arg1); } public static function lookupSaveFiles(_arg1:SaveGroup):void{ var _local2:SaveGroupQuery = _arg1.getQuery(false); sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.id, query:_local2.toObject()}, false, null, _local2); } public static function checkFilePrivledges(_arg1:SaveFile):void{ sendCommand("checkFilePrivs", {group:_arg1.groupId, filename:_arg1.name, user_id:(user_id) ? user_id : 0, publisher_id:publisher_id}); } public static function newSaveFile(_arg1:String):SaveFile{ var _local2:SaveGroup = getSaveGroup(_arg1); if (_local2){ return (new SaveFile(_local2)); }; sendError({command_id:"newSaveFile"}, new APIError("INVALID_SAVE_GROUP", (("'" + _local2) + "' is not a valid save group."))); return (null); } public static function saveFile(_arg1:SaveFile, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local4:Object = _arg1.toObject(); _local4.user_name = user_name; if (_arg1.id){ _local4.save_id = _arg1.id; }; _local4.overwrite = (_arg2) ? 1 : 0; if (_arg3){ _local4.draft = 1; }; var _local5:ByteArray = new ByteArray(); if ((_arg1.contents is ByteArray)){ _local5.writeByte(0); _local5.writeBytes(_arg1.contents); } else { _local5.writeByte(1); _local5.writeObject(_arg1.contents); }; _local5.compress(); var _local6:Object = new Object(); _local6.file = _local5; if (_arg1.thumbnail){ _local6.thumbnail = PNGEncoder.encode(_arg1.thumbnail); }; save_file = _arg1; sendSecureCommand("saveFile", _local4, null, _local6, _arg1); } public static function rateSaveFile(_arg1:SaveFile, _arg2:SaveRating, _arg3:Number):void{ sendSecureCommand("rateSaveFile", {group:_arg1.groupId, save_id:_arg1.id, rating_id:_arg2.id, vote:_arg3, user_id:user_id}, null, null, _arg1); } public static function loadSaveFile(_arg1:Number, _arg2:Boolean=true){ var _local3:Object = {publisher_id:publisher_id, save_id:_arg1, get_contents:_arg2}; save_file = null; sendCommand("loadSaveFile", _local3); } public static function loadFilesByDate(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{ var _local7:*; var _local5:SaveGroup = getSaveGroup(_arg1); if (!_local5){ _local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByDate"}, _local7); return; }; var _local6:SaveGroupQuery = _local5.newQuery(); if (_arg3){ _local6.addKeyCondition(_arg3, "=", _arg4); }; _local6.sortOn(SaveGroupQuery.CREATED_ON, _arg2); _local6.execute(); } public static function loadFilesByViews(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{ var _local7:*; var _local5:SaveGroup = getSaveGroup(_arg1); if (!_local5){ _local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByViews"}, _local7); return; }; var _local6:SaveGroupQuery = _local5.newQuery(); if (_arg3){ _local6.addKeyCondition(_arg3, "=", _arg4); }; _local6.sortOn(SaveGroupQuery.TOTAL_VIEWS, _arg2); _local6.execute(); } public static function loadFilesByRating(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:String=null, _arg5=null):void{ var _local8:*; var _local6:SaveGroup = getSaveGroup(_arg1); if (!_local6){ _local8 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name."); sendError({command_id:"loadFilesByDate"}, _local8); return; }; var _local7:SaveGroupQuery = _local6.newQuery(); if (_arg4){ _local7.addKeyCondition(_arg4, "=", _arg5); }; _local7.sortOnRating(_arg2, _arg3); _local7.execute(); } public static function onRemoteAuthentication(_arg1:String){ var _local2:Object = JSON.decode(RC4.decrypt(_arg1, _encryptionKey)); user_id = _local2.NewgroundsAPI_UserID; user_name = _local2.NewgroundsAPI_UserName; session_id = _local2.NewgroundsAPI_SessionID; publisher_id = _local2.NewgroundsAPI_PublisherID; } private static function doEvent(_arg1:Object):void{ var _local2:String; var _local3:Object; var _local4:String; var _local5:Boolean; var _local6:ScoreBoard; var _local7:Array; var _local8:*; var _local9:String; var _local10:Medal; var _local11:SaveGroup; var _local12:Object; var _local13:Object; var _local14:Object; var _local15:SaveFile; var _local16:uint; var _local17:Object; var _local18:uint; var _local19:APIError; var _local20:Object; switch (getCommandName(_arg1.command_id)){ case "connectMovie": timeoutTimer.stop(); if (_arg1.success){ sendMessage("You have successfully connected to the Newgrounds API Gateway"); sendMessage((("Movie identified as \"" + _arg1.movie_name) + "\"")); callListener(APIEvent.API_CONNECTED, _arg1.success, {title:_arg1.movie_name}); } else { callListener(APIEvent.API_CONNECTED, _arg1.success, {}); return; }; _local5 = false; if (_arg1.ad_status === -1){ _local2 = "This movie was not approved to run Flash Ads."; sendWarning(_local2); sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines")); if (!_arg1.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2)); } else { _local5 = true; }; } else { if (_arg1.ad_status === 0){ _local2 = "Flash Ads are currently awaiting approval."; sendNotice(_local2); if (!_arg1.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2)); } else { _local5 = true; }; }; }; if (_arg1.ad_url){ ad_url = unescape(_arg1.ad_url); if (!_local5){ sendMessage("This movie has been approved to run Flash Ads!"); }; _adsApproved = true; callListener(APIEvent.ADS_APPROVED, true); }; if (_arg1.deny_host){ _local2 = (getHost() + " does not have permission to run this movie!"); sendWarning(_local2); sendWarning(("\tUpdate your API configuration to unblock " + getHost())); callListener(APIEvent.HOST_BLOCKED, true, {real_url:unescape(_arg1.movie_url), url:getOfficialURL()}); }; if (_arg1.movie_version){ sendWarning("According to your API Configuration, this version is out of date."); if (version){ sendWarning(("\tThe this movie is version " + version)); }; sendWarning(("\tThe most current version is " + _arg1.movie_version)); callListener(APIEvent.NEW_VERSION_AVAILABLE, true, {version:_arg1.movie_version, real_url:unescape(_arg1.movie_url), url:getOfficialURL()}); }; if (_arg1.request_portal_url){ sendCommand("setPortalID", {portal_url:_url}); }; sendCommand("preloadSettings", {publisher_id:publisher_id, user_id:user_id}); break; case "preloadSettings": if (_arg1.medals){ populateMedals(_arg1.medals); if (((!(hasUserSession())) && (!(debugMode)))){ echo("Checking for SharedObject Medals..."); _local8 = loadLocal("medals_unlocked"); if (_local8){ for (_local9 in _local8) { if (_local8[_local9]){ _local10 = getMedalById(uint(_local9)); echo(("Now unlocking " + _local10.name)); _local10.unlocked = true; }; }; }; }; }; if (_arg1.save_groups){ populateSaveGroups(_arg1.save_groups); }; if (_arg1.save_file_path){ _saveFilePath = (_arg1.save_file_path + "/"); }; if (_arg1.image_file_path){ _imageFilePath = (_arg1.image_file_path + "/"); }; if (_arg1.score_boards){ populateScoreBoards(_arg1.score_boards); }; sendMessage("Metadata loaded!"); callListener(APIEvent.METADATA_LOADED, _arg1.success); if (((_saveFileId) && (_saveGroupId))){ _local11 = getSaveGroupById(_saveGroupId); if (_local11){ callListener(APIEvent.FILE_REQUESTED, true, {save_id:_saveFileId, group:_local11}); }; }; _preloadComplete = true; break; case "logCustomEvent": if (_arg1.success){ sendMessage((("Event '" + _arg1.event) + "' was logged.")); }; callListener(APIEvent.EVENT_LOGGED, _arg1.success, {event:_arg1.event}); break; case "postScore": if (_arg1.success){ _local4 = "User"; if (user_email){ _local4 = user_email; } else { if (user_name){ _local4 = user_name; }; }; _local6 = getScoreBoardById(_arg1.board); if (_local6){ sendMessage((((((_local4 + " posted ") + _arg1.value) + " to '") + _local6.name) + "'")); }; if (_arg1.best_scores){ _local12 = {today:_arg1.best_scores.D, yesterday:_arg1.best_scores.P, week:_arg1.best_scores.W, year:_arg1.best_scores.Y, all_time:_arg1.best_scores.A}; } else { _local12 = {}; }; if (_arg1.best_ranks){ _local13 = {today:_arg1.best_ranks.D, yesterday:_arg1.best_ranks.P, week:_arg1.best_ranks.W, year:_arg1.best_ranks.Y, all_time:_arg1.best_ranks.A}; } else { _local13 = {}; }; if (_arg1.num_scores){ _local14 = {today:_arg1.num_scores.D, yesterday:_arg1.num_scores.P, week:_arg1.num_scores.W, year:_arg1.num_scores.Y, all_time:_arg1.num_scores.A}; } else { _local14 = {}; }; _local3 = {score:_arg1.score, value:_arg1.value, username:_local4, best_scores:_local12, best_ranks:_local13, num_scores:_local14}; }; callListener(APIEvent.SCORE_POSTED, _arg1.success, _local3); break; case "loadScores": _local3 = new Object(); _local6 = getScoreBoardById(_arg1.board); if (_local6){ _local6.setScores(_arg1.scores, _arg1.period, _arg1.page, _arg1.num_results, _arg1.num_scores); }; callListener(APIEvent.SCORES_LOADED, _arg1.success, {board:_local6}); break; case "unlockMedal": if (_medals){ _local10 = getMedal(_arg1.medal_name); if (_local10.unlocked){ return; }; _local10.unlocked = true; callListener(APIEvent.MEDAL_UNLOCKED, _arg1.success, {medal_id:_local10.id, medal:_local10}); }; break; case "getMedals": if (_arg1.success){ populateMedals(_arg1.medals); }; callListener(APIEvent.MEDALS_LOADED, _arg1.success, _local3); break; case "loadSaveFile": if (_arg1.success){ _local11 = getSaveGroupById(_arg1.group_id); _local15 = new SaveFile(_local11); _local15.id = _arg1.file.save_id; _local15.name = _arg1.file.filename; _local15.fileUrl = (_saveFilePath + _arg1.file.file); _local15.thumbnailUrl = (_imageFilePath + _arg1.file.thumb); _local15.authorName = _arg1.file.user_name; _local15.authorId = _arg1.file.user_id; _local15.setStatus(_arg1.file.status); _local15.description = _arg1.file.description; _local15.setFileSize(_arg1.file.file_size); if (((_arg1.file.keys) && (_arg1.file.keys.length))){ _local16 = 0; while (_local16 < _arg1.file.keys.length) { _local15.setKey(_arg1.file.keys[_local16].id, _arg1.file.keys[_local16].value); _local16++; }; }; if (((_arg1.file.ratings) && (_arg1.file.ratings.length))){ _local16 = 0; while (_local16 < _arg1.file.ratings.length) { _local15.setRating(_arg1.file.ratings[_local16].id, _arg1.file.ratings[_local16].votes, _arg1.file.ratings[_local16].score); _local16++; }; }; if (_arg1.get_contents){ _local15.loadContents(); }; }; save_file = _local15; callListener(APIEvent.FILE_INITIALIZED, _arg1.success, {save_id:_local15.id, file:_local15}); break; case "lookupSaveFiles": _local7 = []; if (((_arg1.success) && (_arg1.files))){ _local16 = 0; while (_local16 < _arg1.files.length) { _local17 = _arg1.files[_local16]; _local15 = new SaveFile(getSaveGroupById(_arg1.group_id)); _local15.name = _local17.filename; _local15.id = _local17.save_id; _local15.description = _local17.description; _local15.thumbnailUrl = (_imageFilePath + _local17.thumb); _local15.fileUrl = (_saveFilePath + _local17.file); _local15.authorName = _local17.user_name; _local15.authorId = _local17.user_id; _local15.setStatus(_local17.status); _local15.setFileSize(_local17.file_size); if (((_local17.keys) && (_local17.keys.length))){ _local18 = 0; while (_local18 < _local17.keys.length) { _local15.setKey(_local17.keys[_local18].id, _local17.keys[_local18].value); _local18++; }; }; if (((_local17.ratings) && (_local17.ratings.length))){ _local18 = 0; while (_local18 < _local17.ratings.length) { _local15.setRating(_local17.ratings[_local18].id, _local17.ratings[_local18].votes, _local17.ratings[_local18].score); _local18++; }; }; _local7.push(_local15); _local16++; }; }; _arg1.owner.setResults(_local7); _arg1.owner.dispatchEvent(new APIEvent(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner})); callListener(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner}); break; case "rateSaveFile": _local15 = _arg1.owner; _arg1.success = ((_arg1.success) && (!(_arg1.already_voted))); if (_arg1.success){ _local15.setRating(_arg1.rating_id, _arg1.votes, _arg1.score); }; _arg1.file = _local15; if (_arg1.already_voted){ _local19 = new APIError("PERMISSION_DENIED", "You have already voted on this item today"); _local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {error:_local19, file:_local15, save_id:_local15.id})); callListener(APIEvent.VOTE_COMPLETE, _arg1.success, _arg1); } else { _local20 = _local15.getRating(_arg1.rating_id); _local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id})); API.callListener(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id}); }; break; case "saveFile": _local3 = {}; if (_arg1.success){ _local3 = {save_id:_arg1.save_id, filename:_arg1.filename, file_url:_arg1.file_url, thumbnail:_arg1.thumbnail, icon:_arg1.icon}; SaveFile(_arg1.owner).fileSaved(_local3); }; _arg1.owner.dispatchEvent(new APIEvent(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file})); callListener(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file}); save_file = null; break; case "checkFilePrivs": _local3 = {filename:_arg1.filename, folder:_arg1.folder, can_read:_arg1.can_read, can_write:_arg1.can_write}; callListener(APIEvent.FILE_PRIVS_LOADED, _arg1.success, _local3); break; }; } public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:uint=0, _arg5:Boolean=false):void{ _eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public static function hasEventListener(_arg1:String):Boolean{ return (_eventDispatcher.hasEventListener(_arg1)); } public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventDispatcher.removeEventListener(_arg1, _arg2, _arg3); } private static function dispatchEvent(_arg1:Event):void{ _eventDispatcher.dispatchEvent(_arg1); echo(("Fired Event: " + _arg1.type)); } static function callListener(_arg1:String, _arg2:Boolean=true, _arg3=undefined):void{ dispatchEvent(new APIEvent(_arg1, _arg2, _arg3)); if (_bridge){ _bridge.sendEvent(_arg1, {success:_arg2, data:_arg3}); }; } private static function getCommandName(_arg1:String):String{ return (_arg1); } private static function getCommandID(_arg1:String):String{ return (_arg1); } private static function getPeriodAliases():Object{ var _local2:String; var _local1:Object = new Object(); for (_local2 in period_aliases) { _local1[period_aliases[_local2].alias] = _local2; }; return (_local1); } public static function getPeriodName(_arg1:String):String{ var _local2:String; for (_local2 in period_aliases) { if (_local2 == _arg1){ return (period_aliases[_local2].name); }; }; return (null); } public static function getPeriodAlias(_arg1:String):String{ var _local2:String; for (_local2 in period_aliases) { if (_local2 == _arg1){ return (period_aliases[_local2].alias); }; }; return (null); } private static function sendError(_arg1:Object, _arg2:APIError):void{ var _local3:String = ((((("[NewgroundsAPI ERROR] :: " + getCommandName(_arg1.command_id)) + "() - ") + _arg2.name) + ":\n\t\t\t\t") + _arg2.message); trace(_local3); if (_bridge){ _bridge.sendEvent("trace", {data:_local3}); }; } private static function sendWarning(_arg1:String, _arg2:String=null):void{ if (_arg2){ _arg1 = (_arg1 + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(_arg1); if (_bridge){ _bridge.sendEvent("trace", {data:_arg1}); }; } private static function sendNotice(_arg1:String, _arg2:String=null):void{ var _local3:String; if (_arg2){ _arg1 = (_arg1 + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(_arg1); if (_bridge){ _bridge.sendEvent("trace", {data:_arg1}); }; } private static function fatalError(_arg1:String, _arg2:String):void{ if (_arg2){ _arg1 = (_arg1 + ((("\n\tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information.")); }; trace(("***ERROR*** class=API\n\n" + _arg1)); } public static function openLoginPage(){ if (hasUserSession()){ return; }; } public static function sendSecureCommand(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null, _arg5=null):void{ if (((((!(debugMode)) && (!(hasUserSession())))) && (!(hasUserEmail())))){ sendError({command_id:getCommandID(_arg1)}, new APIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + _arg1) + "()."))); return; }; if (!_arg1){ fatalError("Missing command", "sendSecureCommand"); }; if (!_arg2){ fatalError("Missing secure_params", "sendSecureCommand"); }; if (!_arg3){ _arg3 = new Object(); }; var _local6 = ""; var _local7:uint; while (_local7 < 16) { _local6 = (_local6 + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length)))); _local7++; }; if (((debugMode) && (!(session_id)))){ _arg2.session_id = ""; } else { _arg2.session_id = session_id; }; _arg2.as_version = 3; _arg2.user_email = user_email; _arg2.publisher_id = publisher_id; _arg2.seed = _local6; _arg2.command_id = getCommandID(_arg1); var _local8:String = MD5.hash(_local6); var _local9:String = RC4.encrypt(JSON.encode(_arg2), _encryptionKey); var _local10:String = (_local8 + _local9); _arg3.secure = compressHex(_local10); secureCommand = _arg1; sendCommand("securePacket", _arg3, false, _arg4, _arg5); } public static function stopPendingCommands():void{ SmartURLLoader.closeAll(); } private static function onCommandComplete(_arg1:Event):void{ var response:Object; var error:APIError; var e = _arg1; var loader:SmartURLLoader = SmartURLLoader(e.target); echo((("INPUT: \n" + loader.response) + "\n")); var i:uint; while (i < _preloadAssets.length) { if (_preloadAssets[i] == loader){ _preloadAssets.splice(i, 1); break; }; i = (i + 1); }; try { response = JSON.decode(loader.response); } catch(error:Error) { }; if (!response){ response = {command_id:loader._command, success:false}; }; response.owner = loader.owner; if (((!(response)) || (!(response.success)))){ if (response.command_id == "connectMovie"){ connected = false; }; error = new APIError(response.error_code, response.error_msg); sendError(response, error); if (response.command_id){ doEvent(response); }; } else { doEvent(response); }; } private static function onCommandError(_arg1:Event):void{ var _local2:Object = {success:false}; var _local3:SmartURLLoader = SmartURLLoader(_arg1.target); _local2.owner = _local3.owner; var _local4:uint; while (_local4 < _preloadAssets.length) { if (_preloadAssets[_local4] == _local3){ _preloadAssets.splice(_local4, 1); break; }; _local4++; }; if (_local3._command){ _local2.command_id = _local3._command; if (_local2.command_id == "connectMovie"){ connected = false; }; doEvent(_local2); }; } private static function sendCommand(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Object=null, _arg5=null):void{ var _local7:String; var _local8:String; var _local9:String; if (((!(connected)) && (!((_arg1 == "connectMovie"))))){ _local7 = (("NewgroundsAPI." + _arg1) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n"); fatalError(_local7, "connectMovie"); }; var _local6:SmartURLLoader = new SmartURLLoader(); _local6.addVariable("command_id", getCommandID(_arg1)); _local6.addVariable("tracker_id", _movieId); if (debugMode){ _local6.addVariable("debug", 1); }; if (_arg2){ for (_local8 in _arg2) { _local6.addVariable(_local8, _arg2[_local8]); }; }; if (_arg4){ for (_local9 in _arg4) { _local6.addFile(_local9, _arg4[_local9], _local9); }; }; if (_arg3){ _local6.method = URLRequestMethod.GET; } else { _local6.method = URLRequestMethod.POST; }; _local6.preventCache = true; if (_arg3){ _local6.openBrowser = true; _local6.method = URLRequestMethod.GET; } else { _local6.addEventListener(Event.COMPLETE, onCommandComplete); _local6.addEventListener(IOErrorEvent.IO_ERROR, onCommandError); _local6.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCommandError); _local6.method = URLRequestMethod.POST; }; if (_arg2.secure){ _local6._command = secureCommand; } else { _local6._command = getCommandID(_arg1); }; _local6.owner = _arg5; _local6.load(GATEWAY_URL); } public static function isFlashVersion(_arg1:uint, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0):Boolean{ var _local6:Array = Capabilities.version.split(" ")[1].split(","); var _local7:Array = arguments; var _local8:uint; while (_local8 < _local7.length) { _local6[_local8] = uint(_local6[_local8]); _local8++; }; _local8 = 0; while (_local8 < _local7.length) { if (_local6[_local8] > _local7[_local8]){ return (true); }; if (_local6[_local8] < _local7[_local8]){ return (false); }; _local8++; }; return (true); } public static function createAd():FlashAd{ sendMessage("You may see a security sandbox violation. This is normal!"); return (new FlashAd()); } public static function sendMessage(_arg1:String, _arg2:Boolean=false):void{ var _local3:String = ("[NewgroundsAPI] :: " + _arg1); trace(_local3); if (_bridge){ _bridge.sendEvent("trace", {data:_local3}); }; } private static function echo(_arg1:String):void{ if (do_echo){ trace(_arg1); }; } } }//package com.newgrounds
Section 63
//APIError (com.newgrounds.APIError) package com.newgrounds { import flash.utils.*; public class APIError { public var code:Number;// = 0 public var message:String; public var name:String; public var alias:String; public static const aliases:Array = new Array("UNKNOWN_ERROR", "INVALID_API_ID", "MISSING_PARAM", "INVALID_STAT_ID", "INVALID_COMMAND_ID", "FLASH_ADS_NOT_APPROVED", "PERMISSION_DENIED", "IDENTIFICATION_REQUIRED", "INVALID_EMAIL_ADDRESS", "BANNED_USER", "SESSION_EXPIRED", "INVALID_SCORE", "INVALID_MEDAL", "INVALID_FOLDER", "FILE_NOT_FOUND", "SITE_ID_REQUIRED", "UPLOAD_IN_PROGRESS", "USER_CANCELLED", "CONFIRM_REQUEST", "CONNECTION_FAILED"); private static const always_caps:Array = new Array("API", "URL", "ID"); public static const error_codes:Object = init_codes(); public static const error_names:Object = init_names(); public function APIError(_arg1, _arg2:String){ if ((_arg1 is String)){ _arg1 = error_codes[_arg1]; } else { if (!(_arg1 is uint)){ _arg1 = 0; }; }; this.code = _arg1; this.message = _arg2; this.name = error_names[_arg1]; this.alias = aliases[_arg1]; } public function isError():Boolean{ return (true); } public static function init_codes():Dictionary{ var _local1:Dictionary = new Dictionary(); var _local2:uint; while (_local2 < aliases.length) { _local1[aliases[_local2]] = _local2; _local2++; }; return (_local1); } private static function init_names():Array{ var _local3:Array; var _local4:uint; var _local5:String; var _local1:Array = new Array(); var _local2:uint; while (_local2 < aliases.length) { _local3 = aliases[_local2].toLowerCase().split("_"); _local4 = 0; while (_local4 < _local3.length) { _local3[_local4] = (_local3[_local4].substr(0, 1).toUpperCase() + _local3[_local4].substr(1, _local3[_local4].length)); for each (_local5 in always_caps) { if (_local3[_local4].toUpperCase() == _local5){ _local3[_local4] = _local3[_local4].toUpperCase(); }; }; _local4++; }; _local1[_local2] = _local3.join(" "); _local2++; }; return (_local1); } } }//package com.newgrounds
Section 64
//APIEvent (com.newgrounds.APIEvent) package com.newgrounds { import flash.events.*; public class APIEvent extends Event { private var _data; private var _success:Boolean; private var _target; private var _error:APIError; public static const API_CONNECTED:String = "movieConnected"; public static const ADS_APPROVED:String = "adsApproved"; public static const AD_ATTACHED:String = "adAttached"; public static const HOST_BLOCKED:String = "hostBlocked"; public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable"; public static const EVENT_LOGGED:String = "eventLogged"; public static const SCORE_POSTED:String = "scorePosted"; public static const SCORES_LOADED:String = "scoresLoaded"; public static const UNLOCK_MEDAL:String = "unlockMedal"; public static const MEDAL_UNLOCKED:String = "medalUnlocked"; public static const MEDALS_LOADED:String = "medalsLoaded"; public static const METADATA_LOADED:String = "metadataLoaded"; public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded"; public static const FILE_SAVED:String = "fileSaved"; public static const FILE_LOADED:String = "fileLoaded"; public static const FILE_INITIALIZED:String = "fileInitialized"; public static const FILE_REQUESTED:String = "fileRequested"; public static const QUERY_COMPLETE:String = "queryComplete"; public static const VOTE_COMPLETE:String = "voteComplete"; public function APIEvent(_arg1:String, _arg2:Boolean=true, _arg3=undefined){ super(_arg1); this._data = _arg3; this._success = _arg2; } public function get success():Boolean{ return (this._success); } public function get data(){ return (this._data); } } }//package com.newgrounds
Section 65
//BaseN (com.newgrounds.BaseN) package com.newgrounds { import flash.utils.*; public class BaseN { private var _hashIndex:String; private var _hashVal:Dictionary; private var _base:Number; public function BaseN(_arg1:String=null){ if (_arg1){ this._hashIndex = _arg1; } else { this._hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/"; }; this._base = this._hashIndex.length; this._hashVal = new Dictionary(); var _local2:uint; while (_local2 < this._base) { this._hashVal[this._hashIndex.charAt(_local2)] = _local2; _local2++; }; } public function encode(_arg1:Number, _arg2:uint=1):String{ var _local3:String = _arg1.toString(); var _local4 = ""; if (_local3.charAt(0) == "-"){ _local4 = "-"; _local3 = _local3.substring(1); }; var _local5:Array = _local3.split(".", 2); _local4 = (_local4 + this.baseNEncoder(_local5[0], _arg2)); if (_local5.length > 1){ _local4 = (_local4 + ("." + this.baseNEncoder(_local5[1]))); }; return (_local4); } public function decode(_arg1:String):Number{ var _local2 = ""; if (_arg1.charAt(0) == "-"){ _local2 = "-"; _arg1 = _arg1.substring(1); }; var _local3:Array = _arg1.split(".", 2); _local2 = (_local2 + this.baseNDecoder(_local3[0])); if (_local3.length > 1){ _local2 = (_local2 + "."); _local2 = (_local2 + this.baseNDecoder(_local3[1])); }; return (Number(_local2)); } private function baseNEncoder(_arg1:uint, _arg2:uint=1):String{ var _local3 = ""; var _local4:uint = _arg1; while (_local4 != 0) { _local3 = (this._hashIndex.charAt((_local4 % this._base)) + _local3); _local4 = (_local4 / this._base); }; if (_arg2){ while (_local3.length < _arg2) { _local3 = (this._hashIndex.charAt(0) + _local3); }; }; return (_local3); } private function baseNDecoder(_arg1:String):uint{ var _local2:uint; var _local3:uint; while (_local3 < _arg1.length) { _local2 = (_local2 * this._base); _local2 = (_local2 + this._hashVal[_arg1.charAt(_local3)]); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 66
//Bridge (com.newgrounds.Bridge) package com.newgrounds { import flash.events.*; import flash.net.*; public class Bridge { private var _inConnection:LocalConnection; private var _outConnection:LocalConnection; private var _widgetId:String; public function Bridge(_arg1:String){ this._widgetId = _arg1; this._inConnection = new LocalConnection(); this._outConnection = new LocalConnection(); this._inConnection.client = this; this._inConnection.connect(("rec_" + this._widgetId)); this._outConnection.addEventListener(StatusEvent.STATUS, this.onStatus); } public function sendCommand(_arg1:String, _arg2:Object):void{ if (this._outConnection){ this._outConnection.send(this._widgetId, "sendCommand", _arg1, this.scrubParameters(_arg2)); }; } public function sendEvent(_arg1:String, _arg2:Object):void{ if (this._outConnection){ this._outConnection.send(this._widgetId, "sendEvent", _arg1, this.scrubParameters(_arg2)); }; } public function receiveEvent(_arg1:String, _arg2:Object):void{ API.callListener(_arg1, _arg2.success, _arg2.data); } public function scrubParameters(_arg1:Object):Object{ var _local3:String; var _local2:Object = new Object(); for (_local3 in _arg1) { if ((((((((((_arg1[_local3] is String)) || ((_arg1[_local3] is Number)))) || ((_arg1[_local3] is uint)))) || ((_arg1[_local3] is int)))) || ((_arg1[_local3] is Boolean)))){ _local2[_local3] = _arg1[_local3]; }; }; return (_local2); } private function onStatus(_arg1:Event):void{ } } }//package com.newgrounds
Section 67
//Medal (com.newgrounds.Medal) package com.newgrounds { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class Medal { private var _id:uint; private var _name:String; private var _value:uint; private var _difficultyId:uint; private var _unlocked:Boolean;// = false private var _iconUrl:URLRequest; private var _iconLoader:Loader; private var _icon:BitmapData; private static const DEFAULT_ICON:BitmapData = new BitmapData(50, 50, false, 0); private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"]; public function Medal(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Boolean, _arg6:String){ var id = _arg1; var name = _arg2; var value = _arg3; var difficulty = _arg4; var unlocked = _arg5; var iconUrl = _arg6; this._icon = DEFAULT_ICON; super(); this._id = id; this._name = name; this._value = value; this._difficultyId = difficulty; this._unlocked = unlocked; if (iconUrl){ this._iconUrl = new URLRequest(iconUrl); this._iconLoader = new Loader(); this._iconLoader.contentLoaderInfo.addEventListener(Event.INIT, this.onIconLoaderInit); this._iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onIconLoaderError); this._iconLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onIconLoaderError); this._iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onIconLoaderComplete); try { this._iconLoader.load(this._iconUrl, new LoaderContext(true)); } catch(e:Error) { onIconLoaderError(null); }; }; } public function get difficulty():String{ return (DIFFICULT_NAMES[this._difficultyId]); } public function get difficultyId():uint{ return (this._difficultyId); } public function get icon():BitmapData{ return (this._icon); } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get unlocked():Boolean{ return (this._unlocked); } public function isUnlocked():Boolean{ return (this._unlocked); } public function set unlocked(_arg1:Boolean):void{ this._unlocked = _arg1; } public function get value():uint{ return (this._value); } public function get bytesLoaded():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesLoaded : 0); } public function get bytesTotal():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesTotal : 0); } public function getID():uint{ return (this._id); } public function getName():String{ return (this._name); } public function getValue():uint{ return (this._value); } public function getDifficulty():String{ return (DIFFICULT_NAMES[this._difficultyId]); } private function onIconLoaderInit(_arg1:Event):void{ } private function onIconLoaderError(_arg1:IOErrorEvent):void{ trace((((("[NewgroundsAPI WARNING] :: Failed to load medal icon for " + this.name) + " (") + this._iconUrl.url.split("/").pop()) + ")")); this._iconLoader.unload(); this._iconLoader = null; } private function onIconLoaderComplete(_arg1:Event):void{ var _local2:Bitmap = (this._iconLoader.content as Bitmap); this._icon = _local2.bitmapData; this._iconLoader.unload(); this._iconLoader = null; } public function unlock():void{ if (!this._unlocked){ API.unlockMedal(this._name); }; } public function createIconBitmap():Bitmap{ return (new Bitmap(this.icon)); } public function toString():String{ return (this._name); } public static function createFromObject(_arg1:Object):Medal{ return (new Medal(_arg1.medal_id, _arg1.medal_name, _arg1.medal_value, _arg1.medal_difficulty, _arg1.medal_unlocked, _arg1.medal_icon)); } } }//package com.newgrounds
Section 68
//RC4 (com.newgrounds.RC4) package com.newgrounds { public class RC4 { private static var sbox:Array = new Array(0xFF); private static var mykey:Array = new Array(0xFF); public static function encrypt(_arg1:String, _arg2:String):String{ var _local3:Array = strToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (charsToHex(_local5)); } public static function encryptbin(_arg1:String, _arg2:String):Array{ var _local3:Array = strToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (_local5); } public static function decrypt(_arg1:String, _arg2:String):String{ var _local3:Array = hexToChars(_arg1); var _local4:Array = strToChars(_arg2); var _local5:Array = calculate(_local3, _local4); return (charsToStr(_local5)); } private static function initialize(_arg1:Array):void{ var _local3:uint; var _local2:uint; var _local4:uint = _arg1.length; var _local5:uint; while (_local5 <= 0xFF) { mykey[_local5] = _arg1[(_local5 % _local4)]; sbox[_local5] = _local5; _local5++; }; _local5 = 0; while (_local5 <= 0xFF) { _local2 = (((_local2 + sbox[_local5]) + mykey[_local5]) % 0x0100); _local3 = sbox[_local5]; sbox[_local5] = sbox[_local2]; sbox[_local2] = _local3; _local5++; }; } private static function calculate(_arg1:Array, _arg2:Array):Array{ var _local6:uint; var _local7:uint; var _local8:uint; var _local10:uint; initialize(_arg2); var _local3:uint; var _local4:uint; var _local5:Array = new Array(); var _local9:uint; while (_local9 < _arg1.length) { _local3 = ((_local3 + 1) % 0x0100); _local4 = ((_local4 + sbox[_local3]) % 0x0100); _local7 = sbox[_local3]; sbox[_local3] = sbox[_local4]; sbox[_local4] = _local7; _local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100); _local6 = sbox[_local10]; _local8 = (_arg1[_local9] ^ _local6); _local5.push(_local8); _local9++; }; return (_local5); } private static function charsToHex(_arg1:Array):String{ var _local2:String = new String(""); var _local3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); var _local4:uint; while (_local4 < _arg1.length) { _local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)])); _local4++; }; return (_local2); } private static function hexToChars(_arg1:String):Array{ var _local2:Array = new Array(); var _local3:uint = ((_arg1.substr(0, 2))=="0x") ? 2 : 0; while (_local3 < _arg1.length) { _local2.push(parseInt(_arg1.substr(_local3, 2), 16)); _local3 = (_local3 + 2); }; return (_local2); } private static function charsToStr(_arg1:Array):String{ var _local2:String = new String(""); var _local3:uint; while (_local3 < _arg1.length) { _local2 = (_local2 + String.fromCharCode(_arg1[_local3])); _local3++; }; return (_local2); } private static function strToChars(_arg1:String):Array{ var _local2:Array = new Array(); var _local3:uint; while (_local3 < _arg1.length) { _local2.push(_arg1.charCodeAt(_local3)); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 69
//SaveFile (com.newgrounds.SaveFile) package com.newgrounds { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; public class SaveFile extends EventDispatcher { private var _filename:String; private var _id:uint; private var _description:String; private var _contents; private var _loader:SmartURLLoader; private var _group:SaveGroup; private var _keys:Dictionary; private var _ratings:Dictionary; private var _fileUrl:String; private var _thumbnail:BitmapData; private var _thumbnailUrl:String; private var _authorId:uint; private var _authorName:String; private var _contentSize:uint; private var _locked:Boolean; private var _status:uint; private var duplicate_id:uint; private var _draft:Boolean; public static const STATUS_PRIVATE = 1; public static const STATUS_SHARED = 2; public static const STATUS_UNAPPROVED = 3; public static const STATUS_APPROVED = 4; public function SaveFile(_arg1:SaveGroup){ this._keys = new Dictionary(); this._ratings = new Dictionary(); this._group = _arg1; this._description = ""; } public function get name():String{ return (this._filename); } public function set name(_arg1:String):void{ this._filename = _arg1; } public function get id():uint{ return (this._id); } public function set id(_arg1:uint):void{ this._id = _arg1; } public function get description():String{ return (this._description); } public function set description(_arg1:String):void{ this._description = _arg1; } public function get contents(){ return (this._contents); } public function set contents(_arg1):void{ this._contents = _arg1; this._contentSize = 0; } public function get thumbnailUrl():String{ return (this._thumbnailUrl); } public function set thumbnailUrl(_arg1:String):void{ this._thumbnailUrl = _arg1; } public function get fileUrl():String{ return (this._fileUrl); } public function set fileUrl(_arg1:String):void{ this._fileUrl = _arg1; } public function get thumbnail():BitmapData{ return (this._thumbnail); } public function set thumbnail(_arg1:BitmapData):void{ if (this._thumbnail){ this._thumbnail.dispose(); }; this._thumbnail = _arg1.clone(); } public function loadThumbnail():Loader{ var _local1:Loader = new Loader(); if (this._thumbnailUrl){ _local1.load(new URLRequest(this._thumbnailUrl)); }; return (_local1); } public function get bytesLoaded():uint{ return ((this._loader) ? this._loader.bytesLoaded : this._contentSize); } public function get bytesTotal():uint{ return (this._contentSize); } public function get status():uint{ return (this._status); } function setStatus(_arg1:uint):void{ this._status = _arg1; } public function get groupId():uint{ return (this._group.id); } public function get groupName():String{ return (this._group.name); } public function get groupType():uint{ return (this._group.type); } public function get authorName():String{ return (this._authorName); } public function set authorName(_arg1:String):void{ this._authorName = _arg1; } public function get authorId():uint{ return (this._authorId); } public function set authorId(_arg1:uint):void{ this._authorId = _arg1; } public function get draft():Boolean{ return (this._draft); } public function set draft(_arg1:Boolean):void{ this._draft = _arg1; } public function get locked():Boolean{ return (this._locked); } public function get shared():Boolean{ return ((this._status == STATUS_SHARED)); } public function get isPrivate():Boolean{ return ((this._status == STATUS_PRIVATE)); } public function get isPublic():Boolean{ if (this.isPrivate){ return (false); }; if (((this._group.isType("SYSTEM")) || (this._group.isType("PRIVATE")))){ return (false); }; if (this._group.isType("PUBLIC")){ return (true); }; if (this.approved){ return (true); }; return (false); } public function get approved():Boolean{ return ((this._status > STATUS_UNAPPROVED)); } public function get keys():Dictionary{ return (this._keys); } public function get ratings():Dictionary{ return (this._ratings); } function setPermissions(_arg1:uint, _arg2:Boolean){ _arg2 = this._locked; this._status = _arg1; } function setFileSize(_arg1:uint):void{ this._contentSize = _arg1; } public function isLocked():Boolean{ return (this._locked); } public function getDescription():String{ return (this._description); } public function getShared():Boolean{ return (this._draft); } public function getDuplicateID():uint{ return (this.duplicate_id); } public function getKeys():Dictionary{ return (this._keys); } public function getRatings():Dictionary{ return (this._ratings); } public function setKey(_arg1, _arg2):void{ var _local3:SaveKey; if ((_arg1 is String)){ _local3 = this._group.getKeyName(_arg1); } else { _local3 = this._group.getKeyID(_arg1); }; if (_local3){ switch (_local3.type){ case SaveKey.TYPE_BOOLEAN: this._keys[_local3] = {id:_local3.id, value:Boolean(int(_arg2))}; break; case SaveKey.TYPE_FLOAT: this._keys[_local3] = {id:_local3.id, value:Number(_arg2)}; break; case SaveKey.TYPE_INTEGER: this._keys[_local3] = {id:_local3.id, value:int(_arg2)}; break; case SaveKey.TYPE_STRING: default: this._keys[_local3] = {id:_local3.id, value:_arg2.toString()}; break; }; }; } public function getKey(_arg1){ var _local2:SaveKey; if ((_arg1 is String)){ _local2 = this._group.getKeyName(_arg1); } else { _local2 = this._group.getKeyID(_arg1); }; if (_local2){ return (this._keys[_local2]); }; return (null); } public function setRating(_arg1, _arg2:Number, _arg3:Number):void{ var _local4:SaveRating; if ((_arg1 is String)){ _local4 = this._group.getRatingName(_arg1); } else { _local4 = this._group.getRatingID(_arg1); }; if (_local4){ this._ratings[_local4] = {id:_local4.id, name:_local4.name, votes:_arg2, score:_arg3}; }; } public function getRating(_arg1):Object{ var _local2:SaveRating; if ((_arg1 is String)){ _local2 = this._group.getRatingName(_arg1); } else { _local2 = this._group.getRatingID(_arg1); }; if (_local2){ return (this._ratings[_local2]); }; return (null); } public function sendRating(_arg1:String, _arg2:Number):void{ var _local3:SaveRating = this._group.getRatingName(_arg1); if (!_local3){ trace((("[NewgroundsAPISaveFile] " + _arg1) + " is not a recognized save file")); return; }; if ((((_arg2 < _local3.minValue)) || ((_arg2 > _local3.maxValue)))){ trace(((("[NewgroundsAPISaveFile] Vote must be between " + _local3.minValue) + " and ") + _local3.maxValue)); return; }; _local3.voted = true; API.rateSaveFile(this, _local3, _arg2); } override public function toString():String{ var _local2:Object; var _local3:Object; var _local1 = (((((("Save File " + this._filename) + " ID: ") + this._id) + "\n ") + this._description) + "\n"); for each (_local2 in this._keys) { _local1 = (_local1 + ((((" " + this._group.getKeyID(_local2.id).name) + ": ") + _local2.val) + "\n")); }; for each (_local3 in this._ratings) { _local1 = (_local1 + ((((((" " + this._group.getRatingID(_local3.id).name) + "\n Score: ") + _local3.score) + " Votes: ") + _local3.votes) + "\n")); }; return (_local1); } public function toObject():Object{ var _local2:Object; var _local1:Object = {group:this.groupId, filename:this.name, description:this.description, shared:true}; _local1.keys = []; for each (_local2 in this._keys) { _local1.keys.push({id:_local2.id, value:_local2.val}); }; return (_local1); } public function save(_arg1:Boolean=false, _arg2:Boolean=false):void{ API.saveFile(this, _arg1, _arg2); } public function loadContents():void{ if (this._fileUrl){ this._loader = new SmartURLLoader(); this._loader.responseFormat = URLLoaderDataFormat.BINARY; this._loader.addEventListener(Event.COMPLETE, this.onContentsLoaded); this._loader.addEventListener(IOErrorEvent.IO_ERROR, this.onContentsError); this._loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onContentsError); this._loader.load(this._fileUrl); }; } private function onContentsError(_arg1:Event):void{ this._loader = null; dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, false)); API.callListener(APIEvent.FILE_LOADED, false); } private function onContentsLoaded(_arg1:Event):void{ var _local2:ByteArray = _arg1.target.response; this._contentSize = _local2.length; _local2.uncompress(); var _local3:uint = _local2.readUnsignedByte(); if (_local3 == 0){ this._contents = new ByteArray(); this._contents.writeBytes(_local2, 1); } else { this._contents = _local2.readObject(); }; this._loader = null; dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, true, {file:this})); API.callListener(APIEvent.FILE_LOADED, true, {file:this}); } public function loadAuthorPage(){ API.loadUserPage(this._authorId, this._authorName); } function fileSaved(_arg1:Object):void{ this._id = _arg1.save_id; this._thumbnailUrl = _arg1.thumbnail; this._fileUrl = _arg1.file_url; } } }//package com.newgrounds
Section 70
//SaveGroup (com.newgrounds.SaveGroup) package com.newgrounds { public class SaveGroup { private var _name:String; private var _id:uint; private var _type:uint; private var _keys:Array; private var _ratings:Array; private var _files:Array; private var _query:SaveGroupQuery; public static const TYPE_SYSTEM:uint = 0; public static const TYPE_PRIVATE:uint = 1; public static const TYPE_PUBLIC:uint = 2; public static const TYPE_MODERATED:uint = 3; public static const KEY_TYPES:Array = [null, "float", "integer", "string", "boolean"]; public static const TYPES:Object = {SYSTEM:0, PRIVATE:1, PUBLIC:2, MODERATED:3}; public function SaveGroup(_arg1:uint, _arg2:String, _arg3:uint){ this._name = _arg2; this._id = _arg1; this._type = _arg3; this._ratings = []; this._keys = []; this._files = []; this._query = new SaveGroupQuery(this); } public function get name():String{ return (this._name); } public function get id():uint{ return (this._id); } public function get type():uint{ return (this._type); } public function get keys():Array{ return (this._keys); } public function get ratings():Array{ return (this._ratings); } public function get group_id():uint{ return (this._id); } public function get group_name():String{ return (this._name); } public function addRating(_arg1:SaveRating):void{ this._ratings.push(_arg1); } function getRating(_arg1):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if ((((((((_arg1 is uint)) || ((_arg1 is int)))) || ((_arg1 is Number)))) && ((this._ratings[_local2].rating_id == _arg1)))){ return (this._ratings[_local2]); }; if (this._ratings[_local2].name == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function getRatingID(_arg1:uint):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if (this._ratings[_local2].id == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function getRatingName(_arg1:String):SaveRating{ var _local2:uint; while (_local2 < this._ratings.length) { if (this._ratings[_local2].name == _arg1){ return (this._ratings[_local2]); }; _local2++; }; return (null); } public function addKey(_arg1:SaveKey):void{ this._keys.push(_arg1); } public function getKey(_arg1):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if ((((((((_arg1 is Number)) || ((_arg1 is uint)))) || ((_arg1 is int)))) && ((this._keys[_local2].key_id == _arg1)))){ return (this._keys[_local2]); }; if (this._keys[_local2].key_name == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function getKeyID(_arg1:uint):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if (this._keys[_local2].id == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function getKeyType(_arg1:String, _arg2:Boolean=false){ var _local3:SaveKey = this.getKey(_arg1); if (_local3){ return ((_arg2) ? KEY_TYPES[_local3.key_type] : _local3.key_type); }; return (null); } public function getKeyName(_arg1:String):SaveKey{ var _local2:uint; while (_local2 < this._keys.length) { if (this._keys[_local2].name == _arg1){ return (this._keys[_local2]); }; _local2++; }; return (null); } public function isType(_arg1:String):Boolean{ return ((TYPES[this._type] == _arg1)); } public function getID():uint{ return (this._id); } public function getName():String{ return (this._name); } public function getQuery(_arg1:Boolean=false){ return ((_arg1) ? this._query.toObject() : this._query); } public function newQuery():SaveGroupQuery{ return (new SaveGroupQuery(this)); } public function newFile():SaveFile{ return (new SaveFile(this)); } public function toString():String{ return ((((((("SaveGroup { name: " + this._name) + ", id: ") + this._id) + ", keys: ") + this._keys) + "}")); } public static function createFromObject(_arg1:Object):SaveGroup{ var _local4:Object; var _local5:Object; var _local2:SaveGroup = new SaveGroup(_arg1.group_id, _arg1.group_name, _arg1.group_type); var _local3:uint; while (_local3 < _arg1.keys.length) { _local4 = _arg1.keys[_local3]; _local2.addKey(new SaveKey(_local4.id, _local4.name, _local4.type)); _local3++; }; _local3 = 0; while (_local3 < _arg1.ratings.length) { _local5 = _arg1.ratings[_local3]; _local2.addRating(new SaveRating(_local5.id, _local5.name, _local5.float, _local5.min, _local5.max)); _local3++; }; return (_local2); } } }//package com.newgrounds
Section 71
//SaveGroupQuery (com.newgrounds.SaveGroupQuery) package com.newgrounds { import flash.events.*; public class SaveGroupQuery extends EventDispatcher { private var _group:SaveGroup; private var _groupBy:Array; private var _lookupKeys:Array; private var _lookupRatings:Array; private var _fileConditions:Array; private var _keyConditions:Array; private var _ratingConditions:Array; private var _sortConditions:Array; private var _page:uint; private var _resultsPerPage:uint; private var _randomizeResults:Boolean; private var _results:Array; public static const TABLE_FILES:uint = 1; public static const TABLE_KEYS:uint = 2; public static const TABLE_RATINGS:uint = 3; public static const FILE_ID:uint = 0; public static const AUTHOR_ID:uint = 1; public static const AUTHOR_NAME:uint = 2; public static const FILE_NAME:uint = 3; public static const CREATED_ON:uint = 4; public static const UPDATED_ON:uint = 5; public static const TOTAL_VIEWS:uint = 6; public static const FILE_STATUS:uint = 7; public static const SCORE:String = "score"; public static const TOTAL_VOTES:String = "votes"; public function SaveGroupQuery(_arg1:SaveGroup){ this._results = []; super(); this._group = _arg1; this.reset(); } public function clearCache():void{ this._results = []; } public function get group():SaveGroup{ return (this._group); } public function get groupId():uint{ return (this._group.id); } public function get resultsPerPage():uint{ return (this._resultsPerPage); } public function set resultsPerPage(_arg1:uint):void{ this._resultsPerPage = _arg1; } public function get page():uint{ return (this._page); } public function set page(_arg1:uint):void{ this._page = _arg1; } public function get randomized():Boolean{ return (this._randomizeResults); } public function set randomized(_arg1:Boolean):void{ this._randomizeResults = _arg1; } public function get results():Array{ return (this._results); } public function reset():void{ this._fileConditions = []; this._keyConditions = []; this._ratingConditions = []; this._sortConditions = []; this._groupBy = []; this._lookupKeys = []; this._lookupRatings = []; this._randomizeResults = false; this._resultsPerPage = 20; this._page = 1; this.clearCache(); } function getGroup():SaveGroup{ return (this._group); } function getGroupID():uint{ return (this._group.getID()); } public function includeKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); if (_local2){ this._lookupKeys.push(_local2.id); }; } public function isRandomized():Boolean{ return (this._randomizeResults); } public function includeRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); if (_local2){ this._lookupRatings.push(_local2.id); }; } public function excludeKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); var _local3:uint; while (_local3 < this._lookupKeys.length) { if (this._lookupKeys[_local3] == _local2.id){ this._lookupKeys.splice(_local3, 1); return; }; _local3++; }; } public function excludeRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); var _local3:uint; while (_local3 < this._lookupRatings.length) { if (this._lookupRatings[_local3] == _local2.id){ this._lookupRatings.splice(_local3, 1); return; }; _local3++; }; } public function groupBy(_arg1:uint):void{ this._groupBy.push({table:TABLE_FILES, field:_arg1}); } public function groupByRating(_arg1:String):void{ var _local2:SaveRating = this._group.getRatingName(_arg1); if (!_local2){ return; }; this._groupBy.push({table:TABLE_RATINGS, field:_local2.id}); } public function groupByKey(_arg1:String):void{ var _local2:SaveKey = this._group.getKeyName(_arg1); if (!_local2){ return; }; this._groupBy.push({table:TABLE_KEYS, field:_local2.id}); } public function addFileCondition(_arg1:uint, _arg2:String, _arg3):void{ this._fileConditions.push({field:_arg1, operator:_arg2, value:_arg3}); } public function addKeyCondition(_arg1:String, _arg2:String, _arg3):void{ var _local4:SaveKey = this._group.getKeyName(_arg1); if (!_local4){ return; }; if (!this.checkValue(_arg3, _local4.type)){ return; }; this._keyConditions.push({key_id:_local4.id, operator:_arg2, value:_arg3}); } public function addRatingCondition(_arg1:String, _arg2:String, _arg3, _arg4:String="score"):void{ var _local5:SaveRating = this._group.getRatingName(_arg1); if (!_local5){ return; }; this._ratingConditions.push({rating_id:_local5.id, operator:_arg2, value:_arg3, column:_arg4}); } private function addSortCondition(_arg1:uint, _arg2:uint, _arg3:Boolean=false, _arg4=null):void{ var _local5:Object = {table:_arg1, field:_arg2, desc:_arg3}; if (_arg4){ _local5.extra = _arg4; }; this._sortConditions.push(_local5); } public function sortOn(_arg1:uint, _arg2:Boolean=false):void{ this.addSortCondition(TABLE_FILES, _arg1, _arg2); } public function sortOnKey(_arg1:String, _arg2:Boolean=false):void{ this.addSortCondition(TABLE_KEYS, this._group.getKeyName(_arg1).id, _arg2); } public function sortOnRating(_arg1:String, _arg2:Boolean=false, _arg3:String="score"):void{ this.addSortCondition(TABLE_RATINGS, this._group.getRatingName(_arg1).id, _arg2, _arg3); } public function sortOnRatingScore(_arg1:String, _arg2:Boolean){ this.sortOnRating(_arg1, _arg2, SCORE); } public function sortOnRatingVotes(_arg1:String, _arg2:Boolean){ this.sortOnRating(_arg1, _arg2, TOTAL_VOTES); } public function setResultsPerPage(_arg1:uint){ this._resultsPerPage = _arg1; this.clearCache(); } public function setPage(_arg1:Number){ this._page = _arg1; this.clearCache(); } public function setRandomize(_arg1:Boolean):void{ this._randomizeResults = _arg1; } public function execute():void{ API.executeSaveQuery(this); } private function checkValue(_arg1, _arg2:uint):Boolean{ return (true); } function setResults(_arg1:Array):void{ this._results = _arg1; } override public function toString():String{ return (""); } public function toObject():Object{ var _local1:Object = {page:this._page, num_results:this._resultsPerPage}; if (this.isRandomized()){ _local1.randomize = 1; }; if (((this._fileConditions) && ((this._fileConditions.length > 0)))){ _local1.file_conditions = this._fileConditions; }; if (((this._keyConditions) && ((this._keyConditions.length > 0)))){ _local1.key_conditions = this._keyConditions; }; if (((this._ratingConditions) && ((this._ratingConditions.length > 0)))){ _local1.rating_conditions = this._ratingConditions; }; if (((this._sortConditions) && ((this._sortConditions.length > 0)))){ _local1.sort_conditions = this._sortConditions; }; if (((this._lookupKeys) && ((this._lookupKeys.length > 0)))){ _local1.lookup_keys = this._lookupKeys; }; if (((this._lookupRatings) && ((this._lookupRatings.length > 0)))){ _local1.lookup_ratings = this._lookupRatings; }; if (((this._groupBy) && ((this._groupBy.length > 0)))){ _local1.group_by = this._groupBy; }; return (_local1); } } }//package com.newgrounds
Section 72
//SaveKey (com.newgrounds.SaveKey) package com.newgrounds { public class SaveKey { private var _id:uint; private var _name:String; private var _type:uint; public static const TYPE_FLOAT:uint = 1; public static const TYPE_INTEGER:uint = 2; public static const TYPE_STRING:uint = 3; public static const TYPE_BOOLEAN:uint = 4; public function SaveKey(_arg1:uint, _arg2:String, _arg3:uint){ this._id = _arg1; this._name = _arg2; this._type = _arg3; } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get type():uint{ return (this._type); } public function get key_id():uint{ return (this._id); } public function get key_name():String{ return (this._name); } public function get key_type():uint{ return (this._type); } public function isValueValid(_arg1):Boolean{ if (this._type == TYPE_INTEGER){ return ((((_arg1 is int)) || ((_arg1 is uint)))); }; if (this._type == TYPE_FLOAT){ return ((((((_arg1 is int)) || ((_arg1 is uint)))) || ((_arg1 is Number)))); }; if (this._type == TYPE_STRING){ return ((_arg1 is String)); }; if (this._type == TYPE_BOOLEAN){ return ((((((((_arg1 is Boolean)) || ((_arg1 === 0)))) || ((_arg1 === 1)))) || ((_arg1 == "")))); }; return (false); } public function toString():String{ return (this._name); } } }//package com.newgrounds
Section 73
//SaveRating (com.newgrounds.SaveRating) package com.newgrounds { public class SaveRating { private var _id:uint; private var _name:String; private var _minValue:Number; private var _maxValue:Number; private var _isFloat:Boolean; private var _voted:Boolean; public function SaveRating(_arg1:uint, _arg2:String, _arg3:Boolean, _arg4:Number=-INF, _arg5:Number=INF){ this._id = _arg1; this._name = _arg2; this._isFloat = _arg3; this._minValue = _arg4; this._maxValue = _arg5; } public function get rating_id():uint{ return (this._id); } public function get rating_name():String{ return (this._name); } public function get id():uint{ return (this._id); } public function get name():String{ return (this._name); } public function get minValue():Number{ return (this._minValue); } public function get maxValue():Number{ return (this._maxValue); } public function get isFloat():Boolean{ return (this._isFloat); } public function get voted():Boolean{ return (this._voted); } public function set voted(_arg1:Boolean):void{ this._voted = _arg1; } public function toString():String{ return (this._name); } } }//package com.newgrounds
Section 74
//Score (com.newgrounds.Score) package com.newgrounds { public class Score { private var _board:ScoreBoard; private var _position:uint; private var _username:String; private var _value:String; private var _numeric_value:uint; private var _tag:String; public function Score(_arg1:ScoreBoard, _arg2:Number, _arg3:String, _arg4:String, _arg5:uint, _arg6:String){ this._board = _arg1; this._position = _arg2; this._username = _arg3; this._value = _arg4; this._numeric_value = _arg5; this._tag = _arg6; } public function get board():ScoreBoard{ return (this._board); } public function get position():uint{ return (this._position); } public function get username():String{ return (this._username); } public function get value():String{ return (this._value); } public function get numeric_value():uint{ return (this._numeric_value); } public function get tag():String{ return (this._tag); } } }//package com.newgrounds
Section 75
//ScoreBoard (com.newgrounds.ScoreBoard) package com.newgrounds { import flash.events.*; public class ScoreBoard extends EventDispatcher { private var _name:String; private var _id:uint; private var _scores:Array; private var _period:String;// = "Today" private var _num_results:uint;// = 10 private var _numScores:uint; private var _desiredNumResults:uint; private var _startRank:uint; private var _endRank:uint; private var _page:uint;// = 1 private var _tag:String; public function ScoreBoard(_arg1:uint, _arg2:String, _arg3:String){ this._name = _arg2; this._id = _arg1; this._scores = []; this._tag = _arg3; } public function exists():Boolean{ return ((this._id > 0)); } public function get id():Number{ return (this._id); } public function get name():String{ return (this._name); } public function get period():String{ return (this._period); } public function get page():uint{ return (this._page); } public function get num_results():uint{ return (this._num_results); } public function get scores():Array{ return (this._scores); } public function get tag():String{ return (this._tag); } public function get num_scores():uint{ return (this._numScores); } public function postScore(_arg1:uint, _arg2:String=null):void{ if (_arg2){ this._tag = _arg2; }; API.postScore(this._name, _arg1); } public function loadScores(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{ this._period = _arg1; if (((!(this._period)) || ((this._period == "")))){ this._period = ScoreBoardPeriod.TODAY; }; this._page = _arg2; this._num_results = _arg3; this._desiredNumResults = 0; API.loadScores(this.name); } public function loadScoresInRange(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{ if (_arg2 == 0){ _arg2 = 1; }; if (_arg3 < _arg2){ _arg3 = _arg2; }; this._period = _arg1; if (((!(this._period)) || ((this._period == "")))){ this._period = ScoreBoardPeriod.TODAY; }; this._desiredNumResults = ((_arg3 - _arg2) + 1); this._num_results = this._desiredNumResults; while (int(((_arg2 - 1) / this._num_results)) != int(((_arg3 - 1) / this._num_results))) { this._num_results++; }; this._page = ((_arg2 - 1) / this._num_results); this._startRank = _arg2; this._endRank = _arg3; this._page++; API.loadScores(this.name); } function setScores(_arg1:Array, _arg2:String, _arg3:Number, _arg4:Number, _arg5:uint):void{ var _local7:uint; this._period = _arg2; this._page = _arg3; this._num_results = _arg4; this._numScores = _arg5; this._scores = []; var _local6:uint; while (_local6 < _arg1.length) { _local7 = (((this._num_results * (this._page - 1)) + 1) + _local6); if (((!(this._desiredNumResults)) || ((((_local7 >= this._startRank)) && ((_local7 <= this._endRank)))))){ this._scores.push(new Score(this, _local7, _arg1[_local6].username, _arg1[_local6].value, _arg1[_local6].numeric_value, _arg1[_local6].tag)); }; _local6++; }; this._num_results = this._scores.length; } } }//package com.newgrounds
Section 76
//ScoreBoardPeriod (com.newgrounds.ScoreBoardPeriod) package com.newgrounds { public class ScoreBoardPeriod { public static const TODAY:String = "Today"; public static const WEEK:String = "This Week"; public static const MONTH:String = "This Month"; public static const YEAR:String = "This Year"; public static const ALL_TIME:String = "All-Time"; } }//package com.newgrounds
Section 77
//SmartURLLoader (com.newgrounds.SmartURLLoader) package com.newgrounds { import flash.events.*; import flash.utils.*; import flash.net.*; import flash.errors.*; public class SmartURLLoader extends EventDispatcher { private var _variables:Dictionary; private var _files:Dictionary; private var _hasVariables:Boolean; private var _method:String;// = "GET" private var _urlRequest:URLRequest; private var _urlLoader:URLLoader; private var _dataFormat:String;// = "text" private var _openBrowser:Boolean;// = false private var _preventCache:Boolean;// = false var _command:String; public var owner; private static const CRLF:String = " "; private static var _loaders:Dictionary = new Dictionary(); public function SmartURLLoader(){ this._urlRequest = new URLRequest(); this._variables = new Dictionary(); } public function get responseFormat():String{ return (this._dataFormat); } public function set responseFormat(_arg1:String):void{ this._dataFormat = _arg1; } public function get response(){ return (this._urlLoader.data); } public function get hasFiles():Boolean{ return (Boolean(this._files)); } public function get method():String{ return (this._method); } public function set method(_arg1:String):void{ if (((this.hasFiles) && ((_arg1 == URLRequestMethod.GET)))){ throw (new IllegalOperationError("GET cannot be used to upload files.")); }; this._method = _arg1; } public function get openBrowser():Boolean{ return (this._openBrowser); } public function set openBrowser(_arg1:Boolean):void{ this._openBrowser = _arg1; } public function get preventCache():Boolean{ return (this._preventCache); } public function set preventCache(_arg1:Boolean):void{ this._preventCache = _arg1; } public function get bytesLoaded():uint{ return ((this._urlLoader) ? this._urlLoader.bytesLoaded : 0); } public function get bytesTotal():uint{ return ((this._urlLoader) ? this._urlLoader.bytesTotal : 0); } public function addVariable(_arg1:String, _arg2=""):void{ this._variables[_arg1] = _arg2; if (_arg2){ this._hasVariables = true; }; } public function addFile(_arg1:String, _arg2:ByteArray, _arg3:String, _arg4:String="application/octet-stream"):void{ this.method = URLRequestMethod.POST; if (!this._files){ this._files = new Dictionary(); }; this._files[_arg1] = new File(_arg1, _arg2, _arg3, _arg4); } public function clearVariables():void{ this._variables = new Dictionary(); } public function clearFiles():void{ this._files = null; } public function load(_arg1:String):void{ var urlVariables:URLVariables; var key:String; var boundary:String; var i:uint; var event:SecurityErrorEvent; var url = _arg1; this._urlRequest.url = url; if (this._preventCache){ url = (url + ("?seed=" + Math.random())); if (this._hasVariables){ url = (url + "&"); }; }; this._urlRequest.method = this._method; if ((((this._urlRequest.method == URLRequestMethod.GET)) || (!(this.hasFiles)))){ this._urlRequest.contentType = "application/x-www-form-urlencoded"; if (this._hasVariables){ urlVariables = new URLVariables(); for (key in this._variables) { urlVariables[key] = this._variables[key]; }; this._urlRequest.data = urlVariables; }; } else { boundary = ""; i = 0; while (i < 32) { boundary = (boundary + String.fromCharCode(uint((97 + (Math.random() * 25))))); i = (i + 1); }; this._urlRequest.contentType = (("multipart/form-data; boundary=\"" + boundary) + "\""); this._urlRequest.data = this.buildMultipartData(boundary); }; if (this.openBrowser){ navigateToURL(this._urlRequest, "_blank"); } else { this._urlLoader = new URLLoader(); this._urlLoader.dataFormat = this._dataFormat; this._urlLoader.addEventListener(Event.COMPLETE, this.onComplete); this._urlLoader.addEventListener(ProgressEvent.PROGRESS, this.onProgress); this._urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onIOError); this._urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus); this._urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError); _loaders[this._urlLoader] = this; try { this._urlLoader.load(this._urlRequest); } catch(error:Error) { event = new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR, false, false, error.message); onSecurityError(event); }; }; } public function close():void{ try { this._urlLoader.close(); } catch(e:Error) { }; } public function dispose():void{ this.close(); this._files = null; this._variables = null; if (this._urlLoader){ this._urlLoader.removeEventListener(Event.COMPLETE, this.onComplete); this._urlLoader.removeEventListener(ProgressEvent.PROGRESS, this.onProgress); this._urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, this.onIOError); this._urlLoader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus); this._urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError); this._urlLoader = null; }; this._urlRequest = null; delete _loaders[this]; } private function buildMultipartData(_arg1:String):ByteArray{ var _local3:String; var _local4:File; var _local2:ByteArray = new ByteArray(); _local2.endian = Endian.BIG_ENDIAN; _arg1 = ("--" + _arg1); for (_local3 in this._variables) { _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + _local3) + "\"") + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes((this._variables[_local3] + CRLF)); }; if (this.hasFiles){ for each (_local4 in this._files) { _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Filename\"" + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes((_local4.fileName + CRLF)); _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(((((("Content-Disposition: form-data; name=\"" + _local4.dataField) + "\"; filename=\"") + _local4.fileName) + "\"") + CRLF)); _local2.writeUTFBytes((("Content-Type: " + _local4.contentType) + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeBytes(_local4.data); _local2.writeUTFBytes(CRLF); }; _local2.writeUTFBytes((_arg1 + CRLF)); _local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Upload\"" + CRLF)); _local2.writeUTFBytes(CRLF); _local2.writeUTFBytes(("Submit Query" + CRLF)); }; _local2.writeUTFBytes((_arg1 + "--")); _local2.position = 0; _local2.position = 0; return (_local2); } private function onComplete(_arg1:Event):void{ dispatchEvent(_arg1); this.dispose(); } private function onProgress(_arg1:ProgressEvent):void{ dispatchEvent(_arg1); } private function onIOError(_arg1:IOErrorEvent):void{ dispatchEvent(_arg1); this.dispose(); } private function onSecurityError(_arg1:SecurityErrorEvent):void{ dispatchEvent(_arg1); this.dispose(); } private function onHTTPStatus(_arg1:HTTPStatusEvent):void{ dispatchEvent(_arg1); } public static function closeAll():void{ var _local1:SmartURLLoader; for each (_local1 in _loaders) { if (_local1){ _local1.dispose(); }; }; _loaders = new Dictionary(); } } }//package com.newgrounds import flash.utils.*; class File { private var fileName:String; private var data:ByteArray; private var dataField:String; private var contentType:String; private function File(_arg1:String, _arg2:ByteArray, _arg3:String="Filedata", _arg4:String="application/octet-stream"){ this.fileName = _arg1; this.data = _arg2; this.dataField = _arg3; this.contentType = _arg4; } }
Section 78
//compareStringCaseInSensitive (de.polygonal.ds.sort.compare.compareStringCaseInSensitive) package de.polygonal.ds.sort.compare { public function compareStringCaseInSensitive(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; _arg1 = _arg1.toLowerCase(); _arg2 = _arg2.toLowerCase(); if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg1.charCodeAt(_local5) - _arg2.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 79
//compareStringCaseInSensitiveDesc (de.polygonal.ds.sort.compare.compareStringCaseInSensitiveDesc) package de.polygonal.ds.sort.compare { public function compareStringCaseInSensitiveDesc(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; _arg1 = _arg1.toLowerCase(); _arg2 = _arg2.toLowerCase(); if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg2.charCodeAt(_local5) - _arg1.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 80
//compareStringCaseSensitive (de.polygonal.ds.sort.compare.compareStringCaseSensitive) package de.polygonal.ds.sort.compare { public function compareStringCaseSensitive(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg1.charCodeAt(_local5) - _arg2.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 81
//compareStringCaseSensitiveDesc (de.polygonal.ds.sort.compare.compareStringCaseSensitiveDesc) package de.polygonal.ds.sort.compare { public function compareStringCaseSensitiveDesc(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg2.charCodeAt(_local5) - _arg1.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 82
//dLinkedInsertionSort (de.polygonal.ds.sort.dLinkedInsertionSort) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function dLinkedInsertionSort(_arg1:DListNode, _arg2:Boolean=false):DListNode{ var _local3:DListNode; var _local4:DListNode; var _local5:DListNode; var _local6:DListNode; var _local7:DListNode; var _local8:*; if (!_arg1){ return (null); }; _local3 = _arg1; if (_arg2){ _local5 = _local3.next; while (_local5) { _local6 = _local5.next; _local4 = _local5.prev; if (_local4.data < _local5.data){ _local7 = _local4; while (_local7.prev) { if (_local7.prev.data < _local5.data){ _local7 = _local7.prev; } else { break; }; }; if (_local6){ _local4.next = _local6; _local6.prev = _local4; } else { _local4.next = null; }; if (_local7 == _local3){ _local5.prev = null; _local5.next = _local7; _local7.prev = _local5; _local3 = _local5; } else { _local5.prev = _local7.prev; _local7.prev.next = _local5; _local5.next = _local7; _local7.prev = _local5; }; }; _local5 = _local6; }; return (_local3); //unresolved jump }; _local5 = _local3.next; while (_local5) { _local6 = _local5.next; _local4 = _local5.prev; if (_local4.data > _local5.data){ _local7 = _local4; while (_local7.prev) { if (_local7.prev.data > _local5.data){ _local7 = _local7.prev; } else { break; }; }; if (_local6){ _local4.next = _local6; _local6.prev = _local4; } else { _local4.next = null; }; if (_local7 == _local3){ _local5.prev = null; _local5.next = _local7; _local7.prev = _local5; _local3 = _local5; } else { _local5.prev = _local7.prev; _local7.prev.next = _local5; _local5.next = _local7; _local7.prev = _local5; }; }; _local5 = _local6; }; return (_local3); } }//package de.polygonal.ds.sort
Section 83
//dLinkedInsertionSortCmp (de.polygonal.ds.sort.dLinkedInsertionSortCmp) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function dLinkedInsertionSortCmp(_arg1:DListNode, _arg2:Function, _arg3:Boolean=false):DListNode{ var _local4:DListNode; var _local5:DListNode; var _local6:DListNode; var _local7:DListNode; var _local8:DListNode; var _local9:*; if (((!(_arg1)) || ((_arg2 == null)))){ return (null); }; _local4 = _arg1; if (_arg3){ _local6 = _local4.next; while (_local6) { _local7 = _local6.next; _local5 = _local6.prev; if (_arg2(_local5.data, _local6.data) < 0){ _local8 = _local5; while (_local8.prev) { if (_arg2(_local8.prev.data, _local6.data) < 0){ _local8 = _local8.prev; } else { break; }; }; if (_local7){ _local5.next = _local7; _local7.prev = _local5; } else { _local5.next = null; }; if (_local8 == _local4){ _local6.prev = null; _local6.next = _local8; _local8.prev = _local6; _local4 = _local6; } else { _local6.prev = _local8.prev; _local8.prev.next = _local6; _local6.next = _local8; _local8.prev = _local6; }; }; _local6 = _local7; }; } else { _local6 = _local4.next; while (_local6) { _local7 = _local6.next; _local5 = _local6.prev; if (_arg2(_local5.data, _local6.data) > 0){ _local8 = _local5; while (_local8.prev) { if (_arg2(_local8.prev.data, _local6.data) > 0){ _local8 = _local8.prev; } else { break; }; }; if (_local7){ _local5.next = _local7; _local7.prev = _local5; } else { _local5.next = null; }; if (_local8 == _local4){ _local6.prev = null; _local6.next = _local8; _local8.prev = _local6; _local4 = _local6; } else { _local6.prev = _local8.prev; _local8.prev.next = _local6; _local6.next = _local8; _local8.prev = _local6; }; }; _local6 = _local7; }; }; return (_local4); } }//package de.polygonal.ds.sort
Section 84
//dLinkedMergeSort (de.polygonal.ds.sort.dLinkedMergeSort) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function dLinkedMergeSort(_arg1:DListNode, _arg2:Boolean=false):DListNode{ var _local3:DListNode; var _local4:DListNode; var _local5:DListNode; var _local6:DListNode; var _local7:DListNode; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; if (!_arg1){ return (null); }; _local3 = _arg1; _local8 = 1; if (_arg2){ while (true) { _local4 = _local3; _local7 = null; _local3 = _local7; _local9 = 0; while (_local4) { _local9++; _local12 = 0; _local10 = 0; _local5 = _local4; while (_local12 < _local8) { _local10++; _local5 = _local5.next; if (!_local5){ break; }; _local12++; }; _local11 = _local8; while ((((_local10 > 0)) || ((((_local11 > 0)) && (_local5))))) { if (_local10 == 0){ _local6 = _local5; _local5 = _local5.next; _local11--; } else { if ((((_local11 == 0)) || (!(_local5)))){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { if ((_local4.data - _local5.data) >= 0){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { _local6 = _local5; _local5 = _local5.next; _local11--; }; }; }; if (_local7){ _local7.next = _local6; } else { _local3 = _local6; }; _local6.prev = _local7; _local7 = _local6; }; _local4 = _local5; }; _local7.next = null; if (_local9 <= 1){ return (_local3); }; _local8 = (_local8 << 1); }; } else { while (true) { _local4 = _local3; _local7 = null; _local3 = _local7; _local9 = 0; while (_local4) { _local9++; _local12 = 0; _local10 = 0; _local5 = _local4; while (_local12 < _local8) { _local10++; _local5 = _local5.next; if (!_local5){ break; }; _local12++; }; _local11 = _local8; while ((((_local10 > 0)) || ((((_local11 > 0)) && (_local5))))) { if (_local10 == 0){ _local6 = _local5; _local5 = _local5.next; _local11--; } else { if ((((_local11 == 0)) || (!(_local5)))){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { if ((_local4.data - _local5.data) <= 0){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { _local6 = _local5; _local5 = _local5.next; _local11--; }; }; }; if (_local7){ _local7.next = _local6; } else { _local3 = _local6; }; _local6.prev = _local7; _local7 = _local6; }; _local4 = _local5; }; _local7.next = null; if (_local9 <= 1){ return (_local3); }; _local8 = (_local8 << 1); }; }; return (null); } }//package de.polygonal.ds.sort
Section 85
//dLinkedMergeSortCmp (de.polygonal.ds.sort.dLinkedMergeSortCmp) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function dLinkedMergeSortCmp(_arg1:DListNode, _arg2:Function, _arg3:Boolean=false):DListNode{ var _local4:DListNode; var _local5:DListNode; var _local6:DListNode; var _local7:DListNode; var _local8:DListNode; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; if (((!(_arg1)) || ((_arg2 == null)))){ return (null); }; _local4 = _arg1; _local9 = 1; if (_arg3){ while (true) { _local5 = _local4; _local8 = null; _local4 = _local8; _local10 = 0; while (_local5) { _local10++; _local13 = 0; _local11 = 0; _local6 = _local5; while (_local13 < _local9) { _local11++; _local6 = _local6.next; if (!_local6){ break; }; _local13++; }; _local12 = _local9; while ((((_local11 > 0)) || ((((_local12 > 0)) && (_local6))))) { if (_local11 == 0){ _local7 = _local6; _local6 = _local6.next; _local12--; } else { if ((((_local12 == 0)) || (!(_local6)))){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { if (_arg2(_local5.data, _local6.data) >= 0){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { _local7 = _local6; _local6 = _local6.next; _local12--; }; }; }; if (_local8){ _local8.next = _local7; } else { _local4 = _local7; }; _local7.prev = _local8; _local8 = _local7; }; _local5 = _local6; }; _arg1.prev = _local8; _local8.next = null; if (_local10 <= 1){ return (_local4); }; _local9 = (_local9 << 1); }; } else { while (true) { _local5 = _local4; _local8 = null; _local4 = _local8; _local10 = 0; while (_local5) { _local10++; _local13 = 0; _local11 = 0; _local6 = _local5; while (_local13 < _local9) { _local11++; _local6 = _local6.next; if (!_local6){ break; }; _local13++; }; _local12 = _local9; while ((((_local11 > 0)) || ((((_local12 > 0)) && (_local6))))) { if (_local11 == 0){ _local7 = _local6; _local6 = _local6.next; _local12--; } else { if ((((_local12 == 0)) || (!(_local6)))){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { if (_arg2(_local5.data, _local6.data) <= 0){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { _local7 = _local6; _local6 = _local6.next; _local12--; }; }; }; if (_local8){ _local8.next = _local7; } else { _local4 = _local7; }; _local7.prev = _local8; _local8 = _local7; }; _local5 = _local6; }; _arg1.prev = _local8; _local8.next = null; if (_local10 <= 1){ return (_local4); }; _local9 = (_local9 << 1); }; }; return (null); } }//package de.polygonal.ds.sort
Section 86
//Collection (de.polygonal.ds.Collection) package de.polygonal.ds { public interface Collection { function isEmpty():Boolean; function getIterator():Iterator; function get size():int; function clear():void; function toArray():Array; function contains(_arg1):Boolean; } }//package de.polygonal.ds
Section 87
//DLinkedList (de.polygonal.ds.DLinkedList) package de.polygonal.ds { import de.polygonal.ds.sort.*; import de.polygonal.ds.sort.compare.*; public class DLinkedList implements Collection { private var _count:int; public var tail:DListNode; public var head:DListNode; public function DLinkedList(... _args){ head = (tail = null); _count = 0; if (_args.length > 0){ append.apply(this, _args); }; } public function isEmpty():Boolean{ return ((_count == 0)); } public function remove(_arg1:DListIterator):Boolean{ var _local2:DListNode; if (((!((_arg1.list == this))) || (!(_arg1.node)))){ return (false); }; _local2 = _arg1.node; if (_local2 == head){ head = head.next; } else { if (_local2 == tail){ tail = tail.prev; }; }; if (_arg1.node){ _arg1.node = _arg1.node.next; }; if (_local2.prev){ _local2.prev.next = _local2.next; }; if (_local2.next){ _local2.next.prev = _local2.prev; }; _local2.next = (_local2.prev = null); if (head == null){ tail = null; }; _count--; return (true); } public function get size():int{ return (_count); } public function removeHead(){ var _local1:*; if (head){ _local1 = head.data; head = head.next; if (head){ head.prev = null; } else { tail = null; }; _count--; return (_local1); }; return (null); } public function clear():void{ var _local1:DListNode; var _local2:DListNode; _local1 = head; head = null; while (_local1) { _local2 = _local1.next; _local1.next = (_local1.prev = null); _local1 = _local2; }; _count = 0; } public function prepend(... _args):DListNode{ var _local2:int; var _local3:DListNode; var _local4:DListNode; var _local5:int; _local2 = _args.length; _local3 = new DListNode(_args[int((_local2 - 1))]); if (head){ head.insertBefore(_local3); head = head.prev; } else { head = (tail = _local3); }; if (_local2 > 1){ _local4 = _local3; _local5 = (_local2 - 2); while (_local5 >= 0) { _local3 = new DListNode(_args[_local5]); head.insertBefore(_local3); head = head.prev; _local5--; }; _count = (_count + _local2); return (_local4); }; _count++; return (_local3); } public function popDown():void{ var _local1:DListNode; _local1 = tail; if (tail.prev == head){ tail = head; tail.next = null; head = _local1; head.prev = null; head.next = tail; tail.prev = head; } else { tail = tail.prev; tail.next = null; head.prev = _local1; _local1.prev = null; _local1.next = head; head = _local1; }; } public function concat(... _args):DLinkedList{ var _local2:DLinkedList; var _local3:DLinkedList; var _local4:DListNode; var _local5:int; var _local6:int; _local2 = new DLinkedList(); _local4 = head; while (_local4) { _local2.append(_local4.data); _local4 = _local4.next; }; _local5 = _args.length; _local6 = 0; while (_local6 < _local5) { _local3 = _args[_local6]; _local4 = _local3.head; while (_local4) { _local2.append(_local4.data); _local4 = _local4.next; }; _local6++; }; return (_local2); } public function insertBefore(_arg1:DListIterator, _arg2):DListNode{ var _local3:DListNode; if (_arg1.list != this){ return (null); }; if (_arg1.node){ _local3 = new DListNode(_arg2); _arg1.node.insertBefore(_local3); if (_arg1.node == head){ head = head.prev; }; _count++; return (_local3); //unresolved jump }; return (prepend(_arg2)); } public function append(... _args):DListNode{ var _local2:int; var _local3:DListNode; var _local4:DListNode; var _local5:int; _local2 = _args.length; _local3 = new DListNode(_args[0]); if (head){ tail.insertAfter(_local3); tail = tail.next; } else { head = (tail = _local3); }; if (_local2 > 1){ _local4 = _local3; _local5 = 1; while (_local5 < _local2) { _local3 = new DListNode(_args[_local5]); tail.insertAfter(_local3); tail = tail.next; _local5++; }; _count = (_count + _local2); return (_local4); }; _count++; return (_local3); } public function sort(... _args):void{ var _local2:int; var _local3:Function; var _local4:*; if (_count <= 1){ return; }; if (_args.length > 0){ _local2 = 0; _local3 = null; _local4 = _args[0]; if ((_local4 is Function)){ _local3 = _local4; if (_args.length > 1){ _local4 = _args[1]; if ((_local4 is int)){ _local2 = _local4; }; }; } else { if ((_local4 is int)){ _local2 = _local4; }; }; if (Boolean(_local3)){ if ((_local2 & 2)){ head = dLinkedInsertionSortCmp(head, _local3, (_local2 == 18)); } else { head = dLinkedMergeSortCmp(head, _local3, (_local2 == 16)); }; } else { if ((_local2 & 2)){ if ((_local2 & 4)){ if (_local2 == 22){ head = dLinkedInsertionSortCmp(head, compareStringCaseSensitiveDesc); } else { if (_local2 == 14){ head = dLinkedInsertionSortCmp(head, compareStringCaseInSensitive); } else { if (_local2 == 30){ head = dLinkedInsertionSortCmp(head, compareStringCaseInSensitiveDesc); } else { head = dLinkedInsertionSortCmp(head, compareStringCaseSensitive); }; }; }; } else { head = dLinkedInsertionSort(head, (_local2 == 18)); }; } else { if ((_local2 & 4)){ if (_local2 == 20){ head = dLinkedMergeSortCmp(head, compareStringCaseSensitiveDesc); } else { if (_local2 == 12){ head = dLinkedMergeSortCmp(head, compareStringCaseInSensitive); } else { if (_local2 == 28){ head = dLinkedMergeSortCmp(head, compareStringCaseInSensitiveDesc); } else { head = dLinkedMergeSortCmp(head, compareStringCaseSensitive); }; }; }; } else { if ((_local2 & 16)){ head = dLinkedMergeSort(head, true); }; }; }; }; } else { head = dLinkedMergeSort(head); }; } public function contains(_arg1):Boolean{ var _local2:DListNode; _local2 = head; while (_local2) { if (_local2.data == _arg1){ return (true); }; _local2 = _local2.next; }; return (false); } public function reverse():void{ var _local1:DListNode; var _local2:DListNode; var _local3:DListNode; if (_count == 0){ return; }; _local2 = tail; while (_local2) { _local1 = _local2.prev; if (!_local2.next){ _local2.next = _local2.prev; _local2.prev = null; head = _local2; } else { if (!_local2.prev){ _local2.prev = _local2.next; _local2.next = null; tail = _local2; } else { _local3 = _local2.next; _local2.next = _local2.prev; _local2.prev = _local3; }; }; _local2 = _local1; }; } public function insertAfter(_arg1:DListIterator, _arg2):DListNode{ var _local3:DListNode; if (_arg1.list != this){ return (null); }; if (_arg1.node){ _local3 = new DListNode(_arg2); _arg1.node.insertAfter(_local3); if (_arg1.node == tail){ tail = _arg1.node.next; }; _count++; return (_local3); //unresolved jump }; return (append(_arg2)); } public function getIterator():Iterator{ return (new DListIterator(this, head)); } public function toArray():Array{ var _local1:Array; var _local2:DListNode; _local1 = []; _local2 = head; while (_local2) { _local1.push(_local2.data); _local2 = _local2.next; }; return (_local1); } public function getListIterator():DListIterator{ return (new DListIterator(this, head)); } public function join(_arg1):String{ var _local2:String; var _local3:DListNode; if (_count == 0){ return (""); }; _local2 = ""; _local3 = head; while (_local3.next) { _local2 = (_local2 + (_local3.data + _arg1)); _local3 = _local3.next; }; _local2 = (_local2 + _local3.data); return (_local2); } public function toString():String{ return ((("[DLinkedList > has " + size) + " nodes]")); } public function lastNodeOf(_arg1, _arg2:DListIterator=null):DListIterator{ var _local3:DListNode; if (_arg2 != null){ if (_arg2.list != this){ return (null); }; }; _local3 = ((_arg2)==null) ? tail : _arg2.node; while (_local3) { if (_local3.data === _arg1){ return (new DListIterator(this, _local3)); }; _local3 = _local3.prev; }; return (null); } public function removeTail(){ var _local1:*; if (tail){ _local1 = tail.data; tail = tail.prev; if (tail){ tail.next = null; } else { head = null; }; _count--; return (_local1); }; return (null); } public function merge(... _args):void{ var _local2:DLinkedList; var _local3:int; var _local4:int; _local2 = _args[0]; if (_local2.head){ if (head){ tail.next = _local2.head; _local2.head.prev = tail; tail = _local2.tail; } else { head = _local2.head; tail = _local2.tail; }; _count = (_count + _local2.size); }; _local3 = _args.length; _local4 = 1; while (_local4 < _local3) { _local2 = _args[_local4]; if (_local2.head){ tail.next = _local2.head; _local2.head.prev = tail; tail = _local2.tail; _count = (_count + _local2.size); }; _local4++; }; } public function nodeOf(_arg1, _arg2:DListIterator=null):DListIterator{ var _local3:DListNode; if (_arg2 != null){ if (_arg2.list != this){ return (null); }; }; _local3 = ((_arg2)==null) ? head : _arg2.node; while (_local3) { if (_local3.data === _arg1){ return (new DListIterator(this, _local3)); }; _local3 = _local3.next; }; return (null); } public function dump():String{ var _local1:String; var _local2:DListIterator; if (head == null){ return ("DLinkedList, empty"); }; _local1 = (((("DLinkedList, has " + _count) + " node") + ((_count == 1)) ? "" : "s") + "\n|< Head\n"); _local2 = getListIterator(); while (_local2.valid()) { _local1 = (_local1 + (("\t" + _local2.data) + "\n")); _local2.forth(); }; _local1 = (_local1 + "Tail >|"); return (_local1); } public function splice(_arg1:DListIterator, _arg2:uint=4294967295, ... _args):DLinkedList{ var _local4:DListNode; var _local5:DListNode; var _local6:DLinkedList; var _local7:int; var _local8:int; var _local9:DListNode; if (_arg1){ if (_arg1.list != this){ return (null); }; }; if (_arg1.node){ _local4 = _arg1.node; _local5 = _arg1.node.prev; _local6 = new DLinkedList(); if (_arg2 == 4294967295){ if (_arg1.node == tail){ return (_local6); }; while (_arg1.node) { _local6.append(_arg1.node.data); _arg1.remove(); }; _arg1.list = _local6; _arg1.node = _local4; return (_local6); } else { _local7 = 0; while (_local7 < _arg2) { if (_arg1.node){ _local6.append(_arg1.node.data); _arg1.remove(); } else { break; }; _local7++; }; }; _local8 = _args.length; if (_local8 > 0){ if (_count == 0){ _local7 = 0; while (_local7 < _local8) { append(_args[_local7]); _local7++; }; } else { if (_local5 == null){ _local9 = prepend(_args[0]); _local7 = 1; while (_local7 < _local8) { _local9.insertAfter(new DListNode(_args[_local7])); if (_local9 == tail){ tail = _local9.next; }; _local9 = _local9.next; _count++; _local7++; }; } else { _local9 = _local5; _local7 = 0; while (_local7 < _local8) { _local9.insertAfter(new DListNode(_args[_local7])); if (_local9 == tail){ tail = _local9.next; }; _local9 = _local9.next; _count++; _local7++; }; }; }; _arg1.node = _local9; } else { _arg1.node = _local4; }; _arg1.list = _local6; return (_local6); }; return (null); } public function shiftUp():void{ var _local1:DListNode; _local1 = head; if (head.next == tail){ head = tail; head.prev = null; tail = _local1; tail.next = null; head.next = tail; tail.prev = head; } else { head = head.next; head.prev = null; tail.next = _local1; _local1.next = null; _local1.prev = tail; tail = _local1; }; } } }//package de.polygonal.ds
Section 88
//DListIterator (de.polygonal.ds.DListIterator) package de.polygonal.ds { public class DListIterator implements Iterator { public var node:DListNode; public var list:DLinkedList; public function DListIterator(_arg1:DLinkedList, _arg2:DListNode=null){ this.list = _arg1; this.node = _arg2; } public function toString():String{ return ((("{DListIterator, data=" + (node) ? node.data : "null") + "}")); } public function remove():Boolean{ return (list.remove(this)); } public function start():void{ node = list.head; } public function get data(){ if (node){ return (node.data); }; return (null); } public function next(){ var _local1:*; if (hasNext()){ _local1 = node.data; node = node.next; return (_local1); }; return (null); } public function forth():void{ if (node){ node = node.next; }; } public function hasNext():Boolean{ return (Boolean(node)); } public function back():void{ if (node){ node = node.prev; }; } public function valid():Boolean{ return (Boolean(node)); } public function set data(_arg1):void{ node.data = _arg1; } public function end():void{ node = list.tail; } } }//package de.polygonal.ds
Section 89
//DListNode (de.polygonal.ds.DListNode) package de.polygonal.ds { public class DListNode implements LinkedListNode { public var data; public var prev:DListNode; public var next:DListNode; public function DListNode(_arg1){ next = (prev = null); data = _arg1; } public function insertAfter(_arg1:DListNode):void{ _arg1.next = next; _arg1.prev = this; if (next){ next.prev = _arg1; }; next = _arg1; } public function unlink():void{ if (prev){ prev.next = next; }; if (next){ next.prev = prev; }; next = (prev = null); } public function toString():String{ return ((("[DListNode, data=" + data) + "]")); } public function insertBefore(_arg1:DListNode):void{ _arg1.next = this; _arg1.prev = prev; if (prev){ prev.next = _arg1; }; prev = _arg1; } } }//package de.polygonal.ds
Section 90
//Iterator (de.polygonal.ds.Iterator) package de.polygonal.ds { public interface Iterator { function start():void; function next(); function set data(_arg1):void; function get data(); function hasNext():Boolean; } }//package de.polygonal.ds
Section 91
//LinkedListNode (de.polygonal.ds.LinkedListNode) package de.polygonal.ds { public interface LinkedListNode { } }//package de.polygonal.ds
Section 92
//BaseScrollPane (fl.containers.BaseScrollPane) package fl.containers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import flash.geom.*; import fl.events.*; public class BaseScrollPane extends UIComponent { protected var defaultLineScrollSize:Number;// = 4 protected var _maxHorizontalScrollPosition:Number;// = 0 protected var vScrollBar:Boolean; protected var disabledOverlay:Shape; protected var hScrollBar:Boolean; protected var availableWidth:Number; protected var _verticalPageScrollSize:Number;// = 0 protected var vOffset:Number;// = 0 protected var _verticalScrollBar:ScrollBar; protected var useFixedHorizontalScrolling:Boolean;// = false protected var contentWidth:Number;// = 0 protected var contentHeight:Number;// = 0 protected var _horizontalPageScrollSize:Number;// = 0 protected var background:DisplayObject; protected var _useBitmpScrolling:Boolean;// = false protected var contentPadding:Number;// = 0 protected var availableHeight:Number; protected var _horizontalScrollBar:ScrollBar; protected var contentScrollRect:Rectangle; protected var _horizontalScrollPolicy:String; protected var _verticalScrollPolicy:String; protected static const SCROLL_BAR_STYLES:Object = {upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {repeatDelay:500, repeatInterval:35, skin:"ScrollPane_upSkin", contentPadding:0, disabledAlpha:0.5}; public function BaseScrollPane(){ contentWidth = 0; contentHeight = 0; contentPadding = 0; vOffset = 0; _maxHorizontalScrollPosition = 0; _horizontalPageScrollSize = 0; _verticalPageScrollSize = 0; defaultLineScrollSize = 4; useFixedHorizontalScrolling = false; _useBitmpScrolling = false; super(); } protected function handleWheel(_arg1:MouseEvent):void{ if (((((!(enabled)) || (!(_verticalScrollBar.visible)))) || ((contentHeight <= availableHeight)))){ return; }; _verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * verticalLineScrollSize)); setVerticalScrollPosition(_verticalScrollBar.scrollPosition); dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _arg1.delta, horizontalScrollPosition)); } public function get verticalScrollPosition():Number{ return (_verticalScrollBar.scrollPosition); } protected function drawDisabledOverlay():void{ if (enabled){ if (contains(disabledOverlay)){ removeChild(disabledOverlay); }; } else { disabledOverlay.x = (disabledOverlay.y = contentPadding); disabledOverlay.width = availableWidth; disabledOverlay.height = availableHeight; disabledOverlay.alpha = (getStyleValue("disabledAlpha") as Number); addChild(disabledOverlay); }; } public function set verticalScrollPosition(_arg1:Number):void{ drawNow(); _verticalScrollBar.scrollPosition = _arg1; setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); } protected function setContentSize(_arg1:Number, _arg2:Number):void{ if ((((((contentWidth == _arg1)) || (useFixedHorizontalScrolling))) && ((contentHeight == _arg2)))){ return; }; contentWidth = _arg1; contentHeight = _arg2; invalidate(InvalidationType.SIZE); } public function get horizontalScrollPosition():Number{ return (_horizontalScrollBar.scrollPosition); } public function get horizontalScrollBar():ScrollBar{ return (_horizontalScrollBar); } override public function set enabled(_arg1:Boolean):void{ if (enabled == _arg1){ return; }; _verticalScrollBar.enabled = _arg1; _horizontalScrollBar.enabled = _arg1; super.enabled = _arg1; } public function get verticalLineScrollSize():Number{ return (_verticalScrollBar.lineScrollSize); } public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } protected function calculateAvailableSize():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = ScrollBar.WIDTH; _local2 = (contentPadding = Number(getStyleValue("contentPadding"))); _local3 = ((height - (2 * _local2)) - vOffset); vScrollBar = (((_verticalScrollPolicy == ScrollPolicy.ON)) || ((((_verticalScrollPolicy == ScrollPolicy.AUTO)) && ((contentHeight > _local3))))); _local4 = ((width - (vScrollBar) ? _local1 : 0) - (2 * _local2)); _local5 = (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - _local4); hScrollBar = (((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_local5 > 0))))); if (hScrollBar){ _local3 = (_local3 - _local1); }; if (((((((hScrollBar) && (!(vScrollBar)))) && ((_verticalScrollPolicy == ScrollPolicy.AUTO)))) && ((contentHeight > _local3)))){ vScrollBar = true; _local4 = (_local4 - _local1); }; availableHeight = (_local3 + vOffset); availableWidth = _local4; } public function get maxVerticalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentHeight - availableHeight))); } public function set horizontalScrollPosition(_arg1:Number):void{ drawNow(); _horizontalScrollBar.scrollPosition = _arg1; setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); } public function get horizontalLineScrollSize():Number{ return (_horizontalScrollBar.lineScrollSize); } public function set verticalPageScrollSize(_arg1:Number):void{ _verticalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } public function get verticalScrollPolicy():String{ return (_verticalScrollPolicy); } protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function get useBitmapScrolling():Boolean{ return (_useBitmpScrolling); } protected function handleScroll(_arg1:ScrollEvent):void{ if (_arg1.target == _verticalScrollBar){ setVerticalScrollPosition(_arg1.position); } else { setHorizontalScrollPosition(_arg1.position); }; } public function set verticalLineScrollSize(_arg1:Number):void{ _verticalScrollBar.lineScrollSize = _arg1; } public function get verticalScrollBar():ScrollBar{ return (_verticalScrollBar); } protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ } public function set horizontalPageScrollSize(_arg1:Number):void{ _horizontalPageScrollSize = _arg1; invalidate(InvalidationType.SIZE); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STATE)){ drawLayout(); }; updateChildren(); super.draw(); } public function set horizontalScrollPolicy(_arg1:String):void{ _horizontalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } override protected function configUI():void{ var _local1:Graphics; super.configUI(); contentScrollRect = new Rectangle(0, 0, 85, 85); _verticalScrollBar = new ScrollBar(); _verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _verticalScrollBar.visible = false; _verticalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_verticalScrollBar); copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); _horizontalScrollBar = new ScrollBar(); _horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL; _horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true); _horizontalScrollBar.visible = false; _horizontalScrollBar.lineScrollSize = defaultLineScrollSize; addChild(_horizontalScrollBar); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); disabledOverlay = new Shape(); _local1 = disabledOverlay.graphics; _local1.beginFill(0xFFFFFF); _local1.drawRect(0, 0, width, height); _local1.endFill(); addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true); } protected function calculateContentWidth():void{ } public function get verticalPageScrollSize():Number{ if (isNaN(availableHeight)){ drawNow(); }; return (((((_verticalPageScrollSize == 0)) && (!(isNaN(availableHeight))))) ? availableHeight : _verticalPageScrollSize); } protected function drawLayout():void{ calculateAvailableSize(); calculateContentWidth(); background.width = width; background.height = height; if (vScrollBar){ _verticalScrollBar.visible = true; _verticalScrollBar.x = ((width - ScrollBar.WIDTH) - contentPadding); _verticalScrollBar.y = contentPadding; _verticalScrollBar.height = availableHeight; } else { _verticalScrollBar.visible = false; }; _verticalScrollBar.setScrollProperties(availableHeight, 0, (contentHeight - availableHeight), verticalPageScrollSize); setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false); if (hScrollBar){ _horizontalScrollBar.visible = true; _horizontalScrollBar.x = contentPadding; _horizontalScrollBar.y = ((height - ScrollBar.WIDTH) - contentPadding); _horizontalScrollBar.width = availableWidth; } else { _horizontalScrollBar.visible = false; }; _horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), horizontalPageScrollSize); setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false); drawDisabledOverlay(); } protected function drawBackground():void{ var _local1:DisplayObject; _local1 = background; background = getDisplayObjectInstance(getStyleValue("skin")); background.width = width; background.height = height; addChildAt(background, 0); if (((!((_local1 == null))) && (!((_local1 == background))))){ removeChild(_local1); }; } public function set horizontalLineScrollSize(_arg1:Number):void{ _horizontalScrollBar.lineScrollSize = _arg1; } public function get horizontalPageScrollSize():Number{ if (isNaN(availableWidth)){ drawNow(); }; return (((((_horizontalPageScrollSize == 0)) && (!(isNaN(availableWidth))))) ? availableWidth : _horizontalPageScrollSize); } public function get maxHorizontalScrollPosition():Number{ drawNow(); return (Math.max(0, (contentWidth - availableWidth))); } protected function setStyles():void{ copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES); copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES); } protected function updateChildren():void{ _verticalScrollBar.enabled = (_horizontalScrollBar.enabled = enabled); _verticalScrollBar.drawNow(); _horizontalScrollBar.drawNow(); } public function set verticalScrollPolicy(_arg1:String):void{ _verticalScrollPolicy = _arg1; invalidate(InvalidationType.SIZE); } public function set useBitmapScrolling(_arg1:Boolean):void{ _useBitmpScrolling = _arg1; invalidate(InvalidationType.STATE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, ScrollBar.getStyleDefinition())); } } }//package fl.containers
Section 93
//DataGridCellEditor (fl.controls.dataGridClasses.DataGridCellEditor) package fl.controls.dataGridClasses { import fl.controls.listClasses.*; import fl.controls.*; public class DataGridCellEditor extends TextInput implements ICellRenderer { protected var _data:Object; protected var _listData:ListData; private static var defaultStyles:Object = {textPadding:1, textFormat:null, upSkin:"DataGridCellEditor_skin"}; public function DataGridCellEditor():void{ } public function get selected():Boolean{ return (false); } public function set listData(_arg1:ListData):void{ _listData = _arg1; text = _listData.label; } public function setMouseState(_arg1:String):void{ } public function set selected(_arg1:Boolean):void{ } public function set data(_arg1:Object):void{ _data = _arg1; } public function get listData():ListData{ return (_listData); } public function get data():Object{ return (_data); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls.dataGridClasses
Section 94
//DataGridColumn (fl.controls.dataGridClasses.DataGridColumn) package fl.controls.dataGridClasses { import fl.core.*; import fl.controls.*; public class DataGridColumn { private var _headerText:String; public var editorDataField:String;// = "text" private var forceImport:DataGridCellEditor; private var _headerRenderer:Object; public var sortOptions:uint;// = 0 private var _cellRenderer:Object; private var _columnName:String; public var resizable:Boolean;// = true private var _sortCompareFunction:Function; private var _visible:Boolean;// = true public var sortDescending:Boolean;// = false public var owner:DataGrid; private var _imeMode:String; private var _width:Number;// = 100 public var editable:Boolean;// = true public var itemEditor:Object;// = "fl.controls.dataGridClasses.DataGridCellEditor" public var explicitWidth:Number; private var _minWidth:Number;// = 20 private var _labelFunction:Function; public var sortable:Boolean;// = true public var colNum:Number; public var dataField:String; public function DataGridColumn(_arg1:String=null){ _minWidth = 20; _width = 100; _visible = true; sortable = true; resizable = true; editable = true; itemEditor = "fl.controls.dataGridClasses.DataGridCellEditor"; editorDataField = "text"; sortDescending = false; sortOptions = 0; super(); if (_arg1){ dataField = _arg1; headerText = _arg1; }; } public function set headerRenderer(_arg1:Object):void{ _headerRenderer = _arg1; if (owner){ owner.invalidate(InvalidationType.DATA); }; } public function get imeMode():String{ return (_imeMode); } public function setWidth(_arg1:Number):void{ _width = _arg1; } public function set width(_arg1:Number):void{ var _local2:Boolean; explicitWidth = _arg1; if (owner != null){ _local2 = resizable; resizable = false; owner.resizeColumn(colNum, _arg1); resizable = _local2; } else { _width = _arg1; }; } public function set cellRenderer(_arg1:Object):void{ _cellRenderer = _arg1; if (owner){ owner.invalidate(InvalidationType.DATA); }; } public function get minWidth():Number{ return (_minWidth); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } public function toString():String{ return ("[object DataGridColumn]"); } public function get visible():Boolean{ return (_visible); } public function itemToLabel(_arg1:Object):String{ var data = _arg1; if (!data){ return (" "); }; if (labelFunction != null){ return (labelFunction(data)); }; if (owner.labelFunction != null){ return (owner.labelFunction(data, this)); }; if ((((typeof(data) == "object")) || ((typeof(data) == "xml")))){ try { data = data[dataField]; } catch(e:Error) { data = null; }; }; if ((data is String)){ return (String(data)); }; try { return (data.toString()); } catch(e:Error) { }; return (" "); } public function set minWidth(_arg1:Number):void{ _minWidth = _arg1; if (_width < _arg1){ _width = _arg1; }; if (owner){ owner.invalidate(InvalidationType.SIZE); }; } public function set headerText(_arg1:String):void{ _headerText = _arg1; if (owner){ owner.invalidate(InvalidationType.DATA); }; } public function set sortCompareFunction(_arg1:Function):void{ _sortCompareFunction = _arg1; } public function get width():Number{ return (_width); } public function get cellRenderer():Object{ return (_cellRenderer); } public function set labelFunction(_arg1:Function):void{ if (_labelFunction == _arg1){ return; }; _labelFunction = _arg1; if (owner){ owner.invalidate(InvalidationType.DATA); }; } public function get headerText():String{ return (((_headerText)!=null) ? _headerText : dataField); } public function get sortCompareFunction():Function{ return (_sortCompareFunction); } public function get headerRenderer():Object{ return (_headerRenderer); } public function get labelFunction():Function{ return (_labelFunction); } public function set visible(_arg1:Boolean):void{ if (_visible != _arg1){ _visible = _arg1; if (owner){ owner.invalidate(InvalidationType.SIZE); }; }; } } }//package fl.controls.dataGridClasses
Section 95
//HeaderRenderer (fl.controls.dataGridClasses.HeaderRenderer) package fl.controls.dataGridClasses { import fl.controls.*; public class HeaderRenderer extends LabelButton { public var _column:uint; private static var defaultStyles:Object = {upSkin:"HeaderRenderer_upSkin", downSkin:"HeaderRenderer_downSkin", overSkin:"HeaderRenderer_overSkin", disabledSkin:"HeaderRenderer_disabledSkin", selectedDisabledSkin:"HeaderRenderer_selectedDisabledSkin", selectedUpSkin:"HeaderRenderer_selectedUpSkin", selectedDownSkin:"HeaderRenderer_selectedDownSkin", selectedOverSkin:"HeaderRenderer_selectedOverSkin", textFormat:null, disabledTextFormat:null, textPadding:5}; public function HeaderRenderer():void{ focusEnabled = false; } public function set column(_arg1:uint):void{ _column = _arg1; } public function get column():uint{ return (_column); } override protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = Number(getStyleValue("textPadding")); textField.height = (textField.textHeight + 4); textField.visible = (label.length > 0); _local2 = (textField.textWidth + 4); _local3 = (textField.textHeight + 4); _local4 = ((icon)==null) ? 0 : (icon.width + 4); _local5 = Math.max(0, Math.min(_local2, ((width - (2 * _local1)) - _local4))); if (icon != null){ icon.x = (((width - _local1) - icon.width) - 2); icon.y = Math.round(((height - icon.height) / 2)); }; textField.width = _local5; textField.x = _local1; textField.y = Math.round(((height - textField.height) / 2)); background.width = width; background.height = height; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls.dataGridClasses
Section 96
//CellRenderer (fl.controls.listClasses.CellRenderer) package fl.controls.listClasses { import fl.controls.*; import flash.events.*; public class CellRenderer extends LabelButton implements ICellRenderer { protected var _data:Object; protected var _listData:ListData; private static var defaultStyles:Object = {upSkin:"CellRenderer_upSkin", downSkin:"CellRenderer_downSkin", overSkin:"CellRenderer_overSkin", disabledSkin:"CellRenderer_disabledSkin", selectedDisabledSkin:"CellRenderer_selectedDisabledSkin", selectedUpSkin:"CellRenderer_selectedUpSkin", selectedDownSkin:"CellRenderer_selectedDownSkin", selectedOverSkin:"CellRenderer_selectedOverSkin", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5}; public function CellRenderer():void{ toggle = true; focusEnabled = false; } override protected function toggleSelected(_arg1:MouseEvent):void{ } override public function get selected():Boolean{ return (super.selected); } public function set listData(_arg1:ListData):void{ _listData = _arg1; label = _listData.label; setStyle("icon", _listData.icon); } override public function set selected(_arg1:Boolean):void{ super.selected = _arg1; } public function set data(_arg1:Object):void{ _data = _arg1; } public function get listData():ListData{ return (_listData); } override public function setSize(_arg1:Number, _arg2:Number):void{ super.setSize(_arg1, _arg2); } override protected function drawLayout():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = 0; if (icon != null){ icon.x = _local1; icon.y = Math.round(((height - icon.height) >> 1)); _local2 = (icon.width + _local1); }; if (label.length > 0){ textField.visible = true; _local3 = Math.max(0, ((width - _local2) - (_local1 * 2))); textField.width = _local3; textField.height = (textField.textHeight + 4); textField.x = (_local2 + _local1); textField.y = Math.round(((height - textField.height) >> 1)); } else { textField.visible = false; }; background.width = width; background.height = height; } public function get data():Object{ return (_data); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls.listClasses
Section 97
//ICellRenderer (fl.controls.listClasses.ICellRenderer) package fl.controls.listClasses { public interface ICellRenderer { function setSize(_arg1:Number, _arg2:Number):void; function get listData():ListData; function get data():Object; function setMouseState(_arg1:String):void; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function set data(_arg1:Object):void; function set selected(_arg1:Boolean):void; function set listData(_arg1:ListData):void; function get selected():Boolean; } }//package fl.controls.listClasses
Section 98
//ListData (fl.controls.listClasses.ListData) package fl.controls.listClasses { import fl.core.*; public class ListData { protected var _index:uint; protected var _owner:UIComponent; protected var _label:String; protected var _icon:Object;// = null protected var _row:uint; protected var _column:uint; public function ListData(_arg1:String, _arg2:Object, _arg3:UIComponent, _arg4:uint, _arg5:uint, _arg6:uint=0){ _icon = null; super(); _label = _arg1; _icon = _arg2; _owner = _arg3; _index = _arg4; _row = _arg5; _column = _arg6; } public function get owner():UIComponent{ return (_owner); } public function get label():String{ return (_label); } public function get row():uint{ return (_row); } public function get index():uint{ return (_index); } public function get icon():Object{ return (_icon); } public function get column():uint{ return (_column); } } }//package fl.controls.listClasses
Section 99
//BaseButton (fl.controls.BaseButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { protected var _selected:Boolean;// = false private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean;// = false protected var _autoRepeat:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 100
//Button (fl.controls.Button) package fl.controls { import fl.core.*; import flash.display.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean;// = false private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function Button(){ _emphasized = false; super(); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 101
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 102
//ComboBox (fl.controls.ComboBox) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import fl.data.*; import flash.geom.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class ComboBox extends UIComponent implements IFocusManagerComponent { protected var _dropdownWidth:Number; protected var highlightedCell:int;// = -1 protected var _prompt:String; protected var isOpen:Boolean;// = false protected var list:List; protected var _rowCount:uint;// = 5 protected var currentIndex:int; protected var isKeyDown:Boolean;// = false protected var _labels:Array; protected var background:BaseButton; protected var inputField:TextInput; protected var listOverIndex:uint; protected var editableValue:String; protected var _editable:Boolean;// = false private var collectionItemImport:SimpleCollectionItem; protected static const BACKGROUND_STYLES:Object = {overSkin:"overSkin", downSkin:"downSkin", upSkin:"upSkin", disabledSkin:"disabledSkin", repeatInterval:"repeatInterval"}; protected static const LIST_STYLES:Object = {upSkin:"comboListUpSkin", overSkin:"comboListOverSkin", downSkin:"comobListDownSkin", disabledSkin:"comboListDisabledSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval", textFormat:"textFormat", disabledAlpha:"disabledAlpha", skin:"listSkin"}; private static var defaultStyles:Object = {upSkin:"ComboBox_upSkin", downSkin:"ComboBox_downSkin", overSkin:"ComboBox_overSkin", disabledSkin:"ComboBox_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, buttonWidth:24, disabledAlpha:null, listSkin:null}; public static var createAccessibilityImplementation:Function; public function ComboBox(){ _rowCount = 5; _editable = false; isOpen = false; highlightedCell = -1; isKeyDown = false; super(); } protected function drawList():void{ list.rowCount = Math.max(0, Math.min(_rowCount, list.dataProvider.length)); } public function set imeMode(_arg1:String):void{ inputField.imeMode = _arg1; } public function get dropdown():List{ return (list); } public function get dropdownWidth():Number{ return (list.width); } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (list.sortItemsOn(_arg1, _arg2)); } protected function onEnter(_arg1:ComponentEvent):void{ _arg1.stopPropagation(); } public function removeItemAt(_arg1:uint):void{ list.removeItemAt(_arg1); invalidate(InvalidationType.DATA); } public function open():void{ currentIndex = selectedIndex; if (((isOpen) || ((length == 0)))){ return; }; dispatchEvent(new Event(Event.OPEN)); isOpen = true; addEventListener(Event.ENTER_FRAME, addCloseListener, false, 0, true); positionList(); list.scrollToSelected(); stage.addChild(list); } public function get selectedItem():Object{ return (list.selectedItem); } public function set text(_arg1:String):void{ if (!editable){ return; }; inputField.text = _arg1; } public function get labelField():String{ return (list.labelField); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; var _local3:uint; var _local4:Number; var _local5:int; isKeyDown = true; if (_arg1.ctrlKey){ switch (_arg1.keyCode){ case Keyboard.UP: if (highlightedCell > -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); break; case Keyboard.DOWN: open(); break; }; return; }; _arg1.stopPropagation(); _local2 = Math.max(((calculateAvailableHeight() / list.rowHeight) << 0), 1); _local3 = selectedIndex; _local4 = ((highlightedCell)==-1) ? selectedIndex : highlightedCell; _local5 = -1; switch (_arg1.keyCode){ case Keyboard.SPACE: if (isOpen){ close(); } else { open(); }; return; case Keyboard.ESCAPE: if (isOpen){ if (highlightedCell > -1){ selectedIndex = selectedIndex; }; close(); }; return; case Keyboard.UP: _local5 = Math.max(0, (_local4 - 1)); break; case Keyboard.DOWN: _local5 = Math.min((length - 1), (_local4 + 1)); break; case Keyboard.PAGE_UP: _local5 = Math.max((_local4 - _local2), 0); break; case Keyboard.PAGE_DOWN: _local5 = Math.min((_local4 + _local2), (length - 1)); break; case Keyboard.HOME: _local5 = 0; break; case Keyboard.END: _local5 = (length - 1); break; case Keyboard.ENTER: if (((_editable) && ((highlightedCell == -1)))){ editableValue = inputField.text; selectedIndex = -1; } else { if (((isOpen) && ((highlightedCell > -1)))){ editableValue = null; selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; }; dispatchEvent(new ComponentEvent(ComponentEvent.ENTER)); close(); return; default: if (editable){ break; }; _local5 = list.getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), _local4); break; }; if (_local5 > -1){ if (isOpen){ highlightCell(_local5); inputField.text = list.itemToLabel(getItemAt(_local5)); } else { highlightCell(); selectedIndex = _local5; dispatchEvent(new Event(Event.CHANGE)); }; }; } public function set dropdownWidth(_arg1:Number):void{ _dropdownWidth = _arg1; invalidate(InvalidationType.SIZE); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ super.focusInHandler(_arg1); if (editable){ stage.focus = inputField.textField; }; } protected function onStageClick(_arg1:MouseEvent):void{ if (!isOpen){ return; }; if (((!(contains((_arg1.target as DisplayObject)))) && (!(list.contains((_arg1.target as DisplayObject)))))){ if (highlightedCell != -1){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; } protected function handleDataChange(_arg1:DataChangeEvent):void{ invalidate(InvalidationType.DATA); } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ isKeyDown = false; } protected function onListItemUp(_arg1:MouseEvent):void{ var _local2:*; stage.removeEventListener(MouseEvent.MOUSE_UP, onListItemUp); if (((!((_arg1.target is ICellRenderer))) || (!(list.contains((_arg1.target as DisplayObject)))))){ return; }; editableValue = null; _local2 = selectedIndex; selectedIndex = _arg1.target.listData.index; if (_local2 != selectedIndex){ dispatchEvent(new Event(Event.CHANGE)); }; close(); } public function removeAll():void{ list.removeAll(); inputField.text = ""; invalidate(InvalidationType.DATA); } public function set selectedItem(_arg1:Object):void{ list.selectedItem = _arg1; invalidate(InvalidationType.SELECTED); } protected function highlightCell(_arg1:int=-1):void{ var _local2:ICellRenderer; if (highlightedCell > -1){ _local2 = list.itemToCellRenderer(getItemAt(highlightedCell)); if (_local2 != null){ _local2.setMouseState("up"); }; }; if (_arg1 == -1){ return; }; list.scrollToIndex(_arg1); list.drawNow(); _local2 = list.itemToCellRenderer(getItemAt(_arg1)); if (_local2 != null){ _local2.setMouseState("over"); highlightedCell = _arg1; }; } public function itemToLabel(_arg1:Object):String{ if (_arg1 == null){ return (""); }; return (list.itemToLabel(_arg1)); } public function addItemAt(_arg1:Object, _arg2:uint):void{ list.addItemAt(_arg1, _arg2); invalidate(InvalidationType.DATA); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (list.replaceItemAt(_arg1, _arg2)); } protected function showPrompt():void{ inputField.text = _prompt; } public function set rowCount(_arg1:uint):void{ _rowCount = _arg1; invalidate(InvalidationType.SIZE); } public function get restrict():String{ return (inputField.restrict); } protected function setEmbedFonts():void{ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ inputField.textField.embedFonts = _local1; }; } public function sortItems(... _args){ return (list.sortItems.apply(list, _args)); } public function set labelField(_arg1:String):void{ list.labelField = _arg1; invalidate(InvalidationType.DATA); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; drawTextField(); } public function set prompt(_arg1:String):void{ if (_arg1 == ""){ _prompt = null; } else { _prompt = _arg1; }; invalidate(InvalidationType.STATE); } public function get length():int{ return (list.length); } protected function drawTextField():void{ inputField.setStyle("upSkin", ""); inputField.setStyle("disabledSkin", ""); inputField.enabled = enabled; inputField.editable = _editable; inputField.textField.selectable = ((enabled) && (_editable)); inputField.mouseEnabled = (inputField.mouseChildren = ((enabled) && (_editable))); inputField.focusEnabled = false; if (_editable){ inputField.addEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus, false, 0, true); inputField.addEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut, false, 0, true); } else { inputField.removeEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus); inputField.removeEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut); }; } protected function onInputFieldFocusOut(_arg1:FocusEvent):void{ inputField.removeEventListener(ComponentEvent.ENTER, onEnter); selectedIndex = selectedIndex; } protected function passEvent(_arg1:Event):void{ dispatchEvent(_arg1); } public function get imeMode():String{ return (inputField.imeMode); } public function get labelFunction():Function{ return (list.labelFunction); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return ((list.height - (_local1 * 2))); } public function get selectedIndex():int{ return (list.selectedIndex); } override protected function focusOutHandler(_arg1:FocusEvent):void{ isKeyDown = false; if (isOpen){ if (((!(_arg1.relatedObject)) || (!(list.contains(_arg1.relatedObject))))){ if (((!((highlightedCell == -1))) && (!((highlightedCell == selectedIndex))))){ selectedIndex = highlightedCell; dispatchEvent(new Event(Event.CHANGE)); }; close(); }; }; super.focusOutHandler(_arg1); } public function get selectedLabel():String{ if (editableValue != null){ return (editableValue); }; if (selectedIndex == -1){ return (null); }; return (itemToLabel(selectedItem)); } public function get text():String{ return (inputField.text); } protected function onListChange(_arg1:Event):void{ editableValue = null; dispatchEvent(_arg1); invalidate(InvalidationType.SELECTED); if (isKeyDown){ return; }; close(); } protected function onToggleListVisibility(_arg1:MouseEvent):void{ _arg1.stopPropagation(); dispatchEvent(_arg1); if (isOpen){ close(); } else { open(); stage.addEventListener(MouseEvent.MOUSE_UP, onListItemUp, false, 0, true); }; } override protected function draw():void{ var _local1:*; _local1 = selectedIndex; if ((((_local1 == -1)) && (((((!((prompt == null))) || (editable))) || ((length == 0)))))){ _local1 = Math.max(-1, Math.min(_local1, (length - 1))); } else { editableValue = null; _local1 = Math.max(0, Math.min(_local1, (length - 1))); }; if (list.selectedIndex != _local1){ list.selectedIndex = _local1; invalidate(InvalidationType.SELECTED, false); }; if (isInvalid(InvalidationType.STYLES)){ setStyles(); setEmbedFonts(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.STATE)){ drawTextFormat(); drawLayout(); invalidate(InvalidationType.DATA); }; if (isInvalid(InvalidationType.DATA)){ drawList(); invalidate(InvalidationType.SELECTED, true); }; if (isInvalid(InvalidationType.SELECTED)){ if ((((_local1 == -1)) && (!((editableValue == null))))){ inputField.text = editableValue; } else { if (_local1 > -1){ if (length > 0){ inputField.horizontalScrollPosition = 0; inputField.text = itemToLabel(list.selectedItem); }; } else { if ((((_local1 == -1)) && (!((_prompt == null))))){ showPrompt(); } else { inputField.text = ""; }; }; }; if (((((editable) && ((selectedIndex > -1)))) && ((stage.focus == inputField.textField)))){ inputField.setSelection(0, inputField.length); }; }; drawTextField(); super.draw(); } public function addItem(_arg1:Object):void{ list.addItem(_arg1); invalidate(InvalidationType.DATA); } public function get rowCount():uint{ return (_rowCount); } override protected function configUI():void{ super.configUI(); background = new BaseButton(); background.focusEnabled = false; copyStylesToChild(background, BACKGROUND_STYLES); background.addEventListener(MouseEvent.MOUSE_DOWN, onToggleListVisibility, false, 0, true); addChild(background); inputField = new TextInput(); inputField.focusTarget = (this as IFocusManagerComponent); inputField.focusEnabled = false; inputField.addEventListener(Event.CHANGE, onTextInput, false, 0, true); addChild(inputField); list = new List(); list.focusEnabled = false; copyStylesToChild(list, LIST_STYLES); list.addEventListener(Event.CHANGE, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_CLICK, onListChange, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OUT, passEvent, false, 0, true); list.addEventListener(ListEvent.ITEM_ROLL_OVER, passEvent, false, 0, true); list.verticalScrollBar.addEventListener(Event.SCROLL, passEvent, false, 0, true); } protected function positionList():void{ var _local1:Point; _local1 = localToGlobal(new Point(0, 0)); list.x = _local1.x; if (((_local1.y + height) + list.height) > stage.stageHeight){ list.y = (_local1.y - list.height); } else { list.y = (_local1.y + height); }; } public function get value():String{ var _local1:Object; if (editableValue != null){ return (editableValue); }; _local1 = selectedItem; if (((!(_editable)) && (!((_local1.data == null))))){ return (_local1.data); }; return (itemToLabel(_local1)); } public function get prompt():String{ return (_prompt); } public function set dataProvider(_arg1:DataProvider):void{ _arg1.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); list.dataProvider = _arg1; invalidate(InvalidationType.DATA); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; if (!_editable){ return; }; inputField.restrict = _arg1; } protected function onTextInput(_arg1:Event):void{ _arg1.stopPropagation(); if (!_editable){ return; }; editableValue = inputField.text; selectedIndex = -1; dispatchEvent(new Event(Event.CHANGE)); } protected function onInputFieldFocus(_arg1:FocusEvent):void{ inputField.addEventListener(ComponentEvent.ENTER, onEnter, false, 0, true); close(); } public function getItemAt(_arg1:uint):Object{ return (list.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (ComboBox.createAccessibilityImplementation != null){ ComboBox.createAccessibilityImplementation(this); }; } protected function drawLayout():void{ var _local1:Number; var _local2:Number; _local1 = (getStyleValue("buttonWidth") as Number); _local2 = (getStyleValue("textPadding") as Number); background.setSize(width, height); inputField.x = (inputField.y = _local2); inputField.setSize(((width - _local1) - _local2), (height - _local2)); list.width = (isNaN(_dropdownWidth)) ? width : _dropdownWidth; background.enabled = enabled; background.drawNow(); } public function removeItem(_arg1:Object):Object{ return (list.removeItem(_arg1)); } private function addCloseListener(_arg1:Event){ removeEventListener(Event.ENTER_FRAME, addCloseListener); if (!isOpen){ return; }; stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false, 0, true); } public function get dataProvider():DataProvider{ return (list.dataProvider); } public function get textField():TextInput{ return (inputField); } protected function setStyles():void{ copyStylesToChild(background, BACKGROUND_STYLES); copyStylesToChild(list, LIST_STYLES); } public function set labelFunction(_arg1:Function):void{ list.labelFunction = _arg1; invalidate(InvalidationType.DATA); } protected function drawTextFormat():void{ var _local1:TextFormat; _local1 = (getStyleValue((_enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local1 == null){ _local1 = new TextFormat(); }; inputField.textField.defaultTextFormat = _local1; inputField.textField.setTextFormat(_local1); setEmbedFonts(); } public function set selectedIndex(_arg1:int):void{ list.selectedIndex = _arg1; highlightCell(); invalidate(InvalidationType.SELECTED); } public function close():void{ highlightCell(); highlightedCell = -1; if (!isOpen){ return; }; dispatchEvent(new Event(Event.CLOSE)); stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStageClick); isOpen = false; stage.removeChild(list); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, List.getStyleDefinition())); } } }//package fl.controls
Section 103
//DataGrid (fl.controls.DataGrid) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import fl.data.*; import flash.geom.*; import fl.managers.*; import fl.events.*; import fl.controls.dataGridClasses.*; import flash.ui.*; public class DataGrid extends SelectableList implements IFocusManagerComponent { protected var _showHeaders:Boolean;// = true protected var _sortIndex:int;// = -1 protected var _minColumnWidth:Number; protected var _headerRenderer:Object; public var sortableColumns:Boolean;// = true protected var activeCellRenderersMap:Dictionary; protected var _labelFunction:Function; protected var headerSortArrow:Sprite; protected var _sortDescending:Boolean;// = false protected var losingFocus:Boolean;// = false protected var maxHeaderHeight:Number;// = 25 protected var minColumnWidthInvalid:Boolean;// = false protected var _rowHeight:Number;// = 20 protected var _cellRenderer:Object; protected var proposedEditedItemPosition; public var editable:Boolean;// = false protected var dragHandlesMap:Dictionary; protected var header:Sprite; protected var availableCellRenderersMap:Dictionary; protected var _columns:Array; public var resizableColumns:Boolean;// = true protected var columnStretchStartWidth:Number; protected var actualRowIndex:int; protected var _editedItemPosition:Object; protected var editedItemPositionChanged:Boolean;// = false protected var actualColIndex:int; protected var columnStretchCursor:Sprite; protected var visibleColumns:Array; protected var headerMask:Sprite; public var itemEditorInstance:Object; protected var displayableColumns:Array; protected var columnStretchIndex:Number;// = -1 protected var columnsInvalid:Boolean;// = true protected var currentHoveredRow:int;// = -1 protected var isPressed:Boolean;// = false protected var lastSortIndex:int;// = -1 protected var columnStretchStartX:Number; protected var _headerHeight:Number;// = 25 protected static const HEADER_STYLES:Object = {disabledSkin:"headerDisabledSkin", downSkin:"headerDownSkin", overSkin:"headerOverSkin", upSkin:"headerUpSkin", textFormat:"headerTextFormat", disabledTextFormat:"headerDisabledTextFormat", textPadding:"headerTextPadding"}; private static var defaultStyles:Object = {headerUpSkin:"HeaderRenderer_upSkin", headerDownSkin:"HeaderRenderer_downSkin", headerOverSkin:"HeaderRenderer_overSkin", headerDisabledSkin:"HeaderRenderer_disabledSkin", headerSortArrowDescSkin:"HeaderSortArrow_descIcon", headerSortArrowAscSkin:"HeaderSortArrow_ascIcon", columnStretchCursorSkin:"ColumnStretch_cursor", columnDividerSkin:null, headerTextFormat:null, headerDisabledTextFormat:null, headerTextPadding:5, headerRenderer:HeaderRenderer, focusRectSkin:null, focusRectPadding:null, skin:"DataGrid_skin"}; public static var createAccessibilityImplementation:Function; public function DataGrid(){ _rowHeight = 20; _headerHeight = 25; _showHeaders = true; columnsInvalid = true; minColumnWidthInvalid = false; columnStretchIndex = -1; _sortIndex = -1; lastSortIndex = -1; _sortDescending = false; editedItemPositionChanged = false; isPressed = false; losingFocus = false; maxHeaderHeight = 25; currentHoveredRow = -1; editable = false; resizableColumns = true; sortableColumns = true; super(); if (_columns == null){ _columns = []; }; _horizontalScrollPolicy = ScrollPolicy.OFF; activeCellRenderersMap = new Dictionary(true); availableCellRenderersMap = new Dictionary(true); addEventListener(DataGridEvent.ITEM_EDIT_BEGINNING, itemEditorItemEditBeginningHandler, false, -50); addEventListener(DataGridEvent.ITEM_EDIT_BEGIN, itemEditorItemEditBeginHandler, false, -50); addEventListener(DataGridEvent.ITEM_EDIT_END, itemEditorItemEditEndHandler, false, -50); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } override protected function drawList():void{ var _local1:uint; var _local2:uint; var _local3:Number; var _local4:Number; var _local5:uint; var _local6:Object; var _local7:ICellRenderer; var _local8:Array; var _local9:DataGridColumn; var _local10:Boolean; var _local11:Dictionary; var _local12:DataGridColumn; var _local13:Sprite; var _local14:UIComponent; var _local15:Array; var _local16:uint; var _local17:uint; var _local18:Number; var _local19:DataGridColumn; var _local20:Object; var _local21:Array; var _local22:Dictionary; var _local23:Object; var _local24:HeaderRenderer; var _local25:Sprite; var _local26:Graphics; var _local27:Boolean; var _local28:String; if (showHeaders){ header.visible = true; header.x = (contentPadding - _horizontalScrollPosition); header.y = contentPadding; listHolder.y = (contentPadding + headerHeight); _local18 = Math.floor((availableHeight - headerHeight)); _verticalScrollBar.setScrollProperties(_local18, 0, (contentHeight - _local18), _verticalScrollBar.pageScrollSize); } else { header.visible = false; listHolder.y = contentPadding; }; listHolder.x = contentPadding; contentScrollRect = listHolder.scrollRect; contentScrollRect.x = _horizontalScrollPosition; contentScrollRect.y = (vOffset + (Math.floor(_verticalScrollPosition) % rowHeight)); listHolder.scrollRect = contentScrollRect; listHolder.cacheAsBitmap = useBitmapScrolling; _local1 = Math.min(Math.max((length - 1), 0), Math.floor((_verticalScrollPosition / rowHeight))); _local2 = Math.min(Math.max((length - 1), 0), ((_local1 + rowCount) + 1)); _local10 = list.hitTestPoint(stage.mouseX, stage.mouseY); calculateColumnSizes(); _local11 = (renderedItems = new Dictionary(true)); if (length > 0){ _local5 = _local1; while (_local5 <= _local2) { _local11[_dataProvider.getItemAt(_local5)] = true; _local5++; }; }; _local3 = 0; _local12 = (visibleColumns[0] as DataGridColumn); _local5 = 0; while (_local5 < displayableColumns.length) { _local19 = (displayableColumns[_local5] as DataGridColumn); if (_local19 != _local12){ _local3 = (_local3 + _local19.width); } else { break; }; _local5++; }; while (header.numChildren > 0) { header.removeChildAt(0); }; dragHandlesMap = new Dictionary(true); _local15 = []; _local16 = visibleColumns.length; _local17 = 0; while (_local17 < _local16) { _local9 = (visibleColumns[_local17] as DataGridColumn); _local15.push(_local9.colNum); if (showHeaders){ _local23 = ((_local9.headerRenderer)!=null) ? _local9.headerRenderer : _headerRenderer; _local24 = (getDisplayObjectInstance(_local23) as HeaderRenderer); if (_local24 != null){ _local24.addEventListener(MouseEvent.CLICK, handleHeaderRendererClick, false, 0, true); _local24.x = _local3; _local24.y = 0; _local24.setSize(_local9.width, headerHeight); _local24.column = _local9.colNum; _local24.label = _local9.headerText; header.addChildAt(_local24, _local17); copyStylesToChild(_local24, HEADER_STYLES); if ((((((sortIndex == -1)) && ((lastSortIndex == -1)))) || (!((_local9.colNum == sortIndex))))){ _local24.setStyle("icon", null); } else { _local24.setStyle("icon", (sortDescending) ? getStyleValue("headerSortArrowAscSkin") : getStyleValue("headerSortArrowDescSkin")); }; if ((((((_local17 < (_local16 - 1))) && (resizableColumns))) && (_local9.resizable))){ _local25 = new Sprite(); _local26 = _local25.graphics; _local26.beginFill(0, 0); _local26.drawRect(0, 0, 3, headerHeight); _local26.endFill(); _local25.x = ((_local3 + _local9.width) - 2); _local25.y = 0; _local25.alpha = 0; _local25.addEventListener(MouseEvent.MOUSE_OVER, handleHeaderResizeOver, false, 0, true); _local25.addEventListener(MouseEvent.MOUSE_OUT, handleHeaderResizeOut, false, 0, true); _local25.addEventListener(MouseEvent.MOUSE_DOWN, handleHeaderResizeDown, false, 0, true); header.addChild(_local25); dragHandlesMap[_local25] = _local9.colNum; }; if ((((((_local17 == (_local16 - 1))) && ((_horizontalScrollPosition == 0)))) && ((availableWidth > (_local3 + _local9.width))))){ _local4 = Math.floor((availableWidth - _local3)); _local24.setSize(_local4, headerHeight); } else { _local4 = _local9.width; }; _local24.drawNow(); }; }; _local20 = ((_local9.cellRenderer)!=null) ? _local9.cellRenderer : _cellRenderer; _local21 = availableCellRenderersMap[_local9]; _local8 = activeCellRenderersMap[_local9]; if (_local8 == null){ _local8 = []; activeCellRenderersMap[_local9] = _local8; }; if (_local21 == null){ _local21 = []; availableCellRenderersMap[_local9] = _local21; }; _local22 = new Dictionary(true); while (_local8.length > 0) { _local7 = _local8.pop(); _local6 = _local7.data; if ((((_local11[_local6] == null)) || ((invalidItems[_local6] == true)))){ _local21.push(_local7); } else { _local22[_local6] = _local7; invalidItems[_local6] = true; }; list.removeChild((_local7 as DisplayObject)); }; if (length > 0){ _local5 = _local1; while (_local5 <= _local2) { _local27 = false; _local6 = _dataProvider.getItemAt(_local5); if (_local22[_local6] != null){ _local27 = true; _local7 = _local22[_local6]; delete _local22[_local6]; } else { if (_local21.length > 0){ _local7 = (_local21.pop() as ICellRenderer); } else { _local7 = (getDisplayObjectInstance(_local20) as ICellRenderer); _local13 = (_local7 as Sprite); if (_local13 != null){ _local13.addEventListener(MouseEvent.CLICK, handleCellRendererClick, false, 0, true); _local13.addEventListener(MouseEvent.ROLL_OVER, handleCellRendererMouseEvent, false, 0, true); _local13.addEventListener(MouseEvent.ROLL_OUT, handleCellRendererMouseEvent, false, 0, true); _local13.addEventListener(Event.CHANGE, handleCellRendererChange, false, 0, true); _local13.doubleClickEnabled = true; _local13.addEventListener(MouseEvent.DOUBLE_CLICK, handleCellRendererDoubleClick, false, 0, true); if (_local13["setStyle"] != null){ for (_local28 in rendererStyles) { var _local31 = _local13; _local31["setStyle"](_local28, rendererStyles[_local28]); }; }; }; }; }; list.addChild((_local7 as Sprite)); _local8.push(_local7); _local7.x = _local3; _local7.y = (rowHeight * (_local5 - _local1)); _local7.setSize(((_local17)==(_local16 - 1)) ? _local4 : _local9.width, rowHeight); if (!_local27){ _local7.data = _local6; }; _local7.listData = new ListData(columnItemToLabel(_local9.colNum, _local6), null, this, _local5, _local5, _local17); if (((_local10) && (isHovered(_local7)))){ _local7.setMouseState("over"); currentHoveredRow = _local5; } else { _local7.setMouseState("up"); }; _local7.selected = !((_selectedIndices.indexOf(_local5) == -1)); if ((_local7 is UIComponent)){ _local14 = (_local7 as UIComponent); _local14.drawNow(); }; _local5++; }; }; _local3 = (_local3 + _local9.width); _local17++; }; _local5 = 0; while (_local5 < _columns.length) { if (_local15.indexOf(_local5) == -1){ removeCellRenderersByColumn((_columns[_local5] as DataGridColumn)); }; _local5++; }; if (editedItemPositionChanged){ editedItemPositionChanged = false; commitEditedItemPosition(proposedEditedItemPosition); proposedEditedItemPosition = undefined; }; invalidItems = new Dictionary(true); } protected function itemEditorItemEditBeginningHandler(_arg1:DataGridEvent):void{ if (!_arg1.isDefaultPrevented()){ setEditedItemPosition({columnIndex:_arg1.columnIndex, rowIndex:uint(_arg1.rowIndex)}); } else { if (!itemEditorInstance){ _editedItemPosition = null; editable = false; setFocus(); editable = true; }; }; } protected function itemEditorItemEditEndHandler(_arg1:DataGridEvent):void{ var _local2:Boolean; var _local3:Object; var _local4:String; var _local5:Object; var _local6:String; var _local7:XML; var _local8:IFocusManager; if (!_arg1.isDefaultPrevented()){ _local2 = false; if (((itemEditorInstance) && (!((_arg1.reason == DataGridEventReason.CANCELLED))))){ _local3 = itemEditorInstance[_columns[_arg1.columnIndex].editorDataField]; _local4 = _columns[_arg1.columnIndex].dataField; _local5 = _arg1.itemRenderer.data; _local6 = ""; for each (_local7 in describeType(_local5).variable) { if (_local4 == _local7.@name.toString()){ _local6 = _local7.@type.toString(); break; }; }; switch (_local6){ case "String": if (!(_local3 is String)){ _local3 = _local3.toString(); }; break; case "uint": if (!(_local3 is uint)){ _local3 = uint(_local3); }; break; case "int": if (!(_local3 is int)){ _local3 = int(_local3); }; break; case "Number": if (!(_local3 is Number)){ _local3 = Number(_local3); }; break; }; if (_local5[_local4] != _local3){ _local2 = true; _local5[_local4] = _local3; }; _arg1.itemRenderer.data = _local5; }; } else { if (_arg1.reason != DataGridEventReason.OTHER){ if (((itemEditorInstance) && (_editedItemPosition))){ if (selectedIndex != _editedItemPosition.rowIndex){ selectedIndex = _editedItemPosition.rowIndex; }; _local8 = focusManager; if ((itemEditorInstance is IFocusManagerComponent)){ _local8.setFocus(InteractiveObject(itemEditorInstance)); }; }; }; }; if ((((_arg1.reason == DataGridEventReason.OTHER)) || (!(_arg1.isDefaultPrevented())))){ destroyItemEditor(); }; } public function get editedItemPosition():Object{ if (_editedItemPosition){ return ({rowIndex:_editedItemPosition.rowIndex, columnIndex:_editedItemPosition.columnIndex}); }; return (_editedItemPosition); } protected function setEditedItemPosition(_arg1:Object):void{ editedItemPositionChanged = true; proposedEditedItemPosition = _arg1; if (((_arg1) && (!((_arg1.rowIndex == selectedIndex))))){ selectedIndex = _arg1.rowIndex; }; invalidate(InvalidationType.DATA); } public function set headerHeight(_arg1:Number):void{ maxHeaderHeight = _arg1; _headerHeight = Math.max(0, _arg1); invalidate(InvalidationType.SIZE); } protected function handleHeaderResizeDown(_arg1:MouseEvent):void{ var _local2:Sprite; var _local3:Number; var _local4:DataGridColumn; _local2 = (_arg1.currentTarget as Sprite); _local3 = dragHandlesMap[_local2]; _local4 = getColumnAt(_local3); columnStretchIndex = _local3; columnStretchStartX = _arg1.stageX; columnStretchStartWidth = _local4.width; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleHeaderResizeMove, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, handleHeaderResizeUp, false, 0, true); } protected function deactivateHandler(_arg1:Event):void{ if (itemEditorInstance){ endEdit(DataGridEventReason.OTHER); losingFocus = true; setFocus(); }; } protected function keyFocusChangeHandler(_arg1:FocusEvent):void{ if ((((((_arg1.keyCode == Keyboard.TAB)) && (!(_arg1.isDefaultPrevented())))) && (findNextItemRenderer(_arg1.shiftKey)))){ _arg1.preventDefault(); }; } override protected function handleDataChange(_arg1:DataChangeEvent):void{ super.handleDataChange(_arg1); if (_columns == null){ _columns = []; }; if (_columns.length == 0){ createColumnsFromDataProvider(); }; } public function set editedItemPosition(_arg1:Object):void{ var _local2:Object; _local2 = {rowIndex:_arg1.rowIndex, columnIndex:_arg1.columnIndex}; setEditedItemPosition(_local2); } override public function itemToCellRenderer(_arg1:Object):ICellRenderer{ return (null); } public function getCellRendererAt(_arg1:uint, _arg2:uint):ICellRenderer{ var _local3:DataGridColumn; var _local4:Array; var _local5:uint; var _local6:ICellRenderer; _local3 = (_columns[_arg2] as DataGridColumn); if (_local3 != null){ _local4 = (activeCellRenderersMap[_local3] as Array); if (_local4 != null){ _local5 = 0; while (_local5 < _local4.length) { _local6 = (_local4[_local5] as ICellRenderer); if (_local6.listData.row == _arg1){ return (_local6); }; _local5++; }; }; }; return (null); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (((!(selectable)) || (itemEditorInstance))){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.SPACE: if (caretIndex == -1){ caretIndex = 0; }; scrollToIndex(caretIndex); doKeySelection(caretIndex, _arg1.shiftKey, _arg1.ctrlKey); break; default: break; }; _arg1.stopPropagation(); } protected function handleHeaderResizeUp(_arg1:MouseEvent):void{ var _local2:Sprite; var _local3:DataGridColumn; var _local4:HeaderRenderer; var _local5:uint; var _local6:DataGridEvent; _local2 = (_arg1.currentTarget as Sprite); _local3 = (_columns[columnStretchIndex] as DataGridColumn); _local5 = 0; while (_local5 < header.numChildren) { _local4 = (header.getChildAt(_local5) as HeaderRenderer); if (((_local4) && ((_local4.column == columnStretchIndex)))){ break; }; _local5++; }; _local6 = new DataGridEvent(DataGridEvent.COLUMN_STRETCH, false, true, columnStretchIndex, -1, _local4, (_local3) ? _local3.dataField : null); dispatchEvent(_local6); columnStretchIndex = -1; showColumnStretchCursor(false); stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleHeaderResizeMove, false); stage.removeEventListener(MouseEvent.MOUSE_UP, handleHeaderResizeUp, false); } protected function handleHeaderResizeOver(_arg1:MouseEvent):void{ if (columnStretchIndex == -1){ showColumnStretchCursor(); }; } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:Boolean; var _local3:DataGridColumn; if (_arg1.target != this){ return; }; if (losingFocus){ losingFocus = false; return; }; setIMEMode(true); super.focusInHandler(_arg1); if (((editable) && (!(isPressed)))){ _local2 = !((editedItemPosition == null)); if (!_editedItemPosition){ _editedItemPosition = {rowIndex:0, columnIndex:0}; while (_editedItemPosition.columnIndex < _columns.length) { _local3 = (_columns[_editedItemPosition.columnIndex] as DataGridColumn); if (((_local3.editable) && (_local3.visible))){ _local2 = true; break; }; _editedItemPosition.columnIndex++; }; }; if (_local2){ setEditedItemPosition(_editedItemPosition); }; }; if (editable){ addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseFocusChangeHandler); }; } public function createItemEditor(_arg1:uint, _arg2:uint):void{ var _local3:DataGridColumn; var _local4:ICellRenderer; var _local5:Sprite; var _local6:int; if (displayableColumns.length != _columns.length){ _local6 = 0; while (_local6 < displayableColumns.length) { if (displayableColumns[_local6].colNum >= _arg1){ _arg1 = displayableColumns[_local6].colNum; break; }; _local6++; }; if (_local6 == displayableColumns.length){ _arg1 = 0; }; }; _local3 = (_columns[_arg1] as DataGridColumn); _local4 = getCellRendererAt(_arg2, _arg1); if (!itemEditorInstance){ itemEditorInstance = getDisplayObjectInstance(_local3.itemEditor); itemEditorInstance.tabEnabled = false; list.addChild(DisplayObject(itemEditorInstance)); }; list.setChildIndex(DisplayObject(itemEditorInstance), (list.numChildren - 1)); _local5 = (_local4 as Sprite); itemEditorInstance.visible = true; itemEditorInstance.move(_local5.x, _local5.y); itemEditorInstance.setSize(_local3.width, rowHeight); itemEditorInstance.drawNow(); DisplayObject(itemEditorInstance).addEventListener(FocusEvent.FOCUS_OUT, itemEditorFocusOutHandler); _local5.visible = false; DisplayObject(itemEditorInstance).addEventListener(KeyboardEvent.KEY_DOWN, editorKeyDownHandler); stage.addEventListener(MouseEvent.MOUSE_DOWN, editorMouseDownHandler, true, 0, true); } private function itemEditorFocusOutHandler(_arg1:FocusEvent):void{ if (((_arg1.relatedObject) && (contains(_arg1.relatedObject)))){ return; }; if (!_arg1.relatedObject){ return; }; if (itemEditorInstance){ endEdit(DataGridEventReason.OTHER); }; } override public function get horizontalScrollPolicy():String{ return (_horizontalScrollPolicy); } override protected function updateRendererStyles():void{ var _local1:Array; var _local2:Object; var _local3:uint; var _local4:uint; var _local5:String; _local1 = []; for (_local2 in availableCellRenderersMap) { _local1 = _local1.concat(availableCellRenderersMap[_local2]); }; for (_local2 in activeCellRenderersMap) { _local1 = _local1.concat(activeCellRenderersMap[_local2]); }; _local3 = _local1.length; _local4 = 0; while (_local4 < _local3) { if (_local1[_local4]["setStyle"] == null){ } else { for (_local5 in updatedRendererStyles) { _local1[_local4].setStyle(_local5, updatedRendererStyles[_local5]); }; _local1[_local4].drawNow(); }; _local4++; }; updatedRendererStyles = {}; } public function set minColumnWidth(_arg1:Number):void{ _minColumnWidth = _arg1; columnsInvalid = true; minColumnWidthInvalid = true; invalidate(InvalidationType.SIZE); } protected function showColumnStretchCursor(_arg1:Boolean=true):void{ if (columnStretchCursor == null){ columnStretchCursor = (getDisplayObjectInstance(getStyleValue("columnStretchCursorSkin")) as Sprite); columnStretchCursor.mouseEnabled = false; }; if (_arg1){ Mouse.hide(); stage.addChild(columnStretchCursor); stage.addEventListener(MouseEvent.MOUSE_MOVE, positionColumnStretchCursor, false, 0, true); columnStretchCursor.x = stage.mouseX; columnStretchCursor.y = stage.mouseY; } else { stage.removeEventListener(MouseEvent.MOUSE_MOVE, positionColumnStretchCursor, false); if (stage.contains(columnStretchCursor)){ stage.removeChild(columnStretchCursor); }; Mouse.show(); }; } protected function findNextEnterItemRenderer(_arg1:KeyboardEvent):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:DataGridEvent; if (proposedEditedItemPosition !== undefined){ return; }; _local2 = _editedItemPosition.rowIndex; _local3 = _editedItemPosition.columnIndex; _local4 = (_editedItemPosition.rowIndex + (_arg1.shiftKey) ? -1 : 1); if ((((_local4 >= 0)) && ((_local4 < length)))){ _local2 = _local4; }; _local5 = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true, _local3, _local2); _local5.dataField = _columns[_local3].dataField; dispatchEvent(_local5); } protected function mouseFocusChangeHandler(_arg1:MouseEvent):void{ if (((((itemEditorInstance) && (!(_arg1.isDefaultPrevented())))) && (itemRendererContains(itemEditorInstance, DisplayObject(_arg1.target))))){ _arg1.preventDefault(); }; } public function get imeMode():String{ return (_imeMode); } public function editField(_arg1:uint, _arg2:String, _arg3:Object):void{ var _local4:Object; _local4 = getItemAt(_arg1); _local4[_arg2] = _arg3; replaceItemAt(_local4, _arg1); } protected function calculateAvailableHeight():Number{ var _local1:Number; var _local2:Number; _local1 = Number(getStyleValue("contentPadding")); _local2 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0; return ((((height - (_local1 * 2)) - _local2) - (showHeaders) ? headerHeight : 0)); } protected function mouseUpHandler(_arg1:MouseEvent):void{ if (((!(enabled)) || (!(selectable)))){ return; }; isPressed = false; } override protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } public function resizeColumn(_arg1:int, _arg2:Number):void{ var _local3:DataGridColumn; var _local4:int; var _local5:Number; var _local6:int; var _local7:DataGridColumn; var _local8:DataGridColumn; var _local9:int; var _local10:Number; var _local11:Number; var _local12:Number; if (_columns.length == 0){ return; }; _local3 = (_columns[_arg1] as DataGridColumn); if (!_local3){ return; }; if (((!(visibleColumns)) || ((visibleColumns.length == 0)))){ _local3.setWidth(_arg2); return; }; if (_arg2 < _local3.minWidth){ _arg2 = _local3.minWidth; }; if ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((_horizontalScrollPolicy == ScrollPolicy.AUTO)))){ _local3.setWidth(_arg2); _local3.explicitWidth = _arg2; } else { _local4 = getVisibleColumnIndex(_local3); if (_local4 != -1){ _local5 = 0; _local6 = visibleColumns.length; _local9 = (_local4 + 1); while (_local9 < _local6) { _local7 = (visibleColumns[_local9] as DataGridColumn); if (((_local7) && (_local7.resizable))){ _local5 = (_local5 + _local7.width); }; _local9++; }; _local11 = ((_local3.width - _arg2) + _local5); if (_local5){ _local3.setWidth(_arg2); _local3.explicitWidth = _arg2; }; _local12 = 0; _local9 = (_local4 + 1); while (_local9 < _local6) { _local7 = (visibleColumns[_local9] as DataGridColumn); if (_local7.resizable){ _local10 = ((_local7.width * _local11) / _local5); if (_local10 < _local7.minWidth){ _local10 = _local7.minWidth; }; _local7.setWidth(_local10); _local12 = (_local12 + _local7.width); _local8 = _local7; }; _local9++; }; if (_local12 > _local11){ _local10 = ((_local3.width - _local12) + _local11); if (_local10 < _local3.minWidth){ _local10 = _local3.minWidth; }; _local3.setWidth(_local10); } else { if (_local8){ _local8.setWidth(((_local8.width - _local12) + _local11)); }; }; } else { _local3.setWidth(_arg2); _local3.explicitWidth = _arg2; }; }; columnsInvalid = true; invalidate(InvalidationType.SIZE); } protected function itemEditorItemEditBeginHandler(_arg1:DataGridEvent):void{ var _local2:IFocusManager; if (stage){ stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); }; if (!_arg1.isDefaultPrevented()){ createItemEditor(_arg1.columnIndex, uint(_arg1.rowIndex)); ICellRenderer(itemEditorInstance).listData = ICellRenderer(editedItemRenderer).listData; ICellRenderer(itemEditorInstance).data = editedItemRenderer.data; itemEditorInstance.imeMode = ((columns[_arg1.columnIndex].imeMode)==null) ? _imeMode : columns[_arg1.columnIndex].imeMode; _local2 = focusManager; if ((itemEditorInstance is IFocusManagerComponent)){ _local2.setFocus(InteractiveObject(itemEditorInstance)); }; _local2.defaultButtonEnabled = false; _arg1 = new DataGridEvent(DataGridEvent.ITEM_FOCUS_IN, false, false, _editedItemPosition.columnIndex, _editedItemPosition.rowIndex, itemEditorInstance); dispatchEvent(_arg1); }; } override protected function draw():void{ var _local1:Boolean; _local1 = !((contentHeight == (rowHeight * length))); contentHeight = (rowHeight * length); if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; if (((!((_cellRenderer == getStyleValue("cellRenderer")))) || (!((_headerRenderer == getStyleValue("headerRenderer")))))){ _invalidateList(); _cellRenderer = getStyleValue("cellRenderer"); _headerRenderer = getStyleValue("headerRenderer"); }; }; if (isInvalid(InvalidationType.SIZE)){ columnsInvalid = true; }; if (((isInvalid(InvalidationType.SIZE, InvalidationType.STATE)) || (_local1))){ drawLayout(); drawDisabledOverlay(); }; if (isInvalid(InvalidationType.RENDERER_STYLES)){ updateRendererStyles(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.SCROLL, InvalidationType.SELECTED)){ drawList(); }; updateChildren(); validate(); } override public function set horizontalScrollPolicy(_arg1:String):void{ super.horizontalScrollPolicy = _arg1; columnsInvalid = true; } protected function getVisibleColumnIndex(_arg1:DataGridColumn):int{ var _local2:uint; _local2 = 0; while (_local2 < visibleColumns.length) { if (_arg1 == visibleColumns[_local2]){ return (_local2); }; _local2++; }; return (-1); } protected function itemRendererContains(_arg1:Object, _arg2:DisplayObject):Boolean{ if (((((!(_arg2)) || (!(_arg1)))) || (!((_arg1 is DisplayObjectContainer))))){ return (false); }; return (DisplayObjectContainer(_arg1).contains(_arg2)); } override protected function configUI():void{ var _local1:Graphics; useFixedHorizontalScrolling = false; super.configUI(); headerMask = new Sprite(); _local1 = headerMask.graphics; _local1.beginFill(0, 0.3); _local1.drawRect(0, 0, 100, 100); _local1.endFill(); headerMask.visible = false; addChild(headerMask); header = new Sprite(); addChild(header); header.mask = headerMask; _horizontalScrollPolicy = ScrollPolicy.OFF; _verticalScrollPolicy = ScrollPolicy.AUTO; } public function columnItemToLabel(_arg1:uint, _arg2:Object):String{ var _local3:DataGridColumn; _local3 = (_columns[_arg1] as DataGridColumn); if (_local3 != null){ return (_local3.itemToLabel(_arg2)); }; return (" "); } protected function endEdit(_arg1:String):Boolean{ var _local2:DataGridEvent; if (!editedItemRenderer){ return (true); }; _local2 = new DataGridEvent(DataGridEvent.ITEM_EDIT_END, false, true, editedItemPosition.columnIndex, editedItemPosition.rowIndex, editedItemRenderer, _columns[editedItemPosition.columnIndex].dataField, _arg1); dispatchEvent(_local2); return (!(_local2.isDefaultPrevented())); } override protected function drawLayout():void{ vOffset = (showHeaders) ? headerHeight : 0; super.drawLayout(); contentScrollRect = listHolder.scrollRect; if (showHeaders){ headerHeight = maxHeaderHeight; if (Math.floor((availableHeight - headerHeight)) <= 0){ _headerHeight = availableHeight; }; list.y = headerHeight; contentScrollRect = listHolder.scrollRect; contentScrollRect.y = (contentPadding + headerHeight); contentScrollRect.height = (availableHeight - headerHeight); listHolder.y = (contentPadding + headerHeight); headerMask.x = contentPadding; headerMask.y = contentPadding; headerMask.width = availableWidth; headerMask.height = headerHeight; } else { contentScrollRect.y = contentPadding; listHolder.y = 0; }; listHolder.scrollRect = contentScrollRect; } protected function commitEditedItemPosition(_arg1:Object):void{ var _local2:ICellRenderer; var _local3:DataGridEvent; var _local4:String; var _local5:int; if (((!(enabled)) || (!(editable)))){ return; }; if (((((((((itemEditorInstance) && (_arg1))) && ((itemEditorInstance is IFocusManagerComponent)))) && ((_editedItemPosition.rowIndex == _arg1.rowIndex)))) && ((_editedItemPosition.columnIndex == _arg1.columnIndex)))){ IFocusManagerComponent(itemEditorInstance).setFocus(); return; }; if (itemEditorInstance){ if (!_arg1){ _local4 = DataGridEventReason.OTHER; } else { if (((!(editedItemPosition)) || ((_arg1.rowIndex == editedItemPosition.rowIndex)))){ _local4 = DataGridEventReason.NEW_COLUMN; } else { _local4 = DataGridEventReason.NEW_ROW; }; }; if (((!(endEdit(_local4))) && (!((_local4 == DataGridEventReason.OTHER))))){ return; }; }; _editedItemPosition = _arg1; if (!_arg1){ return; }; actualRowIndex = _arg1.rowIndex; actualColIndex = _arg1.columnIndex; if (displayableColumns.length != _columns.length){ _local5 = 0; while (_local5 < displayableColumns.length) { if (displayableColumns[_local5].colNum >= actualColIndex){ actualColIndex = displayableColumns[_local5].colNum; break; }; _local5++; }; if (_local5 == displayableColumns.length){ actualColIndex = 0; }; }; scrollToPosition(actualRowIndex, actualColIndex); _local2 = getCellRendererAt(actualRowIndex, actualColIndex); _local3 = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGIN, false, true, actualColIndex, actualRowIndex, _local2); dispatchEvent(_local3); if (editedItemPositionChanged){ editedItemPositionChanged = false; commitEditedItemPosition(proposedEditedItemPosition); proposedEditedItemPosition = undefined; }; if (!itemEditorInstance){ commitEditedItemPosition(null); }; } protected function handleHeaderRendererClick(_arg1:MouseEvent):void{ var _local2:HeaderRenderer; var _local3:uint; var _local4:DataGridColumn; var _local5:uint; var _local6:DataGridEvent; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as HeaderRenderer); _local3 = _local2.column; _local4 = (_columns[_local3] as DataGridColumn); if (((sortableColumns) && (_local4.sortable))){ _local5 = _sortIndex; _sortIndex = _local3; _local6 = new DataGridEvent(DataGridEvent.HEADER_RELEASE, false, true, _local3, -1, _local2, (_local4) ? _local4.dataField : null); if (((!(dispatchEvent(_local6))) || (!(_selectable)))){ _sortIndex = lastSortIndex; return; }; lastSortIndex = _local5; sortByColumn(_local3); invalidate(InvalidationType.DATA); }; } public function get showHeaders():Boolean{ return (_showHeaders); } public function get sortIndex():int{ return (_sortIndex); } public function set labelFunction(_arg1:Function):void{ if (_labelFunction == _arg1){ return; }; _labelFunction = _arg1; invalidate(InvalidationType.DATA); } public function getColumnIndex(_arg1:String):int{ var _local2:uint; var _local3:DataGridColumn; _local2 = 0; while (_local2 < _columns.length) { _local3 = (_columns[_local2] as DataGridColumn); if (_local3.dataField == _arg1){ return (_local2); }; _local2++; }; return (-1); } protected function createColumnsFromDataProvider():void{ var _local1:Object; var _local2:String; _columns = []; if (length > 0){ _local1 = _dataProvider.getItemAt(0); for (_local2 in _local1) { addColumn(_local2); }; }; } protected function editorMouseDownHandler(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; if (!itemRendererContains(itemEditorInstance, DisplayObject(_arg1.target))){ if ((((_arg1.target is ICellRenderer)) && (contains(DisplayObject(_arg1.target))))){ _local2 = (_arg1.target as ICellRenderer); _local3 = _local2.listData.row; if (_editedItemPosition.rowIndex == _local3){ endEdit(DataGridEventReason.NEW_COLUMN); } else { endEdit(DataGridEventReason.NEW_ROW); }; } else { endEdit(DataGridEventReason.OTHER); }; }; } public function addColumnAt(_arg1, _arg2:uint):DataGridColumn{ var _local3:DataGridColumn; var _local4:*; var _local5:uint; if (_arg2 < _columns.length){ _columns.splice(_arg2, 0, ""); _local5 = (_arg2 + 1); while (_local5 < _columns.length) { _local3 = (_columns[_local5] as DataGridColumn); _local3.colNum = _local5; _local5++; }; }; _local4 = _arg1; if (!(_local4 is DataGridColumn)){ if ((_local4 is String)){ _local4 = new DataGridColumn(_local4); } else { _local4 = new DataGridColumn(); }; }; _local3 = (_local4 as DataGridColumn); _local3.owner = this; _local3.colNum = _arg2; _columns[_arg2] = _local3; invalidate(InvalidationType.SIZE); columnsInvalid = true; return (_local3); } public function destroyItemEditor():void{ var _local1:DataGridEvent; if (itemEditorInstance){ DisplayObject(itemEditorInstance).removeEventListener(KeyboardEvent.KEY_DOWN, editorKeyDownHandler); stage.removeEventListener(MouseEvent.MOUSE_DOWN, editorMouseDownHandler, true); _local1 = new DataGridEvent(DataGridEvent.ITEM_FOCUS_OUT, false, false, _editedItemPosition.columnIndex, _editedItemPosition.rowIndex, itemEditorInstance); dispatchEvent(_local1); if (((itemEditorInstance) && ((itemEditorInstance is UIComponent)))){ UIComponent(itemEditorInstance).drawFocus(false); }; list.removeChild(DisplayObject(itemEditorInstance)); DisplayObject(editedItemRenderer).visible = true; itemEditorInstance = null; }; } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } protected function doKeySelection(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{ var _local4:Boolean; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; _local4 = false; if (_arg2){ _local6 = []; _local7 = lastCaretIndex; _local8 = _arg1; if (_local7 == -1){ _local7 = ((caretIndex)!=-1) ? caretIndex : _arg1; }; if (_local7 > _local8){ _local8 = _local7; _local7 = _arg1; }; _local5 = _local7; while (_local5 <= _local8) { _local6.push(_local5); _local5++; }; selectedIndices = _local6; caretIndex = _arg1; _local4 = true; } else { if (_arg3){ caretIndex = _arg1; } else { selectedIndex = _arg1; caretIndex = (lastCaretIndex = _arg1); _local4 = true; }; }; if (_local4){ dispatchEvent(new Event(Event.CHANGE)); }; invalidate(InvalidationType.DATA); } public function get headerHeight():Number{ return (_headerHeight); } public function getColumnCount():uint{ return (_columns.length); } protected function sortByColumn(_arg1:int):void{ var _local2:DataGridColumn; var _local3:Boolean; var _local4:uint; _local2 = (columns[_arg1] as DataGridColumn); if (((((!(enabled)) || (!(_local2)))) || (!(_local2.sortable)))){ return; }; _local3 = _local2.sortDescending; _local4 = _local2.sortOptions; if (_local3){ _local4 = (_local4 | Array.DESCENDING); } else { _local4 = (_local4 & ~(Array.DESCENDING)); }; if (_local2.sortCompareFunction != null){ sortItems(_local2.sortCompareFunction, _local4); } else { sortItemsOn(_local2.dataField, _local4); }; _sortDescending = (_local2.sortDescending = !(_local3)); if ((((lastSortIndex >= 0)) && (!((lastSortIndex == sortIndex))))){ _local2 = (columns[lastSortIndex] as DataGridColumn); if (_local2 != null){ _local2.sortDescending = false; }; }; } public function get minColumnWidth():Number{ return (_minColumnWidth); } protected function isHovered(_arg1:ICellRenderer):Boolean{ var _local2:uint; var _local3:Number; var _local4:Point; _local2 = Math.min(Math.max((length - 1), 0), Math.floor((_verticalScrollPosition / rowHeight))); _local3 = ((_arg1.listData.row - _local2) * rowHeight); _local4 = list.globalToLocal(new Point(0, stage.mouseY)); return ((((_local4.y > _local3)) && ((_local4.y < (_local3 + rowHeight))))); } protected function mouseDownHandler(_arg1:MouseEvent):void{ if (((!(enabled)) || (!(selectable)))){ return; }; isPressed = true; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; header.mouseChildren = _enabled; } override protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:int; _local4 = Math.max(Math.floor((calculateAvailableHeight() / rowHeight)), 1); _local5 = -1; _local6 = 0; switch (_arg1){ case Keyboard.UP: if (caretIndex > 0){ _local5 = (caretIndex - 1); }; break; case Keyboard.DOWN: if (caretIndex < (length - 1)){ _local5 = (caretIndex + 1); }; break; case Keyboard.PAGE_UP: if (caretIndex > 0){ _local5 = Math.max((caretIndex - _local4), 0); }; break; case Keyboard.PAGE_DOWN: if (caretIndex < (length - 1)){ _local5 = Math.min((caretIndex + _local4), (length - 1)); }; break; case Keyboard.HOME: if (caretIndex > 0){ _local5 = 0; }; break; case Keyboard.END: if (caretIndex < (length - 1)){ _local5 = (length - 1); }; break; }; if (_local5 >= 0){ doKeySelection(_local5, _arg2, _arg3); scrollToSelected(); }; } protected function handleHeaderResizeOut(_arg1:MouseEvent):void{ if (columnStretchIndex == -1){ showColumnStretchCursor(false); }; } public function removeAllColumns():void{ if (_columns.length > 0){ removeCellRenderers(); _columns = []; invalidate(InvalidationType.SIZE); columnsInvalid = true; }; } public function set rowCount(_arg1:uint):void{ var _local2:Number; var _local3:Number; _local2 = Number(getStyleValue("contentPadding")); _local3 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && (hScrollBar))))) ? 15 : 0; height = ((((rowHeight * _arg1) + (2 * _local2)) + _local3) + (showHeaders) ? headerHeight : 0); } protected function removeCellRenderers():void{ var _local1:uint; _local1 = 0; while (_local1 < _columns.length) { removeCellRenderersByColumn((_columns[_local1] as DataGridColumn)); _local1++; }; } public function removeColumnAt(_arg1:uint):DataGridColumn{ var _local2:DataGridColumn; var _local3:uint; _local2 = (_columns[_arg1] as DataGridColumn); if (_local2 != null){ removeCellRenderersByColumn(_local2); _columns.splice(_arg1, 1); _local3 = _arg1; while (_local3 < _columns.length) { _local2 = (_columns[_local3] as DataGridColumn); if (_local2){ _local2.colNum = _local3; }; _local3++; }; invalidate(InvalidationType.SIZE); columnsInvalid = true; }; return (_local2); } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ if (_arg1 == _horizontalScrollPosition){ return; }; contentScrollRect = listHolder.scrollRect; contentScrollRect.x = _arg1; listHolder.scrollRect = contentScrollRect; list.x = 0; header.x = -(_arg1); super.setHorizontalScrollPosition(_arg1, true); invalidate(InvalidationType.SCROLL); columnsInvalid = true; } public function get labelFunction():Function{ return (_labelFunction); } override protected function handleCellRendererClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:DataGridColumn; var _local4:DataGridEvent; super.handleCellRendererClick(_arg1); _local2 = (_arg1.currentTarget as ICellRenderer); if (((((_local2) && (_local2.data))) && (!((_local2 == itemEditorInstance))))){ _local3 = (_columns[_local2.listData.column] as DataGridColumn); if (((((editable) && (_local3))) && (_local3.editable))){ _local4 = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true, _local2.listData.column, _local2.listData.row, _local2, _local3.dataField); dispatchEvent(_local4); }; }; } override protected function focusOutHandler(_arg1:FocusEvent):void{ setIMEMode(false); if (_arg1.target == this){ super.focusOutHandler(_arg1); }; if ((((_arg1.relatedObject == this)) && (itemRendererContains(itemEditorInstance, DisplayObject(_arg1.target))))){ return; }; if ((((_arg1.relatedObject == null)) && (itemRendererContains(editedItemRenderer, DisplayObject(_arg1.target))))){ return; }; if ((((_arg1.relatedObject == null)) && (itemRendererContains(itemEditorInstance, DisplayObject(_arg1.target))))){ return; }; if (((itemEditorInstance) && (((!(_arg1.relatedObject)) || (!(itemRendererContains(itemEditorInstance, _arg1.relatedObject))))))){ endEdit(DataGridEventReason.OTHER); removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); removeEventListener(MouseEvent.MOUSE_DOWN, mouseFocusChangeHandler); }; } protected function positionColumnStretchCursor(_arg1:MouseEvent):void{ columnStretchCursor.x = _arg1.stageX; columnStretchCursor.y = _arg1.stageY; } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ if (itemEditorInstance){ endEdit(DataGridEventReason.OTHER); }; invalidate(InvalidationType.SCROLL); super.setVerticalScrollPosition(_arg1, true); } public function get sortDescending():Boolean{ return (_sortDescending); } protected function editorKeyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ESCAPE){ endEdit(DataGridEventReason.CANCELLED); } else { if (((_arg1.ctrlKey) && ((_arg1.charCode == 46)))){ endEdit(DataGridEventReason.CANCELLED); } else { if ((((_arg1.charCode == Keyboard.ENTER)) && (!((_arg1.keyCode == 229))))){ if (endEdit(DataGridEventReason.NEW_ROW)){ findNextEnterItemRenderer(_arg1); }; }; }; }; } override protected function calculateContentWidth():void{ var _local1:int; var _local2:int; var _local3:DataGridColumn; if (_columns.length == 0){ contentWidth = 0; return; }; if (minColumnWidthInvalid){ _local1 = _columns.length; _local2 = 0; while (_local2 < _local1) { _local3 = (_columns[_local2] as DataGridColumn); _local3.minWidth = minColumnWidth; _local2++; }; minColumnWidthInvalid = false; }; if (horizontalScrollPolicy == ScrollPolicy.OFF){ contentWidth = availableWidth; } else { contentWidth = 0; _local1 = _columns.length; _local2 = 0; while (_local2 < _local1) { _local3 = (_columns[_local2] as DataGridColumn); if (_local3.visible){ contentWidth = (contentWidth + _local3.width); }; _local2++; }; if (((!(isNaN(_horizontalScrollPosition))) && (((_horizontalScrollPosition + availableWidth) > contentWidth)))){ setHorizontalScrollPosition((contentWidth - availableWidth)); }; }; } override public function get rowCount():uint{ return (Math.ceil((calculateAvailableHeight() / rowHeight))); } public function addColumn(_arg1):DataGridColumn{ return (addColumnAt(_arg1, _columns.length)); } protected function removeCellRenderersByColumn(_arg1:DataGridColumn):void{ var _local2:Array; if (_arg1 == null){ return; }; _local2 = activeCellRenderersMap[_arg1]; if (_local2 != null){ while (_local2.length > 0) { list.removeChild((_local2.pop() as DisplayObject)); }; }; } override protected function handleCellRendererMouseEvent(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:int; var _local4:String; var _local5:uint; var _local6:DataGridColumn; var _local7:ICellRenderer; _local2 = (_arg1.target as ICellRenderer); if (_local2){ _local3 = _local2.listData.row; if (_arg1.type == MouseEvent.ROLL_OVER){ _local4 = "over"; } else { if (_arg1.type == MouseEvent.ROLL_OUT){ _local4 = "up"; }; }; if (_local4){ _local5 = 0; while (_local5 < visibleColumns.length) { _local6 = (visibleColumns[_local5] as DataGridColumn); _local7 = getCellRendererAt(_local3, _local6.colNum); if (_local7){ _local7.setMouseState(_local4); }; if (_local3 != currentHoveredRow){ _local7 = getCellRendererAt(currentHoveredRow, _local6.colNum); if (_local7){ _local7.setMouseState("up"); }; }; _local5++; }; }; }; super.handleCellRendererMouseEvent(_arg1); } protected function handleHeaderResizeMove(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Number; _local2 = (_arg1.stageX - columnStretchStartX); _local3 = (columnStretchStartWidth + _local2); resizeColumn(columnStretchIndex, _local3); } public function set rowHeight(_arg1:Number):void{ _rowHeight = Math.max(0, _arg1); invalidate(InvalidationType.SIZE); } protected function scrollToPosition(_arg1:int, _arg2:int):void{ var _local3:Number; var _local4:Number; var _local5:uint; var _local6:Number; var _local7:DataGridColumn; var _local8:DataGridColumn; _local3 = verticalScrollPosition; _local4 = horizontalScrollPosition; scrollToIndex(_arg1); _local6 = 0; _local7 = (_columns[_arg2] as DataGridColumn); _local5 = 0; while (_local5 < displayableColumns.length) { _local8 = (displayableColumns[_local5] as DataGridColumn); if (_local8 != _local7){ _local6 = (_local6 + _local8.width); } else { break; }; _local5++; }; if (horizontalScrollPosition > _local6){ horizontalScrollPosition = _local6; } else { if ((horizontalScrollPosition + availableWidth) < (_local6 + _local7.width)){ horizontalScrollPosition = -((availableWidth - (_local6 + _local7.width))); }; }; if (((!((_local3 == verticalScrollPosition))) || (!((_local4 == horizontalScrollPosition))))){ drawNow(); }; } protected function findNextItemRenderer(_arg1:Boolean):Boolean{ var _local2:int; var _local3:int; var _local4:Boolean; var _local5:int; var _local6:int; var _local7:String; var _local8:DataGridEvent; if (!_editedItemPosition){ return (false); }; if (proposedEditedItemPosition !== undefined){ return (false); }; _local2 = _editedItemPosition.rowIndex; _local3 = _editedItemPosition.columnIndex; _local4 = false; _local5 = (_arg1) ? -1 : 1; _local6 = (length - 1); while (!(_local4)) { _local3 = (_local3 + _local5); if ((((_local3 < 0)) || ((_local3 >= _columns.length)))){ _local3 = ((_local3)<0) ? (_columns.length - 1) : 0; _local2 = (_local2 + _local5); if ((((_local2 < 0)) || ((_local2 > _local6)))){ setEditedItemPosition(null); losingFocus = true; setFocus(); return (false); }; }; if (((_columns[_local3].editable) && (_columns[_local3].visible))){ _local4 = true; if (_local2 == _editedItemPosition.rowIndex){ _local7 = DataGridEventReason.NEW_COLUMN; } else { _local7 = DataGridEventReason.NEW_ROW; }; if (((!(itemEditorInstance)) || (endEdit(_local7)))){ _local8 = new DataGridEvent(DataGridEvent.ITEM_EDIT_BEGINNING, false, true, _local3, _local2); _local8.dataField = _columns[_local3].dataField; dispatchEvent(_local8); }; }; }; return (_local4); } override public function set dataProvider(_arg1:DataProvider):void{ super.dataProvider = _arg1; if (_columns == null){ _columns = []; }; if (_columns.length == 0){ createColumnsFromDataProvider(); }; removeCellRenderers(); } override public function setSize(_arg1:Number, _arg2:Number):void{ super.setSize(_arg1, _arg2); columnsInvalid = true; } override public function scrollToIndex(_arg1:int):void{ var _local2:int; var _local3:int; var _local4:Number; drawNow(); _local2 = (Math.floor(((_verticalScrollPosition + availableHeight) / rowHeight)) - 1); _local3 = Math.ceil((_verticalScrollPosition / rowHeight)); if (_arg1 < _local3){ verticalScrollPosition = (_arg1 * rowHeight); } else { if (_arg1 >= _local2){ _local4 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && (hScrollBar))))) ? 15 : 0; verticalScrollPosition = (((((_arg1 + 1) * rowHeight) - availableHeight) + _local4) + (showHeaders) ? headerHeight : 0); }; }; } protected function calculateColumnSizes():void{ var _local1:Number; var _local2:int; var _local3:int; var _local4:Number; var _local5:DataGridColumn; var _local6:DataGridColumn; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local4 = 0; if (_columns.length == 0){ visibleColumns = []; displayableColumns = []; return; }; if (columnsInvalid){ columnsInvalid = false; visibleColumns = []; if (minColumnWidthInvalid){ _local2 = _columns.length; _local3 = 0; while (_local3 < _local2) { _columns[_local3].minWidth = minColumnWidth; _local3++; }; minColumnWidthInvalid = false; }; displayableColumns = null; _local2 = _columns.length; _local3 = 0; while (_local3 < _local2) { if (((displayableColumns) && (_columns[_local3].visible))){ displayableColumns.push(_columns[_local3]); } else { if (((!(displayableColumns)) && (!(_columns[_local3].visible)))){ displayableColumns = new Array(_local3); _local8 = 0; while (_local8 < _local3) { displayableColumns[_local8] = _columns[_local8]; _local8++; }; }; }; _local3++; }; if (!displayableColumns){ displayableColumns = _columns; }; if (horizontalScrollPolicy == ScrollPolicy.OFF){ _local2 = displayableColumns.length; _local3 = 0; while (_local3 < _local2) { visibleColumns.push(displayableColumns[_local3]); _local3++; }; } else { _local2 = displayableColumns.length; _local9 = 0; _local3 = 0; while (_local3 < _local2) { _local5 = (displayableColumns[_local3] as DataGridColumn); if (((((_local9 + _local5.width) > _horizontalScrollPosition)) && ((_local9 < (_horizontalScrollPosition + availableWidth))))){ visibleColumns.push(_local5); }; _local9 = (_local9 + _local5.width); _local3++; }; }; }; if (horizontalScrollPolicy == ScrollPolicy.OFF){ _local10 = 0; _local11 = 0; _local2 = visibleColumns.length; _local3 = 0; while (_local3 < _local2) { _local5 = (visibleColumns[_local3] as DataGridColumn); if (_local5.resizable){ if (!isNaN(_local5.explicitWidth)){ _local11 = (_local11 + _local5.width); } else { _local10++; _local11 = (_local11 + _local5.minWidth); }; } else { _local11 = (_local11 + _local5.width); }; _local4 = (_local4 + _local5.width); _local3++; }; _local13 = availableWidth; if ((((availableWidth > _local11)) && (_local10))){ _local2 = visibleColumns.length; _local3 = 0; while (_local3 < _local2) { _local5 = (visibleColumns[_local3] as DataGridColumn); if (((_local5.resizable) && (isNaN(_local5.explicitWidth)))){ _local6 = _local5; if (_local4 > availableWidth){ _local12 = ((_local6.width - _local6.minWidth) / (_local4 - _local11)); } else { _local12 = (_local6.width / _local4); }; _local7 = (_local6.width - ((_local4 - availableWidth) * _local12)); _local14 = _local5.minWidth; _local5.setWidth(Math.max(_local7, _local14)); }; _local13 = (_local13 - _local5.width); _local3++; }; if (((_local13) && (_local6))){ _local6.setWidth((_local6.width + _local13)); }; } else { _local2 = visibleColumns.length; _local3 = 0; while (_local3 < _local2) { _local6 = (visibleColumns[_local3] as DataGridColumn); _local12 = (_local6.width / _local4); _local7 = (availableWidth * _local12); _local6.setWidth(_local7); _local6.explicitWidth = NaN; _local13 = (_local13 - _local7); _local3++; }; if (((_local13) && (_local6))){ _local6.setWidth((_local6.width + _local13)); }; }; }; } public function set showHeaders(_arg1:Boolean):void{ _showHeaders = _arg1; invalidate(InvalidationType.SIZE); } override protected function initializeAccessibility():void{ if (DataGrid.createAccessibilityImplementation != null){ DataGrid.createAccessibilityImplementation(this); }; } public function getColumnAt(_arg1:uint):DataGridColumn{ return ((_columns[_arg1] as DataGridColumn)); } public function get rowHeight():Number{ return (_rowHeight); } public function set columns(_arg1:Array):void{ var _local2:uint; removeCellRenderers(); _columns = []; _local2 = 0; while (_local2 < _arg1.length) { addColumn(_arg1[_local2]); _local2++; }; } public function get editedItemRenderer():ICellRenderer{ if (!itemEditorInstance){ return (null); }; return (getCellRendererAt(actualRowIndex, actualColIndex)); } public function get columns():Array{ return (_columns.slice(0)); } public function spaceColumnsEqually():void{ var _local1:Number; var _local2:int; var _local3:DataGridColumn; drawNow(); if (displayableColumns.length > 0){ _local1 = (availableWidth / displayableColumns.length); _local2 = 0; while (_local2 < displayableColumns.length) { _local3 = (displayableColumns[_local2] as DataGridColumn); _local3.width = _local1; _local2++; }; invalidate(InvalidationType.SIZE); columnsInvalid = true; }; } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, SelectableList.getStyleDefinition(), ScrollBar.getStyleDefinition())); } } }//package fl.controls
Section 104
//LabelButton (fl.controls.LabelButton) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _labelPlacement:String;// = "right" protected var _toggle:Boolean;// = false protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String;// = "center" public var textField:TextField; protected var _label:String;// = "Label" private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 105
//List (fl.controls.List) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import fl.managers.*; import flash.ui.*; public class List extends SelectableList implements IFocusManagerComponent { protected var _labelField:String;// = "label" protected var _rowHeight:Number;// = 20 protected var _cellRenderer:Object; protected var _iconField:String;// = "icon" protected var _labelFunction:Function; protected var _iconFunction:Function; private static var defaultStyles:Object = {focusRectSkin:null, focusRectPadding:null}; public static var createAccessibilityImplementation:Function; public function List(){ _rowHeight = 20; _labelField = "label"; _iconField = "icon"; super(); } public function get iconField():String{ return (_iconField); } protected function doKeySelection(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{ var _local4:Boolean; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; _local4 = false; if (_arg2){ _local6 = []; _local7 = lastCaretIndex; _local8 = _arg1; if (_local7 == -1){ _local7 = ((caretIndex)!=-1) ? caretIndex : _arg1; }; if (_local7 > _local8){ _local8 = _local7; _local7 = _arg1; }; _local5 = _local7; while (_local5 <= _local8) { _local6.push(_local5); _local5++; }; selectedIndices = _local6; caretIndex = _arg1; _local4 = true; } else { selectedIndex = _arg1; caretIndex = (lastCaretIndex = _arg1); _local4 = true; }; if (_local4){ dispatchEvent(new Event(Event.CHANGE)); }; invalidate(InvalidationType.DATA); } override protected function drawList():void{ var _local1:Rectangle; var _local2:uint; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:ICellRenderer; var _local7:Dictionary; var _local8:Dictionary; var _local9:Boolean; var _local10:String; var _local11:Object; var _local12:Sprite; var _local13:String; listHolder.x = (listHolder.y = contentPadding); _local1 = listHolder.scrollRect; _local1.x = _horizontalScrollPosition; _local1.y = (Math.floor(_verticalScrollPosition) % rowHeight); listHolder.scrollRect = _local1; listHolder.cacheAsBitmap = useBitmapScrolling; _local2 = Math.floor((_verticalScrollPosition / rowHeight)); _local3 = Math.min(length, ((_local2 + rowCount) + 1)); _local7 = (renderedItems = new Dictionary(true)); _local4 = _local2; while (_local4 < _local3) { _local7[_dataProvider.getItemAt(_local4)] = true; _local4++; }; _local8 = new Dictionary(true); while (activeCellRenderers.length > 0) { _local6 = (activeCellRenderers.pop() as ICellRenderer); _local5 = _local6.data; if ((((_local7[_local5] == null)) || ((invalidItems[_local5] == true)))){ availableCellRenderers.push(_local6); } else { _local8[_local5] = _local6; invalidItems[_local5] = true; }; list.removeChild((_local6 as DisplayObject)); }; invalidItems = new Dictionary(true); _local4 = _local2; while (_local4 < _local3) { _local9 = false; _local5 = _dataProvider.getItemAt(_local4); if (_local8[_local5] != null){ _local9 = true; _local6 = _local8[_local5]; delete _local8[_local5]; } else { if (availableCellRenderers.length > 0){ _local6 = (availableCellRenderers.pop() as ICellRenderer); } else { _local6 = (getDisplayObjectInstance(getStyleValue("cellRenderer")) as ICellRenderer); _local12 = (_local6 as Sprite); if (_local12 != null){ _local12.addEventListener(MouseEvent.CLICK, handleCellRendererClick, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OVER, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(MouseEvent.ROLL_OUT, handleCellRendererMouseEvent, false, 0, true); _local12.addEventListener(Event.CHANGE, handleCellRendererChange, false, 0, true); _local12.doubleClickEnabled = true; _local12.addEventListener(MouseEvent.DOUBLE_CLICK, handleCellRendererDoubleClick, false, 0, true); if (_local12["setStyle"] != null){ for (_local13 in rendererStyles) { var _local16 = _local12; _local16["setStyle"](_local13, rendererStyles[_local13]); }; }; }; }; }; list.addChild((_local6 as Sprite)); activeCellRenderers.push(_local6); _local6.y = (rowHeight * (_local4 - _local2)); _local6.setSize((availableWidth + _maxHorizontalScrollPosition), rowHeight); _local10 = itemToLabel(_local5); _local11 = null; if (_iconFunction != null){ _local11 = _iconFunction(_local5); } else { if (_iconField != null){ _local11 = _local5[_iconField]; }; }; if (!_local9){ _local6.data = _local5; }; _local6.listData = new ListData(_local10, _local11, this, _local4, _local4, 0); _local6.selected = !((_selectedIndices.indexOf(_local4) == -1)); if ((_local6 is UIComponent)){ (_local6 as UIComponent).drawNow(); }; _local4++; }; } public function get iconFunction():Function{ return (_iconFunction); } public function set iconField(_arg1:String):void{ if (_arg1 == _iconField){ return; }; _iconField = _arg1; invalidate(InvalidationType.DATA); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ var _local2:int; if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); break; case Keyboard.SPACE: if (caretIndex == -1){ caretIndex = 0; }; doKeySelection(caretIndex, _arg1.shiftKey, _arg1.ctrlKey); scrollToSelected(); break; default: _local2 = getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), selectedIndex); if (_local2 > -1){ selectedIndex = _local2; scrollToSelected(); }; break; }; _arg1.stopPropagation(); } override public function itemToLabel(_arg1:Object):String{ if (_labelFunction != null){ return (String(_labelFunction(_arg1))); }; return (((_arg1[_labelField])!=null) ? String(_arg1[_labelField]) : ""); } public function get labelField():String{ return (_labelField); } override protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:int; _local4 = Math.max(Math.floor((calculateAvailableHeight() / rowHeight)), 1); _local5 = -1; _local6 = 0; switch (_arg1){ case Keyboard.UP: if (caretIndex > 0){ _local5 = (caretIndex - 1); }; break; case Keyboard.DOWN: if (caretIndex < (length - 1)){ _local5 = (caretIndex + 1); }; break; case Keyboard.PAGE_UP: if (caretIndex > 0){ _local5 = Math.max((caretIndex - _local4), 0); }; break; case Keyboard.PAGE_DOWN: if (caretIndex < (length - 1)){ _local5 = Math.min((caretIndex + _local4), (length - 1)); }; break; case Keyboard.HOME: if (caretIndex > 0){ _local5 = 0; }; break; case Keyboard.END: if (caretIndex < (length - 1)){ _local5 = (length - 1); }; break; }; if (_local5 >= 0){ doKeySelection(_local5, _arg2, _arg3); scrollToSelected(); }; } public function set labelField(_arg1:String):void{ if (_arg1 == _labelField){ return; }; _labelField = _arg1; invalidate(InvalidationType.DATA); } public function set rowCount(_arg1:uint):void{ var _local2:Number; var _local3:Number; _local2 = Number(getStyleValue("contentPadding")); _local3 = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0; height = (((rowHeight * _arg1) + (2 * _local2)) + _local3); } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ list.x = -(_arg1); super.setHorizontalScrollPosition(_arg1, true); } public function set iconFunction(_arg1:Function):void{ if (_iconFunction == _arg1){ return; }; _iconFunction = _arg1; invalidate(InvalidationType.DATA); } public function get labelFunction():Function{ return (_labelFunction); } override protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ invalidate(InvalidationType.SCROLL); super.setVerticalScrollPosition(_arg1, true); } protected function calculateAvailableHeight():Number{ var _local1:Number; _local1 = Number(getStyleValue("contentPadding")); return (((height - (_local1 * 2)) - ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0)); } override protected function draw():void{ var _local1:Boolean; _local1 = !((contentHeight == (rowHeight * length))); contentHeight = (rowHeight * length); if (isInvalid(InvalidationType.STYLES)){ setStyles(); drawBackground(); if (contentPadding != getStyleValue("contentPadding")){ invalidate(InvalidationType.SIZE, false); }; if (_cellRenderer != getStyleValue("cellRenderer")){ _invalidateList(); _cellRenderer = getStyleValue("cellRenderer"); }; }; if (((isInvalid(InvalidationType.SIZE, InvalidationType.STATE)) || (_local1))){ drawLayout(); }; if (isInvalid(InvalidationType.RENDERER_STYLES)){ updateRendererStyles(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.SCROLL, InvalidationType.SELECTED)){ drawList(); }; updateChildren(); validate(); } override protected function configUI():void{ useFixedHorizontalScrolling = true; _horizontalScrollPolicy = ScrollPolicy.AUTO; _verticalScrollPolicy = ScrollPolicy.AUTO; super.configUI(); } override public function get rowCount():uint{ return (Math.ceil((calculateAvailableHeight() / rowHeight))); } override protected function initializeAccessibility():void{ if (List.createAccessibilityImplementation != null){ List.createAccessibilityImplementation(this); }; } override public function scrollToIndex(_arg1:int):void{ var _local2:uint; var _local3:uint; drawNow(); _local2 = (Math.floor(((_verticalScrollPosition + availableHeight) / rowHeight)) - 1); _local3 = Math.ceil((_verticalScrollPosition / rowHeight)); if (_arg1 < _local3){ verticalScrollPosition = (_arg1 * rowHeight); } else { if (_arg1 > _local2){ verticalScrollPosition = (((_arg1 + 1) * rowHeight) - availableHeight); }; }; } public function get rowHeight():Number{ return (_rowHeight); } public function set labelFunction(_arg1:Function):void{ if (_labelFunction == _arg1){ return; }; _labelFunction = _arg1; invalidate(InvalidationType.DATA); } public function set rowHeight(_arg1:Number):void{ _rowHeight = _arg1; invalidate(InvalidationType.SIZE); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, SelectableList.getStyleDefinition())); } } }//package fl.controls
Section 106
//ScrollBar (fl.controls.ScrollBar) package fl.controls { import fl.core.*; import flash.events.*; import fl.events.*; public class ScrollBar extends UIComponent { private var _direction:String;// = "vertical" protected var inDrag:Boolean;// = false protected var upArrow:BaseButton; private var _pageScrollSize:Number;// = 0 protected var downArrow:BaseButton; private var _pageSize:Number;// = 10 private var thumbScrollOffset:Number; private var _maxScrollPosition:Number;// = 0 private var _scrollPosition:Number;// = 0 protected var track:BaseButton; private var _minScrollPosition:Number;// = 0 private var _lineScrollSize:Number;// = 1 protected var thumb:LabelButton; protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0}; public static const WIDTH:Number = 15; protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"}; private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35}; public function ScrollBar(){ _pageSize = 10; _pageScrollSize = 0; _lineScrollSize = 1; _minScrollPosition = 0; _maxScrollPosition = 0; _scrollPosition = 0; _direction = ScrollBarDirection.VERTICAL; inDrag = false; super(); setStyles(); focusEnabled = false; } public function get minScrollPosition():Number{ return (_minScrollPosition); } public function set minScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _arg1, _maxScrollPosition); } public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{ var _local3:Number; _local3 = scrollPosition; _scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1)); if (_local3 == _scrollPosition){ return; }; if (_arg2){ dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition)); }; updateThumb(); } public function set scrollPosition(_arg1:Number):void{ setScrollPosition(_arg1, true); } public function get pageScrollSize():Number{ return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize); } public function set pageSize(_arg1:Number):void{ if (_arg1 > 0){ _pageSize = _arg1; }; } public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{ this.pageSize = _arg1; _minScrollPosition = _arg2; _maxScrollPosition = _arg3; if (_arg4 >= 0){ _pageScrollSize = _arg4; }; enabled = (_maxScrollPosition > _minScrollPosition); setScrollPosition(_scrollPosition, false); updateThumb(); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition)))))); updateThumb(); } protected function updateThumb():void{ var _local1:Number; _local1 = ((_maxScrollPosition - _minScrollPosition) + _pageSize); if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){ thumb.height = 12; thumb.visible = false; } else { thumb.height = Math.max(13, ((_pageSize / _local1) * track.height)); thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition)))); thumb.visible = enabled; }; } protected function thumbPressHandler(_arg1:MouseEvent):void{ inDrag = true; thumbScrollOffset = (mouseY - thumb.y); thumb.mouseStateLocked = true; mouseChildren = false; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true); } protected function thumbReleaseHandler(_arg1:MouseEvent):void{ inDrag = false; mouseChildren = true; thumb.mouseStateLocked = false; stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag); stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler); } public function set pageScrollSize(_arg1:Number):void{ if (_arg1 >= 0){ _pageScrollSize = _arg1; }; } protected function handleThumbDrag(_arg1:MouseEvent):void{ var _local2:Number; _local2 = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset))); setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition)); } public function set direction(_arg1:String):void{ var _local2:Boolean; if (_direction == _arg1){ return; }; _direction = _arg1; if (isLivePreview){ return; }; setScaleY(1); _local2 = (_direction == ScrollBarDirection.HORIZONTAL); if (((_local2) && (componentInspectorSetting))){ if (rotation == 90){ return; }; setScaleX(-1); rotation = -90; }; if (!componentInspectorSetting){ if (((_local2) && ((rotation == 0)))){ rotation = -90; setScaleX(-1); } else { if (((!(_local2)) && ((rotation == -90)))){ rotation = 0; setScaleX(1); }; }; }; invalidate(InvalidationType.SIZE); } public function set lineScrollSize(_arg1:Number):void{ if (_arg1 > 0){ _lineScrollSize = _arg1; }; } override public function get height():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height); } protected function scrollPressHandler(_arg1:ComponentEvent):void{ var _local2:Number; var _local3:Number; _arg1.stopImmediatePropagation(); if (_arg1.currentTarget == upArrow){ setScrollPosition((_scrollPosition - _lineScrollSize)); } else { if (_arg1.currentTarget == downArrow){ setScrollPosition((_scrollPosition + _lineScrollSize)); } else { _local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition); _local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize; if (_scrollPosition < _local2){ setScrollPosition(Math.min(_local2, (_scrollPosition + _local3))); } else { if (_scrollPosition > _local2){ setScrollPosition(Math.max(_local2, (_scrollPosition - _local3))); }; }; }; }; } public function get pageSize():Number{ return (_pageSize); } public function set maxScrollPosition(_arg1:Number):void{ setScrollProperties(_pageSize, _minScrollPosition, _arg1); } public function get scrollPosition():Number{ return (_scrollPosition); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ var _local1:Number; if (isInvalid(InvalidationType.SIZE)){ _local1 = super.height; downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height))); track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height)))); updateThumb(); }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ setStyles(); }; downArrow.drawNow(); upArrow.drawNow(); track.drawNow(); thumb.drawNow(); validate(); } override protected function configUI():void{ super.configUI(); track = new BaseButton(); track.move(0, 14); track.useHandCursor = false; track.autoRepeat = true; track.focusEnabled = false; addChild(track); thumb = new LabelButton(); thumb.label = ""; thumb.setSize(WIDTH, 15); thumb.move(0, 15); thumb.focusEnabled = false; addChild(thumb); downArrow = new BaseButton(); downArrow.setSize(WIDTH, 14); downArrow.autoRepeat = true; downArrow.focusEnabled = false; addChild(downArrow); upArrow = new BaseButton(); upArrow.setSize(WIDTH, 14); upArrow.move(0, 0); upArrow.autoRepeat = true; upArrow.focusEnabled = false; addChild(upArrow); upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true); thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true); enabled = false; } public function get direction():String{ return (_direction); } public function get lineScrollSize():Number{ return (_lineScrollSize); } override public function setSize(_arg1:Number, _arg2:Number):void{ if (_direction == ScrollBarDirection.HORIZONTAL){ super.setSize(_arg2, _arg1); } else { super.setSize(_arg1, _arg2); }; } public function get maxScrollPosition():Number{ return (_maxScrollPosition); } override public function get width():Number{ return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width); } protected function setStyles():void{ copyStylesToChild(downArrow, DOWN_ARROW_STYLES); copyStylesToChild(thumb, THUMB_STYLES); copyStylesToChild(track, TRACK_STYLES); copyStylesToChild(upArrow, UP_ARROW_STYLES); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 107
//ScrollBarDirection (fl.controls.ScrollBarDirection) package fl.controls { public class ScrollBarDirection { public static const HORIZONTAL:String = "horizontal"; public static const VERTICAL:String = "vertical"; } }//package fl.controls
Section 108
//ScrollPolicy (fl.controls.ScrollPolicy) package fl.controls { public class ScrollPolicy { public static const OFF:String = "off"; public static const ON:String = "on"; public static const AUTO:String = "auto"; } }//package fl.controls
Section 109
//SelectableList (fl.controls.SelectableList) package fl.controls { import fl.controls.listClasses.*; import fl.core.*; import flash.display.*; import flash.events.*; import flash.utils.*; import fl.data.*; import fl.managers.*; import fl.events.*; import fl.containers.*; import flash.ui.*; public class SelectableList extends BaseScrollPane implements IFocusManagerComponent { protected var invalidItems:Dictionary; protected var renderedItems:Dictionary; protected var listHolder:Sprite; protected var _allowMultipleSelection:Boolean;// = false protected var lastCaretIndex:int;// = -1 protected var _selectedIndices:Array; protected var availableCellRenderers:Array; protected var list:Sprite; protected var caretIndex:int;// = -1 protected var updatedRendererStyles:Object; protected var preChangeItems:Array; protected var activeCellRenderers:Array; protected var rendererStyles:Object; protected var _verticalScrollPosition:Number; protected var _dataProvider:DataProvider; protected var _horizontalScrollPosition:Number; private var collectionItemImport:SimpleCollectionItem; protected var _selectable:Boolean;// = true private static var defaultStyles:Object = {skin:"List_skin", cellRenderer:CellRenderer, contentPadding:null, disabledAlpha:null}; public static var createAccessibilityImplementation:Function; public function SelectableList(){ _allowMultipleSelection = false; _selectable = true; caretIndex = -1; lastCaretIndex = -1; super(); activeCellRenderers = []; availableCellRenderers = []; invalidItems = new Dictionary(true); renderedItems = new Dictionary(true); _selectedIndices = []; if (dataProvider == null){ dataProvider = new DataProvider(); }; verticalScrollPolicy = ScrollPolicy.AUTO; rendererStyles = {}; updatedRendererStyles = {}; } protected function drawList():void{ } public function set allowMultipleSelection(_arg1:Boolean):void{ if (_arg1 == _allowMultipleSelection){ return; }; _allowMultipleSelection = _arg1; if (((!(_arg1)) && ((_selectedIndices.length > 1)))){ _selectedIndices = [_selectedIndices.pop()]; invalidate(InvalidationType.DATA); }; } public function sortItemsOn(_arg1:String, _arg2:Object=null){ return (_dataProvider.sortOn(_arg1, _arg2)); } public function removeItemAt(_arg1:uint):Object{ return (_dataProvider.removeItemAt(_arg1)); } public function get selectedItem():Object{ return (((_selectedIndices.length)==0) ? null : _dataProvider.getItemAt(selectedIndex)); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!selectable){ return; }; switch (_arg1.keyCode){ case Keyboard.UP: case Keyboard.DOWN: case Keyboard.END: case Keyboard.HOME: case Keyboard.PAGE_UP: case Keyboard.PAGE_DOWN: moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; case Keyboard.LEFT: case Keyboard.RIGHT: moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection))); _arg1.stopPropagation(); break; }; } public function get selectable():Boolean{ return (_selectable); } public function itemToCellRenderer(_arg1:Object):ICellRenderer{ var _local2:*; var _local3:ICellRenderer; if (_arg1 != null){ for (_local2 in activeCellRenderers) { _local3 = (activeCellRenderers[_local2] as ICellRenderer); if (_local3.data == _arg1){ return (_local3); }; }; }; return (null); } public function getNextIndexAtLetter(_arg1:String, _arg2:int=-1):int{ var _local3:int; var _local4:Number; var _local5:Number; var _local6:Object; var _local7:String; if (length == 0){ return (-1); }; _arg1 = _arg1.toUpperCase(); _local3 = (length - 1); _local4 = 0; while (_local4 < _local3) { _local5 = ((_arg2 + 1) + _local4); if (_local5 > (length - 1)){ _local5 = (_local5 - length); }; _local6 = getItemAt(_local5); if (_local6 == null){ break; }; _local7 = itemToLabel(_local6); if (_local7 == null){ } else { if (_local7.charAt(0).toUpperCase() == _arg1){ return (_local5); }; }; _local4++; }; return (-1); } public function invalidateList():void{ _invalidateList(); invalidate(InvalidationType.DATA); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; list.mouseChildren = _enabled; } public function get selectedIndices():Array{ return (_selectedIndices.concat()); } public function set selectable(_arg1:Boolean):void{ if (_arg1 == _selectable){ return; }; if (!_arg1){ selectedIndices = []; }; _selectable = _arg1; } public function itemToLabel(_arg1:Object):String{ return (_arg1["label"]); } public function addItemAt(_arg1:Object, _arg2:uint):void{ _dataProvider.addItemAt(_arg1, _arg2); invalidateList(); } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ return (_dataProvider.replaceItemAt(_arg1, _arg2)); } protected function handleDataChange(_arg1:DataChangeEvent):void{ var _local2:int; var _local3:int; var _local4:String; var _local5:uint; _local2 = _arg1.startIndex; _local3 = _arg1.endIndex; _local4 = _arg1.changeType; if (_local4 == DataChangeType.INVALIDATE_ALL){ clearSelection(); invalidateList(); } else { if (_local4 == DataChangeType.INVALIDATE){ _local5 = 0; while (_local5 < _arg1.items.length) { invalidateItem(_arg1.items[_local5]); _local5++; }; } else { if (_local4 == DataChangeType.ADD){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ _selectedIndices[_local5] = (_selectedIndices[_local5] + (_local2 - _local3)); }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE){ _local5 = 0; while (_local5 < _selectedIndices.length) { if (_selectedIndices[_local5] >= _local2){ if (_selectedIndices[_local5] <= _local3){ delete _selectedIndices[_local5]; } else { _selectedIndices[_local5] = (_selectedIndices[_local5] - ((_local2 - _local3) + 1)); }; }; _local5++; }; } else { if (_local4 == DataChangeType.REMOVE_ALL){ clearSelection(); } else { if (_local4 == DataChangeType.REPLACE){ } else { selectedItems = preChangeItems; preChangeItems = null; }; }; }; }; }; }; invalidate(InvalidationType.DATA); } protected function _invalidateList():void{ availableCellRenderers = []; while (activeCellRenderers.length > 0) { list.removeChild((activeCellRenderers.pop() as DisplayObject)); }; } protected function updateRendererStyles():void{ var _local1:Array; var _local2:uint; var _local3:uint; var _local4:String; _local1 = availableCellRenderers.concat(activeCellRenderers); _local2 = _local1.length; _local3 = 0; while (_local3 < _local2) { if (_local1[_local3].setStyle == null){ } else { for (_local4 in updatedRendererStyles) { _local1[_local3].setStyle(_local4, updatedRendererStyles[_local4]); }; _local1[_local3].drawNow(); }; _local3++; }; updatedRendererStyles = {}; } public function set selectedItem(_arg1:Object):void{ var _local2:int; _local2 = _dataProvider.getItemIndex(_arg1); selectedIndex = _local2; } public function sortItems(... _args){ return (_dataProvider.sort.apply(_dataProvider, _args)); } public function removeAll():void{ _dataProvider.removeAll(); } protected function handleCellRendererChange(_arg1:Event):void{ var _local2:ICellRenderer; var _local3:uint; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; _dataProvider.invalidateItemAt(_local3); } protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _horizontalScrollPosition){ return; }; _local3 = (_arg1 - _horizontalScrollPosition); _horizontalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.HORIZONTAL, _local3, _arg1)); }; } public function scrollToSelected():void{ scrollToIndex(selectedIndex); } public function invalidateItem(_arg1:Object):void{ if (renderedItems[_arg1] == null){ return; }; invalidItems[_arg1] = true; invalidate(InvalidationType.DATA); } protected function handleCellRendererClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; var _local4:int; var _local5:int; var _local6:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; if (((!(dispatchEvent(new ListEvent(ListEvent.ITEM_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)))) || (!(_selectable)))){ return; }; _local4 = selectedIndices.indexOf(_local3); if (!_allowMultipleSelection){ if (_local4 != -1){ return; }; _local2.selected = true; _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); } else { if (_arg1.shiftKey){ _local6 = ((_selectedIndices.length)>0) ? _selectedIndices[0] : _local3; _selectedIndices = []; if (_local6 > _local3){ _local5 = _local6; while (_local5 >= _local3) { _selectedIndices.push(_local5); _local5--; }; } else { _local5 = _local6; while (_local5 <= _local3) { _selectedIndices.push(_local5); _local5++; }; }; caretIndex = _local3; } else { if (_arg1.ctrlKey){ if (_local4 != -1){ _local2.selected = false; _selectedIndices.splice(_local4, 1); } else { _local2.selected = true; _selectedIndices.push(_local3); }; caretIndex = _local3; } else { _selectedIndices = [_local3]; lastCaretIndex = (caretIndex = _local3); }; }; }; dispatchEvent(new Event(Event.CHANGE)); invalidate(InvalidationType.DATA); } public function get length():uint{ return (_dataProvider.length); } public function get allowMultipleSelection():Boolean{ return (_allowMultipleSelection); } protected function onPreChange(_arg1:DataChangeEvent):void{ switch (_arg1.changeType){ case DataChangeType.REMOVE: case DataChangeType.ADD: case DataChangeType.INVALIDATE: case DataChangeType.REMOVE_ALL: case DataChangeType.REPLACE: case DataChangeType.INVALIDATE_ALL: break; default: preChangeItems = selectedItems; break; }; } public function getRendererStyle(_arg1:String, _arg2:int=-1):Object{ return (rendererStyles[_arg1]); } override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; if (_arg1 == _verticalScrollPosition){ return; }; _local3 = (_arg1 - _verticalScrollPosition); _verticalScrollPosition = _arg1; if (_arg2){ dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _local3, _arg1)); }; } protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{ } public function set selectedIndices(_arg1:Array):void{ if (!_selectable){ return; }; _selectedIndices = ((_arg1)==null) ? [] : _arg1.concat(); invalidate(InvalidationType.SELECTED); } public function get selectedIndex():int{ return (((_selectedIndices.length)==0) ? -1 : _selectedIndices[(_selectedIndices.length - 1)]); } override protected function draw():void{ super.draw(); } override protected function configUI():void{ super.configUI(); listHolder = new Sprite(); addChild(listHolder); listHolder.scrollRect = contentScrollRect; list = new Sprite(); listHolder.addChild(list); } public function addItem(_arg1:Object):void{ _dataProvider.addItem(_arg1); invalidateList(); } protected function handleCellRendererMouseEvent(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:String; _local2 = (_arg1.target as ICellRenderer); _local3 = ((_arg1.type)==MouseEvent.ROLL_OVER) ? ListEvent.ITEM_ROLL_OVER : ListEvent.ITEM_ROLL_OUT; dispatchEvent(new ListEvent(_local3, false, false, _local2.listData.column, _local2.listData.row, _local2.listData.index, _local2.data)); } public function clearRendererStyle(_arg1:String, _arg2:int=-1):void{ delete rendererStyles[_arg1]; updatedRendererStyles[_arg1] = null; invalidate(InvalidationType.RENDERER_STYLES); } protected function handleCellRendererDoubleClick(_arg1:MouseEvent):void{ var _local2:ICellRenderer; var _local3:uint; if (!_enabled){ return; }; _local2 = (_arg1.currentTarget as ICellRenderer); _local3 = _local2.listData.index; dispatchEvent(new ListEvent(ListEvent.ITEM_DOUBLE_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)); } public function get rowCount():uint{ return (0); } public function isItemSelected(_arg1:Object):Boolean{ return ((selectedItems.indexOf(_arg1) > -1)); } public function set dataProvider(_arg1:DataProvider):void{ if (_dataProvider != null){ _dataProvider.removeEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange); _dataProvider.removeEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange); }; _dataProvider = _arg1; _dataProvider.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true); _dataProvider.addEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange, false, 0, true); clearSelection(); invalidateList(); } override protected function drawLayout():void{ super.drawLayout(); contentScrollRect = listHolder.scrollRect; contentScrollRect.width = availableWidth; contentScrollRect.height = availableHeight; listHolder.scrollRect = contentScrollRect; } public function getItemAt(_arg1:uint):Object{ return (_dataProvider.getItemAt(_arg1)); } override protected function initializeAccessibility():void{ if (SelectableList.createAccessibilityImplementation != null){ SelectableList.createAccessibilityImplementation(this); }; } public function scrollToIndex(_arg1:int):void{ } public function removeItem(_arg1:Object):Object{ return (_dataProvider.removeItem(_arg1)); } public function get dataProvider():DataProvider{ return (_dataProvider); } public function set maxHorizontalScrollPosition(_arg1:Number):void{ _maxHorizontalScrollPosition = _arg1; invalidate(InvalidationType.SIZE); } public function setRendererStyle(_arg1:String, _arg2:Object, _arg3:uint=0):void{ if (rendererStyles[_arg1] == _arg2){ return; }; updatedRendererStyles[_arg1] = _arg2; rendererStyles[_arg1] = _arg2; invalidate(InvalidationType.RENDERER_STYLES); } public function invalidateItemAt(_arg1:uint):void{ var _local2:Object; _local2 = _dataProvider.getItemAt(_arg1); if (_local2 != null){ invalidateItem(_local2); }; } public function set selectedItems(_arg1:Array):void{ var _local2:Array; var _local3:uint; var _local4:int; if (_arg1 == null){ selectedIndices = null; return; }; _local2 = []; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _dataProvider.getItemIndex(_arg1[_local3]); if (_local4 != -1){ _local2.push(_local4); }; _local3++; }; selectedIndices = _local2; } public function clearSelection():void{ selectedIndex = -1; } override public function get maxHorizontalScrollPosition():Number{ return (_maxHorizontalScrollPosition); } public function get selectedItems():Array{ var _local1:Array; var _local2:uint; _local1 = []; _local2 = 0; while (_local2 < _selectedIndices.length) { _local1.push(_dataProvider.getItemAt(_selectedIndices[_local2])); _local2++; }; return (_local1); } public function set selectedIndex(_arg1:int):void{ selectedIndices = ((_arg1)==-1) ? null : [_arg1]; } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseScrollPane.getStyleDefinition())); } } }//package fl.controls
Section 110
//TextInput (fl.controls.TextInput) package fl.controls { import fl.core.*; import flash.display.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class TextInput extends UIComponent implements IFocusManagerComponent { protected var _html:Boolean;// = false protected var _savedHTML:String; protected var background:DisplayObject; protected var _editable:Boolean;// = true public var textField:TextField; private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function TextInput(){ _editable = true; _html = false; super(); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function set text(_arg1:String):void{ textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } protected function updateTextFieldType():void{ textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } override protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (_arg1.target == this){ stage.focus = textField; }; _local2 = focusManager; if (((editable) && (_local2))){ _local2.showFocusIndicator = true; if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){ setSelection(0, textField.length); }; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; updateTextFieldType(); } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } public function get horizontalScrollPosition():int{ return (textField.scrollH); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } public function set horizontalScrollPosition(_arg1:int):void{ textField.scrollH = _arg1; } public function get restrict():String{ return (textField.restrict); } public function get textWidth():Number{ return (textField.textWidth); } public function get textHeight():Number{ return (textField.textHeight); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; updateTextFieldType(); } public function get maxChars():int{ return (textField.maxChars); } public function get length():int{ return (textField.length); } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } public function get imeMode():String{ return (_imeMode); } override protected function focusOutHandler(_arg1:FocusEvent):void{ super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } public function set htmlText(_arg1:String):void{ if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } public function get text():String{ return (textField.text); } override public function get enabled():Boolean{ return (super.enabled); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } override protected function draw():void{ var _local1:Object; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text)); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true); textField.addEventListener(Event.CHANGE, handleChange, false, 0, true); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } public function appendText(_arg1:String):void{ textField.appendText(_arg1); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } public function get htmlText():String{ return (textField.htmlText); } protected function drawBackground():void{ var _local1:DisplayObject; var _local2:String; _local1 = background; _local2 = (enabled) ? "upSkin" : "disabledSkin"; background = getDisplayObjectInstance(getStyleValue(_local2)); if (background == null){ return; }; addChildAt(background, 0); if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){ removeChild(_local1); }; } override public function setFocus():void{ stage.focus = textField; } protected function drawLayout():void{ var _local1:Number; _local1 = Number(getStyleValue("textPadding")); if (background != null){ background.width = width; background.height = height; }; textField.width = (width - (2 * _local1)); textField.height = (height - (2 * _local1)); textField.x = (textField.y = _local1); } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); if (_html){ textField.htmlText = _savedHTML; }; } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 111
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 112
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 113
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.system.*; public class UIComponent extends Sprite { protected var _enabled:Boolean;// = true private var _mouseFocusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String;// = null protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String;// = "3.0.0.15" protected var isFocused:Boolean;// = false protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean;// = true private var tempText:TextField; protected var invalidateFlag:Boolean;// = false protected var _inspector:Boolean;// = false protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; _local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var classDef:Object; var skin = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 114
//DataProvider (fl.data.DataProvider) package fl.data { import flash.events.*; import fl.events.*; public class DataProvider extends EventDispatcher { protected var data:Array; public function DataProvider(_arg1:Object=null){ if (_arg1 == null){ data = []; } else { data = getDataFromObject(_arg1); }; } protected function dispatchPreChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.PRE_DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } public function invalidateItemAt(_arg1:int):void{ checkIndex(_arg1, (data.length - 1)); dispatchChangeEvent(DataChangeType.INVALIDATE, [data[_arg1]], _arg1, _arg1); } public function getItemIndex(_arg1:Object):int{ return (data.indexOf(_arg1)); } protected function getDataFromObject(_arg1:Object):Array{ var _local2:Array; var _local3:Array; var _local4:uint; var _local5:Object; var _local6:XML; var _local7:XMLList; var _local8:XML; var _local9:XMLList; var _local10:XML; var _local11:XMLList; var _local12:XML; if ((_arg1 is Array)){ _local3 = (_arg1 as Array); if (_local3.length > 0){ if ((((_local3[0] is String)) || ((_local3[0] is Number)))){ _local2 = []; _local4 = 0; while (_local4 < _local3.length) { _local5 = {label:String(_local3[_local4]), data:_local3[_local4]}; _local2.push(_local5); _local4++; }; return (_local2); }; }; return (_arg1.concat()); //unresolved jump }; if ((_arg1 is DataProvider)){ return (_arg1.toArray()); }; if ((_arg1 is XML)){ _local6 = (_arg1 as XML); _local2 = []; _local7 = _local6.*; for each (_local8 in _local7) { _arg1 = {}; _local9 = _local8.attributes(); for each (_local10 in _local9) { _arg1[_local10.localName()] = _local10.toString(); }; _local11 = _local8.*; for each (_local12 in _local11) { if (_local12.hasSimpleContent()){ _arg1[_local12.localName()] = _local12.toString(); }; }; _local2.push(_arg1); }; return (_local2); //unresolved jump }; throw (new TypeError((("Error: Type Coercion failed: cannot convert " + _arg1) + " to Array or DataProvider."))); } public function removeItemAt(_arg1:uint):Object{ var _local2:Array; checkIndex(_arg1, (data.length - 1)); dispatchPreChangeEvent(DataChangeType.REMOVE, data.slice(_arg1, (_arg1 + 1)), _arg1, _arg1); _local2 = data.splice(_arg1, 1); dispatchChangeEvent(DataChangeType.REMOVE, _local2, _arg1, _arg1); return (_local2[0]); } public function addItem(_arg1:Object):void{ dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); data.push(_arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1)); } public function sortOn(_arg1:Object, _arg2:Object=null){ var _local3:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local3 = data.sortOn(_arg1, _arg2); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local3); } public function sort(... _args){ var _local2:Array; dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); _local2 = data.sort.apply(data, _args); dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1)); return (_local2); } public function addItems(_arg1:Object):void{ addItemsAt(_arg1, data.length); } public function concat(_arg1:Object):void{ addItems(_arg1); } public function clone():DataProvider{ return (new DataProvider(data)); } public function toArray():Array{ return (data.concat()); } public function get length():uint{ return (data.length); } public function addItemAt(_arg1:Object, _arg2:uint):void{ checkIndex(_arg2, data.length); dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); data.splice(_arg2, 0, _arg1); dispatchChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2); } public function getItemAt(_arg1:uint):Object{ checkIndex(_arg1, (data.length - 1)); return (data[_arg1]); } override public function toString():String{ return ((("DataProvider [" + data.join(" , ")) + "]")); } public function invalidateItem(_arg1:Object):void{ var _local2:uint; _local2 = getItemIndex(_arg1); if (_local2 == -1){ return; }; invalidateItemAt(_local2); } protected function dispatchChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, _arg1, _arg2, _arg3, _arg4)); } protected function checkIndex(_arg1:int, _arg2:int):void{ if ((((_arg1 > _arg2)) || ((_arg1 < 0)))){ throw (new RangeError((((("DataProvider index (" + _arg1) + ") is not in acceptable range (0 - ") + _arg2) + ")"))); }; } public function addItemsAt(_arg1:Object, _arg2:uint):void{ var _local3:Array; checkIndex(_arg2, data.length); _local3 = getDataFromObject(_arg1); dispatchPreChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); data.splice.apply(data, [_arg2, 0].concat(_local3)); dispatchChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1)); } public function replaceItem(_arg1:Object, _arg2:Object):Object{ var _local3:int; _local3 = getItemIndex(_arg2); if (_local3 != -1){ return (replaceItemAt(_arg1, _local3)); }; return (null); } public function removeItem(_arg1:Object):Object{ var _local2:int; _local2 = getItemIndex(_arg1); if (_local2 != -1){ return (removeItemAt(_local2)); }; return (null); } public function merge(_arg1:Object):void{ var _local2:Array; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:Object; _local2 = getDataFromObject(_arg1); _local3 = _local2.length; _local4 = data.length; dispatchPreChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); _local5 = 0; while (_local5 < _local3) { _local6 = _local2[_local5]; if (getItemIndex(_local6) == -1){ data.push(_local6); }; _local5++; }; if (data.length > _local4){ dispatchChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1)); } else { dispatchChangeEvent(DataChangeType.ADD, [], -1, -1); }; } public function replaceItemAt(_arg1:Object, _arg2:uint):Object{ var _local3:Array; checkIndex(_arg2, (data.length - 1)); _local3 = [data[_arg2]]; dispatchPreChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); data[_arg2] = _arg1; dispatchChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2); return (_local3[0]); } public function invalidate():void{ dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, DataChangeType.INVALIDATE_ALL, data.concat(), 0, data.length)); } public function removeAll():void{ var _local1:Array; _local1 = data.concat(); dispatchPreChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); data = []; dispatchChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length); } } }//package fl.data
Section 115
//SimpleCollectionItem (fl.data.SimpleCollectionItem) package fl.data { public dynamic class SimpleCollectionItem { public var label:String; public var data:String; public function toString():String{ return ((((("[SimpleCollectionItem: " + label) + ",") + data) + "]")); } } }//package fl.data
Section 116
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 117
//DataChangeEvent (fl.events.DataChangeEvent) package fl.events { import flash.events.*; public class DataChangeEvent extends Event { protected var _items:Array; protected var _endIndex:uint; protected var _changeType:String; protected var _startIndex:uint; public static const PRE_DATA_CHANGE:String = "preDataChange"; public static const DATA_CHANGE:String = "dataChange"; public function DataChangeEvent(_arg1:String, _arg2:String, _arg3:Array, _arg4:int=-1, _arg5:int=-1):void{ super(_arg1); _changeType = _arg2; _startIndex = _arg4; _items = _arg3; _endIndex = ((_arg5)==-1) ? _startIndex : _arg5; } public function get changeType():String{ return (_changeType); } public function get startIndex():uint{ return (_startIndex); } public function get items():Array{ return (_items); } override public function clone():Event{ return (new DataChangeEvent(type, _changeType, _items, _startIndex, _endIndex)); } override public function toString():String{ return (formatToString("DataChangeEvent", "type", "changeType", "startIndex", "endIndex", "bubbles", "cancelable")); } public function get endIndex():uint{ return (_endIndex); } } }//package fl.events
Section 118
//DataChangeType (fl.events.DataChangeType) package fl.events { public class DataChangeType { public static const ADD:String = "add"; public static const REMOVE:String = "remove"; public static const REMOVE_ALL:String = "removeAll"; public static const CHANGE:String = "change"; public static const REPLACE:String = "replace"; public static const INVALIDATE:String = "invalidate"; public static const INVALIDATE_ALL:String = "invalidateAll"; public static const SORT:String = "sort"; } }//package fl.events
Section 119
//DataGridEvent (fl.events.DataGridEvent) package fl.events { import flash.events.*; public class DataGridEvent extends ListEvent { protected var _itemRenderer:Object; protected var _reason:String; protected var _dataField:String; public static const ITEM_EDIT_BEGIN:String = "itemEditBegin"; public static const ITEM_EDIT_END:String = "itemEditEnd"; public static const ITEM_EDIT_BEGINNING:String = "itemEditBeginning"; public static const HEADER_RELEASE:String = "headerRelease"; public static const ITEM_FOCUS_IN:String = "itemFocusIn"; public static const ITEM_FOCUS_OUT:String = "itemFocusOut"; public static const COLUMN_STRETCH:String = "columnStretch"; public function DataGridEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:Object=null, _arg7:String=null, _arg8:String=null){ super(_arg1, _arg2, _arg3, _arg4, _arg5); _itemRenderer = _arg6; _dataField = _arg7; _reason = _arg8; } public function get reason():String{ return (_reason); } public function set dataField(_arg1:String):void{ _dataField = _arg1; } override public function toString():String{ return (formatToString("DataGridEvent", "type", "bubbles", "cancelable", "columnIndex", "rowIndex", "itemRenderer", "dataField", "reason")); } public function get dataField():String{ return (_dataField); } override public function clone():Event{ return (new DataGridEvent(type, bubbles, cancelable, columnIndex, int(rowIndex), _itemRenderer, _dataField, _reason)); } public function get itemRenderer():Object{ return (_itemRenderer); } } }//package fl.events
Section 120
//DataGridEventReason (fl.events.DataGridEventReason) package fl.events { public final class DataGridEventReason { public static const OTHER:String = "other"; public static const CANCELLED:String = "cancelled"; public static const NEW_COLUMN:String = "newColumn"; public static const NEW_ROW:String = "newRow"; } }//package fl.events
Section 121
//ListEvent (fl.events.ListEvent) package fl.events { import flash.events.*; public class ListEvent extends Event { protected var _index:int; protected var _item:Object; protected var _columnIndex:int; protected var _rowIndex:int; public static const ITEM_DOUBLE_CLICK:String = "itemDoubleClick"; public static const ITEM_ROLL_OUT:String = "itemRollOut"; public static const ITEM_ROLL_OVER:String = "itemRollOver"; public static const ITEM_CLICK:String = "itemClick"; public function ListEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:int=-1, _arg7:Object=null){ super(_arg1, _arg2, _arg3); _rowIndex = _arg5; _columnIndex = _arg4; _index = _arg6; _item = _arg7; } public function get rowIndex():Object{ return (_rowIndex); } public function get index():int{ return (_index); } public function get item():Object{ return (_item); } public function get columnIndex():int{ return (_columnIndex); } override public function clone():Event{ return (new ListEvent(type, bubbles, cancelable, _columnIndex, _rowIndex)); } override public function toString():String{ return (formatToString("ListEvent", "type", "bubbles", "cancelable", "columnIndex", "rowIndex", "index", "item")); } } }//package fl.events
Section 122
//ScrollEvent (fl.events.ScrollEvent) package fl.events { import flash.events.*; public class ScrollEvent extends Event { private var _position:Number; private var _direction:String; private var _delta:Number; public static const SCROLL:String = "scroll"; public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){ super(ScrollEvent.SCROLL, false, false); _direction = _arg1; _delta = _arg2; _position = _arg3; } override public function clone():Event{ return (new ScrollEvent(_direction, _delta, _position)); } public function get position():Number{ return (_position); } override public function toString():String{ return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position")); } public function get delta():Number{ return (_delta); } public function get direction():String{ return (_direction); } } }//package fl.events
Section 123
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.core.*; import fl.controls.*; import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject; _local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true; _local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers
Section 124
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function setFocus(_arg1:InteractiveObject):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function hideFocus():void; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 125
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 126
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; function get groupName():String; function get selected():Boolean; } }//package fl.managers
Section 127
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.utils.*; import flash.text.*; public class StyleManager { private var globalStyles:Object; private var classToDefaultStylesDict:Dictionary; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToInstancesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:StyleManager; var classDef:Class; var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers
Section 128
//Back (fl.motion.easing.Back) package fl.motion.easing { public class Back { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } } }//package fl.motion.easing
Section 129
//Back (fl.transitions.easing.Back) package fl.transitions.easing { public class Back { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } } }//package fl.transitions.easing
Section 130
//Regular (fl.transitions.easing.Regular) package fl.transitions.easing { public class Regular { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } } }//package fl.transitions.easing
Section 131
//Strong (fl.transitions.easing.Strong) package fl.transitions.easing { public class Strong { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } } }//package fl.transitions.easing
Section 132
//Transition (fl.transitions.Transition) package fl.transitions { import flash.display.*; import flash.events.*; import flash.geom.*; public class Transition extends EventDispatcher { protected var _progress:Number; public var ID:int; protected var _twn:Tween; protected var _direction:uint;// = 0 protected var _content:MovieClip; protected var _height:Number;// = NAN protected var _width:Number;// = NAN protected var _outerBounds:Rectangle; protected var _easing:Function; protected var _innerBounds:Rectangle; protected var _manager:TransitionManager; protected var _duration:Number;// = 2 public static const IN:uint = 0; public static const OUT:uint = 1; public function Transition(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){ _direction = 0; _duration = 2; _width = NaN; _height = NaN; super(); this.content = _arg1; this.direction = _arg2.direction; this.duration = _arg2.duration; this.easing = _arg2.easing; this.manager = _arg3; this._innerBounds = this.manager._innerBounds; this._outerBounds = this.manager._outerBounds; this._width = this.manager._width; this._height = this.manager._height; this._resetTween(); } public function stop():void{ this._twn.fforward(); this._twn.stop(); } private function _resetTween():void{ if (this._twn){ this._twn.stop(); this._twn.removeEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished); }; this._twn = new Tween(this, "", this.easing, 0, 1, this.duration, true); this._twn.stop(); this._twn.prop = "progress"; this._twn.addEventListener(TweenEvent.MOTION_FINISH, this.onMotionFinished, false, 0, true); } public function onMotionFinished(_arg1:Object):void{ if (this.direction == Transition.OUT){ this.dispatchEvent(new Event("transitionOutDone")); } else { this.dispatchEvent(new Event("transitionInDone")); }; } public function get duration():Number{ return (this._duration); } public function set duration(_arg1:Number):void{ if (_arg1){ this._duration = _arg1; if (this._twn){ this._twn.duration = _arg1; }; }; } public function get easing():Function{ return (this._easing); } public function get progress():Number{ return (this._progress); } public function get manager():TransitionManager{ return (this._manager); } protected function _render(_arg1:Number):void{ } public function get type():Class{ return (Transition); } public function drawCircle(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number):void{ _arg1.graphics.moveTo((_arg2 + _arg4), _arg3); _arg1.graphics.curveTo((_arg4 + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3)); _arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (_arg4 + _arg3), _arg2, (_arg4 + _arg3)); _arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (_arg4 + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((Math.sin((Math.PI / 4)) * _arg4) + _arg3)); _arg1.graphics.curveTo((-(_arg4) + _arg2), ((Math.tan((Math.PI / 8)) * _arg4) + _arg3), (-(_arg4) + _arg2), _arg3); _arg1.graphics.curveTo((-(_arg4) + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3)); _arg1.graphics.curveTo(((-(Math.tan((Math.PI / 8))) * _arg4) + _arg2), (-(_arg4) + _arg3), _arg2, (-(_arg4) + _arg3)); _arg1.graphics.curveTo(((Math.tan((Math.PI / 8)) * _arg4) + _arg2), (-(_arg4) + _arg3), ((Math.sin((Math.PI / 4)) * _arg4) + _arg2), ((-(Math.sin((Math.PI / 4))) * _arg4) + _arg3)); _arg1.graphics.curveTo((_arg4 + _arg2), ((-(Math.tan((Math.PI / 8))) * _arg4) + _arg3), (_arg4 + _arg2), _arg3); } public function cleanUp():void{ this.removeEventListener("transitionInDone", this._manager.transitionInDone); this.removeEventListener("transitionOutDone", this._manager.transitionOutDone); this.stop(); } public function set easing(_arg1:Function):void{ this._easing = _arg1; if (this._twn){ this._twn.func = _arg1; }; } public function set manager(_arg1:TransitionManager):void{ if (this._manager){ this.removeEventListener("transitionInDone", this._manager.transitionInDone); this.removeEventListener("transitionOutDone", this._manager.transitionOutDone); }; this._manager = _arg1; this.addEventListener("transitionInDone", this._manager.transitionInDone); this.addEventListener("transitionOutDone", this._manager.transitionOutDone); } public function set progress(_arg1:Number):void{ if (this._progress == _arg1){ return; }; this._progress = _arg1; if (this._direction){ this._render((1 - _arg1)); } else { this._render(_arg1); }; this.dispatchEvent(new Event("transitionProgress")); } public function start():void{ this.content.visible = true; this._twn.start(); } public function drawBox(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ _arg1.graphics.moveTo(_arg2, _arg3); _arg1.graphics.lineTo((_arg2 + _arg4), _arg3); _arg1.graphics.lineTo((_arg2 + _arg4), (_arg3 + _arg5)); _arg1.graphics.lineTo(_arg2, (_arg3 + _arg5)); _arg1.graphics.lineTo(_arg2, _arg3); } public function set content(_arg1:MovieClip):void{ if (_arg1){ this._content = _arg1; if (this._twn){ this._twn.obj = _arg1; }; }; } private function _noEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public function get content():MovieClip{ return (this._content); } public function set direction(_arg1:Number):void{ this._direction = (_arg1) ? 1 : 0; } public function get direction():Number{ return (this._direction); } } }//package fl.transitions
Section 133
//TransitionManager (fl.transitions.TransitionManager) package fl.transitions { import flash.display.*; import flash.events.*; import flash.geom.*; public class TransitionManager extends EventDispatcher { public var _innerBounds:Rectangle; private var _visualPropList:Object; private var _triggerEvent:String; public var className:String;// = "TransitionManager" public var type:Object; private var _contentAppearance:Object; private var _content:MovieClip; public var _width:Number;// = NAN public var _height:Number;// = NAN public var _outerBounds:Rectangle; private var _transitions:Object; private static var IDCount:int = 0; public function TransitionManager(_arg1:MovieClip){ type = TransitionManager; className = "TransitionManager"; _width = NaN; _height = NaN; _visualPropList = {x:null, y:null, scaleX:null, scaleY:null, alpha:null, rotation:null}; super(); this.content = _arg1; this._transitions = {}; } public function get content():MovieClip{ return (this._content); } public function removeAllTransitions():void{ var _local1:Transition; for each (_local1 in this._transitions) { _local1.cleanUp(); this.removeTransition(_local1); }; } function transitionInDone(_arg1:Object):void{ var _local2:Boolean; this.removeTransition(_arg1.target); if (this.numInTransitions == 0){ _local2 = this._content.visible; if ((((this._triggerEvent == "hide")) || ((this._triggerEvent == "hideChild")))){ this._content.visible = false; }; if (_local2){ this.dispatchEvent(new Event("allTransitionsInDone")); }; }; } public function get numOutTransitions():Number{ var _local1:Number; var _local2:Object; var _local3:Transition; _local1 = 0; _local2 = this._transitions; for each (_local3 in _local2) { if (_local3.direction){ _local1++; }; }; return (_local1); } public function get contentAppearance():Object{ return (this._contentAppearance); } public function saveContentAppearance():void{ var _local1:MovieClip; var _local2:Object; var _local3:String; _local1 = this._content; if (!this._contentAppearance){ _local2 = (this._contentAppearance = {}); for (_local3 in this._visualPropList) { _local2[_local3] = _local1[_local3]; }; _local2.colorTransform = _local1.transform.colorTransform; }; this._innerBounds = _local1.getBounds(_local1); this._outerBounds = _local1.getBounds(_local1.parent); this._width = _local1.width; this._height = _local1.height; } public function addTransition(_arg1:Transition):Transition{ _arg1.ID = ++TransitionManager.IDCount; this._transitions[_arg1.ID] = _arg1; return (_arg1); } public function startTransition(_arg1:Object):Transition{ var _local2:Class; var _local3:Transition; this.removeTransition(this.findTransition(_arg1)); _local2 = _arg1.type; _local3 = new _local2(this._content, _arg1, this); this.addTransition(_local3); _local3.start(); return (_local3); } function transitionOutDone(_arg1:Object):void{ var _local2:Boolean; this.removeTransition(_arg1.target); if (this.numOutTransitions == 0){ this.restoreContentAppearance(); _local2 = this._content.visible; if (((_local2) && ((((_triggerEvent == "hide")) || ((_triggerEvent == "hideChild")))))){ this._content.visible = false; }; if (_local2){ this.dispatchEvent(new Event("allTransitionsOutDone")); }; }; } public function restoreContentAppearance():void{ var _local1:MovieClip; var _local2:Object; var _local3:String; _local1 = this._content; _local2 = this._contentAppearance; for (_local3 in this._visualPropList) { _local1[_local3] = _local2[_local3]; }; _local1.transform.colorTransform = _local2.colorTransform; } public function get numTransitions():Number{ var _local1:Number; var _local2:Transition; _local1 = 0; for each (_local2 in this._transitions) { _local1++; }; return (_local1); } public function findTransition(_arg1:Object):Transition{ var _local2:Transition; for each (_local2 in this._transitions) { if (_local2.type == _arg1.type){ return (_local2); }; }; return (null); } public function set content(_arg1:MovieClip):void{ this._content = _arg1; this.saveContentAppearance(); } public function get numInTransitions():Number{ var _local1:Number; var _local2:Object; var _local3:Transition; _local1 = 0; _local2 = this._transitions; for each (_local3 in _local2) { if (!_local3.direction){ _local1++; }; }; return (_local1); } public function removeTransition(_arg1:Transition):Boolean{ if (((((!(_arg1)) || (!(this._transitions)))) || (!(this._transitions[_arg1.ID])))){ return (false); }; _arg1.cleanUp(); return (delete this._transitions[_arg1.ID]); } public function get transitionsList():Object{ return (this._transitions); } public static function start(_arg1:MovieClip, _arg2:Object):Transition{ if (!_arg1.__transitionManager){ _arg1.__transitionManager = new TransitionManager(_arg1); }; if (_arg2.direction == 1){ _arg1.__transitionManager._triggerEvent = "hide"; } else { _arg1.__transitionManager._triggerEvent = "reveal"; }; return (_arg1.__transitionManager.startTransition(_arg2)); } } }//package fl.transitions
Section 134
//Tween (fl.transitions.Tween) package fl.transitions { import flash.display.*; import flash.events.*; import flash.utils.*; public class Tween extends EventDispatcher { private var _position:Number;// = NAN public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var isPlaying:Boolean;// = false public var begin:Number;// = NAN private var _fps:Number;// = NAN private var _time:Number;// = NAN public var change:Number;// = NAN private var _finish:Number;// = NAN public var looping:Boolean;// = false private var _intervalID:uint;// = 0 public var func:Function; private var _timer:Timer;// = null private var _startTime:Number;// = NAN public var prop:String;// = "" private var _duration:Number;// = NAN public var obj:Object;// = null public var useSeconds:Boolean;// = false protected static var _mc:MovieClip = new MovieClip(); public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ isPlaying = false; obj = null; prop = ""; func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; begin = NaN; change = NaN; useSeconds = false; prevTime = NaN; prevPos = NaN; looping = false; _duration = NaN; _time = NaN; _fps = NaN; _position = NaN; _startTime = NaN; _intervalID = 0; _finish = NaN; _timer = null; super(); if (!arguments.length){ return; }; this.obj = _arg1; this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } public function set FPS(_arg1:Number):void{ var _local2:Boolean; _local2 = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get finish():Number{ return ((this.begin + this.change)); } public function get duration():Number{ return (this._duration); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function fforward():void{ this.time = this._duration; this.fixTime(); } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } public function get position():Number{ return (this.getPosition(this._time)); } public function yoyo():void{ this.continueTo(this.begin, this.time); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function get FPS():Number{ return (this._fps); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function get time():Number{ return (this._time); } private function update():void{ this.setPosition(this.getPosition(this._time)); } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } } }//package fl.transitions
Section 135
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_LOOP:String = "motionLoop"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_RESUME:String = "motionResume"; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){ time = NaN; position = NaN; super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 136
//Wipe (fl.transitions.Wipe) package fl.transitions { import flash.display.*; import flash.geom.*; public class Wipe extends Transition { protected var _cornerMode:Boolean;// = false protected var _mask:MovieClip; protected var _innerMask:MovieClip; protected var _startPoint:uint;// = 4 public function Wipe(_arg1:MovieClip, _arg2:Object, _arg3:TransitionManager){ _startPoint = 4; _cornerMode = false; super(_arg1, _arg2, _arg3); if (_arg2.startPoint){ this._startPoint = _arg2.startPoint; }; this._initMask(); } protected function _initMask():void{ var _local1:Rectangle; this._mask = new MovieClip(); this._mask.visible = false; this._content.addChild(this._mask); this._innerMask = new MovieClip(); this._mask.addChild(this._innerMask); this._innerMask.x = (this._innerMask.y = 50); this._innerMask.graphics.beginFill(0xFF0000); this.drawBox(this._innerMask, -50, -50, 100, 100); this._innerMask.graphics.endFill(); switch (this._startPoint){ case 3: case 2: this._innerMask.rotation = 90; break; case 1: case 4: case 5: this._innerMask.rotation = 0; break; case 9: case 6: this._innerMask.rotation = 180; break; case 7: case 8: this._innerMask.rotation = -90; break; }; if ((this._startPoint % 2)){ this._cornerMode = true; }; _local1 = this._innerBounds; this._mask.x = _local1.left; this._mask.y = _local1.top; this._mask.width = _local1.width; this._mask.height = _local1.height; } protected function _drawSlant(_arg1:MovieClip, _arg2:Number):void{ _arg1.graphics.moveTo(-50, -50); if (_arg2 <= 0.5){ _arg1.graphics.lineTo((200 * (_arg2 - 0.25)), -50); _arg1.graphics.lineTo(-50, (200 * (_arg2 - 0.25))); } else { _arg1.graphics.lineTo(50, -50); _arg1.graphics.lineTo(50, (200 * (_arg2 - 0.75))); _arg1.graphics.lineTo((200 * (_arg2 - 0.75)), 50); _arg1.graphics.lineTo(-50, 50); }; _arg1.graphics.lineTo(-50, -50); } override protected function _render(_arg1:Number):void{ this._innerMask.graphics.clear(); this._innerMask.graphics.beginFill(0xFF0000); if (this._cornerMode){ this._drawSlant(this._innerMask, _arg1); } else { this.drawBox(this._innerMask, -50, -50, (_arg1 * 100), 100); }; this._innerMask.graphics.endFill(); } override public function get type():Class{ return (Wipe); } override public function cleanUp():void{ this._content.removeChild(this._mask); this._content.mask = null; super.cleanUp(); } override public function start():void{ this._content.mask = this._mask; super.start(); } } }//package fl.transitions
Section 137
//NewgroundsAPIAsset_FlashAd_Container_2 (FlashAd_fla.NewgroundsAPIAsset_FlashAd_Container_2) package FlashAd_fla { import flash.display.*; import flash.events.*; import com.newgrounds.*; public dynamic class NewgroundsAPIAsset_FlashAd_Container_2 extends MovieClip { public var adMask:MovieClip; public var ngLinkButton:SimpleButton; public function NewgroundsAPIAsset_FlashAd_Container_2(){ addFrameScript(0, this.frame1, 10, this.frame11); } public function onNGLinkClicked(_arg1:MouseEvent):void{ API.loadNewgrounds(); } function frame1(){ this.ngLinkButton.addEventListener(MouseEvent.CLICK, this.onNGLinkClicked); } function frame11(){ gotoAndPlay(1); } } }//package FlashAd_fla
Section 138
//NewgroundsAPIAsset_Load_Indicator_5 (FlashAd_fla.NewgroundsAPIAsset_Load_Indicator_5) package FlashAd_fla { import flash.display.*; import flash.events.*; public dynamic class NewgroundsAPIAsset_Load_Indicator_5 extends MovieClip { public function NewgroundsAPIAsset_Load_Indicator_5(){ addFrameScript(0, this.frame1); } public function onEnterFrame(_arg1:Event):void{ if (((visible) && (stage))){ rotation = (rotation + 30); } else { removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); }; } function frame1(){ addEventListener(Event.ENTER_FRAME, this.onEnterFrame); } } }//package FlashAd_fla
Section 139
//_loadContainer_8 (main_fla._loadContainer_8) package main_fla { import flash.display.*; public dynamic class _loadContainer_8 extends MovieClip { public function _loadContainer_8(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package main_fla
Section 140
//_zoom1_16 (main_fla._zoom1_16) package main_fla { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.geom.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.filters.*; import flash.system.*; import flash.ui.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.external.*; import flash.printing.*; import flash.xml.*; public dynamic class _zoom1_16 extends MovieClip { public var b; public var j:int; public var k:int; public var frame:int; public var i:int; public var v:Sprite; public var colorFilter:ColorMatrixFilter; public var matrix:Array; public function _zoom1_16(){ addFrameScript(0, frame1); } function frame1(){ i = 0; while (i < 6) { j = 0; while (j < 4) { b = Sprite(addChild(new FlaBloodcell())); b.x = (((i * 100) + ((Math.random() * 80) - 40)) + 50); b.y = (((j * 100) + ((Math.random() * 80) - 40)) + 50); b.scaleX = (b.scaleY = 0.5); frame = Math.floor((Math.random() * 30)); MovieClip(b.getChildAt(0)).gotoAndStop(frame); MovieClip(MovieClip(b.getChildAt(0)).getChildAt(1)).gotoAndStop(frame); MovieClip(MovieClip(b.getChildAt(0)).getChildAt(0)).gotoAndStop(frame); matrix = new Array(); matrix = matrix.concat([0.3, 0.5, 0, 0, 0]); matrix = matrix.concat([0.7, 0.5, 0, 0, 0]); matrix = matrix.concat([0.1, 0.5, 0, 0, 0]); matrix = matrix.concat([0, 0, 0, 1, 0]); colorFilter = new ColorMatrixFilter(matrix); b.filters = [colorFilter]; k = 0; while (k < 3) { v = Sprite(addChild(new FlaVirus())); v.x = (((i * 100) + ((Math.random() * 120) - 60)) + 50); v.y = (((j * 100) + ((Math.random() * 120) - 60)) + 50); v.rotation = (Math.random() * 360); v.scaleX = (v.scaleY = 0.5); k++; }; j++; }; i++; }; } } }//package main_fla
Section 141
//_zoom2_17 (main_fla._zoom2_17) package main_fla { import flash.display.*; public dynamic class _zoom2_17 extends MovieClip { public function _zoom2_17(){ addFrameScript(163, frame164); } function frame164(){ stop(); } } }//package main_fla
Section 142
//Bloodcell_192 (main_fla.Bloodcell_192) package main_fla { import flash.display.*; public dynamic class Bloodcell_192 extends MovieClip { public var cell:MovieClip; } }//package main_fla
Section 143
//BloodcellStatic_37 (main_fla.BloodcellStatic_37) package main_fla { import flash.display.*; public dynamic class BloodcellStatic_37 extends MovieClip { public var bloodcell:MovieClip; public var highlight:MovieClip; public function BloodcellStatic_37(){ addFrameScript(0, frame1); } function frame1(){ bloodcell.gotoAndStop(1); highlight.gotoAndStop(1); stop(); } } }//package main_fla
Section 144
//iconSkill0_197 (main_fla.iconSkill0_197) package main_fla { import flash.display.*; public dynamic class iconSkill0_197 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 145
//iconSkill00_65 (main_fla.iconSkill00_65) package main_fla { import flash.display.*; public dynamic class iconSkill00_65 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 146
//iconSkill1_198 (main_fla.iconSkill1_198) package main_fla { import flash.display.*; public dynamic class iconSkill1_198 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 147
//iconSkill2_57 (main_fla.iconSkill2_57) package main_fla { import flash.display.*; public dynamic class iconSkill2_57 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 148
//iconSkill3_199 (main_fla.iconSkill3_199) package main_fla { import flash.display.*; public dynamic class iconSkill3_199 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 149
//iconSkill4_68 (main_fla.iconSkill4_68) package main_fla { import flash.display.*; public dynamic class iconSkill4_68 extends MovieClip { public var bhlogo:MovieClip; } }//package main_fla
Section 150
//iconZombieOutbreak_112 (main_fla.iconZombieOutbreak_112) package main_fla { import flash.display.*; public dynamic class iconZombieOutbreak_112 extends MovieClip { public var head:MovieClip; public var hair:MovieClip; } }//package main_fla
Section 151
//MainTimeline (main_fla.MainTimeline) package main_fla { import flash.display.*; import com.newgrounds.components.*; import flash.utils.*; import tv.mindistortion.flux.*; import fl.transitions.*; import tv.mindistortion.infect.*; import fl.transitions.easing.*; public dynamic class MainTimeline extends MovieClip { public var __setPropDict:Dictionary; public var apiConnector:APIConnector; public var tween:Tween; public var __id2_:FlashAd; public function MainTimeline(){ __setPropDict = new Dictionary(true); super(); addFrameScript(0, frame1, 7, frame8, 16, frame17, 44, frame45, 1, frame2); __setProp_apiConnector_Scene1_ngAPIConnectr_1(); } function __setProp___id2__Scene1_ad_1(){ try { __id2_["componentInspectorSetting"] = true; } catch(e:Error) { }; __id2_.showBackground = false; try { __id2_["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_apiConnector_Scene1_ngAPIConnectr_1(){ try { apiConnector["componentInspectorSetting"] = true; } catch(e:Error) { }; apiConnector.movieId = "17203:M9fIc6NA"; apiConnector.debugMode = false; apiConnector.encryptionKey = "tRDgHHzngKnofLc28Q8mX7zZyKWSVmcw"; apiConnector.movieVersion = "0.9"; apiConnector.showConnectingPopup = false; apiConnector.useErrorPopup = true; apiConnector.useMedalPopup = true; apiConnector.useFakeSession = true; try { apiConnector["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame17(){ if (this.root.loaderInfo.url.indexOf("http://stuff.mindistortion.tv/") == -1){ }; } function frame1(){ if ((((__setPropDict[__id2_] == undefined)) || (!((((int(__setPropDict[__id2_]) >= 1)) && ((int(__setPropDict[__id2_]) <= 2))))))){ __setPropDict[__id2_] = currentFrame; __setProp___id2__Scene1_ad_1(); }; stop(); addChild(new Screenager()); } function frame2(){ if ((((__setPropDict[__id2_] == undefined)) || (!((((int(__setPropDict[__id2_]) >= 1)) && ((int(__setPropDict[__id2_]) <= 2))))))){ __setPropDict[__id2_] = currentFrame; __setProp___id2__Scene1_ad_1(); }; } function frame8(){ stop(); } function frame45(){ Settings.instance.website = Settings.NG; this.addChild(Main.instance); tween = new Tween(Main.instance, "alpha", Regular.easeOut, 0, 1, 20); stop(); } } }//package main_fla
Section 152
//MINDistortion_52 (main_fla.MINDistortion_52) package main_fla { import flash.display.*; public dynamic class MINDistortion_52 extends MovieClip { public function MINDistortion_52(){ addFrameScript(74, frame75); } function frame75(){ MovieClip(parent).play(); } } }//package main_fla
Section 153
//WhiteBloodcellstatic_79 (main_fla.WhiteBloodcellstatic_79) package main_fla { import flash.display.*; public dynamic class WhiteBloodcellstatic_79 extends MovieClip { public var wb:MovieClip; public function WhiteBloodcellstatic_79(){ addFrameScript(0, frame1); } function frame1(){ wb.stop(); } } }//package main_fla
Section 154
//XmlLoader (tv.mindistortion.flux.backend.XmlLoader) package tv.mindistortion.flux.backend { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.*; import flash.net.*; public class XmlLoader extends MovieClip implements IFluxObject { protected var _currXml:XML;// = null public function XmlLoader(){ _currXml = null; super(); } public function destroy():void{ } protected function onLoadDataComplete(_arg1:Event):void{ var data:String; var e = _arg1; try { _currXml = new XML(e.target.data); } catch(err:TypeError) { data = (("<xml>" + e.target.data) + "</xml>"); _currXml = new XML(data); }; } protected function onError(_arg1:IOErrorEvent):void{ trace("io error"); } protected function loadData(_arg1:String, _arg2:URLVariables, _arg3:Function=null):void{ var req:URLRequest; var loader:URLLoader; var url = _arg1; var vars = _arg2; var func = _arg3; if (!url){ throw (new Error("could not load data, invalid url")); }; req = new URLRequest(url); req.data = vars; req.method = URLRequestMethod.POST; loader = new URLLoader(); try { loader.load(req); } catch(error:SecurityError) { trace("A SecurityError has occured"); }; if (func == null){ loader.addEventListener(Event.COMPLETE, onLoadDataComplete, false, 0, true); } else { loader.addEventListener(Event.COMPLETE, func, false, 0, true); }; loader.addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true); } } }//package tv.mindistortion.flux.backend
Section 155
//GameEvent (tv.mindistortion.flux.events.GameEvent) package tv.mindistortion.flux.events { public class GameEvent { public static const GET_DAMAGE:String = "getDamage"; } }//package tv.mindistortion.flux.events
Section 156
//MenuEvent (tv.mindistortion.flux.events.MenuEvent) package tv.mindistortion.flux.events { import flash.events.*; public class MenuEvent extends Event { private var _action:String; public static const MAIN_MENU:String = "mainMenu"; public static const SUBMIT_HIGHSCORE:String = "submitHighscore"; public static const POPUP_CONFIRM:String = "popup_confirm"; public static const SHOW_HIGHSCORE:String = "showHighscore"; public static const NEW_GAME:String = "newGame"; public static const POPUP:String = "popup"; public static const POPUP_CLOSE:String = "popup_close"; public static const ACTION:String = "action"; public static const CONTINUE_GAME:String = "continue_game"; public static const NEXT_LEVEL:String = "nextLevel"; public static const POPUP_ABORT:String = "popup_abort"; public static const TUTORIAL:String = "tutorial"; public function MenuEvent(_arg1:String, _arg2:String){ this._action = _arg2; super(_arg1); } public function get action():String{ return (this._action); } } }//package tv.mindistortion.flux.events
Section 157
//RefEvent (tv.mindistortion.flux.events.RefEvent) package tv.mindistortion.flux.events { import flash.events.*; public class RefEvent extends Event { public var refTarget:Object; public static const OBJECT_REMOVED:String = "object_removed"; public function RefEvent(_arg1:String, _arg2:Object){ this.refTarget = _arg2; super(_arg1); } } }//package tv.mindistortion.flux.events
Section 158
//GameController (tv.mindistortion.flux.game.controller.GameController) package tv.mindistortion.flux.game.controller { import de.polygonal.ds.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.view.*; import tv.mindistortion.flux.game.model.*; import tv.mindistortion.flux.events.*; public class GameController implements IFluxObject { private var _gameState:GameState; protected var _modelToController:Dictionary; private var _gameView:GameView; protected var _gameObjectControllers:DLinkedList; protected var _spriteToModel:Dictionary; protected var _pause:Boolean;// = false public function GameController(_arg1:GameView, _arg2:GameState){ _pause = false; _modelToController = new Dictionary(true); _spriteToModel = new Dictionary(true); _gameObjectControllers = new DLinkedList(); super(); this._gameState = _arg2; this._gameView = _arg1; this._gameView.addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); _gameView.addEventListener(MenuEvent.ACTION, onMenuEvent, false, 0, true); } protected function onPopup():void{ pause = true; } protected function onEventEnterFrame(_arg1:Event):void{ } protected function addGameObject(_arg1:GameObject):void{ _arg1.sprite.addEventListener(Event.REMOVED_FROM_STAGE, onRemoved, false, 0, true); this._spriteToModel[_arg1.sprite] = _arg1; this._gameState.addGameObject(_arg1); } protected function onRemoved(_arg1:Event):void{ var _local2:GameObject; var _local3:GameObjectController; var _local4:DListIterator; _arg1.target.removeEventListener(Event.REMOVED_FROM_STAGE, onRemoved); _local2 = this._spriteToModel[_arg1.target]; _local3 = this._modelToController[_local2]; _local4 = this._gameObjectControllers.nodeOf(_local3); this._gameObjectControllers.remove(_local4); _local3.destroy(); _local3 = null; delete this._modelToController[_local2]; delete this._spriteToModel[_local2.sprite]; this._gameState.removeGameObject(_local2); } protected function removeGameObjectCompletely(_arg1:GameObject):void{ var _local2:GameObjectController; var _local3:DListIterator; if (_arg1.sprite.hasEventListener(Event.REMOVED_FROM_STAGE)){ _arg1.sprite.removeEventListener(Event.REMOVED_FROM_STAGE, onRemoved); }; _local2 = this._modelToController[_arg1]; _local3 = this._gameObjectControllers.nodeOf(_local2); this._gameObjectControllers.remove(_local3); _local2.destroy(); _local2 = null; delete this._modelToController[_arg1]; delete this._spriteToModel[_arg1.sprite]; this._gameState.removeGameObject(_arg1, false); } protected function onMenuEvent(_arg1:MenuEvent):void{ switch (_arg1.action){ case MenuEvent.POPUP: onPopup(); break; case MenuEvent.POPUP_CLOSE: onPopupClose(); break; case MenuEvent.MAIN_MENU: break; }; } protected function addController(_arg1:GameObjectController, _arg2:GameObject):void{ if (this._modelToController[_arg2] != _arg1){ this._modelToController[_arg2] = _arg1; this._gameObjectControllers.append(_arg1); }; } protected function onPopupClose():void{ pause = false; } protected function restoreFocus():void{ _gameView.stage.focus = _gameView.stage; } public function destroy():void{ var _local1:DListIterator; var _local2:GameObjectController; if (this._gameView.hasEventListener(Event.ENTER_FRAME)){ this._gameView.removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; this._gameState.destroy(); this._gameView.destroy(); this._gameState = null; this._gameView = null; this._modelToController = null; this._spriteToModel = null; _local1 = this._gameObjectControllers.getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as GameObjectController); _local2.destroy(); _local1.next(); }; this._gameObjectControllers.clear(); this._gameObjectControllers = null; } protected function set pause(_arg1:Boolean):void{ if (_pause != _arg1){ _pause = _arg1; _gameView.pause = _arg1; }; } } }//package tv.mindistortion.flux.game.controller
Section 159
//GameObjectController (tv.mindistortion.flux.game.controller.GameObjectController) package tv.mindistortion.flux.game.controller { import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.model.*; public class GameObjectController implements IGameObjectController, IFluxObject { public var currStatus:String; private var _model:GameObject; public function GameObjectController(_arg1:GameObject){ this._model = _arg1; } public function doEnterFrame():void{ } public function destroy():void{ this._model = null; } } }//package tv.mindistortion.flux.game.controller
Section 160
//IGameObjectController (tv.mindistortion.flux.game.controller.IGameObjectController) package tv.mindistortion.flux.game.controller { public interface IGameObjectController { function doEnterFrame():void; } }//package tv.mindistortion.flux.game.controller
Section 161
//GameObject (tv.mindistortion.flux.game.model.GameObject) package tv.mindistortion.flux.game.model { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.*; public class GameObject implements IFluxObject, IGameObject, IEventDispatcher { public var currStatus:String; protected var _dispatcher:EventDispatcher; public var scaleX; protected var _sprite:Sprite; public var scaleY:Number;// = 1 public var x; public var y:Number;// = 0 public var rotation:Number;// = 0 protected var _objectType:String; public static const PLAYER:String = "player"; public static const GENERIC:String = "generic"; public static const BACKGROUND:String = "background"; public function GameObject(_arg1:String="generic"){ _dispatcher = new EventDispatcher(); y = 0; rotation = 0; scaleY = 1; super(); this._objectType = _arg1; } public function dispatchEvent(_arg1:Event):Boolean{ return (_dispatcher.dispatchEvent(_arg1)); } public function get sprite():Sprite{ return (this._sprite); } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _dispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function willTrigger(_arg1:String):Boolean{ return (_dispatcher.willTrigger(_arg1)); } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function get objectType():String{ return (this._objectType); } public function hasEventListener(_arg1:String):Boolean{ return (_dispatcher.hasEventListener(_arg1)); } public function destroy():void{ this._sprite = null; this._dispatcher = null; } } }//package tv.mindistortion.flux.game.model
Section 162
//GameState (tv.mindistortion.flux.game.model.GameState) package tv.mindistortion.flux.game.model { import de.polygonal.ds.*; import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import tv.mindistortion.flux.events.*; public class GameState implements IFluxObject, IEventDispatcher { protected var _gameObjects:DLinkedList; protected var _level:SecureNumber; protected var _gameOver; protected var _dispatcher:EventDispatcher; protected var _score:SecureNumber; protected var _gameObjectsByType:Dictionary; protected var _levelComplete:Boolean; protected var _spriteToGameObject:Dictionary; public function GameState(){ _gameObjects = new DLinkedList(); _spriteToGameObject = new Dictionary(true); _gameObjectsByType = new Dictionary(true); _dispatcher = new EventDispatcher(); super(); this._score = new SecureNumber(0); this._level = new SecureNumber(0); } public function dispatchEvent(_arg1:Event):Boolean{ return (_dispatcher.dispatchEvent(_arg1)); } public function get gameObjects():DLinkedList{ if (this._gameObjects != null){ return (this._gameObjects); }; return (new DLinkedList()); } public function get level():Number{ return (this._level.val); } public function set level(_arg1:Number):void{ this._level.val = _arg1; } public function destroy():void{ var _local1:DListIterator; var _local2:GameObject; this._dispatcher = null; this._score = null; this._level = null; _local1 = this._gameObjects.getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as GameObject); _local2.destroy(); _local1.next(); }; this._gameObjects.clear(); this._gameObjects = null; this._spriteToGameObject = null; this._gameObjectsByType = null; } public function get score():Number{ return (this._score.val); } public function willTrigger(_arg1:String):Boolean{ return (_dispatcher.willTrigger(_arg1)); } public function get levelComplete():Boolean{ return (_levelComplete); } public function nextLevel():void{ _levelComplete = false; this._level.val++; } public function addGameObject(_arg1:GameObject):void{ var _local2:DLinkedList; this._gameObjects.append(_arg1); this._spriteToGameObject[_arg1.sprite] = _arg1; if (this._gameObjectsByType[_arg1.objectType] == null){ _local2 = new DLinkedList(); } else { _local2 = this._gameObjectsByType[_arg1.objectType]; }; _local2.append(_arg1); this._gameObjectsByType[_arg1.objectType] = _local2; } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function getGameObjectsByType(_arg1:String):DLinkedList{ if (this._gameObjectsByType[_arg1] != null){ return ((this._gameObjectsByType[_arg1] as DLinkedList)); }; return (new DLinkedList()); } public function getNumGameObjectsByType(_arg1:String):Number{ var _local2:DLinkedList; if (this._gameObjectsByType[_arg1] == null){ return (0); }; _local2 = (this._gameObjectsByType[_arg1] as DLinkedList); return (_local2.size); } public function set score(_arg1:Number):void{ this._score.val = _arg1; } public function getGameObjectBySprite(_arg1:Sprite):GameObject{ if (this._spriteToGameObject[_arg1]){ return ((this._spriteToGameObject[_arg1] as GameObject)); }; throw (new Error("GameState.getGameObjectBySprite: No GameObject associated with this sprite")); } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _dispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function get gameOver():Boolean{ return (_gameOver); } public function set gameOver(_arg1:Boolean):void{ _gameOver = _arg1; } public function hasEventListener(_arg1:String):Boolean{ return (_dispatcher.hasEventListener(_arg1)); } public function removeGameObject(_arg1:GameObject, _arg2:Boolean=true):void{ var _local3:DListIterator; var _local4:DLinkedList; _local3 = this._gameObjects.nodeOf(_arg1); this._gameObjects.remove(_local3); delete this._spriteToGameObject[_arg1.sprite]; _local4 = getGameObjectsByType(_arg1.objectType); _local3 = _local4.nodeOf(_arg1); _local4.remove(_local3); if (!_arg2){ this.dispatchEvent(new RefEvent(RefEvent.OBJECT_REMOVED, _arg1)); }; _arg1.destroy(); _arg1 = null; } public function clearLevel():void{ var _local1:DListIterator; var _local2:GameObject; _local1 = this._gameObjects.getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as GameObject); _local2.destroy(); _local1.next(); }; this._gameObjects.clear(); this._spriteToGameObject = new Dictionary(true); this._gameObjectsByType = new Dictionary(true); } public function set levelComplete(_arg1:Boolean):void{ _levelComplete = _arg1; } } }//package tv.mindistortion.flux.game.model
Section 163
//IGameObject (tv.mindistortion.flux.game.model.IGameObject) package tv.mindistortion.flux.game.model { import flash.display.*; public interface IGameObject { function get sprite():Sprite; function get objectType():String; } }//package tv.mindistortion.flux.game.model
Section 164
//MovingGameObject (tv.mindistortion.flux.game.model.MovingGameObject) package tv.mindistortion.flux.game.model { import tv.mindistortion.flux.*; public class MovingGameObject extends GameObject implements IFluxObject { public var rotStep:Number; public var yStep:Number; public var xStep; public var xScaleStep; public var yScaleStep:Number; public function MovingGameObject(_arg1:String="generic"){ super(_arg1); } override public function destroy():void{ super.destroy(); } } }//package tv.mindistortion.flux.game.model
Section 165
//GameView (tv.mindistortion.flux.game.view.GameView) package tv.mindistortion.flux.game.view { import de.polygonal.ds.*; import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.model.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.flux.menu.view.*; import flash.filters.*; public class GameView extends MovieClip implements IFluxObject { protected var _pause:Boolean; protected var _pauseBmp:Bitmap; protected var _viewPort:ViewPort; protected var _shownObjectStatus:Dictionary; private var _gameHUD:GameHUD; private var _gameState:GameState; protected var _tweenHelpers:DLinkedList; protected var _menuStage:Sprite; protected var _pauseBmpDat:BitmapData; protected var _gameStage:Sprite; public function GameView(_arg1:GameState){ _shownObjectStatus = new Dictionary(true); _tweenHelpers = new DLinkedList(); super(); this._gameState = _arg1; this._gameState.addEventListener(RefEvent.OBJECT_REMOVED, onObjectRemoved, false, 0, true); this._gameStage = new Sprite(); this.addChild(this._gameStage); this.addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); this._viewPort = new ViewPort(); this._menuStage = new Sprite(); this.addChild(this._menuStage); } public function destroy():void{ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; this._gameState = null; this._gameHUD.destroy(); this._gameHUD = null; this._gameStage = null; this._menuStage = null; this._viewPort = null; this._shownObjectStatus = null; this._tweenHelpers.clear(); this._tweenHelpers = null; _pauseBmpDat = null; _pauseBmp = null; } public function set pause(_arg1:Boolean):void{ var _local2:Array; if (_arg1 == _pause){ return; }; _pause = _arg1; if (_arg1){ _pauseBmpDat = new BitmapData(_viewPort.width, _viewPort.height); _pauseBmpDat.draw(_gameStage); _pauseBmp = new Bitmap(_pauseBmpDat); _local2 = new Array(); _local2 = _local2.concat([1.1, 0.1, 0.1, 0, 0]); _local2 = _local2.concat([0.1, 1.1, 0.1, 0, 0]); _local2 = _local2.concat([0.1, 0.1, 1.1, 0, 0]); _local2 = _local2.concat([0, 0, 0, 1, 0]); _pauseBmp.filters = [new BlurFilter(), new ColorMatrixFilter(_local2)]; _gameStage.addChild(_pauseBmp); } else { if (_pauseBmp != null){ if (_gameStage.contains(_pauseBmp)){ _gameStage.removeChild(_pauseBmp); _pauseBmp = null; _pauseBmpDat = null; }; }; }; } private function cleanHelpers():void{ var _local1:DListIterator; var _local2:ITweenHelper; _local1 = this._tweenHelpers.getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as ITweenHelper); if (_local2.done){ this._tweenHelpers.remove(_local1); }; _local1.next(); }; } protected function renderGameObject(_arg1:GameObject, _arg2:Sprite=null):void{ if (_arg1.sprite == null){ return; }; _arg1.sprite.x = _arg1.x; _arg1.sprite.y = _arg1.y; _arg1.sprite.rotation = _arg1.rotation; if (_arg2 == null){ _arg2 = this._gameStage; }; if (((!(_arg2.contains(_arg1.sprite))) && (this._viewPort.isInViewPort(_arg1.sprite)))){ _arg2.addChild(_arg1.sprite); } else { if (((_arg2.contains(_arg1.sprite)) && (!(this._viewPort.isInViewPort(_arg1.sprite))))){ _arg2.removeChild(_arg1.sprite); }; }; if (this._shownObjectStatus[_arg1] == null){ this._shownObjectStatus[_arg1] = _arg1.currStatus; }; } public function get viewHeight():Number{ return (this._viewPort.height); } public function get viewWidth():Number{ return (this._viewPort.width); } protected function renderView():void{ var _local1:DListIterator; var _local2:GameObject; _local1 = this._gameState.gameObjects.getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as GameObject); renderGameObject(_local2); _local1.next(); }; } protected function removeGameObject(_arg1:GameObject, _arg2:Sprite=null):void{ if (_arg1.sprite == null){ return; }; if (_arg2 == null){ _arg2 = this._gameStage; }; if (_arg2.contains(_arg1.sprite)){ _arg2.removeChild(_arg1.sprite); }; } protected function onObjectRemoved(_arg1:RefEvent):void{ var _local2:GameObject; _local2 = (_arg1.refTarget as GameObject); removeGameObject(_local2); } protected function addHUD(_arg1:GameHUD){ this._gameHUD = _arg1; this._menuStage.addChild(this._gameHUD); } public function get centerY():Number{ return ((this._viewPort.height / 2)); } protected function showHUD():void{ if (!_menuStage.contains(_gameHUD)){ _menuStage.addChild(_gameHUD); }; } public function get centerX():Number{ return ((this._viewPort.width / 2)); } protected function clearMc(_arg1:Sprite):void{ if (_arg1 != null){ if (contains(_arg1)){ removeChild(_arg1); }; _arg1 = null; }; } private function onEventEnterFrame(_arg1:Event):void{ renderView(); cleanHelpers(); } protected function hideHUD():void{ if (_menuStage.contains(_gameHUD)){ _menuStage.removeChild(_gameHUD); }; } } }//package tv.mindistortion.flux.game.view
Section 166
//ITweenHelper (tv.mindistortion.flux.game.view.ITweenHelper) package tv.mindistortion.flux.game.view { import flash.events.*; public interface ITweenHelper extends IEventDispatcher { function get done():Boolean; } }//package tv.mindistortion.flux.game.view
Section 167
//Popup (tv.mindistortion.flux.game.view.Popup) package tv.mindistortion.flux.game.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import fl.transitions.*; import flash.text.*; import fl.transitions.easing.*; public class Popup extends Sprite implements IFluxObject { public var bg:MovieClip; public var lblTitle:TextField; private var _tweenAlpha:Tween; protected var _btnClose; protected var _btnConfirm; protected var _btnAbort:MovieClip; private var _tweenScaleX; private var _tweenScaleY; public var lblMsg:TextField; public function Popup(_arg1:String, _arg2:String="", _arg3:Number=270, _arg4:Number=-1){ bg.width = _arg3; if (_arg4 > 0){ bg.height = _arg4; }; lblTitle.text = _arg2; lblMsg.autoSize = TextFieldAutoSize.LEFT; lblMsg.text = _arg1; trace(lblMsg.bottomScrollV); bg.height = (lblMsg.height + 69); lblMsg.y = (((-(bg.height) / 2) + 13) + lblTitle.height); lblTitle.y = ((-(bg.height) / 2) + 10); addButtons(); _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 0.3, 1, 15); _tweenScaleX = new Tween(this, "scaleX", Back.easeOut, 0.5, 1, 15); _tweenScaleY = new Tween(this, "scaleY", Back.easeOut, 0.5, 1, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinished, false, 0, true); } public function destroy():void{ _tweenAlpha = null; _tweenScaleX = null; _tweenScaleY = null; } private function onOutroFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onOutroFinished); destroy(); dispatchEvent(new Event(Event.CLOSE)); } protected function onClose(_arg1:MouseEvent=null):void{ _tweenAlpha = new Tween(this, "alpha", Regular.easeIn, 1, 0.1, 7); _tweenScaleX = new Tween(this, "scaleX", Regular.easeIn, 1, 0.1, 7); _tweenScaleY = new Tween(this, "scaleY", Regular.easeIn, 1, 0.1, 7); if (_btnClose != null){ _btnClose.removeEventListener(MouseEvent.CLICK, onClose); }; if (_btnConfirm != null){ _btnConfirm.removeEventListener(MouseEvent.CLICK, onConfirm); }; if (_btnAbort != null){ _btnAbort.removeEventListener(MouseEvent.CLICK, onAbort); }; _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onOutroFinished, false, 0, true); } private function onTweenFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onTweenFinished); addButtonEventListeners(); } protected function onAbort(_arg1:MouseEvent=null):void{ dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.POPUP_ABORT)); onClose(); } protected function addButtons():void{ _btnClose = new MovieClip(); _btnAbort = new MovieClip(); _btnConfirm = new MovieClip(); } protected function onConfirm(_arg1:MouseEvent=null):void{ dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.POPUP_CONFIRM)); onClose(); } protected function addButtonEventListeners():void{ if (_btnClose != null){ _btnClose.addEventListener(MouseEvent.CLICK, onClose, false, 0, true); }; if (_btnAbort != null){ _btnAbort.addEventListener(MouseEvent.CLICK, onAbort, false, 0, true); }; if (_btnConfirm != null){ _btnConfirm.addEventListener(MouseEvent.CLICK, onConfirm, false, 0, true); }; } } }//package tv.mindistortion.flux.game.view
Section 168
//Tooltip (tv.mindistortion.flux.game.view.Tooltip) package tv.mindistortion.flux.game.view { import flash.display.*; import tv.mindistortion.flux.*; import fl.transitions.*; import flash.text.*; import fl.transitions.easing.*; public class Tooltip extends Sprite implements IFluxObject { public var bg:MovieClip; private var _tweenAlpha:Tween; public var lblMsg:TextField; public function Tooltip(_arg1:String){ lblMsg.autoSize = TextFieldAutoSize.LEFT; lblMsg.text = _arg1; bg.height = (lblMsg.height + 20); lblMsg.y = (-(bg.height) / 2); show(); } private function onOutroFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onOutroFinished); } public function hide():void{ _tweenAlpha = new Tween(this, "alpha", Regular.easeIn, 1, 0.1, 7); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onOutroFinished, false, 0, true); } private function onTweenFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onTweenFinished); } public function destroy():void{ _tweenAlpha = null; } public function show():void{ _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 0.3, 1, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinished, false, 0, true); } } }//package tv.mindistortion.flux.game.view
Section 169
//ViewPort (tv.mindistortion.flux.game.view.ViewPort) package tv.mindistortion.flux.game.view { import flash.display.*; public class ViewPort { public var width:Number;// = 550 public var height:Number;// = 400 public var scaleX:Number;// = 1 public var scaleY:Number;// = 1 public var x:Number;// = 0 public var y:Number;// = 0 public var rotation:Number;// = 0 public function ViewPort(){ height = 400; width = 550; scaleX = 1; scaleY = 1; rotation = 0; x = 0; y = 0; super(); } public function isInViewPort(_arg1:Sprite):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = ((this.x + this.width) + _arg1.width); _local3 = (this.x - _arg1.width); _local4 = (this.y - _arg1.height); _local5 = ((this.y + this.height) + _arg1.height); if (_arg1.x > _local2){ return (false); }; if (_arg1.x < _local3){ return (false); }; if (_arg1.y < _local4){ return (false); }; if (_arg1.y > _local5){ return (false); }; return (true); } public function isPointInViewPort(_arg1:Number, _arg2:Number):Boolean{ if (_arg1 > (this.x + width)){ return (false); }; if (_arg1 < this.x){ return (false); }; if (_arg2 < this.y){ return (false); }; if (_arg2 > (this.y + height)){ return (false); }; return (true); } } }//package tv.mindistortion.flux.game.view
Section 170
//GameHUD (tv.mindistortion.flux.menu.view.GameHUD) package tv.mindistortion.flux.menu.view { import tv.mindistortion.flux.*; public class GameHUD extends GameMenu implements IFluxObject { public function destroy():void{ } } }//package tv.mindistortion.flux.menu.view
Section 171
//GameMenu (tv.mindistortion.flux.menu.view.GameMenu) package tv.mindistortion.flux.menu.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.events.*; public class GameMenu extends MovieClip { protected function continueGame(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.CONTINUE_GAME); this.dispatchEvent(_local2); } protected function nextLevel(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.NEXT_LEVEL); this.dispatchEvent(_local2); } protected function showTutorial(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.TUTORIAL); this.dispatchEvent(_local2); } protected function sendHighscore(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.SUBMIT_HIGHSCORE); this.dispatchEvent(_local2); } protected function showHighscore(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.SHOW_HIGHSCORE); this.dispatchEvent(_local2); } protected function newGame(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.NEW_GAME); this.dispatchEvent(_local2); } protected function mainMenu(_arg1:Event=null):void{ var _local2:MenuEvent; _local2 = new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU); this.dispatchEvent(_local2); } } }//package tv.mindistortion.flux.menu.view
Section 172
//Preloader (tv.mindistortion.flux.menu.view.Preloader) package tv.mindistortion.flux.menu.view { import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.infect.game.view.*; public class Preloader extends MovieClip implements IFluxObject { public var btn:InfectTextButton; private var _timer:Timer; public function Preloader(){ addFrameScript(116, frame117); stop(); root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadProgress, false, 0, true); } public function destroy():void{ } function frame117(){ stop(); btn = new InfectTextButton("infect the planet!"); btn.scaleX = (btn.scaleY = 1.2); btn.x = -80; btn.y = -12; addChild(btn); btn.addEventListener(MouseEvent.CLICK, onBtnClick, false, 0, true); } public function onBtnClick(_arg1:MouseEvent):void{ dispatchEvent(new Event(Event.COMPLETE)); } private function onPreloaderComplete(_arg1:Event):void{ removeEventListener(Event.COMPLETE, onPreloaderComplete); MovieClip(this.parent).play(); } private function onLoadProgress(_arg1:ProgressEvent):void{ var _local2:Number; _local2 = Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)); gotoAndStop(_local2); if (_local2 >= 100){ root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoadProgress); addEventListener(Event.COMPLETE, onPreloaderComplete, false, 0, true); gotoAndPlay(101); }; } private function onTimerComplete(_arg1:TimerEvent):void{ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); _timer = null; MovieClip(this.parent).play(); } } }//package tv.mindistortion.flux.menu.view
Section 173
//AchievementModel (tv.mindistortion.flux.meta.AchievementModel) package tv.mindistortion.flux.meta { import tv.mindistortion.flux.*; public class AchievementModel implements IFluxObject { private var _descr:String; private var _unlocked:Boolean; private var _name:String; private var _secret:Boolean; private var _points:Number; public function AchievementModel(_arg1:String, _arg2:String, _arg3:Number, _arg4:Boolean=false){ _name = _arg1; _descr = _arg2; _points = _arg3; _secret = _arg4; } public function get points():Number{ return (_points); } public function set unlocked(_arg1:Boolean):void{ _unlocked = _arg1; } public function get descr():String{ return (_descr); } public function get secret():Boolean{ return (_secret); } public function get name():String{ return (_name); } public function get unlocked():Boolean{ return (_unlocked); } public function destroy():void{ } } }//package tv.mindistortion.flux.meta
Section 174
//AchievementPopup (tv.mindistortion.flux.meta.AchievementPopup) package tv.mindistortion.flux.meta { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.transitions.*; import flash.text.*; import fl.transitions.easing.*; public class AchievementPopup extends MovieClip { private var _tweenAlpha:Tween; public var lblName:TextField; private var _timer:Timer; public var phIcon:Sprite; private var _tweenScaleX; private var _tweenScaleY; public function AchievementPopup(_arg1:String, _arg2:Sprite=null){ if (_arg2 != null){ phIcon.visible = false; addChild(_arg2); _arg2.x = phIcon.x; _arg2.y = phIcon.y; }; lblName.text = _arg1; _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 0, 1, 15); _tweenScaleX = new Tween(this, "scaleX", Strong.easeOut, 0.2, 1, 15); _tweenScaleY = new Tween(this, "scaleY", Strong.easeOut, 0.2, 1, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onIntroFinished, false, 0, true); } private function onOutroFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onOutroFinished); _tweenAlpha = null; _tweenScaleX = null; _tweenScaleY = null; dispatchEvent(new Event(Event.COMPLETE)); } private function onIntroFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onIntroFinished); _timer = new Timer(3000, 1); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete, false, 0, true); _timer.start(); } private function onTimerComplete(_arg1:TimerEvent):void{ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); _timer = null; _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 1, 0, 15); _tweenScaleX = new Tween(this, "scaleX", Strong.easeOut, 1, 0.2, 15); _tweenScaleY = new Tween(this, "scaleY", Strong.easeOut, 1, 0.2, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onOutroFinished, false, 0, true); } } }//package tv.mindistortion.flux.meta
Section 175
//Achievements (tv.mindistortion.flux.meta.Achievements) package tv.mindistortion.flux.meta { import flash.display.*; import flash.events.*; import com.newgrounds.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import flash.net.*; public class Achievements implements IFluxObject, IEventDispatcher { private const _soName:String = "Achievements"; private var _so:SharedObject; private var _dispatcher:EventDispatcher; private var _achievementIcons:Dictionary; private var _dict:Dictionary; private var _unlockedDict:Dictionary; private var _nameList:Array; private static var _instance:Achievements = new (Achievements); ; public function Achievements(){ _dispatcher = new EventDispatcher(); _dict = new Dictionary(); _unlockedDict = new Dictionary(); _achievementIcons = new Dictionary(); super(); if (_instance){ throw (new Error("tv.mindistortion.flux.meta::Achievements is a singleton class, please use Achievements.instance")); }; } public function dispatchEvent(_arg1:Event):Boolean{ return (_dispatcher.dispatchEvent(_arg1)); } public function unlock(_arg1:String):Boolean{ if (_nameList.indexOf(_arg1) > -1){ if (Settings.instance.website == Settings.NG){ API.unlockMedal(_arg1); } else { if ((((Settings.instance.website == Settings.KONG)) && (!((Settings.instance.externalAPI == null))))){ Settings.instance.externalAPI.stats.submit(_arg1, 1); }; }; if (!AchievementModel(_dict[_arg1]).unlocked){ dispatchEvent(new MenuEvent(MenuEvent.ACTION, _arg1)); AchievementModel(_dict[_arg1]).unlocked = true; _unlockedDict[_arg1] = true; _so = SharedObject.getLocal(_soName); _so.data[_arg1] = true; _so.flush(); return (true); }; }; return (false); } public function willTrigger(_arg1:String):Boolean{ return (_dispatcher.willTrigger(_arg1)); } public function addAchievement(_arg1:AchievementModel):void{ _dict[_arg1.name] = _arg1; if (_unlockedDict[_arg1.name]){ _arg1.unlocked = true; }; } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _dispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function set nameList(_arg1:Array):void{ _nameList = _arg1; loadAchievements(); } public function set achievementIcons(_arg1:Dictionary):void{ _achievementIcons = _arg1; } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function get list():Array{ var _local1:Array; var _local2:int; _local1 = []; _local2 = 0; while (_local2 < _nameList.length) { _local1.push(_dict[_nameList[_local2]]); _local2++; }; return (_local1); } public function get achievementIcons():Dictionary{ return (_achievementIcons); } private function loadAchievements():void{ var _local1:int; _so = SharedObject.getLocal(_soName); _local1 = 0; while (_local1 < _nameList.length) { if (_so.data[_nameList[_local1]] != undefined){ _unlockedDict[_nameList[_local1]] = _so.data[_nameList[_local1]]; }; _local1++; }; } public function hasEventListener(_arg1:String):Boolean{ return (_dispatcher.hasEventListener(_arg1)); } public function get dict():Dictionary{ return (_dict); } public function destroy():void{ } public function setIcon(_arg1:String, _arg2:Sprite):void{ _achievementIcons[_arg1] = _arg2; } public static function get instance():Achievements{ return (_instance); } } }//package tv.mindistortion.flux.meta
Section 176
//AchievementView (tv.mindistortion.flux.meta.AchievementView) package tv.mindistortion.flux.meta { import flash.display.*; import tv.mindistortion.flux.*; import flash.text.*; public class AchievementView extends MovieClip implements IFluxObject { public var lblDescr:TextField; private var _spriteLocked:Sprite; private var _model:AchievementModel; public var lblName:TextField; public var spritePh:MovieClip; private var _spriteUnlocked:Sprite; public function AchievementView(_arg1:AchievementModel, _arg2:Sprite, _arg3:Sprite){ _model = _arg1; _spriteLocked = _arg3; _spriteUnlocked = _arg2; _spriteLocked.x = spritePh.x; _spriteLocked.y = spritePh.y; _spriteUnlocked.x = spritePh.x; _spriteUnlocked.y = spritePh.y; if (((_arg1.secret) && (!(_arg1.unlocked)))){ lblName.text = "secret achievement"; lblDescr.text = "..."; } else { lblName.text = _arg1.name; lblDescr.text = _arg1.descr; }; spritePh.visible = false; if (_arg1.unlocked){ addChild(_spriteUnlocked); } else { addChild(_spriteLocked); }; } public function destroy():void{ } public function get model():AchievementModel{ return (_model); } } }//package tv.mindistortion.flux.meta
Section 177
//MessagePopUp (tv.mindistortion.flux.meta.MessagePopUp) package tv.mindistortion.flux.meta { public class MessagePopUp extends AchievementPopup { public function MessagePopUp(_arg1:String){ trace("MESSAGE"); super(_arg1, phIcon); } } }//package tv.mindistortion.flux.meta
Section 178
//SaveGameManager (tv.mindistortion.flux.meta.SaveGameManager) package tv.mindistortion.flux.meta { import com.adobe.serialization.json.*; import tv.mindistortion.flux.security.*; import flash.net.*; public class SaveGameManager { private var cryptoNite:CryptoNite; private var _so:SharedObject; private static var _instance:SaveGameManager = new (SaveGameManager); ; public function SaveGameManager(){ cryptoNite = new CryptoNite("k/ghjlkjKTR%8&"); super(); if (_instance){ throw (new Error("tv.mindistortion.flux.meta::SaveGameManager is a singleton class, please use Settings.instance")); }; } public function saveMeta(_arg1:Object, _arg2:String):Boolean{ var _local3:SharedObject; _local3 = SharedObject.getLocal(("meta_" + _arg2)); _local3.data[("meta_" + _arg2)] = cryptoNite.encrypt(JSON.encode(_arg1)); _local3.flush(); return (true); } public function loadMeta(_arg1:String):Object{ var _local2:SharedObject; var _local3:Array; _local2 = SharedObject.getLocal(("meta_" + _arg1)); if (_local2.data[("meta_" + _arg1)] == undefined){ return (null); }; _local3 = (JSON.decode(cryptoNite.decrypt(_local2.data[("meta_" + _arg1)])) as Array); return (JSON.decode(cryptoNite.decrypt(_local2.data[("meta_" + _arg1)]))); } public function saveGame(_arg1:Object, _arg2:uint=0):Boolean{ var _local3:SharedObject; _local3 = SharedObject.getLocal(("savegame" + _arg2)); if ((((_local3.data[("savegame" + _arg2)] == undefined)) || ((numSaveGames < 1)))){ numSaveGames++; }; _local3.data[("savegame" + _arg2)] = cryptoNite.encrypt(JSON.encode(_arg1)); _local3.flush(); return (true); } public function loadGame(_arg1:uint=0):Object{ var _local2:SharedObject; _local2 = SharedObject.getLocal(("savegame" + _arg1)); if (_local2.data[("savegame" + _arg1)] == undefined){ return (null); }; return (JSON.decode(cryptoNite.decrypt(_local2.data[("savegame" + _arg1)]))); } public function set numSaveGames(_arg1:uint):void{ var _local2:SharedObject; _local2 = SharedObject.getLocal("numSaveGames"); trace(("saving " + _arg1)); _local2.data.numSaveGames = _arg1; _local2.flush(); } public function deleteGame(_arg1:uint=0):void{ var _local2:SharedObject; _local2 = SharedObject.getLocal(("savegame" + _arg1)); _local2.clear(); numSaveGames--; } public function get numSaveGames():uint{ var _local1:SharedObject; _local1 = SharedObject.getLocal("numSaveGames"); if (_local1.data.numSaveGames == undefined){ return (0); }; if ((((_local1.data.numSaveGames == undefined)) || ((_local1.data.numSaveGames == null)))){ return (0); }; return (uint(_local1.data.numSaveGames)); } public static function get instance():SaveGameManager{ return (_instance); } } }//package tv.mindistortion.flux.meta
Section 179
//ScoreboardView (tv.mindistortion.flux.meta.ScoreboardView) package tv.mindistortion.flux.meta { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import fl.data.*; import flash.net.*; import flash.text.*; import com.adobe.crypto.*; import tv.mindistortion.flux.backend.*; public class ScoreboardView extends XmlLoader implements IFluxObject { private const _ME:String = "me"; private const _DAY:String = "day"; private const _EVERYONE:String = "everyone"; private const _ALL:String = "all"; private const _WEEK:String = "week"; private const _MONTH:String = "month"; public var dataGridHighscore:DataGrid; public var cbMe:ComboBox; private var _confURL:String; public var cbDate:ComboBox; private var _currDateFilter; private var _ranks:Dictionary; private var _myRank:Number; private var _showWebsite:String;// = "" public var lblStatus:TextField; private var _secretId:String; private var _submitWebsite:String;// = "" private var _name:String; private var _defaultDateFilter:String; public var lblName:TextField; public var inputName:TextField; private var _currMeFilter:String; private var _score:SecureNumber; public var btnSubmit:SimpleButton; public function ScoreboardView(){ _ranks = new Dictionary(); _submitWebsite = ""; _showWebsite = ""; super(); _defaultDateFilter = _WEEK; _currDateFilter = _defaultDateFilter; _currMeFilter = _EVERYONE; lblStatus.text = ""; initDataGrid(); lblName.visible = false; inputName.visible = false; inputName.restrict = "a-zA-Z0-9-_()@:.,;[]öÖäÄüÜ$%"; btnSubmit.visible = false; addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true); } override public function destroy():void{ super.destroy(); } private function onSubmitScore(_arg1:Event):void{ var e = _arg1; lblStatus.text = ""; super.onLoadDataComplete(e); try { _ranks[_DAY] = Number(_currXml.rank[0].@day); _ranks[_WEEK] = Number(_currXml.rank[0].@week); _ranks[_MONTH] = Number(_currXml.rank[0].@month); _ranks[_ALL] = Number(_currXml.rank[0].@all); } catch(e:Error) { cbMe.visible = false; _ranks[_DAY] = -1; _ranks[_WEEK] = -1; _ranks[_MONTH] = -1; _ranks[_ALL] = -1; }; loadHighscores(_defaultDateFilter, _ME); } private function onLoadScore(_arg1:Event):void{ var _local2:DataProvider; var _local3:Number; var _local4:Number; var _local5:Number; super.onLoadDataComplete(_arg1); lblStatus.text = ""; _local2 = new DataProvider(); _local4 = -1; _local5 = 0; while (_local5 < _currXml.list.player.length()) { _local3 = Number(_currXml.list.player[_local5].@rank); _local2.addItem({rank:_local3, name:_currXml.list.player[_local5].@name, score:_currXml.list.player[_local5].@score}); if (_local3 == _ranks[_currDateFilter]){ _local4 = _local5; }; _local5++; }; showData(_local2, _local4); } private function onDateChange(_arg1:Event):void{ loadHighscores(_arg1.target.value, _currMeFilter); } private function showData(_arg1:DataProvider, _arg2:Number=-1):void{ dataGridHighscore.dataProvider = _arg1; dataGridHighscore.selectedIndex = _arg2; lblStatus.text = ""; } private function onMeChange(_arg1:Event):void{ loadHighscores(_currDateFilter, _arg1.target.value); } public function set submitWebsite(_arg1:String):void{ _submitWebsite = _arg1; } public function get showWebsite():String{ return (_showWebsite); } private function onClick(_arg1:MouseEvent):void{ switch (_arg1.target){ case btnSubmit: if (inputName.text.length > 0){ btnSubmit.removeEventListener(MouseEvent.CLICK, onClick); _name = inputName.text; hideSubmitDialog(); sendScore(); }; break; }; } private function showSubmitDialog():void{ lblName.visible = true; inputName.visible = true; btnSubmit.visible = true; btnSubmit.addEventListener(MouseEvent.CLICK, onClick, false, 0, true); } private function initDataGrid():void{ var _local1:Number; var _local2:Number; var _local3:Number; dataGridHighscore.mouseChildren = false; dataGridHighscore.selectable = true; dataGridHighscore.columns = ["rank", "name", "score"]; _local1 = (dataGridHighscore.width * 0.15); _local2 = (dataGridHighscore.width * 0.5); _local3 = (dataGridHighscore.width * 0.35); dataGridHighscore.getColumnAt(0).width = _local1; dataGridHighscore.getColumnAt(1).width = _local2; dataGridHighscore.getColumnAt(2).width = _local3; } public function set confURL(_arg1:String):void{ if (_arg1 != _confURL){ _confURL = _arg1; loadHighscores(_currDateFilter, _currMeFilter); }; } public function get submitWebsite():String{ return (_submitWebsite); } override protected function onError(_arg1:IOErrorEvent):void{ lblStatus.text = "connection failed"; } public function submitScore(_arg1:Number, _arg2:String="", _arg3:String=""):void{ _score = new SecureNumber(_arg1); _secretId = _arg3; if (_arg2 == ""){ cbDate.visible = false; cbMe.visible = false; showSubmitDialog(); dataGridHighscore.visible = false; } else { _name = ""; sendScore(); }; } private function onAddedToStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); cbMe.visible = false; cbDate.selectedIndex = 1; cbDate.addEventListener(Event.CHANGE, onDateChange, false, 0, true); cbMe.addEventListener(Event.CHANGE, onMeChange, false, 0, true); } public function get confURL():String{ return (_confURL); } public function set showWebsite(_arg1:String):void{ _showWebsite = _arg1; } private function loadHighscores(_arg1:String, _arg2:String):void{ var _local3:Number; var _local4:URLVariables; lblStatus.text = "loading..."; _currDateFilter = _arg1; _currMeFilter = _arg2; if (_arg2 == _ME){ _local3 = (_ranks[_arg1] - 5); if ((((_local3 < 0)) || (isNaN(_local3)))){ _local3 = 0; }; } else { _local3 = 0; }; _local4 = new URLVariables(); _local4.action = "get_highscores"; _local4.game = "infect2"; _local4.submit_website = _submitWebsite; _local4.show_website = _showWebsite; _local4.datefilter = _arg1; _local4.pagesize = 15; _local4.offset = _local3; loadData(confURL, _local4, onLoadScore); } private function hideSubmitDialog():void{ lblName.visible = false; inputName.visible = false; btnSubmit.visible = false; } private function sendScore():void{ var _local1:URLVariables; if (confURL == null){ throw (new Error("undefined ConfURL")); }; if (confURL.length < 1){ throw (new Error("undefined ConfURL")); }; if ((((_score.val < 0)) || ((_name == null)))){ throw (new Error("tried to send score without score or name")); }; dataGridHighscore.visible = true; cbDate.visible = true; cbMe.visible = true; lblStatus.text = "sending..."; _local1 = new URLVariables(); _local1.action = "save_score"; _local1.game = "infect2"; _local1.submit_website = _submitWebsite; _local1.show_website = _showWebsite; _local1.name = _name; _local1.secret_id = _secretId; _local1.score = _score.val; trace(("sec " + _secretId)); _local1.r = Math.floor((Math.random() * 1000000000)); _local1.key = MD5.hash(((((_local1.name + _local1.score) + "") + _local1.r) + "n9")); loadData(confURL, _local1, onSubmitScore); } } }//package tv.mindistortion.flux.meta
Section 180
//CryptoNite (tv.mindistortion.flux.security.CryptoNite) package tv.mindistortion.flux.security { import flash.utils.*; import com.hurlant.crypto.symmetric.*; import com.hurlant.crypto.prng.*; import com.hurlant.util.*; import com.hurlant.crypto.*; public class CryptoNite { private var ivTxt; private var currentResult:ByteArray; private var inputTxt; private var currentInput:ByteArray; private var outputFormat; private var key; private var inputFormat; private var paddingType:String; private var simpleSelected:Boolean; private var outputTxt:String; private var encType; private var keyFormat; private var modeType; public function CryptoNite(_arg1:String, _arg2:String=""){ this.encType = "aes"; this.modeType = "ecb"; this.keyFormat = "text"; this.inputFormat = "text"; this.outputFormat = "b64"; this.paddingType = "pkcs5"; this.key = _arg1; this.ivTxt = _arg2; } private function genIV():void{ var _local1:String; var _local2:ICipher; var _local3:uint; var _local4:Random; var _local5:ByteArray; _local1 = ((this.encType + "-") + this.modeType); _local2 = Crypto.getCipher(_local1, null); _local3 = _local2.getBlockSize(); _local4 = new Random(); _local5 = new ByteArray(); _local4.nextBytes(_local5, _local3); } public function decrypt(_arg1:String):String{ var _local2:String; var _local3:ByteArray; var _local4:String; var _local5:String; var _local6:ByteArray; var _local7:String; var _local8:String; var _local9:IPad; var _local10:ICipher; var _local11:IVMode; this.outputTxt = _arg1; _local2 = this.key; _local4 = String(this.keyFormat); switch (_local4){ case "hex": _local3 = Hex.toArray(_local2); break; case "b64": _local3 = Base64.decodeToByteArray(_local2); break; default: _local3 = Hex.toArray(Hex.fromString(_local2)); }; _local5 = this.outputTxt; _local7 = String(this.outputFormat); switch (_local7){ case "hex": _local6 = Hex.toArray(_local5); break; case "b64": _local6 = Base64.decodeToByteArray(_local5); break; default: _local6 = Hex.toArray(Hex.fromString(_local5)); }; _local8 = ((this.encType + "-") + this.modeType); if (simpleSelected){ _local8 = ("simple-" + _local8); }; _local9 = ((this.paddingType == "pkcs5")) ? new PKCS5() : new NullPad(); _local10 = Crypto.getCipher(_local8, _local3, _local9); _local9.setBlockSize(_local10.getBlockSize()); if ((_local10 is IVMode)){ _local11 = (_local10 as IVMode); _local11.IV = Hex.toArray(ivTxt); }; _local10.decrypt(_local6); currentInput = _local6; return (displayInput()); } private function displayOutput():String{ var _local1:String; var _local2:String; if (currentResult == null){ return (""); }; _local2 = String(this.outputFormat); switch (_local2){ case "hex": _local1 = Hex.fromArray(currentResult); break; case "b64": _local1 = Base64.encodeByteArray(currentResult); break; default: _local1 = Hex.toString(Hex.fromArray(currentResult)); break; }; return (_local1); } public function encrypt(_arg1:String):String{ var _local2:String; var _local3:ByteArray; var _local4:String; var _local5:String; var _local6:ByteArray; var _local7:String; var _local8:String; var _local9:IPad; var _local10:ICipher; var _local11:IVMode; _local2 = this.key; _local4 = String(this.keyFormat); switch (_local4){ case "hex": _local3 = Hex.toArray(_local2); break; case "b64": _local3 = Base64.decodeToByteArray(_local2); break; default: _local3 = Hex.toArray(Hex.fromString(_local2)); }; _local5 = _arg1; _local7 = this.inputFormat; switch (_local7){ case "hex": _local6 = Hex.toArray(_local5); break; case "b64": _local6 = Base64.decodeToByteArray(_local5); break; default: _local6 = Hex.toArray(Hex.fromString(_local5)); }; _local8 = ((this.encType + "-") + this.modeType); if (simpleSelected){ _local8 = ("simple-" + _local8); }; _local9 = ((this.paddingType == "pkcs5")) ? new PKCS5() : new NullPad(); _local10 = Crypto.getCipher(_local8, _local3, _local9); _local9.setBlockSize(_local10.getBlockSize()); _local10.encrypt(_local6); currentResult = _local6; return (displayOutput()); } private function displayInput():String{ var _local1:String; var _local2:String; if (currentInput == null){ return (""); }; _local2 = String(this.inputFormat); switch (_local2){ case "hex": _local1 = Hex.fromArray(currentInput); break; case "b64": _local1 = Base64.encodeByteArray(currentInput); break; default: _local1 = Hex.toString(Hex.fromArray(currentInput)); break; }; return (_local1); } } }//package tv.mindistortion.flux.security
Section 181
//ISecureNumber (tv.mindistortion.flux.security.ISecureNumber) package tv.mindistortion.flux.security { public interface ISecureNumber { function get val():Number; function set val(_arg1:Number):void; } }//package tv.mindistortion.flux.security
Section 182
//SecureNumber (tv.mindistortion.flux.security.SecureNumber) package tv.mindistortion.flux.security { import com.adobe.crypto.*; public class SecureNumber implements ISecureNumber { private var _val; private var _checkSum:String; private var _randSalt:Number; public function SecureNumber(_arg1:Number=0){ this._val = _arg1; this._randSalt = Math.random(); this._checkSum = this.generateValCheckSum(); } public function get val():Number{ if (this.checkVal()){ return (this._val); }; return (0); } private function generateValCheckSum():String{ return (MD5.hash(String((this._val + this._randSalt)))); } public function set val(_arg1:Number):void{ if (this.checkVal()){ this._val = _arg1; this._checkSum = this.generateValCheckSum(); } else { this._val = 0; }; } private function checkVal():Boolean{ if (this._checkSum == this.generateValCheckSum()){ return (true); }; return (false); } } }//package tv.mindistortion.flux.security
Section 183
//LoopMixer (tv.mindistortion.flux.sound.LoopMixer) package tv.mindistortion.flux.sound { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.*; import flash.media.*; public class LoopMixer extends Sprite implements IFluxObject { private const _LOOP_SECTION:Number = 46.4399092970522; private const _LOOP_NEXT:int = 1; private const _LOOP_PREV:int = -1; private var _channels:Array; private var _loops:Array; private var _currLoop:int; private var _nextLoop:int; private var _loopswitch:int; private var _fadeOut:Boolean;// = false public function LoopMixer(_arg1:Array){ _fadeOut = false; super(); _loops = _arg1; _channels = []; _loopswitch = _LOOP_NEXT; _nextLoop = -2; } public function destroy():void{ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; _channels = null; _loops = null; } public function next():void{ _loopswitch = _LOOP_NEXT; } public function stop():void{ var _local1:int; _currLoop = -2; _loopswitch = 0; if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; _local1 = 0; while (_local1 < _loops.length) { _channels[_local1].stop(); _local1++; }; } public function fadeOut():void{ if (_channels[_currLoop] == null){ return; }; _fadeOut = true; if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); }; } private function nextLoop():void{ _channels[_currLoop].soundTransform = new SoundTransform(0); _currLoop++; if (_currLoop >= _loops.length){ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; return; }; _channels[_currLoop].soundTransform = new SoundTransform(1); _nextLoop = _currLoop; _loopswitch = 0; } public function set loop(_arg1:int):void{ if (_nextLoop != _arg1){ _nextLoop = _arg1; }; } public function start(_arg1:int=0):void{ var _local2:int; _currLoop = _arg1; _local2 = 0; while (_local2 < _loops.length) { _channels[_local2] = _loops[_local2].play(0, int.MAX_VALUE); _channels[_local2].soundTransform = new SoundTransform(0); _local2++; }; _channels[_currLoop].soundTransform = new SoundTransform(1); if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); }; } public function get numLoops():Number{ return (_loops.length); } public function prev():void{ _loopswitch = _LOOP_PREV; } private function prevLoop():void{ _channels[_currLoop].soundTransform = new SoundTransform(0); _currLoop--; if (_currLoop < 0){ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; return; }; _channels[_currLoop].soundTransform = new SoundTransform(1); _nextLoop = _currLoop; _loopswitch = 0; } private function onEventEnterFrame(_arg1:Event):void{ var _local2:Number; var _local3:Number; if (_fadeOut){ _local3 = (_channels[_currLoop].soundTransform.volume * 0.7); _channels[_currLoop].soundTransform = new SoundTransform(_local3); if (_channels[_currLoop].soundTransform.volume < 0.1){ _fadeOut = false; stop(); dispatchEvent(new Event(Event.COMPLETE)); return; }; }; if ((((_nextLoop == 0)) && ((_currLoop == _nextLoop)))){ return; }; _local2 = (_channels[_currLoop].position % (_loops[_currLoop].length / 2)); if ((((_local2 < ((_loops[_currLoop].length / 2) - (_LOOP_SECTION * 3)))) && ((_local2 > ((_loops[_currLoop].length / 2) - (_LOOP_SECTION * 4)))))){ if (_nextLoop < -2){ if (_loopswitch == _LOOP_NEXT){ nextLoop(); } else { if (_loopswitch == _LOOP_PREV){ prevLoop(); }; }; } else { playLoop(_nextLoop); }; }; } public function get currLoop():Number{ return (_currLoop); } private function playLoop(_arg1:int):void{ _channels[_currLoop].soundTransform = new SoundTransform(0); _currLoop = _arg1; if (_arg1 < 0){ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; } else { _channels[_currLoop].soundTransform = new SoundTransform(1); }; _loopswitch = 0; } } }//package tv.mindistortion.flux.sound
Section 184
//SoundController (tv.mindistortion.flux.sound.SoundController) package tv.mindistortion.flux.sound { import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.*; import flash.media.*; public class SoundController extends Sprite implements IFluxObject { private const _FADE_OUT:int = -1; private const _FADE_IN:int = 1; private const _FADE_DONE:int = 0; private var _sound:Sound; private var _fadeDir:int; private var _timer:Timer; private var _soundChannel:SoundChannel; public function SoundController(){ _fadeDir = _FADE_DONE; } private function onDelayTimerComplete(_arg1:TimerEvent):void{ removeEventListener(TimerEvent.TIMER_COMPLETE, onDelayTimerComplete); onDelayedFadeIn(); } public function onDelayedFadeIn(_arg1:Event=null):void{ removeEventListener(Event.COMPLETE, onDelayedFadeIn); fadeIn(_sound); } public function fadeOut():void{ if (_soundChannel == null){ _fadeDir = _FADE_DONE; dispatchEvent(new Event(Event.COMPLETE)); return; }; _fadeDir = _FADE_OUT; if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); }; } public function fadeIn(_arg1:Sound, _arg2:Number=0):void{ _sound = _arg1; if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onDelayTimerComplete, false, 0, true); _timer.start(); return; }; if (_fadeDir == _FADE_OUT){ addEventListener(Event.COMPLETE, onDelayedFadeIn, false, 0, true); return; }; _soundChannel = _sound.play(0, int.MAX_VALUE); _soundChannel.soundTransform = new SoundTransform(0); _fadeDir = _FADE_IN; if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); }; } private function onEventEnterFrame(_arg1:Event):void{ var _local2:Number; if (_fadeDir == _FADE_OUT){ _local2 = _soundChannel.soundTransform.volume; if (_local2 < 0.1){ _soundChannel.stop(); removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); _fadeDir = _FADE_DONE; dispatchEvent(new Event(Event.COMPLETE)); return; }; _soundChannel.soundTransform = new SoundTransform((_local2 * 0.8)); } else { if (_fadeDir == _FADE_IN){ _local2 = _soundChannel.soundTransform.volume; if (_local2 == 0){ _local2 = 0.1; }; if (_local2 > 0.9){ _soundChannel.soundTransform = new SoundTransform(1); removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); _fadeDir = _FADE_DONE; return; }; _soundChannel.soundTransform = new SoundTransform((_local2 * 1.1)); }; }; } public function destroy():void{ _sound = null; if (_soundChannel != null){ _soundChannel.stop(); }; _soundChannel = null; } } }//package tv.mindistortion.flux.sound
Section 185
//FluxMath (tv.mindistortion.flux.utils.FluxMath) package tv.mindistortion.flux.utils { public class FluxMath { public static function unsignedValue(_arg1:Number):Number{ _arg1 = (_arg1 * _arg1); return (Math.sqrt(_arg1)); } public static function distance(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt(((_arg1 - _arg2) * (_arg1 - _arg2)))); } } }//package tv.mindistortion.flux.utils
Section 186
//IFluxObject (tv.mindistortion.flux.IFluxObject) package tv.mindistortion.flux { public interface IFluxObject { function destroy():void; } }//package tv.mindistortion.flux
Section 187
//Settings (tv.mindistortion.flux.Settings) package tv.mindistortion.flux { public class Settings implements IFluxObject { private var _externalAPI; private var _gameHeight:Number;// = 420 private var _website:String; private var _music:Boolean; private var _gameWidth:Number;// = 600 public static const MORE_GAMES_URL:String = "http://www.mindistortion.tv/?p=games"; public static const MISC:String = "misc"; public static const MD:String = "md"; public static const NG:String = "ng"; public static const FB:String = "fb"; public static const KONG:String = "kong"; private static var _instance:Settings = new (Settings); ; public function Settings(){ _gameWidth = 600; _gameHeight = 420; super(); if (_instance){ throw (new Error("tv.mindistortion.flux::Settings is a singleton class, please use Settings.instance")); }; _music = true; } public function set music(_arg1:Boolean):void{ _music = _arg1; } public function get externalAPI(){ return (_externalAPI); } public function get website():String{ return (_website); } public function set externalAPI(_arg1):void{ _externalAPI = _arg1; } public function get music():Boolean{ return (_music); } public function set gameWidth(_arg1:Number):void{ _gameWidth = _arg1; } public function set gameHeight(_arg1:Number):void{ _gameHeight = _arg1; } public function get gameWidth():Number{ return (_gameWidth); } public function set website(_arg1:String):void{ _website = _arg1; } public function get gameHeight():Number{ return (_gameHeight); } public function destroy():void{ } public static function get instance():Settings{ return (_instance); } } }//package tv.mindistortion.flux
Section 188
//InfectAntibioticController (tv.mindistortion.infect.game.controller.InfectAntibioticController) package tv.mindistortion.infect.game.controller { import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.controller.*; public class InfectAntibioticController extends InfectGameObjectController implements IGameObjectController, IFluxObject { public function InfectAntibioticController(_arg1:InfectGameObject, _arg2:InfectVirusProperties){ super(_arg1, _arg2); defineHitArea(0.65, true); this._model.yStep = ((Math.random() * 2) + 2); } override public function doEnterFrame():void{ super.doEnterFrame(); this._model.y = (this._model.y + this._model.yStep); } override public function destroy():void{ super.destroy(); } } }//package tv.mindistortion.infect.game.controller
Section 189
//InfectBloodcellController (tv.mindistortion.infect.game.controller.InfectBloodcellController) package tv.mindistortion.infect.game.controller { import flash.events.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.flux.game.controller.*; public class InfectBloodcellController extends InfectGameObjectController implements IGameObjectController, IFluxObject { private var _infectTimer:uint;// = 0 public function InfectBloodcellController(_arg1:InfectGameObject, _arg2:InfectVirusProperties){ _infectTimer = 0; super(_arg1, _arg2); defineHitArea(1.3); setMovement(); } override public function doEnterFrame():void{ super.doEnterFrame(); this._model.y = (this._model.y + this._model.yStep); if (this._model.currStatus == InfectGameObject.INFECTED){ this._infectTimer++; }; if ((((this._infectTimer >= this._virusProperties.latency)) && ((this._model.currStatus == InfectGameObject.INFECTED)))){ this._model.dispatchEvent(new RefEvent(Event.COMPLETE, this._model)); this._model.currStatus = InfectGameObject.DEAD; }; } override public function destroy():void{ super.destroy(); } public function setMovement():void{ this._model.yStep = ((Math.random() * 2) + 1); } } }//package tv.mindistortion.infect.game.controller
Section 190
//InfectGameController (tv.mindistortion.infect.game.controller.InfectGameController) package tv.mindistortion.infect.game.controller { import de.polygonal.ds.*; import flash.display.*; import flash.events.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.model.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.flux.game.controller.*; import tv.mindistortion.infect.game.view.*; import tv.mindistortion.flux.sound.*; import flash.geom.*; import flash.media.*; import tv.mindistortion.infect.game.event.*; import tv.mindistortion.flux.utils.*; public class InfectGameController extends GameController implements IFluxObject { private const _FRAME_RATE:Number = 25; private var _unstoppableCounter:int;// = 0 private var _gameView:InfectGameView; private var _frameCounter:uint;// = 0 private var _gameState:InfectGameState; private var _loopMixer:LoopMixer; private var _soundController:SoundController; private var _virusProperties:InfectVirusProperties; private var _objectiveController:InfectObjectiveController; private var _draggedObject:InfectGameObject; public function InfectGameController(_arg1:InfectGameView, _arg2:InfectGameState, _arg3:LoopMixer, _arg4:SoundController){ _frameCounter = 0; _unstoppableCounter = 0; super(_arg1, _arg2); _loopMixer = _arg3; _soundController = _arg4; this._gameState = _arg2; this._gameView = _arg1; this._objectiveController = new InfectObjectiveController(_arg2); _virusProperties = new InfectVirusProperties(_gameState.skills); gameViewAddListeners(); } override protected function onRemoved(_arg1:Event):void{ if (this._spriteToModel[_arg1.target] == this._draggedObject){ this._draggedObject = null; }; super.onRemoved(_arg1); } private function runWBloodcellsHitTest():void{ var _local1:DListIterator; var _local2:InfectGameObject; var _local3:InfectGameObject; var _local4:DListIterator; var _local5:Sound; var _local6:Number; var _local7:SoundChannel; _local1 = this._gameState.getGameObjectsByType(InfectGameObject.WBLOODCELL).getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as InfectGameObject); _local4 = this._gameState.getGameObjectsByType(InfectGameObject.VIRUS).getListIterator(); while (_local4.hasNext()) { _local3 = (_local4.data as InfectGameObject); if (((((hitVirusObject(_local2, _local3.sprite.x, _local3.sprite.y)) && ((_local3.currStatus == InfectGameObject.OK)))) && ((_local3.age > 2)))){ _local2.health = (_local2.health - this.virusProperties.damage); _local3.currStatus = InfectGameObject.DEAD; if (Settings.instance.music){ _local6 = Math.floor((Math.random() * 4)); switch (_local6){ case 0: _local5 = new FlaFxHitwhite1(); break; case 1: _local5 = new FlaFxHitwhite2(); break; case 2: _local5 = new FlaFxHitwhite3(); break; case 3: _local5 = new FlaFxHitwhite4(); break; }; _local7 = _local5.play(); _local7.soundTransform = new SoundTransform(0.8); }; }; _local4.next(); }; _local1.next(); }; _local1 = this._gameState.getGameObjectsByType(InfectGameObject.XBLOODCELL).getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as InfectGameObject); _local4 = this._gameState.getGameObjectsByType(InfectGameObject.VIRUS).getListIterator(); while (_local4.hasNext()) { _local3 = (_local4.data as InfectGameObject); if (((((hitVirusObject(_local2, _local3.sprite.x, _local3.sprite.y)) && ((_local3.currStatus == InfectGameObject.OK)))) && ((_local3.age > 2)))){ _local2.health = (_local2.health - this.virusProperties.damage); _local3.currStatus = InfectGameObject.DEAD; }; _local4.next(); }; _local1.next(); }; } private function onKilledWBloodcell(_arg1:Event):void{ this._gameState.killedWBloodcells++; if (_gameState.level >= InfectGameState.LAST_LEVEL){ if ((_gameState.killedWBloodcells % 50) == 0){ _gameState.stagePoints = (_gameState.stagePoints + (InfectObjectiveModel.POINTS_WBLOODCELL * 5)); } else { if ((_gameState.killedWBloodcells % 10) == 0){ _gameState.stagePoints = (_gameState.stagePoints + (InfectObjectiveModel.POINTS_WBLOODCELL * 2)); } else { _gameState.stagePoints = (_gameState.stagePoints + InfectObjectiveModel.POINTS_WBLOODCELL); }; }; }; } override public function destroy():void{ gameViewRemoveListeners(); super.destroy(); _loopMixer = null; _gameView = null; _gameState = null; _draggedObject = null; _virusProperties = null; _objectiveController.destroy(); _objectiveController = null; } private function runAntibioticHitTest():void{ var _local1:DListIterator; var _local2:InfectGameObject; var _local3:InfectGameObject; var _local4:DListIterator; _local1 = this._gameState.getGameObjectsByType(InfectGameObject.ANTIBIOTIC).getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as InfectGameObject); _local4 = this._gameState.getGameObjectsByType(InfectGameObject.VIRUS).getListIterator(); while (_local4.hasNext()) { _local3 = (_local4.data as InfectGameObject); if (((((((hitVirusObject(_local2, _local3.sprite.x, _local3.sprite.y)) && ((_local3.currStatus == InfectGameObject.OK)))) && (!(_local3.immune)))) && ((_local3.age > 2)))){ _local3.currStatus = InfectGameObject.DEAD; }; _local4.next(); }; _local1.next(); }; } override protected function onPopup():void{ if (!_gameState.gameOver){ pause = true; }; } private function addControllerToModel(_arg1:InfectGameObject):void{ var _local2:InfectGameObjectController; var _local3:String; switch (_arg1.objectType){ case InfectGameObject.VIRUS: _local2 = new InfectVirusController(_arg1, this.virusProperties); break; case InfectGameObject.BLOODCELL: _local2 = new InfectBloodcellController(_arg1, this.virusProperties); break; case InfectGameObject.WBLOODCELL: _local3 = generateWhiteBloodcellType(); _local2 = new InfectWhiteBloodcellController(_arg1, this.virusProperties, _local3); break; case InfectGameObject.XBLOODCELL: _local2 = new InfectWhiteBloodcellController(_arg1, this.virusProperties, InfectGameObject.SUB_X); break; case InfectGameObject.ANTIBIOTIC: _local2 = new InfectAntibioticController(_arg1, this.virusProperties); break; default: throw (new Error(("addControllerToModel: Tried to add Controller to Model with objectType " + _arg1.objectType))); }; addController(_local2, _arg1); } private function runSpawnEngine():void{ var _local1:Number; var _local2:Number; _local1 = 2000; _local2 = (Math.random() * _local1); if ((((((_local2 <= this._gameState.delay)) && ((_gameState.btimer > (130 / _gameState.delay))))) || ((_gameState.btimer > (2500 / _gameState.delay))))){ spawnBloodcell(); }; _gameState.btimer++; if (_gameState.level >= InfectGameState.WBLOODCELL_TRESHOLD){ _local2 = ((Math.random() * _local1) - _objectiveController.currObjectiveModel.wDelayModifier); if (_gameState.time < 50){ _local2 = (_local2 + (700 / _gameState.wdelay)); }; if ((((((_local2 <= this._gameState.wdelay)) && ((_gameState.wtimer > (130 / _gameState.wdelay))))) || ((_gameState.wtimer > (2500 / _gameState.wdelay))))){ spawnWhiteBloodcell(); }; _gameState.wtimer++; }; if (_gameState.level >= InfectGameState.ANTIBIOTIC_TRESHOLD){ _local2 = ((Math.random() * _local1) - _objectiveController.currObjectiveModel.aDelayModifier); if (_gameState.time < 50){ _local2 = (_local2 + (700 / _gameState.adelay)); }; if ((((((_local2 <= this._gameState.adelay)) && ((_gameState.atimer > (130 / _gameState.adelay))))) || ((_gameState.atimer > (2500 / _gameState.adelay))))){ spawnAntibiotic(); }; _gameState.atimer++; }; } private function onInfectionComplete(_arg1:RefEvent):void{ var _local2:InfectGameObject; var _local3:int; _local2 = (_arg1.refTarget as InfectGameObject); _local3 = 0; while (_local3 < this.virusProperties.repro) { spawnVirus(_local2.x, _local2.y); _local3++; }; } private function spawnWhiteBloodcell():void{ _gameState.wtimer = 0; if ((((_gameState.level >= 25)) && ((_gameState.numVirii > (13 - Math.floor((((_gameState.level - 25) / 5) * 2))))))){ spawnGameObject(new InfectGameObject(new FlaBlackBloodcell(), InfectGameObject.XBLOODCELL)); } else { spawnGameObject(new InfectGameObject(new FlaWhiteBloodcell(), InfectGameObject.WBLOODCELL)); }; } public function get virusProperties():InfectVirusProperties{ return (_virusProperties); } private function achievementCheck():void{ if ((((_gameState.killedBloodcellsTotal >= 100)) && ((_gameState.killedBloodcellsTotal < 150)))){ InfectAchievements.instance.unlock(InfectAchievements.BABY_STEPS); }; if ((((_gameState.spawnedViriiTotal >= 300)) && ((_gameState.killedBloodcellsTotal < 400)))){ InfectAchievements.instance.unlock(InfectAchievements.THIS_IS_MADNESS); }; if ((((_gameState.killedWBloodcellsTotal > 0)) && ((_gameState.killedWBloodcellsTotal < 4)))){ InfectAchievements.instance.unlock(InfectAchievements.FIRST_BLOOD); }; if (_gameState.numVirii >= 65){ InfectAchievements.instance.unlock(InfectAchievements.PANDEMIC); }; if ((((_gameState.killedBloodcellsTotal >= 2500)) && ((_gameState.killedBloodcellsTotal < 2600)))){ InfectAchievements.instance.unlock(InfectAchievements.BIOHAZARD); }; if ((((_gameState.killedWBloodcellsTotal >= 900)) && ((_gameState.killedWBloodcellsTotal < 1000)))){ InfectAchievements.instance.unlock(InfectAchievements.RESISTANCE_IS_FUTILE); }; if ((((_gameState.spawnedViriiTotal >= 10000)) && ((_gameState.spawnedViriiTotal < 10100)))){ InfectAchievements.instance.unlock(InfectAchievements.ZOMBIE_OUTBREAK); }; if (_gameState.score >= 70000){ InfectAchievements.instance.unlock(InfectAchievements.BLACK_DEATH); }; } private function runSubControllers():void{ var _local1:DListIterator; var _local2:InfectGameObjectController; _local1 = this._gameObjectControllers.getListIterator(); while (_local1.hasNext()) { _local2 = InfectGameObjectController(_local1.data); _local2.doEnterFrame(); _local1.next(); }; } private function saveGame():void{ var _local1:InfectSaveGame; _local1 = new InfectSaveGame(); _local1.currLvl = _gameState.level; _local1.killedBloodcellsTotal = _gameState.killedBloodcellsTotal; _local1.killedWBloodcellsTotal = _gameState.killedWBloodcellsTotal; _local1.lvlAuto = _gameState.skills.lvlAuto; _local1.lvlLatency = _gameState.skills.lvlLatency; _local1.lvlRepro = _gameState.skills.lvlRepro; _local1.lvlDamage = _gameState.skills.lvlDamage; _local1.lvlImmunity = _gameState.skills.lvlImmunity; _local1.killedBloodcells = _gameState.killedBloodcells; _local1.killedWBloodcells = _gameState.killedWBloodcells; _local1.spawnedVirii = _gameState.spawnedVirii; _local1.score = _gameState.score; _local1.skillPoints = _gameState.skillPoints; _local1.stagePoints = _gameState.stagePoints; _local1.spawnedViriiTotal = _gameState.spawnedViriiTotal; _local1.virusId = _gameState.virusId; _local1.playerName = _gameState.playerName; SaveGameManager.instance.saveGame(_local1); } private function hitVirusObject(_arg1:InfectGameObject, _arg2:Number, _arg3:Number):Boolean{ if (((_arg1.sprite.hitArea.hitTestPoint(_arg2, _arg3)) && ((_arg1.currStatus == InfectGameObject.OK)))){ return (true); }; return (false); } private function runGame():void{ if (!this._pause){ this._frameCounter++; dragVirus(); runSubControllers(); runSpawnEngine(); if ((this._frameCounter & 3) == 0){ runAutoInfect(); runWBloodcellsHitTest(); runAntibioticHitTest(); updateLoopMixer(); if (((((this._objectiveController.success) && (!(_gameState.levelComplete)))) && (!(_gameState.gameOver)))){ levelComplete(); } else { if (((((this._objectiveController.fail) && (!(_gameState.gameOver)))) && (!(_gameState.levelComplete)))){ gameOver(); }; }; achievementCheck(); }; }; } private function onEventMouseUp(_arg1:MouseEvent):void{ var _local2:InfectVirusController; if (!this._pause){ if (this._draggedObject != null){ _local2 = (this._modelToController[this._draggedObject] as InfectVirusController); if (_local2 != null){ _local2.setTarget(); _local2.currStatus = InfectVirusController.FREE; _local2.remainMovement(); releaseVirus(this._draggedObject); }; this._draggedObject = null; }; }; } private function runAutoInfect():void{ var _local1:DListIterator; var _local2:InfectGameObject; var _local3:InfectGameObject; var _local4:InfectVirusController; var _local5:DListIterator; _local1 = this._gameState.getGameObjectsByType(InfectGameObject.VIRUS).getListIterator(); while (_local1.hasNext()) { _local2 = (_local1.data as InfectGameObject); if (((_local2.autoInfect) && ((_local2.age > 2)))){ _local5 = this._gameState.getGameObjectsByType(InfectGameObject.BLOODCELL).getListIterator(); while (_local5.hasNext()) { _local3 = (_local5.data as InfectGameObject); if (((hitVirusObject(_local3, _local2.sprite.x, _local2.sprite.y)) && (!((_local3.currStatus == InfectGameObject.UNINFECTABLE))))){ _local4 = InfectVirusController(_modelToController[_local2]); _local4.setTarget(new Point(_local3.x, _local3.y), 4); if (Point.distance(new Point(_local2.x, _local2.y), new Point(_local3.x, _local3.y)) < 15){ infectBloodcell(_local3, _local2); }; return; }; _local5.next(); }; }; _local1.next(); }; } private function spawnBloodcell():void{ var _local1:InfectGameObject; var _local2:Number; _local1 = spawnGameObject(new InfectGameObject(new FlaBloodcell(), InfectGameObject.BLOODCELL)); _gameState.btimer = 0; if (_objectiveController.currObjectiveModel.uninfectableRatio > 0){ _local2 = Math.random(); if (_local2 < _objectiveController.currObjectiveModel.uninfectableRatio){ _local1.currStatus = InfectGameObject.UNINFECTABLE; }; }; } private function dragVirus():void{ var virCtrl:InfectVirusController; if (this._draggedObject != null){ try { virCtrl = InfectVirusController(_modelToController[this._draggedObject]); virCtrl.setTarget(new Point(this._gameView.mouseX, this._gameView.mouseY), 2); } catch(e:Error) { this._draggedObject = null; }; }; } private function onKilledBloodcell(_arg1:Event):void{ var _local2:Sound; var _local3:Number; var _local4:SoundChannel; this._gameState.killedBloodcells++; if (_gameState.level >= InfectGameState.LAST_LEVEL){ if ((_gameState.killedBloodcells % 100) == 0){ _gameState.stagePoints = (_gameState.stagePoints + (InfectObjectiveModel.POINTS_BLOODCELL * 10)); } else { if ((_gameState.killedBloodcells % 20) == 0){ _gameState.stagePoints = (_gameState.stagePoints + (InfectObjectiveModel.POINTS_BLOODCELL * 4)); } else { _gameState.stagePoints = (_gameState.stagePoints + InfectObjectiveModel.POINTS_BLOODCELL); }; }; }; if (Settings.instance.music){ _local3 = Math.floor((Math.random() * 4)); switch (_local3){ case 0: _local2 = new FlaFxSpawn1(); break; case 1: _local2 = new FlaFxSpawn2(); break; case 2: _local2 = new FlaFxSpawn3(); break; case 3: _local2 = new FlaFxSpawn4(); break; }; _local4 = _local2.play(); _local4.soundTransform = new SoundTransform(0.5); }; } private function doTheEvolution():void{ _soundController.fadeOut(); if (Settings.instance.music){ if ((((_gameState.level == 14)) && (!(_gameState.loaded)))){ _soundController.fadeIn(new FlaMenuLoop3(), 15000); } else { _soundController.fadeIn(new FlaMenuLoop3()); }; }; _gameView.addEventListener(InfectEvent.EVOLUTION_COMPLETE, onEvolutionComplete, false, 0, true); _gameView.doTheEvolution(); } private function releaseVirus(_arg1:InfectGameObject):void{ var _local2:DLinkedList; var _local3:DListIterator; var _local4:InfectGameObject; restoreFocus(); _local2 = this._gameState.getGameObjectsByType(InfectGameObject.BLOODCELL); if (_local2 != null){ _local3 = _local2.getListIterator(); while (_local3.hasNext()) { _local4 = (_local3.data as InfectGameObject); if (hitVirusObject(_local4, this._gameView.mouseX, this._gameView.mouseY)){ infectBloodcell(_local4, _arg1); return; }; _local3.next(); }; }; } private function clearLevel():void{ _gameState.skills.biohazard = false; this._draggedObject = null; this._gameView.clearLevel(); this._gameState.clearLevel(); } public function initGame():void{ var _local1:InfectGameObject; var _local2:InfectGameObject; var _local3:int; var _local4:int; _soundController.fadeOut(); this._frameCounter = 0; _local1 = new InfectGameObject(new FlaBG(), GameObject.BACKGROUND); _local1.x = 0; _local1.y = 0; this._gameState.addGameObject(_local1); _local2 = spawnVirus(this._gameView.centerX, (this._gameView.centerY + 50)); if ((((_objectiveController.currObjectiveModel.surviveTime > 0)) && ((_gameState.level < 15)))){ _local2.immune = false; }; if (_objectiveController.currObjectiveModel.startVirii > 1){ _local4 = 1; while (_local4 < _objectiveController.currObjectiveModel.startVirii) { spawnVirus(((this._gameView.centerX - 80) + (_local4 * 40)), (this._gameView.centerY + 10)); _local4++; }; }; this._gameView.HUD.objective = _objectiveController.currObjectiveModel; _local3 = 0; if (_objectiveController.currObjectiveModel.lsd){ _local3 = 7; } else { if ((((_gameState.level == 8)) || ((_gameState.level == 13)))){ _local3 = 8; }; }; if (Settings.instance.music){ _loopMixer.start(_local3); }; } private function onEventMouseDown(_arg1:MouseEvent):void{ var sprite:Sprite; var go:InfectGameObject; var virCtrl:InfectVirusController; var e = _arg1; if (!this._pause){ sprite = Sprite(e.target); try { if (((!((sprite == null))) && (!((this._spriteToModel[sprite] == null))))){ go = InfectGameObject(_gameState.getGameObjectBySprite(sprite)); if (((!((go == null))) && ((go.objectType == InfectGameObject.VIRUS)))){ go = getClosestGerm(); virCtrl = (this._modelToController[go] as InfectVirusController); virCtrl.currStatus = InfectVirusController.DRAGGED; this._draggedObject = go; }; }; } catch(e:Error) { trace("IGC::onEventMouseDown Error"); }; }; } private function onEvolutionComplete(_arg1:Event):void{ _pause = false; nextLevel(); } private function onLevelComplete(_arg1:Event):void{ var _local2:int; _loopMixer.fadeOut(); if (_objectiveController.currObjectiveModel.lsd){ _gameView.stage.frameRate = 25; _gameView.clearLSD(); }; _pause = true; _gameView.removeEventListener(InfectEvent.LEVEL_COMPLETE, onLevelComplete); if (_gameState.level < InfectGameState.LAST_LEVEL){ _gameState.stagePoints = _objectiveController.currObjectiveModel.skillPoints; } else { if (((_gameState.level + 1) % 5) == 0){ _local2 = Math.ceil(((_gameState.level - 15) / 5)); _gameState.stagePoints = (_gameState.stagePoints + (1000 * _local2)); }; }; _gameState.skillPoints = (_gameState.skillPoints + _gameState.stagePoints); _gameState.score = (_gameState.score + _gameState.stagePoints); saveGame(); doTheEvolution(); clearLevel(); if (_gameState.level == 12){ InfectAchievements.instance.unlock(InfectAchievements.WOAH); } else { if (_gameState.level == 8){ InfectAchievements.instance.unlock(InfectAchievements.I_WILL_SURVIVE); } else { if (_gameState.level == 14){ InfectAchievements.instance.unlock(InfectAchievements.THE_VIRUS_HAS_BEEN_SPREAD); }; }; }; if (_gameState.level > 14){ if (_gameState.killedBloodcells < 1){ InfectAchievements.instance.unlock(InfectAchievements.CANT_TOUCH_THIS); }; if (_gameState.stagePoints >= 3500){ InfectAchievements.instance.unlock(InfectAchievements.SERIOUSLY_LETHAL); }; _unstoppableCounter++; if (_unstoppableCounter >= 5){ InfectAchievements.instance.unlock(InfectAchievements.UNSTOPPABLE); }; }; } private function onKeyDown(_arg1:KeyboardEvent):void{ } private function spawnAntibiotic():void{ _gameState.atimer = 0; spawnGameObject(new InfectGameObject(new FlaAntibiotic(), InfectGameObject.ANTIBIOTIC)); } private function spawnGameObject(_arg1:InfectGameObject):InfectGameObject{ var _local2:Number; var _local3:Number; _local3 = Math.floor((Math.random() * this._gameView.viewWidth)); switch (_arg1.objectType){ case InfectGameObject.ANTIBIOTIC: if (FluxMath.distance(_gameState.lastAx, _local3) < 150){ _local3 = Math.floor((Math.random() * this._gameView.viewWidth)); }; break; case InfectGameObject.WBLOODCELL: case InfectGameObject.XBLOODCELL: if (FluxMath.distance(_gameState.lastWx, _local3) < 200){ _local3 = Math.floor((Math.random() * this._gameView.viewWidth)); }; break; case InfectGameObject.BLOODCELL: if (FluxMath.distance(_gameState.lastBx, _local3) < 100){ _local3 = Math.floor((Math.random() * this._gameView.viewWidth)); }; break; }; _arg1.x = _local3; _arg1.y = -150; addControllerToModel(_arg1); addGameObject(_arg1); return (_arg1); } private function spawnVirus(_arg1:Number, _arg2:Number):InfectGameObject{ var _local3:InfectGameObject; _local3 = new InfectGameObject(new FlaVirus(), InfectGameObject.VIRUS); this._gameState.spawnedVirii++; _local3.x = _arg1; _local3.y = _arg2; addControllerToModel(_local3); addGameObject(_local3); return (_local3); } private function infectBloodcell(_arg1:InfectGameObject, _arg2:InfectGameObject):void{ _arg1.currStatus = InfectGameObject.INFECTED; _arg1.addEventListener(Event.COMPLETE, onInfectionComplete, false, 0, true); removeGameObjectCompletely(_arg2); } override protected function onEventEnterFrame(_arg1:Event):void{ super.onEventEnterFrame(_arg1); runGame(); if (((_objectiveController.currObjectiveModel.lsd) && (!(_pause)))){ _gameView.doLSD(); }; if ((((_frameCounter == 20)) && (!(_pause)))){ this._gameView.startLevel(this._objectiveController.descr); }; if ((_frameCounter % _FRAME_RATE) == 0){ _gameState.time++; }; } private function nextLevel():void{ this._gameState.nextLevel(); _gameState.loaded = false; _gameState.stagePoints = 0; _gameState.skills.biohazard = _objectiveController.currObjectiveModel.biohazard; initGame(); } private function levelComplete():void{ _gameState.levelComplete = true; _gameView.showLevelComplete(); _gameView.addEventListener(InfectEvent.LEVEL_COMPLETE, onLevelComplete, false, 0, true); } private function onOffScreenvirus(_arg1:RefEvent):void{ var _local2:InfectGameObject; _local2 = (_arg1.refTarget as InfectGameObject); _local2.y = 0; } private function gameViewRemoveListeners():void{ if (_gameView == null){ return; }; if (_gameView.hasEventListener(Event.ADDED_TO_STAGE)){ _gameView.removeEventListener(Event.ADDED_TO_STAGE, onViewAddedToStage); }; if (_gameView.hasEventListener(InfectEvent.KILLED_BLOODCELL)){ _gameView.removeEventListener(InfectEvent.KILLED_BLOODCELL, onKilledBloodcell); }; if (_gameView.hasEventListener(InfectEvent.KILLED_WBLOODCELL)){ _gameView.removeEventListener(InfectEvent.KILLED_WBLOODCELL, onKilledWBloodcell); }; } private function gameOver():void{ if (_objectiveController.currObjectiveModel.surviveTime > -1){ if ((_objectiveController.currObjectiveModel.surviveTime - _gameState.time) <= 3){ InfectAchievements.instance.unlock(InfectAchievements.F7U12); }; }; _gameState.gameOver = true; this._gameView.showGameOver(this._objectiveController.failReason); } private function onViewAddedToStage(_arg1:Event):void{ this._gameView.removeEventListener(Event.ADDED_TO_STAGE, onViewAddedToStage); this._gameView.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true); this._gameView.stage.addEventListener(MouseEvent.MOUSE_DOWN, onEventMouseDown, false, 0, true); this._gameView.stage.addEventListener(MouseEvent.MOUSE_UP, onEventMouseUp, false, 0, true); } private function generateWhiteBloodcellType():String{ var _local1:Number; _local1 = Math.random(); if (_gameState.level > 15){ if (_local1 < 0.15){ return (InfectGameObject.SUB_D); }; }; if (_gameState.level > 11){ if (_local1 < 0.3){ return (InfectGameObject.SUB_C); }; }; if (_gameState.level > 6){ if (_local1 < 0.5){ return (InfectGameObject.SUB_B); }; }; return (InfectGameObject.SUB_A); } override protected function onPopupClose():void{ if (_objectiveController.currObjectiveModel.lsd){ if (_loopMixer.currLoop > -1){ _loopMixer.fadeOut(); if (Settings.instance.music){ _soundController.fadeIn(new FlaTrackLSD()); }; _gameView.stage.frameRate = 21; }; }; if (((Settings.instance.music) && ((((_gameState.level == 8)) || ((_gameState.level == 13)))))){ _loopMixer.fadeOut(); _soundController.fadeIn(new FlaSurviveTrack()); }; if (!_gameState.gameOver){ pause = false; }; } private function getClosestGerm():InfectGameObject{ var _local1:DLinkedList; var _local2:DListIterator; var _local3:InfectGameObject; var _local4:Number; var _local5:InfectGameObject; var _local6:Number; _local1 = this._gameState.getGameObjectsByType(InfectGameObject.VIRUS); _local2 = _local1.getListIterator(); _local4 = 1000; while (_local2.hasNext()) { _local3 = (_local2.data as InfectGameObject); _local6 = Point.distance(new Point(_local3.x, _local3.y), new Point(_gameView.mouseX, _gameView.mouseY)); if (_local6 < _local4){ _local4 = _local6; _local5 = _local3; }; _local2.next(); }; return (_local5); } private function gameViewAddListeners():void{ this._gameView.addEventListener(Event.ADDED_TO_STAGE, onViewAddedToStage, false, 0, true); this._gameView.addEventListener(InfectEvent.KILLED_BLOODCELL, onKilledBloodcell, false, 0, true); this._gameView.addEventListener(InfectEvent.KILLED_WBLOODCELL, onKilledWBloodcell, false, 0, true); } public function loadGame():void{ var _local1:InfectSaveGame; _local1 = new InfectSaveGame(SaveGameManager.instance.loadGame()); if (_local1 == null){ throw (new Error("InfectGameController::loadGame() failed, empty object")); }; _gameState.loaded = true; _pause = true; _gameView.removeEventListener(InfectEvent.LEVEL_COMPLETE, onLevelComplete); if (!isNaN(_local1.currLvl)){ _gameState.level = _local1.currLvl; _gameState.updateStats(); _gameState.killedBloodcellsTotal = _local1.killedBloodcellsTotal; _gameState.killedWBloodcellsTotal = _local1.killedWBloodcellsTotal; _gameState.killedBloodcells = _local1.killedBloodcells; _gameState.killedWBloodcells = _local1.killedWBloodcells; _gameState.spawnedVirii = _local1.spawnedVirii; _gameState.skills.lvlAuto = _local1.lvlAuto; _gameState.skills.lvlLatency = _local1.lvlLatency; _gameState.skills.lvlRepro = _local1.lvlRepro; _gameState.skills.lvlDamage = _local1.lvlDamage; _gameState.skills.lvlImmunity = _local1.lvlImmunity; _gameState.stagePoints = _local1.stagePoints; _gameState.score = _local1.score; _gameState.skillPoints = _local1.skillPoints; _gameState.spawnedViriiTotal = _local1.spawnedViriiTotal; if (_local1.virusId != undefined){ _gameState.virusId = _local1.virusId; }; _gameState.playerName = _local1.playerName; }; doTheEvolution(); clearLevel(); } private function updateLoopMixer():void{ var _local1:Number; if (!Settings.instance.music){ return; }; if ((((_gameState.level == 8)) || ((_gameState.level == 13)))){ _loopMixer.loop = 8; return; }; if (_objectiveController.currObjectiveModel.lsd){ _loopMixer.loop = 7; return; }; _local1 = (_gameState.numVirii + _gameState.numInfectedBloodcells); if ((((((_local1 > 0)) && ((_local1 < 2)))) && ((_gameState.numInfectedBloodcells < 1)))){ _loopMixer.loop = 0; } else { if ((((((_local1 >= 2)) && ((_local1 < 6)))) || ((((_gameState.numInfectedBloodcells > 0)) && ((_local1 < 6)))))){ _loopMixer.loop = 1; } else { if ((((_local1 >= 6)) && ((_local1 < 10)))){ _loopMixer.loop = 2; } else { if ((((_local1 >= 10)) && ((_local1 < 18)))){ _loopMixer.loop = 3; } else { if ((((_local1 >= 18)) && ((_local1 < 28)))){ _loopMixer.loop = 4; } else { if ((((_local1 >= 28)) && ((_local1 < 38)))){ _loopMixer.loop = 5; } else { if (_local1 >= 38){ _loopMixer.loop = 6; }; }; }; }; }; }; }; } } }//package tv.mindistortion.infect.game.controller
Section 191
//InfectGameObjectController (tv.mindistortion.infect.game.controller.InfectGameObjectController) package tv.mindistortion.infect.game.controller { import flash.display.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.controller.*; public class InfectGameObjectController extends GameObjectController implements IGameObjectController, IFluxObject { protected var _model:InfectGameObject; protected var _virusProperties:InfectVirusProperties; public function InfectGameObjectController(_arg1:InfectGameObject, _arg2:InfectVirusProperties){ super(_arg1); this._model = _arg1; this._virusProperties = _arg2; } override public function doEnterFrame():void{ super.doEnterFrame(); } protected function defineHitArea(_arg1:Number=1, _arg2:Boolean=false):void{ var _local3:Sprite; var _local4:Sprite; if (!_arg2){ _local3 = new Sprite(); _local3.graphics.beginFill(0xFFFFFF); _local3.graphics.drawCircle(0, 0, ((this._model.sprite.width * _arg1) / 2)); _local3.alpha = 0; this._model.sprite.addChild(_local3); this._model.sprite.hitArea = _local3; } else { _local4 = new Sprite(); _local4.graphics.beginFill(0xFFFFFF); _local4.graphics.drawRect(0, 0, this._model.sprite.width, this._model.sprite.height); _local4.scaleX = (_local4.scaleY = _arg1); _local4.x = ((-(this._model.sprite.width) / 2) + ((this._model.sprite.width - _local4.width) / 2)); _local4.y = ((-(this._model.sprite.height) / 2) + ((this._model.sprite.height - _local4.height) / 2)); _local4.alpha = 0; this._model.sprite.addChild(_local4); this._model.sprite.hitArea = _local4; }; } override public function destroy():void{ super.destroy(); this._model = null; this._virusProperties = null; } } }//package tv.mindistortion.infect.game.controller
Section 192
//InfectObjectiveController (tv.mindistortion.infect.game.controller.InfectObjectiveController) package tv.mindistortion.infect.game.controller { import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; public class InfectObjectiveController implements IFluxObject { protected var _gameState:InfectGameState; protected var _objectiveModels:InfectObjectiveModelArray; protected var _objectiveHint:Array; protected var _objectiveType; protected var _objectiveDescr; protected var _failReason:String;// = "" private static const INFECT_DESTROY:String = "infect. destroy."; private static const REPRODUCE:String = "reproduce."; private static const SURVIVE_HIDE:String = "survive. hide."; public function InfectObjectiveController(_arg1:InfectGameState){ _failReason = ""; super(); this._gameState = _arg1; this._objectiveDescr = []; this._objectiveDescr[0] = "Welcome, fellow infection. That yellow, greenish thing you see floating around is you. Or rather a part of you. Click on or next to it, to drag it onto red bloodcells to infect and procreate. "; this._objectiveDescr[1] = "If you upgraded your latency you will now be able to spawn a little faster. Grow some more, fellow infection. To grow means to evolve, and once you've evolved enough the world is yours. "; this._objectiveDescr[2] = "Seems like we have visitors. The blueish bloodcells are already infected by a different disease. The won't harm you, but you can't infect them either. "; this._objectiveDescr[3] = "The immune system has been awakened. It has already eliminated the other infection, don't suffer the same fate. Avoid the white bloodcells at all costs. "; this._objectiveDescr[4] = "Time to strike back. Spawn some germs and drag them onto white bloodcells to destroy them. The more you upgrade your damage skills, the less germs it takes. "; this._objectiveDescr[5] = "Keep spawning and focus on killing more white bloodcells. Tear down that immune system. "; this._objectiveDescr[6] = "The immune system has taken quite a hit, congratulations. However you seem to have been a tad bit too effective. A rivaling infection has taken over. "; this._objectiveDescr[7] = "Great. Now that your \"patient\" has been knocked down by both you and that other bastard infection, they started using antibiotics. Avoid the clouds. Dying germs may survive if you drag them to the next red bloodcell fast enough. "; this._objectiveDescr[8] = "You have to lay low for a while. Only infect to survive. I hope you upgraded your immunity, else it's gonna be tough to sit this one out. If you HAVE to go through a cloud, quickly drag the germ onto a red bloodcell to save it. "; this._objectiveDescr[9] = "...and we're BACK! Attack the immune system, for great glory! "; this._objectiveDescr[10] = "MWAHAHAHAHAHA!!!! That's the stuff! "; this._objectiveDescr[11] = "Enough fooling around! I smell victory right around the corner! "; this._objectiveDescr[12] = "Don't mind the funky colours, your patient is on a seeeeerious fever trip right now. For undisclosed scientific reasons we infections are affected by it as well. Keep going! "; this._objectiveDescr[13] = "I'm not sure what's going on here, but things look bleak. This is your last stand, don't mess it up. "; this._objectiveDescr[14] = "This is it. Once you've finished this, the world will be yours. You have a lot of spawning to do. Luckily your current germ turned out to be a freak mutation, so you're a little more powerful than usual. "; this._objectiveDescr[15] = "Infect red and destroy white bloodcells to gain points for upgrading your skills. "; _objectiveHint = []; _objectiveHint[0] = "A germ that leaves the screen is a dead germ, so try to keep it in view. "; _objectiveHint[1] = "A germ that leaves the screen is a dead germ, so try to keep it in view. "; _objectiveHint[2] = "A germ that leaves the screen is a dead germ, so try to keep it in view. "; _objectiveHint[3] = "Avoid white bloodcells at all costs. "; _objectiveHint[4] = "Upgrade your damage skill to take white bloodcells down. Make sure to spawn enough germs before an attack. "; _objectiveHint[5] = "The more you upgrade your damage skill, the less germs you need to take down a white bloodcell. "; _objectiveHint[6] = "Upgrading your reproduction skill makes it easier to spread, latency shortens the time until the germs spawn. "; _objectiveHint[7] = "If you drag a germ fast enough through antibiotics, there's a small chance you can still drop it onto a red bloodcell to infect it. "; _objectiveHint[8] = "Germs that are immune to antibiotics are marked with a blue glow. If you need an immune germ, you can try getting one by infecting a red bloodcell. The higher your immunity, the higher the chance that an immune germ spawns the next time you infect a red bloodcell. "; _objectiveHint[9] = "The more you upgrade your damage skill, the less germs you need to take down a white bloodcell. "; _objectiveHint[10] = "Dying germs have a chance of survival if you drag them onto a red bloodcell quick enough. "; _objectiveHint[11] = "Upgrading your reproduction skill makes it easier to spread, latency shortens the time until the germs spawn. "; _objectiveHint[12] = "Pink Floyd is THE shit, man. "; _objectiveHint[13] = "Germs that are immune to antibiotics are marked with a blue glow. If you need an immune germ, you can try getting one by infecting a red bloodcell. The higher your immunity, the higher the chance that an immune germ spawns the next time you infect a red bloodcell. "; _objectiveHint[14] = "A germ that leaves the screen is a dead germ, so try to keep it in view. "; _objectiveHint[15] = "I'm afraid you're on your own now. Godspeed, fellow infection! "; this._objectiveType = []; this._objectiveType[0] = INFECT_DESTROY; this._objectiveType[1] = INFECT_DESTROY; this._objectiveType[2] = INFECT_DESTROY; this._objectiveType[3] = REPRODUCE; this._objectiveType[4] = INFECT_DESTROY; this._objectiveType[5] = INFECT_DESTROY; this._objectiveType[6] = REPRODUCE; this._objectiveType[7] = INFECT_DESTROY; this._objectiveType[8] = SURVIVE_HIDE; this._objectiveType[9] = INFECT_DESTROY; this._objectiveType[10] = INFECT_DESTROY; this._objectiveType[11] = REPRODUCE; this._objectiveType[12] = INFECT_DESTROY; this._objectiveType[13] = SURVIVE_HIDE; this._objectiveType[14] = REPRODUCE; this._objectiveType[15] = INFECT_DESTROY; this._objectiveModels = new InfectObjectiveModelArray(); this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[0], 5)); this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[1], 8)); this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[2], 12)); _objectiveModels.tail.uninfectableRatio = 0.3; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[3], 0, 0, 160)); _objectiveModels.tail.wDelayModifier = 60; _objectiveModels.tail.minSpawn = 12; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[4], 12, 3)); _objectiveModels.tail.wDelayModifier = 10; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[5], 0, 7, 360)); _objectiveModels.tail.wDelayModifier = 25; _objectiveModels.tail.startVirii = 3; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[6], 0, 0, 420)); _objectiveModels.tail.minSpawn = 22; _objectiveModels.tail.wDelayModifier = -15; _objectiveModels.tail.uninfectableRatio = 0.45; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[7], 50)); _objectiveModels.tail.wDelayModifier = -10; _objectiveModels.tail.uninfectableRatio = 0.2; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[8], 0, 0, 600)); _objectiveModels.tail.wDelayModifier = 5; _objectiveModels.tail.aDelayModifier = 40; _objectiveModels.tail.maxInfect = 3; _objectiveModels.tail.maxKill = 3; _objectiveModels.tail.surviveTime = 60; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[9], 0, 18, 920)); _objectiveModels.tail.wDelayModifier = 20; _objectiveModels.tail.startVirii = 3; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[10], 90, 10)); this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[11], 0, 0, 1600)); _objectiveModels.tail.wDelayModifier = -20; _objectiveModels.tail.aDelayModifier = -20; _objectiveModels.tail.minSpawn = 24; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[12], 100, 20, 2000)); _objectiveModels.tail.lsd = true; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[13], 0, 0, 2500)); _objectiveModels.tail.wDelayModifier = 10; _objectiveModels.tail.aDelayModifier = -5; _objectiveModels.tail.uninfectableRatio = 0.85; _objectiveModels.tail.maxInfect = 3; _objectiveModels.tail.maxKill = 3; _objectiveModels.tail.surviveTime = 90; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[14], 0, 0, 3500)); _objectiveModels.tail.wDelayModifier = 50; _objectiveModels.tail.aDelayModifier = 20; _objectiveModels.tail.minSpawn = 55; _objectiveModels.tail.biohazard = true; this._objectiveModels.push(new InfectObjectiveModel(_arg1, _objectiveType[15])); _objectiveModels.tail.surviveTime = 45; } public function get descr():String{ var _local1:String; var _local2:int; if (_gameState.level < InfectGameState.LAST_LEVEL){ return ((this._objectiveDescr[this._gameState.level] + currObjectiveModel.descr)); }; if (((_gameState.level + 1) % 5) == 0){ _local2 = Math.ceil(((_gameState.level - 14) / 5)); _local1 = (("For completing this stage you will receive an additional " + (1000 * _local2)) + " EP. "); } else { _local1 = (("Complete " + (5 - (_gameState.level % 5))) + " more stages to receive bonus EP. "); }; return (((this._objectiveDescr[InfectGameState.LAST_LEVEL] + _local1) + currObjectiveModel.descr)); } public function get fail():Boolean{ if ((((this._gameState.numVirii < 1)) && ((this._gameState.numInfectedBloodcells < 1)))){ this._failReason = "The last germ of your species died. "; if (_gameState.level < InfectGameState.LAST_LEVEL){ _failReason = (_failReason + ("\n\nTIP: " + _objectiveHint[_gameState.level])); } else { _failReason = (_failReason + ("\n\nTIP: " + _objectiveHint[InfectGameState.LAST_LEVEL])); }; return (true); }; if (currObjectiveModel.fail){ this._failReason = "Objective failed. You blew your cover. Don't infect a red bloodcell unless really necessary! "; return (true); }; return (false); } public function get success():Boolean{ return (currObjectiveModel.success); } public function get failReason():String{ return (this._failReason); } public function destroy():void{ } public function get type():String{ return (_objectiveType[_gameState.level]); } public function get currObjectiveModel():InfectObjectiveModel{ var _local1:InfectObjectiveModel; if (_gameState.level < InfectGameState.LAST_LEVEL){ return (this._objectiveModels.getObjective(this._gameState.level)); }; _local1 = this._objectiveModels.getObjective(InfectGameState.LAST_LEVEL); _local1.surviveTime = (45 + (2 * (_gameState.level - InfectGameState.LAST_LEVEL))); _local1.wDelayModifier = (((_gameState.level % 5) * 5) * Math.ceil((_gameState.level / 5))); _local1.aDelayModifier = (((_gameState.level % 5) * 5) * Math.ceil((_gameState.level / 5))); return (_local1); } } }//package tv.mindistortion.infect.game.controller
Section 193
//InfectWhiteBloodcellController (tv.mindistortion.infect.game.controller.InfectWhiteBloodcellController) package tv.mindistortion.infect.game.controller { import flash.events.*; import flash.utils.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.flux.game.controller.*; import flash.filters.*; public class InfectWhiteBloodcellController extends InfectGameObjectController implements IGameObjectController, IFluxObject { private var _r:Number; private var _timer:Timer; private var _rot:Number;// = 0 private var _currFilterVal:Number; public function InfectWhiteBloodcellController(_arg1:InfectGameObject, _arg2:InfectVirusProperties, _arg3:String=""){ _rot = 0; super(_arg1, _arg2); initSubType(_arg3); defineHitArea(0.8); setMovement(); _model.addEventListener(GameEvent.GET_DAMAGE, getHit, false, 0, true); } public function setMovement():void{ this._model.yStep = ((Math.random() * 2) + 3); this._r = (Math.floor((Math.random() * 2)) - 1); } override public function destroy():void{ if (_timer != null){ if (_timer.hasEventListener(TimerEvent.TIMER)){ _timer.removeEventListener(TimerEvent.TIMER, animColorFilter); }; if (_timer.hasEventListener(TimerEvent.TIMER_COMPLETE)){ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeColorFilter); }; }; _timer = null; super.destroy(); } private function resetHitAnimTimer():void{ if (_timer != null){ if (_timer.hasEventListener(TimerEvent.TIMER)){ _timer.removeEventListener(TimerEvent.TIMER, animColorFilter); }; if (_timer.hasEventListener(TimerEvent.TIMER_COMPLETE)){ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeColorFilter); }; }; _timer = new Timer(10, 17); _timer.addEventListener(TimerEvent.TIMER, animColorFilter, false, 0, true); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, removeColorFilter, false, 0, true); _timer.start(); } private function removeColorFilter(_arg1:TimerEvent):void{ if (_timer.hasEventListener(TimerEvent.TIMER)){ _timer.removeEventListener(TimerEvent.TIMER, animColorFilter); }; if (_timer.hasEventListener(TimerEvent.TIMER_COMPLETE)){ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeColorFilter); }; if (_model != null){ _model.sprite.filters = []; }; } private function getHit(_arg1:Event=null):void{ var _local2:Array; var _local3:ColorMatrixFilter; if (_model.health > 1000){ return; }; _currFilterVal = 0.15; _local2 = new Array(); _local2 = _local2.concat([1, 0, 0, 0, 0]); _local2 = _local2.concat([0, _currFilterVal, 0, 0, 0]); _local2 = _local2.concat([0, 0, _currFilterVal, 0, 0]); _local2 = _local2.concat([0, 0, 0, 1, 0]); _local3 = new ColorMatrixFilter(_local2); _model.sprite.filters = [_local3]; resetHitAnimTimer(); } override public function doEnterFrame():void{ super.doEnterFrame(); this._model.y = (this._model.y + this._model.yStep); this._rot = (this._rot + 0.02); this._model.y = (this._model.y + (-2 * Math.sin(this._rot))); this._model.x = (this._model.x + ((this._r * 5) * Math.cos(this._rot))); if (this._model.health <= 0){ this._model.currStatus = InfectGameObject.DEAD; }; } private function initSubType(_arg1:String=""):void{ if (_arg1 == ""){ _arg1 = InfectGameObject.SUB_A; }; this._model.subType = _arg1; switch (_arg1){ case InfectGameObject.SUB_A: this._model.health = 4; _model.scaleX = 1; _model.scaleY = 1; break; case InfectGameObject.SUB_B: this._model.health = 9; _model.scaleX = 1.1; _model.scaleY = 1.1; break; case InfectGameObject.SUB_C: this._model.health = 27; _model.scaleX = 1.2; _model.scaleY = 1.2; break; case InfectGameObject.SUB_D: this._model.health = 90; _model.scaleX = 1.3; _model.scaleY = 1.3; break; case InfectGameObject.SUB_X: _model.health = 1000000; break; default: throw (new Error(("Error at InfectWhiteBloodcellController.initSubType: Unknown SubType " + _arg1))); }; } private function animColorFilter(_arg1:TimerEvent):void{ var _local2:Array; var _local3:ColorMatrixFilter; _currFilterVal = (_currFilterVal + 0.05); _local2 = new Array(); _local2 = _local2.concat([1, 0, 0, 0, 0]); _local2 = _local2.concat([0, _currFilterVal, 0, 0, 0]); _local2 = _local2.concat([0, 0, _currFilterVal, 0, 0]); _local2 = _local2.concat([0, 0, 0, 1, 0]); _local3 = new ColorMatrixFilter(_local2); _model.sprite.filters = [_local3]; } } }//package tv.mindistortion.infect.game.controller
Section 194
//InfectVirusController (tv.mindistortion.infect.game.controller.InfectVirusController) package tv.mindistortion.infect.game.controller { import flash.events.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.controller.*; import flash.geom.*; import tv.mindistortion.flux.utils.*; import flash.filters.*; public class InfectVirusController extends InfectGameObjectController implements IGameObjectController, IFluxObject { private var _reachSpeed:Number;// = 1 private var _prevX; private var _prevY:Number; public static const DRAGGED:String = "dragged"; public static const FREE:String = "free"; public function InfectVirusController(_arg1:InfectGameObject, _arg2:InfectVirusProperties){ var _local3:Number; _reachSpeed = 1; super(_arg1, _arg2); this._model = _arg1; this.currStatus = FREE; _local3 = Math.random(); this._model.immune = (_local3 <= this._virusProperties.immunity); _local3 = Math.random(); this._model.autoInfect = (_local3 <= this._virusProperties.auto); this._model.sprite.mouseChildren = false; this._model.sprite.buttonMode = true; defineHitArea(4); initMovement(); _model.sprite.addEventListener(Event.ADDED_TO_STAGE, onSpriteAddedToStage, false, 0, true); } override public function destroy():void{ super.destroy(); this._virusProperties = null; } public function setTarget(_arg1:Point=null, _arg2:Number=1):void{ this._model.target = _arg1; if (_arg2 < 1){ this._reachSpeed = 1; } else { this._reachSpeed = _arg2; }; } private function onSpriteAddedToStage(_arg1:Event):void{ var _local2:GlowFilter; var _local3:GlowFilter; _model.sprite.removeEventListener(Event.ADDED_TO_STAGE, onSpriteAddedToStage); if (_model.immune){ _local2 = new GlowFilter(2279881, 0.8, 6, 6, 2, 1); _local3 = new GlowFilter(0x330000, 0.8, 4, 4, 3, 1); _model.sprite.filters = [_local3, _local2]; }; } public function get target():Point{ return (this._model.target); } private function initMovement():void{ this._model.rotStep = ((Math.random() * 6) - 3); this._model.xStep = ((Math.random() * 4) - 2); this._model.yStep = ((Math.random() * 4) - 2); } override public function doEnterFrame():void{ super.doEnterFrame(); this._model.age++; if (this.currStatus == FREE){ if ((_model.age & 3) == 0){ if ((((((((_model.xStep > 0.2)) || ((_model.xStep < -0.2)))) || ((_model.yStep > 0.2)))) || ((_model.yStep < -0.2)))){ if ((((((((_model.x < 40)) || ((_model.y < 70)))) || ((_model.x > (Settings.instance.gameWidth - 40))))) || ((_model.y > (Settings.instance.gameHeight - 90))))){ _model.xStep = (_model.xStep * 0.84); _model.yStep = (_model.yStep * 0.84); } else { this._model.xStep = (this._model.xStep * 0.97); this._model.yStep = (this._model.yStep * 0.97); }; }; }; this._model.x = (this._model.x + this._model.xStep); this._model.y = (this._model.y + this._model.yStep); this._model.rotation = (this._model.rotation + this._model.rotStep); }; if (((!((this._model.target == null))) && ((Point.distance(target, new Point(this._model.x, this._model.y)) > 1)))){ setPrevXY(); this._model.x = (this._model.x + ((this._model.target.x - this._model.x) / this._reachSpeed)); this._model.y = (this._model.y + ((this._model.target.y - this._model.y) / this._reachSpeed)); }; } private function setPrevXY():void{ this._prevX = this._model.x; this._prevY = this._model.y; } public function remainMovement():void{ var _local1:Number; var _local2:Number; this._model.rotStep = ((Math.random() * 6) - 3); _local1 = FluxMath.unsignedValue((this._model.x - this._prevX)); _local2 = FluxMath.unsignedValue((this._model.y - this._prevY)); if ((this._model.x - this._prevX) > 0){ this._model.xStep = Math.sqrt(Math.sqrt(_local1)); } else { this._model.xStep = -(Math.sqrt(Math.sqrt(_local1))); }; if ((this._model.y - this._prevY) > 0){ this._model.yStep = Math.sqrt(Math.sqrt(_local2)); } else { this._model.yStep = -(Math.sqrt(Math.sqrt(_local2))); }; } } }//package tv.mindistortion.infect.game.controller
Section 195
//InfectEvent (tv.mindistortion.infect.game.event.InfectEvent) package tv.mindistortion.infect.game.event { public class InfectEvent { public static const KILLED_WBLOODCELL:String = "killedWBloodcell"; public static const SPAWNED_VIRUS:String = "spawnedVirus"; public static const OFFSCREEN_VIRUS:String = "offscreenVirus"; public static const KILLED_BLOODCELL:String = "killedBloodcell"; public static const LEVEL_COMPLETE:String = "levelComplete"; public static const EVOLUTION_COMPLETE:String = "evoComplete"; } }//package tv.mindistortion.infect.game.event
Section 196
//InfectAchievements (tv.mindistortion.infect.game.model.InfectAchievements) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.meta.*; public class InfectAchievements { public static const ACTUALLY_DEFENCE_IS_THE_BEST_DEFENCE:String = "actually defence is the best defence"; public static const SERIOUSLY_LETHAL:String = "seriously lethal (endless mode)"; public static const UNSTOPPABLE:String = "unstoppable (endless mode)"; public static const ME_MYSELF_AND_I:String = "me myself and i"; public static const OFFENSE_IS_THE_BEST_DEFENCE:String = "offense is the best defence"; public static const ONE_MORE_TRY:String = "just one more try"; public static const AUTOPILOT:String = "autopilot"; public static const THE_VIRUS_HAS_BEEN_SPREAD:String = "the virus has been spread"; public static const I_WILL_SURVIVE:String = "i will survive"; public static const HISTORY_OF_EVOLUTION:String = "entering the hall of fame"; public static const F7U12:String = "FFFFFFFUUUUUUUUUUUU"; public static const THE_EVOLUTION_HAS_BEGUN:String = "do the evolution!"; public static const ZOMBIE_OUTBREAK:String = "zombie outbreak"; public static const FIRST_BLOOD:String = "first blood"; public static const RESISTANCE_IS_FUTILE:String = "resistance is futile"; public static const BABY_STEPS:String = "baby steps"; public static const PANDEMIC:String = "pandemic"; public static const THIS_IS_MADNESS:String = "this is madness!"; public static const BLACK_DEATH:String = "black death"; public static const CANT_TOUCH_THIS:String = "can't touch this (endless mode)"; public static const BIOHAZARD:String = "biohazard"; public static const TIME_IS_MONEY:String = "these go to eleven"; public static const WOAH:String = "woah!"; private static var _instance:InfectAchievements = new (InfectAchievements); ; public function InfectAchievements(){ if (_instance){ throw (new Error("InfectAchievements is a singleton class, please use Achievements.instance")); }; Achievements.instance.nameList = [THE_EVOLUTION_HAS_BEGUN, BABY_STEPS, FIRST_BLOOD, THIS_IS_MADNESS, PANDEMIC, BIOHAZARD, RESISTANCE_IS_FUTILE, ZOMBIE_OUTBREAK, THE_VIRUS_HAS_BEEN_SPREAD, CANT_TOUCH_THIS, SERIOUSLY_LETHAL, UNSTOPPABLE, TIME_IS_MONEY, ME_MYSELF_AND_I, OFFENSE_IS_THE_BEST_DEFENCE, ACTUALLY_DEFENCE_IS_THE_BEST_DEFENCE, AUTOPILOT, I_WILL_SURVIVE, WOAH, HISTORY_OF_EVOLUTION, BLACK_DEATH, ONE_MORE_TRY, F7U12]; Achievements.instance.addAchievement(new AchievementModel(ONE_MORE_TRY, "retry a stage for the 10th time in one sitting.", 10, true)); Achievements.instance.addAchievement(new AchievementModel(WOAH, "oh my god it's so intense!", 10)); Achievements.instance.addAchievement(new AchievementModel(I_WILL_SURVIVE, "at first i was afraid, i was petrified.", 5)); Achievements.instance.addAchievement(new AchievementModel(THE_VIRUS_HAS_BEEN_SPREAD, "finish the final stage of the campaign.", 50)); Achievements.instance.addAchievement(new AchievementModel(PANDEMIC, "have 65 germs alive at the same time.", 10)); Achievements.instance.addAchievement(new AchievementModel(BLACK_DEATH, "earn a total of 70000 EP.", 100)); Achievements.instance.addAchievement(new AchievementModel(BIOHAZARD, "infect a total of 2500 red bloodcells.", 10)); Achievements.instance.addAchievement(new AchievementModel(RESISTANCE_IS_FUTILE, "destroy a total of 900 white bloodcells.", 10)); Achievements.instance.addAchievement(new AchievementModel(F7U12, "die within the last 3 seconds before the timer runs out.", 5, true)); Achievements.instance.addAchievement(new AchievementModel(THE_EVOLUTION_HAS_BEGUN, "purchase your first upgrade.", 5)); Achievements.instance.addAchievement(new AchievementModel(BABY_STEPS, "infect a total of 100 red bloodcells.", 5)); Achievements.instance.addAchievement(new AchievementModel(FIRST_BLOOD, "destroy a white bloodcell.", 5)); Achievements.instance.addAchievement(new AchievementModel(THIS_IS_MADNESS, "spawn a total of 300 germs.", 5)); Achievements.instance.addAchievement(new AchievementModel(ZOMBIE_OUTBREAK, "spawn a total of 10000 germs.", 10)); Achievements.instance.addAchievement(new AchievementModel(HISTORY_OF_EVOLUTION, "start from scratch after completing stage 25.", 50)); Achievements.instance.addAchievement(new AchievementModel(CANT_TOUCH_THIS, "survive a stage without infecting a single bloodcell.", 25)); Achievements.instance.addAchievement(new AchievementModel(SERIOUSLY_LETHAL, "earn 3500 EP for a single stage.", 25)); Achievements.instance.addAchievement(new AchievementModel(UNSTOPPABLE, "finish 5 stages in a row without dying.", 25)); Achievements.instance.addAchievement(new AchievementModel(TIME_IS_MONEY, "upgrade latency to level 11.", 10)); Achievements.instance.addAchievement(new AchievementModel(ME_MYSELF_AND_I, "upgrade reproduction rate to level 6.", 50)); Achievements.instance.addAchievement(new AchievementModel(OFFENSE_IS_THE_BEST_DEFENCE, "upgrade damage to level 10.", 10)); Achievements.instance.addAchievement(new AchievementModel(ACTUALLY_DEFENCE_IS_THE_BEST_DEFENCE, "upgrade immunity to level 9.", 25)); Achievements.instance.addAchievement(new AchievementModel(AUTOPILOT, "upgrade auto-infect to level 8.", 25)); defineIcons(); } private function defineIcons():void{ Achievements.instance.achievementIcons[ACTUALLY_DEFENCE_IS_THE_BEST_DEFENCE] = new FlaAchievementDefense(); Achievements.instance.achievementIcons[AUTOPILOT] = new FlaAchievementAutopilot(); Achievements.instance.achievementIcons[BABY_STEPS] = new FlaAchievementBabySteps(); Achievements.instance.achievementIcons[BIOHAZARD] = new FlaAchievementBiohazard(); Achievements.instance.achievementIcons[BLACK_DEATH] = new FlaAchievementBlackDeath(); Achievements.instance.achievementIcons[CANT_TOUCH_THIS] = new FlaAchievementCantTouchThis(); Achievements.instance.achievementIcons[F7U12] = new FlaAchievementF7U12(); Achievements.instance.achievementIcons[FIRST_BLOOD] = new FlaAchievementFirstBlood(); Achievements.instance.achievementIcons[HISTORY_OF_EVOLUTION] = new FlaAchievementHistoryOfEvolution(); Achievements.instance.achievementIcons[I_WILL_SURVIVE] = new FlaAchievementIwillSurvive(); Achievements.instance.achievementIcons[ME_MYSELF_AND_I] = new FlaAchievementMeMyselfAndI(); Achievements.instance.achievementIcons[OFFENSE_IS_THE_BEST_DEFENCE] = new FlaAchievementOffense(); Achievements.instance.achievementIcons[ONE_MORE_TRY] = new FlaAchievementOneMoreTry(); Achievements.instance.achievementIcons[PANDEMIC] = new FlaAchievementPandemic(); Achievements.instance.achievementIcons[RESISTANCE_IS_FUTILE] = new FlaAchievementResistanceIsFutile(); Achievements.instance.achievementIcons[SERIOUSLY_LETHAL] = new FlaAchievementSeriouslyLethal(); Achievements.instance.achievementIcons[THE_EVOLUTION_HAS_BEGUN] = new FlaAchievementEvolution(); Achievements.instance.achievementIcons[THE_VIRUS_HAS_BEEN_SPREAD] = new FlaAchievementTheVirusHasBeenSpread(); Achievements.instance.achievementIcons[THIS_IS_MADNESS] = new FlaAchievementThisIsMadness(); Achievements.instance.achievementIcons[TIME_IS_MONEY] = new FlaAchievementTimeIsMoney(); Achievements.instance.achievementIcons[UNSTOPPABLE] = new FlaAchievementUnstoppable(); Achievements.instance.achievementIcons[WOAH] = new FlaAchievementWoah(); Achievements.instance.achievementIcons[ZOMBIE_OUTBREAK] = new FlaAchievementZombieOutbreak(); } public static function get instance():Achievements{ return (Achievements.instance); } } }//package tv.mindistortion.infect.game.model
Section 197
//InfectGameObject (tv.mindistortion.infect.game.model.InfectGameObject) package tv.mindistortion.infect.game.model { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.model.*; import tv.mindistortion.flux.events.*; import flash.geom.*; public class InfectGameObject extends MovingGameObject implements IFluxObject { private var _health:Number; public var immune:Boolean;// = false public var target:Point;// = null public var subType:String; public var autoInfect:Boolean;// = false public var age:uint;// = 0 public static const WBLOODCELL:String = "wbloodcell"; public static const UNINFECTABLE:String = "uninfectable"; public static const BONUS:String = "bonus"; public static const OK:String = "ok"; public static const VIRUS:String = "virus"; public static const SUB_B:String = "B"; public static const XBLOODCELL:String = "xbloodcell"; public static const SUB_D:String = "D"; public static const ANTIBIOTIC:String = "antibiotic"; public static const SUB_A:String = "A"; public static const DEAD:String = "dead"; public static const SUB_C:String = "C"; public static const INFECTED:String = "infected"; public static const SUB_X:String = "X"; public static const BLOODCELL:String = "bloodcell"; public function InfectGameObject(_arg1:Sprite, _arg2:String="generic"){ immune = false; autoInfect = false; age = 0; target = null; super(_arg2); this.currStatus = OK; this._sprite = _arg1; } public function set health(_arg1:Number):void{ if (_arg1 < _health){ dispatchEvent(new Event(GameEvent.GET_DAMAGE)); }; _health = _arg1; } public function get health():Number{ return (_health); } override public function destroy():void{ super.destroy(); } } }//package tv.mindistortion.infect.game.model
Section 198
//InfectGameState (tv.mindistortion.infect.game.model.InfectGameState) package tv.mindistortion.infect.game.model { import de.polygonal.ds.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import tv.mindistortion.flux.game.model.*; import com.adobe.crypto.*; public class InfectGameState extends GameState implements IFluxObject { private const _wdelayTreshold:Number = 46; private const _adelayBase:Number = 9.5; private const _adelayTreshold:Number = 24; private const _wdelayBase:Number = 9.5; public var loaded:Boolean;// = false public var lastWx:Number;// = 0 public var btimer:Number;// = 0 public var wtimer:Number;// = 0 private var _gameStats:InfectGameStats; private var _skills:InfectSkills; public var lastAx:Number;// = 0 private var _delay:Number;// = 100 private var _wdelay:Number; public var lastBx:Number;// = 0 public var atimer:Number;// = 0 private var _playerName:String;// = "" private var _time:SecureNumber; private var _virusId:String;// = "" private var _stagePoints:SecureNumber; private var _skillPoints:SecureNumber; private var _adelay:Number; public static const WBLOODCELL_TRESHOLD:Number = 3; public static const ANTIBIOTIC_TRESHOLD:Number = 7; public static const LAST_LEVEL:Number = 15; public function InfectGameState(){ _delay = 100; wtimer = 0; atimer = 0; btimer = 0; lastWx = 0; lastAx = 0; lastBx = 0; _gameStats = new InfectGameStats(); _skills = new InfectSkills(); _skillPoints = new SecureNumber(); _stagePoints = new SecureNumber(); _time = new SecureNumber(); loaded = false; _virusId = ""; _playerName = ""; super(); this._gameStats.currLevel = this.level; generateVirusId(); } public function set stagePoints(_arg1:Number):void{ _stagePoints.val = _arg1; } public function get virusId():String{ return (_virusId); } public function get killedWBloodcellsTotal():Number{ return (this._gameStats.killedWBloodcellsTotal); } public function get playerName():String{ return (_playerName); } public function set playerName(_arg1:String):void{ _playerName = _arg1; } public function get adelay():Number{ return (this._adelay); } public function set killedWBloodcellsTotal(_arg1:Number):void{ _gameStats.killedWBloodcellsTotal = _arg1; } public function set skillPoints(_arg1:Number):void{ _skillPoints.val = _arg1; } public function get skills():InfectSkills{ return (_skills); } public function get spawnedVirii():Number{ return (this._gameStats.spawnedVirii); } override public function nextLevel():void{ var _local1:int; super.nextLevel(); _wdelay = _wdelayBase; if (this.level > WBLOODCELL_TRESHOLD){ _local1 = WBLOODCELL_TRESHOLD; while (_local1 <= this.level) { if (_wdelay < _wdelayTreshold){ _wdelay = (_wdelay * 1.15); } else { _wdelay = (_wdelay * 1.03); }; _wdelay = Math.round(_wdelay); _local1++; }; }; _adelay = _adelayBase; if (this.level > ANTIBIOTIC_TRESHOLD){ _local1 = ANTIBIOTIC_TRESHOLD; while (_local1 <= this.level) { if (_adelay < _adelayTreshold){ _adelay = (_adelay * 1.15); } else { _adelay = (_adelay * 1.03); }; _adelay = Math.round(_adelay); _local1++; }; }; _time.val = 0; this._gameStats.currLevel = this.level; } public function updateStats():void{ _gameStats.currLevel = level; } public function set killedWBloodcells(_arg1:Number):void{ this._gameStats.killedWBloodcells = _arg1; } public function set killedBloodcellsTotal(_arg1:Number):void{ _gameStats.killedBloodcellsTotal = _arg1; } public function get numInfectedBloodcells():Number{ var _local1:DListIterator; var _local2:InfectGameObject; var _local3:Number; _local1 = getGameObjectsByType(InfectGameObject.BLOODCELL).getListIterator(); _local3 = 0; while (_local1.hasNext()) { _local2 = (_local1.data as InfectGameObject); if (_local2.currStatus == InfectGameObject.INFECTED){ _local3++; }; _local1.next(); }; return (_local3); } public function get wdelay():Number{ return (this._wdelay); } public function get delay():Number{ return (this._delay); } public function get stagePoints():Number{ return (_stagePoints.val); } public function set spawnedVirii(_arg1:Number):void{ this._gameStats.spawnedVirii = _arg1; } public function get skillPoints():Number{ return (_skillPoints.val); } public function get numVirii():Number{ return (getNumGameObjectsByType(InfectGameObject.VIRUS)); } public function set time(_arg1:Number):void{ _time.val = _arg1; } public function get killedWBloodcells():Number{ return (this._gameStats.killedWBloodcells); } public function get killedBloodcellsTotal():Number{ return (this._gameStats.killedBloodcellsTotal); } private function generateVirusId():void{ var _local1:Date; var _local2:String; var _local3:String; _local1 = new Date(); _local2 = String(_local1.getTime()); _local3 = MD5.hash(((((Math.random() + "x") + Math.random()) + "x") + Math.random())); _virusId = (_local2 + _local3); } public function get time():Number{ return (_time.val); } public function set killedBloodcells(_arg1:Number):void{ this._gameStats.killedBloodcells = _arg1; } public function set virusId(_arg1:String):void{ _virusId = _arg1; } public function get killedBloodcells():Number{ return (this._gameStats.killedBloodcells); } override public function destroy():void{ super.destroy(); } public function set spawnedViriiTotal(_arg1:Number):void{ _gameStats.spawnedViriiTotal = _arg1; } public function get spawnedViriiTotal():Number{ return (this._gameStats.spawnedViriiTotal); } } }//package tv.mindistortion.infect.game.model
Section 199
//InfectGameStats (tv.mindistortion.infect.game.model.InfectGameStats) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; public class InfectGameStats implements IFluxObject { private var _killedBloodcells:Array; private var _spawnedVirii:Array; private var _killedWBloodcells:Array; public var currLevel:Number;// = 0 public function InfectGameStats(){ _killedBloodcells = new Array(); _killedWBloodcells = new Array(); _spawnedVirii = new Array(); currLevel = 0; super(); } public function get spawnedVirii():Number{ return (getSecureNumAt(this.currLevel, this._spawnedVirii).val); } public function set spawnedVirii(_arg1:Number):void{ setSecureNumAt(this.currLevel, this._spawnedVirii, _arg1); } public function get killedWBloodcellsTotal():Number{ return (getArrayTotal(this._killedWBloodcells)); } public function set killedBloodcellsTotal(_arg1:Number):void{ setSecureNumAt(0, _killedBloodcells, _arg1); } private function getArrayTotal(_arg1:Array):Number{ var _local2:Number; var _local3:int; _local2 = 0; _local3 = 0; while (_local3 < _arg1.length) { _local2 = (_local2 + getSecureNumAt(_local3, _arg1).val); _local3++; }; return (_local2); } public function set killedWBloodcells(_arg1:Number):void{ setSecureNumAt(this.currLevel, this._killedWBloodcells, _arg1); } private function setSecureNumAt(_arg1:Number, _arg2:Array, _arg3:Number):void{ var _local4:SecureNumber; if (_arg2[_arg1] != null){ _local4 = (_arg2[_arg1] as SecureNumber); _local4.val = _arg3; } else { _arg2[_arg1] = new SecureNumber(_arg3); }; } public function set killedBloodcells(_arg1:Number):void{ setSecureNumAt(this.currLevel, this._killedBloodcells, _arg1); } public function get data():Object{ return (new Object()); } private function getSecureNumAt(_arg1:Number, _arg2:Array):SecureNumber{ if (_arg2[_arg1] != null){ return ((_arg2[_arg1] as SecureNumber)); }; return (new SecureNumber(0)); } public function set killedWBloodcellsTotal(_arg1:Number):void{ setSecureNumAt(0, _killedWBloodcells, _arg1); } public function get killedBloodcellsTotal():Number{ return (getArrayTotal(this._killedBloodcells)); } public function get killedWBloodcells():Number{ return (getSecureNumAt(this.currLevel, this._killedWBloodcells).val); } public function get killedBloodcells():Number{ return (getSecureNumAt(this.currLevel, this._killedBloodcells).val); } public function destroy():void{ this._killedBloodcells = null; this._killedWBloodcells = null; this._spawnedVirii = null; } public function set spawnedViriiTotal(_arg1:Number):void{ setSecureNumAt(0, _spawnedVirii, _arg1); } public function get spawnedViriiTotal():Number{ return (getArrayTotal(this._spawnedVirii)); } } }//package tv.mindistortion.infect.game.model
Section 200
//InfectObjectiveModel (tv.mindistortion.infect.game.model.InfectObjectiveModel) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; public class InfectObjectiveModel implements IFluxObject { private var _gameState:InfectGameState; public var wDelayModifier:Number;// = 0 public var minSpawn; public var lsd:Boolean;// = false public var minInfect; public var minKill; public var aDelayModifier:Number;// = 0 public var biohazard:Boolean;// = false public var surviveTime:Number;// = -1 public var maxKill; public var uninfectableRatio:Number;// = 0 private var _skillPoints:SecureNumber; public var type:String; public var maxInfect; public var maxSpawn:Number; public var startVirii:Number;// = 1 public static var POINTS_BLOODCELL:Number = 10; public static var POINTS_WBLOODCELL:Number = 40; public function InfectObjectiveModel(_arg1:InfectGameState, _arg2:String, _arg3:Number=0, _arg4:Number=0, _arg5:Number=-1){ aDelayModifier = 0; wDelayModifier = 0; surviveTime = -1; uninfectableRatio = 0; startVirii = 1; lsd = false; biohazard = false; super(); this._gameState = _arg1; if (_arg5 < 0){ _arg5 = ((POINTS_BLOODCELL * _arg3) + (POINTS_WBLOODCELL * _arg4)); }; _skillPoints = new SecureNumber(_arg5); this.minInfect = _arg3; this.maxInfect = -1; this.minKill = _arg4; this.maxInfect = -1; this.minSpawn = 0; this.maxSpawn = -1; this.type = _arg2; } public function get infects():Number{ return (_gameState.killedBloodcells); } public function get descr():String{ var _local1:String; _local1 = ""; if (this.minInfect > 0){ _local1 = (_local1 + (("Infect at least " + this.minInfect) + " red bloodcells. ")); }; if (this.minKill > 0){ _local1 = (_local1 + (("Kill at least " + this.minKill) + " white bloodcells. ")); }; if (this.minSpawn > 0){ _local1 = (_local1 + (("Spawn " + this.minSpawn) + " germs and keep them alive. ")); }; if (this.maxInfect >= 0){ _local1 = (_local1 + (("DON'T infect more than " + maxInfect) + " red bloodcells. ")); }; if (this.maxKill >= 0){ _local1 = (_local1 + (("DON'T kill more than " + maxKill) + " white bloodcells. ")); }; if (this.maxSpawn >= 0){ _local1 = (_local1 + (("DON'T have more than " + maxSpawn) + " germs alive. ")); }; if (surviveTime >= 0){ _local1 = (_local1 + (("Survive for " + surviveTime) + " seconds.")); }; return (_local1); } public function get success():Boolean{ if (surviveTime > 0){ if (_gameState.time >= surviveTime){ return (true); }; if (_gameState.time < surviveTime){ return (false); }; }; if ((((this._gameState.killedBloodcells < this.minInfect)) && ((minInfect > 0)))){ return (false); }; if ((((this._gameState.killedWBloodcells < this.minKill)) && ((minKill > 0)))){ return (false); }; if ((((this._gameState.numVirii < this.minSpawn)) && ((minSpawn > 0)))){ return (false); }; return (true); } public function get skillPoints():Number{ return (_skillPoints.val); } public function destroy():void{ } public function get fail():Boolean{ if ((((this._gameState.killedBloodcells > this.maxInfect)) && ((this.maxInfect > 0)))){ return (true); }; if ((((this._gameState.killedWBloodcells > this.maxKill)) && ((this.maxKill > 0)))){ return (true); }; if ((((this._gameState.spawnedVirii > this.maxSpawn)) && ((this.maxSpawn > 0)))){ return (true); }; return (false); } public function get kills():Number{ return (_gameState.killedWBloodcells); } public function get spawns():Number{ return (_gameState.numVirii); } } }//package tv.mindistortion.infect.game.model
Section 201
//InfectObjectiveModelArray (tv.mindistortion.infect.game.model.InfectObjectiveModelArray) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.*; public class InfectObjectiveModelArray implements IFluxObject { private var _arr:Array; public function InfectObjectiveModelArray(){ _arr = []; super(); } public function get tail():InfectObjectiveModel{ return ((_arr[(_arr.length - 1)] as InfectObjectiveModel)); } public function push(_arg1:InfectObjectiveModel):void{ _arr.push(_arg1); } public function getObjective(_arg1:int):InfectObjectiveModel{ return ((_arr[_arg1] as InfectObjectiveModel)); } public function destroy():void{ } public function setObjective(_arg1:int, _arg2:InfectObjectiveModel):void{ _arr[_arg1] = _arg2; } } }//package tv.mindistortion.infect.game.model
Section 202
//InfectSaveGame (tv.mindistortion.infect.game.model.InfectSaveGame) package tv.mindistortion.infect.game.model { public class InfectSaveGame { public var killedWBloodcells; public var spawnedVirii:Number; public var stagePoints:Number; public var playerName:String; public var lvlImmunity; public var currLvl; public var score; public var killedWBloodcellsTotal; public var skillPoints:Number; public var lvlRepro; public var virusId; public var lvlAuto; public var killedBloodcells; public var killedBloodcellsTotal; public var lvlDamage; public var lvlLatency; public var spawnedViriiTotal:Number; public function InfectSaveGame(_arg1:Object=null){ if (_arg1 != null){ currLvl = _arg1.currLvl; lvlLatency = _arg1.lvlLatency; lvlRepro = _arg1.lvlRepro; lvlDamage = _arg1.lvlDamage; lvlImmunity = _arg1.lvlImmunity; lvlAuto = _arg1.lvlAuto; skillPoints = _arg1.skillPoints; score = _arg1.score; killedBloodcellsTotal = _arg1.killedBloodcellsTotal; killedWBloodcellsTotal = _arg1.killedWBloodcellsTotal; spawnedViriiTotal = _arg1.spawnedViriiTotal; stagePoints = _arg1.stagePoints; killedBloodcells = _arg1.killedBloodcells; killedWBloodcells = _arg1.killedWBloodcells; spawnedVirii = _arg1.spawnedVirii; virusId = _arg1.virusId; playerName = _arg1.playerName; }; } } }//package tv.mindistortion.infect.game.model
Section 203
//InfectSkills (tv.mindistortion.infect.game.model.InfectSkills) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; public class InfectSkills implements IFluxObject { private const BIOHAZARD_MODIFIER:Number = 1.5; private var _auto:SecureNumber; private var _damage; private var _repro; private var _biohazard:Boolean;// = false private var _lvlLatency; private var _lvlDamage; private var _immunity; private var _latency; private var _lvlAuto:SecureNumber; private var _lvlImmunity; private var _lvlRepro; public function InfectSkills(){ _biohazard = false; super(); _lvlLatency = new SecureNumber(1); _lvlRepro = new SecureNumber(1); _lvlDamage = new SecureNumber(1); _lvlImmunity = new SecureNumber(1); _lvlAuto = new SecureNumber(1); _latency = new SecureNumber(80); _repro = new SecureNumber(1); _damage = new SecureNumber(0); _immunity = new SecureNumber(0); _auto = new SecureNumber(0); updateAllSkills(); } public function destroy():void{ _lvlLatency = null; _lvlRepro = null; _lvlDamage = null; _lvlImmunity = null; _lvlAuto = null; _latency = null; _repro = null; _damage = null; _immunity = null; _auto = null; } public function get reproCost():Number{ var _local1:Number; _local1 = _lvlRepro.val; return ((((((_local1 * _local1) * _local1) * _local1) * 30) + 50)); } private function updateDamage():void{ var _local1:int; if (_biohazard){ _local1 = Math.ceil((_lvlDamage.val * BIOHAZARD_MODIFIER)); } else { _local1 = _lvlDamage.val; }; _damage.val = (_local1 - 1); } public function get repro():Number{ return (_repro.val); } public function get lvlImmunity():Number{ return (_lvlImmunity.val); } private function updateAuto():void{ var _local1:int; var _local2:Number; var _local3:Number; var _local4:int; if (_biohazard){ _local1 = Math.ceil((_lvlAuto.val * BIOHAZARD_MODIFIER)); } else { _local1 = _lvlAuto.val; }; if (_local1 < 2){ _auto.val = 0; return; }; _local2 = 1; _local3 = _local1; _local4 = 1; while (_local4 < _local3) { _local2 = (_local2 * 0.94); _local4++; }; if ((1.17 - _local2) > 0.99){ _auto.val = 0.99; return; }; _auto.val = (1.17 - _local2); } public function get biohazard():Boolean{ return (_biohazard); } public function get lvlRepro():Number{ return (_lvlRepro.val); } public function get autoCost():Number{ var _local1:Number; _local1 = _lvlAuto.val; return ((((_local1 * _local1) * 120) + 630)); } public function get auto():Number{ return (_auto.val); } public function set lvlRepro(_arg1:Number):void{ _lvlRepro.val = _arg1; updateRepro(); } public function get lvlDamage():Number{ return (_lvlDamage.val); } public function set lvlImmunity(_arg1:Number):void{ _lvlImmunity.val = _arg1; updateImmunity(); } private function updateImmunity():void{ var _local1:int; var _local2:Number; var _local3:Number; var _local4:int; if (_biohazard){ _local1 = Math.ceil((_lvlImmunity.val * BIOHAZARD_MODIFIER)); } else { _local1 = _lvlImmunity.val; }; if (_local1 < 2){ _immunity.val = 0; return; }; _local2 = 1; _local3 = _local1; _local4 = 1; while (_local4 < _local3) { _local2 = (_local2 * 0.92); _local4++; }; if ((1.05 - _local2) > 0.99){ _immunity.val = 0.99; return; }; _immunity.val = (1.05 - _local2); } public function get immunityCost():Number{ var _local1:Number; _local1 = _lvlImmunity.val; return ((((_local1 * _local1) * 80) + 230)); } public function set biohazard(_arg1:Boolean):void{ _biohazard = _arg1; updateAllSkills(); } public function get immunity():Number{ return (_immunity.val); } private function updateRepro():void{ var _local1:int; if (_biohazard){ _local1 = Math.ceil((_lvlRepro.val * BIOHAZARD_MODIFIER)); } else { _local1 = _lvlRepro.val; }; _repro.val = _local1; } public function get damageCost():Number{ var _local1:Number; _local1 = _lvlDamage.val; return ((((_local1 * _local1) * 50) + 80)); } public function set lvlDamage(_arg1:Number):void{ _lvlDamage.val = _arg1; updateDamage(); } public function set lvlAuto(_arg1:Number):void{ _lvlAuto.val = _arg1; updateAuto(); } public function get latencyCost():Number{ var _local1:Number; _local1 = _lvlLatency.val; return ((((_local1 * _local1) * 30) + 20)); } public function get damage():Number{ return (_damage.val); } public function get lvlAuto():Number{ return (_lvlAuto.val); } private function updateLatency():void{ var _local1:int; var _local2:Number; var _local3:int; var _local4:int; if (_biohazard){ _local1 = Math.ceil((_lvlLatency.val * BIOHAZARD_MODIFIER)); } else { _local1 = _lvlLatency.val; }; if (_local1 < 1){ _latency.val = 80; return; }; _local2 = 60; _local3 = int(_local1); if (_local3 > 1){ _local4 = 1; while (_local4 < _local3) { _local2 = (_local2 * 0.9); _local4++; }; }; _latency.val = _local2; } public function set lvlLatency(_arg1:Number):void{ _lvlLatency.val = _arg1; updateLatency(); } private function updateAllSkills():void{ updateAuto(); updateDamage(); updateImmunity(); updateLatency(); updateRepro(); } public function get lvlLatency():Number{ return (_lvlLatency.val); } public function get latency():Number{ return (_latency.val); } } }//package tv.mindistortion.infect.game.model
Section 204
//InfectVirusProperties (tv.mindistortion.infect.game.model.InfectVirusProperties) package tv.mindistortion.infect.game.model { import tv.mindistortion.flux.*; public class InfectVirusProperties implements IFluxObject { private var _skills:InfectSkills; public function InfectVirusProperties(_arg1:InfectSkills){ _skills = _arg1; } public function get repro():Number{ return (_skills.repro); } public function get immunity():Number{ return (_skills.immunity); } public function get auto():Number{ return (_skills.auto); } public function get damage():Number{ return (_skills.damage); } public function destroy():void{ _skills.destroy(); } public function get latency():Number{ return (_skills.latency); } } }//package tv.mindistortion.infect.game.model
Section 205
//InfectAchievementList (tv.mindistortion.infect.game.view.InfectAchievementList) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; public class InfectAchievementList extends MovieClip { private const _PAGE_SIZE:int = 4; private var _iconDict:Dictionary; private var _btnNext:InfectTextButton; private var _currPage:int;// = 0 private var _btnPrev; private var _listStage:Sprite; private var _lastPage:int; public function InfectAchievementList(){ _currPage = 0; _iconDict = new Dictionary(); super(); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true); _lastPage = (Math.ceil((InfectAchievements.instance.list.length / _PAGE_SIZE)) - 1); } private function clearPage():void{ while (_listStage.numChildren > 0) { _listStage.removeChildAt(0); }; } private function gotoPage(_arg1:int):void{ var _local2:Array; var _local3:DisplayObject; var _local4:int; clearPage(); _currPage = _arg1; if (_currPage < 1){ _btnPrev.visible = false; } else { _btnPrev.visible = true; }; if (_currPage >= _lastPage){ _btnNext.visible = false; } else { _btnNext.visible = true; }; _local2 = InfectAchievements.instance.list.slice((_PAGE_SIZE * _arg1), (_PAGE_SIZE * (_arg1 + 1))); _local4 = 0; while (_local4 < _local2.length) { _local3 = _listStage.addChild(new AchievementView(_local2[_local4], InfectAchievements.instance.achievementIcons[_local2[_local4].name], new FlaAchievementLocked())); _local3.y = (_listStage.numChildren * 50); _local4++; }; } private function addButton(_arg1:InfectTextButton, _arg2:Number, _arg3:Number):InfectTextButton{ addChild(_arg1); _arg1.x = _arg2; _arg1.y = _arg3; _arg1.addEventListener(MouseEvent.CLICK, onMouseEventClick, false, 0, true); return (_arg1); } private function onAddedToStage(_arg1:Event):void{ var _local2:Number; var _local3:Number; removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); _local2 = parent.height; _local3 = parent.width; _btnPrev = addButton(new InfectTextButton("< previous"), 10, (_local2 - 40)); _btnNext = addButton(new InfectTextButton("next >"), (_local3 - 70), (_local2 - 40)); _listStage = new Sprite(); addChild(_listStage); gotoPage(0); } private function onMouseEventClick(_arg1:MouseEvent):void{ switch (Sprite(_arg1.target).parent){ case _btnNext: gotoPage((_currPage + 1)); break; case _btnPrev: gotoPage((_currPage - 1)); break; }; } } }//package tv.mindistortion.infect.game.view
Section 206
//InfectEvolutionMenu (tv.mindistortion.infect.game.view.InfectEvolutionMenu) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import com.newgrounds.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.flux.menu.view.*; import flash.text.*; import tv.mindistortion.infect.menu.view.*; public class InfectEvolutionMenu extends GameMenu implements IFluxObject { private const _UNLOCK_AUTO:Number = 9; private const _UNLOCK_IMMUNITY:Number = 7; private const _UNLOCK_REPRO:Number = 1; private const _UNLOCK_DAMAGE:Number = 3; private var _evoStage:Sprite; private var _msgPopup:MessagePopUp; public var lblPoints; private var _btnContinue:InfectTextButton; private var _btnStage:Sprite; private var _btnMainMenu:InfectTextButton; public var lblStats:TextField; private var _state:InfectGameState; private var _evoImmunity; public var mcUpgrade:MovieClip; private var _evoDamage; private var _cinematic:Sprite; private var _evoRepro; private var _btnSubmitHighscore:InfectTextButton; public var phEvo:MovieClip; private var _evoAuto:InfectEvolutionSkill; private var _evoLatency; public function InfectEvolutionMenu(_arg1:InfectGameState){ _btnStage = new Sprite(); _evoStage = new Sprite(); super(); mcUpgrade.visible = false; addChild(_btnStage); addChild(_evoStage); _state = _arg1; _btnContinue = addButton(new InfectTextButton((("continue to stage " + (_arg1.level + 2)) + " >"))); _btnContinue.y = lblPoints.y; _btnContinue.x = (Settings.instance.gameWidth - 200); _btnSubmitHighscore = addButton(new InfectTextButton("submit highscore >")); _btnSubmitHighscore.y = (Settings.instance.gameHeight - 31); _btnSubmitHighscore.x = (Settings.instance.gameWidth - 150); _btnMainMenu = addButton(new InfectTextButton("exit to main menu")); _btnMainMenu.y = 3; _btnMainMenu.x = (Settings.instance.gameWidth - 150); _evoLatency = addEvoSkill(_state.skills.latencyCost, InfectEvolutionSkill.LATENCY, _state.skills.lvlLatency); if (_state.level >= _UNLOCK_REPRO){ _evoRepro = addEvoSkill(_state.skills.reproCost, InfectEvolutionSkill.REPRO, _state.skills.lvlRepro); } else { _evoRepro = addEvoSkill(); }; if (_state.level >= _UNLOCK_DAMAGE){ _evoDamage = addEvoSkill(_state.skills.damageCost, InfectEvolutionSkill.DAMAGE, _state.skills.lvlDamage); } else { _evoDamage = addEvoSkill(); }; if (_state.level >= _UNLOCK_IMMUNITY){ _evoImmunity = addEvoSkill(_state.skills.immunityCost, InfectEvolutionSkill.IMMUNITY, _state.skills.lvlImmunity); } else { _evoImmunity = addEvoSkill(); }; if (_state.level >= _UNLOCK_AUTO){ _evoAuto = addEvoSkill(_state.skills.autoCost, InfectEvolutionSkill.AUTO, _state.skills.lvlAuto); } else { _evoAuto = addEvoSkill(); }; updateLabels(); checkRequired(); checkAffordable(); phEvo.visible = false; } public function destroy():void{ } private function onMouseClick(_arg1:MouseEvent):void{ switch (Sprite(_arg1.target).parent){ case _btnContinue: if (!(((_state.level == 2)) && ((_state.skills.lvlRepro < 2)))){ nextLevel(); }; break; case _btnSubmitHighscore: if ((((Settings.instance.website == Settings.KONG)) && (!((Settings.instance.externalAPI == null))))){ if (_msgPopup == null){ _msgPopup = new MessagePopUp("score submitted!"); }; if (!contains(_msgPopup)){ addChild(_msgPopup); _msgPopup.x = (Settings.instance.gameWidth - 290); _msgPopup.y = (Settings.instance.gameHeight - 107); _msgPopup.addEventListener(Event.COMPLETE, onMsgPopupComplete, false, 0, true); }; Settings.instance.externalAPI.stats.submit("HighScore", _state.score); } else { dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.SUBMIT_HIGHSCORE)); }; break; case _btnMainMenu: dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU)); break; }; } private function onMsgPopupComplete(_arg1:Event):void{ _msgPopup.removeEventListener(Event.COMPLETE, onMsgPopupComplete); removeChild(_msgPopup); _msgPopup = null; } override protected function nextLevel(_arg1:Event=null):void{ dispatchEvent(new Event(Event.COMPLETE)); } private function updateLabels():void{ lblPoints.text = ((("available evolution points: " + _state.skillPoints) + " ") + InfectEvolutionSkill.CURRENCY); lblStats.text = ((((((("stage score: " + _state.stagePoints) + " ") + InfectEvolutionSkill.CURRENCY) + " | total: ") + _state.score) + " ") + InfectEvolutionSkill.CURRENCY); lblStats.appendText((((((((((((((("\ninfected: " + _state.killedBloodcellsTotal) + " (+") + _state.killedBloodcells) + ")") + " | destroyed: ") + _state.killedWBloodcellsTotal) + " (+") + _state.killedWBloodcells) + ")") + " | spawned: ") + _state.spawnedViriiTotal) + " (+") + _state.spawnedVirii) + ")")); } private function onSkillBuy(_arg1:Event):void{ var _local2:String; switch (_arg1.target){ case _evoLatency: if (_state.skillPoints >= _state.skills.latencyCost){ InfectAchievements.instance.unlock(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); if (Settings.instance.website == Settings.NG){ API.unlockMedal(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); }; _state.skillPoints = (_state.skillPoints - _state.skills.latencyCost); _state.skills.lvlLatency++; if (_state.skills.lvlLatency >= 11){ InfectAchievements.instance.unlock(InfectAchievements.TIME_IS_MONEY); }; _evoLatency.update(_state.skills.latencyCost, _state.skills.lvlLatency, writeStat(InfectEvolutionSkill.LATENCY)); updateLabels(); }; break; case _evoRepro: if (_state.skillPoints >= _state.skills.reproCost){ InfectAchievements.instance.unlock(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); if (Settings.instance.website == Settings.NG){ API.unlockMedal(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); }; _state.skillPoints = (_state.skillPoints - _state.skills.reproCost); _state.skills.lvlRepro++; if (_state.skills.lvlRepro >= 6){ InfectAchievements.instance.unlock(InfectAchievements.ME_MYSELF_AND_I); }; _evoRepro.update(_state.skills.reproCost, _state.skills.lvlRepro, writeStat(InfectEvolutionSkill.REPRO)); updateLabels(); }; break; case _evoDamage: if (_state.skillPoints >= _state.skills.damageCost){ InfectAchievements.instance.unlock(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); _state.skillPoints = (_state.skillPoints - _state.skills.damageCost); _state.skills.lvlDamage++; if (_state.skills.lvlDamage >= 10){ InfectAchievements.instance.unlock(InfectAchievements.OFFENSE_IS_THE_BEST_DEFENCE); }; _evoDamage.update(_state.skills.damageCost, _state.skills.lvlDamage, writeStat(InfectEvolutionSkill.DAMAGE)); updateLabels(); }; break; case _evoImmunity: if (_state.skillPoints >= _state.skills.immunityCost){ InfectAchievements.instance.unlock(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); _state.skillPoints = (_state.skillPoints - _state.skills.immunityCost); _state.skills.lvlImmunity++; if (_state.skills.lvlImmunity >= 9){ InfectAchievements.instance.unlock(InfectAchievements.ACTUALLY_DEFENCE_IS_THE_BEST_DEFENCE); }; _evoImmunity.update(_state.skills.immunityCost, _state.skills.lvlImmunity, writeStat(InfectEvolutionSkill.IMMUNITY)); updateLabels(); }; break; case _evoAuto: if (_state.skillPoints >= _state.skills.autoCost){ InfectAchievements.instance.unlock(InfectAchievements.THE_EVOLUTION_HAS_BEGUN); _state.skillPoints = (_state.skillPoints - _state.skills.autoCost); _state.skills.lvlAuto++; if (_state.skills.lvlAuto >= 8){ InfectAchievements.instance.unlock(InfectAchievements.AUTOPILOT); }; _evoAuto.update(_state.skills.autoCost, _state.skills.lvlAuto, writeStat(InfectEvolutionSkill.AUTO)); updateLabels(); }; break; }; checkAffordable(); checkRequired(); } public function showCinematic(_arg1:Sprite):void{ _cinematic = _arg1; addChild(_cinematic); _cinematic.addEventListener(Event.COMPLETE, onCinematicComplete, false, 0, true); } private function addButton(_arg1:InfectTextButton):InfectTextButton{ _btnStage.addChild(_arg1); _arg1.addEventListener(MouseEvent.CLICK, onMouseClick, false, 0, true); return (_arg1); } private function checkRequired():void{ if ((((_state.level == 2)) && ((_state.skills.lvlRepro < 2)))){ _btnContinue.mouseChildren = false; _btnContinue.alpha = 0.7; _evoLatency.isEnabled = false; mcUpgrade.visible = true; mcUpgrade.y = _evoRepro.y; return; }; if ((((_state.level == 3)) && ((_state.skills.lvlDamage < 2)))){ _btnContinue.mouseChildren = false; _btnContinue.alpha = 0.7; _evoLatency.isEnabled = false; _evoRepro.isEnabled = false; mcUpgrade.visible = true; mcUpgrade.y = _evoDamage.y; return; }; _btnContinue.alpha = 1; _evoLatency.isEnabled = true; _evoRepro.isEnabled = true; _evoDamage.isEnabled = true; _evoImmunity.isEnabled = true; _evoAuto.isEnabled = true; _btnContinue.mouseChildren = true; mcUpgrade.visible = false; } private function writeStat(_arg1:Number):String{ switch (_arg1){ case InfectEvolutionSkill.LATENCY: return (((Math.round(((_state.skills.latency / 25) * 100)) / 100) + "'")); case InfectEvolutionSkill.REPRO: return (String(_state.skills.repro)); case InfectEvolutionSkill.DAMAGE: return (String(_state.skills.damage)); case InfectEvolutionSkill.IMMUNITY: return (((Math.round((_state.skills.immunity * 1000)) / 10) + "%")); case InfectEvolutionSkill.AUTO: return (((Math.round((_state.skills.auto * 1000)) / 10) + "%")); }; return (""); } private function addEvoSkill(_arg1:Number=0, _arg2:Number=1, _arg3:Number=0):InfectEvolutionSkill{ var _local4:InfectEvolutionSkill; _local4 = new InfectEvolutionSkill(_arg1, _arg2, _arg3, writeStat(_arg2)); _local4.x = phEvo.x; _local4.y = (phEvo.y + (_evoStage.numChildren * 50)); if (_arg2 > 1){ _local4.addEventListener(Event.SELECT, onSkillBuy, false, 0, true); }; _evoStage.addChild(_local4); switch (_arg2){ case InfectEvolutionSkill.LATENCY: if (_state.level == 0){ _local4.showNew(); }; break; case InfectEvolutionSkill.REPRO: if (_state.level == _UNLOCK_REPRO){ _local4.showNew(); }; break; case InfectEvolutionSkill.DAMAGE: if (_state.level == _UNLOCK_DAMAGE){ _local4.showNew(); }; break; case InfectEvolutionSkill.IMMUNITY: if (_state.level == _UNLOCK_IMMUNITY){ _local4.showNew(); }; break; case InfectEvolutionSkill.AUTO: if (_state.level == _UNLOCK_AUTO){ _local4.showNew(); }; break; }; return (_local4); } private function onCinematicComplete(_arg1:Event):void{ if (contains(_cinematic)){ removeChild(_cinematic); }; } private function checkAffordable():void{ if (_state.skillPoints < _state.skills.latencyCost){ _evoLatency.isAffordable = false; }; if (_state.skillPoints < _state.skills.reproCost){ _evoRepro.isAffordable = false; }; if (_state.skillPoints < _state.skills.damageCost){ _evoDamage.isAffordable = false; }; if (_state.skillPoints < _state.skills.immunityCost){ _evoImmunity.isAffordable = false; }; if (_state.skillPoints < _state.skills.autoCost){ _evoAuto.isAffordable = false; }; } } }//package tv.mindistortion.infect.game.view
Section 207
//InfectGameView (tv.mindistortion.infect.game.view.InfectGameView) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import flash.utils.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.view.*; import tv.mindistortion.flux.game.model.*; import tv.mindistortion.flux.events.*; import fl.transitions.*; import tv.mindistortion.infect.menu.view.*; import fl.transitions.easing.*; import tv.mindistortion.infect.game.event.*; import flash.filters.*; public class InfectGameView extends GameView implements IFluxObject { private var _green:Number;// = 1 private var _stageVirus:Sprite; private var _gameState:InfectGameState; private var _gameHud:InfectHUD; private var _stageBG; private var _message:InfectMessage; private var _spriteToModel:Dictionary; private var _stageBloodcells; private var _colorCounter:int;// = 0 private var _transitionLeft; private var _blue:Number;// = 1 private var _stageBonus:Sprite; private var _evolutionMenu:InfectEvolutionMenu; private var _transitionRight:MovieClip; private var _stageAntibiotics; private var _popup:InfectPopup; private var _red:Number;// = 1 private var _stageWBloodcells; public function InfectGameView(_arg1:InfectGameState){ _spriteToModel = new Dictionary(true); _red = 1; _green = 1; _blue = 1; _colorCounter = 0; super(_arg1); _gameState = _arg1; _viewPort.height = (Settings.instance.gameHeight - 40); _viewPort.width = Settings.instance.gameWidth; _gameHud = new InfectHUD(_gameState); _gameHud.addEventListener(MenuEvent.ACTION, onHUDMenu, false, 0, true); addHUD(this._gameHud); _gameState = _arg1; _stageVirus = new Sprite(); _stageBloodcells = new Sprite(); _stageBG = new Sprite(); _stageWBloodcells = new Sprite(); _stageAntibiotics = new Sprite(); _stageBonus = new Sprite(); _gameStage.addChild(this._stageBG); _gameStage.addChild(this._stageBloodcells); _gameStage.addChild(this._stageWBloodcells); _gameStage.addChild(this._stageAntibiotics); _gameStage.addChild(this._stageBonus); _gameStage.addChild(this._stageVirus); } override public function destroy():void{ super.destroy(); this._gameHud = null; _popup = null; _message = null; this._gameState = null; _transitionLeft = null; _transitionRight = null; } public function showGameOver(_arg1:String):void{ showPopup(new InfectPopup(_arg1, "Game Over", true, ["Exit", "Retry"])); } override protected function renderGameObject(_arg1:GameObject, _arg2:Sprite=null):void{ var _local3:InfectGameObject; this._spriteToModel[_arg1.sprite] = _arg1; if (_arg2 == null){ switch (_arg1.objectType){ case InfectGameObject.VIRUS: _arg2 = this._stageVirus; break; case InfectGameObject.BLOODCELL: _arg2 = this._stageBloodcells; break; case InfectGameObject.WBLOODCELL: _arg2 = this._stageWBloodcells; break; case InfectGameObject.ANTIBIOTIC: _arg2 = this._stageAntibiotics; break; case InfectGameObject.BONUS: _arg2 = this._stageBonus; break; case GameObject.BACKGROUND: _arg2 = this._stageBG; break; default: _arg2 = this._stageBG; break; }; }; _local3 = (_arg1 as InfectGameObject); if ((((_local3.objectType == InfectGameObject.BLOODCELL)) && (!((this._shownObjectStatus[_local3] == _local3.currStatus))))){ if (_local3.currStatus == InfectGameObject.INFECTED){ this._shownObjectStatus[_local3] = _local3.currStatus; infectBloodcell(_local3); } else { if (_local3.currStatus == InfectGameObject.UNINFECTABLE){ this._shownObjectStatus[_local3] = _local3.currStatus; uninfectableBloodcell(_local3); } else { if (_local3.currStatus == InfectGameObject.DEAD){ this._shownObjectStatus[_local3] = _local3.currStatus; killCell(_local3); }; }; }; }; if ((((_local3.objectType == InfectGameObject.VIRUS)) || ((_local3.objectType == InfectGameObject.WBLOODCELL)))){ if ((((_local3.currStatus == InfectGameObject.DEAD)) && (!((_local3.currStatus == this._shownObjectStatus[_local3]))))){ this._shownObjectStatus[_local3] = _local3.currStatus; killCell(_local3); }; }; if (_local3.objectType == InfectGameObject.VIRUS){ checkVirusLeftScreen(_local3); }; super.renderGameObject(_arg1, _arg2); if (_arg1 != null){ if ((((_arg1.objectType == InfectGameObject.WBLOODCELL)) && (!((_arg1.sprite == null))))){ _arg1.sprite.scaleX = _arg1.scaleX; _arg1.sprite.scaleY = _arg1.scaleY; }; }; } private function clearSubStage(_arg1:Sprite):void{ while (_arg1.numChildren > 0) { _arg1.removeChildAt(0); }; } private function checkVirusLeftScreen(_arg1:InfectGameObject):void{ if (_arg1.target == null){ if (_arg1.y < (this._viewPort.y + 9)){ removeGameObject(_arg1); }; if (_arg1.y > (this._viewPort.height + 16)){ removeGameObject(_arg1); }; }; if (_arg1.x < (this._viewPort.x - 16)){ removeGameObject(_arg1); }; if (_arg1.x > (this._viewPort.width + 16)){ removeGameObject(_arg1); }; } private function onHUDMenu(_arg1:MenuEvent):void{ switch (_arg1.action){ case MenuEvent.MAIN_MENU: showPopup(new InfectPopup("Are you sure you want to exit this game?", "Exit game?", true)); break; default: forwardMenuEvent(_arg1); }; } public function clearLSD():void{ _colorCounter = 0; _gameStage.filters = []; } public function doTheEvolution():void{ prepareTransition(); clearMc(_message); _menuStage.removeChild(_gameHud); _evolutionMenu = new InfectEvolutionMenu(_gameState); _evolutionMenu.addEventListener(Event.COMPLETE, onEvolutionComplete, false, 0, true); _evolutionMenu.addEventListener(MenuEvent.ACTION, forwardMenuEvent, false, 0, true); _menuStage.addChild(_evolutionMenu); if ((((_gameState.level == 14)) && (!(_gameState.loaded)))){ if (Settings.instance.music){ _evolutionMenu.showCinematic(new FlaCampaignEnding()); } else { _evolutionMenu.showCinematic(new FlaCampaignEndingNoSound()); }; }; doTransition(); } public function startLevel(_arg1:String):void{ showPopup(new InfectPopup(_arg1, ("Stage " + (_gameState.level + 1)))); } private function clearPopup():void{ _popup.removeEventListener(Event.CLOSE, onPopupClose); _popup.removeEventListener(MenuEvent.ACTION, onPopupAction); removeChild(_popup); _popup.destroy(); _popup = null; } private function doTransition():void{ if ((((_transitionLeft == null)) || ((_transitionRight == null)))){ return; }; addChild(_transitionLeft); addChild(_transitionRight); TransitionManager.start(_transitionLeft, {type:Wipe, direction:Transition.OUT, duration:1, easing:Strong.easeOut, startPoint:4}); TransitionManager.start(_transitionRight, {type:Wipe, direction:Transition.OUT, duration:1, easing:Strong.easeOut, startPoint:6}); } private function removeSprite(_arg1:Sprite):void{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; _local2.removeChild(_arg1); } public function putGermOnTop(_arg1:GameObject):void{ var _local2:Sprite; var _local3:Sprite; _local2 = (_stageVirus.getChildAt(_stageVirus.numChildren) as Sprite); _local3 = _arg1.sprite; _stageVirus.swapChildren(_local2, _local3); trace("swapped!"); } private function onPopupAction(_arg1:MenuEvent):void{ switch (_arg1.action){ case MenuEvent.POPUP_ABORT: if (!_gameState.gameOver){ onPopupClose(); } else { clearPopup(); dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU)); }; break; case MenuEvent.POPUP_CONFIRM: if (!_gameState.gameOver){ clearPopup(); dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU)); } else { clearPopup(); dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.CONTINUE_GAME)); }; break; }; } public function get HUD():InfectHUD{ return (_gameHud); } public function showLevelComplete():void{ if (_message != null){ if (contains(_message)){ removeChild(_message); }; }; _message = new FlaLevelComplete(); _message.x = centerX; _message.y = centerY; _message.addEventListener(Event.COMPLETE, onLevelComplete, false, 0, true); addChild(_message); } private function uninfectableBloodcell(_arg1:InfectGameObject):void{ var _local2:Array; var _local3:ColorMatrixFilter; _local2 = new Array(); _local2 = _local2.concat([0.1, 0.5, 0, 0, 0]); _local2 = _local2.concat([0.5, 0.5, 0, 0, 0]); _local2 = _local2.concat([0.8, 0.5, 0, 0, 0]); _local2 = _local2.concat([0, 0, 0, 1, 0]); _local3 = new ColorMatrixFilter(_local2); _arg1.sprite.filters = [_local3]; } public function doLSD(_arg1:Event=null):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:ColorMatrixFilter; _colorCounter++; _local2 = (1 + Math.sin((_colorCounter / 20))); _local3 = (1 + Math.sin(((_colorCounter / 20) + ((Math.PI * 2) / 3)))); _local4 = (1 + Math.sin(((_colorCounter / 20) + ((Math.PI * 4) / 3)))); _local5 = 0; _local6 = -0.8; _local7 = new Array(); _local7 = _local7.concat([(_local2 + _local5), (_local4 + _local6), (_local3 + _local6), 0, 0]); _local7 = _local7.concat([(_local4 + _local6), (_local3 + _local5), (_local2 + _local6), 0, 0]); _local7 = _local7.concat([(_local3 + _local6), (_local2 + _local6), (_local4 + _local5), 0, 0]); _local7 = _local7.concat([0, 0, 0, 1, 0]); _local8 = new ColorMatrixFilter(_local7); this._gameStage.filters = [_local8]; } private function forwardMenuEvent(_arg1:MenuEvent):void{ dispatchEvent(new MenuEvent(MenuEvent.ACTION, _arg1.action)); } private function onKillCellComplete(_arg1:RefEvent):void{ removeGameObject(this._spriteToModel[(_arg1.refTarget as Sprite)]); } private function onLevelComplete(_arg1:Event):void{ _message.removeEventListener(Event.COMPLETE, onLevelComplete); dispatchEvent(new Event(InfectEvent.LEVEL_COMPLETE)); } public function clearLevel():void{ var _local1:int; _local1 = 0; while (_local1 < this._gameStage.numChildren) { clearSubStage((this._gameStage.getChildAt(_local1) as Sprite)); _local1++; }; } override protected function removeGameObject(_arg1:GameObject, _arg2:Sprite=null):void{ if (_arg2 == null){ switch (_arg1.objectType){ case InfectGameObject.VIRUS: _arg2 = this._stageVirus; break; case InfectGameObject.BLOODCELL: _arg2 = this._stageBloodcells; break; case InfectGameObject.WBLOODCELL: case InfectGameObject.XBLOODCELL: _arg2 = this._stageWBloodcells; break; case InfectGameObject.ANTIBIOTIC: _arg2 = this._stageAntibiotics; break; case InfectGameObject.BONUS: _arg2 = this._stageBonus; break; case GameObject.BACKGROUND: _arg2 = this._stageBG; break; default: _arg2 = this._stageBG; break; }; }; super.removeGameObject(_arg1, _arg2); } private function showPopup(_arg1:InfectPopup):void{ if (_popup == null){ _popup = _arg1; _popup.x = centerX; _popup.y = (centerY - 50); _popup.addEventListener(Event.CLOSE, onPopupClose, false, 0, true); _popup.addEventListener(MenuEvent.ACTION, onPopupAction, false, 0, true); addChild(_popup); dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.POPUP)); }; } private function onEvolutionComplete(_arg1:Event):void{ prepareTransition(); _menuStage.addChild(_gameHud); _evolutionMenu.removeEventListener(Event.COMPLETE, onEvolutionComplete); _menuStage.removeChild(_evolutionMenu); _evolutionMenu.destroy(); _evolutionMenu = null; dispatchEvent(new Event(InfectEvent.EVOLUTION_COMPLETE)); doTransition(); } private function prepareTransition():void{ var _local1:BitmapData; var _local2:Bitmap; var _local3:Bitmap; _transitionLeft = new MovieClip(); _transitionRight = new MovieClip(); _local1 = new BitmapData(Settings.instance.gameWidth, Settings.instance.gameHeight); _local1.draw(this); _local2 = new Bitmap(_local1); _local3 = new Bitmap(_local1); _transitionLeft.addChild(_local2); _transitionRight.addChild(_local3); } private function infectBloodcell(_arg1:InfectGameObject):void{ var _local2:Array; var _local3:ColorMatrixFilter; _local2 = new Array(); _local2 = _local2.concat([0.3, 0.5, 0, 0, 0]); _local2 = _local2.concat([0.7, 0.5, 0, 0, 0]); _local2 = _local2.concat([0.1, 0.5, 0, 0, 0]); _local2 = _local2.concat([0, 0, 0, 1, 0]); _local3 = new ColorMatrixFilter(_local2); _arg1.sprite.filters = [_local3]; } private function killCell(_arg1:InfectGameObject):void{ var _local2:InfectTweenHelper; _local2 = new InfectTweenHelper(_arg1.sprite); if (_arg1.objectType == InfectGameObject.BLOODCELL){ dispatchEvent(new Event(InfectEvent.KILLED_BLOODCELL)); } else { if (_arg1.objectType == InfectGameObject.WBLOODCELL){ dispatchEvent(new Event(InfectEvent.KILLED_WBLOODCELL)); }; }; _local2.tweenDeath(); _local2.addEventListener(Event.COMPLETE, onKillCellComplete, false, 0, true); this._tweenHelpers.append(_local2); } private function onPopupClose(_arg1:Event=null):void{ clearPopup(); dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.POPUP_CLOSE)); if (_gameState.gameOver){ dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU)); }; } } }//package tv.mindistortion.infect.game.view
Section 208
//InfectHallOfFame (tv.mindistortion.infect.game.view.InfectHallOfFame) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; public class InfectHallOfFame extends MovieClip { private const _PAGE_SIZE:int = 3; private var _currNumItems:int;// = 0 private var _btnNext:InfectTextButton; private var _germList:Array; private var _elementStage:Sprite; private var _currPage:int;// = 0 private var _btnPrev; private var _listStage:Sprite; private var _lastPage:int; public function InfectHallOfFame(){ _currPage = 0; _currNumItems = 0; super(); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true); _germList = (SaveGameManager.instance.loadMeta("hall_of_fame") as Array); if (_germList == null){ _germList = []; }; _lastPage = (Math.ceil((_germList.length / _PAGE_SIZE)) - 1); _elementStage = new Sprite(); addChild(_elementStage); } private function addElement(_arg1:InfectSaveGame):void{ var _local2:InfectHallOfFameView; _local2 = new InfectHallOfFameView(_arg1); _local2.y = (50 + (_elementStage.numChildren * 67)); _elementStage.addChild(_local2); } public function get currNumItems():int{ return (_currNumItems); } private function clearPage():void{ while (_elementStage.numChildren > 0) { _elementStage.removeChildAt(0); }; } private function gotoPage(_arg1:int):void{ var _local2:Array; var _local3:int; clearPage(); _currPage = _arg1; if (_currPage < 1){ _btnPrev.visible = false; } else { _btnPrev.visible = true; }; if (_currPage >= _lastPage){ _btnNext.visible = false; } else { _btnNext.visible = true; }; _local2 = _germList.slice((_PAGE_SIZE * _arg1), (_PAGE_SIZE * (_arg1 + 1))); _currNumItems = _local2.length; _local3 = 0; while (_local3 < _local2.length) { addElement(new InfectSaveGame(_local2[_local3])); _local3++; }; } private function addButton(_arg1:InfectTextButton, _arg2:Number, _arg3:Number):InfectTextButton{ addChild(_arg1); _arg1.x = _arg2; _arg1.y = _arg3; _arg1.addEventListener(MouseEvent.CLICK, onMouseEventClick, false, 0, true); return (_arg1); } private function onAddedToStage(_arg1:Event):void{ var _local2:Number; var _local3:Number; removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); _local2 = parent.height; _local3 = parent.width; _btnPrev = addButton(new InfectTextButton("< previous"), 10, (_local2 - 40)); _btnNext = addButton(new InfectTextButton("next >"), (_local3 - 70), (_local2 - 40)); gotoPage(0); } private function onMouseEventClick(_arg1:MouseEvent):void{ switch (Sprite(_arg1.target).parent){ case _btnNext: gotoPage((_currPage + 1)); break; case _btnPrev: gotoPage((_currPage - 1)); break; }; } } }//package tv.mindistortion.infect.game.view
Section 209
//InfectHallOfFameView (tv.mindistortion.infect.game.view.InfectHallOfFameView) package tv.mindistortion.infect.game.view { import flash.display.*; import tv.mindistortion.infect.game.model.*; import flash.text.*; public class InfectHallOfFameView extends MovieClip { public var lblDescr:TextField; public var iconSkill:MovieClip; public var lblName; public var iconCrown; public function InfectHallOfFameView(_arg1:InfectSaveGame){ lblName.text = ((_arg1.score + " EP · stage ") + (_arg1.currLvl + 1)); lblDescr.text = (((((_arg1.killedBloodcellsTotal + " infected · ") + _arg1.killedWBloodcellsTotal) + " destroyed · ") + _arg1.spawnedViriiTotal) + " spawned"); lblDescr.appendText((((((((((("\n[ lat " + _arg1.lvlLatency) + " | rep ") + _arg1.lvlRepro) + " | dam ") + _arg1.lvlDamage) + " | imm ") + _arg1.lvlImmunity) + " | auto ") + _arg1.lvlAuto) + " ]")); if (_arg1.currLvl < 14){ iconCrown.gotoAndStop(1); } else { iconCrown.gotoAndStop(2); }; if (_arg1.score < 200){ iconSkill.gotoAndStop(1); } else { if (_arg1.score < 5000){ iconSkill.gotoAndStop(2); } else { if (_arg1.score < 20000){ iconSkill.gotoAndStop(3); } else { if (_arg1.score < 35000){ iconSkill.gotoAndStop(4); } else { if (_arg1.score < 50000){ iconSkill.gotoAndStop(5); } else { if (_arg1.score >= 70000){ iconSkill.gotoAndStop(6); }; }; }; }; }; }; } } }//package tv.mindistortion.infect.game.view
Section 210
//InfectMessage (tv.mindistortion.infect.game.view.InfectMessage) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import flash.utils.*; import fl.transitions.*; import fl.motion.easing.*; public class InfectMessage extends Sprite { private var _timer:Timer; private var _tweenScaleX; private var _tweenScaleY:Tween; public function InfectMessage(){ _tweenScaleX = new Tween(this, "scaleX", Back.easeOut, 0.5, 1, 15); _tweenScaleY = new Tween(this, "scaleY", Back.easeOut, 0.5, 1, 15); _tweenScaleX.addEventListener(TweenEvent.MOTION_FINISH, onIntroComplete, false, 0, true); } private function onIntroComplete(_arg1:TweenEvent):void{ _tweenScaleX.removeEventListener(TweenEvent.MOTION_FINISH, onIntroComplete); _tweenScaleX = null; _tweenScaleY = null; _timer = new Timer(1000, 1); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete, false, 0, true); _timer.start(); } private function onTimerComplete(_arg1:TimerEvent):void{ _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); _timer = null; dispatchEvent(new Event(Event.COMPLETE)); } } }//package tv.mindistortion.infect.game.view
Section 211
//InfectPopup (tv.mindistortion.infect.game.view.InfectPopup) package tv.mindistortion.infect.game.view { import tv.mindistortion.flux.*; import tv.mindistortion.flux.game.view.*; public class InfectPopup extends Popup implements IFluxObject { private var _choice:Boolean; private var _choiceLabels:Array; public function InfectPopup(_arg1:String, _arg2:String="", _arg3:Boolean=false, _arg4:Array=null, _arg5:Number=270, _arg6:Number=-1){ _choice = _arg3; _choiceLabels = _arg4; super(_arg1, _arg2, _arg5, _arg6); } override protected function addButtons():void{ if (!_choice){ _btnClose = new InfectTextButton("OK"); _btnClose.x = -15; _btnClose.y = ((bg.height / 2) - 30); addChild(_btnClose); } else { if (_choiceLabels == null){ _btnAbort = new InfectTextButton("Cancel"); _btnConfirm = new InfectTextButton("Confirm"); } else { _btnAbort = new InfectTextButton(_choiceLabels[0]); _btnConfirm = new InfectTextButton(_choiceLabels[1]); }; _btnAbort.x = -70; _btnAbort.y = ((bg.height / 2) - 30); addChild(_btnAbort); _btnConfirm.x = 10; _btnConfirm.y = ((bg.height / 2) - 30); addChild(_btnConfirm); }; addButtonEventListeners(); } override public function destroy():void{ super.destroy(); } } }//package tv.mindistortion.infect.game.view
Section 212
//InfectTextButton (tv.mindistortion.infect.game.view.InfectTextButton) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import flash.text.*; public class InfectTextButton extends MovieClip { private var _enabled:Boolean;// = true private var _hitArea:Sprite; public var lbl:TextField; private var _lblText:String; public function InfectTextButton(_arg1:String){ _hitArea = new Sprite(); _enabled = true; super(); _lblText = _arg1; lbl.autoSize = TextFieldAutoSize.LEFT; lbl.text = _lblText; defineHitarea(); } private function onEventRollOver(_arg1:MouseEvent):void{ if (_enabled){ lbl.textColor = 0xFFFFFF; }; } private function onEventRollOut(_arg1:MouseEvent):void{ if (_enabled){ lbl.textColor = 0; }; } public function set isEnabled(_arg1:Boolean):void{ _enabled = _arg1; if (_enabled){ lbl.alpha = 1; _hitArea.buttonMode = true; } else { lbl.alpha = 0.5; _hitArea.buttonMode = false; }; } private function defineHitarea():void{ _hitArea.graphics.beginFill(0xFFFFFF); _hitArea.graphics.drawRect(0, 0, (lbl.textWidth + 4), (lbl.textHeight + 2)); _hitArea.alpha = 0; _hitArea.buttonMode = true; addChild(_hitArea); _hitArea.addEventListener(MouseEvent.ROLL_OVER, onEventRollOver, false, 0, true); _hitArea.addEventListener(MouseEvent.ROLL_OUT, onEventRollOut, false, 0, true); } public function get isEnabled():Boolean{ return (_enabled); } } }//package tv.mindistortion.infect.game.view
Section 213
//InfectTooltip (tv.mindistortion.infect.game.view.InfectTooltip) package tv.mindistortion.infect.game.view { import tv.mindistortion.flux.game.view.*; public class InfectTooltip extends Tooltip { public function InfectTooltip(_arg1:String){ super(_arg1); } } }//package tv.mindistortion.infect.game.view
Section 214
//InfectTweenHelper (tv.mindistortion.infect.game.view.InfectTweenHelper) package tv.mindistortion.infect.game.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.game.view.*; import tv.mindistortion.flux.events.*; import fl.transitions.*; import fl.transitions.easing.*; public class InfectTweenHelper implements ITweenHelper, IEventDispatcher { private var _tween1; private var _tween2; private var _dispatcher:EventDispatcher; private var _tween3:Tween; private var _done:Boolean;// = false private var _sprite:Sprite; public function InfectTweenHelper(_arg1:Sprite){ _done = false; _dispatcher = new EventDispatcher(); super(); this._sprite = _arg1; } public function dispatchEvent(_arg1:Event):Boolean{ return (_dispatcher.dispatchEvent(_arg1)); } public function tweenDeath():void{ var _local1:int; _local1 = 10; this._tween1 = new Tween(this._sprite, "alpha", Regular.easeOut, 0.8, 0, _local1); this._tween2 = new Tween(this._sprite, "scaleX", Regular.easeOut, 1, 0.1, _local1); this._tween3 = new Tween(this._sprite, "scaleY", Regular.easeOut, 1, 0.1, _local1); this._tween1.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinish, false, 0, true); this._tween1.start(); this._tween2.start(); this._tween3.start(); } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _dispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function willTrigger(_arg1:String):Boolean{ return (_dispatcher.willTrigger(_arg1)); } public function get done():Boolean{ return (this._done); } public function hasEventListener(_arg1:String):Boolean{ return (_dispatcher.hasEventListener(_arg1)); } private function onTweenFinish(_arg1:TweenEvent):void{ this.dispatchEvent(new RefEvent(Event.COMPLETE, this._sprite)); this._sprite = null; this._tween1 = null; this._tween2 = null; this._tween3 = null; this._done = true; this._dispatcher = null; } } }//package tv.mindistortion.infect.game.view
Section 215
//InfectEvolutionSkill (tv.mindistortion.infect.menu.view.InfectEvolutionSkill) package tv.mindistortion.infect.menu.view { import flash.display.*; import flash.events.*; import flash.text.*; import flash.filters.*; public class InfectEvolutionSkill extends MovieClip { private var descr:Array; public var lblDescr; private var titles; public var lblStat:TextField; private var _isEnabled:Boolean;// = true private var _isAffordable:Boolean;// = true public var lblTitle; public var btnBuy:MovieClip; public var lblUpgrade; public var lblCost; public static const LATENCY:Number = 2; public static const LOCKED:Number = 1; public static const IMMUNITY:Number = 5; public static const DAMAGE:Number = 4; public static const CURRENCY:String = "EP"; public static const AUTO:Number = 6; public static const REPRO:Number = 3; public function InfectEvolutionSkill(_arg1:Number=0, _arg2:Number=1, _arg3:Number=0, _arg4:String=""){ _isAffordable = true; _isEnabled = true; super(); titles = ["locked", "latency", "reproduction rate", "damage", "immunity", "auto-infect"]; descr = ["........", "germs take less time to spawn", "more germs are spawned", "more damage is done to white bloodcells", "more immunity against antibiotics", "germs have a chance to auto-infect bloodcells"]; lblUpgrade.mouseEnabled = false; lblCost.mouseEnabled = false; if ((((_arg2 <= 1)) || ((_arg2 > totalFrames)))){ lblTitle.text = titles[(_arg2 - 1)]; lblCost.text = ""; lblUpgrade.text = ""; lblStat.text = ""; gotoAndStop(1); } else { lblUpgrade.text = "upgrade"; lblStat.text = _arg4; lblTitle.text = ((titles[(_arg2 - 1)] + " · level ") + _arg3); lblCost.text = ((_arg1 + " ") + CURRENCY); btnBuy.buttonMode = true; btnBuy.addEventListener(MouseEvent.ROLL_OVER, onBuyOver, false, 0, true); btnBuy.addEventListener(MouseEvent.ROLL_OUT, onBuyOut, false, 0, true); btnBuy.addEventListener(MouseEvent.CLICK, onBuyClick, false, 0, true); gotoAndStop(_arg2); }; lblDescr.text = descr[(_arg2 - 1)]; } public function set isAffordable(_arg1:Boolean):void{ if (!_arg1){ lblUpgrade.textColor = 0xDF0000; lblCost.textColor = 0xDF0000; } else { lblUpgrade.textColor = 0; lblCost.textColor = 0; }; _isAffordable = _arg1; } public function showNew():void{ var _local1:GlowFilter; _local1 = new GlowFilter(16777090, 1, 15, 15, 2, 2); btnBuy.filters = [btnBuy.filters[0], _local1]; } public function set isEnabled(_arg1:Boolean):void{ if (!_arg1){ btnBuy.mouseEnabled = false; lblCost.alpha = 0.7; lblUpgrade.alpha = 0.7; btnBuy.alpha = 0.5; } else { lblCost.alpha = 1; lblUpgrade.alpha = 1; btnBuy.mouseEnabled = true; btnBuy.alpha = 1; }; } private function onBuyClick(_arg1:MouseEvent):void{ dispatchEvent(new Event(Event.SELECT)); } private function onBuyOut(_arg1:MouseEvent):void{ if (_isAffordable){ lblUpgrade.textColor = 0; lblCost.textColor = 0; }; } private function onBuyOver(_arg1:MouseEvent):void{ if (_isAffordable){ lblUpgrade.textColor = 0xFFFFFF; lblCost.textColor = 0xFFFFFF; }; } public function update(_arg1:Number, _arg2:Number, _arg3:String=""):void{ lblTitle.text = ((titles[(currentFrame - 1)] + " · level ") + _arg2); lblStat.text = _arg3; lblCost.text = ((_arg1 + " ") + CURRENCY); if (btnBuy.filters.length > 1){ btnBuy.filters = [btnBuy.filters[0]]; }; } } }//package tv.mindistortion.infect.menu.view
Section 216
//InfectHUD (tv.mindistortion.infect.menu.view.InfectHUD) package tv.mindistortion.infect.menu.view { import flash.display.*; import flash.events.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.infect.game.view.*; import fl.transitions.*; import flash.net.*; import tv.mindistortion.flux.menu.view.*; import flash.text.*; import fl.transitions.easing.*; import flash.filters.*; public class InfectHUD extends GameHUD implements IFluxObject { public var mcProgress:MovieClip; public var lblObjective; private var _iom:InfectObjectiveModel; public var lblPoints:TextField; private var _gameState:InfectGameState; private var _progressFadeIn:Tween; private var _objectiveModel:InfectObjectiveModel; public var objectiveBase:InfectHUDObjective; public var lblTime; private var _btnMenu; private var _bevelFilter:BevelFilter; public var lblStage; private var _objectives:Array; private var _btnAbout:InfectTextButton; public function InfectHUD(_arg1:InfectGameState){ _objectives = new Array(); super(); _gameState = _arg1; mcProgress.visible = false; _bevelFilter = new BevelFilter(1, 45, 0, 1, 0xFFFFFF, 1, 1, 1, 0.5, BitmapFilterQuality.LOW, BitmapFilterType.OUTER); addMenuButtons(); } override public function destroy():void{ super.destroy(); if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); }; } private function showTime(_arg1:Number, _arg2:Boolean=true):void{ var _local3:int; var _local4:int; var _local5:String; if (_arg1 <= 0){ lblTime.text = "0:00"; return; }; _local4 = Math.floor((_arg1 / 60)); _local3 = (_arg1 - (60 * _local4)); if (_arg2){ _local5 = "survive: "; } else { _local5 = "time left: "; }; _local5 = (_local5 + String(_local4)); _local5 = (_local5 + ":"); if (_local3 < 10){ _local5 = (_local5 + "0"); }; _local5 = (_local5 + String(_local3)); lblTime.text = _local5; } private function onProgressFadeInComplete(_arg1:TweenEvent):void{ _progressFadeIn.removeEventListener(TweenEvent.MOTION_FINISH, onProgressFadeInComplete); _progressFadeIn = null; } private function onMenuClick(_arg1:MouseEvent):void{ dispatchEvent(new MenuEvent(MenuEvent.ACTION, MenuEvent.MAIN_MENU)); } private function onAboutClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.mindistortion.tv/"), "_blank"); } public function set objective(_arg1:InfectObjectiveModel):void{ var _local2:int; var _local3:InfectHUDObjective; mcProgress.visible = false; _iom = _arg1; clearObjectives(); _objectiveModel = _arg1; lblObjective.text = _arg1.type; if (_arg1.minInfect > 0){ _objectives.push(new InfectHUDObjective(_arg1.minInfect)); }; if (_arg1.minKill > 0){ _objectives.push(new InfectHUDObjective(_arg1.minKill, InfectHUDObjective.WBLOODCELL)); }; if (_arg1.minSpawn > 0){ _objectives.push(new InfectHUDObjective(_arg1.minSpawn, InfectHUDObjective.SPAWN)); }; if (_arg1.maxInfect > 0){ _objectives.push(new InfectHUDObjective(_arg1.maxInfect, InfectHUDObjective.MAXINFECT)); }; if (_arg1.maxKill > 0){ _objectives.push(new InfectHUDObjective(_arg1.maxKill, InfectHUDObjective.MAXKILLS)); }; if (_arg1.surviveTime > 0){ showTime(_iom.surviveTime); }; _local2 = 0; for each (_local3 in _objectives) { _local3.x = (200 + (_local2 * 100)); _local3.y = 399; _local3.filters = [_bevelFilter]; addChild(_local3); _local2++; }; lblStage.text = (("· stage " + (_gameState.level + 1)) + " ·"); if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, onEventEnterFrame, false, 0, true); }; } private function clearObjectives():void{ var _local1:InfectHUDObjective; for each (_local1 in _objectives) { removeChild(_local1); _local1 = null; }; _objectives = []; _objectiveModel = null; lblObjective.text = ""; lblTime.text = ""; } private function addMenuButtons():void{ _btnMenu = new InfectTextButton("exit"); _btnAbout = new InfectTextButton("mindistortion.tv"); _btnMenu.x = 13.5; _btnMenu.y = 1; _btnAbout.x = ((width - 75.5) - (_btnAbout.width / 2)); _btnAbout.y = _btnMenu.y; addChild(_btnMenu); addChild(_btnAbout); _btnMenu.addEventListener(MouseEvent.CLICK, onMenuClick, false, 0, true); _btnAbout.addEventListener(MouseEvent.CLICK, onAboutClick, false, 0, true); } private function onEventEnterFrame(_arg1:Event):void{ var _local2:InfectHUDObjective; if (_gameState.level >= InfectGameState.LAST_LEVEL){ lblPoints.text = (("· " + _gameState.stagePoints) + " EP ·"); }; for each (_local2 in _objectives) { _local2.doEnterFrame(_objectiveModel); }; if (_iom.surviveTime > 0){ showTime((_iom.surviveTime - _gameState.time)); }; if (((_gameState.gameOver) || (_gameState.levelComplete))){ if (_gameState.levelComplete){ mcProgress.visible = true; _progressFadeIn = new Tween(mcProgress, "alpha", Strong.easeIn, 0, 1, 10); _progressFadeIn.addEventListener(TweenEvent.MOTION_FINISH, onProgressFadeInComplete, false, 0, true); _progressFadeIn.start(); }; removeEventListener(Event.ENTER_FRAME, onEventEnterFrame); return; }; } } }//package tv.mindistortion.infect.menu.view
Section 217
//InfectHUDObjective (tv.mindistortion.infect.menu.view.InfectHUDObjective) package tv.mindistortion.infect.menu.view { import flash.display.*; import tv.mindistortion.infect.game.model.*; import flash.text.*; public class InfectHUDObjective extends MovieClip { public var part:Number;// = 0 private var _type:Number; private var _total:Number; public var lbl:TextField; public static const MAXKILLS:Number = 5; public static const WBLOODCELL:Number = 2; public static const MAXINFECT:Number = 4; public static const SPAWN:Number = 3; public static const BLOODCELL:Number = 1; public function InfectHUDObjective(_arg1:Number=0, _arg2:int=1){ part = 0; super(); if ((((_arg2 < 1)) || ((_arg2 > this.totalFrames)))){ _arg2 = 1; }; _total = _arg1; updateLbl(); _type = _arg2; gotoAndStop(_arg2); } private function updateLbl():void{ lbl.text = ((part + "/") + _total); } public function doEnterFrame(_arg1:InfectObjectiveModel):void{ switch (_type){ case BLOODCELL: part = _arg1.infects; break; case WBLOODCELL: part = _arg1.kills; break; case SPAWN: part = _arg1.spawns; break; case MAXINFECT: part = _arg1.infects; break; case MAXKILLS: part = _arg1.kills; break; }; if (part > _total){ part = _total; }; updateLbl(); } } }//package tv.mindistortion.infect.menu.view
Section 218
//InfectMenu (tv.mindistortion.infect.menu.view.InfectMenu) package tv.mindistortion.infect.menu.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.infect.game.view.*; import flash.media.*; import flash.net.*; import tv.mindistortion.flux.menu.view.*; import flash.text.*; import flash.filters.*; public class InfectMenu extends GameMenu implements IFluxObject { public var menuBg:MovieClip; private var _menuBtns:Sprite; private var _pauseBmp:Bitmap; private var _btnTutorial; private var _btnHallOfFame; public var mcSoundCtrl:MovieClip; private var _btnNewGame; private var _btnAchievements:InfectTextButton; private var _btnMoreGames:InfectTextButton; private var _btnContinueGame; public var lblDev:TextField; private var _submenu:InfectSubmenu; public var phSubmenu:MovieClip; private var _pauseBmpDat:BitmapData; private var _popup:InfectPopup; private var _btnHighscores; private var _btnAbout; public function InfectMenu(){ _menuBtns = new Sprite(); addChild(_menuBtns); _btnContinueGame = addButton(new InfectTextButton("continue game")); _btnContinueGame.scaleX = 1.3; _btnContinueGame.scaleY = 1.3; _btnNewGame = addButton(new InfectTextButton("new game"), 1); _btnNewGame.scaleX = 1.3; _btnNewGame.scaleY = 1.3; _btnTutorial = addButton(new InfectTextButton("how to play"), 7); _btnAchievements = addButton(new InfectTextButton("achievements"), 7); _btnHallOfFame = addButton(new InfectTextButton("hall of fame"), 7); if (((!((Settings.instance.website == Settings.KONG))) || ((Settings.instance.externalAPI == null)))){ _btnHighscores = addButton(new InfectTextButton("highscores"), 7); }; _btnAbout = addButton(new InfectTextButton("credits"), 7); _btnMoreGames = addButton(new InfectTextButton("more games"), 20); _submenu = new InfectSubmenu(); _submenu.x = phSubmenu.x; _submenu.y = phSubmenu.y; addChild(_submenu); if (SaveGameManager.instance.numSaveGames < 1){ _btnContinueGame.alpha = 0.5; _btnContinueGame.mouseChildren = false; }; updateSoundCtrl(); mcSoundCtrl.stop(); mcSoundCtrl.buttonMode = true; mcSoundCtrl.addEventListener(MouseEvent.CLICK, onSoundCtrlClick, false, 0, true); initLblDev(); } public function destroy():void{ if (_btnNewGame.hasEventListener(MouseEvent.CLICK)){ _btnNewGame.removeEventListener(MouseEvent.CLICK, newGame); }; } private function onMouseClick(_arg1:MouseEvent):void{ switch (Sprite(_arg1.target).parent){ case _btnNewGame: newGame(); break; case _btnContinueGame: continueGame(); break; case _btnAbout: showSubmenuPage(InfectSubmenu.PAGE_ABOUT); break; case _btnAchievements: showSubmenuPage(InfectSubmenu.PAGE_ACHIEVEMENTS); break; case _btnHallOfFame: showSubmenuPage(InfectSubmenu.PAGE_HALLOFFAME); break; case _btnHighscores: showSubmenuPage(InfectSubmenu.PAGE_HIGHSCORES); break; case _btnTutorial: showSubmenuPage(InfectSubmenu.PAGE_TUTORIAL); break; case _btnMoreGames: navigateToURL(new URLRequest(Settings.MORE_GAMES_URL), "_blank"); break; }; } private function blurBg():void{ var _local1:Array; _pauseBmpDat = new BitmapData(Settings.instance.gameWidth, Settings.instance.gameHeight); _pauseBmpDat.draw(this); disableMenu(); _pauseBmp = new Bitmap(_pauseBmpDat); _local1 = new Array(); _local1 = _local1.concat([1.1, 0.1, 0.1, 0, 0]); _local1 = _local1.concat([0.1, 1.1, 0.1, 0, 0]); _local1 = _local1.concat([0.1, 0.1, 1.1, 0, 0]); _local1 = _local1.concat([0, 0, 0, 1, 0]); _pauseBmp.filters = [new BlurFilter(), new ColorMatrixFilter(_local1)]; addChild(_pauseBmp); } private function clearPopup():void{ if (_popup != null){ if (contains(_popup)){ removeChild(_popup); }; }; } private function onMenuEvent(_arg1:MenuEvent):void{ switch (_arg1.action){ case MenuEvent.POPUP_ABORT: clearBg(); break; case MenuEvent.POPUP_CONFIRM: saveToHallOfFame(); super.newGame(); break; }; } private function updateSoundCtrl():void{ if (Settings.instance.music){ mcSoundCtrl.gotoAndStop(1); SoundMixer.soundTransform = new SoundTransform(1); } else { mcSoundCtrl.gotoAndStop(2); SoundMixer.soundTransform = new SoundTransform(0); }; } public function showSubmenuPage(_arg1:int):void{ if ((((_arg1 >= 0)) && ((_arg1 <= InfectSubmenu.LAST_PAGE)))){ _submenu.page = _arg1; }; } private function enableMenu():void{ _btnAbout.mouseChildren = true; _btnAchievements.mouseChildren = true; if (_btnContinueGame.alpha == 1){ _btnContinueGame.mouseChildren = true; }; _btnHallOfFame.mouseChildren = true; _btnHighscores.mouseChildren = true; _btnNewGame.mouseChildren = true; _btnTutorial.mouseChildren = true; _submenu.mouseChildren = true; } private function onSoundCtrlClick(_arg1:MouseEvent):void{ Settings.instance.music = !(Settings.instance.music); updateSoundCtrl(); } private function addButton(_arg1:InfectTextButton, _arg2:Number=0):InfectTextButton{ _arg1.x = ((menuBg.x - (menuBg.width / 2)) + 20); _arg1.y = ((((menuBg.y - (menuBg.height / 2)) + 10) + (_menuBtns.numChildren * 30)) + _arg2); _menuBtns.addChild(_arg1); _arg1.addEventListener(MouseEvent.CLICK, onMouseClick, false, 0, true); return (_arg1); } private function initLblDev():void{ var _local1:StyleSheet; _local1 = new StyleSheet(); _local1.setStyle("a", {textDecoration:"underline"}); _local1.setStyle("a:hover", {color:"#FFFFFF"}); lblDev.styleSheet = _local1; lblDev.htmlText = "<b>Developed by <a href=\"http://www.mindistortion.tv/\" target=\"_blank\">MINDistortion.tv</a></b>"; } override protected function newGame(_arg1:Event=null):void{ if (SaveGameManager.instance.numSaveGames > 0){ clearPopup(); blurBg(); _popup = new InfectPopup("Starting a new game will overwrite your current savegame. You won't able to continue playing your old game, it will, however, be saved to the Hall of Fame for great glory. Are you sure you want to start a new game?", "Overwrite current Savegame?", true); _popup.addEventListener(MenuEvent.ACTION, onMenuEvent, false, 0, true); _popup.addEventListener(Event.CLOSE, onPopUpClose, false, 0, true); _popup.x = 300; _popup.y = 210; addChild(_popup); } else { super.newGame(_arg1); }; } private function disableMenu():void{ _btnAbout.mouseChildren = false; _btnAchievements.mouseChildren = false; _btnContinueGame.mouseChildren = false; _btnHallOfFame.mouseChildren = false; if (_btnHighscores != null){ _btnHighscores.mouseChildren = false; }; _btnNewGame.mouseChildren = false; _btnTutorial.mouseChildren = false; _submenu.mouseChildren = false; } private function saveToHallOfFame():void{ var _local1:InfectSaveGame; var _local2:Array; _local1 = new InfectSaveGame(SaveGameManager.instance.loadGame()); if (_local1 == null){ throw (new Error("InfectMenu::saveToHallOfFame() failed, empty object")); }; _local2 = (SaveGameManager.instance.loadMeta("hall_of_fame") as Array); if (_local2 == null){ _local2 = []; }; _local2.push(_local1); if (_local1.currLvl >= 24){ InfectAchievements.instance.unlock(InfectAchievements.HISTORY_OF_EVOLUTION); }; _local2.sort(virCompare); SaveGameManager.instance.saveMeta(_local2, "hall_of_fame"); SaveGameManager.instance.deleteGame(); } private function virCompare(_arg1:Object, _arg2:Object):int{ if (_arg1.score > _arg2.score){ return (-1); }; if (_arg1.score < _arg2.score){ return (1); }; return (0); } public function showSubmitPage(_arg1:SecureNumber, _arg2:String, _arg3:String):void{ _submenu.showSubmitPage(_arg1, _arg2, _arg3); } private function onPopUpClose(_arg1:Event):void{ removeChild(_popup); _popup = null; } private function clearBg():void{ removeChild(_pauseBmp); enableMenu(); } } }//package tv.mindistortion.infect.menu.view
Section 219
//InfectSubmenu (tv.mindistortion.infect.menu.view.InfectSubmenu) package tv.mindistortion.infect.menu.view { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import tv.mindistortion.infect.game.view.*; import fl.transitions.*; import fl.transitions.easing.*; public class InfectSubmenu extends Sprite implements IFluxObject { private var _content:MovieClip; public var bg:MovieClip; private var _tweenAlpha:Tween; private var _btnClose:InfectTextButton; private var _page:int;// = -1 public static const PAGE_HALLOFFAME:int = 4; public static const PAGE_TUTORIAL:int = 1; public static const PAGE_HIGHSCORES:int = 3; public static const PAGE_ACHIEVEMENTS:int = 2; public static const LAST_PAGE:int = 4; public static const PAGE_ABOUT:int = 0; public function InfectSubmenu(){ _page = -1; super(); visible = false; _btnClose = new InfectTextButton("close"); _btnClose.x = (bg.width - 50); _btnClose.y = 5; addChild(_btnClose); _btnClose.addEventListener(MouseEvent.CLICK, onCloseClick, false, 0, true); } private function onOutroFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onOutroFinished); _tweenAlpha = null; visible = false; } public function set page(_arg1:int):void{ if (_page < 0){ visible = true; _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 0, 1, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinished, false, 0, true); }; _page = _arg1; switch (_page){ case PAGE_TUTORIAL: showContent(new FlaSubTutorial()); break; case PAGE_ABOUT: showContent(new FlaSubAbout()); break; case PAGE_ACHIEVEMENTS: showContent(new FlaSubAchievements()); break; case PAGE_HIGHSCORES: if (Settings.instance.website == Settings.MD){ trace("md highscores"); showContent(new FlaSubHighscores()); } else { trace("misc highscores"); showContent(new FlaSubHighscoresMisc()); }; break; case PAGE_HALLOFFAME: showContent(new FlaSubHallOfFame()); break; }; } private function onTweenFinished(_arg1:TweenEvent):void{ _tweenAlpha.removeEventListener(TweenEvent.MOTION_FINISH, onTweenFinished); _tweenAlpha = null; } public function get page():int{ return (_page); } private function onCloseClick(_arg1:MouseEvent):void{ _page = -1; _tweenAlpha = new Tween(this, "alpha", Regular.easeOut, 1, 0, 15); _tweenAlpha.addEventListener(TweenEvent.MOTION_FINISH, onOutroFinished, false, 0, true); } public function showSubmitPage(_arg1:SecureNumber, _arg2:String, _arg3:String):void{ var _local4:ScoreboardView; page = PAGE_HIGHSCORES; if (_content.getChildByName("scoreboard") != null){ _local4 = (_content.getChildByName("scoreboard") as ScoreboardView); _local4.confURL = "http://www.mindistortion.tv/mdsb/api/scoreboard.php"; _local4.submitWebsite = Settings.instance.website; _local4.showWebsite = Settings.instance.website; _local4.submitScore(_arg1.val, _arg2, _arg3); }; } private function showContent(_arg1:MovieClip):void{ var _local2:ScoreboardView; if (_content != null){ if (contains(_content)){ removeChild(_content); }; }; _content = _arg1; _content.x = 7; _content.y = 6; if (_content.getChildByName("scoreboard") != null){ _local2 = (_content.getChildByName("scoreboard") as ScoreboardView); _local2.submitWebsite = Settings.instance.website; _local2.showWebsite = Settings.instance.website; _local2.confURL = "http://www.mindistortion.tv/mdsb/api/scoreboard.php"; }; addChild(_content); } public function destroy():void{ } } }//package tv.mindistortion.infect.menu.view
Section 220
//Main (tv.mindistortion.infect.Main) package tv.mindistortion.infect { import flash.display.*; import flash.events.*; import tv.mindistortion.flux.meta.*; import tv.mindistortion.infect.game.model.*; import tv.mindistortion.flux.*; import tv.mindistortion.flux.security.*; import tv.mindistortion.flux.events.*; import tv.mindistortion.infect.game.view.*; import tv.mindistortion.flux.sound.*; import fl.transitions.*; import tv.mindistortion.infect.menu.view.*; import fl.transitions.easing.*; import tv.mindistortion.infect.game.controller.*; public class Main extends MovieClip { private var _mainMenu:InfectMenu; private var _transitionLeft:MovieClip; private var _achievementPopup:AchievementPopup; private var _gameView:InfectGameView; private var _doTransition:Boolean; private var devMode:Boolean;// = true private var _gameState:InfectGameState; private var _numTry:int;// = 1 private var _loopMixer:LoopMixer; private var _transitionRight:MovieClip; private var _gameController:InfectGameController; private var _soundController:SoundController; private static var _instance:Main = new (Main); ; public function Main(){ _transitionLeft = new MovieClip(); _transitionRight = new MovieClip(); devMode = true; _numTry = 1; super(); if (_instance){ throw (new Error("tv.mindistortion.infect.Main is singleton class, please use Main.instance")); }; Settings.instance.gameWidth = 600; Settings.instance.gameHeight = 420; InfectAchievements.instance.addEventListener(MenuEvent.ACTION, onAchievementUnlocked, false, 0, true); _soundController = new SoundController(); if (devMode){ devInit(); }; gotoMainMenu(); } private function menuTransition():void{ var _local1:BitmapData; var _local2:Bitmap; var _local3:Bitmap; _local1 = new BitmapData(Settings.instance.gameWidth, Settings.instance.gameHeight); _local1.draw(this); _local2 = new Bitmap(_local1); _local3 = new Bitmap(_local1); _transitionLeft.addChild(_local2); _transitionRight.addChild(_local3); _doTransition = true; } private function onAchievementPopupComplete(_arg1:Event):void{ _achievementPopup.removeEventListener(Event.COMPLETE, onAchievementPopupComplete); removeChild(_achievementPopup); _achievementPopup = null; } private function gotoMainMenu():void{ if (_gameView != null){ if (this.contains(_gameView)){ menuTransition(); }; }; clearGame(); if (_mainMenu != null){ if (contains(_mainMenu)){ return; }; }; _mainMenu = new InfectMenu(); addChild(this._mainMenu); _mainMenu.addEventListener(MenuEvent.ACTION, onMenuEvent, false, 0, true); if (_doTransition){ startTransition(); }; _soundController.fadeOut(); _soundController.fadeIn(new FlaMenuLoop1()); } private function startTransition():void{ addChild(_transitionLeft); addChild(_transitionRight); TransitionManager.start(_transitionLeft, {type:Wipe, direction:Transition.OUT, duration:1, easing:Strong.easeOut, startPoint:4}); TransitionManager.start(_transitionRight, {type:Wipe, direction:Transition.OUT, duration:1, easing:Strong.easeOut, startPoint:6}); _doTransition = false; } private function onLoopMixerQuit(_arg1:Event):void{ _loopMixer.removeEventListener(Event.COMPLETE, onLoopMixerQuit); if (_gameController == null){ _loopMixer.destroy(); _loopMixer = null; }; } private function onMenuEvent(_arg1:MenuEvent):void{ var _local2:SecureNumber; var _local3:String; var _local4:String; switch (_arg1.action){ case MenuEvent.NEW_GAME: this.newGame(); break; case MenuEvent.MAIN_MENU: gotoMainMenu(); break; case MenuEvent.CONTINUE_GAME: newGame(true); break; case MenuEvent.SUBMIT_HIGHSCORE: _local2 = new SecureNumber(_gameState.score); _local3 = _gameState.playerName; if (_local3 == null){ _local3 = ""; }; _local4 = _gameState.virusId; gotoMainMenu(); _mainMenu.showSubmitPage(_local2, _local3, _local4); break; }; } private function clearMenu():void{ if (_mainMenu == null){ menuTransition(); _numTry++; if (_numTry == 10){ InfectAchievements.instance.unlock(InfectAchievements.ONE_MORE_TRY); }; return; }; if (this.contains(this._mainMenu)){ _numTry = 1; menuTransition(); this.removeChild(this._mainMenu); _mainMenu.removeEventListener(MenuEvent.ACTION, onMenuEvent); _mainMenu = null; }; } private function newGame(_arg1:Boolean=false):void{ _soundController.fadeOut(); clearMenu(); clearGame(); if (_loopMixer == null){ _loopMixer = new LoopMixer([new FlaMainLoop1(), new FlaMainLoop3(), new FlaMainLoop2(), new FlaMainLoop4(), new FlaMainLoop5(), new FlaMainLoop6(), new FlaMainLoop7(), new FlaLSDIntroLoop(), new FlaSurviveLoop()]); }; _gameState = new InfectGameState(); _gameView = new InfectGameView(this._gameState); _gameController = new InfectGameController(this._gameView, this._gameState, _loopMixer, _soundController); _gameView.addEventListener(MenuEvent.ACTION, onMenuEvent, false, 0, true); addChild(_gameView); if (_arg1){ _gameController.loadGame(); } else { _gameController.initGame(); }; if (_doTransition){ startTransition(); }; } private function devInit():void{ var _local1:InfectSaveGame; _local1 = new InfectSaveGame(); _local1.stagePoints = 14350; _local1.spawnedViriiTotal = 123; _local1.skillPoints = 14350; _local1.score = 10850; _local1.lvlRepro = 1; _local1.lvlLatency = 1; _local1.lvlImmunity = 1; _local1.lvlDamage = 1; _local1.lvlAuto = 1; _local1.killedWBloodcellsTotal = 300; _local1.killedBloodcellsTotal = 500; _local1.currLvl = 14; } private function onAchievementUnlocked(_arg1:MenuEvent):void{ trace(("unlocked " + _arg1.action)); if (_achievementPopup == null){ _achievementPopup = new AchievementPopup(_arg1.action, InfectAchievements.instance.achievementIcons[_arg1.action]); }; if (!contains(_achievementPopup)){ addChild(_achievementPopup); _achievementPopup.x = (Settings.instance.gameWidth - 290); _achievementPopup.y = (Settings.instance.gameHeight - 107); _achievementPopup.addEventListener(Event.COMPLETE, onAchievementPopupComplete, false, 0, true); }; } private function clearGame():void{ if (_gameView == null){ return; }; if (contains(_gameView)){ removeChild(_gameView); }; if (_gameView.hasEventListener(MenuEvent.ACTION)){ _gameView.removeEventListener(MenuEvent.ACTION, onMenuEvent); }; _gameController.destroy(); _gameController = null; _gameView = null; _gameState = null; _loopMixer.addEventListener(Event.COMPLETE, onLoopMixerQuit, false, 0, true); _loopMixer.fadeOut(); } public static function get instance():Main{ return (_instance); } } }//package tv.mindistortion.infect
Section 221
//CellRenderer_disabledSkin (CellRenderer_disabledSkin) package { import flash.display.*; public dynamic class CellRenderer_disabledSkin extends MovieClip { } }//package
Section 222
//CellRenderer_downSkin (CellRenderer_downSkin) package { import flash.display.*; public dynamic class CellRenderer_downSkin extends MovieClip { } }//package
Section 223
//CellRenderer_overSkin (CellRenderer_overSkin) package { import flash.display.*; public dynamic class CellRenderer_overSkin extends MovieClip { } }//package
Section 224
//CellRenderer_selectedDisabledSkin (CellRenderer_selectedDisabledSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDisabledSkin extends MovieClip { } }//package
Section 225
//CellRenderer_selectedDownSkin (CellRenderer_selectedDownSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedDownSkin extends MovieClip { } }//package
Section 226
//CellRenderer_selectedOverSkin (CellRenderer_selectedOverSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedOverSkin extends MovieClip { } }//package
Section 227
//CellRenderer_selectedUpSkin (CellRenderer_selectedUpSkin) package { import flash.display.*; public dynamic class CellRenderer_selectedUpSkin extends MovieClip { } }//package
Section 228
//CellRenderer_upSkin (CellRenderer_upSkin) package { import flash.display.*; public dynamic class CellRenderer_upSkin extends MovieClip { } }//package
Section 229
//ColumnStretch_cursor (ColumnStretch_cursor) package { import flash.display.*; public dynamic class ColumnStretch_cursor extends MovieClip { } }//package
Section 230
//ComboBox_disabledSkin (ComboBox_disabledSkin) package { import flash.display.*; public dynamic class ComboBox_disabledSkin extends MovieClip { } }//package
Section 231
//ComboBox_downSkin (ComboBox_downSkin) package { import flash.display.*; public dynamic class ComboBox_downSkin extends MovieClip { } }//package
Section 232
//ComboBox_overSkin (ComboBox_overSkin) package { import flash.display.*; public dynamic class ComboBox_overSkin extends MovieClip { } }//package
Section 233
//ComboBox_upSkin (ComboBox_upSkin) package { import flash.display.*; public dynamic class ComboBox_upSkin extends MovieClip { } }//package
Section 234
//DataGrid_skin (DataGrid_skin) package { import flash.display.*; public dynamic class DataGrid_skin extends MovieClip { } }//package
Section 235
//DataGridCellEditor_skin (DataGridCellEditor_skin) package { import flash.display.*; public dynamic class DataGridCellEditor_skin extends MovieClip { } }//package
Section 236
//FlaAchievementAutopilot (FlaAchievementAutopilot) package { import flash.display.*; public dynamic class FlaAchievementAutopilot extends MovieClip { } }//package
Section 237
//FlaAchievementBabySteps (FlaAchievementBabySteps) package { import flash.display.*; public dynamic class FlaAchievementBabySteps extends MovieClip { } }//package
Section 238
//FlaAchievementBiohazard (FlaAchievementBiohazard) package { import flash.display.*; public dynamic class FlaAchievementBiohazard extends MovieClip { } }//package
Section 239
//FlaAchievementBlackDeath (FlaAchievementBlackDeath) package { import flash.display.*; public dynamic class FlaAchievementBlackDeath extends MovieClip { } }//package
Section 240
//FlaAchievementCantTouchThis (FlaAchievementCantTouchThis) package { import flash.display.*; public dynamic class FlaAchievementCantTouchThis extends MovieClip { } }//package
Section 241
//FlaAchievementDefense (FlaAchievementDefense) package { import flash.display.*; public dynamic class FlaAchievementDefense extends MovieClip { } }//package
Section 242
//FlaAchievementEvolution (FlaAchievementEvolution) package { import flash.display.*; public dynamic class FlaAchievementEvolution extends MovieClip { } }//package
Section 243
//FlaAchievementF7U12 (FlaAchievementF7U12) package { import flash.display.*; public dynamic class FlaAchievementF7U12 extends MovieClip { } }//package
Section 244
//FlaAchievementFirstBlood (FlaAchievementFirstBlood) package { import flash.display.*; public dynamic class FlaAchievementFirstBlood extends MovieClip { } }//package
Section 245
//FlaAchievementHistoryOfEvolution (FlaAchievementHistoryOfEvolution) package { import flash.display.*; public dynamic class FlaAchievementHistoryOfEvolution extends MovieClip { } }//package
Section 246
//FlaAchievementIwillSurvive (FlaAchievementIwillSurvive) package { import flash.display.*; public dynamic class FlaAchievementIwillSurvive extends MovieClip { } }//package
Section 247
//FlaAchievementLocked (FlaAchievementLocked) package { import flash.display.*; public dynamic class FlaAchievementLocked extends MovieClip { } }//package
Section 248
//FlaAchievementMeMyselfAndI (FlaAchievementMeMyselfAndI) package { import flash.display.*; public dynamic class FlaAchievementMeMyselfAndI extends MovieClip { } }//package
Section 249
//FlaAchievementOffense (FlaAchievementOffense) package { import flash.display.*; public dynamic class FlaAchievementOffense extends MovieClip { } }//package
Section 250
//FlaAchievementOneMoreTry (FlaAchievementOneMoreTry) package { import flash.display.*; public dynamic class FlaAchievementOneMoreTry extends MovieClip { } }//package
Section 251
//FlaAchievementPandemic (FlaAchievementPandemic) package { import flash.display.*; public dynamic class FlaAchievementPandemic extends MovieClip { } }//package
Section 252
//FlaAchievementResistanceIsFutile (FlaAchievementResistanceIsFutile) package { import flash.display.*; public dynamic class FlaAchievementResistanceIsFutile extends MovieClip { } }//package
Section 253
//FlaAchievementSeriouslyLethal (FlaAchievementSeriouslyLethal) package { import flash.display.*; public dynamic class FlaAchievementSeriouslyLethal extends MovieClip { } }//package
Section 254
//FlaAchievementTheVirusHasBeenSpread (FlaAchievementTheVirusHasBeenSpread) package { import flash.display.*; public dynamic class FlaAchievementTheVirusHasBeenSpread extends MovieClip { } }//package
Section 255
//FlaAchievementThisIsMadness (FlaAchievementThisIsMadness) package { import flash.display.*; public dynamic class FlaAchievementThisIsMadness extends MovieClip { } }//package
Section 256
//FlaAchievementTimeIsMoney (FlaAchievementTimeIsMoney) package { import flash.display.*; public dynamic class FlaAchievementTimeIsMoney extends MovieClip { } }//package
Section 257
//FlaAchievementUnstoppable (FlaAchievementUnstoppable) package { import flash.display.*; public dynamic class FlaAchievementUnstoppable extends MovieClip { } }//package
Section 258
//FlaAchievementWoah (FlaAchievementWoah) package { import flash.display.*; public dynamic class FlaAchievementWoah extends MovieClip { } }//package
Section 259
//FlaAchievementZombieOutbreak (FlaAchievementZombieOutbreak) package { import flash.display.*; public dynamic class FlaAchievementZombieOutbreak extends MovieClip { } }//package
Section 260
//FlaAntibiotic (FlaAntibiotic) package { import flash.display.*; public dynamic class FlaAntibiotic extends Sprite { } }//package
Section 261
//FlaBG (FlaBG) package { import flash.display.*; public dynamic class FlaBG extends Sprite { } }//package
Section 262
//FlaBlackBloodcell (FlaBlackBloodcell) package { import flash.display.*; public dynamic class FlaBlackBloodcell extends Sprite { } }//package
Section 263
//FlaBloodcell (FlaBloodcell) package { import flash.display.*; public dynamic class FlaBloodcell extends Sprite { public var shader:MovieClip; } }//package
Section 264
//FlaCampaignEnding (FlaCampaignEnding) package { import flash.display.*; import flash.events.*; public dynamic class FlaCampaignEnding extends MovieClip { public function FlaCampaignEnding(){ addFrameScript(374, frame375); } function frame375(){ dispatchEvent(new Event(Event.COMPLETE)); stop(); } } }//package
Section 265
//FlaCampaignEndingNoSound (FlaCampaignEndingNoSound) package { import flash.display.*; import flash.events.*; public dynamic class FlaCampaignEndingNoSound extends MovieClip { public function FlaCampaignEndingNoSound(){ addFrameScript(374, frame375); } function frame375(){ dispatchEvent(new Event(Event.COMPLETE)); stop(); } } }//package
Section 266
//FlaFxHitwhite1 (FlaFxHitwhite1) package { import flash.media.*; public dynamic class FlaFxHitwhite1 extends Sound { } }//package
Section 267
//FlaFxHitwhite2 (FlaFxHitwhite2) package { import flash.media.*; public dynamic class FlaFxHitwhite2 extends Sound { } }//package
Section 268
//FlaFxHitwhite3 (FlaFxHitwhite3) package { import flash.media.*; public dynamic class FlaFxHitwhite3 extends Sound { } }//package
Section 269
//FlaFxHitwhite4 (FlaFxHitwhite4) package { import flash.media.*; public dynamic class FlaFxHitwhite4 extends Sound { } }//package
Section 270
//FlaFxInfect1 (FlaFxInfect1) package { import flash.media.*; public dynamic class FlaFxInfect1 extends Sound { } }//package
Section 271
//FlaFxInfect2 (FlaFxInfect2) package { import flash.media.*; public dynamic class FlaFxInfect2 extends Sound { } }//package
Section 272
//FlaFxInfect3 (FlaFxInfect3) package { import flash.media.*; public dynamic class FlaFxInfect3 extends Sound { } }//package
Section 273
//FlaFxSpawn1 (FlaFxSpawn1) package { import flash.media.*; public dynamic class FlaFxSpawn1 extends Sound { } }//package
Section 274
//FlaFxSpawn2 (FlaFxSpawn2) package { import flash.media.*; public dynamic class FlaFxSpawn2 extends Sound { } }//package
Section 275
//FlaFxSpawn3 (FlaFxSpawn3) package { import flash.media.*; public dynamic class FlaFxSpawn3 extends Sound { } }//package
Section 276
//FlaFxSpawn4 (FlaFxSpawn4) package { import flash.media.*; public dynamic class FlaFxSpawn4 extends Sound { } }//package
Section 277
//FlaLevelComplete (FlaLevelComplete) package { import tv.mindistortion.infect.game.view.*; public dynamic class FlaLevelComplete extends InfectMessage { } }//package
Section 278
//FlaLSDIntroLoop (FlaLSDIntroLoop) package { import flash.media.*; public dynamic class FlaLSDIntroLoop extends Sound { } }//package
Section 279
//FlaMainEnd (FlaMainEnd) package { import flash.media.*; public dynamic class FlaMainEnd extends Sound { } }//package
Section 280
//FlaMainLoop1 (FlaMainLoop1) package { import flash.media.*; public dynamic class FlaMainLoop1 extends Sound { } }//package
Section 281
//FlaMainLoop2 (FlaMainLoop2) package { import flash.media.*; public dynamic class FlaMainLoop2 extends Sound { } }//package
Section 282
//FlaMainLoop3 (FlaMainLoop3) package { import flash.media.*; public dynamic class FlaMainLoop3 extends Sound { } }//package
Section 283
//FlaMainLoop4 (FlaMainLoop4) package { import flash.media.*; public dynamic class FlaMainLoop4 extends Sound { } }//package
Section 284
//FlaMainLoop5 (FlaMainLoop5) package { import flash.media.*; public dynamic class FlaMainLoop5 extends Sound { } }//package
Section 285
//FlaMainLoop6 (FlaMainLoop6) package { import flash.media.*; public dynamic class FlaMainLoop6 extends Sound { } }//package
Section 286
//FlaMainLoop7 (FlaMainLoop7) package { import flash.media.*; public dynamic class FlaMainLoop7 extends Sound { } }//package
Section 287
//FlaMenuLoop1 (FlaMenuLoop1) package { import flash.media.*; public dynamic class FlaMenuLoop1 extends Sound { } }//package
Section 288
//FlaMenuLoop3 (FlaMenuLoop3) package { import flash.media.*; public dynamic class FlaMenuLoop3 extends Sound { } }//package
Section 289
//FlaSubAbout (FlaSubAbout) package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; public dynamic class FlaSubAbout extends MovieClip { public var btnMD:SimpleButton; public var css:StyleSheet; public var lblMusic:TextField; public var lblDeveloper:TextField; public function FlaSubAbout(){ addFrameScript(0, frame1); } function frame1(){ css = new StyleSheet(); css.setStyle("a", {textDecoration:"underline"}); css.setStyle("a:hover", {color:"#FFFFFF"}); lblDeveloper.styleSheet = css; lblDeveloper.htmlText = "Developed & Designed by <a href=\"http://www.manuelfallmann.com/\" target=\"_blank\">Manuel Fallmann</a>"; lblMusic.styleSheet = css; lblMusic.htmlText = "Music by <a href=\"http://nubbinownz.newgrounds.com/\" target=\"_blank\">August Sargenti</a> (menus), <a href=\"http://umen.newgrounds.com/\" target=\"_blank\">Andrzej Korniow</a> (main theme), <a href=\"http://invisibleobserver.newgrounds.com/\" target=\"_blank\">InvisibleObserver</a> (survive), <a href=\"http://pushbar.newgrounds.com/\" target=\"_blank\">Pushbar</a> (fever) and <a href=\"http://td6d.newgrounds.com/\" target=\"_blank\">td6d</a> (ending)"; btnMD.addEventListener(MouseEvent.CLICK, onEventClick, false, 0, true); } public function onEventClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.mindistortion.tv/"), "_blank"); } } }//package
Section 290
//FlaSubAchievements (FlaSubAchievements) package { import flash.display.*; import tv.mindistortion.infect.game.view.*; public dynamic class FlaSubAchievements extends MovieClip { public var achievementList:InfectAchievementList; public function FlaSubAchievements(){ addFrameScript(0, frame1); } function frame1(){ achievementList = new InfectAchievementList(); addChild(achievementList); } } }//package
Section 291
//FlaSubHallOfFame (FlaSubHallOfFame) package { import flash.display.*; import tv.mindistortion.infect.game.view.*; import flash.text.*; public dynamic class FlaSubHallOfFame extends MovieClip { public var lblEmpty:TextField; public var view:InfectHallOfFame; public function FlaSubHallOfFame(){ addFrameScript(0, frame1); } function frame1(){ view = new InfectHallOfFame(); addChild(view); if (view.currNumItems > 0){ lblEmpty.visible = false; }; } } }//package
Section 292
//FlaSubHighscores (FlaSubHighscores) package { import flash.display.*; public dynamic class FlaSubHighscores extends MovieClip { public var scoreboard:Scoreboard; } }//package
Section 293
//FlaSubHighscoresMisc (FlaSubHighscoresMisc) package { import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; public dynamic class FlaSubHighscoresMisc extends MovieClip { public var btnMD:SimpleButton; public var css:StyleSheet; public var lblDeveloper:TextField; public function FlaSubHighscoresMisc(){ addFrameScript(0, frame1); } function frame1(){ css = new StyleSheet(); css.setStyle("a", {textDecoration:"underline"}); css.setStyle("a:hover", {color:"#FFFFFF"}); lblDeveloper.styleSheet = css; lblDeveloper.htmlText = "Sorry, there's no highscore table available for this website. You can play for the Highscore <a href=\"http://www.mindistortion.tv/games/infect2\" target=\"_blank\">on MINDistortion.tv</a> though."; btnMD.addEventListener(MouseEvent.CLICK, onEventClick, false, 0, true); } public function onEventClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.mindistortion.tv/"), "_blank"); } } }//package
Section 294
//FlaSubTutorial (FlaSubTutorial) package { import flash.display.*; public dynamic class FlaSubTutorial extends MovieClip { } }//package
Section 295
//FlaSurviveLoop (FlaSurviveLoop) package { import flash.media.*; public dynamic class FlaSurviveLoop extends Sound { } }//package
Section 296
//FlaSurviveTrack (FlaSurviveTrack) package { import flash.media.*; public dynamic class FlaSurviveTrack extends Sound { } }//package
Section 297
//FlaTrackLSD (FlaTrackLSD) package { import flash.media.*; public dynamic class FlaTrackLSD extends Sound { } }//package
Section 298
//FlaWhiteBloodcell (FlaWhiteBloodcell) package { import flash.display.*; public dynamic class FlaWhiteBloodcell extends Sprite { } }//package
Section 299
//FlaVirus (FlaVirus) package { import flash.display.*; public dynamic class FlaVirus extends Sprite { } }//package
Section 300
//focusRectSkin (focusRectSkin) package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package
Section 301
//HeaderRenderer_disabledSkin (HeaderRenderer_disabledSkin) package { import flash.display.*; public dynamic class HeaderRenderer_disabledSkin extends MovieClip { } }//package
Section 302
//HeaderRenderer_downSkin (HeaderRenderer_downSkin) package { import flash.display.*; public dynamic class HeaderRenderer_downSkin extends MovieClip { } }//package
Section 303
//HeaderRenderer_overSkin (HeaderRenderer_overSkin) package { import flash.display.*; public dynamic class HeaderRenderer_overSkin extends MovieClip { } }//package
Section 304
//HeaderRenderer_selectedDisabledSkin (HeaderRenderer_selectedDisabledSkin) package { import flash.display.*; public dynamic class HeaderRenderer_selectedDisabledSkin extends MovieClip { } }//package
Section 305
//HeaderRenderer_selectedDownSkin (HeaderRenderer_selectedDownSkin) package { import flash.display.*; public dynamic class HeaderRenderer_selectedDownSkin extends MovieClip { } }//package
Section 306
//HeaderRenderer_selectedOverSkin (HeaderRenderer_selectedOverSkin) package { import flash.display.*; public dynamic class HeaderRenderer_selectedOverSkin extends MovieClip { } }//package
Section 307
//HeaderRenderer_selectedUpSkin (HeaderRenderer_selectedUpSkin) package { import flash.display.*; public dynamic class HeaderRenderer_selectedUpSkin extends MovieClip { } }//package
Section 308
//HeaderRenderer_upSkin (HeaderRenderer_upSkin) package { import flash.display.*; public dynamic class HeaderRenderer_upSkin extends MovieClip { } }//package
Section 309
//HeaderSortArrow_ascIcon (HeaderSortArrow_ascIcon) package { import flash.display.*; public dynamic class HeaderSortArrow_ascIcon extends MovieClip { } }//package
Section 310
//HeaderSortArrow_descIcon (HeaderSortArrow_descIcon) package { import flash.display.*; public dynamic class HeaderSortArrow_descIcon extends MovieClip { } }//package
Section 311
//List_skin (List_skin) package { import flash.display.*; public dynamic class List_skin extends MovieClip { } }//package
Section 312
//NewgroundsAPIAsset_big_popup_background (NewgroundsAPIAsset_big_popup_background) package { import flash.display.*; public dynamic class NewgroundsAPIAsset_big_popup_background extends MovieClip { public var tl:MovieClip; public var br:MovieClip; public var tr:MovieClip; public var l:MovieClip; public var shadow:MovieClip; public var r:MovieClip; public var b:MovieClip; public var bl:MovieClip; public var t:MovieClip; public var c:MovieClip; } }//package
Section 313
//Scoreboard (Scoreboard) package { import tv.mindistortion.flux.meta.*; import fl.data.*; public dynamic class Scoreboard extends ScoreboardView { public var j2; public var collObj1:DataProvider; public var j1; public var collObj2:DataProvider; public var collProp1:Object; public var collProp2:Object; public var itemObj2:SimpleCollectionItem; public var itemObj1:SimpleCollectionItem; public var collProps2:Array; public var collProps1:Array; public var i1:int; public var i2:int; public function Scoreboard(){ __setProp_dataGridHighscore_Scoreboard_table_1(); __setProp_cbMe_Scoreboard_myfilter_1(); __setProp_cbDate_Scoreboard_datefilter_1(); } function __setProp_dataGridHighscore_Scoreboard_table_1(){ try { dataGridHighscore["componentInspectorSetting"] = true; } catch(e:Error) { }; dataGridHighscore.allowMultipleSelection = false; dataGridHighscore.editable = false; dataGridHighscore.headerHeight = 25; dataGridHighscore.horizontalLineScrollSize = 4; dataGridHighscore.horizontalPageScrollSize = 0; dataGridHighscore.horizontalScrollPolicy = "off"; dataGridHighscore.resizableColumns = false; dataGridHighscore.rowHeight = 20; dataGridHighscore.showHeaders = true; dataGridHighscore.sortableColumns = false; dataGridHighscore.verticalLineScrollSize = 4; dataGridHighscore.verticalPageScrollSize = 0; dataGridHighscore.verticalScrollPolicy = "auto"; try { dataGridHighscore["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_cbDate_Scoreboard_datefilter_1(){ try { cbDate["componentInspectorSetting"] = true; } catch(e:Error) { }; collObj1 = new DataProvider(); collProps1 = [{label:"past day", data:"day"}, {label:"past week", data:"week"}, {label:"past month", data:"month"}, {label:"all time", data:"all"}]; i1 = 0; while (i1 < collProps1.length) { itemObj1 = new SimpleCollectionItem(); collProp1 = collProps1[i1]; for (j1 in collProp1) { itemObj1[j1] = collProp1[j1]; }; collObj1.addItem(itemObj1); i1++; }; cbDate.dataProvider = collObj1; cbDate.editable = false; cbDate.enabled = true; cbDate.prompt = ""; cbDate.restrict = ""; cbDate.rowCount = 5; cbDate.visible = true; try { cbDate["componentInspectorSetting"] = false; } catch(e:Error) { }; } function __setProp_cbMe_Scoreboard_myfilter_1(){ try { cbMe["componentInspectorSetting"] = true; } catch(e:Error) { }; collObj2 = new DataProvider(); collProps2 = [{label:"me", data:"me"}, {label:"everyone", data:"everyone"}]; i2 = 0; while (i2 < collProps2.length) { itemObj2 = new SimpleCollectionItem(); collProp2 = collProps2[i2]; for (j2 in collProp2) { itemObj2[j2] = collProp2[j2]; }; collObj2.addItem(itemObj2); i2++; }; cbMe.dataProvider = collObj2; cbMe.editable = false; cbMe.enabled = true; cbMe.prompt = ""; cbMe.restrict = ""; cbMe.rowCount = 5; cbMe.visible = true; try { cbMe["componentInspectorSetting"] = false; } catch(e:Error) { }; } } }//package
Section 314
//Screenager (Screenager) package { import flash.display.*; public dynamic class Screenager extends MovieClip { } }//package
Section 315
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_disabledSkin extends MovieClip { } }//package
Section 316
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_downSkin extends MovieClip { } }//package
Section 317
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_overSkin extends MovieClip { } }//package
Section 318
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin) package { import flash.display.*; public dynamic class ScrollArrowDown_upSkin extends MovieClip { } }//package
Section 319
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_disabledSkin extends MovieClip { } }//package
Section 320
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_downSkin extends MovieClip { } }//package
Section 321
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_overSkin extends MovieClip { } }//package
Section 322
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin) package { import flash.display.*; public dynamic class ScrollArrowUp_upSkin extends MovieClip { } }//package
Section 323
//ScrollBar_thumbIcon (ScrollBar_thumbIcon) package { import flash.display.*; public dynamic class ScrollBar_thumbIcon extends MovieClip { } }//package
Section 324
//ScrollThumb_downSkin (ScrollThumb_downSkin) package { import flash.display.*; public dynamic class ScrollThumb_downSkin extends MovieClip { } }//package
Section 325
//ScrollThumb_overSkin (ScrollThumb_overSkin) package { import flash.display.*; public dynamic class ScrollThumb_overSkin extends MovieClip { } }//package
Section 326
//ScrollThumb_upSkin (ScrollThumb_upSkin) package { import flash.display.*; public dynamic class ScrollThumb_upSkin extends MovieClip { } }//package
Section 327
//ScrollTrack_skin (ScrollTrack_skin) package { import flash.display.*; public dynamic class ScrollTrack_skin extends MovieClip { } }//package
Section 328
//TextInput_disabledSkin (TextInput_disabledSkin) package { import flash.display.*; public dynamic class TextInput_disabledSkin extends MovieClip { } }//package
Section 329
//TextInput_upSkin (TextInput_upSkin) package { import flash.display.*; public dynamic class TextInput_upSkin extends MovieClip { } }//package

Library Items

Symbol 1 Sound {FlaFxSpawn4}
Symbol 2 Sound {FlaFxSpawn3}
Symbol 3 Sound {FlaFxSpawn2}
Symbol 4 Sound {FlaFxSpawn1}
Symbol 5 Sound {FlaMainEnd}
Symbol 6 Sound {FlaFxInfect3}
Symbol 7 Sound {FlaFxInfect2}
Symbol 8 Sound {FlaFxInfect1}
Symbol 9 Sound {FlaFxHitwhite4}
Symbol 10 Sound {FlaFxHitwhite3}
Symbol 11 Sound {FlaFxHitwhite2}
Symbol 12 Sound {FlaFxHitwhite1}
Symbol 13 Sound {FlaMainLoop3}Used by:500
Symbol 14 GraphicUsed by:15
Symbol 15 MovieClipUses:14Used by:17 19 21 23 25 27
Symbol 16 GraphicUsed by:17 311
Symbol 17 MovieClip {main_fla.iconSkill00_65}Uses:15 16Used by:28 323
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClip {main_fla.iconSkill0_197}Uses:15 18Used by:28
Symbol 20 GraphicUsed by:21
Symbol 21 MovieClip {main_fla.iconSkill1_198}Uses:15 20Used by:28
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClip {main_fla.iconSkill2_57}Uses:15 22Used by:28 264 284 287 315 330 334
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClip {main_fla.iconSkill3_199}Uses:15 24Used by:28
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClip {main_fla.iconSkill4_68}Uses:15 26Used by:28 321
Symbol 28 MovieClipUses:17 19 21 23 25 27Used by:37
Symbol 29 GraphicUsed by:32
Symbol 30 GraphicUsed by:31
Symbol 31 MovieClipUses:30Used by:32 292
Symbol 32 MovieClipUses:29 31Used by:37
Symbol 33 FontUsed by:34 40 73 74 75 76 77 83 99 103 107 116 217 218 219 220 221 225 230 231 234 235 236 237 238 239 333 338 339 340 341 342 449 485 486
Symbol 34 EditableTextUses:33Used by:37
Symbol 35 FontUsed by:36 41 78 108 111 112 116 121 226 228 230 231 232 234 236 237 238 239 240 332 425 426 448 467 468 469 471 479 480 483
Symbol 36 EditableTextUses:35Used by:37
Symbol 37 MovieClip {tv.mindistortion.infect.game.view.InfectHallOfFameView}Uses:28 32 34 36
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:38Used by:42 337
Symbol 40 EditableTextUses:33Used by:42
Symbol 41 EditableTextUses:35Used by:42
Symbol 42 MovieClip {tv.mindistortion.flux.meta.AchievementView}Uses:39 40 41
Symbol 43 BitmapUsed by:44
Symbol 44 GraphicUses:43Used by:45
Symbol 45 MovieClip {FlaVirus}Uses:44
Symbol 46 ShapeTweeningUsed by:49
Symbol 47 ShapeTweeningUsed by:49
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClipUses:46 47 48Used by:56 84
Symbol 50 ShapeTweeningUsed by:55
Symbol 51 GraphicUsed by:55
Symbol 52 ShapeTweeningUsed by:55
Symbol 53 ShapeTweeningUsed by:55
Symbol 54 GraphicUsed by:55
Symbol 55 MovieClipUses:50 51 52 53 54Used by:56 84
Symbol 56 MovieClip {main_fla.Bloodcell_192}Uses:49 55Used by:57
Symbol 57 MovieClip {FlaBloodcell}Uses:56
Symbol 58 ShapeTweeningUsed by:64
Symbol 59 GraphicUsed by:64
Symbol 60 ShapeTweeningUsed by:64
Symbol 61 ShapeTweeningUsed by:64
Symbol 62 ShapeTweeningUsed by:64
Symbol 63 GraphicUsed by:64
Symbol 64 MovieClipUses:58 59 60 61 62 63Used by:65 67 86
Symbol 65 MovieClipUses:64Used by:66
Symbol 66 MovieClip {FlaBlackBloodcell}Uses:65
Symbol 67 MovieClipUses:64Used by:68
Symbol 68 MovieClip {FlaWhiteBloodcell}Uses:67
Symbol 69 BitmapUsed by:70
Symbol 70 GraphicUses:69Used by:71
Symbol 71 MovieClip {FlaAntibiotic}Uses:70
Symbol 72 GraphicUsed by:82
Symbol 73 TextUses:33Used by:82
Symbol 74 EditableTextUses:33Used by:82
Symbol 75 EditableTextUses:33Used by:82
Symbol 76 EditableTextUses:33Used by:82
Symbol 77 EditableTextUses:33Used by:82
Symbol 78 TextUses:35Used by:80
Symbol 79 GraphicUsed by:80
Symbol 80 MovieClipUses:78 79Used by:82
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD}Uses:72 73 74 75 76 77 80 81
Symbol 83 EditableTextUses:33Used by:98
Symbol 84 MovieClip {main_fla.BloodcellStatic_37}Uses:49 55Used by:85
Symbol 85 MovieClipUses:84Used by:98 263 329
Symbol 86 MovieClip {main_fla.WhiteBloodcellstatic_79}Uses:64Used by:87 294
Symbol 87 MovieClipUses:86Used by:98
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClipUses:88Used by:94 282
Symbol 90 GraphicUsed by:91
Symbol 91 MovieClipUses:90Used by:94 282
Symbol 92 GraphicUsed by:93
Symbol 93 MovieClipUses:92Used by:94
Symbol 94 MovieClipUses:89 91 93Used by:95 248 292 314 329
Symbol 95 MovieClipUses:94Used by:98 286
Symbol 96 GraphicUsed by:97
Symbol 97 MovieClipUses:96Used by:98
Symbol 98 MovieClip {tv.mindistortion.infect.menu.view.InfectHUDObjective}Uses:83 85 87 95 97
Symbol 99 EditableTextUses:33Used by:100
Symbol 100 MovieClip {tv.mindistortion.infect.game.view.InfectTextButton}Uses:99
Symbol 101 GraphicUsed by:102
Symbol 102 MovieClipUses:101Used by:104
Symbol 103 EditableTextUses:33Used by:104
Symbol 104 MovieClip {tv.mindistortion.infect.game.view.InfectTooltip}Uses:102 103
Symbol 105 GraphicUsed by:106 222
Symbol 106 MovieClipUses:105Used by:109 115 222 334 343 431 450 487
Symbol 107 EditableTextUses:33Used by:109
Symbol 108 EditableTextUses:35Used by:109
Symbol 109 MovieClip {tv.mindistortion.infect.game.view.InfectPopup}Uses:106 107 108
Symbol 110 GraphicUsed by:114
Symbol 111 TextUses:35Used by:114
Symbol 112 TextUses:35Used by:114
Symbol 113 GraphicUsed by:114 430 470 481
Symbol 114 MovieClip {FlaLevelComplete}Uses:110 111 112 113
Symbol 115 MovieClip {tv.mindistortion.infect.menu.view.InfectSubmenu}Uses:106
Symbol 116 EditableTextUses:33 35Used by:123
Symbol 117 GraphicUsed by:120
Symbol 118 GraphicUsed by:120
Symbol 119 GraphicUsed by:120
Symbol 120 ButtonUses:117 118 119Used by:123 233
Symbol 121 TextUses:35Used by:123 224
Symbol 122 GraphicUsed by:123 224 227 229 233 241
Symbol 123 MovieClip {FlaSubHighscoresMisc}Uses:116 120 121 122
Symbol 124 GraphicUsed by:125
Symbol 125 MovieClipUses:124Used by:200 203 207 216
Symbol 126 MovieClip {fl.core.ComponentShim}Used by:142 163 197 200 203 207 216
Symbol 127 GraphicUsed by:128
Symbol 128 MovieClip {HeaderRenderer_upSkin}Uses:127Used by:142
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClip {HeaderRenderer_disabledSkin}Uses:129Used by:142
Symbol 131 GraphicUsed by:132 137
Symbol 132 MovieClip {HeaderRenderer_downSkin}Uses:131Used by:142
Symbol 133 GraphicUsed by:134
Symbol 134 MovieClip {HeaderRenderer_overSkin}Uses:133Used by:142
Symbol 135 GraphicUsed by:136
Symbol 136 MovieClip {HeaderRenderer_selectedDisabledSkin}Uses:135Used by:142
Symbol 137 MovieClip {HeaderRenderer_selectedDownSkin}Uses:131Used by:142
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {HeaderRenderer_selectedOverSkin}Uses:138Used by:142
Symbol 140 GraphicUsed by:141
Symbol 141 MovieClip {HeaderRenderer_selectedUpSkin}Uses:140Used by:142
Symbol 142 MovieClip {fl.controls.dataGridClasses.HeaderRenderer}Uses:128 126 130 132 134 136 137 139 141Used by:200
Symbol 143 GraphicUsed by:144 173 176 180 190
Symbol 144 MovieClip {HeaderSortArrow_ascIcon}Uses:143Used by:200
Symbol 145 GraphicUsed by:146
Symbol 146 MovieClip {HeaderSortArrow_descIcon}Uses:145Used by:200
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClip {CellRenderer_upSkin}Uses:147Used by:163
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClip {CellRenderer_disabledSkin}Uses:149Used by:163
Symbol 151 GraphicUsed by:152
Symbol 152 MovieClip {CellRenderer_downSkin}Uses:151Used by:163
Symbol 153 GraphicUsed by:154
Symbol 154 MovieClip {CellRenderer_overSkin}Uses:153Used by:163
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClip {CellRenderer_selectedDisabledSkin}Uses:155Used by:163
Symbol 157 GraphicUsed by:158
Symbol 158 MovieClip {CellRenderer_selectedDownSkin}Uses:157Used by:163
Symbol 159 GraphicUsed by:160
Symbol 160 MovieClip {CellRenderer_selectedOverSkin}Uses:159Used by:163
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClip {CellRenderer_selectedUpSkin}Uses:161Used by:163
Symbol 163 MovieClip {fl.controls.listClasses.CellRenderer}Uses:148 126 150 152 154 156 158 160 162Used by:200 203
Symbol 164 GraphicUsed by:165
Symbol 165 MovieClip {focusRectSkin}Uses:164Used by:197 200 203 207 216
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClip {ColumnStretch_cursor}Uses:166Used by:200
Symbol 168 GraphicUsed by:169
Symbol 169 MovieClip {DataGrid_skin}Uses:168Used by:200
Symbol 170 GraphicUsed by:171
Symbol 171 MovieClip {ScrollTrack_skin}Uses:170Used by:197
Symbol 172 GraphicUsed by:174
Symbol 173 MovieClipUses:143Used by:174 184 186
Symbol 174 MovieClip {ScrollArrowUp_downSkin}Uses:172 173Used by:197
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClip {ScrollArrowDown_downSkin}Uses:175 143Used by:197
Symbol 177 GraphicUsed by:178
Symbol 178 MovieClip {ScrollThumb_downSkin}Uses:177Used by:197
Symbol 179 GraphicUsed by:180
Symbol 180 MovieClip {ScrollArrowDown_overSkin}Uses:179 143Used by:197
Symbol 181 GraphicUsed by:182
Symbol 182 MovieClip {ScrollThumb_overSkin}Uses:181Used by:197
Symbol 183 GraphicUsed by:184
Symbol 184 MovieClip {ScrollArrowUp_overSkin}Uses:183 173Used by:197
Symbol 185 GraphicUsed by:186
Symbol 186 MovieClip {ScrollArrowUp_upSkin}Uses:185 173Used by:197
Symbol 187 GraphicUsed by:188
Symbol 188 MovieClip {ScrollThumb_upSkin}Uses:187Used by:197
Symbol 189 GraphicUsed by:190
Symbol 190 MovieClip {ScrollArrowDown_upSkin}Uses:189 143Used by:197
Symbol 191 GraphicUsed by:192
Symbol 192 MovieClip {ScrollArrowDown_disabledSkin}Uses:191Used by:197
Symbol 193 GraphicUsed by:194
Symbol 194 MovieClip {ScrollArrowUp_disabledSkin}Uses:193Used by:197
Symbol 195 GraphicUsed by:196
Symbol 196 MovieClip {ScrollBar_thumbIcon}Uses:195Used by:197
Symbol 197 MovieClip {fl.controls.ScrollBar}Uses:171 126 165 174 176 178 180 182 184 186 188 190 192 194 196Used by:200 203
Symbol 198 GraphicUsed by:199 206
Symbol 199 MovieClip {DataGridCellEditor_skin}Uses:198Used by:200
Symbol 200 MovieClip {fl.controls.DataGrid}Uses:125 126 142 144 146 163 165 167 169 197 199Used by:223
Symbol 201 GraphicUsed by:202
Symbol 202 MovieClip {List_skin}Uses:201Used by:203
Symbol 203 MovieClip {fl.controls.List}Uses:125 126 202 163 165 197Used by:216
Symbol 204 GraphicUsed by:205
Symbol 205 MovieClip {TextInput_disabledSkin}Uses:204Used by:207
Symbol 206 MovieClip {TextInput_upSkin}Uses:198Used by:207
Symbol 207 MovieClip {fl.controls.TextInput}Uses:125 126 205 206 165Used by:216
Symbol 208 GraphicUsed by:209
Symbol 209 MovieClip {ComboBox_upSkin}Uses:208Used by:216
Symbol 210 GraphicUsed by:211
Symbol 211 MovieClip {ComboBox_disabledSkin}Uses:210Used by:216
Symbol 212 GraphicUsed by:213
Symbol 213 MovieClip {ComboBox_overSkin}Uses:212Used by:216
Symbol 214 GraphicUsed by:215
Symbol 215 MovieClip {ComboBox_downSkin}Uses:214Used by:216
Symbol 216 MovieClip {fl.controls.ComboBox}Uses:125 126 165 209 211 213 215 207 203Used by:223
Symbol 217 EditableTextUses:33Used by:223
Symbol 218 EditableTextUses:33Used by:223
Symbol 219 EditableTextUses:33Used by:223
Symbol 220 TextUses:33Used by:222
Symbol 221 TextUses:33Used by:222
Symbol 222 ButtonUses:106 220 221 105Used by:223
Symbol 223 MovieClip {Scoreboard}Uses:216 200 217 218 219 222Used by:224
Symbol 224 MovieClip {FlaSubHighscores}Uses:223 121 122
Symbol 225 EditableTextUses:33Used by:227
Symbol 226 TextUses:35Used by:227
Symbol 227 MovieClip {FlaSubHallOfFame}Uses:225 226 122
Symbol 228 TextUses:35Used by:229
Symbol 229 MovieClip {FlaSubAchievements}Uses:122 228
Symbol 230 EditableTextUses:33 35Used by:233
Symbol 231 EditableTextUses:33 35Used by:233
Symbol 232 TextUses:35Used by:233
Symbol 233 MovieClip {FlaSubAbout}Uses:122 230 231 232 120
Symbol 234 TextUses:35 33Used by:241
Symbol 235 TextUses:33Used by:241
Symbol 236 TextUses:35 33Used by:241
Symbol 237 TextUses:35 33Used by:241
Symbol 238 TextUses:35 33Used by:241
Symbol 239 TextUses:35 33Used by:241
Symbol 240 TextUses:35Used by:241
Symbol 241 MovieClip {FlaSubTutorial}Uses:234 235 236 237 238 239 240 122
Symbol 242 GraphicUsed by:243
Symbol 243 MovieClipUses:242Used by:246
Symbol 244 GraphicUsed by:245
Symbol 245 MovieClipUses:244Used by:246
Symbol 246 MovieClip {main_fla.iconZombieOutbreak_112}Uses:243 245Used by:247
Symbol 247 MovieClip {FlaAchievementZombieOutbreak}Uses:246
Symbol 248 MovieClipUses:94Used by:249
Symbol 249 MovieClip {FlaAchievementWoah}Uses:248
Symbol 250 GraphicUsed by:251
Symbol 251 MovieClipUses:250Used by:252
Symbol 252 MovieClip {FlaAchievementUnstoppable}Uses:251
Symbol 253 GraphicUsed by:254
Symbol 254 MovieClipUses:253Used by:259
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClipUses:255Used by:259
Symbol 257 GraphicUsed by:258
Symbol 258 MovieClipUses:257Used by:259
Symbol 259 MovieClipUses:254 256 258Used by:260
Symbol 260 MovieClip {FlaAchievementTheVirusHasBeenSpread}Uses:259
Symbol 261 GraphicUsed by:262
Symbol 262 MovieClipUses:261Used by:263
Symbol 263 MovieClipUses:85 262Used by:264 343
Symbol 264 MovieClipUses:23 263Used by:265
Symbol 265 MovieClip {FlaAchievementTimeIsMoney}Uses:264
Symbol 266 GraphicUsed by:267
Symbol 267 MovieClipUses:266Used by:268
Symbol 268 MovieClip {FlaAchievementThisIsMadness}Uses:267
Symbol 269 GraphicUsed by:270
Symbol 270 MovieClipUses:269Used by:271
Symbol 271 MovieClip {FlaAchievementSeriouslyLethal}Uses:270
Symbol 272 GraphicUsed by:273
Symbol 273 MovieClipUses:272Used by:274
Symbol 274 MovieClip {FlaAchievementResistanceIsFutile}Uses:273
Symbol 275 GraphicUsed by:276
Symbol 276 MovieClipUses:275Used by:277
Symbol 277 MovieClip {FlaAchievementPandemic}Uses:276
Symbol 278 GraphicUsed by:279
Symbol 279 MovieClipUses:278Used by:280
Symbol 280 MovieClip {FlaAchievementOneMoreTry}Uses:279
Symbol 281 GraphicUsed by:282
Symbol 282 MovieClipUses:89 91 281Used by:283
Symbol 283 MovieClipUses:282Used by:284 343
Symbol 284 MovieClipUses:23 283Used by:285
Symbol 285 MovieClip {FlaAchievementOffense}Uses:284
Symbol 286 MovieClipUses:95Used by:287 343
Symbol 287 MovieClipUses:23 286Used by:288
Symbol 288 MovieClip {FlaAchievementMeMyselfAndI}Uses:287
Symbol 289 GraphicUsed by:290
Symbol 290 MovieClipUses:289Used by:291
Symbol 291 MovieClip {FlaAchievementIwillSurvive}Uses:290
Symbol 292 MovieClipUses:94 31Used by:293
Symbol 293 MovieClip {FlaAchievementHistoryOfEvolution}Uses:292
Symbol 294 MovieClipUses:86Used by:295
Symbol 295 MovieClip {FlaAchievementFirstBlood}Uses:294
Symbol 296 BitmapUsed by:297
Symbol 297 GraphicUses:296Used by:298
Symbol 298 MovieClipUses:297Used by:299
Symbol 299 MovieClip {FlaAchievementF7U12}Uses:298
Symbol 300 GraphicUsed by:310
Symbol 301 GraphicUsed by:302
Symbol 302 MovieClipUses:301Used by:310
Symbol 303 GraphicUsed by:310
Symbol 304 GraphicUsed by:305
Symbol 305 MovieClipUses:304Used by:310
Symbol 306 GraphicUsed by:310
Symbol 307 GraphicUsed by:308
Symbol 308 MovieClipUses:307Used by:310
Symbol 309 GraphicUsed by:310
Symbol 310 MovieClipUses:300 302 303 305 306 308 309Used by:311 487
Symbol 311 MovieClipUses:16 310Used by:312
Symbol 312 MovieClip {FlaAchievementEvolution}Uses:311
Symbol 313 GraphicUsed by:314
Symbol 314 MovieClipUses:94 313Used by:315 343
Symbol 315 MovieClipUses:23 314Used by:316
Symbol 316 MovieClip {FlaAchievementDefense}Uses:315
Symbol 317 BitmapUsed by:318
Symbol 318 GraphicUses:317Used by:319
Symbol 319 MovieClipUses:318Used by:320
Symbol 320 MovieClip {FlaAchievementCantTouchThis}Uses:319
Symbol 321 MovieClipUses:27Used by:322
Symbol 322 MovieClip {FlaAchievementBlackDeath}Uses:321
Symbol 323 MovieClipUses:17Used by:324
Symbol 324 MovieClip {FlaAchievementBiohazard}Uses:323
Symbol 325 GraphicUsed by:326
Symbol 326 MovieClipUses:325Used by:327
Symbol 327 MovieClip {FlaAchievementBabySteps}Uses:326
Symbol 328 GraphicUsed by:329
Symbol 329 MovieClipUses:85 328 94Used by:330 343
Symbol 330 MovieClipUses:23 329Used by:331
Symbol 331 MovieClip {FlaAchievementAutopilot}Uses:330
Symbol 332 TextUses:35Used by:334
Symbol 333 EditableTextUses:33Used by:334
Symbol 334 MovieClip {tv.mindistortion.flux.meta.AchievementPopup}Uses:106 332 333 23
Symbol 335 GraphicUsed by:336
Symbol 336 MovieClip {Screenager}Uses:335
Symbol 337 MovieClip {FlaAchievementLocked}Uses:39Used by:343
Symbol 338 EditableTextUses:33Used by:343
Symbol 339 EditableTextUses:33Used by:343
Symbol 340 EditableTextUses:33Used by:343
Symbol 341 EditableTextUses:33Used by:343
Symbol 342 EditableTextUses:33Used by:343
Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill}Uses:106 338 339 340 341 342 337 263 286 283 314 329Used by:487
Symbol 344 BitmapUsed by:345
Symbol 345 GraphicUses:344Used by:346
Symbol 346 MovieClip {FlaBG}Uses:345Used by:424 450 452 475 477 487
Symbol 347 GraphicUsed by:361
Symbol 348 GraphicUsed by:349
Symbol 349 MovieClipUses:348Used by:361
Symbol 350 GraphicUsed by:361
Symbol 351 GraphicUsed by:354
Symbol 352 GraphicUsed by:354
Symbol 353 GraphicUsed by:354
Symbol 354 ButtonUses:351 352 353Used by:361
Symbol 355 BitmapUsed by:356
Symbol 356 GraphicUses:355Used by:361
Symbol 357 GraphicUsed by:361
Symbol 358 GraphicUsed by:361
Symbol 359 GraphicUsed by:360 369
Symbol 360 MovieClip {FlashAd_fla.NewgroundsAPIAsset_Load_Indicator_5}Uses:359Used by:361
Symbol 361 MovieClip {FlashAd_fla.NewgroundsAPIAsset_FlashAd_Container_2}Uses:347 349 350 354 356 357 358 360Used by:362
Symbol 362 MovieClip {com.newgrounds.components.FlashAd}Uses:361Used by:Timeline
Symbol 363 GraphicUsed by:371 373 422
Symbol 364 GraphicUsed by:371 373 422
Symbol 365 GraphicUsed by:371 373 422
Symbol 366 GraphicUsed by:371 373 422
Symbol 367 FontUsed by:368 370 372 376 379 381 412 413 419 420
Symbol 368 TextUses:367Used by:422
Symbol 369 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Load_Indicator_3}Uses:359Used by:371
Symbol 370 TextUses:367Used by:371
Symbol 371 MovieClip {APIConnector_fla.NewgroundsAPIAsset_ConnectingAPI_2}Uses:363 364 365 366 369 370Used by:422
Symbol 372 TextUses:367Used by:373
Symbol 373 MovieClip {APIConnector_fla.NewgroundsAPIAsset_API_Conencted_4}Uses:363 364 365 366 372Used by:422
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClipUses:374Used by:380 384
Symbol 376 TextUses:367Used by:380
Symbol 377 BitmapUsed by:378
Symbol 378 GraphicUses:377Used by:380 384
Symbol 379 TextUses:367Used by:380
Symbol 380 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5}Uses:375 376 378 379Used by:422
Symbol 381 TextUses:367Used by:384
Symbol 382 FontUsed by:383 418 421
Symbol 383 TextUses:382Used by:384
Symbol 384 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7}Uses:375 381 383 378Used by:422
Symbol 385 GraphicUsed by:386 422
Symbol 386 MovieClipUses:385Used by:422
Symbol 387 GraphicUsed by:388
Symbol 388 MovieClipUses:387Used by:407
Symbol 389 GraphicUsed by:390
Symbol 390 MovieClipUses:389Used by:407
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClipUses:391Used by:407
Symbol 393 GraphicUsed by:394
Symbol 394 MovieClipUses:393Used by:407
Symbol 395 GraphicUsed by:396
Symbol 396 MovieClipUses:395Used by:407
Symbol 397 GraphicUsed by:398
Symbol 398 MovieClipUses:397Used by:407
Symbol 399 GraphicUsed by:400
Symbol 400 MovieClipUses:399Used by:407
Symbol 401 GraphicUsed by:402
Symbol 402 MovieClipUses:401Used by:407
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClipUses:403Used by:407
Symbol 405 GraphicUsed by:406
Symbol 406 MovieClipUses:405Used by:407
Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background}Uses:388 390 392 394 396 398 400 402 404 406Used by:422
Symbol 408 GraphicUsed by:422
Symbol 409 GraphicUsed by:411
Symbol 410 GraphicUsed by:411
Symbol 411 ButtonUses:409 410Used by:422
Symbol 412 TextUses:367Used by:422
Symbol 413 TextUses:367Used by:422
Symbol 414 GraphicUsed by:417
Symbol 415 GraphicUsed by:417
Symbol 416 GraphicUsed by:417
Symbol 417 ButtonUses:414 415 416Used by:422
Symbol 418 TextUses:382Used by:422
Symbol 419 TextUses:367Used by:422
Symbol 420 TextUses:367Used by:422
Symbol 421 TextUses:382Used by:422
Symbol 422 MovieClip {com.newgrounds.components.APIConnector}Uses:363 364 365 366 368 371 373 380 384 386 407 408 411 412 413 417 418 385 419 420 421Used by:Timeline
Symbol 423 GraphicUsed by:424 450
Symbol 424 MovieClipUses:346 423Used by:Timeline
Symbol 425 TextUses:35Used by:430
Symbol 426 TextUses:35Used by:430
Symbol 427 GraphicUsed by:428
Symbol 428 MovieClipUses:427Used by:430
Symbol 429 GraphicUsed by:430
Symbol 430 MovieClipUses:425 426 113 428 429Used by:450  Timeline
Symbol 431 MovieClip {tv.mindistortion.flux.menu.view.Preloader}Uses:106Used by:Timeline
Symbol 432 GraphicUsed by:433
Symbol 433 MovieClipUses:432Used by:Timeline
Symbol 434 GraphicUsed by:437
Symbol 435 GraphicUsed by:437
Symbol 436 GraphicUsed by:437
Symbol 437 MovieClipUses:434 435 436Used by:443
Symbol 438 GraphicUsed by:442
Symbol 439 GraphicUsed by:442
Symbol 440 GraphicUsed by:442
Symbol 441 GraphicUsed by:442
Symbol 442 MovieClipUses:438 439 440 441Used by:443
Symbol 443 MovieClipUses:437 442Used by:444
Symbol 444 MovieClipUses:443Used by:450
Symbol 445 GraphicUsed by:447
Symbol 446 GraphicUsed by:447
Symbol 447 MovieClipUses:445 446Used by:450
Symbol 448 EditableTextUses:35Used by:450
Symbol 449 TextUses:33Used by:450
Symbol 450 MovieClip {tv.mindistortion.infect.menu.view.InfectMenu}Uses:346 423 444 106 447 448 449 430Used by:500
Symbol 451 GraphicUsed by:475 477
Symbol 452 MovieClip {main_fla._zoom1_16}Uses:346Used by:475 477
Symbol 453 BitmapUsed by:454
Symbol 454 GraphicUses:453Used by:455
Symbol 455 MovieClipUses:454Used by:461
Symbol 456 ShapeTweeningUsed by:461
Symbol 457 BitmapUsed by:458
Symbol 458 GraphicUses:457Used by:459
Symbol 459 MovieClipUses:458Used by:461 475 477
Symbol 460 GraphicUsed by:461
Symbol 461 MovieClip {main_fla._zoom2_17}Uses:455 456 459 460Used by:475 477
Symbol 462 GraphicUsed by:463
Symbol 463 MovieClipUses:462Used by:475 477
Symbol 464 GraphicUsed by:465
Symbol 465 MovieClipUses:464Used by:466 475 477
Symbol 466 MovieClipUses:465Used by:475 477
Symbol 467 TextUses:35Used by:470
Symbol 468 TextUses:35Used by:470
Symbol 469 TextUses:35Used by:470
Symbol 470 MovieClipUses:467 468 113 469Used by:475 477
Symbol 471 TextUses:35Used by:472
Symbol 472 MovieClipUses:471Used by:475 477
Symbol 473 ShapeTweeningUsed by:475
Symbol 474 GraphicUsed by:475 477
Symbol 475 MovieClip {FlaCampaignEnding}Uses:346 451 452 461 463 466 470 472 459 465 473 474 SS1Used by:500
Symbol 476 ShapeTweeningUsed by:477
Symbol 477 MovieClip {FlaCampaignEndingNoSound}Uses:346 451 452 461 463 466 470 472 459 465 476 474Used by:500
Symbol 478 GraphicUsed by:487
Symbol 479 TextUses:35Used by:481
Symbol 480 TextUses:35Used by:481
Symbol 481 MovieClipUses:479 480 113Used by:487
Symbol 482 GraphicUsed by:484
Symbol 483 TextUses:35Used by:484
Symbol 484 MovieClipUses:482 483Used by:487
Symbol 485 EditableTextUses:33Used by:487
Symbol 486 EditableTextUses:33Used by:487
Symbol 487 MovieClip {tv.mindistortion.infect.game.view.InfectEvolutionMenu}Uses:346 478 310 106 481 343 484 485 486Used by:500
Symbol 488 Sound {FlaSurviveTrack}Used by:500
Symbol 489 Sound {FlaSurviveLoop}Used by:500
Symbol 490 Sound {FlaMenuLoop3}Used by:500
Symbol 491 Sound {FlaMenuLoop1}Used by:500
Symbol 492 Sound {FlaMainLoop7}Used by:500
Symbol 493 Sound {FlaMainLoop6}Used by:500
Symbol 494 Sound {FlaMainLoop5}Used by:500
Symbol 495 Sound {FlaMainLoop4}Used by:500
Symbol 496 Sound {FlaMainLoop2}Used by:500
Symbol 497 Sound {FlaMainLoop1}Used by:500
Symbol 498 Sound {FlaLSDIntroLoop}Used by:500
Symbol 499 Sound {FlaTrackLSD}Used by:500
Symbol 500 MovieClip {main_fla._loadContainer_8}Uses:450 475 477 487 488 489 490 491 492 493 494 495 13 496 497 498 499Used by:Timeline
Symbol 501 GraphicUsed by:507
Symbol 502 GraphicUsed by:503
Symbol 503 MovieClipUses:502Used by:505
Symbol 504 GraphicUsed by:505
Symbol 505 MovieClipUses:503 504Used by:507
Symbol 506 GraphicUsed by:507
Symbol 507 MovieClip {main_fla.MINDistortion_52}Uses:501 505 506 SS2Used by:Timeline
Streaming Sound 1Used by:Symbol 475 MovieClip {FlaCampaignEnding}
Streaming Sound 2Used by:Symbol 507 MovieClip {main_fla.MINDistortion_52}

Instance Names

"apiConnector"Frame 1Symbol 422 MovieClip {com.newgrounds.components.APIConnector}
"__id2_"Frame 1Symbol 362 MovieClip {com.newgrounds.components.FlashAd}
"bhlogo"Symbol 17 MovieClip {main_fla.iconSkill00_65} Frame 1Symbol 15 MovieClip
"bhlogo"Symbol 19 MovieClip {main_fla.iconSkill0_197} Frame 1Symbol 15 MovieClip
"bhlogo"Symbol 21 MovieClip {main_fla.iconSkill1_198} Frame 1Symbol 15 MovieClip
"bhlogo"Symbol 23 MovieClip {main_fla.iconSkill2_57} Frame 1Symbol 15 MovieClip
"bhlogo"Symbol 25 MovieClip {main_fla.iconSkill3_199} Frame 1Symbol 15 MovieClip
"bhlogo"Symbol 27 MovieClip {main_fla.iconSkill4_68} Frame 1Symbol 15 MovieClip
"iconSkill"Symbol 37 MovieClip {tv.mindistortion.infect.game.view.InfectHallOfFameView} Frame 1Symbol 28 MovieClip
"iconCrown"Symbol 37 MovieClip {tv.mindistortion.infect.game.view.InfectHallOfFameView} Frame 1Symbol 32 MovieClip
"lblDescr"Symbol 37 MovieClip {tv.mindistortion.infect.game.view.InfectHallOfFameView} Frame 1Symbol 34 EditableText
"lblName"Symbol 37 MovieClip {tv.mindistortion.infect.game.view.InfectHallOfFameView} Frame 1Symbol 36 EditableText
"spritePh"Symbol 42 MovieClip {tv.mindistortion.flux.meta.AchievementView} Frame 1Symbol 39 MovieClip
"lblDescr"Symbol 42 MovieClip {tv.mindistortion.flux.meta.AchievementView} Frame 1Symbol 40 EditableText
"lblName"Symbol 42 MovieClip {tv.mindistortion.flux.meta.AchievementView} Frame 1Symbol 41 EditableText
"cell"Symbol 56 MovieClip {main_fla.Bloodcell_192} Frame 1Symbol 49 MovieClip
"shader"Symbol 57 MovieClip {FlaBloodcell} Frame 1Symbol 56 MovieClip {main_fla.Bloodcell_192}
"lblStage"Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD} Frame 1Symbol 74 EditableText
"lblPoints"Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD} Frame 1Symbol 75 EditableText
"lblObjective"Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD} Frame 1Symbol 76 EditableText
"lblTime"Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD} Frame 1Symbol 77 EditableText
"mcProgress"Symbol 82 MovieClip {tv.mindistortion.infect.menu.view.InfectHUD} Frame 1Symbol 80 MovieClip
"bloodcell"Symbol 84 MovieClip {main_fla.BloodcellStatic_37} Frame 1Symbol 49 MovieClip
"highlight"Symbol 84 MovieClip {main_fla.BloodcellStatic_37} Frame 1Symbol 55 MovieClip
"wb"Symbol 86 MovieClip {main_fla.WhiteBloodcellstatic_79} Frame 1Symbol 64 MovieClip
"lbl"Symbol 98 MovieClip {tv.mindistortion.infect.menu.view.InfectHUDObjective} Frame 1Symbol 83 EditableText
"lbl"Symbol 100 MovieClip {tv.mindistortion.infect.game.view.InfectTextButton} Frame 1Symbol 99 EditableText
"bg"Symbol 104 MovieClip {tv.mindistortion.infect.game.view.InfectTooltip} Frame 1Symbol 102 MovieClip
"lblMsg"Symbol 104 MovieClip {tv.mindistortion.infect.game.view.InfectTooltip} Frame 1Symbol 103 EditableText
"bg"Symbol 109 MovieClip {tv.mindistortion.infect.game.view.InfectPopup} Frame 1Symbol 106 MovieClip
"lblMsg"Symbol 109 MovieClip {tv.mindistortion.infect.game.view.InfectPopup} Frame 1Symbol 107 EditableText
"lblTitle"Symbol 109 MovieClip {tv.mindistortion.infect.game.view.InfectPopup} Frame 1Symbol 108 EditableText
"bg"Symbol 115 MovieClip {tv.mindistortion.infect.menu.view.InfectSubmenu} Frame 1Symbol 106 MovieClip
"lblDeveloper"Symbol 123 MovieClip {FlaSubHighscoresMisc} Frame 1Symbol 116 EditableText
"btnMD"Symbol 123 MovieClip {FlaSubHighscoresMisc} Frame 1Symbol 120 Button
"cbDate"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 216 MovieClip {fl.controls.ComboBox}
"cbMe"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 216 MovieClip {fl.controls.ComboBox}
"dataGridHighscore"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 200 MovieClip {fl.controls.DataGrid}
"lblStatus"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 217 EditableText
"lblName"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 218 EditableText
"inputName"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 219 EditableText
"btnSubmit"Symbol 223 MovieClip {Scoreboard} Frame 1Symbol 222 Button
"scoreboard"Symbol 224 MovieClip {FlaSubHighscores} Frame 1Symbol 223 MovieClip {Scoreboard}
"lblEmpty"Symbol 227 MovieClip {FlaSubHallOfFame} Frame 1Symbol 225 EditableText
"lblDeveloper"Symbol 233 MovieClip {FlaSubAbout} Frame 1Symbol 230 EditableText
"lblMusic"Symbol 233 MovieClip {FlaSubAbout} Frame 1Symbol 231 EditableText
"btnMD"Symbol 233 MovieClip {FlaSubAbout} Frame 1Symbol 120 Button
"head"Symbol 246 MovieClip {main_fla.iconZombieOutbreak_112} Frame 1Symbol 243 MovieClip
"hair"Symbol 246 MovieClip {main_fla.iconZombieOutbreak_112} Frame 1Symbol 245 MovieClip
"lblName"Symbol 334 MovieClip {tv.mindistortion.flux.meta.AchievementPopup} Frame 1Symbol 333 EditableText
"phIcon"Symbol 334 MovieClip {tv.mindistortion.flux.meta.AchievementPopup} Frame 1Symbol 23 MovieClip {main_fla.iconSkill2_57}
"btnBuy"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 106 MovieClip
"lblTitle"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 338 EditableText
"lblDescr"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 339 EditableText
"lblStat"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 340 EditableText
"lblUpgrade"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 341 EditableText
"lblCost"Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill} Frame 1Symbol 342 EditableText
"adMask"Symbol 361 MovieClip {FlashAd_fla.NewgroundsAPIAsset_FlashAd_Container_2} Frame 1Symbol 349 MovieClip
"ngLinkButton"Symbol 361 MovieClip {FlashAd_fla.NewgroundsAPIAsset_FlashAd_Container_2} Frame 1Symbol 354 Button
"background"Symbol 362 MovieClip {com.newgrounds.components.FlashAd} Frame 1Symbol 361 MovieClip {FlashAd_fla.NewgroundsAPIAsset_FlashAd_Container_2}
"shadow"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 388 MovieClip
"c"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 390 MovieClip
"b"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 392 MovieClip
"t"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 394 MovieClip
"l"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 396 MovieClip
"r"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 398 MovieClip
"tl"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 400 MovieClip
"tr"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 402 MovieClip
"bl"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 404 MovieClip
"br"Symbol 407 MovieClip {NewgroundsAPIAsset_big_popup_background} Frame 1Symbol 406 MovieClip
"errorDialog"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 5Symbol 380 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5}
"errorDialog"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 6Symbol 384 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7}
"background"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 386 MovieClip
"closeButton"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 411 Button
"viewLatestButton"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 7Symbol 417 Button
"viewAuthorizedButton"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 8Symbol 417 Button
"phSubmenu"Symbol 450 MovieClip {tv.mindistortion.infect.menu.view.InfectMenu} Frame 1Symbol 106 MovieClip
"menuBg"Symbol 450 MovieClip {tv.mindistortion.infect.menu.view.InfectMenu} Frame 1Symbol 106 MovieClip
"mcSoundCtrl"Symbol 450 MovieClip {tv.mindistortion.infect.menu.view.InfectMenu} Frame 1Symbol 447 MovieClip
"lblDev"Symbol 450 MovieClip {tv.mindistortion.infect.menu.view.InfectMenu} Frame 1Symbol 448 EditableText
"phEvo"Symbol 487 MovieClip {tv.mindistortion.infect.game.view.InfectEvolutionMenu} Frame 1Symbol 343 MovieClip {tv.mindistortion.infect.menu.view.InfectEvolutionSkill}
"mcUpgrade"Symbol 487 MovieClip {tv.mindistortion.infect.game.view.InfectEvolutionMenu} Frame 1Symbol 484 MovieClip
"lblStats"Symbol 487 MovieClip {tv.mindistortion.infect.game.view.InfectEvolutionMenu} Frame 1Symbol 485 EditableText
"lblPoints"Symbol 487 MovieClip {tv.mindistortion.infect.game.view.InfectEvolutionMenu} Frame 1Symbol 486 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.

Labels

"closeme"Symbol 380 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Login_Warning_5} Frame 11
"closeme"Symbol 384 MovieClip {APIConnector_fla.NewgroundsAPIAsset_Connection_Error_7} Frame 11
"idle"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 2
"connecting"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 3
"connected"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 4
"no_login"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 5
"no_connect"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 6
"new_version"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 7
"bad_host"Symbol 422 MovieClip {com.newgrounds.components.APIConnector} Frame 8




http://swfchan.com/27/134478/info.shtml
Created: 9/2 -2019 22:10:37 Last modified: 9/2 -2019 22:10:37 Server time: 07/05 -2024 04:52:03