This commit is contained in:
Walter 2025-02-06 19:37:32 +01:00
parent 461ec8d503
commit 4b1168d259
71 changed files with 1933 additions and 0 deletions

0
app/api/__init__.py Normal file
View File

3
app/api/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
app/api/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ApiConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api'

View File

3
app/api/models.py Normal file
View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

3
app/api/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

10
app/api/urls.py Normal file
View File

@ -0,0 +1,10 @@
from django.urls import path, include
from api.views import LoadLevel, RandomLevel, CompleteLevel, RateLevel
urlpatterns = [
path("load_level", LoadLevel.as_view(), name="api-load_level"),
path("get_random_level", RandomLevel.as_view(), name="api-get_random_level"),
path("complete_level", CompleteLevel.as_view(), name="api-complete_level"),
path("rate_level", RateLevel.as_view(), name="api-rate_level")
]

53
app/api/views.py Normal file
View File

@ -0,0 +1,53 @@
from django.shortcuts import render, HttpResponse
from django.http import HttpResponseBadRequest
from django.views.generic import TemplateView
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
import random
import time
# Create your views here.
from game.models import Level
class CSRFexemptTemplateView(TemplateView):
@method_decorator(csrf_exempt)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
class LoadLevel(CSRFexemptTemplateView):
def post(self, request, *args, **kwargs):
levelNum = request.POST.get("level_num")
if levelNum is None or not levelNum.isdigit():
return HttpResponseBadRequest()
level = Level.objects.filter(id=int(levelNum)).first()
if level is None:
return HttpResponseBadRequest()
flashVars = level.getFlashVars(seperator="&")
return HttpResponse(flashVars)
class RandomLevel(CSRFexemptTemplateView):
def post(self, request, *args, **kwargs):
level = Level.objects.order_by("?").first()
flashVars = level.getFlashVars(seperator="&")
return HttpResponse(flashVars)
def get(self, request, *args, **kwargs):
level = Level.objects.order_by("?").first()
flashVars = level.getFlashVars(seperator="&")
return HttpResponse(flashVars)
class CompleteLevel(CSRFexemptTemplateView):
def post(self, request, *args, **kwargs):
pass
class RateLevel(CSRFexemptTemplateView):
def post(self, request, *args, **kwargs):
pass

0
app/game/__init__.py Normal file
View File

7
app/game/admin.py Normal file
View File

@ -0,0 +1,7 @@
from django.contrib import admin
from .models import Level, Author
# Register your models here.
admin.site.register(Level)
admin.site.register(Author)

6
app/game/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class GameConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'game'

View File

@ -0,0 +1,36 @@
# Generated by Django 3.2.7 on 2021-09-28 17:44
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Level',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('author', models.TextField()),
('title', models.CharField(max_length=16)),
('author_id', models.IntegerField()),
('level_id', models.IntegerField()),
('darts', models.IntegerField()),
('target', models.IntegerField()),
('plays', models.IntegerField()),
('completions', models.IntegerField()),
('rating', models.IntegerField(blank=True, null=True)),
('data', models.CharField(max_length=288)),
],
),
migrations.CreateModel(
name='Player',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
),
]

View File

@ -0,0 +1,36 @@
# Generated by Django 3.2.7 on 2021-09-28 18:06
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('game', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Author',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('authorId', models.IntegerField()),
],
),
migrations.RenameField(
model_name='level',
old_name='level_id',
new_name='levelId',
),
migrations.RemoveField(
model_name='level',
name='author_id',
),
migrations.AlterField(
model_name='level',
name='author',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='game.author'),
),
]

View File

