Combined Code
movieClip 9 {
}
movieClip 12 {
}
movieClip 22 {
}
movieClip 24 {
frame 40 {
stop();
}
}
movieClip 30 {
}
button 31 {
on (release) {
startMovie();
}
}
movieClip 32 Preloader Bar (NewgroundsAPI) {
#initclip
Object.registerClass('Preloader Bar (NewgroundsAPI)', com.newgrounds.components.PreloaderBar);
#endinitclip
}
button 59 {
on (release) {
com.newgrounds.API.loadNewgrounds();
}
}
movieClip 65 {
frame 1 {
onEnterFrame = function () {
if (_visible) {
_rotation = _rotation + 30;
} else {
delete onEnterFrame;
}
};
}
}
movieClip 66 {
frame 11 {
gotoAndPlay(1);
}
}
movieClip 67 Flash Ad (NewgroundsAPI) {
#initclip
Object.registerClass('Flash Ad (NewgroundsAPI)', com.newgrounds.components.FlashAd);
#endinitclip
}
// unknown tag 88 length 68
// unknown tag 88 length 68
movieClip 76 {
frame 10 {
stop();
}
}
// unknown tag 88 length 68
movieClip 78 {
frame 37 {
_parent.setGotoFrame('done');
stop();
}
}
movieClip 80 {
}
movieClip 82 NewgroundsAPIAsset_Medal_Icon_Placeholder {
}
// unknown tag 88 length 68
// unknown tag 88 length 69
// unknown tag 88 length 68
movieClip 90 NewgroundsAPIAsset_Medal_Popup {
frame 1 {
function endDelay() {
clearInterval(pop_delay);
gotoAndPlay('closeme');
}
_visible = true;
icon._visible = false;
pop_delay = setInterval(endDelay, 3000);
}
frame 2 {
medal.attachIcon(icon);
}
frame 10 {
icon._visible = true;
medal_name = medal.getName();
medal_value = medal.getValue() + 'pts';
stop();
}
frame 21 {
this.removeMovieClip();
_visible = false;
stop();
}
}
// unknown tag 88 length 68
// unknown tag 88 length 68
movieClip 96 NewgroundsAPIAsset_Login_Warning {
frame 1 {
function endDelay() {
clearInterval(pop_delay);
gotoAndPlay('closeme');
}
_x = 0;
_y = 0;
_visible = true;
pop_delay = setInterval(endDelay, 6000);
}
frame 10 {
stop();
}
frame 21 {
this.removeMovieClip();
_visible = false;
stop();
}
}
// unknown tag 88 length 68
// unknown tag 88 length 69
movieClip 99 NewgroundsAPIAsset_Connection_Error {
frame 1 {
function endDelay() {
clearInterval(pop_delay);
gotoAndPlay('closeme');
}
_x = 0;
_y = 0;
_visible = true;
pop_delay = setInterval(endDelay, 6000);
}
frame 10 {
stop();
}
frame 21 {
this.removeMovieClip();
_visible = false;
stop();
}
}
movieClip 101 {
}
movieClip 103 {
}
movieClip 105 {
}
movieClip 107 {
}
movieClip 109 {
}
movieClip 111 {
}
movieClip 113 {
}
movieClip 115 {
}
movieClip 117 {
}
movieClip 119 {
}
movieClip 120 NewgroundsAPIAsset_big_popup_background {
frame 1 {
var w = Math.round(this._width);
var h = Math.round(this._height);
if (w < 80) {
w = 80;
}
if (h < 80) {
h = 80;
}
this._width = 350;
this._height = 120;
t._width = w - 2;
t._x = 1;
b._width = w - 2;
b._x = 1;
c._width = w - 2;
c._x = 1;
c._height = h - 2;
c._y = 1;
l._height = h - 2;
l._y = 1;
r._height = h - 2;
r._y = 1;
tr._x = w - 7;
r._x = w - 7;
br._x = w - 7;
b._y = h - 7;
bl._y = h - 7;
br._y = h - 7;
shadow._width = w + 10;
shadow._height = h + 10;
}
}
button 124 {
on (release) {
this._visible = false;
this.removeMovieClip();
}
}
// unknown tag 88 length 68
// unknown tag 88 length 68
button 130 {
on (release) {
getURL(official_version_url, '_blank');
}
}
// unknown tag 88 length 69
movieClip 132 NewgroundsAsset_New_Version_Available {
frame 1 {
_x = Stage.width / 2;
_y = Stage.height / 2;
background._width = Stage.width + 200;
background._height = Stage.height + 200;
background._x = -(_x + 100);
background._y = -(_y + 100);
}
}
button 133 {
on (release) {
getURL(official_version_url, '_blank');
}
}
// unknown tag 88 length 68
// unknown tag 88 length 68
// unknown tag 88 length 69
movieClip 137 NewgroundsAsset_Illegal_Host {
frame 1 {
_x = Stage.width / 2;
_y = Stage.height / 2;
background._width = Stage.width + 200;
background._height = Stage.height + 200;
background._x = -(_x + 100);
background._y = -(_y + 100);
}
}
movieClip 138 API Connector (NewgroundsAPI) {
#initclip
Object.registerClass('API Connector (NewgroundsAPI)', com.newgrounds.components.APIConnector);
#endinitclip
frame 20 {
_visible = false;
}
}
instance of movieClip 138 API Connector (NewgroundsAPI) {
onClipEvent (construct) {
api_id = '19428:30aYGamN';
encryption_key = '2xWe2rqVmygduQ6ddi9dOWBASohmENbT';
version = '';
fake_session = true;
debug = true;
error_screens = true;
medal_popups = true;
}
}
button 152 {
on (release) {
getURL('http://sexual-lobster.newgrounds.com/', '_blank');
}
}
instance of movieClip 67 Flash Ad (NewgroundsAPI) {
onClipEvent (construct) {
show_background = true;
}
}
instance of movieClip 32 Preloader Bar (NewgroundsAPI) {
onClipEvent (construct) {
AUTO_PLAY = false;
}
}
movieClip 1 __Packages.com.newgrounds.components.PreloaderBar {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.components) {
_global.com.newgrounds.components = new Object();
}
if (!_global.com.newgrounds.components.PreloaderBar) {
var v1 = function () {
super();
};
com.newgrounds.components.PreloaderBar = v1;
com.newgrounds.components.PreloaderBar extends MovieClip;
var v2 = v1.prototype;
v2.onLoad = function () {
_root.stop();
var v3 = com.newgrounds.API.getPercentLoaded();
if (v3 == 100) {
if (this.AUTO_PLAY) {
this.startMovie();
} else {
this.gotoAndStop(this._totalframes);
}
} else {
this.advanceFrame(this, false, false);
this.FRAME_TIME = 1000 / this.FRAME_RATE;
this.loadingComplete = false;
this.intervalId = setInterval(this, 'timerHandler', this.FRAME_TIME / 2);
this.frameAccum = 0;
this.time = getTimer();
this.timerHandler();
}
};
v2.timerHandler = function () {
if (!this.loadingComplete) {
var v4 = com.newgrounds.API.getPercentLoaded();
this.bar._xscale = v4;
if (v4 == 100) {
this.loadingComplete = true;
if (this.AUTO_PLAY) {
this.startMovie();
}
return undefined;
}
}
var v3 = getTimer() - this.time;
this.time += v3;
this.frameAccum += v3;
var v2 = 0;
for (;;) {
if (!(this.frameAccum >= this.FRAME_TIME && v2 < this.MAX_FRAME_SKIP)) break;
if (this.loadingComplete) {
this.advanceFrame(this, false, false);
}
this.frameAccum -= this.FRAME_TIME;
v2++;
}
updateAfterEvent();
};
v2.advanceFrame = function (clip, recurse, loop) {
if (!clip) {
return undefined;
}
clip.stop();
if (clip._currentframe == clip._totalframes) {
if (loop) {
clip.gotoAndStop(1);
}
} else {
clip.nextFrame();
}
if (recurse) {
for (var v5 in clip) {
if (typeof clip[v5] == 'movieclip') {
this.advanceFrame(clip[v5], recurse, loop);
}
}
}
};
v2.startMovie = function () {
clearInterval(this.intervalId);
_root.play();
};
v1.symbolName = 'preloaderBar';
v1.symbolOwner = 'com.newgrounds.API';
v2.AUTO_PLAY = false;
v2.FRAME_RATE = 30;
v2.MAX_FRAME_SKIP = 5;
v2.loadingComplete = false;
v2.frameAccum = 0;
ASSetPropFlags(com.newgrounds.components.PreloaderBar.prototype, null, 1);
}
#endinitclip
}
movieClip 33 __Packages.com.newgrounds.APIError {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.APIError) {
var v1 = function (error, msg) {
if ((Number(error)).toString() == String(error)) {
error = Number(error);
} else {
if (com.newgrounds.APIError.error_codes[String(error)]) {
error = com.newgrounds.APIError.error_codes[String(error)];
} else {
error = 0;
}
}
this.code = error;
this.message = msg;
this.name = com.newgrounds.APIError.error_names[error];
this.alias = com.newgrounds.APIError.aliases[error];
};
com.newgrounds.APIError = v1;
var v2 = v1.prototype;
v1.init_codes = function () {
var v2 = new Object();
var v1 = 0;
while (v1 < com.newgrounds.APIError.aliases.length) {
v2[com.newgrounds.APIError.aliases[v1]] = v1;
++v1;
}
return v2;
};
v1.init_names = function () {
var v5 = new Array();
var v3 = 0;
while (v3 < com.newgrounds.APIError.aliases.length) {
var v2 = (com.newgrounds.APIError.aliases[v3].toLowerCase()).split('_');
var v1 = 0;
while (v1 < v2.length) {
v2[v1] = (v2[v1].substr(0, 1)).toUpperCase() + v2[v1].substr(1, v2[v1].length);
for (var v4 in com.newgrounds.APIError.always_caps) {
if (v2[v1].toUpperCase() == com.newgrounds.APIError.always_caps[v4]) {
v2[v1] = v2[v1].toUpperCase();
}
}
++v1;
}
v5[v3] = v2.join(' ');
++v3;
}
return v5;
};
v2.isError = function () {
return true;
};
v1.aliases = 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_SAVE_GROUP', 'FILE_NOT_FOUND', 'SITE_ID_REQUIRED', 'UPLOAD_IN_PROGRESS', 'USER_CANCELLED', 'CONFIRM_REQUEST', 'ILLEGAL_REQUEST', 'CONNECTION_FAILED', 'QUERY_INCOMPLETE', 'SAVE_FILE_ERROR', 'INVALID_VALUE', 'SERVER_ERROR', 'INVALID_SCOREBOARD');
v1.always_caps = new Array('API', 'URL', 'ID');
v1.error_codes = com.newgrounds.APIError.init_codes();
v1.error_names = com.newgrounds.APIError.init_names();
v2.code = 0;
ASSetPropFlags(com.newgrounds.APIError.prototype, null, 1);
}
#endinitclip
}
movieClip 34 __Packages.com.newgrounds.API {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.API) {
var v1 = function () {};
com.newgrounds.API = v1;
var v2 = v1.prototype;
v1.setVersion = function (v) {
com.newgrounds.API.version = v;
};
v1.setUserEmail = function (e) {
com.newgrounds.API.user_email = e;
};
v1.setFakeSession = function (fake) {
com.newgrounds.API.fake_session = fake;
};
v1.setPreload = function (p) {
com.newgrounds.API.preload = p;
};
v1.getPercentLoaded = function () {
var v2;
if (com.newgrounds.API.preload && com.newgrounds.API.preload_items > 0) {
v2 = 80;
var v4 = Math.round((com.newgrounds.API.preload_items_loaded / com.newgrounds.API.preload_items) * 20);
var v3 = Math.round((_root.getBytesLoaded() / _root.getBytesTotal()) * v2) + v4;
return v3;
}
v2 = 100;
v3 = Math.round((_root.getBytesLoaded() / _root.getBytesTotal()) * v2);
return v3;
};
v1.reportNewAsset = function () {
if (com.newgrounds.API.preload) {
++com.newgrounds.API.preload_items;
}
};
v1.reportAssetLoaded = function () {
if (com.newgrounds.API.preload) {
++com.newgrounds.API.preload_items_loaded;
}
};
v1.populateMedals = function (medal_list) {
if (com.newgrounds.API.medals === null) {
com.newgrounds.API.medals = new Array();
var v2 = 0;
while (v2 < medal_list.length) {
var v1 = medal_list[v2];
com.newgrounds.API.medals.push(new com.newgrounds.Medal(v1.medal_id, v1.medal_name, v1.medal_value, v1.medal_difficulty, v1.medal_unlocked, v1.medal_icon));
++v2;
}
}
};
v1.populateSaveGroups = function (save_group_list, file_path, image_path) {
com.newgrounds.SaveFile.setFilePath(file_path);
com.newgrounds.SaveFile.setImagePath(image_path);
com.newgrounds.API.save_groups = new Array();
var v6 = 0;
while (v6 < save_group_list.length) {
var v2 = save_group_list[v6];
var v5 = new com.newgrounds.SaveGroup(v2.group_id, v2.group_name, v2.group_type);
var v4 = 0;
while (v4 < v2.keys.length) {
var v3 = v2.keys[v4];
v5.addKey(v3.id, v3.name, v3.type);
++v4;
}
v4 = 0;
while (v4 < v2.ratings.length) {
var v1 = v2.ratings[v4];
v5.addRating(v1.id, v1.name, v1.min, v1.max, v1.float);
++v4;
}
com.newgrounds.API.save_groups.push(v5);
++v6;
}
};
v1.populateScoreBoards = function (score_boards) {
com.newgrounds.API.scoreboards = new Array();
var v1 = 0;
while (v1 < score_boards.length) {
com.newgrounds.API.scoreboards.push(new com.newgrounds.ScoreBoard(score_boards[v1].id, score_boards[v1].name));
++v1;
}
};
v1.getOfficialURL = function () {
var v1 = com.newgrounds.API.GATEWAY_URL + '?tracker_id=' + com.newgrounds.API.movie_id + '&command_id=loadOfficalVersion&seed=' + Math.random();
if (com.newgrounds.API.debug) {
v1 += '&debug=1';
}
return v1;
};
v1.loadOfficialURL = function () {
getURL(com.newgrounds.API.getOfficialURL(), '_blank');
};
v1.hasUserSession = function () {
if (com.newgrounds.API.session_id && com.newgrounds.API.publisher_id) {
return true;
return false;
}
if (_root.NewgroundsAPI_PublisherID && _root.NewgroundsAPI_SessionID) {
return true;
}
return false;
};
v1.hostIsCompatible = function () {
return _root.NewgroundsAPI_PublisherID !== undefined;
};
v1.isNewgrounds = function () {
return com.newgrounds.API.publisher_id == 1 || _root.NewgroundsAPI_PublisherID == 1 || ((com.newgrounds.API.getHost()).toLowerCase()).indexOf('ungrounded.net') > -1 || ((com.newgrounds.API.getHost()).toLowerCase()).indexOf('newgrounds.com') > -1;
};
v1.hasPublisher = function () {
return com.newgrounds.API.publisher_id || _root.NewgroundsAPI_PublisherID;
};
v1.hasUserEmail = function () {
if (com.newgrounds.API.user_email) {
return true;
}
return false;
};
v1.isConnected = function () {
return com.newgrounds.API.connected;
};
v1.getID = function () {
return com.newgrounds.API.getTrackerID();
};
v1.getTrackerID = function () {
return com.newgrounds.API.tracker_id;
};
v1.getUserID = function () {
return com.newgrounds.API.user_id;
};
v1.getUserName = function () {
return com.newgrounds.API.user_name;
};
v1.connectionTimeOut = function () {
com.newgrounds.API.reportAssetLoaded();
clearInterval(com.newgrounds.API.timeout);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, false, new com.newgrounds.APIError('CONNECTION_FAILED', 'Connection to API gateway timed out.'));
};
v1.connect = function (m_id, encrypt_key, debug_mode) {
if (com.newgrounds.API.connected) {
return undefined;
}
com.newgrounds.API.sendMessage('Connecting to the Newgrounds API Gateway...');
var v2 = function () {
com.newgrounds.API.connectionTimeOut();
};
com.newgrounds.API.timeout = setInterval(v2, 10000, null);
if (!m_id) {
com.newgrounds.API.fatalError('API.connect() - missing required movie_id parameter', 'connect');
}
com.newgrounds.API.movie_id = String(m_id);
com.newgrounds.API.tracker_id = Number(com.newgrounds.API.movie_id.substring(0, com.newgrounds.API.movie_id.indexOf(':')));
com.newgrounds.API.encryption_key = encrypt_key;
com.newgrounds.API.debug = debug_mode;
com.newgrounds.API.user_id = 0;
com.newgrounds.API.user_name = 'Guest';
if (_root.NewgroundsAPI_PublisherID) {
com.newgrounds.API.publisher_id = _root.NewgroundsAPI_PublisherID;
if (_root.NewgroundsAPI_SessionID) {
com.newgrounds.API.session_id = _root.NewgroundsAPI_SessionID;
}
} else {
if (com.newgrounds.API.fake_session) {
com.newgrounds.API.publisher_id = 1;
com.newgrounds.API.session_id = 'D3bu64p1U53R';
com.newgrounds.API.user_id = 10;
com.newgrounds.API.user_name = 'API-Debugger';
} else {
if (com.newgrounds.API.debug) {
com.newgrounds.API.publisher_id = 1;
}
com.newgrounds.API.session_id = null;
}
}
if (_root.NewgroundsAPI_UserName) {
com.newgrounds.API.user_name = _root.NewgroundsAPI_UserName;
}
if (_root.NewgroundsAPI_UserID) {
com.newgrounds.API.user_id = _root.NewgroundsAPI_UserID;
}
if (_root.NewgroundsAPI_UserpageFormat) {
com.newgrounds.API.userpage_format = _root.NewgroundsAPI_UserpageFormat;
}
com.newgrounds.API.reportNewAsset();
com.newgrounds.API.connected = true;
com.newgrounds.API.sendCommand('connectMovie', {'host': com.newgrounds.API.getHost(), 'movie_version': com.newgrounds.API.version});
};
v1.getHost = function () {
if (!com.newgrounds.API.host) {
var v1 = _url;
if ((v1.toLowerCase()).indexOf('http://') > -1 or (v1.toLowerCase()).indexOf('https://') > -1) {
if ((v1.toLowerCase()).indexOf(com.newgrounds.API.NEWGROUNDS_PREVIEW) > -1) {
com.newgrounds.API.host = com.newgrounds.API.NEWGROUNDS_PREVIEW;
} else {
com.newgrounds.API.host = (v1.split('/'))[2].toLowerCase();
}
return com.newgrounds.API.host;
}
com.newgrounds.API.host = com.newgrounds.API.LOCAL_HOST;
}
return com.newgrounds.API.host;
};
v1.isPublishedHost = function () {
for (var v1 in com.newgrounds.API.PREVIEW_HOSTS) {
if (com.newgrounds.API.getHost() == com.newgrounds.API.PREVIEW_HOSTS[v1]) {
return false;
}
}
return true;
};
v1.loadUserPage = function (u_id, u_name) {
if (u_id == undefined && u_name == undefined) {
if (com.newgrounds.API.hasUserSession()) {
u_id = com.newgrounds.API.user_id;
u_name = com.newgrounds.API.user_name;
} else {
return false;
}
}
if (com.newgrounds.API.publisher_id == 1) {
var v1 = 'http://' + com.newgrounds.API.user_name.toLowerCase() + '.newgrounds.com';
getURL(v1, '_blank');
return true;
return false;
}
if (com.newgrounds.API.userpage_format) {
v1 = com.newgrounds.API.userpage_format;
v1 = (v1.split(':user_id:')).join(u_id.toString());
v1 = (v1.split(':user_name:')).join(escape(u_name));
getURL(v1, '_blank');
return true;
}
return false;
};
v1.loadNewgrounds = function () {
com.newgrounds.API.sendCommand('loadNewgrounds', {'host': com.newgrounds.API.getHost()}, true);
};
v1.loadMySite = function () {
com.newgrounds.API.sendCommand('loadMySite', {'host': com.newgrounds.API.getHost()}, true);
};
v1.loadCustomLink = function (link) {
com.newgrounds.API.sendCommand('loadCustomLink', {'host': com.newgrounds.API.getHost(), 'link': link}, true);
};
v1.logCustomEvent = function (event) {
com.newgrounds.API.sendCommand('logCustomEvent', {'host': com.newgrounds.API.getHost(), 'event': event});
};
v1.getScoreBoard = function (board) {
if (!com.newgrounds.API.scoreboards || com.newgrounds.API.scoreboards.length < 1) {
com.newgrounds.API.sendWarning('You do not have any scoreboards configured in your API setup.');
return null;
}
for (var v2 in com.newgrounds.API.scoreboards) {
if (typeof board == 'string' && com.newgrounds.API.scoreboards[v2].name == board) {
return com.newgrounds.API.scoreboards[v2];
} else {
if (typeof board == 'number' && com.newgrounds.API.scoreboards[v2].id == board) {
return com.newgrounds.API.scoreboards[v2];
}
}
}
com.newgrounds.API.sendWarning('Could not find any scoreboards named \'' + board + '\'.');
return null;
};
v1.postScore = function (board_name, value, tag) {
var v3 = com.newgrounds.API.getScoreBoard(board_name);
if (tag === undefined) {
tag = '';
}
if (!v3) {
com.newgrounds.API.sendError({'command_id': 'postScore'}, new com.newgrounds.APIError('INVALID_SCOREBOARD', 'Failed to post score. Check the spelling of your board name.'));
return undefined;
}
if (value == undefined) {
com.newgrounds.API.sendError({'command_id': 'postScore'}, new com.newgrounds.APIError('MISSING_PARAM', 'Missing score value'));
return undefined;
}
com.newgrounds.API.sendSecureCommand('postScore', {'user_name': com.newgrounds.API.user_name, 'board': v3.id, 'value': value, 'tag': tag, 'publisher_id': com.newgrounds.API.publisher_id});
};
v1.loadScores = function (board_name, period, tag) {
var v3 = 'loadScores';
var v2 = com.newgrounds.API.getScoreBoard(board_name);
if (!v2) {
com.newgrounds.API.sendError({'command_id': v3}, new com.newgrounds.APIError('INVALID_SCOREBOARD', 'Failed to load scores. Check the spelling of your board name.'));
return undefined;
}
var v1 = {};
v1.publisher_id = com.newgrounds.API.publisher_id;
v1.board = v2.id;
v1.num_results = v2.num_results;
v1.page = v2.page;
if (period === undefined) {
v1.period = v2.period;
} else {
v1.period = period;
}
if (tag === undefined) {
v1.tag = v2.tag;
} else {
v1.tag = tag;
}
com.newgrounds.API.sendCommand(v3, v1);
};
v1.unlockMedal = function (medal, x, y) {
if (!medal) {
com.newgrounds.API.sendError({'command_id': 'unlockMedal'}, new com.newgrounds.APIError('MISSING_PARAM', 'missing required medal name'));
return undefined;
}
if (typeof medal != 'object') {
medal = com.newgrounds.API.getMedal(medal);
}
if (!medal) {
com.newgrounds.API.sendError({'command_id': 'unlockMedal'}, new com.newgrounds.APIError('INVALID_MEDAL', 'medal unlock failed, check your medal name for correct spelling.'));
return undefined;
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.UNLOCK_MEDAL, true, {'medal': medal, 'x': x, 'y': y});
if (com.newgrounds.API.hasUserSession() or com.newgrounds.API.debug) {
com.newgrounds.API.sendMessage('Attempting to unlock \'' + medal.getName() + '\'');
var v3 = new Object();
v3.medal_id = medal.getID();
com.newgrounds.API.sendSecureCommand('unlockMedal', v3);
} else {
com.newgrounds.API.sendMessage('Unlocking \'' + medal.getName() + '\'');
medal.setUnlocked(true);
var v2 = com.newgrounds.API.loadLocal('medals_unlocked');
if (!v2) {
v2 = new Object();
}
v2[medal.getID()] = true;
com.newgrounds.API.saveLocal('medals_unlocked', v2);
}
};
v1.loadMedals = function () {
if (com.newgrounds.API.medals) {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDALS_LOADED, true, {'medals': com.newgrounds.API.medals});
return undefined;
}
var v1 = new Object();
if (com.newgrounds.API.hasUserSession()) {
v1.publisher_id = com.newgrounds.API.publisher_id;
v1.user_id = com.newgrounds.API.user_id;
}
com.newgrounds.API.sendCommand('getMedals', v1);
};
v1.getMedals = function () {
return com.newgrounds.API.medals;
};
v1.getMedal = function (identifier) {
if (!com.newgrounds.API.medals || com.newgrounds.API.medals.length < 1) {
com.newgrounds.API.sendWarning('You do not have any medals configured on your API setup!');
return false;
}
for (var v3 in com.newgrounds.API.medals) {
var v1 = com.newgrounds.API.medals[v3];
if (typeof identifier == 'string' && v1.getName() == identifier) {
return v1;
} else {
if (v1.getID() == identifier) {
return v1;
}
}
}
com.newgrounds.API.sendWarning('Could not find any medals named \'' + identifier + '\'.');
return false;
};
v1.saveLocal = function (save_id, save_data, size_allocation) {
if (!com.newgrounds.API.sharedObjects[save_id]) {
com.newgrounds.API.sharedObjects[save_id] = SharedObject.getLocal('ng_ap_secure_' + com.newgrounds.API.movie_id + '_' + save_id);
}
com.newgrounds.API.sharedObjects[save_id].data[save_id] = com.newgrounds.API.encodeData(save_data);
com.newgrounds.API.sharedObjects[save_id].flush();
};
v1.loadLocal = function (save_id) {
if (!com.newgrounds.API.sharedObjects[save_id]) {
com.newgrounds.API.sharedObjects[save_id] = SharedObject.getLocal('ng_ap_secure_' + com.newgrounds.API.movie_id + '_' + save_id);
}
com.newgrounds.API.sharedObjects[save_id].flush();
com.newgrounds.API.echo('sharedobject ' + save_id + ' is: ' + com.newgrounds.API.sharedObjects[save_id].data[save_id]);
if (com.newgrounds.API.sharedObjects[save_id].data[save_id]) {
com.newgrounds.API.echo('decoded: ' + com.newgrounds.API.decodeData(com.newgrounds.API.sharedObjects[save_id].data[save_id]));
return com.newgrounds.API.decodeData(com.newgrounds.API.sharedObjects[save_id].data[save_id]);
} else {
return null;
}
};
v1.encodeData = function (data) {
return com.newgrounds.API.compressHex(com.newgrounds.encoders.RC4.encrypt(com.newgrounds.encoders.JSON.encode(data), com.newgrounds.API.encryption_key));
};
v1.decodeData = function (base) {
return com.newgrounds.encoders.JSON.decode(com.newgrounds.encoders.RC4.decrypt(com.newgrounds.API.uncompressHex(base), com.newgrounds.API.encryption_key));
};
v1.compressHex = function (hex_value) {
var v6 = hex_value.length % 6;
var v4 = '';
var v5 = new com.newgrounds.encoders.BaseN(com.newgrounds.API.compression_radix);
var v1 = 0;
while (v1 < hex_value.length) {
var v2 = Number('0x' + hex_value.substr(v1, 6));
v4 += v5.encode(v2, 4);
v1 += 6;
}
return v6 + v4;
};
v1.uncompressHex = function (base_value) {
var v9 = Number(base_value.charAt(0));
var v7 = '';
var v3;
var v8 = new com.newgrounds.encoders.BaseN(com.newgrounds.API.compression_radix);
var v2 = 1;
while (v2 < base_value.length) {
var v6 = base_value.substr(v2, 4);
var v5 = v8.decode(v6);
var v1 = com.newgrounds.API.dec2hex(v5);
if (v2 + 4 < base_value.length) {
v3 = 6;
} else {
v3 = v9;
}
while (v1.length < v3) {
v1 = '0' + v1;
}
v7 += v1;
v2 += 4;
}
return v7;
};
v1.dec2hex = function (dec) {
var v4 = '0123456789ABCDEF';
var v3 = '';
while (dec > 0) {
var v2 = dec % 16;
v3 = v4.charAt(v2) + v3;
dec = (dec - v2) / 16;
}
return v3;
};
v1.getSaveGroup = function (group) {
if (com.newgrounds.API.save_groups == null || com.newgrounds.API.save_groups.length < 1) {
com.newgrounds.API.sendWarning('You do not have any save groups configured in your API setup!');
return null;
}
var v1 = 0;
while (v1 <= com.newgrounds.API.save_groups.length) {
if (typeof group == 'number' or (Number(group)).toString() == String(group)) {
if (com.newgrounds.API.save_groups[v1].getID() == Number(group)) {
return com.newgrounds.API.save_groups[v1];
}
} else {
if (typeof group == 'string') {
if ((com.newgrounds.API.save_groups[v1].getName()).toLowerCase() == group.toLowerCase()) {
return com.newgrounds.API.save_groups[v1];
}
}
}
++v1;
}
com.newgrounds.API.sendWarning('Could not find any save groups named \'' + group + '\'.');
return null;
};
v1.getCurrentSaveFile = function () {
return com.newgrounds.API.save_file;
};
v1.setCurrentSaveFile = function (current) {
com.newgrounds.API.save_file = current;
};
v1.loadSaveFile = function (save_id, get_contents) {
if (get_contents === undefined) {
get_contents = true;
}
var v1 = 'loadSaveFile';
var v2 = {'publisher_id': com.newgrounds.API.publisher_id, 'save_id': save_id, 'get_contents': get_contents};
com.newgrounds.API.save_file = null;
com.newgrounds.API.sendCommand(v1, v2);
};
v1.loadFilesByDate = function (group_name, sort_descending, key_name, key_value) {
if (sort_descending === undefined) {
sort_descending = true;
}
var v2 = com.newgrounds.API.getSaveGroup(group_name);
if (!v2) {
var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.');
com.newgrounds.API.sendError({'command_id': 'loadFilesByDate'}, v3);
return undefined;
}
var v1 = new com.newgrounds.SaveGroupQuery(v2);
if (key_name) {
v1.addKeyCondition(key_name, '=', key_value);
}
v1.sortOn('CREATED_ON', sort_descending ? 'DESC' : 'ASC');
v1.execute();
};
v1.loadFilesByViews = function (group_name, sort_descending, key_name, key_value) {
if (sort_descending === undefined) {
sort_descending = true;
}
var v2 = com.newgrounds.API.getSaveGroup(group_name);
if (!v2) {
var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.');
com.newgrounds.API.sendError({'command_id': 'loadFilesByViews'}, v3);
return undefined;
}
var v1 = new com.newgrounds.SaveGroupQuery(v2);
if (key_name) {
v1.addKeyCondition(key_name, '=', key_value);
}
v1.sortOn('TOTAL_VIEWS', sort_descending ? 'DESC' : 'ASC');
v1.execute();
};
v1.loadFilesByRating = function (group_name, rating_name, sort_descending, key_name, key_value) {
if (sort_descending === undefined) {
sort_descending = true;
}
var v2 = com.newgrounds.API.getSaveGroup(group_name);
if (!v2) {
var v3 = new com.newgrounds.APIError('QUERY_INCOMPLETE', 'The query could not be preformed, check the spelling of your save group name.');
com.newgrounds.API.sendError({'command_id': 'loadFilesByRating'}, v3);
return undefined;
}
var v1 = new com.newgrounds.SaveGroupQuery(v2);
if (key_name) {
v1.addKeyCondition(key_name, '=', key_value);
}
v1.sortOnRating(rating_name, sort_descending ? 'DESC' : 'ASC', 'score');
v1.execute();
};
v1.lookupSaveFiles = function (save_group) {
var v1 = 'lookupSaveFiles';
var v2 = {'publisher_id': com.newgrounds.API.publisher_id, 'group_id': save_group.getID(), 'query': com.newgrounds.encoders.JSON.encode(save_group.getQuery(true))};
com.newgrounds.API.sendCommand(v1, v2);
};
v1.newSaveFile = function (group) {
var v1 = com.newgrounds.API.getSaveGroup(group);
if (v1) {
return v1.newFile();
} else {
var v2 = new com.newgrounds.APIError('INVALID_SAVE_GROUP', 'You can not create new files in invalid groups.');
com.newgrounds.API.sendError({'command_id': 'newSaveFile'}, v2);
}
};
v1.newSaveQuery = function (group) {
var v1 = com.newgrounds.API.getSaveGroup(group);
if (v1) {
return v1.newQuery();
} else {
var v2 = new com.newgrounds.APIError('INVALID_SAVE_GROUP', '\'' + group + '\' is not a valid save group.');
com.newgrounds.API.sendError({'command_id': 'newSaveQuery'}, v2);
}
};
v1.checkFilePrivs = function (file) {
if (com.newgrounds.API.user_id) {
var v1 = com.newgrounds.API.user_id;
} else {
var v1 = 0;
}
var v2 = {'group': (file.getGroup()).getID(), 'filename': file.getName(), 'user_id': v1, 'publisher_id': com.newgrounds.API.publisher_id};
com.newgrounds.API.sendCommand('checkFilePrivs', v2);
};
v1.saveFile = function (file, overwrite) {
var v1;
v1 = {'group': (file.getGroup()).getID(), 'filename': file.getName(), 'description': file.getDescription(), 'draft': file.__get__draft(), 'user_name': com.newgrounds.API.user_name};
if (overwrite) {
v1.overwrite = overwrite;
}
if (file.getDuplicateID()) {
v1.save_id = file.getDuplicateID();
}
if ((file.getKeys()).length > 0) {
v1.keys = file.getKeys();
}
var v3;
v3 = {'file': file.getRawContents()};
if (file.getThumbnailImageScan()) {
v3.thumbnail = file.getThumbnailImageScan();
}
com.newgrounds.API.save_file = file;
com.newgrounds.API.sendSecureCommand('saveFile', v1, null, v3);
};
v1.rateSaveFile = function (file, rating, vote) {
var v1 = {'group': (file.getGroup()).getID(), 'save_id': file.getID(), 'rating_id': rating.rating_id, 'vote': vote, 'user_id': com.newgrounds.API.user_id};
com.newgrounds.API.sendSecureCommand('rateSaveFile', v1);
};
v1.getConfirmation = function (command_name, event, msg, target, confirm, cancel) {
var v1 = new com.newgrounds.APIError('CONFIRM_REQUEST', msg);
v1.confirm = function () {
target[confirm]();
};
v1.cancel = function () {
target[cancel]();
};
v1.command = command_name;
com.newgrounds.API.callListener(event, false, v1);
};
v1.onRemoteAuthentication = function (auth_result) {
var v1 = com.newgrounds.encoders.JSON.decode(com.newgrounds.encoders.RC4.decrypt(auth_result, com.newgrounds.API.encryption_key));
delete com.newgrounds.API.remote_auth;
com.newgrounds.API.user_id = v1.NewgroundsAPI_UserID;
com.newgrounds.API.user_name = v1.NewgroundsAPI_UserName;
com.newgrounds.API.session_id = v1.NewgroundsAPI_SessionID;
com.newgrounds.API.publisher_id = v1.NewgroundsAPI_PublisherID;
};
v1.doEvent = function (e) {
switch (e.command_id) {
case 'connectMovie':
clearInterval(com.newgrounds.API.timeout);
com.newgrounds.API.sendMessage('You have successfully connected to the Newgrounds API Gateway');
com.newgrounds.API.sendMessage('Movie identified as "' + e.movie_name + '"');
com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, e.success, {'title': e.movie_name});
var v7 = false;
if (e.ad_status === -1) {
var v11 = 'This movie was not approved to run Flash Ads.';
com.newgrounds.API.sendWarning(v11);
com.newgrounds.API.sendWarning('visit ' + com.newgrounds.API.AD_TERMS_URL + ' to view our approval guidelines');
if (!e.ad_url) {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', v11));
} else {
v7 = true;
}
} else {
if (e.ad_status === 0) {
var v11 = 'Flash Ads are currently awaiting approval.';
com.newgrounds.API.sendNotice(v11);
if (!e.ad_url) {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', v11));
} else {
v7 = true;
}
}
}
if (e.ad_url) {
com.newgrounds.API.ad_url = unescape(e.ad_url);
if (!v7) {
com.newgrounds.API.sendMessage('This movie has been approved to run Flash Ads!');
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.ADS_APPROVED, true);
}
if (e.deny_host) {
v11 = com.newgrounds.API.getHost() + ' does not have permission to run this movie!';
com.newgrounds.API.sendWarning(v11);
com.newgrounds.API.sendWarning('\tUpdate your API configuration to unblock ' + com.newgrounds.API.getHost());
com.newgrounds.API.callListener(com.newgrounds.APIEvent.HOST_BLOCKED, true, {'real_url': unescape(e.movie_url), 'url': com.newgrounds.API.getOfficialURL()});
} else {
if (e.movie_version) {
com.newgrounds.API.sendWarning('According to your API Configuration, this version is out of date.');
if (com.newgrounds.API.version) {
com.newgrounds.API.sendWarning('\tThe this movie is version ' + com.newgrounds.API.version);
}
com.newgrounds.API.sendWarning('\tThe most current version is ' + e.movie_version);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.NEW_VERSION_AVAILABLE, true, {'version': e.movie_version, 'real_url': unescape(e.movie_url), 'url': com.newgrounds.API.getOfficialURL()});
}
}
if (e.request_portal_url) {
com.newgrounds.API.sendCommand('setPortalID', {'portal_url': _url});
}
if (com.newgrounds.API.preload) {
com.newgrounds.API.reportNewAsset();
var v8 = {};
if (com.newgrounds.API.hasUserSession()) {
v8.publisher_id = com.newgrounds.API.publisher_id;
v8.user_id = com.newgrounds.API.user_id;
}
com.newgrounds.API.sendCommand('preloadSettings', v8);
}
com.newgrounds.API.reportAssetLoaded();
break;
case 'preloadSettings':
if (e.medals) {
com.newgrounds.API.populateMedals(e.medals);
if (!com.newgrounds.API.hasUserSession() and !com.newgrounds.API.debug) {
com.newgrounds.API.echo('checking for sharedobject medals...');
var v4 = com.newgrounds.API.loadLocal('medals_unlocked');
if (v4) {
for (var v32 in v4) {
v32 = Number(v32);
if (v4[v32]) {
var v3 = com.newgrounds.API.getMedal(v32);
com.newgrounds.API.echo('now unlocking ' + v3.getName());
v3.setUnlocked(true);
}
}
}
}
}
if (e.save_groups) {
com.newgrounds.API.populateSaveGroups(e.save_groups, e.save_file_path);
}
if (e.score_boards) {
com.newgrounds.API.populateScoreBoards(e.score_boards);
}
if (_root.NewgroundsAPI_SaveFileID && _root.NewgroundsAPI_SaveGroupID) {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_REQUESTED, true, {'save_id': _root.NewgroundsAPI_SaveFileID, 'group': com.newgrounds.API.getSaveGroup(_root.NewgroundsAPI_SaveGroupID)});
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.METADATA_LOADED, true);
com.newgrounds.API.reportAssetLoaded();
break;
case 'logCustomEvent':
if (e.success) {
com.newgrounds.API.sendMessage('Event \'' + e.event + '\' was logged.');
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.EVENT_LOGGED, e.success, {'event': e.event});
break;
case 'postScore':
var v9;
if (e.success) {
var v5 = 'User';
if (com.newgrounds.API.user_email) {
v5 = com.newgrounds.API.user_email;
} else {
if (com.newgrounds.API.user_name) {
v5 = com.newgrounds.API.user_name;
}
}
var v19 = com.newgrounds.API.getScoreBoard(e.board);
com.newgrounds.API.sendMessage(v5 + ' posted ' + e.value + ' to \'' + v19.name + '\'');
v9 = {'board': v19, 'value': e.value, 'username': v5};
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.SCORE_POSTED, e.success, v9);
break;
case 'loadScores':
var v9 = new Object();
var v19 = com.newgrounds.API.getScoreBoard(e.board);
if (v19.exists()) {
v19.setScores(e.scores, e.period, e.page, e.num_results);
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.SCORES_LOADED, e.success, {'board': v19});
break;
case 'unlockMedal':
var v24 = com.newgrounds.API.getMedal(e.medal_name);
v24.setUnlocked(true);
com.newgrounds.API.sendMessage('Successfuly unlocked \'' + v24.getName() + '\'');
com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDAL_UNLOCKED, e.success, {'medal_id': v24.id, 'medal': v24});
break;
case 'getMedals':
com.newgrounds.API.populateMedals(e.medals);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.MEDALS_LOADED, e.success, {'medals': com.newgrounds.API.medals});
break;
case 'loadSaveFile':
var v16 = com.newgrounds.API.getSaveGroup(e.group_id);
var v14 = new com.newgrounds.SaveFile(v16);
v14.id = e.file.save_id;
v14.name = e.file.filename;
v14.fileUrl = e.file.file;
v14.thumbnailUrl = e.file.thumb;
v14.authorName = e.file.user_name;
v14.authorId = e.file.user_id;
v14.description = e.file.description;
v14.setPermissions(e.file.status, e.file.locked);
for (var v6 in e.file.keys) {
v14.setKey(e.file.keys[v6].id, e.file.keys[v6].value);
}
for (v6 in e.file.ratings) {
v14.setRating(e.file.ratings[v6].id, e.file.ratings[v6].votes, e.file.ratings[v6].score);
}
if (e.get_contents) {
v14.loadContents();
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_INITIALIZED, e.success, {'save_id': v14.id, 'file': v14});
com.newgrounds.API.save_file = v14;
break;
case 'lookupSaveFiles':
var v12 = (com.newgrounds.API.getSaveGroup(e.group_id)).getQuery();
v12.onExecuted(e.files);
break;
case 'rateSaveFile':
var v16 = com.newgrounds.API.getSaveGroup(e.group_id);
var v14 = v16.getFile(e.save_id);
if (e.already_voted) {
var v27 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You have already voted on this item today');
com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, false, {'error': v27, 'file': v14, 'save_id': v14.id});
return undefined;
} else {
if (e.success) {
var v10 = v14.onVoted(e);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, e.success, {'rating': v10, 'file': v14, 'save_id': v14.id});
} else {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, e.success, {'file': v14, 'save_id': v14.id});
com.newgrounds.API.sendError('Your vote was not accepted.');
}
}
break;
case 'saveFile':
if (com.newgrounds.API.save_file) {
if (!com.newgrounds.API.save_file.exists()) {
com.newgrounds.API.save_file.setID(e.save_id, true);
}
com.newgrounds.API.save_file.onSaved(e);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_SAVED, e.success, {'save_id': com.newgrounds.API.save_file.__get__id(), 'file': com.newgrounds.API.save_file});
if (e.success) {
com.newgrounds.API.sendMessage('You just saved a new file (id #' + e.save_id + ') to the \'' + (com.newgrounds.API.save_file.__get__group()).__get__name() + '\' save group.');
}
}
com.newgrounds.API.save_file = null;
break;
case 'checkFilePrivs':
var v9 = {'file': com.newgrounds.API.save_file, 'filename': e.filename, 'group': e.group, 'exists': e.exists, 'can_write': e.can_write};
if (e.duplicate_id) {
v9.duplicate_id = e.duplicate_id;
}
if (!e.success) {
com.newgrounds.API.sendWarning('You do not have permission to save this file!');
}
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_PRIVS_LOADED, e.success, v9);
}
};
v1.getDispatcher = function () {
if (!com.newgrounds.API.eventDispatcher) {
com.newgrounds.API.eventDispatcher = new com.newgrounds.APIEventDispatcher();
}
return com.newgrounds.API.eventDispatcher;
};
v1.hasEventListener = function (event) {
return (com.newgrounds.API.getDispatcher()).hasEventListener(event);
};
v1.addEventListener = function (event, listener, target) {
com.newgrounds.API.echo('Adding a listener for \'' + event + '\'');
(com.newgrounds.API.getDispatcher()).addEventListener(event, listener, target);
};
v1.removeEventListener = function (event, target) {
(com.newgrounds.API.getDispatcher()).removeEventListener(event, target);
};
v1.callListener = function (event, success, data, target) {
com.newgrounds.API.echo('Fired Event: ' + event);
var v2 = new com.newgrounds.APIEvent(event, success, data);
(com.newgrounds.API.getDispatcher()).dispatchEvent(v2);
if (event == com.newgrounds.APIEvent.API_CONNECTED && !success) {
com.newgrounds.API.connected = false;
}
com.newgrounds.API.bridge.sendEvent(event, {'success': success, 'data': data});
};
v1.sendError = function (c, e) {
switch (c.command_id) {
case 'connectMovie':
clearInterval(com.newgrounds.API.timeout);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.API_CONNECTED, false, {'error': e, 'response': c});
break;
case 'saveFile':
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_SAVED, false, {'error': e, 'file': com.newgrounds.API.save_file, 'response': c});
com.newgrounds.API.save_file = null;
}
var v3 = '[Newgrounds API ERROR] :: ' + c.command_id + '() - ' + e.name + ':' + '\n' + '\t\t\t\t' + e.message;
trace(v3);
com.newgrounds.API.bridge.sendEvent('trace', {'data': v3});
};
v1.sendWarning = function (m, c) {
if (c) {
m += '\r[Newgrounds API WARNING] :: \tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.';
}
var v1 = '[Newgrounds API WARNING] :: ' + m;
trace(v1);
com.newgrounds.API.bridge.sendEvent('trace', {'data': v1});
};
v1.sendNotice = function (m, c) {
if (c) {
m += '\r[Newgrounds API NOTICE] :: \tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.';
}
trace('[Newgrounds API NOTICE] :: ' + m);
};
v1.fatalError = function (m, c) {
if (c) {
m += '\r\tSee ' + com.newgrounds.API.COMMANDS_WIKI_URL + c.toLowerCase() + ' for additional information.';
}
throw '***ERROR*** frame=' + _root._currentframe + ', class=API' + '\n' + '\n' + m;
};
v1.openLoginPage = function () {
if (com.newgrounds.API.hasUserSession()) {
return undefined;
}
if (!com.newgrounds.API.remote_auth) {
var v1 = com.newgrounds.encoders.MD5.calculate(Math.random() + 'a' + com.newgrounds.API.movie_id);
v1 = 'POOPYPANTS';
com.newgrounds.API.remote_auth = new com.newgrounds.RemoteAuth(v1);
}
var v2 = com.newgrounds.encoders.RC4.encrypt(com.newgrounds.API.remote_auth.__get__token(), com.newgrounds.API.encryption_key);
trace(v2);
getURL(com.newgrounds.API.LOGIN_URL + '?api_auth_id=' + com.newgrounds.API.movie_id + '&api_auth_key=' + v2, '_blank');
};
v1.sendSecureCommand = function (command, secure_params, unsecure_params, files) {
if (!com.newgrounds.API.debug && !com.newgrounds.API.hasUserSession() && !com.newgrounds.API.hasUserEmail()) {
com.newgrounds.API.sendError({'command_id': command}, new com.newgrounds.APIError('IDENTIFICATION_REQUIRED', 'You must be logged in, or provide an e-mail address using \'API.setUserEmail("name@domain.com");\' to use ' + command + '().'));
return undefined;
}
if (!command) {
com.newgrounds.API.fatalError('Missing command', 'sendSecureCommand');
}
if (!secure_params) {
com.newgrounds.API.fatalError('Missing secure_params', 'sendSecureCommand');
}
if (!unsecure_params) {
unsecure_params = new Object();
}
var v2 = '';
var v1 = 0;
while (v1 < 16) {
v2 += com.newgrounds.API.compression_radix.charAt(Math.floor(Math.random() * com.newgrounds.API.compression_radix.length));
++v1;
}
if (com.newgrounds.API.debug && !com.newgrounds.API.fake_session && !com.newgrounds.API.session_id) {
secure_params.session_id = '';
} else {
secure_params.session_id = com.newgrounds.API.session_id;
}
secure_params.as_version = 2;
secure_params.user_email = com.newgrounds.API.user_email;
secure_params.publisher_id = com.newgrounds.API.publisher_id;
secure_params.seed = v2;
secure_params.command_id = command;
var v6 = com.newgrounds.encoders.JSON.encode(secure_params);
trace('JSON: ' + v6 + '\n');
var v9 = com.newgrounds.encoders.MD5.calculate(v2);
var v7 = com.newgrounds.encoders.RC4.encrypt(v6, com.newgrounds.API.encryption_key);
var v8 = v9 + v7;
unsecure_params.secure = com.newgrounds.API.compressHex(v8);
com.newgrounds.API.sendCommand('securePacket', unsecure_params, false, files);
};
v1.sendCommand = function (command, params, open_browser, files) {
if (!com.newgrounds.API.connected and command != 'connectMovie') {
var v12 = 'API.' + command + '() - API.connect() must be called before this command can be called' + '\n';
com.newgrounds.API.fatalError(v12, 'connect');
}
if (open_browser) {
var v2 = new Object();
} else {
var v2 = new LoadVars();
}
v2.command_id = command;
v2.tracker_id = com.newgrounds.API.movie_id;
if (com.newgrounds.API.debug) {
v2.debug = com.newgrounds.API.debug;
}
if (params) {
for (var v9 in params) {
v2[v9] = params[v9];
}
}
if (files) {
for (v9 in files) {
v2[v9] = files[v9];
}
}
if (open_browser) {
var v6 = com.newgrounds.API.GATEWAY_URL + '?seed=' + Math.random();
for (v9 in v2) {
v6 += '&' + escape(v9) + '=' + escape(v2[v9]);
}
trace('OPENING ' + v6);
getURL(v6, '_blank');
v2.removeMovieClip();
} else {
var v10 = new LoadVars();
v10.remember_command_id = v2.command_id;
v10.onData = function (data) {
com.newgrounds.API.echo('INPUT: \r' + data + '\n');
if (data) {
var v2 = com.newgrounds.encoders.JSON.decode(data);
} else {
var v2 = {'success': false};
}
if (!v2.success) {
if (!v2.error_code && !v2.error_msg) {
v2.error_code = 'CONNECTION_FAILED';
v2.error_msg = 'Could not contact the API Gateway';
v2.command_id = this.remember_command_id;
}
var v4 = new com.newgrounds.APIError(v2.error_code, v2.error_msg);
com.newgrounds.API.sendError(v2, v4);
} else {
com.newgrounds.API.doEvent(v2);
}
};
var v7 = new Array();
for (var v8 in v2) {
v7.push(v8 + '=' + escape(v2[v8]));
}
com.newgrounds.API.echo('POST ' + com.newgrounds.API.GATEWAY_URL + '?' + v7.join('&'));
v2.sendAndLoad(com.newgrounds.API.GATEWAY_URL + '?seed=' + Math.random(), v10, 'POST');
com.newgrounds.API.last_command = v2.command_id;
}
};
v1.renderAd = function (target) {
if (com.newgrounds.API.ad_swf_url) {
target.background = target.createEmptyMovieClip('background', 100);
target.background.beginFill(0);
target.background.moveTo(0, 0);
target.background.lineTo(300, 0);
target.background.lineTo(300, 250);
target.background.lineTo(0, 250);
target.background.lineTo(0, 0);
target.background.endFill();
target.mask = target.createEmptyMovieClip('mask', 101);
target.mask.beginFill(0);
target.mask.moveTo(0, 0);
target.mask.lineTo(300, 0);
target.mask.lineTo(300, 250);
target.mask.lineTo(0, 250);
target.mask.lineTo(0, 0);
target.mask.endFill();
target.clip = target.createEmptyMovieClip('clip', 102);
target.clip.ad = target.clip.createEmptyMovieClip('ad', 100);
target.clip.setMask(target.mask);
target.clip.ad._lockroot = true;
loadMovie(com.newgrounds.API.ad_swf_url, target.clip.ad);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.AD_ATTACHED, true, {'target': target});
} else {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.AD_ATTACHED, false, new com.newgrounds.APIError('FLASH_ADS_NOT_APPROVED', 'Unable to render ad'));
}
};
v1.attachFlashAd = function (target) {
if (com.newgrounds.API.checkAdFlood()) {
com.newgrounds.API.ad_swf_url = null;
} else {
if (com.newgrounds.API.checkAdCache()) {
com.newgrounds.API.reportNewAsset();
var v1 = new LoadVars();
v1.onData = function (data) {
if (data) {
com.newgrounds.API.ad_swf_url = data;
} else {
com.newgrounds.API.ad_swf_url = null;
}
com.newgrounds.API.reportAssetLoaded();
com.newgrounds.API.renderAd(target);
};
if (com.newgrounds.API.ad_url.indexOf('?') > -1) {
v1.load(com.newgrounds.API.ad_url + '&random=' + Math.random());
} else {
v1.load(com.newgrounds.API.ad_url + '?random=' + Math.random());
}
if (!com.newgrounds.API.ad_warning) {
com.newgrounds.API.ad_warning = true;
com.newgrounds.API.sendMessage('You may get a security sandbox violation from this ad. This is nothing to worry about!');
}
} else {
if (com.newgrounds.API.ad_swf_url) {
com.newgrounds.API.renderAd(target);
}
}
}
};
v1.checkAdFlood = function () {
if (!com.newgrounds.API.ad_url) {
return false;
}
var v2 = new Date();
var v1 = v2.getTime();
if (v1 >= com.newgrounds.API.ad_flood) {
if (v1 - com.newgrounds.API.ad_flood > 1000) {
com.newgrounds.API.ad_flood = v1 + 1000;
return false;
}
com.newgrounds.API.ad_flood = v1;
com.newgrounds.API.sendWarning('This movie is attempting to load multiple ads at too high of a frequency; you may have a bad preloader loop.');
return true;
}
return false;
};
v1.checkAdCache = function () {
if (!com.newgrounds.API.ad_url) {
return false;
}
var v2 = new Date();
var v1 = v2.getTime();
if (v1 >= com.newgrounds.API.ad_url_cache) {
com.newgrounds.API.ad_url_cache = v1 + 300000;
return true;
}
return false;
};
v1.sendMessage = function (m, r) {
var v1 = '[Newgrounds API] :: ' + m;
if (r) {
return v1;
} else {
trace(v1);
com.newgrounds.API.bridge.sendEvent('trace', {'data': v1});
}
};
v1.echo = function (m) {
if (com.newgrounds.API.do_echo) {
trace(m);
}
};
v1.LOGIN_URL = 'http://ng-local.newgrounds.com/apilogin/';
v1.do_echo = true;
v1.GATEWAY_URL = 'http://www.ngads.com/gateway_v2.php';
v1.NEWGROUNDS_PREVIEW = 'uploads.ungrounded.net/previews';
v1.AD_TERMS_URL = 'http://www.newgrounds.com/wiki/using-the-site/terms-of-use/flash-ads/';
v1.COMMANDS_WIKI_URL = 'http://www.newgrounds.com/wiki/developer-resources/flash-api/commands/';
v1.LOCAL_HOST = 'localhost';
v1.NEWGROUNDS_WWW = 'www.newgrounds.com';
v1.PREVIEW_HOSTS = new Array(com.newgrounds.API.LOCAL_HOST, com.newgrounds.API.NEWGROUNDS_PREVIEW);
v1.ad_url_cache = 0;
v1.ad_flood = 0;
v1.ad_warning = false;
v1.save_file = null;
v1.publisher_id = 1;
v1.fake_session = false;
v1.medals = null;
v1.userpage_format = null;
v1.scoreboards = new Array();
v1.save_groups = null;
v1.compression_radix = '/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X';
v1.errors = com.newgrounds.APIError.init_codes();
v1.sharedObjects = new Object();
v1.bridge = new com.newgrounds.Bridge(_root.NewgroundsAPI_SandboxID);
v1.preload = true;
v1.preload_items = 0;
v1.preload_items_loaded = 0;
ASSetPropFlags(com.newgrounds.API.prototype, null, 1);
}
#endinitclip
}
movieClip 35 __Packages.com.newgrounds.Bridge {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.Bridge) {
var v1 = function (id) {
this.widget_id = id;
this.receiver = new LocalConnection();
this.transmitter = new LocalConnection();
this.receiver.receiveEvent = function (event, params) {
com.newgrounds.API.callListener(event, params.success, params.data);
};
try {
this.receiver.connect('rec_' + this.widget_id);
}
catch (v0) {
if (Error(v0) != null) {
var error = Error(v0);
} else {
throw v0;
}
}
};
com.newgrounds.Bridge = v1;
var v2 = v1.prototype;
v2.sendEvent = function (event, params) {
if (this.widget_id) {
this.transmitter.send(this.widget_id, 'sendEvent', event, this.validateParams(params));
}
};
v2.sendCommand = function (command, params) {
if (this.widget_id) {
this.transmitter.send(this.widget_id, 'sendCommand', command, this.validateParams(params));
}
};
v2.validateParams = function (params) {
var v2 = {};
for (var v3 in params) {
if (typeof params[v3] == 'string' || typeof params[v3] == 'number') {
v2[v3] = params[v3];
}
}
return v2;
};
ASSetPropFlags(com.newgrounds.Bridge.prototype, null, 1);
}
#endinitclip
}
movieClip 36 __Packages.com.newgrounds.SaveFile {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.SaveFile) {
var v1 = function (_group) {
this._group = _group;
this._filename = null;
this._file_id = null;
this._contents = null;
this._thumbnail = null;
this._thumbnail_url = null;
this.raw = null;
this.img = null;
this._draft = false;
this._keys = new Array();
this._ratings = new Array();
this._file_url = null;
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.FILE_PRIVS_LOADED, this.checkPrivs, this);
};
com.newgrounds.SaveFile = v1;
var v2 = v1.prototype;
v1.setFilePath = function (path) {
com.newgrounds.SaveFile.file_path = path + '/';
};
v1.setImagePath = function (path) {
com.newgrounds.SaveFile.image_path = path + '/';
};
v2.__get__name = function () {
return this._filename;
};
v2.__set__name = function (s) {
this._filename = s;
return this.__get__name();
};
v2.__get__id = function () {
return this._file_id;
};
v2.__get__description = function () {
return this._description;
};
v2.__set__description = function (s) {
this._description = s;
return this.__get__description();
};
v2.__get__contents = function () {
return this._contents;
};
v2.__set__contents = function (o) {
this._contents = o;
return this.__get__contents();
};
v2.__get__thumbnailUrl = function () {
return com.newgrounds.SaveFile.image_path + this._thumbnail_url;
};
v2.__set__thumbnailUrl = function (s) {
this._thumbnail_url = s;
return this.__get__thumbnailUrl();
};
v2.__get__fileUrl = function () {
return com.newgrounds.SaveFile.file_path + this._file_url;
};
v2.__set__fileUrl = function (s) {
this._file_url = s;
return this.__get__fileUrl();
};
v2.__get__authorID = function () {
return this._author_id;
};
v2.__set__authorID = function (i) {
this._author_id = i;
return this.__get__authorID();
};
v2.__get__authorName = function () {
return this._author_name;
};
v2.__set__authorName = function (n) {
this._author_name = n;
return this.__get__authorName();
};
v2.__get__views = function () {
return this._views;
};
v2.__get__draft = function () {
return this._draft;
};
v2.__set__draft = function (d) {
this._draft = d;
return this.__get__draft();
};
v2.__get__group = function () {
return this._group;
};
v2.__get__groupId = function () {
return this._group.getID();
};
v2.__get__groupName = function () {
return this._group.getName();
};
v2.__get__groupType = function () {
return this._group.getType();
};
v2.__get__locked = function () {
return this._locked;
};
v2.__get__shared = function () {
return this._isShared();
};
v2.__get__isPrivate = function () {
return this._isPrivate();
};
v2.__get__isPublic = function () {
return this._isPublic();
};
v2.__get__approved = function () {
return this._isApproved();
};
v2.__get__keys = function () {
return this._keys;
};
v2.__get__ratings = function () {
return this._ratings;
};
v2.loadAuthorPage = function () {
com.newgrounds.API.loadUserPage(this._author_id, this._author_name);
};
v2.getID = function () {
return this._file_id;
};
v2.exists = function () {
return this._file_id !== null;
};
v2.getGroup = function () {
return this._group;
};
v2.getName = function () {
return this._filename;
};
v2._isPrivate = function () {
return this.status == com.newgrounds.SaveFile.STATUS.PRIVATE;
};
v2._isShared = function () {
return this.status > com.newgrounds.SaveFile.STATUS.PRIVATE;
};
v2._isApproved = function () {
return this.status > com.newgrounds.SaveFile.STATUS.UNAPPROVED;
};
v2._isPublic = function () {
if (this._isPrivate()) {
return false;
return false;
}
if (this._group.isType('SYSTEM') or this._group.isType('PRIVATE')) {
return false;
return false;
}
if (this._group.isType('PUBLIC')) {
return true;
return false;
}
if (this._isApproved()) {
return true;
}
return false;
};
v2.isLocked = function () {
return this._locked;
};
v2.getDescription = function () {
return this._description;
};
v2.getShared = function () {
return this._draft;
};
v2.getThumbnailImageScan = function () {
return this.img;
};
v2.getRawContents = function () {
return this.raw;
};
v2.getDuplicateID = function () {
return this.duplicate_id;
};
v2.getKeys = function () {
return this._keys;
};
v2.getKey = function (key) {
var v3 = (this.getGroup()).getKey(key);
var v2 = 0;
while (v2 < this._keys.length) {
if (this._keys[v2].id == v3.key_id) {
return this._keys[v2].value;
}
++v2;
}
};
v2.getRating = function (rating) {
var v2 = (this.getGroup()).getRating(rating);
if (this._ratings[v2.rating_id]) {
return this._ratings[v2.rating_id];
} else {
return null;
}
};
v2.overwriteAllowed = function () {
return this.overwrite;
};
v2.getFileURL = function () {
return com.newgrounds.SaveFile.file_path + this._file_url;
};
v2.getThumbnailURL = function () {
return com.newgrounds.SaveFile.image_path + this._thumbnail_url;
};
v2.overwriteExisting = function () {
this.overwrite = true;
};
v2.setID = function (id, add_to_group) {
this._file_id = id;
if (add_to_group) {
(this.getGroup()).addFile(this);
}
};
v2.setName = function (filename, locked) {
this._filename = filename;
this._locked = locked;
};
v2.setDescription = function (description) {
this._description = description;
};
v2.setDraft = function (draft) {
this._draft = draft;
};
v2.setContents = function (_contents) {
this._contents = _contents;
};
v2.setThumbnail = function (thumb) {
if (thumb) {
this._thumbnail = thumb;
} else {
this._thumbnail = null;
}
};
v2.setThumbnailURL = function (url) {
this._thumbnail_url = url;
};
v2.setFileURL = function (url) {
this._file_url = url;
};
v2.setPermissions = function (status, _locked) {
this._locked = _locked;
this.status = status;
};
v2.setKey = function (key, val) {
var v4 = (this.getGroup()).getKeyID(key);
var v2;
if (!v4) {
this.onError('\'' + key + '\' is not a valid key for the \'' + this._group.__get__name() + '\' save group', 'setKey', 'INVALID_VALUE', true);
return undefined;
}
if (!this._group.keyValueIsValid(key, val) && val !== null) {
this.onError('\'' + val + '\' is not a valid ' + this._group.getKeyType(key, true), 'setKey', 'INVALID_VALUE', true);
return undefined;
}
switch (this._group.getKeyType(key, true)) {
case 'string':
if (val) {
val = String(val);
} else {
val = undefined;
}
break;
default:
val = Number(val);
}
var v5 = {'id': v4, 'value': val};
for (var v6 in this._keys) {
v2 = this._keys[v6];
if (v2.id == v4) {
this._keys[v6] = v5;
return undefined;
}
}
this._keys.push(v5);
};
v2.setRating = function (rating, votes, score) {
var v2 = (this.getGroup()).getRating(rating);
if (!votes) {
votes = 0;
}
if (!score) {
score = 0;
}
if (!v2.is_float) {
score = Math.round(Number(score));
}
this._ratings[v2.rating_id] = {'id': Number(v2.rating_id), 'name': v2.rating_name, 'votes': Number(votes), 'score': Number(score)};
return this._ratings[v2.rating_id];
};
v2.clearBuffer = function () {
this._contents = null;
this.raw = null;
this.img = null;
this.scanner = null;
this.overwrite = false;
this.duplicate_id = null;
};
v2.onError = function (msg, funct, code) {
com.newgrounds.SaveFile.busy = false;
if (!code) {
code = 'SAVE_FILE_ERROR';
}
if (!funct) {
funct = 'unknown_function';
}
var v3 = 'getSaveGroup(\'' + this._group.getName() + '\')';
if (this.exists()) {
funct = v3 + '.getFile(\'' + this.getName() + '\').' + funct;
} else {
funct = v3 + '.getNewFile().' + funct;
}
var v5 = new com.newgrounds.APIError(code, msg);
com.newgrounds.API.sendError({'command_id': funct}, v5);
};
v2.onSaved = function (p) {
com.newgrounds.SaveFile.busy = false;
if (!this.exists()) {
this.setID(p.save_id, true);
}
this.setName(p.filename);
this.setFileURL(p.file_url);
if (p.thumbnail) {
this._thumbnail_url = p.thumbnail;
}
};
v2.onVoted = function (p) {
trace('ONVOTED WAS CALLED');
return this.setRating(p.rating_id, p.votes, p.score);
};
v2.sendRating = function (rating, vote) {
var v6 = null;
if (!com.newgrounds.API.hasUserSession()) {
v6 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You must be logged in to vote on save files');
}
var v2 = this._group.getRating(rating);
if (!v2) {
v6 = new com.newgrounds.APIError('PERMISSION_DENIED', '\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' save group');
}
if (this.voted === true) {
v6 = new com.newgrounds.APIError('PERMISSION_DENIED', 'You have already voted on this item today');
}
if (vote < v2.min_value or vote > v2.max_value) {
v6 = new com.newgrounds.APIError('PERMISSION_DENIED', '\'' + rating + '\' votes must be between ' + v2.min_value + ' and ' + v2.max_value);
}
if (v6) {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.VOTE_COMPLETE, false, {'error': v6, 'file': this});
return undefined;
}
this.voted = true;
com.newgrounds.API.rateSaveFile(this, v2, vote);
};
v2.replace = function () {
if (com.newgrounds.SaveFile.busy) {
this.onError('Another file is currently being saved, please try again later', 'replace');
return undefined;
}
this.overwriteExisting();
this.save();
};
v2.save = function () {
if (com.newgrounds.API.hasUserSession() && !this._author_id && !this._author_name) {
this._author_id = com.newgrounds.API.getUserID();
this._author_name = com.newgrounds.API.getUserName();
}
if (com.newgrounds.SaveFile.busy) {
this.onError('Another file is currently being saved, please try again later', 'save', 'UPLOAD_IN_PROGRESS');
return undefined;
}
com.newgrounds.SaveFile.busy = true;
if (this.isLocked()) {
this.onError('This file is _locked and cannot be overwritten.', 'save', 'PERMISSION_DENIED');
return undefined;
}
if (!this._filename) {
this.onError('Please provide a name for your file.', 'save', 'MISSING_PARAM');
return undefined;
} else {
if (!this._contents) {
this.onError('The file is empty.', 'save', 'MISSING_PARAM');
return undefined;
}
}
this.img = null;
com.newgrounds.API.checkFilePrivs(this);
};
v2.checkPrivs = function (e) {
if (e.data.file.id != this.__get__id()) {
return undefined;
}
if (e.success) {
if (e.data.can_write) {
this.can_write = e.data.can_write;
if (e.data.duplicate_id) {
this.duplicate_id = e.data.duplicate_id;
}
if (e.data.exists && !this.overwriteAllowed()) {
this.onError('You already have a file named \'' + this.getName() + '\'', 'save', 'CONFIRM_REQUEST');
} else {
this.startFile();
}
} else {
this.onError('This file is _locked and cannot be overwritten', 'save', 'PERMISSION_DENIED');
}
} else {
this.onError('There was a problem looking up your file\'s details. The server may be down.', 'save', 'UNKNOWN_ERROR');
}
};
v2.startFile = function () {
if (this.can_write) {
if (this._thumbnail) {
this.scanner = new com.newgrounds.encoders.ImageScanner(this._thumbnail);
this.scanner.setCallback(this, 'encodeFile');
this.scanner.startScan(100, 100, true);
} else {
this.encodeFile();
}
} else {
this.onError('You do not have permission to save this file.', 'save', 'PERMISSION_DENIED');
}
};
v2.encodeFile = function (img) {
this.img = img;
this.raw = (com.newgrounds.encoders.SerialXML.encode(this._contents)).toString();
this.compressFile();
};
v2.compressFile = function () {
com.newgrounds.encoders.LZW2.compress(this.raw, function (s, p) {
p.file.onCompressed(s);
}, {'file': this});
};
v2.onCompressed = function (compressed) {
this.raw = escape(compressed);
this.writeFile();
};
v2.getProgress = function () {};
v2.writeFile = function () {
((this.getGroup()).getQuery()).clearCache();
com.newgrounds.API.saveFile(this);
this.clearBuffer();
};
v2.loadContents = function () {
if (this._contents) {
com.newgrounds.API.setCurrentSaveFile(this);
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, true, {'file': this});
return undefined;
}
if (!this.getFileURL()) {
var v4 = new com.newgrounds.APIError('FILE_NOT_FOUND', 'Attempted to load contents of an unsaved file.');
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, false, {'file': this, 'error': v4});
return undefined;
}
var v2 = new LoadVars();
v2.target = this;
var target = this;
v2.onData = function (encoded) {
target.onLoaded(encoded);
};
v2.load(this.getFileURL());
};
v2.onLoaded = function (encoded) {
if (encoded == undefined) {
var v3 = new com.newgrounds.APIError('FILE_NOT_FOUND', 'We could not find the contents for this file. It may have been deleted.');
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, false, {'file': this, 'error': v3});
return undefined;
}
com.newgrounds.encoders.LZW.setXMLSafe(true);
this._contents = com.newgrounds.encoders.SerialXML.decode(com.newgrounds.encoders.LZW.decompress(encoded));
com.newgrounds.API.callListener(com.newgrounds.APIEvent.FILE_LOADED, true, {'file': this});
};
v2.setViews = function (n) {
this._views = n;
};
v1.busy = false;
v2.can_write = false;
v2._draft = false;
v2.status = 0;
v2.voted = false;
v2._views = 0;
v2._locked = false;
v2.overwrite = false;
v2.duplicate_id = null;
v2._keys = null;
v2._ratings = null;
v2._author_id = null;
v2._author_name = null;
v1.STATUS = {'PRIVATE': 1, 'PUBLIC': 2, 'UNAPPROVED': 3, 'APPROVED': 4};
v2.addProperty('approved', v2.__get__approved, function () {});
v2.addProperty('authorID', v2.__get__authorID, v2.__set__authorID);
v2.addProperty('authorName', v2.__get__authorName, v2.__set__authorName);
v2.addProperty('contents', v2.__get__contents, v2.__set__contents);
v2.addProperty('description', v2.__get__description, v2.__set__description);
v2.addProperty('draft', v2.__get__draft, v2.__set__draft);
v2.addProperty('fileUrl', v2.__get__fileUrl, v2.__set__fileUrl);
v2.addProperty('group', v2.__get__group, function () {});
v2.addProperty('groupId', v2.__get__groupId, function () {});
v2.addProperty('groupName', v2.__get__groupName, function () {});
v2.addProperty('groupType', v2.__get__groupType, function () {});
v2.addProperty('id', v2.__get__id, function () {});
v2.addProperty('isPrivate', v2.__get__isPrivate, function () {});
v2.addProperty('isPublic', v2.__get__isPublic, function () {});
v2.addProperty('keys', v2.__get__keys, function () {});
v2.addProperty('locked', v2.__get__locked, function () {});
v2.addProperty('name', v2.__get__name, v2.__set__name);
v2.addProperty('ratings', v2.__get__ratings, function () {});
v2.addProperty('shared', v2.__get__shared, function () {});
v2.addProperty('thumbnailUrl', v2.__get__thumbnailUrl, v2.__set__thumbnailUrl);
v2.addProperty('views', v2.__get__views, function () {});
ASSetPropFlags(com.newgrounds.SaveFile.prototype, null, 1);
}
#endinitclip
}
movieClip 37 __Packages.com.newgrounds.SaveGroup {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.SaveGroup) {
var v1 = function (group_id, group_name, group_type) {
this.group_name = group_name;
this.group_id = group_id;
this.group_type = group_type;
this.query = new com.newgrounds.SaveGroupQuery(this);
this.ratings = new Array();
this.keys = new Array();
this.files = new Array();
};
com.newgrounds.SaveGroup = v1;
var v2 = v1.prototype;
v2.__get__id = function () {
return this.group_id;
};
v2.__get__name = function () {
return this.group_name;
};
v2.__get__type = function () {
return this.group_type;
};
v2.addFile = function (file) {
var v2 = 0;
while (v2 < this.files.length) {
if (this.files[v2].getID() == file.getID()) {
this.files[v2] = file;
return undefined;
}
++v2;
}
this.files.push(file);
};
v2.getFile = function (file_id) {
trace('getting the file ' + file_id);
var v2 = 0;
while (v2 < this.files.length) {
trace('Looking up ' + file_id + ' :: ' + this.files[v2].getID() + ' || ' + this.files[v2].getName());
if (com.newgrounds.SaveGroup.isNumeric(file_id) and this.files[v2].getID() == Number(file_id)) {
return this.files[v2];
} else {
if (this.files[v2].getName() == file_id) {
return this.files[v2];
}
}
++v2;
}
return null;
};
v2.addRating = function (rating_id, rating_name, min_value, max_value, is_float) {
var v3 = {'rating_id': rating_id, 'rating_name': rating_name, 'min_value': min_value, 'max_value': max_value, 'is_float': is_float};
if (!this.getRatingID(rating_name)) {
this.ratings.push(v3);
}
};
v2.getRating = function (rating_id) {
var v2 = 0;
while (v2 < this.ratings.length) {
if (com.newgrounds.SaveGroup.isNumeric(rating_id) and this.ratings[v2].rating_id == rating_id) {
return this.ratings[v2];
} else {
if (this.ratings[v2].rating_name == rating_id) {
return this.ratings[v2];
}
}
++v2;
}
return null;
};
v2.getRatingID = function (rating_id) {
var v2 = this.getRating(rating_id);
if (v2) {
return v2.rating_id;
}
return null;
};
v2.getRatingName = function (rating_id) {
var v2 = this.getRating(rating_id);
if (v2) {
return v2.rating_name;
}
return null;
};
v2.addKey = function (key_id, key_name, key_type) {
trace('>>>>>>>>>>> ADDING KEY ' + key_id + ' ' + key_name + ' ' + key_type);
var v2 = {'key_id': key_id, 'key_name': key_name, 'key_type': key_type};
if (!this.getKey(key_name)) {
this.keys.push(v2);
}
};
v2.getKey = function (key_id) {
var v2 = 0;
while (v2 < this.keys.length) {
if (com.newgrounds.SaveGroup.isNumeric(key_id) and this.keys[v2].key_id == key_id) {
return this.keys[v2];
} else {
if (this.keys[v2].key_name == key_id) {
return this.keys[v2];
}
}
++v2;
}
return null;
};
v2.getKeyType = function (key_name, as_string) {
var v2 = this.getKey(key_name);
if (v2) {
return as_string ? com.newgrounds.SaveGroup.KEY_TYPES[v2.key_type] : v2.key_type;
}
return null;
};
v2.getKeyID = function (key_id) {
var v2 = this.getKey(key_id);
if (v2) {
return v2.key_id;
}
return null;
};
v2.getKeyName = function (key_id) {
var v2 = this.getKey(key_id);
if (v2) {
return v2.key_name;
}
return null;
};
v2.keyValueIsValid = function (key, value) {
var v4;
var v7;
if (typeof value == 'number' or (Number(value)).toString() == String(value)) {
value = Number(value);
v4 = (Math.round(value) === value) ? 'integer' : 'float';
} else {
v4 = typeof value;
if (v4 == 'string') {
var v6 = '01234567890.-';
var v5 = true;
var v2 = 0;
while (v2 < value.length) {
if (v6.indexOf(value.charAt(v2)) < 0) {
v5 = false;
break;
}
++v2;
}
if (v5) {
value = Number(value);
v4 = 'float';
}
}
}
switch (this.getKeyType(key, true)) {
case 'integer':
v7 = v4 == 'integer' or v4 == 'boolean';
return v7;
case 'float':
v7 = v4 == 'float' or v4 == 'integer' or v4 == 'boolean';
return v7;
case 'string':
v7 = v4 == 'string' or v4 == 'float' or v4 == 'integer' or v4 == 'boolean';
return v7;
case 'boolean':
v7 = v4 == 'boolean' or value == 1 or value == 0 or value == '';
return v7;
}
v7 = false;
return v7;
};
v2.isType = function (type) {
return this.group_type == com.newgrounds.SaveGroup.TYPES[type.toUpperCase()];
};
v2.getID = function () {
return this.group_id;
};
v2.getName = function () {
return this.group_name;
};
v2.getType = function () {
return this.group_type;
};
v2.isSystem = function () {
return undefined;
};
v2.getQuery = function (as_object) {
if (as_object) {
return this.query.toObject();
}
return this.query;
};
v2.newQuery = function () {
this.query.reset();
return this.query;
};
v2.clearQuery = function () {
this.query.reset();
};
v2.newFile = function () {
var v2 = new com.newgrounds.SaveFile(this);
return v2;
};
v1.isNumeric = function (value) {
return typeof value == 'number' or (Number(value)).toString() == String(value);
};
v1.KEY_TYPES = [null, 'float', 'integer', 'string', 'boolean'];
v1.TYPES = {'SYSTEM': 0, 'PRIVATE': 1, 'PUBLIC': 2, 'MODERATED': 3};
v2.addProperty('id', v2.__get__id, function () {});
v2.addProperty('name', v2.__get__name, function () {});
v2.addProperty('type', v2.__get__type, function () {});
ASSetPropFlags(com.newgrounds.SaveGroup.prototype, null, 1);
}
#endinitclip
}
movieClip 38 __Packages.com.newgrounds.ValidationTools {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.ValidationTools) {
var v1 = function () {};
com.newgrounds.ValidationTools = v1;
var v2 = v1.prototype;
v1.isNumber = function (v) {
if (typeof v == 'number') {
return true;
return false;
}
if (typeof v == 'string' and (Number(v)).toString() == v) {
return true;
}
return false;
};
v1.isInteger = function (v) {
if (com.newgrounds.ValidationTools.isNumber(v)) {
v = Number(v);
return Math.floor(v) == v;
}
return false;
};
v1.isFloat = function (v) {
return com.newgrounds.ValidationTools.isNumber(v);
};
v1.isString = function (v) {
if (typeof v == 'string' or typeof v == 'number') {
return true;
}
return false;
};
v1.isEmpty = function (o) {
for (var v2 in o) {
return false;
}
return true;
};
ASSetPropFlags(com.newgrounds.ValidationTools.prototype, null, 1);
}
#endinitclip
}
movieClip 39 __Packages.com.newgrounds.APIEvent {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.APIEvent) {
var v1 = function (type, success, data) {
this._type = type;
this._success = success;
if (data.isError()) {
this._error = data;
this.data = null;
} else {
if (data.error && data.error.isError()) {
this._error = data.error;
this.data = data;
} else {
this.data = data;
this._error = null;
}
}
};
com.newgrounds.APIEvent = v1;
var v2 = v1.prototype;
v2.__get__error = function () {
return this._error;
};
v2.__get__type = function () {
return this._type;
};
v2.__get__success = function () {
return this._success;
};
v1.API_CONNECTED = 'apiConnected';
v1.ADS_APPROVED = 'adsApproved';
v1.AD_ATTACHED = 'adAttached';
v1.HOST_BLOCKED = 'hostBlocked';
v1.NEW_VERSION_AVAILABLE = 'newVersionAvailable';
v1.EVENT_LOGGED = 'eventLogged';
v1.SCORE_POSTED = 'scorePosted';
v1.SCORES_LOADED = 'scoresLoaded';
v1.UNLOCK_MEDAL = 'unlockMedal';
v1.MEDAL_UNLOCKED = 'medalUnlocked';
v1.MEDALS_LOADED = 'medalsLoaded';
v1.METADATA_LOADED = 'metadataLoaded';
v1.FILE_PRIVS_LOADED = 'filePrivsLoaded';
v1.FILE_SAVED = 'fileSaved';
v1.FILE_LOADED = 'fileLoaded';
v1.FILE_INITIALIZED = 'fileInitialized';
v1.FILE_REQUESTED = 'fileRequested';
v1.QUERY_COMPLETE = 'queryComplete';
v1.VOTE_COMPLETE = 'voteComplete';
v1.API_ERROR = 'apiError';
v1.UNCAUGHT_EVENT = 'uncaughtEvent';
v2.addProperty('error', v2.__get__error, function () {});
v2.addProperty('success', v2.__get__success, function () {});
v2.addProperty('type', v2.__get__type, function () {});
ASSetPropFlags(com.newgrounds.APIEvent.prototype, null, 1);
}
#endinitclip
}
movieClip 40 __Packages.com.newgrounds.SaveGroupQuery {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.SaveGroupQuery) {
var v1 = function (_group) {
this._group = _group;
this.reset();
};
com.newgrounds.SaveGroupQuery = v1;
var v2 = v1.prototype;
v2.__get__group = function () {
return this._group;
};
v2.__get__groupId = function () {
return this._group.getID();
};
v2.__get__resultsPerPage = function () {
return this._num_results;
};
v2.__set__resultsPerPage = function (n) {
this._num_results = n;
return this.__get__resultsPerPage();
};
v2.__get__pages = function () {
return this._pages;
};
v2.__get__page = function () {
return this._page;
};
v2.__set__page = function (n) {
this._page = n;
return this.__get__page();
};
v2.__get__randomize = function () {
return this._randomize_results;
};
v2.__set__randomize = function (b) {
this._randomize_results = b;
return this.__get__randomize();
};
v2.__get__results = function () {
return this._results;
};
v2.clearCache = function () {
this._results = [];
};
v2.reset = function () {
this.file_conditions = new Array();
this.key_conditions = new Array();
this.rating_conditions = new Array();
this.sort_conditions = new Array();
this.lookup_keys = new Object();
this.lookup_ratings = new Object();
this._num_results = 20;
this._page = 1;
this._randomize_results = false;
this._group_by = new Array();
this.clearCache();
};
v2.getGroup = function () {
return this._group;
};
v2.getGroupID = function () {
return this._group.getID();
};
v2.isRandomized = function () {
return this._randomize_results;
};
v2.toObject = function () {
var v2;
var v11 = {'page': this._page, 'num_results': this._num_results};
if (this._randomize_results) {
v11.randomize = 1;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.file_conditions)) {
var v12 = [];
v2 = 0;
while (v2 < this.file_conditions.length) {
var v6 = this.file_conditions[v2];
v12.push({'field': com.newgrounds.SaveGroupQuery.file_fields[v6.field.toUpperCase()].id, 'operator': v6.operator, 'value': v6.value});
++v2;
}
v11.file_conditions = v12;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.key_conditions)) {
v11.key_conditions = this.key_conditions;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.rating_conditions)) {
v11.rating_conditions = this.rating_conditions;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.sort_conditions)) {
var v14 = [];
v2 = 0;
while (v2 < this.sort_conditions.length) {
var v3 = this.sort_conditions[v2];
if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_FILES) {
var v8 = com.newgrounds.SaveGroupQuery.file_fields[v3.field.toUpperCase()].id;
} else {
var v8 = v3.field;
}
var v5 = {'field': v8, 'table': v3.table};
if (v3.desc) {
v5.desc = 1;
}
if (v3.extra) {
v5.extra = v3.extra;
}
v14.push(v5);
++v2;
}
v11.sort_conditions = v14;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.lookup_keys)) {
var v15 = [];
for (v2 in this.lookup_keys) {
v15.push(v2);
}
v11.lookup_keys = v15;
}
if (!com.newgrounds.ValidationTools.isEmpty(this.lookup_ratings)) {
var v13 = [];
for (v2 in this.lookup_ratings) {
v13.push(v2);
}
v11.lookup_ratings = v13;
}
if (!com.newgrounds.ValidationTools.isEmpty(this._group_by)) {
var v16 = [];
v2 = 0;
while (v2 < this._group_by.length) {
var v4 = this._group_by[v2];
if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_FILES) {
v8 = com.newgrounds.SaveGroupQuery.file_fields[v4.field.toUpperCase()].id;
} else {
v8 = v4.field;
}
v16.push({'field': v8, 'table': v4.table});
++v2;
}
v11.group_by = v16;
}
return v11;
};
v2.toString = function () {
var v9;
var v2;
var v11 = [];
v9 = 'Lookup:\r';
var v14 = [];
for (var v6 in com.newgrounds.SaveGroupQuery.file_fields) {
v14.push(' ' + v6);
v2 = true;
}
v9 += v14.join('\n');
v11.push(v9);
v9 = '';
v2 = false;
var v16 = [];
for (v6 in this.lookup_keys) {
v16.push(' KEY \'' + this._group.getKeyName(v6) + '\'');
v2 = true;
}
if (v2) {
v9 += v16.join('\n');
v11.push(v9);
}
v9 = '';
v2 = false;
var v15 = [];
for (v6 in this.lookup_ratings) {
v15.push(' RATING \'' + this._group.getRatingName(v6) + '\'');
v2 = true;
}
if (v2) {
v9 += v15.join('\n');
v11.push(v9);
}
v9 = 'Where:\r';
v2 = false;
var v8 = [];
v6 = 0;
while (v6 < this.file_conditions.length) {
var v7 = this.file_conditions[v6];
var v10 = ' ' + v7.field + ' ' + v7.operator + ' ' + v7.value;
v8.push(v10);
v2 = true;
++v6;
}
v6 = 0;
while (v6 < this.key_conditions.length) {
v7 = this.key_conditions[v6];
v10 = ' KEY \'' + this._group.getKeyName(v7.key_id) + '\' ' + v7.operator + ' ' + v7.value;
v8.push(v10);
v2 = true;
++v6;
}
v6 = 0;
while (v6 < this.rating_conditions.length) {
v7 = this.rating_conditions[v6];
v10 = ' RATING \'' + this._group.getRatingName(v7.rating_id) + '\' ' + v7.operator + ' ' + v7.value;
v8.push(v10);
v2 = true;
++v6;
}
if (v2) {
v9 += v8.join('\n');
v11.push(v9);
}
v9 = 'Group By:\r';
v2 = false;
var v13 = [];
v6 = 0;
while (v6 < this._group_by.length) {
var v4 = this._group_by[v6];
var v5;
if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_KEYS) {
v5 = ' KEY \'' + this._group.getKeyName(v4.field) + '\'';
} else {
if (v4.table == com.newgrounds.SaveGroupQuery.TABLE_RATINGS) {
v5 = ' RATING \'' + this._group.getRatingName(v4.field) + '\'';
} else {
v5 = ' ' + v4.field;
}
}
v13.push(v5);
v2 = true;
++v6;
}
if (v2) {
v9 += v13.join('\n');
v11.push(v9);
}
v9 = 'Order By:\r';
v2 = false;
var v12 = [];
if (this.isRandomized()) {
v12.push(' RANDOM');
v2 = true;
}
v6 = 0;
while (v6 < this.sort_conditions.length) {
var v3 = this.sort_conditions[v6];
if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_KEYS) {
v5 = ' KEY \'' + this._group.getKeyName(v3.field) + '\'';
} else {
if (v3.table == com.newgrounds.SaveGroupQuery.TABLE_RATINGS) {
v5 = ' RATING \'' + this._group.getRatingName(v3.field) + '\' ' + ((v3.extra == 'votes') ? 'VOTES' : 'SCORE');
} else {
v5 = ' ' + v3.field;
}
}
v5 += v3.desc ? ' (DESCENDING)' : '';
v12.push(v5);
v2 = true;
++v6;
}
if (v2) {
v9 += v12.join('\n');
v11.push(v9);
}
v11.push('Page:\r ' + this._page);
v11.push('Results Per Page:\r ' + this._num_results);
return v11.join('\n');
};
v2.setResultsPerPage = function (r) {
this._num_results = r;
this.clearCache();
};
v2.setPage = function (p) {
this._page = p;
this.clearCache();
};
v2.setRandomize = function (bool) {
this._randomize_results = (bool === false) ? false : true;
};
v2.includeKey = function (key) {
if (!this._group.getKeyID(key)) {
trace('[SaveGroupQuery Error] :: \'' + key + '\' is not a valid key for the \'' + this._group.__get__name() + '\' group.');
return undefined;
}
this.lookup_keys[this._group.getKeyID(key)] = 1;
this.clearCache();
};
v2.includeRating = function (rating) {
if (!this._group.getRatingID(rating)) {
trace('[SaveGroupQuery Error] :: \'' + rating + '\' is not a valid rating for the \'' + this._group.__get__name() + '\' group.');
return undefined;
}
this.lookup_ratings[this._group.getRatingID(rating)] = 1;
this.clearCache();
};
v2.groupBy = function (field) {
this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_FILES, field);
};
v2.groupByKey = function (key) {
if (!this._group.getKeyID(key)) {
this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' _group');
return undefined;
}
this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_KEYS, this._group.getKeyID(key));
};
v2.groupByRating = function (rating) {
if (!this._group.getRatingID(rating)) {
this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' _group');
return undefined;
}
this.addGroupItem(com.newgrounds.SaveGroupQuery.TABLE_RATINGS, this._group.getRatingID(rating));
};
v2.addGroupItem = function (table, field) {
this._group_by.push({'table': table, 'field': field});
this.clearCache();
};
v2.excludeKey = function (key) {
delete this.lookup_keys[this._group.getKeyID(key)];
this.clearCache();
};
v2.excludeRating = function (rating) {
delete this.lookup_ratings[this._group.getRatingID(rating)];
this.clearCache();
};
v2.addCondition = function (field, operator, value) {
if (field == 'FILE_STATUS' && typeof value == 'string' && com.newgrounds.SaveFile.STATUS[value.toUpperCase()] !== undefined) {
value = com.newgrounds.SaveFile.STATUS[value.toUpperCase()];
}
if (operator == '==') {
operator = '=';
}
if (!this.validateOperator(operator) or !this.validateValue(field, value)) {
return undefined;
}
this.file_conditions.push({'field': field, 'operator': operator, 'value': value});
this.clearCache();
};
v2.addKeyCondition = function (key, operator, value) {
if (!this._group.getKeyID(key)) {
this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' save _group');
} else {
if (!this.validateOperator(operator) or !this.validateKeyValue(key, value)) {
return undefined;
}
}
this.key_conditions.push({'key_id': this._group.getKeyID(key), 'operator': operator, 'value': value});
this.clearCache();
};
v2.addRatingCondition = function (rating, operator, value, column) {
if (!column) {
column = 'SCORE';
}
if (!this._group.getRatingID(rating)) {
this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' save _group');
} else {
if (!this.validateOperator(operator)) {
return undefined;
} else {
if (!com.newgrounds.ValidationTools.isNumber(value)) {
this.error('Expected numeric value for rating \'' + rating + '\'');
return undefined;
}
}
}
if (!com.newgrounds.SaveGroupQuery.rating_columns[column]) {
var v2 = [];
for (var v3 in com.newgrounds.SaveGroupQuery.rating_columns) {
v2.push(v3);
}
this.error('Invalid rating column \'' + column + '\'. Valid columns are ' + v2.join(', '));
return undefined;
}
this.rating_conditions.push({'rating_id': this._group.getRatingID(rating), 'operator': operator, 'value': value, 'column': com.newgrounds.SaveGroupQuery.rating_columns[column]});
this.clearCache();
};
v2.sortOn = function (field, order) {
if (!com.newgrounds.SaveGroupQuery.file_fields[field]) {
var v2 = [];
for (var v3 in com.newgrounds.SaveGroupQuery.file_fields) {
v2.push(v3);
}
this.error('\'' + field + '\' is not a valid sort field. Valid fields are: ' + v2.join(', '));
return undefined;
}
this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_FILES, field, order);
};
v2.sortOnKey = function (key, order) {
if (!this._group.getKeyID(key)) {
this.error('\'' + key + '\' is not a valid key for the \'' + this._group.getName() + '\' _group');
return undefined;
}
this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_KEYS, this._group.getKeyID(key), order);
};
v2.sortOnRating = function (rating, order, column) {
if (!this._group.getRatingID(rating)) {
this.error('\'' + rating + '\' is not a valid rating for the \'' + this._group.getName() + '\' _group');
return undefined;
}
if (!column) {
column = 'score';
}
this.addSortCondition(com.newgrounds.SaveGroupQuery.TABLE_RATINGS, this._group.getRatingID(rating), order, column);
};
v2.sortOnRatingScore = function (rating, order) {
this.sortOnRating(rating, order, 'score');
};
v2.sortOnRatingVotes = function (rating, order) {
this.sortOnRating(rating, order, 'votes');
};
v2.addSortCondition = function (table, field, order, extra) {
var v7;
if (!order or order == '' or order.toUpperCase() == 'ASC') {
v7 = false;
} else {
if (order.toUpperCase() == 'DESC') {
v7 = true;
} else {
this.error('\'' + order + '\' is not a valid sort order!');
return undefined;
}
}
var v3 = {'table': table, 'field': field, 'desc': v7};
if (extra) {
v3.extra = extra;
}
this.sort_conditions.push(v3);
this.clearCache();
};
v2.onExecuted = function (results) {
this._results = [];
var v6 = 0;
while (v6 < results.length) {
var v2 = results[v6];
var v3 = new com.newgrounds.SaveFile(this._group);
v3.setName(v2.filename);
v3.setID(v2.save_id);
v3.setDescription(v2.description);
v3.setThumbnailURL(v2.thumb);
v3.setFileURL(v2.file);
if (v2.views) {
v3.setViews(v2.views);
}
v3.setPermissions(v2.status, v2.locked);
v3.authorName = v2.user_name;
v3.authorID = v2.user_id;
var v5 = 0;
while (v5 < v2.keys.length) {
v3.setKey(v2.keys[v5].id, v2.keys[v5].value);
++v5;
}
var v4 = 0;
while (v4 < v2.ratings.length) {
v3.setRating(v2.ratings[v4].id, v2.ratings[v4].votes, v2.ratings[v4].score);
++v4;
}
(this.getGroup()).addFile(v3);
this._results.push(v3);
++v6;
}
this.callEventDispatcher();
};
v2.hasResults = function () {
return this._results && this._results.length > 0;
};
v2.callEventDispatcher = function () {
com.newgrounds.API.callListener(com.newgrounds.APIEvent.QUERY_COMPLETE, true, {'query': this});
};
v2.execute = function () {
if (this.hasResults() && !this.isRandomized()) {
this.callEventDispatcher();
return undefined;
}
this._group.query = this;
com.newgrounds.API.lookupSaveFiles(this._group);
};
v2.processResults = function (files) {
return null;
};
v2.validateKeyValue = function (key, value) {
var v3 = this._group.getKeyType(key);
if (v3) {
var v2 = com.newgrounds.SaveGroup.KEY_TYPES[v3];
if (v2 == 'float' and com.newgrounds.ValidationTools.isFloat(value)) {
return true;
} else {
if (v2 == 'integer' and com.newgrounds.ValidationTools.isInteger(value)) {
return true;
} else {
if (v2 == 'string' and com.newgrounds.ValidationTools.isString(value)) {
return true;
}
}
}
this.error('Expected type ' + v2 + ' for key \'' + key + '\'');
}
return false;
};
v2.validateValue = function (field, value) {
if (com.newgrounds.SaveGroupQuery.file_fields[field]) {
if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'integer' and com.newgrounds.ValidationTools.isInteger(value)) {
return true;
} else {
if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'float' and com.newgrounds.ValidationTools.isFloat(value)) {
return true;
} else {
if (com.newgrounds.SaveGroupQuery.file_fields[field].type == 'string' and com.newgrounds.ValidationTools.isString(value)) {
return true;
} else {
this.error('Expecting ' + com.newgrounds.SaveGroupQuery.file_fields[field].type + ' value on \'' + field + '\' condition');
}
}
}
return false;
}
var v2 = [];
for (var v4 in com.newgrounds.SaveGroupQuery.file_fields) {
v2.push(v4);
}
this.error('\'' + field + '\' is not a searchable field. Valid fields are: ' + v2.join(', '));
return false;
};
v2.validateOperator = function (operator) {
var v2 = 0;
while (v2 < com.newgrounds.SaveGroupQuery.valid_operators.length) {
if (operator == com.newgrounds.SaveGroupQuery.valid_operators[v2]) {
return true;
}
++v2;
}
this.error('\'' + operator + '\' is not a valid lookup operation. Valid operations are: ' + com.newgrounds.SaveGroupQuery.valid_operators.join(', '));
return false;
};
v2.error = function (msg) {
trace('[QUERY ERROR] :: ' + msg);
};
v1.TABLE_FILES = 1;
v1.TABLE_KEYS = 2;
v1.TABLE_RATINGS = 3;
v2._results = [];
v1.file_fields = {'FILE_ID': {'id': 0, 'field': 'file_id', 'type': 'integer'}, 'AUTHOR_ID': {'id': 1, 'field': 'user_id', 'type': 'integer'}, 'AUTHOR_NAME': {'id': 2, 'field': 'user_name', 'type': 'string'}, 'FILE_NAME': {'id': 3, 'field': 'file_name', 'type': 'string'}, 'CREATED_ON': {'id': 4, 'field': 'created', 'type': 'string'}, 'UPDATED_ON': {'id': 5, 'field': 'last_update', 'type': 'string'}, 'TOTAL_VIEWS': {'id': 6, 'field': 'views', 'type': 'integer'}, 'FILE_STATUS': {'id': 7, 'field': 'status', 'type': 'integer'}};
v1.rating_columns = {'TOTAL_VOTES': 'votes', 'SCORE': 'score'};
v1.valid_operators = ['=', '<', '>', '!=', '<>', '<=', '>=', '*', '!*', '!*=', '!=*', '*=', '=*'];
v2.addProperty('group', v2.__get__group, function () {});
v2.addProperty('groupId', v2.__get__groupId, function () {});
v2.addProperty('page', v2.__get__page, v2.__set__page);
v2.addProperty('pages', v2.__get__pages, function () {});
v2.addProperty('randomize', v2.__get__randomize, v2.__set__randomize);
v2.addProperty('results', v2.__get__results, function () {});
v2.addProperty('resultsPerPage', v2.__get__resultsPerPage, v2.__set__resultsPerPage);
ASSetPropFlags(com.newgrounds.SaveGroupQuery.prototype, null, 1);
}
#endinitclip
}
movieClip 41 __Packages.com.newgrounds.encoders.BaseN {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.BaseN) {
var v1 = function (hash) {
this.ceiling = 100000000000000.0;
if (hash) {
this.hashIndex = hash;
} else {
this.hashIndex = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/';
}
this.bitSize = this.hashIndex.length;
this.hashVal = new Object();
this.i = 0;
while (this.i < this.bitSize) {
this.hashVal[this.hashIndex.charAt(this.i)] = this.i;
++this.i;
}
};
com.newgrounds.encoders.BaseN = v1;
var v2 = v1.prototype;
v2.verify = function (s) {
if (this.hashVal[s] != undefined) {
return true;
} else {
return false;
}
};
v2.encode = function (n, minchars) {
this.debug.lastencode = '';
if (typeof this.i != 'string') {
n = n.toString();
}
if (n.charAt(0) == '-') {
var v3 = '-';
n = n.substring(1);
} else {
var v3 = '';
}
if ((String(n)).indexOf('.') > -1) {
var v4 = (String(n)).split('.', 2);
return v3 + this.baseNEncoder(v4[0], minchars) + '.' + this.baseNEncoder(v4[1]);
} else {
this.debug.lastencode += '\tNo decimal\r';
return v3 + this.baseNEncoder(n, minchars);
}
};
v2.decode = function (s) {
var v4 = 1;
if (s.charAt(0) == '-') {
v4 = -1;
s = s.substring(1, s.length);
}
var v3 = s.indexOf('.');
if (v3 > -1) {
var v5 = Math.pow(10, this.baseNDecoder(s.substring(v3 + 1, s.length)));
return (this.baseNDecoder(s.substring(0, v3)) / v5) * v4;
} else {
return this.baseNDecoder(s) * v4;
}
};
v2.baseNEncoder = function (n, minchars) {
if (!minchars) {
minchars = 1;
}
var v4 = '';
while (n != 0) {
n = Math.round(n);
var v3 = n % this.bitSize;
if (Math.round(v3) != v3) {
trace('BaseN failed on ' + n + '%' + this.bitSize + ' = ' + v3 + ' ' + int(n) + ' ' + int(this.bitSize));
}
v4 = this.hashIndex.charAt(v3) + v4;
this.debug.lastencode += '\t-> n:' + n + ' % bitSize:' + this.bitSize + ' = ' + v3 + ', final char=' + v4 + '\n';
n -= v3;
n /= this.bitSize;
}
if (minchars) {
while (v4.length < minchars) {
v4 = this.hashIndex.charAt(0) + v4;
}
}
return v4;
};
v2.baseNDecoder = function (s) {
var v2 = 0;
var v6 = 0;
this.i = 0;
while (this.i < s.length) {
var v3 = s.charAt(s.length - this.i - 1);
if (v3 == this.hashIndex.charAt(0)) {
var v5 = 0;
} else {
var v5 = this.hashVal[v3] * Math.pow(this.bitSize, this.i);
}
v2 += v5;
if (v2 >= this.ceiling) {
v6 += (v2 - v2 % this.ceiling) / this.ceiling;
v2 %= this.ceiling;
}
++this.i;
}
if (v6 > 0) {
v2 = '' + v2;
while (v2.length < (this.ceiling.toString()).length - 1) {
v2 = '0' + v2;
}
v2 = '' + v6 + v2;
}
return v2;
};
v2.debug = new Object();
ASSetPropFlags(com.newgrounds.encoders.BaseN.prototype, null, 1);
}
#endinitclip
}
movieClip 42 __Packages.com.newgrounds.encoders.ImageScanner {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.ImageScanner) {
var v1 = function (the_source) {
if (the_source) {
this.image_source = the_source;
} else {
this.image_source = _root;
}
this.reset();
if (typeof this.image_source == 'movieclip') {
if (this.image_source == _root) {
this.source_width = Stage.width;
this.source_height = Stage.height;
} else {
this.source_width = Math.floor(this.image_source._width);
this.source_height = Math.floor(this.image_source._height);
}
this.sourceBitmap = new flash.display.BitmapData(this.source_width, this.source_height, false, 4294967295.0);
this.sourceBitmap.draw(_root);
} else {
if (this.image_source.width) {
this.source_width = this.image_source.width;
this.source_height = this.image_source.height;
this.sourceBitmap = this.image_source;
} else {
this.error('You can only use BitMaptData and MovieClip objects to create images');
}
}
};
com.newgrounds.encoders.ImageScanner = v1;
var v2 = v1.prototype;
v2.setCallback = function (target, funct) {
if (target && funct) {
this.callback_target = target;
this.callback_function = funct;
}
};
v2.reset = function () {
this.callback_target = null;
this.callback_function = null;
this.debug.bad_pixels = 0;
this.hash = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ<>?:;-_=+()!&';
var v3 = Math.pow(this.hash.length, 2);
trace('MAX COLORS: ' + v3);
var v2 = Math.floor(Math.pow(v3, 0.3333333333333333)) - 1;
var v4 = Math.pow(v2, 3);
this.cube = v2;
this.basen = new com.newgrounds.encoders.BaseN(this.hash);
this.xpos = 0;
this.ypos = 0;
this.pixels = 0;
this.busy = false;
};
v2.startScan = function (w, h, s) {
if (w) {
this.image_width = w;
}
if (h) {
this.image_height = h;
}
if (s != undefined) {
this.crop = s;
}
var v7 = _root.getNextHighestDepth();
var v6 = _root.createEmptyMovieClip('API_image_container_' + v7, v7);
var v5 = v6.createEmptyMovieClip('canvas', 100);
v5.attachBitmap(this.sourceBitmap, 100);
if (this.crop) {
if (this.image_width / this.source_width > this.image_height / this.source_height) {
this.canvas_width = this.image_width;
this.canvas_height = Math.ceil(this.source_height * (this.image_width / this.source_width));
} else {
this.canvas_height = this.image_height;
this.canvas_width = Math.ceil(this.source_width * (this.image_height / this.source_height));
}
} else {
this.canvas_width = this.image_width;
this.canvas_height = this.image_height;
}
v5._x = Math.round((this.image_width - this.canvas_width) / 2);
v5._width = this.canvas_width;
v5._height = this.canvas_height;
this.resizedBitmap = new flash.display.BitmapData(this.image_width, this.image_height, false, 4294967295.0);
this.resizedBitmap.draw(v6);
v6.removeMovieClip();
this.copyBitmap = new flash.display.BitmapData(this.image_width, this.image_height, false, 4294967295.0);
var v3 = '' + this.image_width;
while (v3.length < 3) {
v3 = '0' + v3;
}
var v4 = '' + this.image_height;
while (v4.length < 3) {
v4 = '0' + v4;
}
this.output = v3 + v4;
this.draw_interval = setInterval(this, 'drawChunk', 10);
this.busy = false;
return this.resizedBitmap;
};
v2.getBitmapData = function () {
return this.copyBitmap;
};
v2.getBytesTotal = function () {
return this.image_width * this.image_height * 2;
};
v2.getBytesScanned = function () {
return this.pixels * 2;
};
v2.getProgress = function () {
return Math.round((this.getBytesScanned() / this.getBytesTotal()) * 100);
};
v2.drawChunk = function () {
if (!this.busy) {
this.busy = true;
var v2 = 0;
while (v2 < this.pixels_per_chunk) {
if (!this.nextPixel()) {
clearInterval(this.draw_interval);
this.callback_interval = setInterval(this, 'doCallback', 25);
this.busy = true;
break;
}
++v2;
}
this.busy = false;
}
};
v2.doCallback = function () {
this.busy = false;
clearInterval(this.callback_interval);
if (this.callback_target and this.callback_function) {
this.callback_target[this.callback_function](this.output);
} else {
this.onScanComplete(this.output);
}
};
v2.onScanComplete = function (packet) {
this.sendMessage('packet size: ' + this.output.length + ' bytes', 'onScanComplete');
};
v2.nextPixel = function () {
var v15 = this.xpos;
var v14 = this.ypos;
var v7 = this.resizedBitmap.getPixel(v15, v14);
var v17 = v7 >> 16 & 255;
var v20 = v7 >> 8 & 255;
var v16 = v7 >> 0 & 255;
var v11 = Math.round(((v17 + 1) / 256) * this.cube);
var v10 = Math.round(((v20 + 1) / 256) * this.cube);
var v13 = Math.round(((v16 + 1) / 256) * this.cube);
var v12 = v11 * (this.cube + 1) * (this.cube + 1) + v10 * (this.cube + 1) + v13;
var v6 = this.basen.encode(v12, 2);
this.output += v6;
if (v6.length != 2) {
trace('bad pixel ' + v6);
}
var v5 = this.basen.decode(v6);
var v18 = v5;
var v8 = v5 % (this.cube + 1);
v5 = (v5 - v8) / (this.cube + 1);
var v9 = v5 % (this.cube + 1);
var v19 = (v5 - v9) / (this.cube + 1);
if (v13 != v8 and v10 != v9 and v11 != v10) {
++this.debug.bad_pixels;
trace('BAD PIXEL ' + this.debug.bad_pixels + ') ' + v12 + ' != ' + v18 + ' ' + v6);
trace(this.basen.debug.lastencode);
}
var v2 = (Math.round((v19 / this.cube) * 255)).toString(16);
var v4 = (Math.round((v9 / this.cube) * 255)).toString(16);
var v3 = (Math.round((v8 / this.cube) * 255)).toString(16);
while (v2.length < 2) {
v2 = '0' + v2;
}
while (v4.length < 2) {
v4 = '0' + v4;
}
while (v3.length < 2) {
v3 = '0' + v3;
}
this.copyBitmap.setPixel(v15, v14, Number('0x' + v2 + v4 + v3));
++this.pixels;
if (this.pixels >= this.image_width * this.image_height) {
return false;
}
++this.xpos;
if (this.xpos >= this.image_width) {
this.xpos = 0;
++this.ypos;
}
return true;
};
v2.error = function (e, f) {
this.sendMessage(e, f, 'ERROR');
};
v2.sendMessage = function (msg, func, type) {
var v1 = 'ImageScanner';
if (func) {
v1 += '.' + func + '()';
}
if (type) {
v1 = type + ' in ' + v1;
}
v1 += ' :: ' + msg;
trace(v1);
};
v2.image_width = 100;
v2.image_height = 100;
v2.crop = true;
v2.pixels_per_chunk = 500;
v2.debug = new Object();
ASSetPropFlags(com.newgrounds.encoders.ImageScanner.prototype, null, 1);
}
#endinitclip
}
movieClip 43 __Packages.com.newgrounds.encoders.SerialXML {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.SerialXML) {
var v1 = function () {};
com.newgrounds.encoders.SerialXML = v1;
var v2 = v1.prototype;
v1.decode = function (xml) {
if (!(xml instanceof XML)) {
xml = new XML(xml);
}
var v2 = com.newgrounds.encoders.SerialXML.populateObject(xml.firstChild, {});
return v2.DATA;
};
v1.encode = function (obj) {
var v1 = new XML();
com.newgrounds.encoders.SerialXML.populateXML(v1, obj, 'DATA');
return v1;
};
v1.populateObject = function (child, object) {
var v6 = child.nodeName;
var v5 = com.newgrounds.encoders.SerialXML.getValue(v6, child.attributes.v);
var v4 = child.attributes.n;
if (object instanceof Array) {
v4 = object.length;
object.push(v5);
} else {
object[v4] = v5;
}
if (child.hasChildNodes()) {
var v1 = 0;
while (v1 < child.childNodes.length) {
com.newgrounds.encoders.SerialXML.populateObject(child.childNodes[v1], object[v4]);
++v1;
}
}
return object;
};
v1.populateXML = function (child, obj, name) {
if (obj === undefined) {
return undefined;
}
var v5 = new XML();
var v2;
if (obj instanceof Array) {
v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj));
if (name) {
v2.attributes.n = name;
}
child.appendChild(v2);
var v4 = 0;
while (v4 < obj.length) {
com.newgrounds.encoders.SerialXML.populateXML(v2, obj[v4]);
++v4;
}
} else {
if (typeof obj == 'object') {
v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj));
if (name) {
v2.attributes.n = name;
}
child.appendChild(v2);
for (var v4 in obj) {
com.newgrounds.encoders.SerialXML.populateXML(v2, obj[v4], v4);
}
} else {
v2 = v5.createElement(com.newgrounds.encoders.SerialXML.getType(obj));
if (name) {
v2.attributes.n = name;
}
if ((com.newgrounds.encoders.SerialXML.getType(obj)).length == 1) {
v2.attributes.v = obj;
}
child.appendChild(v2);
}
}
};
v1.getValue = function (type, stringval) {
switch (type.toUpperCase()) {
case 'O':
return new Object();
break;
case 'A':
return new Array();
break;
case 'N':
return Number(stringval);
break;
case 'S':
return String(stringval);
break;
case 'TRUE':
return true;
break;
case 'FALSE':
return false;
break;
default:
return null;
}
};
v1.getType = function (obj) {
switch (obj instanceof Array ? 'array' : typeof obj) {
case 'array':
return 'A';
break;
case 'object':
return 'O';
break;
case 'string':
return 'S';
break;
case 'number':
return 'N';
case 'boolean':
return (obj === true) ? 'TRUE' : 'FALSE';
break;
default:
return 'NULL';
}
};
ASSetPropFlags(com.newgrounds.encoders.SerialXML.prototype, null, 1);
}
#endinitclip
}
movieClip 44 __Packages.com.newgrounds.encoders.LZW2 {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.LZW2) {
var v1 = function () {};
com.newgrounds.encoders.LZW2 = v1;
var v2 = v1.prototype;
v1.doCompressorConfig = function () {
com.newgrounds.encoders.LZW2.comp_dict = [];
var v1 = 0;
while (v1 < 256) {
com.newgrounds.encoders.LZW2.comp_dict[String.fromCharCode(v1)] = v1;
++v1;
}
com.newgrounds.encoders.LZW2.comp_dict.< = 256;
com.newgrounds.encoders.LZW2.comp_dict.> = 257;
com.newgrounds.encoders.LZW2.comp_dict.& = 258;
com.newgrounds.encoders.LZW2.comp_dict." = 259;
com.newgrounds.encoders.LZW2.comp_dict.\' = 260;
com.newgrounds.encoders.LZW2.pos = 0;
com.newgrounds.encoders.LZW2.result = '';
com.newgrounds.encoders.LZW2.buffer = '';
com.newgrounds.encoders.LZW2.nbChar = 256 + com.newgrounds.encoders.LZW2.skipnum;
};
v1.compress = function (string, callback, callback_params) {
com.newgrounds.encoders.LZW2.doCompressorConfig();
if (com.newgrounds.encoders.LZW2.busy) {
trace('[LZW COMPRESSOR] :: Compression can not begin until previous compression or decompression is complete!');
return undefined;
}
com.newgrounds.encoders.LZW2.splitStr = string.split('');
string = '';
com.newgrounds.encoders.LZW2.len = com.newgrounds.encoders.LZW2.splitStr.length;
com.newgrounds.encoders.LZW2.local = {'delay': 30, 'callback': callback, 'callback_params': callback_params, 'compress_chunk': function () {
com.newgrounds.encoders.LZW2.compress_chunk();
}, 'busy': false, 'complete': false};
com.newgrounds.encoders.LZW2.interval = setInterval(com.newgrounds.encoders.LZW2.local, 'compress_chunk', 5);
};
v1.getProgress = function () {
return Math.round((com.newgrounds.encoders.LZW2.pos / com.newgrounds.encoders.LZW2.len) * 100);
};
v1.compress_chunk = function () {
if (com.newgrounds.encoders.LZW2.local.delay > 0) {
--com.newgrounds.encoders.LZW2.local.delay;
} else {
if (!com.newgrounds.encoders.LZW2.local.busy) {
com.newgrounds.encoders.LZW2.local.busy = true;
var v1 = 0;
while (v1 < com.newgrounds.encoders.LZW2.max_chunk_length) {
com.newgrounds.encoders.LZW2.encode_next();
if (com.newgrounds.encoders.LZW2.local.complete) {
break;
}
++v1;
}
com.newgrounds.encoders.LZW2.local.busy = false;
}
}
if (com.newgrounds.encoders.LZW2.local.complete) {
trace('LZW2 complete ' + com.newgrounds.encoders.LZW2.nbChar + ' ' + com.newgrounds.encoders.LZW2.comp_dict.length + ' ' + com.newgrounds.encoders.LZW2.len + ' ' + com.newgrounds.encoders.LZW2.pos + ' ' + com.newgrounds.encoders.LZW2.skipnum);
clearInterval(com.newgrounds.encoders.LZW2.interval);
com.newgrounds.encoders.LZW2.local.callback(com.newgrounds.encoders.LZW2.result, com.newgrounds.encoders.LZW2.local.callback_params);
com.newgrounds.encoders.LZW2.result = '';
com.newgrounds.encoders.LZW2.buffer = '';
}
};
v1.encode_next = function () {
if (com.newgrounds.encoders.LZW2.pos <= com.newgrounds.encoders.LZW2.len) {
var v1 = com.newgrounds.encoders.LZW2.splitStr[com.newgrounds.encoders.LZW2.pos];
if (com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer + v1] !== undefined) {
com.newgrounds.encoders.LZW2.buffer += v1;
} else {
com.newgrounds.encoders.LZW2.result += String.fromCharCode(com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer]);
com.newgrounds.encoders.LZW2.comp_dict[com.newgrounds.encoders.LZW2.buffer + v1] = com.newgrounds.encoders.LZW2.nbChar;
++com.newgrounds.encoders.LZW2.nbChar;
com.newgrounds.encoders.LZW2.buffer = v1;
}
++com.newgrounds.encoders.LZW2.pos;
} else {
com.newgrounds.encoders.LZW2.local.complete = true;
return undefined;
}
};
v1.comp_config = false;
v1.skipnum = 5;
v1.busy = false;
v1.max_chunk_length = 12000;
ASSetPropFlags(com.newgrounds.encoders.LZW2.prototype, null, 1);
}
#endinitclip
}
movieClip 45 __Packages.com.newgrounds.encoders.LZW {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.LZW) {
var v1 = function () {};
com.newgrounds.encoders.LZW = v1;
var v2 = v1.prototype;
v1.setXMLSafe = function (x) {
com.newgrounds.encoders.LZW.xmlsafe = x;
};
v1.compress = function (str, escape_chars) {
var v2 = new Array();
var v11 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0;
var v5 = 0;
while (v5 < 256) {
v2[String.fromCharCode(v5)] = v5;
++v5;
}
if (com.newgrounds.encoders.LZW.xmlsafe) {
v2.< = 256;
v2.> = 257;
v2.& = 258;
v2." = 259;
v2.\' = 260;
}
var v7 = '';
var v8 = str.split('');
var v9 = v8.length;
var v6 = 256 + v11;
var v1 = '';
var v4;
v5 = 0;
while (v5 <= v9) {
var v3 = v8[v5];
if (v2[v1 + v3] !== undefined) {
v1 += v3;
} else {
v4 = String.fromCharCode(v2[v1]);
if (escape_chars and (v2[v1] < 33 or v2[v1] > 126 or v4 == '%')) {
v4 = escape(v4);
}
v7 += v4;
v2[v1 + v3] = v6;
++v6;
v1 = v3;
}
++v5;
}
return v7;
};
v1.decompress = function (str) {
var v4 = new Array();
var v10 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0;
var v6 = 0;
while (v6 < 256) {
var v9 = String.fromCharCode(v6);
v4[v6] = v9;
++v6;
}
if (com.newgrounds.encoders.LZW.xmlsafe) {
v4[256] = '<';
v4[257] = '>';
v4[258] = '&';
v4[259] = '"';
v4[260] = '\'';
}
var v11 = str;
var v13 = v11.split('');
var v12 = v13.length;
var v7 = 256 + v10;
var v1 = '';
var v2 = '';
var v8 = '';
v6 = 0;
while (v6 < v12) {
var v5 = v11.charCodeAt(v6);
var v3 = v4[v5];
if (v1 == '') {
v1 = v3;
v8 += v3;
} else {
if (v5 <= 255 + v10) {
v8 += v3;
v2 = v1 + v3;
v4[v7] = v2;
++v7;
v1 = v3;
} else {
v2 = v4[v5];
if (v2 == undefined) {
v2 = v1 + v1.slice(0, 1);
}
v8 += v2;
v4[v7] = v1 + v2.slice(0, 1);
++v7;
v1 = v2;
}
}
++v6;
}
return v8;
};
v1.compress_fp6 = function (str) {
var v3 = new Array();
var v10 = com.newgrounds.encoders.LZW.xmlsafe ? 5 : 0;
var v4 = 0;
while (v4 < 256) {
v3[String(v4)] = v4;
++v4;
}
if (com.newgrounds.encoders.LZW.xmlsafe) {
var v14 = String((new String('<')).charCodeAt(0));
var v11 = String((new String('>')).charCodeAt(0));
var v13 = String((new String('&')).charCodeAt(0));
var v15 = String((new String('"')).charCodeAt(0));
var v12 = String((new String('\'')).charCodeAt(0));
v3[v14] = 256;
v3[v11] = 257;
v3[v13] = 258;
v3[v15] = 259;
v3[v12] = 260;
}
var v7 = '';
var v16 = str;
var v8 = v16.split('');
var v9 = v8.length;
var v6 = 256 + v10;
var v1 = new Array();
v4 = 0;
while (v4 <= v9) {
var v2 = v8[v4];
if (v1.length == 0) {
var v5 = String(v2.charCodeAt(0));
} else {
var v5 = v1.join('-') + '-' + String(v2.charCodeAt(0));
}
if (v3[v5] !== undefined) {
v1.push(v2.charCodeAt(0));
} else {
v7 += String.fromCharCode(v3[v1.join('-')]);
v3[v5] = v6;
++v6;
false;
v1 = new Array();
v1.push(v2.charCodeAt(0));
}
++v4;
}
return v7;
};
v1.xmlsafe = false;
ASSetPropFlags(com.newgrounds.encoders.LZW.prototype, null, 1);
}
#endinitclip
}
movieClip 46 __Packages.com.newgrounds.RemoteAuth {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.RemoteAuth) {
var v1 = function (id) {
this.auth_token = id;
System.security.allowDomain('*');
this.receiver = new LocalConnection();
this.receiver.allowDomain = function () {
return true;
};
this.receiver.onAuth = function (auth_result) {
trace('remote login is a success! ' + auth_result);
com.newgrounds.API.onRemoteAuthentication(auth_result);
};
this.receiver.connect('_' + this.auth_token);
};
com.newgrounds.RemoteAuth = v1;
var v2 = v1.prototype;
v2.__get__token = function () {
return this.auth_token;
};
v2.addProperty('token', v2.__get__token, function () {});
ASSetPropFlags(com.newgrounds.RemoteAuth.prototype, null, 1);
}
#endinitclip
}
movieClip 47 __Packages.com.newgrounds.Medal {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.Medal) {
var v1 = function (id, name, value, difficulty, unlocked, _icon_url) {
if (id == undefined || name == undefined || value == undefined || difficulty == undefined) {
com.newgrounds.API.fatalError('Medal instances require an id, name, value and difficulty');
}
this._medal_id = id;
this._medal_name = name;
this._medal_value = value;
this._medal_difficulty = difficulty;
if (unlocked) {
this._medal_unlocked = true;
}
if (_icon_url) {
this._icon_url = _icon_url;
}
};
com.newgrounds.Medal = v1;
var v2 = v1.prototype;
v2.__get__difficulty = function () {
return com.newgrounds.Medal.difficulty_names[this._medal_difficulty];
};
v2.__get__difficultyId = function () {
return this._medal_difficulty;
};
v2.__get__icon_url = function () {
return this._icon_url;
};
v2.__get__id = function () {
return this._medal_id;
};
v2.__get__name = function () {
return this._medal_name;
};
v2.__get__unlocked = function () {
return this._medal_unlocked;
};
v2.__get__value = function () {
return this._medal_value;
};
v2.isUnlocked = function () {
return this._medal_unlocked;
};
v2.unlock = function () {
if (!this.isUnlocked()) {
com.newgrounds.API.unlockMedal(this);
}
};
v2.setUnlocked = function (u) {
this._medal_unlocked = u;
};
v2.attachIcon = function (target, depth) {
if (!depth) {
depth = target.getNextHighestDepth();
}
var v3 = target.createEmptyMovieClip('Asset_Medal_Icon_' + this.getID(), depth);
if (this._icon_url) {
v3.loadMovie(this._icon_url);
} else {
var v4 = flash.display.BitmapData.loadBitmap('Asset_default_medal_icon_' + this.getDifficulty(), depth);
v3.attachBitmap(v4, depth, true);
}
};
v2.getID = function () {
return this._medal_id;
};
v2.getName = function () {
return this._medal_name;
};
v2.getValue = function () {
return this._medal_value;
};
v2.getDifficulty = function (as_string) {
if (as_string) {
return com.newgrounds.Medal.difficulty_names[this._medal_difficulty];
} else {
return this._medal_difficulty;
}
};
v2._medal_unlocked = false;
v2._icon_loaded = false;
v2._icon_width = 50;
v2._icon_height = 50;
v2._icon_url = null;
v1.difficulty_names = new Array(null, 'Easy', 'Moderate', 'Challenging', 'Difficult', 'Brutal');
v2.addProperty('difficulty', v2.__get__difficulty, function () {});
v2.addProperty('difficultyId', v2.__get__difficultyId, function () {});
v2.addProperty('icon_url', v2.__get__icon_url, function () {});
v2.addProperty('id', v2.__get__id, function () {});
v2.addProperty('name', v2.__get__name, function () {});
v2.addProperty('unlocked', v2.__get__unlocked, function () {});
v2.addProperty('value', v2.__get__value, function () {});
ASSetPropFlags(com.newgrounds.Medal.prototype, null, 1);
}
#endinitclip
}
movieClip 48 __Packages.com.newgrounds.ScoreBoard {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.ScoreBoard) {
var v1 = function (id, name, tag) {
this._name = name;
this._id = id;
if (tag !== undefined) {
this._tag = tag;
}
};
com.newgrounds.ScoreBoard = v1;
var v2 = v1.prototype;
v2.exists = function () {
return Number(this._id) > 0;
};
v2.__get__id = function () {
return this._id;
};
v2.__get__name = function () {
return this._name;
};
v2.__get__period = function () {
return this._period;
};
v2.__get__tag = function () {
return this._tag;
};
v2.__get__page = function () {
return this._page;
};
v2.__get__num_results = function () {
return this._num_results;
};
v2.__get__scores = function () {
return this._scores;
};
v2.postScore = function (value, tag) {
if (tag !== undefined) {
this._tag = tag;
}
com.newgrounds.API.postScore(this._name, value, this._tag);
};
v2.loadScores = function (period, page, num_results, tag) {
if (period) {
this._period = period;
}
if (page) {
this._page = page;
}
if (num_results) {
this._num_results = num_results;
}
this._scores = [];
com.newgrounds.API.loadScores(this._name, this._period, tag);
};
v2.setScores = function (scores, period, page, num_results) {
if (period) {
this._period = period;
}
if (page) {
this._page = page;
}
if (num_results) {
this._num_results = num_results;
}
this._scores = [];
var v2 = 0;
while (v2 < scores.length) {
var v4 = this._num_results * (this._page - 1) + 1 + v2;
this._scores.push(new com.newgrounds.Score(this, v4, scores[v2].username, scores[v2].value, scores[v2].numeric_value));
++v2;
}
};
v2._period = 'Today';
v2._num_results = 10;
v2._page = 1;
v2._tag = '';
v2.addProperty('id', v2.__get__id, function () {});
v2.addProperty('name', v2.__get__name, function () {});
v2.addProperty('num_results', v2.__get__num_results, function () {});
v2.addProperty('page', v2.__get__page, function () {});
v2.addProperty('period', v2.__get__period, function () {});
v2.addProperty('scores', v2.__get__scores, function () {});
v2.addProperty('tag', v2.__get__tag, function () {});
ASSetPropFlags(com.newgrounds.ScoreBoard.prototype, null, 1);
}
#endinitclip
}
movieClip 49 __Packages.com.newgrounds.Score {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.Score) {
var v1 = function (board, position, username, value, numeric_value) {
this._board = board;
this._position = position;
this._username = username;
this._value = value;
this._numeric_value = numeric_value;
};
com.newgrounds.Score = v1;
var v2 = v1.prototype;
v2.__get__board = function () {
return this._board;
};
v2.__get__position = function () {
return this._position;
};
v2.__get__username = function () {
return this._username;
};
v2.__get__value = function () {
return this._value;
};
v2.__get__numeric_value = function () {
return this._numeric_value;
};
v1.fromTime = function (time) {
var v1 = time.split(':');
var v2 = Math.round(Number(v1.pop()) * 1000);
if (v1.length > 0) {
v2 += Number(v1.pop()) * 60;
}
if (v1.length > 0) {
v2 += Number(v1.pop()) * 3600;
}
return v2;
};
v1.fromDistance = function (distance) {
var v1 = distance.indexOf('\'');
var v5 = distance.indexOf('"', v1);
var v3 = Number(distance.substr(0, v1));
var v4 = Number(distance.substring(v1 + 1, v5));
return Math.round(v3 * 12 + v4);
};
v2.addProperty('board', v2.__get__board, function () {});
v2.addProperty('numeric_value', v2.__get__numeric_value, function () {});
v2.addProperty('position', v2.__get__position, function () {});
v2.addProperty('username', v2.__get__username, function () {});
v2.addProperty('value', v2.__get__value, function () {});
ASSetPropFlags(com.newgrounds.Score.prototype, null, 1);
}
#endinitclip
}
movieClip 50 __Packages.com.newgrounds.encoders.RC4 {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.RC4) {
var v1 = function () {};
com.newgrounds.encoders.RC4 = v1;
var v2 = v1.prototype;
v1.encrypt = function (src, key) {
var v3 = com.newgrounds.encoders.RC4.strToChars(src);
var v1 = com.newgrounds.encoders.RC4.strToChars(key);
var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1);
return com.newgrounds.encoders.RC4.charsToHex(v2);
};
v1.encryptbin = function (src, key) {
var v3 = com.newgrounds.encoders.RC4.strToChars(src);
var v1 = com.newgrounds.encoders.RC4.strToChars(key);
var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1);
return v2;
};
v1.decrypt = function (src, key) {
var v3 = com.newgrounds.encoders.RC4.hexToChars(src);
var v1 = com.newgrounds.encoders.RC4.strToChars(key);
var v2 = com.newgrounds.encoders.RC4.calculate(v3, v1);
return com.newgrounds.encoders.RC4.charsToStr(v2);
};
v1.initialize = function (pwd) {
var v2 = 0;
var v3;
var v4 = pwd.length;
var v1 = 0;
while (v1 <= 255) {
com.newgrounds.encoders.RC4.mykey[v1] = pwd[v1 % v4];
com.newgrounds.encoders.RC4.sbox[v1] = v1;
++v1;
}
v1 = 0;
while (v1 <= 255) {
v2 = (v2 + com.newgrounds.encoders.RC4.sbox[v1] + com.newgrounds.encoders.RC4.mykey[v1]) % 256;
v3 = com.newgrounds.encoders.RC4.sbox[v1];
com.newgrounds.encoders.RC4.sbox[v1] = com.newgrounds.encoders.RC4.sbox[v2];
com.newgrounds.encoders.RC4.sbox[v2] = v3;
++v1;
}
};
v1.calculate = function (plaintxt, psw) {
com.newgrounds.encoders.RC4.initialize(psw);
var v1 = 0;
var v2 = 0;
var v9 = new Array();
var v7;
var v5;
var v6;
var v3 = 0;
while (v3 < plaintxt.length) {
v1 = (v1 + 1) % 256;
v2 = (v2 + com.newgrounds.encoders.RC4.sbox[v1]) % 256;
v5 = com.newgrounds.encoders.RC4.sbox[v1];
com.newgrounds.encoders.RC4.sbox[v1] = com.newgrounds.encoders.RC4.sbox[v2];
com.newgrounds.encoders.RC4.sbox[v2] = v5;
var v4 = (com.newgrounds.encoders.RC4.sbox[v1] + com.newgrounds.encoders.RC4.sbox[v2]) % 256;
v7 = com.newgrounds.encoders.RC4.sbox[v4];
v6 = plaintxt[v3] ^ v7;
v9.push(v6);
++v3;
}
return v9;
};
v1.charsToHex = function (chars) {
var v4 = new String('');
var v3 = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
var v1 = 0;
while (v1 < chars.length) {
v4 += v3[chars[v1] >> 4] + v3[chars[v1] & 15];
++v1;
}
return v4;
};
v1.hexToChars = function (hex) {
var v3 = new Array();
var v1 = (hex.substr(0, 2) == '0x') ? 2 : 0;
while (v1 < hex.length) {
v3.push(parseInt(hex.substr(v1, 2), 16));
v1 += 2;
}
return v3;
};
v1.charsToStr = function (chars) {
var v3 = new String('');
var v1 = 0;
while (v1 < chars.length) {
v3 += String.fromCharCode(chars[v1]);
++v1;
}
return v3;
};
v1.strToChars = function (str) {
var v3 = new Array();
var v1 = 0;
while (v1 < str.length) {
v3.push(str.charCodeAt(v1));
++v1;
}
return v3;
};
v1.sbox = new Array(255);
v1.mykey = new Array(255);
ASSetPropFlags(com.newgrounds.encoders.RC4.prototype, null, 1);
}
#endinitclip
}
movieClip 51 __Packages.com.newgrounds.encoders.JSON {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.JSON) {
var v1 = function () {};
com.newgrounds.encoders.JSON = v1;
var v2 = v1.prototype;
v1.encode = function (arg, noquotes) {
var v3;
var v2;
var v6;
var v1 = '';
var v4;
if (arg.isSServerVar()) {
var v8 = 'sservervariable';
} else {
var v8 = typeof arg;
}
switch (v8) {
return 'null';
case 'sservervariable':
return '?' + arg.getEncodedValue();
break;
case 'object':
if (arg) {
if (arg instanceof Array) {
v2 = 0;
while (v2 < arg.length) {
v4 = com.newgrounds.encoders.JSON.encode(arg[v2]);
if (v1) {
v1 += ',';
}
v1 += v4;
++v2;
}
return '[' + v1 + ']';
} else {
if (typeof arg.toString != 'undefined') {
for (v2 in arg) {
v4 = arg[v2];
if (typeof v4 != 'undefined' && typeof v4 != 'function') {
v4 = com.newgrounds.encoders.JSON.encode(v4);
if (v1) {
v1 += ',';
}
v1 += com.newgrounds.encoders.JSON.encode(v2) + ':' + v4;
}
}
return '{' + v1 + '}';
}
}
}
return 'null';
case 'number':
return isFinite(arg) ? String(arg) : 'null';
case 'string':
v6 = arg.length;
if (noquotes) {
var v7 = '';
} else {
var v7 = '"';
}
v1 = v7;
v2 = 0;
while (v2 < v6) {
v3 = arg.charAt(v2);
if (v3 >= ' ') {
if (v3 == '\\' || v3 == '"') {
v1 += '\\';
}
v1 += v3;
} else {
switch (v3) {
case '\b':
v1 += '\\b';
break;
case '\f':
v1 += '\\f';
break;
case '\n':
v1 += '\\n';
break;
case '\r':
v1 += '\\r';
break;
case '\t':
v1 += '\\t';
break;
default:
v3 = v3.charCodeAt();
v1 += '\\u00' + (Math.floor(v3 / 16)).toString(16) + (v3 % 16).toString(16);
}
}
v2 += 1;
}
return v1 + v7;
case 'boolean':
return String(arg);
default:
return 'null';
}
};
v1.background_encode = function (arg, callback) {
if (com.newgrounds.encoders.JSON.busy) {
trace('[Newgrounds Encoder] :: Cannot encode a new file until the previous file is completed');
return false;
} else {
if (!callback) {
trace('[Newgrounds Encoder] :: Missing a callback function, skipping encode');
return false;
}
}
com.newgrounds.encoders.JSON.busy = true;
var v2 = new Date();
com.newgrounds.encoders.JSON.start = v2.getTime();
com.newgrounds.encoders.JSON.cache = {'busy': false, 'complete': false, 'arg': arg, 'target': arg, 'parents': [], 'encoded': '', 'callback': callback, 'encode_chunk': function () {
com.newgrounds.encoders.JSON.encode_chunk();
}};
if (com.newgrounds.encoders.JSON.getType(arg) == 'object') {
com.newgrounds.encoders.JSON.cache.encoded = '{';
com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'encode_chunk', 25);
return true;
}
if (com.newgrounds.encoders.JSON.getType(arg) == 'array') {
com.newgrounds.encoders.JSON.cache.encoded = '[';
}
com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'encode_chunk', 25);
return true;
};
v1.background_decode = function (arg, callback) {
if (com.newgrounds.encoders.JSON.busy) {
trace('[Newgrounds Encoder] :: Cannot decode a new file until the previous file is completed');
return false;
} else {
if (!callback) {
trace('[Newgrounds Encoder] :: Missing a callback function, skipping decode');
return false;
}
}
com.newgrounds.encoders.JSON.busy = true;
var v1 = new Date();
com.newgrounds.encoders.JSON.start = v1.getTime();
com.newgrounds.encoders.JSON.cache = {'busy': false, 'callback': callback, 'complete': false, 'arg': arg, 'pos': 0, 'parents': ['root'], 'target': null, 'scratch': '', 'decode_chunk': function () {
com.newgrounds.encoders.JSON.decode_chunk();
}};
com.newgrounds.encoders.JSON.interval = setInterval(com.newgrounds.encoders.JSON.cache, 'decode_chunk', 25);
return true;
};
v1.decode = function (text) {
var at = 0;
var ch = ' ';
var _value;
var _error = function (m) {
throw {'name': 'JSONError', 'message': m, 'at': at - 1, 'text': text};
};
var _next = function () {
ch = text.charAt(at);
at += 1;
return ch;
};
var _white = function () {
while (ch) {
if (ch <= ' ') {
_next();
} else {
if (ch == '/') {
switch (_next()) {
case '/':
for (;;) {
if (!(_next() && ch != '\n' && ch != '\r')) break;
}
break;
case '*':
_next();
for (;;) {
if (ch) {
if (ch == '*') {
if (_next() == '/') {
_next();
break;
}
} else {
_next();
}
continue;
}
_error('Unterminated comment');
}
break;
default:
_error('Syntax error');
}
} else {
break;
}
}
}
};
var _string = function () {
var v4;
var v1 = '';
var v3;
var v2;
var v5 = false;
if (ch == '"') {
while (_next()) {
if (ch == '"') {
_next();
return v1;
} else {
if (ch == '\\') {
switch (_next()) {
case 'b':
v1 += '\b';
break;
case 'f':
v1 += '\f';
break;
case 'n':
v1 += '\n';
break;
case 'r':
v1 += '\r';
break;
case 't':
v1 += '\t';
break;
case 'u':
v2 = 0;
v4 = 0;
while (v4 < 4) {
v3 = parseInt(_next(), 16);
if (!isFinite(v3)) {
v5 = true;
break;
}
v2 = v2 * 16 + v3;
v4 += 1;
}
if (v5) {
v5 = false;
} else {
v1 += String.fromCharCode(v2);
break;
default:
v1 += ch;
}
}
} else {
v1 += ch;
}
}
}
}
_error('Bad string');
};
var _array = function () {
var v1 = [];
if (ch == '[') {
_next();
_white();
if (ch == ']') {
_next();
return v1;
}
while (ch) {
v1.push(_value());
_white();
if (ch == ']') {
_next();
return v1;
} else {
if (ch != ',') {
break;
}
}
_next();
_white();
}
}
_error('Bad array');
};
var _object = function () {
var v2;
var v1 = {};
if (ch == '{') {
_next();
_white();
if (ch == '}') {
_next();
return v1;
}
while (ch) {
v2 = _string();
_white();
if (ch != ':') {
break;
}
_next();
v1[v2] = _value();
_white();
if (ch == '}') {
_next();
return v1;
} else {
if (ch != ',') {
break;
}
}
_next();
_white();
}
}
_error('Bad object');
};
var _number = function () {
var v1 = '';
var v2;
if (ch == '-') {
v1 = '-';
_next();
}
for (;;) {
if (!(ch >= '0' && ch <= '9')) break;
v1 += ch;
_next();
}
if (ch == '.') {
v1 += '.';
for (;;) {
if (!(_next() && ch >= '0' && ch <= '9')) break;
v1 += ch;
}
}
v2 = 1 * v1;
if (!isFinite(v2)) {
_error('Bad number');
} else {
return v2;
}
};
var _word = function () {
switch (ch) {
case 't':
if (_next() == 'r' && _next() == 'u' && _next() == 'e') {
_next();
return true;
}
break;
case 'f':
if (_next() == 'a' && _next() == 'l' && _next() == 's' && _next() == 'e') {
_next();
return false;
}
break;
case 'n':
if (_next() == 'u' && _next() == 'l' && _next() == 'l') {
_next();
return null;
}
}
_error('Syntax error');
};
_value = function () {
_white();
switch (ch) {
case '{':
return _object();
case '[':
return _array();
case '"':
return _string();
case '-':
return _number();
}
return (ch >= '0' && ch <= '9') ? _number() : _word();
};
return _value();
};
v1.getType = function (v) {
if (v instanceof Array) {
return 'array';
} else {
return typeof v;
}
};
v1.decode_chunk = function () {
if (!com.newgrounds.encoders.JSON.cache.busy && !com.newgrounds.encoders.JSON.cache.complete) {
com.newgrounds.encoders.JSON.cache.busy = true;
var v1 = 0;
while (v1 < com.newgrounds.encoders.JSON.decode_chunks) {
com.newgrounds.encoders.JSON.chunk_decoder();
if (com.newgrounds.encoders.JSON.cache.complete) {
break;
}
++v1;
}
trace(Math.round((com.newgrounds.encoders.JSON.cache.pos / com.newgrounds.encoders.JSON.cache.arg.length) * 100) + '% decoded');
com.newgrounds.encoders.JSON.cache.busy = false;
}
if (com.newgrounds.encoders.JSON.cache.complete) {
var v2 = new Date();
com.newgrounds.encoders.JSON.busy = false;
clearInterval(com.newgrounds.encoders.JSON.interval);
com.newgrounds.encoders.JSON.cache.callback(com.newgrounds.encoders.JSON.cache.root, v2.getTime() - com.newgrounds.encoders.JSON.start);
com.newgrounds.encoders.JSON.cache.arg = '';
}
};
v1.encode_chunk = function () {
if (!com.newgrounds.encoders.JSON.cache.busy && !com.newgrounds.encoders.JSON.cache.complete) {
com.newgrounds.encoders.JSON.cache.busy = true;
var v1 = 0;
while (v1 < com.newgrounds.encoders.JSON.encode_chunks) {
com.newgrounds.encoders.JSON.chunk_encoder();
if (com.newgrounds.encoders.JSON.cache.complete) {
break;
}
++v1;
}
com.newgrounds.encoders.JSON.cache.busy = false;
}
if (com.newgrounds.encoders.JSON.cache.complete) {
var v3 = new Date();
var v2 = v3.getTime();
com.newgrounds.encoders.JSON.busy = false;
clearInterval(com.newgrounds.encoders.JSON.interval);
com.newgrounds.encoders.JSON.cache.callback(com.newgrounds.encoders.JSON.cache.encoded, v2 - com.newgrounds.encoders.JSON.start);
com.newgrounds.encoders.JSON.cache.encoded = '';
}
};
v1.chunk_decoder = function () {
function _object() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (!com.newgrounds.encoders.JSON.cache.mode) {
com.newgrounds.encoders.JSON.cache.mode = 'object';
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (v1 != '"') {
throw 'Malformed object key in encoded string. Keys must be wrapped in quotes ("")';
}
com.newgrounds.encoders.JSON.cache.scratch = '';
_setTargetValue({});
} else {
if (v1 == ',') {
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (v1 != '"') {
throw 'Malformed object key in encoded string. Keys must be wrapped in quotes ("")';
}
com.newgrounds.encoders.JSON.cache.scratch = '';
} else {
if (v1 == '}') {
_useParent();
} else {
if (v1 == '"') {
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (v1 != ':') {
throw 'Malformed object notation. Object keys and values must be separated by colons(:)';
}
_addParent(com.newgrounds.encoders.JSON.cache.scratch);
com.newgrounds.encoders.JSON.cache.mode = null;
} else {
if (v1 == '\\') {
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
}
com.newgrounds.encoders.JSON.cache.scratch += v1;
}
}
}
}
++com.newgrounds.encoders.JSON.cache.pos;
}
function _array() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (!com.newgrounds.encoders.JSON.cache.mode) {
com.newgrounds.encoders.JSON.cache.mode = 'array';
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
_setTargetValue([]);
if (v1 != ']') {
_addArrayKey();
} else {
_useParent();
}
return undefined;
} else {
if (v1 == ',') {
_addArrayKey();
} else {
if (v1 == ']') {
_useParent();
}
}
}
++com.newgrounds.encoders.JSON.cache.pos;
}
function _boolean() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (v1 == 't') {
_setTargetValue(true);
com.newgrounds.encoders.JSON.cache.pos += 3;
} else {
if (v1 == 'f') {
_setTargetValue(false);
com.newgrounds.encoders.JSON.cache.pos += 4;
} else {
throw 'Bool values must be true or false';
}
}
_useParent();
}
function _null() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (v1 == 'n') {
_setTargetValue(null);
com.newgrounds.encoders.JSON.cache.pos += 2;
} else {
throw 'Null values must be null';
}
_useParent();
}
function _string() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
if (!com.newgrounds.encoders.JSON.cache.mode) {
if (v1 != '"') {
throw 'Strings must be wrapped in quotes ("")';
}
com.newgrounds.encoders.JSON.cache.scratch = '';
com.newgrounds.encoders.JSON.cache.mode = 'string';
} else {
if (v1 == '"') {
_setTargetValue(com.newgrounds.encoders.JSON.cache.scratch);
_useParent();
} else {
if (v1 == '\\') {
++com.newgrounds.encoders.JSON.cache.pos;
v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
switch (v1) {
case 'n':
v1 = '\n';
break;
case 'r':
v1 = '\n';
break;
case 't':
v1 = '\t';
break;
case 'u':
v1 = '\\' + v1;
}
}
com.newgrounds.encoders.JSON.cache.scratch += v1;
}
}
++com.newgrounds.encoders.JSON.cache.pos;
}
function _number() {
var v1 = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
var v2 = '01234567890.-';
if (!com.newgrounds.encoders.JSON.cache.mode) {
com.newgrounds.encoders.JSON.cache.mode = 'number';
com.newgrounds.encoders.JSON.cache.scratch = '';
}
if (v2.indexOf(v1) < 0) {
_setTargetValue(Number(com.newgrounds.encoders.JSON.cache.scratch));
_useParent();
} else {
com.newgrounds.encoders.JSON.cache.scratch += v1;
++com.newgrounds.encoders.JSON.cache.pos;
}
}
function _setTargetValue(newval) {
var v2 = (_getParent()).obj;
var v1 = com.newgrounds.encoders.JSON.cache.parents[com.newgrounds.encoders.JSON.cache.parents.length - 1];
v2[v1] = newval;
}
function _useParent() {
com.newgrounds.encoders.JSON.cache.mode = com.newgrounds.encoders.JSON.getType((_getParent()).obj);
com.newgrounds.encoders.JSON.cache.parents.pop();
}
function _getParent() {
var v2 = com.newgrounds.encoders.JSON.cache;
var v1 = 0;
while (v1 < com.newgrounds.encoders.JSON.cache.parents.length - 1) {
v2 = v2[com.newgrounds.encoders.JSON.cache.parents[v1]];
++v1;
}
return {'obj': v2, 'name': com.newgrounds.encoders.JSON.cache.parents[v1]};
}
function _getCurrent() {
var v2 = com.newgrounds.encoders.JSON.cache;
var v1 = 0;
while (v1 < com.newgrounds.encoders.JSON.cache.parents.length) {
v2 = v2[com.newgrounds.encoders.JSON.cache.parents[v1]];
++v1;
}
return {'obj': v2, 'name': com.newgrounds.encoders.JSON.cache.parents[v1]};
}
function _addParent(child) {
com.newgrounds.encoders.JSON.cache.parents.push(child);
}
function _addArrayKey() {
var v1 = (_getCurrent()).obj.length;
com.newgrounds.encoders.JSON.cache.parents.push(v1);
com.newgrounds.encoders.JSON.cache.mode = null;
}
if (com.newgrounds.encoders.JSON.cache.pos >= com.newgrounds.encoders.JSON.cache.arg.length) {
com.newgrounds.encoders.JSON.cache.complete = true;
return undefined;
} else {
if (com.newgrounds.encoders.JSON.cache.mode) {
('_' + com.newgrounds.encoders.JSON.cache.mode)();
} else {
var char = com.newgrounds.encoders.JSON.cache.arg.charAt(com.newgrounds.encoders.JSON.cache.pos);
switch (char) {
case '{':
_object();
break;
case '[':
_array();
break;
case '"':
_string();
break;
case 'n':
_null();
break;
case 't':
_boolean();
break;
case 'f':
_boolean();
break;
default:
_number();
}
}
}
};
v1.chunk_encoder = function () {
if (com.newgrounds.encoders.JSON.cache.complete) {
return undefined;
}
var v2 = com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target);
switch (v2) {
case 'number':
com.newgrounds.encoders.JSON.cache.encoded += com.newgrounds.encoders.JSON.cache.target;
com.newgrounds.encoders.JSON.getParent();
break;
case 'string':
com.newgrounds.encoders.JSON.cache.encoded += '"' + (com.newgrounds.encoders.JSON.cache.target.split('"')).join('\\"') + '"';
com.newgrounds.encoders.JSON.getParent();
break;
case 'boolean':
com.newgrounds.encoders.JSON.cache.encoded += (com.newgrounds.encoders.JSON.cache.target == true) ? 'true' : 'false';
com.newgrounds.encoders.JSON.getParent();
break;
case 'null':
com.newgrounds.encoders.JSON.cache.encoded += 'null';
com.newgrounds.encoders.JSON.getParent();
break;
case 'array':
if (com.newgrounds.encoders.JSON.cache.target.length < 1) {
com.newgrounds.encoders.JSON.cache.encoded += ']';
com.newgrounds.encoders.JSON.getParent();
} else {
com.newgrounds.encoders.JSON.cache.parents.push(com.newgrounds.encoders.JSON.cache.target);
com.newgrounds.encoders.JSON.cache.target = com.newgrounds.encoders.JSON.cache.target[0];
if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'array') {
com.newgrounds.encoders.JSON.cache.encoded += '[';
} else {
if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'object') {
com.newgrounds.encoders.JSON.cache.encoded += '{';
}
}
}
break;
case 'object':
for (var v1 in com.newgrounds.encoders.JSON.cache.target) {
break;
}
if (v1 === undefined) {
com.newgrounds.encoders.JSON.cache.encoded += '}';
com.newgrounds.encoders.JSON.getParent();
} else {
com.newgrounds.encoders.JSON.cache.parents.push(com.newgrounds.encoders.JSON.cache.target);
com.newgrounds.encoders.JSON.cache.target = com.newgrounds.encoders.JSON.cache.target[v1];
com.newgrounds.encoders.JSON.cache.encoded += '"' + (v1.split('"')).join('\\"') + '":';
if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'array') {
com.newgrounds.encoders.JSON.cache.encoded += '[';
} else {
if (com.newgrounds.encoders.JSON.getType(com.newgrounds.encoders.JSON.cache.target) == 'object') {
com.newgrounds.encoders.JSON.cache.encoded += '{';
}
}
}
break;
default:
com.newgrounds.encoders.JSON.cache.encoded += 'null';
com.newgrounds.encoders.JSON.getParent();
}
};
v1.getParent = function () {
if (com.newgrounds.encoders.JSON.cache.parents.length > 0) {
var v1 = com.newgrounds.encoders.JSON.cache.parents.pop();
if (com.newgrounds.encoders.JSON.getType(v1) == 'array') {
v1.shift();
} else {
for (var v3 in v1) {
delete v1[v3];
break;
}
}
if (com.newgrounds.encoders.JSON.getType(v1) == 'object' or com.newgrounds.encoders.JSON.getType(v1) == 'array') {
for (var v2 in v1) {
break;
}
if (v2 !== undefined) {
com.newgrounds.encoders.JSON.cache.encoded += ',';
}
}
com.newgrounds.encoders.JSON.cache.target = v1;
} else {
com.newgrounds.encoders.JSON.cache.complete = true;
}
};
v1.encode_chunks = 20000;
v1.decode_chunks = 20000;
v1.busy = false;
ASSetPropFlags(com.newgrounds.encoders.JSON.prototype, null, 1);
}
#endinitclip
}
movieClip 52 __Packages.com.newgrounds.APIEventDispatcher {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.APIEventDispatcher) {
var v1 = function () {};
com.newgrounds.APIEventDispatcher = v1;
var v2 = v1.prototype;
v2.addEventListener = function (event, callback, target) {
if (!target) {
throw 'Attempted to create a listener without providing a target object.';
}
if (!this.listeners[event]) {
this.listeners[event] = [];
} else {
this.removeEventListener(event, target);
}
this.listeners[event].push({'target': target, 'callback': callback});
};
v2.removeEventListener = function (event, target) {
if (!target) {
throw 'Attempted to remove a listener without providing a target object.';
}
if (!this.listeners[event] || this.listeners[event].length < 1) {
return undefined;
}
var v4 = [];
var v2 = 0;
while (v2 < this.listeners[event].length) {
if (this.listeners[event][v2].target != target) {
v4.push(this.listeners[event][v2]);
}
++v2;
}
this.listeners[event] = v4;
};
v2.dispatchEvent = function (event) {
if (!this.hasEventListener(event.__get__type())) {
return false;
}
this.collectGarbage(event.__get__type());
var v2 = 0;
while (v2 < this.listeners[event.__get__type()].length) {
var v4 = this.listeners[event.__get__type()][v2].callback;
if (this.listeners[event.__get__type()][v2].target) {
var v5 = this.listeners[event.__get__type()][v2].target;
v4.call(v5, event);
} else {
v4(event);
}
++v2;
}
return true;
};
v2.hasEventListener = function (event) {
return this.listeners[event] != undefined && this.listeners[event].length > 0;
};
v2.collectGarbage = function (event) {
var v5 = [];
if (!this.hasEventListener) {
return undefined;
}
var v2 = 0;
while (v2 < this.listeners[event].length) {
var v4 = this.listeners[event][v2].target;
if (v4) {
v5.push(this.listeners[event][v2]);
}
++v2;
}
this.listeners[event] = v5;
};
v2.listeners = {};
ASSetPropFlags(com.newgrounds.APIEventDispatcher.prototype, null, 1);
}
#endinitclip
}
movieClip 53 __Packages.com.newgrounds.encoders.MD5 {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.encoders) {
_global.com.newgrounds.encoders = new Object();
}
if (!_global.com.newgrounds.encoders.MD5) {
var v1 = function () {};
com.newgrounds.encoders.MD5 = v1;
var v2 = v1.prototype;
v1.calculate = function (src) {
return com.newgrounds.encoders.MD5.hex_md5(src);
};
v1.hex_md5 = function (src) {
return com.newgrounds.encoders.MD5.binl2hex(com.newgrounds.encoders.MD5.core_md5(com.newgrounds.encoders.MD5.str2binl(src), src.length * 8));
};
v1.core_md5 = function (x, len) {
x[len >> 5] |= 128 << len % 32;
x[(len + 64 >>> 9 << 4) + 14] = len;
var v4 = 1732584193;
var v3 = -271733879;
var v2 = -1732584194;
var v1 = 271733878;
var v5 = 0;
while (v5 < x.length) {
var v10 = v4;
var v9 = v3;
var v8 = v2;
var v7 = v1;
v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 0], 7, -680876936);
v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 1], 12, -389564586);
v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 2], 17, 606105819);
v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 3], 22, -1044525330);
v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 4], 7, -176418897);
v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 5], 12, 1200080426);
v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 6], 17, -1473231341);
v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 7], 22, -45705983);
v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 8], 7, 1770035416);
v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 9], 12, -1958414417);
v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 10], 17, -42063);
v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 11], 22, -1990404162);
v4 = com.newgrounds.encoders.MD5.md5_ff(v4, v3, v2, v1, x[v5 + 12], 7, 1804603682);
v1 = com.newgrounds.encoders.MD5.md5_ff(v1, v4, v3, v2, x[v5 + 13], 12, -40341101);
v2 = com.newgrounds.encoders.MD5.md5_ff(v2, v1, v4, v3, x[v5 + 14], 17, -1502002290);
v3 = com.newgrounds.encoders.MD5.md5_ff(v3, v2, v1, v4, x[v5 + 15], 22, 1236535329);
v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 1], 5, -165796510);
v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 6], 9, -1069501632);
v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 11], 14, 643717713);
v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 0], 20, -373897302);
v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 5], 5, -701558691);
v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 10], 9, 38016083);
v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 15], 14, -660478335);
v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 4], 20, -405537848);
v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 9], 5, 568446438);
v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 14], 9, -1019803690);
v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 3], 14, -187363961);
v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 8], 20, 1163531501);
v4 = com.newgrounds.encoders.MD5.md5_gg(v4, v3, v2, v1, x[v5 + 13], 5, -1444681467);
v1 = com.newgrounds.encoders.MD5.md5_gg(v1, v4, v3, v2, x[v5 + 2], 9, -51403784);
v2 = com.newgrounds.encoders.MD5.md5_gg(v2, v1, v4, v3, x[v5 + 7], 14, 1735328473);
v3 = com.newgrounds.encoders.MD5.md5_gg(v3, v2, v1, v4, x[v5 + 12], 20, -1926607734);
v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 5], 4, -378558);
v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 8], 11, -2022574463);
v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 11], 16, 1839030562);
v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 14], 23, -35309556);
v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 1], 4, -1530992060);
v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 4], 11, 1272893353);
v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 7], 16, -155497632);
v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 10], 23, -1094730640);
v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 13], 4, 681279174);
v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 0], 11, -358537222);
v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 3], 16, -722521979);
v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 6], 23, 76029189);
v4 = com.newgrounds.encoders.MD5.md5_hh(v4, v3, v2, v1, x[v5 + 9], 4, -640364487);
v1 = com.newgrounds.encoders.MD5.md5_hh(v1, v4, v3, v2, x[v5 + 12], 11, -421815835);
v2 = com.newgrounds.encoders.MD5.md5_hh(v2, v1, v4, v3, x[v5 + 15], 16, 530742520);
v3 = com.newgrounds.encoders.MD5.md5_hh(v3, v2, v1, v4, x[v5 + 2], 23, -995338651);
v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 0], 6, -198630844);
v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 7], 10, 1126891415);
v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 14], 15, -1416354905);
v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 5], 21, -57434055);
v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 12], 6, 1700485571);
v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 3], 10, -1894986606);
v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 10], 15, -1051523);
v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 1], 21, -2054922799);
v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 8], 6, 1873313359);
v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 15], 10, -30611744);
v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 6], 15, -1560198380);
v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 13], 21, 1309151649);
v4 = com.newgrounds.encoders.MD5.md5_ii(v4, v3, v2, v1, x[v5 + 4], 6, -145523070);
v1 = com.newgrounds.encoders.MD5.md5_ii(v1, v4, v3, v2, x[v5 + 11], 10, -1120210379);
v2 = com.newgrounds.encoders.MD5.md5_ii(v2, v1, v4, v3, x[v5 + 2], 15, 718787259);
v3 = com.newgrounds.encoders.MD5.md5_ii(v3, v2, v1, v4, x[v5 + 9], 21, -343485551);
v4 = com.newgrounds.encoders.MD5.safe_add(v4, v10);
v3 = com.newgrounds.encoders.MD5.safe_add(v3, v9);
v2 = com.newgrounds.encoders.MD5.safe_add(v2, v8);
v1 = com.newgrounds.encoders.MD5.safe_add(v1, v7);
v5 += 16;
}
return new Array(v4, v3, v2, v1);
};
v1.md5_cmn = function (q, a, b, x, s, t) {
return com.newgrounds.encoders.MD5.safe_add(com.newgrounds.encoders.MD5.bit_rol(com.newgrounds.encoders.MD5.safe_add(com.newgrounds.encoders.MD5.safe_add(a, q), com.newgrounds.encoders.MD5.safe_add(x, t)), s), b);
};
v1.md5_ff = function (a, b, c, d, x, s, t) {
return com.newgrounds.encoders.MD5.md5_cmn(b & c | ~b & d, a, b, x, s, t);
};
v1.md5_gg = function (a, b, c, d, x, s, t) {
return com.newgrounds.encoders.MD5.md5_cmn(b & d | c & ~d, a, b, x, s, t);
};
v1.md5_hh = function (a, b, c, d, x, s, t) {
return com.newgrounds.encoders.MD5.md5_cmn(b ^ c ^ d, a, b, x, s, t);
};
v1.md5_ii = function (a, b, c, d, x, s, t) {
return com.newgrounds.encoders.MD5.md5_cmn(c ^ (b | ~d), a, b, x, s, t);
};
v1.bit_rol = function (num, cnt) {
return num << cnt | num >>> 32 - cnt;
};
v1.safe_add = function (x, y) {
var v1 = (x & 65535) + (y & 65535);
var v2 = (x >> 16) + (y >> 16) + (v1 >> 16);
return v2 << 16 | v1 & 65535;
};
v1.str2binl = function (str) {
var v3 = new Array();
var v4 = 255;
var v1 = 0;
while (v1 < str.length * 8) {
v3[v1 >> 5] |= (str.charCodeAt(v1 / 8) & v4) << v1 % 32;
v1 += 8;
}
return v3;
};
v1.binl2hex = function (binarray) {
var v4 = new String('');
var v3 = new String('0123456789abcdef');
var v1 = 0;
while (v1 < binarray.length * 4) {
v4 += v3.charAt(binarray[v1 >> 2] >> (v1 % 4) * 8 + 4 & 15) + v3.charAt(binarray[v1 >> 2] >> (v1 % 4) * 8 & 15);
++v1;
}
return v4;
};
ASSetPropFlags(com.newgrounds.encoders.MD5.prototype, null, 1);
}
#endinitclip
}
movieClip 54 __Packages.com.newgrounds.components.FlashAd {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.components) {
_global.com.newgrounds.components = new Object();
}
if (!_global.com.newgrounds.components.FlashAd) {
var v1 = function () {
super();
this.background._visible = this.show_background;
if (this.show_background) {
this._x = Math.round(this._x);
this._y = Math.round(this._y);
this._xscale = 100;
this._yscale = 100;
}
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.ADS_APPROVED, this.loadAd, this);
};
com.newgrounds.components.FlashAd = v1;
com.newgrounds.components.FlashAd extends MovieClip;
var v2 = v1.prototype;
v2.onLoad = function () {
com.newgrounds.API.attachFlashAd(this);
};
v2.loadAd = function (event, params) {
com.newgrounds.API.attachFlashAd(this);
};
v2.onUnload = function () {
this.clip.ad.unloadMovie();
this.clip.ad.removeMovieClip();
this.clip.removeMovieClip();
this.mask.removeMovieClip();
this.background.removeMovieClip();
com.newgrounds.API.removeEventListener(com.newgrounds.APIEvent.ADS_APPROVED, this);
};
ASSetPropFlags(com.newgrounds.components.FlashAd.prototype, null, 1);
}
#endinitclip
}
movieClip 68 __Packages.com.newgrounds.components.APIConnector {
#initclip
if (!_global.com) {
_global.com = new Object();
}
if (!_global.com.newgrounds) {
_global.com.newgrounds = new Object();
}
if (!_global.com.newgrounds.components) {
_global.com.newgrounds.components = new Object();
}
if (!_global.com.newgrounds.components.APIConnector) {
var v1 = function () {
super();
this._x = Math.round(this._x);
this._y = Math.round(this._y);
if (this.fake_session and com.newgrounds.API.getHost() == 'localhost') {
com.newgrounds.API.setFakeSession(true);
}
if (this.api_id && !com.newgrounds.API.isConnected()) {
this.nextFrame();
this._visible = false;
this.setGotoFrame('connecting');
if (this.error_screens) {
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.NEW_VERSION_AVAILABLE, this.onNewVersion, this);
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.HOST_BLOCKED, this.onBadHost, this);
}
if (this.medal_popups) {
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.UNLOCK_MEDAL, this.doUnlock, this);
}
com.newgrounds.API.addEventListener(com.newgrounds.APIEvent.API_CONNECTED, this.onConnected, this);
if (com.newgrounds.API.isPublishedHost()) {
this.debug = false;
}
if (this.version) {
com.newgrounds.API.setVersion(this.version);
}
if (!com.newgrounds.API.hasUserSession()) {
var v3 = com.newgrounds.API.loadLocal('api_connector_data');
if (v3) {
this.local_data = v3;
} else {
this.local_data = {'medals_unlocked': new Array()};
}
}
com.newgrounds.API.setPreload(true);
com.newgrounds.API.connect(this.api_id, this.encryption_key, this.debug);
} else {
if (this.api_id && com.newgrounds.API.isConnected()) {
this._visible = false;
this.setGotoFrame('done');
}
}
this.stop();
};
com.newgrounds.components.APIConnector = v1;
com.newgrounds.components.APIConnector extends MovieClip;
var v2 = v1.prototype;
v2.doUnlock = function (e) {
var v5 = _root.attachMovie('NewgroundsAPIAsset_Medal_Popup', 'medal_pop_' + e.data.medal.getID(), _root.getNextHighestDepth());
if (e.data.x != undefined) {
v5._x = e.data.x + 254;
} else {
v5._x = Stage.width;
}
if (e.data.x != undefined) {
v5._y = e.data.y + 73;
} else {
v5._y = Stage.height;
}
v5.medal = e.data.medal;
var v3 = com.newgrounds.API.getMedals();
var v2 = 0;
while (v2 < v3.length) {
if (v3[v2].getID() != e.data.medal.getID() && _root['medal_pop_' + v3[v2].getID()]) {
_root['medal_pop_' + v3[v2].getID()]._y -= 70;
}
++v2;
}
};
v2.onLoginError = function () {
var v2 = _root.attachMovie('Asset_Login_Warning', 'Asset_Login_Warning', _root.getNextHighestDepth());
};
v2.onConnectionError = function () {
var v3 = _root.attachMovie('Asset_Connection_Error', 'Asset_Connection_Error', _root.getNextHighestDepth());
this.setGotoFrame('done');
};
v2.onConnected = function (event, params) {
if (event.success) {
this.setGotoFrame('connected');
if (this.error_screens && com.newgrounds.API.isPublishedHost() && com.newgrounds.API.hasPublisher() && !com.newgrounds.API.hasUserSession()) {
this.onLoginError();
}
} else {
if (this.error_screens) {
this.onConnectionError();
}
}
};
v2.onNewVersion = function () {
var v2 = _root.attachMovie('NewgroundsAsset_New_Version_Available', 'NewgroundsAsset_New_Version_Available', _root.getNextHighestDepth());
v2.official_version_url = com.newgrounds.API.getOfficialURL();
};
v2.onBadHost = function () {
var v2 = _root.attachMovie('NewgroundsAsset_Illegal_Host', 'NewgroundsAsset_Illegal_Host', _root.getNextHighestDepth());
v2.official_version_url = com.newgrounds.API.getOfficialURL();
};
v2.setGotoFrame = function (frame) {
if (this.goto_frame == null) {
this.goto_frame = frame;
this.gotoframe_interval = setInterval(this, 'gotoFrameIfLoaded', 50);
}
};
v2.gotoFrameIfLoaded = function () {
if (this.goto_frame != null && this._framesloaded == this._totalframes) {
this._visible = true;
this.gotoAndStop(this.goto_frame);
this.goto_frame = null;
clearInterval(this.gotoframe_interval);
}
};
v2.goto_frame = null;
ASSetPropFlags(com.newgrounds.components.APIConnector.prototype, null, 1);
}
#endinitclip
}
movieClip 155 {
}
movieClip 157 {
}
movieClip 192 {
}
movieClip 194 {
}
movieClip 198 {
}
movieClip 200 {
}
movieClip 205 {
}
movieClip 207 {
}
movieClip 1523 {
}
movieClip 1675 {
}
frame 5823 {
stop();
}
button 1836 {
on (release) {
getURL('http://www.newgrounds.com/portal/view/526906', '_blank');
}
}
button 1838 {
on (release) {
getURL('http://www.newgrounds.com/portal/view/567351', '_blank');
}
}
button 1841 {
on (release) {
getURL('http://www.newgrounds.com/portal/view/562097', '_blank');
}
}
button 1843 {
on (release) {
getURL('http://www.newgrounds.com/portal/view/554818', '_blank');
}
}
button 1846 {
on (release) {
_root.gotoAndPlay('startfilm');
}
}