@ -0,0 +1,22 @@
# Generated by Django 3.2.7 on 2021-09-28 18:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('game', '0002_auto_20210928_2006'),
]
operations = [
migrations.RemoveField(
model_name='level',
name='rating',
),
migrations.AddField(
model_name='level',
name='rating9',
field=models.IntegerField(blank=True, null=True),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.7 on 2021-09-28 18:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('game', '0003_auto_20210928_2039'),
]
operations = [
migrations.RenameField(
model_name='level',
old_name='rating9',
new_name='rating',
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.7 on 2021-09-28 18:43
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('game', '0004_rename_rating9_level_rating'),
]
operations = [
migrations.AlterField(
model_name='level',
name='rating',
field=models.FloatField(blank=True, null=True),
),
]

View File

44
app/game/models.py Normal file
View File

@ -0,0 +1,44 @@
from django.db import models
# Create your models here.
class Author(models.Model):
name = models.CharField(max_length=255)
authorId = models.IntegerField()
def __str__(self):
return self.name
class Level(models.Model):
author = models.ForeignKey(Author, on_delete=models.DO_NOTHING)
title = models.CharField(max_length=16)
levelId = models.IntegerField()
darts = models.IntegerField()
target = models.IntegerField()
plays = models.IntegerField()
completions = models.IntegerField()
rating = models.FloatField(null=True, blank=True)
data = models.CharField(max_length=288)
def __str__(self):
return f"{self.author} - {self.title}"
def getFlashVars(self, seperator):
flashVars = {
"levelNum": self.levelId,
"title": self.title,
"darts": self.darts,
"target": self.target,
"data": self.data,
"authorID": self.author.authorId,
"numCompleted": self.completions,
"rating": self.rating if self.rating else 0.0,
}
flashVarsStr = f"{seperator}".join([f"{k}={v}"
for k, v in flashVars.items()])
return flashVarsStr
class Player(models.Model):
pass

View File

@ -0,0 +1,15 @@
.ad_720x90 {
background-image: url("../img/ads/banner720x90.png");
}
.ad_160x600 {
background-image: url("../img/ads/banner160x600.png");
}
.ad_90x720 {
background-image: url("../img/ads/banner90x720.png");
}
#horizontal_header {
background: #96d3ff;
}

View File

@ -0,0 +1,475 @@
ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input {
margin: 0;
padding: 0;
}
object {
margin-bottom: 6px;
float: left;
}
a:focus, a:active {
outline: none;
}
a img,:link img,:visited img {
border: none;
}
#header:hover{
border-bottom: none !important;
text-decoration: none !important;
}
#menu {
width: 192px;
margin: 0 10px 0 6px;
padding: 4px 0 0 0;
float: left;
background: white;
overflow:hidden;
_margin-left: 3px;
}
#menu a {
border: none !important;
margin-left: -3px;
}
#menu li {
list-style-type: none;
}
.skyscraper {
float: left;
width: 180px;
display: block;
}
.skyscraper.rhs {
_float: right;
_clear: left;
}
a {
text-decoration: none;
}
a:hover {
border-bottom-width: 1px;
border-bottom-style: solid !important;
text-decoration: none;
}
body, td {
margin: 0;
padding: 0;
font-family: Arial, Verdana, sans-serif;
}
h1, h2, h3, h4 {
line-height: 1.5;
}
td {
padding: 0 10px 0 0;
}
body {
padding: 20px;
margin: 0 auto;
}
html {
display: block;
background: white url("../img/bg1.gif") repeat-x;
}
body {
display: block;
background: url("../img/bg2.gif");
text-align: center;
min-height: 1050px;
}
.cloud {
width: 300px;
display: none;
background: url("../img/clouds.gif");
height: 200px;
position: absolute;
}
#wrapper {
width: 1024px;
margin: 0 auto;
display: block;
min-height: 400px;
position: relative;
}
#inner_wrapper {
float: left;
width: 1024px;
padding: 0;
display: block;
background: url("../img/alpha.png");
_background: #A2DAFF;
overflow: hidden;
}
#header {
width: 750px;
margin: 2px auto;
margin-bottom: -8px;
display: block;
background-image: url("../img/header2.gif");
height: 100px;
}
.ad {
float: left;
margin: 10px;
display: block;
text-align: center;
_margin-left: 5px !important;
_margin-right: 5px !important;
}
.ad_720x90 {
width: 720px;
height: 90px;
}
.ad_160x600 {
width: 160px;
margin: 0 5px 10px 10px;
margin-right: 5px !important;
height: 600px;
}
#content {
width: 640px;
float: left;
margin: 0px;
padding-bottom: 10px;
display: block;
_height: 315px;
margin-left: -4px;
}
#content div.wide,
#content div.left,
#content div.right{
float: left;
border: 10px solid #FFFFFF;
width: 275px;
margin-right: 10px;
padding: 20px 10px 40px 10px;
display: block;
background: #ep;
color: #FFFFFF;
font-size: 20px;
text-align: left;
background: #0099ff;
_margin-left: 5px;
}
div.flash {
padding: 0 !important;
width: 620px !important;
}
.flash object {
margin-bottom: 0px;
}
.light {
background-color:#4AB7FF !important;
}
#content div h4 {
}
#content li {
margin-left: 30px;
}
#content div.left {
margin-bottom: 5px;
_margin-left: 0;
}
#content div.right {
margin: 0;
margin-bottom: 5px;
}
#content div a {
border-bottom: 1px dotted #FFFFFF;
color: #FFFFFF;
}
#content div a:hover {
border-bottom: 1px solid #FFFFFF;
}
#content div.wide {
width: 580px;
padding: 10px 20px;
margin: 0 0 5px 0 !important;
}
#horizontal_header {
margin: 10px 0 5px 10px;
float: left;
width: 1004px;
display: block;
background: #FFFFFF;
height: 110px;
_margin-left: 5px;
_height: 107px !important;
_overflow:hidden;
}
#login_box {
width: 222px;
float: left;
margin: 11px;
padding: 3px 8px;
display: block;
background: #0099FF;
color: #FFFFFF;
text-align: left;
height: 82px;
_margin: 9px 5px;
}
#login_box h3 {
font-size: 11px;
}
#login_box a {
border-bottom: 1px dotted #FFFFFF;
color: #FFFFFF;
margin: 0 2px;
_margin: 0 0 2px 0;
}
#login_box label {
width: 50px;
display: block;
font-size: 12px;
text-align: left;
}
#login_box input {
margin-top: -1px;
width: 145px;
margin: -1px auto;
display:block;
}
#register_box label{
width: 210px;
float: left;
margin-top: 16px;
display: block;
}
#register_box input {
padding: 2px;
width: 340px;
float: left;
margin-top: 15px;
display: block;
font-size: 18px;
}
#content div.form_error {
border: none;
float:left;
width: 550px;
padding: 4px;
margin: 20px 0 10px 0;
background: #FCFCFC;
color: #FF0000;
}
input#register_button {
width: 100px;
padding: 4px;
float:right;
margin-right: 20px;
}
.pagination {
width: 100%;
padding: 5px;
margin-top: 10px;
display: block;
text-align: center;
}
.pagination a, .pagination span {
padding: 3px 7px;
}
.pagination a:hover {
background: #FFFFFF;
color: #0099FF !important;
}
table#levels_table {
border: 1px dotted #4FB8FF;
font-size: 16px;
border-collapse: collapse;
}
tr.odd {
background-color: #1FA5FF;
}
#content div table td{
padding: 0 !important;
border-bottom: 1px dotted #4FB8FF;
}
#content div table th {
padding: 4px 6px;
border: 1px solid #FFFFFF;
background: #FFFFFF;
color: #0099FF;
}
#content div table {
width: 100%;
margin: 10px 0 0 0;
}
#content div table a {
padding: 4px 6px;
border-bottom: none;
display: block;
text-decoration: underline;
}
#content div table a:hover{
border-bottom: none !important;
display: block;
background: #FFFFFF;
color: #0099FF;
}
#terms {
padding: 20px;
margin: 10px 10px 30px 10px;
height: 300px;
overflow: auto;
outline: 1px solid #FFFFFF;
}
#terms_agree {
margin: 5px;
}
#terms_form input {
padding: 5px 10px;
}
#content div a.homepage_button {
position:relative;
float:left;
margin: 10px 0px 10px 100px;
border-bottom: none !important;
text-decoration:none !important;
}
.wide.centered {
text-align: center !important;
}
.centered {
text-align: center;
width: 100%;
}
label.radio {
font-size: 14px;
text-align: right;
height: 14px;
float:left;
clear:left;
margin: 4px 10px 0 60px !important;
}
label.fullwidth {
width: 500px !important;
}
input.radio {
width: auto !important;
float:left;
margin: 8px 0 0 10px !important
}
#content div.wide.full {
width: 900px !important;
margin-left: 40px !important;
margin-top: 20px !important;
padding-bottom: 40px;
margin-bottom: 50px !important;
}
#searchbox {
background: #0099FF;
width: 170px;
margin: 5px 0 10px 5px;
float:left;
padding: 10px 0 0 0;
display:block;
border: 10px solid white;
}
#searchbox input {
padding: 3px;
}
#searchbox input.submit {
width: 60px;
margin: 5px 0 10px 90px;
}
#remember {
margin: 2px 4px 0 0 !important;
height: 15px !important;
padding: 0 !important;
}
#remember_label {
margin: 3px 0 0 0 !important;
}
#login_box #remember_label, #login_box #remember {
float:left !important;
width: auto !important;
height: auto !important;
float:left !important;
}
#login {
width: 120px !important;
float:right;
}
.skyscraper.rhs .ad{
margin: 0 auto;
height: 600px;
width: 160px;
margin-left: 20px;
margin-bottom: 10px;
}
.skyscraper.rhs .ad * {
margin: 0 auto;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,176 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

View File

@ -0,0 +1,25 @@
Copyright (c) 2018 Ruffle LLC <ruffle@ruffle.rs> and Ruffle contributors
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
Software without restriction, including without
limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice
shall be included in all copies or substantial portions
of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,57 @@
# ruffle-selfhosted
ruffle-selfhosted is the intended way to get Ruffle onto your website.
You may either include it and forget about it, and we will polyfill existing Flash content,
or use our APIs for custom configurations or more advanced usages of the Ruffle player.
## Using ruffle-selfhosted
For more examples and in-depth documentation on how to use Ruffle on your website, please
[check out our wiki](https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#web).
### Host Ruffle
The `selfhosted` package is configured for websites that do not use bundlers or npm and just want
to get up and running. If you'd prefer to use Ruffle through npm and a bundler, please
[refer to ruffle core](https://github.com/ruffle-rs/ruffle/tree/master/web/packages/core).
Before you can get started with using Ruffle on your website, you must host its files yourself.
Either take the [latest build](https://github.com/ruffle-rs/ruffle/releases)
or [build it yourself](https://github.com/ruffle-rs/ruffle/blob/master/web/README.md), and make these files accessible by your web server.
Please note that the `.wasm` file must be served properly, and some web servers may not do that
correctly out of the box. Please see [our wiki](https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-wasm-mime-type)
for instructions on how to configure this, if you encounter a `Incorrect response MIME type` error.
### "Plug and Play"
If you have an existing website with flash content, you can simply include Ruffle as a script and
our polyfill magic will replace everything for you. No fuss, no mess.
```html
<script src="path/to/ruffle/ruffle.js"></script>
```
### Javascript API
If you want to control the Ruffle player, you may use our Javascript API.
```html
<script>
window.RufflePlayer = window.RufflePlayer || {};
window.addEventListener("DOMContentLoaded", () => {
let ruffle = window.RufflePlayer.newest();
let player = ruffle.createPlayer();
let container = document.getElementById("container");
container.appendChild(player);
player.ruffle().load("movie.swf");
});
</script>
<script src="path/to/ruffle/ruffle.js"></script>
```
## Building, testing or contributing
Please see [the ruffle-web README](https://github.com/ruffle-rs/ruffle/blob/master/web/README.md).

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"name":"@ruffle-rs/ruffle","version":"0.1.0-nightly.2025.02.06","description":"Putting Flash back on the web. Ruffle will polyfill all Flash content and replace it with the Ruffle flash player.","license":"(MIT OR Apache-2.0)","keywords":["flash","swf"],"homepage":"https://ruffle.rs","bugs":"https://github.com/ruffle-rs/ruffle/issues","repository":"github:ruffle-rs/ruffle","main":"ruffle.js"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,119 @@
{% load static %}
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="title" content="Bloonsworld!"/>
<meta name="robots" content="index, follow"/>
<meta name="description" content="Finally, the creators of Bloons bring you Bloonsworld!"/>
<meta name="keywords" content="flash, games, awesome"/>
<meta name="language" content="en"/>
<title>Bloonsworld!</title>
<!--[if IE6]>
<style>
#wrapper {
background: url({% static 'game/img/alpha.png' %});
filter:alpha(opacity=75);
}
</style>
<![endif]-->
<link rel="shortcut icon" href="{% static 'game/img/favicon.ico' %}"/>
<link rel="stylesheet" type="text/css" media="screen" href="{% static 'game/css/main.css' %}"/>
<link rel="stylesheet" type="text/css" media="screen" href="{% static 'game/css/append.css' %}"/>
<script src="{% static 'game/misc/ruffle/ruffle.js' %}"></script>
<script>
window.RufflePlayer.config = {
autoplay: "on"
};
</script>
</head>
<body id="body">
<div id="wrapper">
<div id="inner_wrapper">
<div id="alpha"></div>
<a href="{% url 'index' %}" id="header"></a>
<div id="horizontal_header">
<div class="ad ad_720x90">
<div id="adslot1"></div>
</div>
<div id="login_box">
<form method="post" action="{% url 'login' %}"> <table>
<tr>
<td><label for="login_email">Email: </label></td>
<td><input type="text" name="login_email" id="login_email" value=""/></td>
</tr>
<tr>
<td><label for="login_password">Password: </label></td>
<td><input type="password" name="login_password" id="login_password" value=""/></td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" name="remember" id="remember" value="1" checked="checked"/>
<label for="remember" id="remember_label">Remember</label>
<input type="submit" name="commit" value="Log in" id="login"/>
</td>
</tr>
</table></form>
<h3><a href="#">Register for free</a>&nbsp;&nbsp;<a href="#">Forgot Password?</a></h3>
</div> </div>
<div class="skyscraper">
<div class="ad ad_160x600">
<div id="adslot2"></div>
</div>
</div>
<div id="content">
{% block content %}{% endblock content %}
<div class="wide centered">
Copyright Kaiparasoft 2007, all rights reserved<br/>
<a href="http://www.ninjakiwi.com">Ninjakiwi</a>
- <a href="{% url 'terms' %}">Terms of Use</a>
- <a href="{% url 'contact' %}">Contact Us</a> </div>
</div>
<div class="skyscraper rhs">
<ul id="menu" class="light">
<li><a href="/web/20140115060749/http://bloonsworld.com/"><img src="{% static 'game/img/nav_home.gif' %}" alt="Nav_home"/></a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/game"><img src="{% static 'game/img/nav_play.gif' %}" alt="Nav_play"/></a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/level_editor"><img src="{% static 'game/img/nav_build.gif' %}" alt="Nav_build"/></a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/level/list"><img src="{% static 'game/img/nav_levels.gif' %}" alt="Nav_levels"/></a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/user/list"><img src="{% static 'game/img/nav_users.gif' %}" alt="Nav_users"/></a></li>
<li><a href="http://web.archive.org/web/20140115060749/http://www.ninjakiwi.com/"><img src="{% static 'game/img/nav_nk.gif' %}" alt="Nav_nk"/></a></li>
<li><a href="http://web.archive.org/web/20140115060749/http://ninjakiwi.com/Games/Tower-Defense/Bloons-Tower-Defense-5-Deluxe.html?predorder"><img src="{% static 'game/img/nav_buy.gif' %}" alt="Nav_buy"/></a></li>
</ul>
<div id="searchbox">
<form method="post" action="/web/20140625080942/http://bloonsworld.com/level/list"> <input type="text" name="search" id="search" value="Search levels" onclick="this.value=&quot;&quot;"/> <input type="submit" name="commit" value="Search!" class="submit"/> </form>
<form method="post" action="/web/20140625080942/http://bloonsworld.com/user/list"> <input type="text" name="search" id="search" value="Search users" onclick="this.value=&quot;&quot;"/> <input type="submit" name="commit" value="Search!" class="submit"/> </form>
</div>
<div class="ad ad_90x720">
<div id="adslot3"></div>
</div>
</div>
</div> </div>
</body>
<div id="adholder1">
<script type="text/javascript"><!--
e9 = new Object();
e9.size = "728x90";
//--></script>
</div>
<div id="adholder2">
<div id="adholder3">
<script type="text/javascript"><!--
e9 = new Object();
e9.size = "160x600";
//--></script>
<script type="text/javascript">
document.getElementById('adslot1').appendChild(document.getElementById('adholder1'));
document.getElementById('adslot2').appendChild(document.getElementById('adholder3'));
document.getElementById('adslot3').appendChild(document.getElementById('adholder2'));
</script>

View File

@ -0,0 +1,221 @@
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width"><title>https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/</title><link rel="stylesheet" type="text/css" href="resource://content-accessible/viewsource.css"></head><body id="viewsource" class="highlight" style="tab-size: 4"><pre id="line1"><span></span><span class="error doctype" title="Almost standards mode doctype. Expected “&lt;!DOCTYPE html&gt;”.">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span><span>
<span id="line2"></span></span><span>&lt;<span class="start-tag">html</span> <span class="attribute-name">xmlns</span>="<a class="attribute-value">http://www.w3.org/1999/xhtml</a>" <span class="attribute-name">xml:lang</span>="<a class="attribute-value">en</a>" <span class="attribute-name">lang</span>="<a class="attribute-value">en</a>"&gt;</span><span>
<span id="line3"></span></span><span>&lt;<span class="start-tag">head</span>&gt;</span><span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://archive.org/includes/analytics.js?v=cf34f82">//archive.org/includes/analytics.js?v=cf34f82</a>" <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line4"></span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>"&gt;</span><span>window.addEventListener('DOMContentLoaded',function(){var v=archive_analytics.values;v.service='wb';v.server_name='wwwb-app202.us.archive.org';v.server_ms=842;archive_analytics.send_pageview({});});</span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line5"></span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>" <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/js/bundle-playback.js?v=UfTkgsKx">/_static/js/bundle-playback.js?v=UfTkgsKx</a>" <span class="attribute-name">charset</span>="<a class="attribute-value">utf-8</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line6"></span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>" <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/js/wombat.js?v=UHAOicsW">/_static/js/wombat.js?v=UHAOicsW</a>" <span class="attribute-name">charset</span>="<a class="attribute-value">utf-8</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line7"></span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>"&gt;</span><span>
<span id="line8"></span> __wm.init("https://web.archive.org/web");
<span id="line9"></span> __wm.wombat("http://www.bloonsworld.com:80/level_editor/","20070716211456","https://web.archive.org/","web","/_static/",
<span id="line10"></span> "1184620496");
<span id="line11"></span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line12"></span></span><span>&lt;<span class="start-tag">link</span> <span class="attribute-name">rel</span>="<a class="attribute-value">stylesheet</a>" <span class="attribute-name">type</span>="<a class="attribute-value">text/css</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/css/banner-styles.css?v=omkqRugM">/_static/css/banner-styles.css?v=omkqRugM</a>" <span>/</span>&gt;</span><span>
<span id="line13"></span></span><span>&lt;<span class="start-tag">link</span> <span class="attribute-name">rel</span>="<a class="attribute-value">stylesheet</a>" <span class="attribute-name">type</span>="<a class="attribute-value">text/css</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/css/iconochive.css?v=qtvMKcIJ">/_static/css/iconochive.css?v=qtvMKcIJ</a>" <span>/</span>&gt;</span><span>
<span id="line14"></span></span><span class="comment">&lt;!-- End Wayback Rewrite JS Include --&gt;</span><span>
<span id="line15"></span>
<span id="line16"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">http-equiv</span>="<a class="attribute-value">Content-Type</a>" <span class="attribute-name">content</span>="<a class="attribute-value">text/html; charset=utf-8</a>"<span>/</span>&gt;</span><span>
<span id="line17"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">name</span>="<a class="attribute-value">title</a>" <span class="attribute-name">content</span>="<a class="attribute-value">Bloonsworld!</a>"<span>/</span>&gt;</span><span>
<span id="line18"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">name</span>="<a class="attribute-value">robots</a>" <span class="attribute-name">content</span>="<a class="attribute-value">index, follow</a>"<span>/</span>&gt;</span><span>
<span id="line19"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">name</span>="<a class="attribute-value">description</a>" <span class="attribute-name">content</span>="<a class="attribute-value">Finally, the creators of Bloons bring you Bloonsworld!</a>"<span>/</span>&gt;</span><span>
<span id="line20"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">name</span>="<a class="attribute-value">keywords</a>" <span class="attribute-name">content</span>="<a class="attribute-value">flash, games, awesome</a>"<span>/</span>&gt;</span><span>
<span id="line21"></span></span><span>&lt;<span class="start-tag">meta</span> <span class="attribute-name">name</span>="<a class="attribute-value">language</a>" <span class="attribute-name">content</span>="<a class="attribute-value">en</a>"<span>/</span>&gt;</span><span>
<span id="line22"></span></span><span>&lt;<span class="start-tag">title</span>&gt;</span><span>Bloonsworld!</span><span>&lt;/<span class="end-tag">title</span>&gt;</span><span>
<span id="line23"></span></span><span class="comment">&lt;!--[if IE6]&gt;
<span id="line24"></span>&lt;style&gt;
<span id="line25"></span>#wrapper {
<span id="line26"></span> background: url(/images/alpha.png);
<span id="line27"></span> filter:alpha(opacity=75);
<span id="line28"></span>}
<span id="line29"></span>&lt;/style&gt;
<span id="line30"></span>&lt;![endif]--&gt;</span><span>
<span id="line31"></span></span><span>&lt;<span class="start-tag">link</span> <span class="attribute-name">rel</span>="<a class="attribute-value">shortcut icon</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456im_/http://www.bloonsworld.com/favicon.ico">/web/20070716211456im_/http://www.bloonsworld.com/favicon.ico</a>"<span>/</span>&gt;</span><span>
<span id="line32"></span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>" <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456js_/http://www.bloonsworld.com/sf/sf_web_debug/js/main.js">/web/20070716211456js_/http://www.bloonsworld.com/sf/sf_web_debug/js/main.js</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line33"></span></span><span>&lt;<span class="start-tag">link</span> <span class="attribute-name">rel</span>="<a class="attribute-value">stylesheet</a>" <span class="attribute-name">type</span>="<a class="attribute-value">text/css</a>" <span class="attribute-name">media</span>="<a class="attribute-value">screen</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456cs_/http://www.bloonsworld.com/sf/sf_web_debug/css/main.css">/web/20070716211456cs_/http://www.bloonsworld.com/sf/sf_web_debug/css/main.css</a>"<span>/</span>&gt;</span><span>
<span id="line34"></span></span><span>&lt;<span class="start-tag">link</span> <span class="attribute-name">rel</span>="<a class="attribute-value">stylesheet</a>" <span class="attribute-name">type</span>="<a class="attribute-value">text/css</a>" <span class="attribute-name">media</span>="<a class="attribute-value">screen</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456cs_/http://www.bloonsworld.com/css/main.css">/web/20070716211456cs_/http://www.bloonsworld.com/css/main.css</a>"<span>/</span>&gt;</span><span>
<span id="line35"></span>
<span id="line36"></span></span><span>&lt;/<span class="end-tag">head</span>&gt;</span><span>
<span id="line37"></span></span><span>&lt;<span class="start-tag">body</span> <span class="attribute-name">id</span>="<a class="attribute-value">body</a>"&gt;</span><span></span><span class="comment">&lt;!-- BEGIN WAYBACK TOOLBAR INSERT --&gt;</span><span>
<span id="line38"></span></span><span>&lt;<span class="start-tag">style</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/css</a>"&gt;</span><span>
<span id="line39"></span>body {
<span id="line40"></span> margin-top:0 !important;
<span id="line41"></span> padding-top:0 !important;
<span id="line42"></span> /*min-width:800px !important;*/
<span id="line43"></span>}
<span id="line44"></span></span><span>&lt;/<span class="end-tag">style</span>&gt;</span><span>
<span id="line45"></span></span><span>&lt;<span class="start-tag">script</span>&gt;</span><span>__wm.rw(0);</span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line46"></span></span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-ipp-base</a>" <span class="attribute-name">lang</span>="<a class="attribute-value">en</a>" <span class="attribute-name">style</span>="<a class="attribute-value">display:none;direction:ltr;</a>"&gt;</span><span>
<span id="line47"></span></span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-ipp</a>" <span class="attribute-name">style</span>="<a class="attribute-value">position:fixed;left:0;top:0;right:0;</a>"&gt;</span><span>
<span id="line48"></span></span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-ipp-inside</a>"&gt;</span><span>
<span id="line49"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">position:relative;</a>"&gt;</span><span>
<span id="line50"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-logo</a>" <span class="attribute-name">style</span>="<a class="attribute-value">float:left;width:110px;padding-top:12px;</a>"&gt;</span><span>
<span id="line51"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/">/web/</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Wayback Machine home page</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">img</span> <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/images/toolbar/wayback-toolbar-logo-200.png">/_static/images/toolbar/wayback-toolbar-logo-200.png</a>" <span class="attribute-name">srcset</span>="<a class="attribute-value">/_static/images/toolbar/wayback-toolbar-logo-100.png, /_static/images/toolbar/wayback-toolbar-logo-150.png 1.5x, /_static/images/toolbar/wayback-toolbar-logo-200.png 2x</a>" <span class="attribute-name">alt</span>="<a class="attribute-value">Wayback Machine</a>" <span class="attribute-name">style</span>="<a class="attribute-value">width:100px</a>" <span class="attribute-name">border</span>="<a class="attribute-value">0</a>" <span>/</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line52"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line53"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">class</span>="<a class="attribute-value">r</a>" <span class="attribute-name">style</span>="<a class="attribute-value">float:right;</a>"&gt;</span><span>
<span id="line54"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-btns</a>" <span class="attribute-name">style</span>="<a class="attribute-value">text-align:right;height:25px;</a>"&gt;</span><span>
<span id="line55"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-save-snapshot-success</a>"&gt;</span><span>success</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line56"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-save-snapshot-fail</a>"&gt;</span><span>fail</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line57"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-save-snapshot-open</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#">#</a>"
<span id="line58"></span> <span class="attribute-name">title</span>="<a class="attribute-value">Share via My Web Archive</a>" &gt;</span><span>
<span id="line59"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-web</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line60"></span> </span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line61"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://archive.org/account/login.php">https://archive.org/account/login.php</a>"
<span id="line62"></span> <span class="attribute-name">title</span>="<a class="attribute-value">Sign In</a>"
<span id="line63"></span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-sign-in</a>"
<span id="line64"></span> &gt;</span><span>
<span id="line65"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-person</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line66"></span> </span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line67"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-save-snapshot-in-progress</a>" <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-web</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line68"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:http://faq.web.archive.org/">http://faq.web.archive.org/</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Get some help using the Wayback Machine</a>" <span class="attribute-name">style</span>="<a class="attribute-value">top:-6px;</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-question</a>" <span class="attribute-name">style</span>="<a class="attribute-value">color:rgb(87,186,244);font-size:160%;</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line69"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-tb-close</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#close">#close</a>" <span class="attribute-name">onclick</span>="<a class="attribute-value">__wm.h(event);return false;</a>" <span class="attribute-name">style</span>="<a class="attribute-value">top:-2px;</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Close the toolbar</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-remove-circle</a>" <span class="attribute-name">style</span>="<a class="attribute-value">color:#888888;font-size:240%;</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line70"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line71"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-share</a>"&gt;</span><span>
<span id="line72"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://web.archive.org/screenshot/http://www.bloonsworld.com/level_editor/">/web/20070716211456/http://web.archive.org/screenshot/http://www.bloonsworld.com/level_editor/</a>"
<span id="line73"></span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-screenshot</a>"
<span id="line74"></span> <span class="attribute-name">title</span>="<a class="attribute-value">screenshot</a>"&gt;</span><span>
<span id="line75"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">wm-icon-screen-shot</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line76"></span> </span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line77"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#">#</a>"
<span id="line78"></span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-video</a>"
<span id="line79"></span> <span class="attribute-name">title</span>="<a class="attribute-value">video</a>"&gt;</span><span>
<span id="line80"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-movies</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line81"></span> </span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line82"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-share-facebook</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#">#</a>" <span class="attribute-name">data-url</span>="<a class="attribute-value">https://web.archive.org/web/20070716211456/http://www.bloonsworld.com:80/level_editor/</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Share on Facebook</a>" <span class="attribute-name">style</span>="<a class="attribute-value">margin-right:5px;</a>" <span class="attribute-name">target</span>="<a class="attribute-value">_blank</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-facebook</a>" <span class="attribute-name">style</span>="<a class="attribute-value">color:#3b5998;font-size:160%;</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line83"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-share-twitter</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#">#</a>" <span class="attribute-name">data-url</span>="<a class="attribute-value">https://web.archive.org/web/20070716211456/http://www.bloonsworld.com:80/level_editor/</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Share on Twitter</a>" <span class="attribute-name">style</span>="<a class="attribute-value">margin-right:5px;</a>" <span class="attribute-name">target</span>="<a class="attribute-value">_blank</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-twitter</a>" <span class="attribute-name">style</span>="<a class="attribute-value">color:#1dcaff;font-size:160%;</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line84"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line85"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line86"></span> </span><span>&lt;<span class="start-tag">table</span> <span class="attribute-name">class</span>="<a class="attribute-value">c</a>" <span class="attribute-name">style</span>="<a class="attribute-value"></a>"&gt;</span><span>
<span id="line87"></span> </span><span>&lt;<span class="start-tag">tbody</span>&gt;</span><span>
<span id="line88"></span> </span><span>&lt;<span class="start-tag">tr</span>&gt;</span><span>
<span id="line89"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">u</a>" <span class="attribute-name">colspan</span>="<a class="attribute-value">2</a>"&gt;</span><span>
<span id="line90"></span> </span><span>&lt;<span class="start-tag">form</span> <span class="attribute-name">target</span>="<a class="attribute-value">_top</a>" <span class="attribute-name">method</span>="<a class="attribute-value">get</a>" <span class="attribute-name">action</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/submit">/web/submit</a>" <span class="attribute-name">name</span>="<a class="attribute-value">wmtb</a>" <span class="attribute-name">id</span>="<a class="attribute-value">wmtb</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">input</span> <span class="attribute-name">type</span>="<a class="attribute-value">text</a>" <span class="attribute-name">name</span>="<a class="attribute-value">url</a>" <span class="attribute-name">id</span>="<a class="attribute-value">wmtbURL</a>" <span class="attribute-name">value</span>="<a class="attribute-value">http://www.bloonsworld.com/level_editor/</a>" <span class="attribute-name">onfocus</span>="<a class="attribute-value">this.focus();this.select();</a>" <span>/</span>&gt;</span><span></span><span>&lt;<span class="start-tag">input</span> <span class="attribute-name">type</span>="<a class="attribute-value">hidden</a>" <span class="attribute-name">name</span>="<a class="attribute-value">type</a>" <span class="attribute-name">value</span>="<a class="attribute-value">replay</a>" <span>/</span>&gt;</span><span></span><span>&lt;<span class="start-tag">input</span> <span class="attribute-name">type</span>="<a class="attribute-value">hidden</a>" <span class="attribute-name">name</span>="<a class="attribute-value">date</a>" <span class="attribute-name">value</span>="<a class="attribute-value">20070716211456</a>" <span>/</span>&gt;</span><span></span><span>&lt;<span class="start-tag">input</span> <span class="attribute-name">type</span>="<a class="attribute-value">submit</a>" <span class="attribute-name">value</span>="<a class="attribute-value">Go</a>" <span>/</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">form</span>&gt;</span><span>
<span id="line91"></span> </span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line92"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">n</a>" <span class="attribute-name">rowspan</span>="<a class="attribute-value">2</a>" <span class="attribute-name">style</span>="<a class="attribute-value">width:110px;</a>"&gt;</span><span>
<span id="line93"></span> </span><span>&lt;<span class="start-tag">table</span>&gt;</span><span>
<span id="line94"></span> </span><span>&lt;<span class="start-tag">tbody</span>&gt;</span><span>
<span id="line95"></span> </span><span class="comment">&lt;!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR --&gt;</span><span>
<span id="line96"></span> </span><span>&lt;<span class="start-tag">tr</span> <span class="attribute-name">class</span>="<a class="attribute-value">m</a>"&gt;</span><span>
<span id="line97"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">b</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span>Jun</span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line98"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">c</a>" <span class="attribute-name">id</span>="<a class="attribute-value">displayMonthEl</a>" <span class="attribute-name">title</span>="<a class="attribute-value">You are here: 21:14:56 Jul 16, 2007</a>"&gt;</span><span>JUL</span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line99"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">f</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070908214107/http://bloonsworld.com:80/level_editor">https://web.archive.org/web/20070908214107/http://bloonsworld.com:80/level_editor</a>" <span class="attribute-name">title</span>="<a class="attribute-value">08 Sep 2007</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">strong</span>&gt;</span><span>Sep</span><span>&lt;/<span class="end-tag">strong</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line100"></span> </span><span>&lt;/<span class="end-tag">tr</span>&gt;</span><span>
<span id="line101"></span> </span><span class="comment">&lt;!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR --&gt;</span><span>
<span id="line102"></span> </span><span>&lt;<span class="start-tag">tr</span> <span class="attribute-name">class</span>="<a class="attribute-value">d</a>"&gt;</span><span>
<span id="line103"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">b</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">img</span> <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/images/toolbar/wm_tb_prv_off.png">/_static/images/toolbar/wm_tb_prv_off.png</a>" <span class="attribute-name">alt</span>="<a class="attribute-value">Previous capture</a>" <span class="attribute-name">width</span>="<a class="attribute-value">14</a>" <span class="attribute-name">height</span>="<a class="attribute-value">16</a>" <span class="attribute-name">border</span>="<a class="attribute-value">0</a>" <span>/</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line104"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">c</a>" <span class="attribute-name">id</span>="<a class="attribute-value">displayDayEl</a>" <span class="attribute-name">style</span>="<a class="attribute-value">width:34px;font-size:24px;white-space:nowrap;</a>" <span class="attribute-name">title</span>="<a class="attribute-value">You are here: 21:14:56 Jul 16, 2007</a>"&gt;</span><span>16</span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line105"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">f</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070908214107/http://bloonsworld.com:80/level_editor">https://web.archive.org/web/20070908214107/http://bloonsworld.com:80/level_editor</a>" <span class="attribute-name">title</span>="<a class="attribute-value">21:41:07 Sep 08, 2007</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">img</span> <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/images/toolbar/wm_tb_nxt_on.png">/_static/images/toolbar/wm_tb_nxt_on.png</a>" <span class="attribute-name">alt</span>="<a class="attribute-value">Next capture</a>" <span class="attribute-name">width</span>="<a class="attribute-value">14</a>" <span class="attribute-name">height</span>="<a class="attribute-value">16</a>" <span class="attribute-name">border</span>="<a class="attribute-value">0</a>" <span>/</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line106"></span> </span><span>&lt;/<span class="end-tag">tr</span>&gt;</span><span>
<span id="line107"></span> </span><span class="comment">&lt;!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR --&gt;</span><span>
<span id="line108"></span> </span><span>&lt;<span class="start-tag">tr</span> <span class="attribute-name">class</span>="<a class="attribute-value">y</a>"&gt;</span><span>
<span id="line109"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">b</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span>2006</span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line110"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">c</a>" <span class="attribute-name">id</span>="<a class="attribute-value">displayYearEl</a>" <span class="attribute-name">title</span>="<a class="attribute-value">You are here: 21:14:56 Jul 16, 2007</a>"&gt;</span><span>2007</span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line111"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">f</a>" <span class="attribute-name">nowrap</span>="<a class="attribute-value">nowrap</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20081026060307/http://www.bloonsworld.com:80/level_editor">https://web.archive.org/web/20081026060307/http://www.bloonsworld.com:80/level_editor</a>" <span class="attribute-name">title</span>="<a class="attribute-value">26 Oct 2008</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">strong</span>&gt;</span><span>2008</span><span>&lt;/<span class="end-tag">strong</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line112"></span> </span><span>&lt;/<span class="end-tag">tr</span>&gt;</span><span>
<span id="line113"></span> </span><span>&lt;/<span class="end-tag">tbody</span>&gt;</span><span>
<span id="line114"></span> </span><span>&lt;/<span class="end-tag">table</span>&gt;</span><span>
<span id="line115"></span> </span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line116"></span> </span><span>&lt;/<span class="end-tag">tr</span>&gt;</span><span>
<span id="line117"></span> </span><span>&lt;<span class="start-tag">tr</span>&gt;</span><span>
<span id="line118"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">s</a>"&gt;</span><span>
<span id="line119"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-nav-captures</a>"&gt;</span><span>
<span id="line120"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">class</span>="<a class="attribute-value">t</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456*/http://www.bloonsworld.com/level_editor/">/web/20070716211456*/http://www.bloonsworld.com/level_editor/</a>" <span class="attribute-name">title</span>="<a class="attribute-value">See a list of every capture for this URL</a>"&gt;</span><span>160 captures</span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line121"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">class</span>="<a class="attribute-value">r</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Timespan for captures of this URL</a>"&gt;</span><span>16 Jul 2007 - 07 Aug 2014</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line122"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line123"></span> </span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line124"></span> </span><span>&lt;<span class="start-tag">td</span> <span class="attribute-name">class</span>="<a class="attribute-value">k</a>"&gt;</span><span>
<span id="line125"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/"></a>" <span class="attribute-name">id</span>="<a class="attribute-value">wm-graph-anchor</a>"&gt;</span><span>
<span id="line126"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-ipp-sparkline</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Explore captures for this URL</a>" <span class="attribute-name">style</span>="<a class="attribute-value">position: relative</a>"&gt;</span><span>
<span id="line127"></span> </span><span>&lt;<span class="start-tag">canvas</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-sparkline-canvas</a>" <span class="attribute-name">width</span>="<a class="attribute-value">650</a>" <span class="attribute-name">height</span>="<a class="attribute-value">27</a>" <span class="attribute-name">border</span>="<a class="attribute-value">0</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">canvas</span>&gt;</span><span>
<span id="line128"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line129"></span> </span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line130"></span> </span><span>&lt;/<span class="end-tag">td</span>&gt;</span><span>
<span id="line131"></span> </span><span>&lt;/<span class="end-tag">tr</span>&gt;</span><span>
<span id="line132"></span> </span><span>&lt;/<span class="end-tag">tbody</span>&gt;</span><span>
<span id="line133"></span> </span><span>&lt;/<span class="end-tag">table</span>&gt;</span><span>
<span id="line134"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">position:absolute;bottom:0;right:2px;text-align:right;</a>"&gt;</span><span>
<span id="line135"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-expand</a>" <span class="attribute-name">class</span>="<a class="attribute-value">wm-btn wm-closed</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/level_editor/#expand">#expand</a>" <span class="attribute-name">onclick</span>="<a class="attribute-value">__wm.ex(event);return false;</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-expand-icon</a>" <span class="attribute-name">class</span>="<a class="attribute-value">iconochive-down-solid</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">style</span>="<a class="attribute-value">font-size:80%</a>"&gt;</span><span>About this capture</span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line136"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line137"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line138"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-capinfo</a>" <span class="attribute-name">style</span>="<a class="attribute-value">border-top:1px solid #777;display:none; overflow: hidden</a>"&gt;</span><span>
<span id="line139"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-capinfo-collected-by</a>"&gt;</span><span>
<span id="line140"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">background-color:#666;color:#fff;font-weight:bold;text-align:center</a>"&gt;</span><span>COLLECTED BY</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line141"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">padding:3px;position:relative</a>" <span class="attribute-name">id</span>="<a class="attribute-value">wm-collected-by-content</a>"&gt;</span><span>
<span id="line142"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">display:inline-block;vertical-align:top;width:50%;</a>"&gt;</span><span>
<span id="line143"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">c-logo</a>" <span class="attribute-name">style</span>="<a class="attribute-value">background-image:url(https://archive.org/services/img/alexacrawls);</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line144"></span> Organization: </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">style</span>="<a class="attribute-value">color:#33f;</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://archive.org/details/alexacrawls">https://archive.org/details/alexacrawls</a>" <span class="attribute-name">target</span>="<a class="attribute-value">_new</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">wm-title</a>"&gt;</span><span>Alexa Crawls</span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line145"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">max-height:75px;overflow:hidden;position:relative;</a>"&gt;</span><span>
<span id="line146"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line147"></span> Starting in 1996, </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:http://www.alexa.com/">http://www.alexa.com/</a>"&gt;</span><span>Alexa Internet</span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span> has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:http://web.archive.org/">http://web.archive.org/</a>"&gt;</span><span>Wayback Machine</span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span> after an embargo period.
<span id="line148"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line149"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line150"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">display:inline-block;vertical-align:top;width:49%;</a>"&gt;</span><span>
<span id="line151"></span> </span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">c-logo</a>" <span class="attribute-name">style</span>="<a class="attribute-value">background-image:url(https://archive.org/services/img/42_crawl)</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span>
<span id="line152"></span> </span><span>&lt;<span class="start-tag">div</span>&gt;</span><span>Collection: </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">style</span>="<a class="attribute-value">color:#33f;</a>" <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://archive.org/details/42_crawl">https://archive.org/details/42_crawl</a>" <span class="attribute-name">target</span>="<a class="attribute-value">_new</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">span</span> <span class="attribute-name">class</span>="<a class="attribute-value">wm-title</a>"&gt;</span><span>42_crawl</span><span>&lt;/<span class="end-tag">span</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line153"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">max-height:75px;overflow:hidden;position:relative;</a>"&gt;</span><span>
<span id="line154"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line155"></span> this data is currently not publicly accessible.
<span id="line156"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line157"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line158"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line159"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line160"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-capinfo-timestamps</a>"&gt;</span><span>
<span id="line161"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">style</span>="<a class="attribute-value">background-color:#666;color:#fff;font-weight:bold;text-align:center</a>" <span class="attribute-name">title</span>="<a class="attribute-value">Timestamps for the elements of this page</a>"&gt;</span><span>TIMESTAMPS</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line162"></span> </span><span>&lt;<span class="start-tag">div</span>&gt;</span><span>
<span id="line163"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-capresources</a>" <span class="attribute-name">style</span>="<a class="attribute-value">margin:0 5px 5px 5px;max-height:250px;overflow-y:scroll !important</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line164"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-capresources-loading</a>" <span class="attribute-name">style</span>="<a class="attribute-value">text-align:left;margin:0 20px 5px 5px;display:none</a>"&gt;</span><span></span><span>&lt;<span class="start-tag">img</span> <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://web.archive.org/_static/images/loading.gif">/_static/images/loading.gif</a>" <span class="attribute-name">alt</span>="<a class="attribute-value">loading</a>" <span>/</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line165"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line166"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line167"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wm-ipp-print</a>"&gt;</span><span>The Wayback Machine - https://web.archive.org/web/20070716211456/http://www.bloonsworld.com:80/level_editor/</span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line168"></span></span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">donato</a>" <span class="attribute-name">style</span>="<a class="attribute-value">position:relative;width:100%;</a>"&gt;</span><span>
<span id="line169"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">donato-base</a>"&gt;</span><span>
<span id="line170"></span> </span><span>&lt;<span class="start-tag">iframe</span> <span class="attribute-name">id</span>="<a class="attribute-value">donato-if</a>" <span class="attribute-name">src</span>="<a class="attribute-value" href="view-source:https://archive.org/includes/donate.php?as_page=1&amp;platform=wb&amp;referer=https%3A//web.archive.org/web/20070716211456/http%3A//www.bloonsworld.com/level_editor/">https://archive.org/includes/donate.php?as_page=1<span class="entity"><span>&amp;</span>amp;</span>platform=wb<span class="entity"><span>&amp;</span>amp;</span>referer=https%3A//web.archive.org/web/20070716211456/http%3A//www.bloonsworld.com/level_editor/</a>"
<span id="line171"></span> <span class="attribute-name">scrolling</span>="<a class="attribute-value">no</a>" <span class="attribute-name">frameborder</span>="<a class="attribute-value">0</a>" <span class="attribute-name">style</span>="<a class="attribute-value">width:100%; height:100%</a>"&gt;</span><span>
<span id="line172"></span> </span><span>&lt;/<span class="end-tag">iframe</span>&gt;</span><span>
<span id="line173"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line174"></span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">type</span>="<a class="attribute-value">text/javascript</a>"&gt;</span><span>
<span id="line175"></span>__wm.bt(650,27,25,2,"web","http://www.bloonsworld.com/level_editor/","20070716211456",1996,"/_static/",["/_static/css/banner-styles.css?v=omkqRugM","/_static/css/iconochive.css?v=qtvMKcIJ"], "False");
<span id="line176"></span> __wm.rw(1);
<span id="line177"></span></span><span>&lt;/<span class="end-tag">script</span>&gt;</span><span>
<span id="line178"></span></span><span class="comment">&lt;!-- END WAYBACK TOOLBAR INSERT --&gt;</span><span>
<span id="line179"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">wrapper</a>"&gt;</span><span>
<span id="line180"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">inner_wrapper</a>"&gt;</span><span>
<span id="line181"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">alpha</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line182"></span> </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.bloonsworld.com/public_dev.php/">/web/20070716211456/http://www.bloonsworld.com/public_dev.php/</a>" <span class="attribute-name">id</span>="<a class="attribute-value">header</a>"&gt;</span><span></span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>
<span id="line183"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">id</span>="<a class="attribute-value">content</a>"&gt;</span><span>
<span id="line184"></span> </span><span>&lt;<span class="start-tag">div</span> <span class="attribute-name">class</span>="<a class="attribute-value">wide full</a>"&gt;</span><span>
<span id="line185"></span> </span><span>&lt;<span class="start-tag">h1</span>&gt;</span><span>Our apologies</span><span>&lt;/<span class="end-tag">h1</span>&gt;</span><span>
<span id="line186"></span> </span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>There has been an error - we're working on it right away!</span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>
<span id="line187"></span> </span><span>&lt;<span class="start-tag">br</span><span>/</span>&gt;</span><span>
<span id="line188"></span> </span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>While we're away, please visit </span><span>&lt;<span class="start-tag">a</span> <span class="attribute-name">href</span>="<a class="attribute-value" href="view-source:https://web.archive.org/web/20070716211456/http://www.ninjakiwi.com/">https://web.archive.org/web/20070716211456/http://www.ninjakiwi.com/</a>"&gt;</span><span>Ninja Kiwi</span><span>&lt;/<span class="end-tag">a</span>&gt;</span><span>.</span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>
<span id="line189"></span> </span><span>&lt;<span class="start-tag">br</span><span>/</span>&gt;</span><span>
<span id="line190"></span> </span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>Thanks for your patience!</span><span>&lt;/<span class="end-tag">p</span>&gt;</span><span>
<span id="line191"></span> </span><span>&lt;<span class="start-tag">br</span><span>/</span>&gt;</span><span>
<span id="line192"></span> </span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>Sincerely, </span><span>&lt;/<span class="end-tag">p</span>&gt;</span><span>
<span id="line193"></span> </span><span>&lt;<span class="start-tag">p</span>&gt;</span><span>The Bloonsworld Team</span><span>&lt;/<span class="end-tag">p</span>&gt;</span><span>
<span id="line194"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line195"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line196"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line197"></span> </span><span>&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line198"></span> </span><span class="error" title="Stray end tag “div”.">&lt;/<span class="end-tag">div</span>&gt;</span><span>
<span id="line199"></span></span><span class="error" title="Stray end tag “div”.">&lt;/<span class="end-tag">div</span>&gt;</span><span></span><span class="comment">&lt;!--
<span id="line200"></span> FILE ARCHIVED ON 21:14:56 Jul 16, 2007 AND RETRIEVED FROM THE
<span id="line201"></span> INTERNET ARCHIVE ON 15:04:19 Sep 29, 2021.
<span id="line202"></span> JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
<span id="line203"></span>
<span id="line204"></span> ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
<span id="line205"></span> SECTION 108(a)(3)).
<span id="line206"></span>--&gt;</span><span>
<span id="line207"></span></span><span class="comment">&lt;!--
<span id="line208"></span>playback timings (ms):
<span id="line209"></span> captures_list: 219.132
<span id="line210"></span> exclusion.robots: 0.145
<span id="line211"></span> exclusion.robots.policy: 0.139
<span id="line212"></span> RedisCDXSource: 2.998
<span id="line213"></span> esindex: 0.004
<span id="line214"></span> LoadShardBlock: 197.401 (3)
<span id="line215"></span> PetaboxLoader3.datanode: 193.251 (4)
<span id="line216"></span> CDXLines.iter: 15.727 (3)
<span id="line217"></span> load_resource: 619.351
<span id="line218"></span> PetaboxLoader3.resolve: 530.559
<span id="line219"></span>--&gt;</span><span></span></pre></body></html>

View File

@ -0,0 +1,14 @@
{% extends 'game/base.html' %}
{% load static %}
{% block content %}
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="{% static 'game/misc/swflash.cab' %}#version=7,0,19,0"
width="640" height="480" title="">
<param name="movie" value="{% static 'game/misc/bloons_unlimited.swf' %}">
<param name="quality" value="high">
<embed src="{% static 'game/misc/bloons_unlimited.swf' %}"
quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"
width="640" height="480">
</object>
{% endblock content %}

View File

@ -0,0 +1,113 @@
{% extends 'game/base.html' %}
{% load static %}
{% block content %}
<div id="content">
<div class="wide light">
<h2 class="centered">
<a href="http://newgam.es/drillbunny">Driller Bunny for iPhone!<br>
</a></h2><br><center>
If you like Bloons, you will LOVE THIS GAME.<br>
Get Driller Bunny now for iPhone or iPod Touch.<br>
<a href="http://newgam.es/drillbunny">
<img src="{% static 'game/img/driller-bunny-300x250.jpg' %}"
alt="Driller Bunny"/></a><br>
</div>
<div class=" wide light">
<h2 class="centered">Welcome to Bloonsworld!</h2>
<p class="centered"></p>
<a class="homepage_button" href="{% url 'game' %}">
<img src="{% static 'game/img/top_playnow.gif' %}"
alt="Top_playnow"/></a>
<a class="homepage_button"
href="/web/20140115060749/http://bloonsworld.com/level_editor">
<img src="{% static 'game/img/top_build.gif' %}"
alt="Top_build"/></a>
</div>
<div class="left">
<h4>Highest-rated levels:</h4>
<h5>(Click to play)</h5>
<ol>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778111">Best Chain 21</a> (10/10)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778112">OMG 13</a> (10/10)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778030">Las Ketchup</a> (7.8/10)</li>
</ol>
</div><div class="right">
<h4>Recently added levels:</h4>
<h5>(Click to play)</h5>
<ol>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778122">hit between ice</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778121">pac man</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778120">a box of sex</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778119">SMASH</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778118">raining spikes</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778117">the crazy world</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778116">hard place</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778115">easy place</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778114">its possible</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778113">Difficult</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778112">OMG 13</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778111">Best Chain 21</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778110">HARD MUCH</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778109">Robo Chain 6</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778108">LazerBomb Chain3</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778107">The cage</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778106">Ice world</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778105">PAcMan</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778104">Best Chain 27</a></li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3778103">SO Epic 9</a></li>
</ol>
</div>
<div class="left">
<h4>Most-played levels:</h4>
<h5>(Click to play)</h5>
<ol>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1466448">Soundwave</a> (6447590 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1405191">PacMan</a> (5183323 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1363912">Pacman k mills</a> (4626903 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1404171">Confusing</a> (2023344 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1484062">Time race</a> (1908122 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1068477">Cheating</a> (1368887 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/3170764">Light Saber Wars</a> (1300373 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/2198426">IcedMyHeart18</a> (895512 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1597102">Bouncing Bombs</a> (860363 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1129165">wanna be hitler</a> (793532 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1607897">Bouncy Chain</a> (780543 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1592502">Stairsteps</a> (772812 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1">dum dum 01</a> (689579 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1608943">In the Middle</a> (678645 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1417051">Darts Squared</a> (667748 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1601218">Caged In</a> (606749 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1417065">Hail On Water</a> (568360 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1405230">More Darts</a> (554542 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1410310">Which Direction</a> (534633 plays)</li>
<li><a href="/web/20140115060749/http://bloonsworld.com/preview/1416059">Ring Around Dart</a> (534629 plays)</li>
</ol>
</div><div class="right">
<h4>Top Submitters:</h4>
<h5>(Click to view)</h5>
<ol>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/martijn1998">martijn1998</a> (17957 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Joshua12878">Joshua12878</a> (11528 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Glenn+Laurence+Hardy+Junior">Glenn Laurence Hardy Junior</a> (7596 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Sachin+Gupta">Sachin Gupta</a> (6783 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Ghostbusters+Fan+101">Ghostbusters Fan 101</a> (6386 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/teehee3">teehee3</a> (5899 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Brittany+Issiac">Brittany Issiac</a> (5839 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/MAV8">MAV8</a> (5277 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Martijn98">Martijn98</a> (4969 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/540077">Tommy.1</a> (4767 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Super+Mario+Galaxy">Super Mario Galaxy</a> (4116 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Bloons+User">Bloons User</a> (4067 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Skull+Ernie">Skull Ernie</a> (3721 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Casey208">Casey208</a> (3575 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Shockwav4">Shockwav4</a> (3367 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Jellyman23">Jellyman23</a> (3172 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/Ariana+Nunes">Ariana Nunes</a> (2974 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/pablotheholyturtle">pablotheholyturtle</a> (2849 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/MadMorgan">MadMorgan</a> (2758 levels)</li>
<li><a href="http://web.archive.org/web/20140115060749/http://bloonsworld.com/benpen">benpen</a> (2753 levels)</li>
</ol>
</div>
{% endblock content %}

View File

@ -0,0 +1,27 @@
{% extends 'game/base.html' %}
{% load static %}
{% block content %}
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="{% static 'game/misc/swflash.cab' %}#version=7,0,19,0"
width="640" height="480" title="Confusing">
<param name="movie" value="{% static 'game/misc/bloons_unlimited.swf' %}">
<param name="quality" value="high">
<param name="FlashVars"
value="&amp;{{flashVars}}">
<embed src="{% static 'game/misc/bloons_unlimited.swf' %}"
quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"
width="640" height="480" flashvars="&amp;{{flashVars}}">
</object>
<div class="wide">
Move the mouse to aim the arrow, and press and hold the left mouse button to select the power of your throw. Pop the minimum number of bloons to pass each level. You can rate the levels you play by clicking the 'rate level' button in the game screen. You can also go to another random level by clicking 'Go random' at any time.</div> <div class="wide centered">
Copyright Kaiparasoft 2007, all rights reserved<br/>
<a href="https://web.archive.org/web/20140327034910/http://www.ninjakiwi.com/">Ninjakiwi</a>
- <a href="/web/20140327034910/http://www.bloonsworld.com/symfony/terms">Terms of Use</a>
- <a href="/web/20140327034910/http://www.bloonsworld.com/symfony/contact_us">Contact Us</a>
</div>
{% endblock content %}

View File

@ -0,0 +1,111 @@
{% extends 'game/base.html' %}
{% block content %}
<div id="content">
<div class="wide">
<p>Bloonsworld User agreement</p>
<p>Your use of this website <a href="http://web.archive.org/web/20140625080942/http://www.bloonsworld.com/">www.bloonsworld.com</a>
and the use of any accounts on this website are subject to the following terms and conditions, which we may
update from time to time. We reserve the right to modify, suspend or discontinue the website, its content
and/or your account at any time without notice.
<br/>In accepting these terms and conditions you acknowledge that you have no rights in this site and that
Bloonsworld™, Ninjakiwi™ and Kaiparasoft Limited have no liability to you if this website is modified,
discontinued or if your account is modified, suspended or cancelled.</p>
<p>All content on this site including user generated levels using Bloonsbuilder™, artwork, images, text,
downloadable files, logos, character names and trademarks is the sole property of Kaiparasoft Limited and is
protected Internationally under all applicable intellectual property laws. For more detail around content
posted by users refer to User Rights below.</p>
<p>User Rights</p>
<p>1. Levels created using the Ninjakiwi™ Bloonsbuilder™ will remain the sole property of Kaiparasoft Limited at
all times and Kaiparasoft Limited reserve the right to republish any user created levels in any format and
in any location.
<br/>2. Content posted in the forums with the exception of previously copyrighted material and material
covered under international intellectual property laws will remain the sole property of Kaiparasoft Limited
at all times and Kaiparasoft Limited reserve the right to republish any material in any format and in any
location.</p>
<p>Forums</p>
<p>1. Language that is deemed to be offensive to us or any of our users such as, but not limited to: Profanity,
Racism, or any other objectionable language will result in account suspension or cancellation at our sole
discretion.</p>
<p>2. Use of the forums. Registration is free and grants you access to post messages in all public forums (and
any private forums you are specifically given access to). Your access to the forums may be limited or
revoked at any time without notice and for any reason.
<br/>Although the forum operators will make reasonable attempts to remove any messages containing
objectionable content, it is not possible for the operators to review all messages. All messages posted to
the forums express only the views of the author, and you agree that Bloonsworld™, Ninjakiwi™ and Kaiparasoft
Limited, the forum operators and any associated parties will not be held responsible for the content of any
message posted to the forums by you or any other party.
<br/>You agree that you will not post to the forums any messages that:
<br/>• are obscene or vulgar;
<br/>• are pornographic or contain pornographic material;
<br/>• are hateful or threatening;
<br/>• contain copyrighted material or links to illegal copies of copyrighted material or otherwise infringe
on material covered by international intellectual property laws;
<br/>• otherwise violate any of the laws of New Zealand.
<br/>You agree that the rules governing the forum may be changed at any time.
<br/>The forum operators have the right to remove, edit, move or close any thread or message without notice
and for any reason.</p>
<p>Usernames and Level Names. Use of obscene, vulgar, copyrighted (example naming a level “Ninjakiwi”) or
otherwise offensive usernames or level names will result in account suspension or cancellation at our
discretion.</p>
<p>Usernames or level names that are created for the purposes of advertising a website, product or service are
also prohibited and subject to suspension or cancellation without notice.</p>
<p>Commercial Use. Any commercial use of this website such as hotlinking, using iFrames or other means of
accessing this website other than through the URL <a
href="http://web.archive.org/web/20140625080942/http://www.bloonsworld.com/">www.bloonsworld.com</a>
is strictly prohibited.</p>
<p>Malicious use. Any malicious use or uploads such as malware, viruses, cheat software, decompilers, spiders,
robots or other means of creating fraudulent account or advertising fraud will not be tolerated.
<br/>Account Information: You may not share or transfer your Account or your Account password or other
access information with any other party, temporarily or permanently. You shall bear sole responsibility for
all use of your Account and for the confidentiality of your password. You represent that all information
submitted to create your Account is accurate and truthful.
<br/>Privacy/Children. On certain areas of this website, you may be given the ability to provide us with
personally identifiable information. Children under the age of 13 are not permitted to register, or use
other interactive features of our Site.
<br/>Third party websites. Bloonsworld™ may link to sites not maintained or related in any way to
Bloonsworld™, Ninjakiwi™ or Kaiparasoft Limited. Links are provided as a service to users or advertisers and
are not affliated in any other way with Bloonsworld™. We have no responsibility or control over any material
on such sites.
<br/>Representations and limitations of liability. Bloonsworld makes no representations about the
reliability of this websiote or any of its features and we disclaim all liability in the event of any
failure of service. This website is provided on an as-is basis and no warranties express or implied are made
including but not limited to those of fitness of purpose are made with respect to this website or any
information or software therein. Under no circumstances including but not limited to negligence, shall
Bloonsworld™, Ninjakiwi™ or Kaiparasoft Limited be liable for any direct, indirect, incidental, special,
punitive or consequential damages that result from the use or inability to use this website. Nor shall we be
made responsible for any damages whatsoever that result from mistakes, omissions interruptions, deletions or
failure of performance whether or not caused by events within or out of our control.</p>
<p>Privacy and advertising notes. We allow third-party companies to serve ads and/or collect certain anonymous
information when you visit our web site. These companies may use non-personally identifiable information
(e.g., click stream information, browser type, time and date, subject of advertisements clicked or scrolled
over) during your visits to this and other Web sites in order to provide advertisements about goods and
services likely to be of greater interest to you. These companies typically use a cookie or third party web
beacon to collect this information. To learn more about this behavioral advertising practice or to opt-out
of this type of advertising, you can visit <a
href="http://web.archive.org/web/20140625080942/http://www.networkadvertising.org/">www.networkadvertising.org</a>.
<br/>The NAI (Network Advertising Initiative) is a cooperative group of ad serving providers. The NAI has
developed a set of privacy principles to which its members adhere. The NAI is committed to provide consumers
with clear explanations of Internet advertising practices and how they affect you and the Internet
generally. For more information about the NAI, third party ad servers generally, and the opt-out
opportunities available through the NAI, visit <a
href="http://web.archive.org/web/20140625080942/http://www.networkadvertising.org/index.asp">http://www.networkadvertising.org/index.asp</a>
</p>
<p>Bloonsworld™, Ninjakiwi™ and Kaiparasoft reserve the right to modify any of these terms and conditions at any
time and such changes will be taken as read, by you, immediately after publication. </p>
<p></p></div>
{% endblock content %}

3
app/game/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

13
app/game/urls.py Normal file
View File

@ -0,0 +1,13 @@
from django.urls import path, include
from game.views import IndexView, TermsView, GameView, WIPView
urlpatterns = [
path("", IndexView.as_view(), name="index"),
path("game", GameView.as_view(), name="game"),
path("game/<int:pk>", GameView.as_view(), name="gameSelect"),
path("terms", TermsView.as_view(), name="terms"),
path("login", WIPView.as_view(), name="login"),
path("register", WIPView.as_view(), name="register"),
path("contact", WIPView.as_view(), name="contact"),
]

36
app/game/views.py Normal file
View File

@ -0,0 +1,36 @@
from django.shortcuts import render
from django.views.generic import TemplateView
# Create your views here.
from game.models import Level
class IndexView(TemplateView):
def get(self, request, *args, **kwargs):
return render(request, "game/index.html", context={})
class TermsView(TemplateView):
def get(self, request, *args, **kwargs):
return render(request, "game/terms.html", context={})
class GameView(TemplateView):
def get(self, request, *args, **kwargs):
if type(kwargs.get("pk")) is int:
level = Level.objects.get(id=kwargs["pk"])
if level:
return render(request, "game/level.html", context={
"flashVars": level.getFlashVars(seperator="&amp;")
})
return render(request, "game/game.html", context={})
class WIPView(TemplateView):
def get(self, request, *args, **kwargs):
return render(request, "game/error.html", context={})
def post(self, request, *args, **kwargs):
return render(request, "game/error.html", context={})

22
app/manage.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()

45
app/manip.py Normal file
View File

@ -0,0 +1,45 @@
import sqlite3
from tqdm import tqdm
def dataProducer():
con = sqlite3.connect("database-dirty.db")
cur = con.cursor()
for levelNum, title, author, \
authorID, numplays, numCompleted, \
rating, target, darts, leveldata in cur.execute('SELECT * FROM levels;'):
yield (
levelNum,
title,
author.split(", by ")[-1].split(" (view ")[0],
authorID,
numplays,
numCompleted,
rating if rating != "?" else None,
target,
darts,
leveldata,
)
# Be sure to close the connection
con.close()
exit()
from game.models import Level, Author
bar = tqdm(desc="Bloons db import", total=151902)
for d in dataProducer():
author = Author(name=d[2],
authorId=d[3])
author.save()
Level(author=author,
title=d[1],
levelId=d[0],
plays=d[4],
completions=d[5],
rating=d[6],
target=d[7],
darts=d[8],
data=d[9]).save()
bar.update(1)

1
app/reload.bat Normal file
View File

@ -0,0 +1 @@
python manage.py makemigrations&&python manage.py migrate&&python manage.py runserver 80

1
app/requirements.txt Normal file
View File

@ -0,0 +1 @@
django

0
app/settings/__init__.py Normal file
View File

16
app/settings/asgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
ASGI config for settings project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
application = get_asgi_application()

129
app/settings/settings.py Normal file
View File

@ -0,0 +1,129 @@
"""
Django settings for settings project.
Generated by 'django-admin startproject' using Django 3.2.6.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.2/ref/settings/
"""
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-)e!wy4)=xinnd!d(iuw6*-tf^-)ptiwnttwf+9ql%*jy63wtd8'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Walter
"game",
"api",
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'settings.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'settings.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

23
app/settings/urls.py Normal file
View File

@ -0,0 +1,23 @@
"""settings URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path("web_service/", include("api.urls")),
path("", include("game.urls")),
]

16
app/settings/wsgi.py Normal file
View File

@ -0,0 +1,16 @@
"""
WSGI config for settings project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings.settings')
application = get_wsgi_application()