Repository: VitalikObject/BrawlStars-Server
Branch: master
Commit: 4bf6528d4278
Files: 189
Total size: 1.4 MB
Directory structure:
gitextract_n51eg9bn/
├── .github/
│ └── workflows/
│ └── dotnet-core.yml
├── LICENSE.txt
├── README.md
├── Server/
│ ├── BrawlStars.Utilities.pdb
│ ├── BrawlStars.deps.json
│ ├── BrawlStars.pdb
│ ├── BrawlStars.runtimeconfig.dev.json
│ ├── BrawlStars.runtimeconfig.json
│ ├── GameAssets/
│ │ ├── database.sql
│ │ └── fingerprint.json
│ ├── NLog.config
│ └── config.json
└── Source/
├── BrawlStars/
│ ├── BrawlStars.csproj
│ ├── BrawlStars.csproj.user
│ ├── Core/
│ │ ├── Configuration.cs
│ │ └── Network/
│ │ ├── Handlers/
│ │ │ ├── PacketEncoder.cs
│ │ │ └── PacketHandler.cs
│ │ ├── NettyService.cs
│ │ └── Throttler.cs
│ ├── Database/
│ │ ├── AllianceDb.cs
│ │ ├── Cache/
│ │ │ ├── Alliances.cs
│ │ │ └── Players.cs
│ │ ├── ObjectCache.cs
│ │ └── PlayerDb.cs
│ ├── Extensions/
│ │ ├── ChatStreamEntry.cs
│ │ ├── CustomWriter.cs
│ │ └── GamePlayUtil.cs
│ ├── Files/
│ │ ├── Csv.Files.cs
│ │ ├── Csv.cs
│ │ ├── CsvHelpers/
│ │ │ ├── Data.cs
│ │ │ ├── DataTable.cs
│ │ │ └── GlobalId.cs
│ │ ├── CsvReader/
│ │ │ ├── Column.cs
│ │ │ ├── Gamefiles.cs
│ │ │ ├── Row.cs
│ │ │ └── Table.cs
│ │ ├── Fingerprint.cs
│ │ ├── GameEvents.cs
│ │ └── Logic/
│ │ ├── Accessorie.cs
│ │ ├── AllianceBadge.cs
│ │ ├── AllianceRole.cs
│ │ ├── AreaEffect.cs
│ │ ├── Boss.cs
│ │ ├── Campaign.cs
│ │ ├── Card.cs
│ │ ├── Challenge.cs
│ │ ├── Character.cs
│ │ ├── Emote.cs
│ │ ├── GameModeVariations.cs
│ │ ├── Global.cs
│ │ ├── Item.cs
│ │ ├── Locale.cs
│ │ ├── Resource.cs
│ │ ├── Skill.cs
│ │ └── Skin.cs
│ ├── GameAssets/
│ │ ├── database.sql
│ │ └── fingerprint.json
│ ├── Logger.cs
│ ├── Logic/
│ │ ├── Brawler.cs
│ │ ├── Calendar.cs
│ │ ├── Clan/
│ │ │ ├── Alliance.cs
│ │ │ ├── AllianceInfo.cs
│ │ │ ├── AllianceMember.cs
│ │ │ └── StreamEntry/
│ │ │ ├── AllianceStreamEntry.cs
│ │ │ └── Entries/
│ │ │ ├── AllianceEventStreamEntry.cs
│ │ │ ├── ChallengeStreamEntry.cs
│ │ │ ├── ChatStreamEntry.cs
│ │ │ ├── DonateStreamEntry.cs
│ │ │ └── JoinRequestAllianceStreamEntry.cs
│ │ ├── Device.cs
│ │ ├── Events.cs
│ │ ├── Functions.cs
│ │ ├── Home/
│ │ │ ├── Home.cs
│ │ │ ├── Slots/
│ │ │ │ ├── DataSlots.cs
│ │ │ │ ├── Items/
│ │ │ │ │ └── DataSlot.cs
│ │ │ │ └── ResourceSlots.cs
│ │ │ └── StreamEntry/
│ │ │ └── AvatarStreamEntry.cs
│ │ ├── Player.cs
│ │ ├── Sessions/
│ │ │ ├── Location.cs
│ │ │ └── Session.cs
│ │ ├── Time.cs
│ │ └── Timer.cs
│ ├── NLog.config
│ ├── Program.cs
│ ├── Protocol/
│ │ ├── Commands/
│ │ │ └── Server/
│ │ │ ├── LogicChangeAvatarName.cs
│ │ │ └── LogicDiamondsAddedCommand.cs
│ │ ├── LogicCommand.cs
│ │ ├── LogicCommandManager.cs
│ │ ├── LogicMagicMessageFactory.cs
│ │ ├── Messages/
│ │ │ ├── Client/
│ │ │ │ ├── Alliance/
│ │ │ │ │ ├── ChatToClubMessage.cs
│ │ │ │ │ └── ClanInviteLinkMessage.cs
│ │ │ │ ├── AnalyticsEventMessage.cs
│ │ │ │ ├── BattleEndMessage.cs
│ │ │ │ ├── ChangeBrawlerInRoomMessage.cs
│ │ │ │ ├── ChangeMapMessage.cs
│ │ │ │ ├── ChangeNameMessage.cs
│ │ │ │ ├── ClientActionMessage.cs
│ │ │ │ ├── CreateGameroomMessage.cs
│ │ │ │ ├── DoNotDistrubMessage.cs
│ │ │ │ ├── EndClientTurnMessage.cs
│ │ │ │ ├── Home/
│ │ │ │ │ ├── ProfileMessage.cs
│ │ │ │ │ └── SetNameMessage.cs
│ │ │ │ ├── Login/
│ │ │ │ │ ├── ClientHelloMessage.cs
│ │ │ │ │ ├── ExitMessage.cs
│ │ │ │ │ ├── KeepAliveMessage.cs
│ │ │ │ │ └── LoginMessage.cs
│ │ │ │ ├── OpenClubMessage.cs
│ │ │ │ ├── QuitRoomMessage.cs
│ │ │ │ └── UseGadgetInRoomMessage.cs
│ │ │ └── Server/
│ │ │ ├── Alliance/
│ │ │ │ └── GenrateClanInviteLinkMessage.cs
│ │ │ ├── Battle2_Result.cs
│ │ │ ├── Battle_Result.cs
│ │ │ ├── ChatBotServerMessage.cs
│ │ │ ├── ChatServerMessage.cs
│ │ │ ├── ClubOHD.cs
│ │ │ ├── ClubServerMessage.cs
│ │ │ ├── DoNotDistrubServer.cs
│ │ │ ├── Gameroom_Data.cs
│ │ │ ├── Home/
│ │ │ │ ├── BotProfileMessage.cs
│ │ │ │ ├── OwnHomeDataMessage.cs
│ │ │ │ ├── ProfileServerMessage.cs
│ │ │ │ └── SetNameServer.cs
│ │ │ ├── Login/
│ │ │ │ ├── Copyright.cs
│ │ │ │ ├── KeepAliveOkMessage.cs
│ │ │ │ ├── LoginFailedMessage.cs
│ │ │ │ └── LoginOkMessage.cs
│ │ │ ├── RoomDisconnect.cs
│ │ │ └── ServerBox.cs
│ │ └── PiranhaMessage.cs
│ ├── Resources.cs
│ └── obj/
│ ├── BrawlStars.csproj.nuget.cache
│ ├── BrawlStars.csproj.nuget.dgspec.json
│ ├── BrawlStars.csproj.nuget.g.props
│ ├── BrawlStars.csproj.nuget.g.targets
│ └── Debug/
│ └── netcoreapp3.1/
│ ├── BrawlStars.AssemblyInfo.cs
│ ├── BrawlStars.AssemblyInfoInputs.cache
│ └── BrawlStars.assets.cache
├── BrawlStars.Utilities/
│ ├── BrawlStars.Utilities.csproj
│ ├── Compression/
│ │ └── ZLib/
│ │ ├── CRC32.cs
│ │ ├── Deflate.cs
│ │ ├── DeflateStream.cs
│ │ ├── GZipStream.cs
│ │ ├── InfTree.cs
│ │ ├── Inflate.cs
│ │ ├── Iso8859Dash1Encoding.cs
│ │ ├── ParallelDeflateOutputStream.cs
│ │ ├── Tree.cs
│ │ ├── Zlib.cs
│ │ ├── ZlibBaseStream.cs
│ │ ├── ZlibCodec.cs
│ │ ├── ZlibConstants.cs
│ │ └── ZlibStream.cs
│ ├── Extensions.cs
│ ├── Netty/
│ │ ├── Reader.cs
│ │ └── Writer.cs
│ ├── Utils/
│ │ ├── GameUtils.cs
│ │ ├── ServerUtils.cs
│ │ └── TimeUtils.cs
│ └── obj/
│ ├── BrawlStars.Utilities.csproj.nuget.cache
│ ├── BrawlStars.Utilities.csproj.nuget.dgspec.json
│ ├── BrawlStars.Utilities.csproj.nuget.g.props
│ ├── BrawlStars.Utilities.csproj.nuget.g.targets
│ ├── ClashofClans.Utilities.csproj.nuget.dgspec.json
│ ├── ClashofClans.Utilities.csproj.nuget.g.props
│ ├── ClashofClans.Utilities.csproj.nuget.g.targets
│ ├── Debug/
│ │ └── netstandard2.0/
│ │ ├── BrawlStars.Utilities.AssemblyInfo.cs
│ │ ├── BrawlStars.Utilities.AssemblyInfoInputs.cache
│ │ ├── BrawlStars.Utilities.assets.cache
│ │ ├── BrawlStars.Utilities.csproj.CoreCompileInputs.cache
│ │ ├── BrawlStars.Utilities.csproj.FileListAbsolute.txt
│ │ ├── BrawlStars.Utilities.csprojAssemblyReference.cache
│ │ ├── BrawlStars.Utilities.pdb
│ │ ├── ClashofClans.Utilities.AssemblyInfo.cs
│ │ ├── ClashofClans.Utilities.AssemblyInfoInputs.cache
│ │ ├── ClashofClans.Utilities.assets.cache
│ │ ├── ClashofClans.Utilities.csproj.CoreCompileInputs.cache
│ │ ├── ClashofClans.Utilities.csproj.FileListAbsolute.txt
│ │ ├── ClashofClans.Utilities.csprojAssemblyReference.cache
│ │ └── ClashofClans.Utilities.pdb
│ ├── Release/
│ │ └── netstandard2.0/
│ │ ├── ClashofClans.Utilities.AssemblyInfo.cs
│ │ ├── ClashofClans.Utilities.AssemblyInfoInputs.cache
│ │ ├── ClashofClans.Utilities.assets.cache
│ │ ├── ClashofClans.Utilities.csproj.CoreCompileInputs.cache
│ │ ├── ClashofClans.Utilities.csproj.FileListAbsolute.txt
│ │ ├── ClashofClans.Utilities.csprojAssemblyReference.cache
│ │ └── ClashofClans.Utilities.pdb
│ ├── project.assets.json
│ └── project.nuget.cache
└── BrawlStars.sln
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/dotnet-core.yml
================================================
name: .NET Core
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.101
- name: Install dependencies
run: dotnet restore ./Source/BrawlStars/
- name: Build
run: dotnet build ./Source/BrawlStars/ --configuration Release --no-restore
- name: Test
run: dotnet test ./Source/BrawlStars/ --no-restore --verbosity normal
================================================
FILE: LICENSE.txt
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
================================================
FILE: README.md
================================================
# ObjectBrawl 
A first open source .NET Core Brawl Stars Server for version 26!

## Configuration
You can change default name in config.json
(```"default_name": "YOUR_NAME"```)
And you can change the starting resources in config.json
## Client
To connect to your server, you need a custom client. Here the only solution is to use a [pre-made client](https://drive.google.com/file/d/13CevFvqsLW2xzjEEOWGSh__1xRSXJmFh/view?usp=sharing).
Just edit the IP in the frida-gadget config (```/lib/armeabi-v7a/libgg.config.so```)
```{"interaction":{"interaction":{"type":"script","path":"libscript.so","on_change":"reload","parameters":{"redirectHost":"YOUR_IP","relocate":true}}}```
### Friendly reminder
The server is in a very early state. Right now, it is NOT recommended to run this on a production environment. Please not open issues about missing features, i'm well aware of this.
#### Thank you [Incredible](http://github.com/Incr3dible/) for yours [20Clash](https://github.com/Incr3dible/20Clash)
#### Need help? Join [My Discord server](https://discord.gg/4FZrUFK4C6)
#### My friends Discord servers: [Huza's Discord channel](https://discord.gg/VPWMxWm) and [Antz's Discord channel](https://discord.com/invite/RgYcF3b)
================================================
FILE: Server/BrawlStars.deps.json
================================================
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v3.1",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v3.1": {
"BrawlStars/1.0.0": {
"dependencies": {
"BrawlStars.Utilities": "1.0.0",
"Colorful.Console": "1.2.10",
"DotNetty.Buffers": "0.6.0",
"DotNetty.Common": "0.6.0",
"DotNetty.Handlers": "0.6.0",
"Microsoft.Extensions.Caching.Memory": "3.1.2",
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": "1.9.10",
"MySql.Data": "8.0.19",
"NLog": "4.6.8",
"Newtonsoft.Json": "12.0.3"
},
"runtime": {
"BrawlStars.dll": {}
}
},
"BouncyCastle.NetCore/1.8.3": {
"dependencies": {
"NETStandard.Library": "1.6.1",
"System.Reflection": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0"
},
"runtime": {
"lib/netstandard2.0/BouncyCastle.Crypto.dll": {
"assemblyVersion": "1.8.2.0",
"fileVersion": "1.8.18099.1"
}
}
},
"Colorful.Console/1.2.10": {
"dependencies": {
"Microsoft.CSharp": "4.0.1",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Console": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Dynamic.Runtime": "4.0.11",
"System.Globalization": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Linq": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.RegularExpressions": "4.3.0"
},
"runtime": {
"lib/netstandard2.0/Colorful.Console.dll": {
"assemblyVersion": "1.2.10.0",
"fileVersion": "1.2.10.0"
}
}
},
"DotNetty.Buffers/0.6.0": {
"dependencies": {
"DotNetty.Common": "0.6.0",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.2"
},
"runtime": {
"lib/netstandard1.3/DotNetty.Buffers.dll": {
"assemblyVersion": "0.6.0.0",
"fileVersion": "0.6.0.0"
}
}
},
"DotNetty.Codecs/0.6.0": {
"dependencies": {
"DotNetty.Buffers": "0.6.0",
"DotNetty.Common": "0.6.0",
"DotNetty.Transport": "0.6.0",
"NETStandard.Library": "1.6.1",
"System.Collections.Immutable": "1.5.0",
"System.Diagnostics.Contracts": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/DotNetty.Codecs.dll": {
"assemblyVersion": "0.6.0.0",
"fileVersion": "0.6.0.0"
}
}
},
"DotNetty.Common/0.6.0": {
"dependencies": {
"Microsoft.Extensions.Logging": "1.1.1",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Net.NetworkInformation": "4.3.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.2"
},
"runtime": {
"lib/netstandard1.3/DotNetty.Common.dll": {
"assemblyVersion": "0.6.0.0",
"fileVersion": "0.6.0.0"
}
}
},
"DotNetty.Handlers/0.6.0": {
"dependencies": {
"DotNetty.Buffers": "0.6.0",
"DotNetty.Codecs": "0.6.0",
"DotNetty.Common": "0.6.0",
"DotNetty.Transport": "0.6.0",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.Net.Security": "4.3.2"
},
"runtime": {
"lib/netstandard1.3/DotNetty.Handlers.dll": {
"assemblyVersion": "0.6.0.0",
"fileVersion": "0.6.0.0"
}
}
},
"DotNetty.Transport/0.6.0": {
"dependencies": {
"DotNetty.Buffers": "0.6.0",
"DotNetty.Common": "0.6.0",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Diagnostics.StackTrace": "4.3.0",
"System.Net.NameResolution": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Threading.Tasks.Extensions": "4.5.1"
},
"runtime": {
"lib/netstandard1.3/DotNetty.Transport.dll": {
"assemblyVersion": "0.6.0.0",
"fileVersion": "0.6.0.0"
}
}
},
"Google.Protobuf/3.6.1": {
"dependencies": {
"NETStandard.Library": "1.6.1"
},
"runtime": {
"lib/netstandard1.0/Google.Protobuf.dll": {
"assemblyVersion": "3.6.1.0",
"fileVersion": "3.6.1.0"
}
}
},
"Microsoft.CSharp/4.0.1": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Dynamic.Runtime": "4.0.11",
"System.Globalization": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0"
}
},
"Microsoft.Extensions.Caching.Abstractions/3.1.2": {
"dependencies": {
"Microsoft.Extensions.Primitives": "3.1.2"
},
"runtime": {
"lib/netcoreapp3.1/Microsoft.Extensions.Caching.Abstractions.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.Extensions.Caching.Memory/3.1.2": {
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "3.1.2",
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.2",
"Microsoft.Extensions.Logging.Abstractions": "3.1.2",
"Microsoft.Extensions.Options": "3.1.2"
},
"runtime": {
"lib/netcoreapp3.1/Microsoft.Extensions.Caching.Memory.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/3.1.2": {
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.Extensions.Logging/1.1.1": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.2",
"Microsoft.Extensions.Logging.Abstractions": "3.1.2",
"NETStandard.Library": "1.6.1"
},
"runtime": {
"lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "1.1.1.0",
"fileVersion": "1.1.1.30217"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/3.1.2": {
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.Extensions.Options/3.1.2": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.2",
"Microsoft.Extensions.Primitives": "3.1.2"
},
"runtime": {
"lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.Extensions.Primitives/3.1.2": {
"runtime": {
"lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "3.1.2.0",
"fileVersion": "3.100.220.6706"
}
}
},
"Microsoft.NETCore.Platforms/3.0.0": {},
"Microsoft.NETCore.Targets/1.1.0": {},
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.9.10": {},
"Microsoft.Win32.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"Microsoft.Win32.SystemEvents/4.6.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0"
},
"runtime": {
"lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": {
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.700.19.46214"
}
},
"runtimeTargets": {
"runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.700.19.46214"
}
}
},
"MySql.Data/8.0.19": {
"dependencies": {
"BouncyCastle.NetCore": "1.8.3",
"Google.Protobuf": "3.6.1",
"SSH.NET": "2016.1.0",
"System.Configuration.ConfigurationManager": "4.4.1",
"System.Security.Permissions": "4.6.0",
"System.Text.Encoding.CodePages": "4.4.0"
},
"runtime": {
"lib/netstandard2.1/MySql.Data.dll": {
"assemblyVersion": "8.0.19.0",
"fileVersion": "8.0.19.0"
},
"lib/netstandard2.1/Ubiety.Dns.Core.dll": {
"assemblyVersion": "2.2.1.0",
"fileVersion": "2.2.1.0"
}
}
},
"NETStandard.Library/1.6.1": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.AppContext": "4.3.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Console": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.Compression.ZipFile": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.Net.Http": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Timer": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XDocument": "4.3.0"
}
},
"Newtonsoft.Json/12.0.3": {
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {
"assemblyVersion": "12.0.0.0",
"fileVersion": "12.0.3.23909"
}
}
},
"NLog/4.6.8": {
"runtime": {
"lib/netstandard2.0/NLog.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.6.8.10751"
}
}
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.native.System/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.IO.Compression/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Http/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Net.Security/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"SSH.NET/2016.1.0": {
"dependencies": {
"Microsoft.CSharp": "4.0.1",
"SshNet.Security.Cryptography": "1.2.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Diagnostics.TraceSource": "4.0.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Net.NameResolution": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Thread": "4.3.0",
"System.Threading.ThreadPool": "4.3.0",
"System.Threading.Timer": "4.3.0",
"System.Xml.XPath.XmlDocument": "4.0.1",
"System.Xml.XmlDocument": "4.0.1"
},
"runtime": {
"lib/netstandard1.3/Renci.SshNet.dll": {
"assemblyVersion": "2016.1.0.0",
"fileVersion": "2016.1.0.0"
}
}
},
"SshNet.Security.Cryptography/1.2.0": {
"dependencies": {
"System.IO": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0"
},
"runtime": {
"lib/netstandard1.3/SshNet.Security.Cryptography.dll": {
"assemblyVersion": "1.2.0.0",
"fileVersion": "1.2.0.0"
}
}
},
"System.AppContext/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Buffers/4.3.0": {
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Collections/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Collections.Concurrent/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Collections.Immutable/1.5.0": {},
"System.Configuration.ConfigurationManager/4.4.1": {
"dependencies": {
"System.Security.Cryptography.ProtectedData": "4.4.0"
},
"runtime": {
"lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.6.25921.2"
}
}
},
"System.Console/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Diagnostics.Contracts/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.Debug/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Diagnostics.StackTrace/4.3.0": {
"dependencies": {
"System.IO.FileSystem": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Metadata": "1.4.1",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.Tools/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Diagnostics.TraceSource/4.0.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Diagnostics.Tracing/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Drawing.Common/4.6.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.Win32.SystemEvents": "4.6.0"
},
"runtime": {
"lib/netstandard2.0/System.Drawing.Common.dll": {
"assemblyVersion": "4.0.0.1",
"fileVersion": "4.6.26919.2"
}
},
"runtimeTargets": {
"runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": {
"rid": "unix",
"assetType": "runtime",
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.700.19.46214"
},
"runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "4.0.1.0",
"fileVersion": "4.700.19.46214"
}
}
},
"System.Dynamic.Runtime/4.0.11": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Linq": "4.3.0",
"System.Linq.Expressions": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Globalization/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Calendars/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Globalization.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.Compression/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Buffers": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.IO.Compression": "4.3.0"
}
},
"System.IO.Compression.ZipFile/4.3.0": {
"dependencies": {
"System.Buffers": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.IO.FileSystem/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Linq/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Linq.Expressions/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Linq": "4.3.0",
"System.ObjectModel": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Emit.Lightweight": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Reflection.TypeExtensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Net.Http/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Net.NameResolution/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Principal.Windows": "4.6.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Net.NetworkInformation/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Principal.Windows": "4.6.0",
"System.Threading": "4.3.0",
"System.Threading.Overlapped": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Thread": "4.3.0",
"System.Threading.ThreadPool": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Net.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Net.Security/4.3.2": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Claims": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Security.Principal": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.ThreadPool": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Security": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Net.Sockets/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.ObjectModel/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Reflection/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit/4.3.0": {
"dependencies": {
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit.ILGeneration/4.3.0": {
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Emit.Lightweight/4.3.0": {
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Emit.ILGeneration": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.Metadata/1.4.1": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Collections.Immutable": "1.5.0",
"System.Diagnostics.Debug": "4.3.0",
"System.IO": "4.3.0",
"System.IO.Compression": "4.3.0",
"System.Linq": "4.3.0",
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Reflection.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Reflection.TypeExtensions/4.3.0": {
"dependencies": {
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Resources.ResourceManager/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0"
}
},
"System.Runtime.CompilerServices.Unsafe/4.5.2": {},
"System.Runtime.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.Handles/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Runtime.InteropServices/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
"dependencies": {
"System.Reflection": "4.3.0",
"System.Reflection.Extensions": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0"
}
},
"System.Runtime.Numerics/4.3.0": {
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Security.AccessControl/4.6.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Security.Principal.Windows": "4.6.0"
}
},
"System.Security.Claims/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Security.Principal": "4.3.0"
}
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.Cng/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.Primitives/4.3.0": {
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Security.Cryptography.ProtectedData/4.4.0": {
"runtime": {
"lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.25519.3"
}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.6.25519.3"
}
}
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Permissions/4.6.0": {
"dependencies": {
"System.Security.AccessControl": "4.6.0",
"System.Windows.Extensions": "4.6.0"
},
"runtime": {
"lib/netcoreapp3.0/System.Security.Permissions.dll": {
"assemblyVersion": "4.0.2.0",
"fileVersion": "4.700.19.46214"
}
}
},
"System.Security.Principal/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Security.Principal.Windows/4.6.0": {},
"System.Text.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Text.Encoding.CodePages/4.4.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0"
}
},
"System.Text.Encoding.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Text.RegularExpressions/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Threading/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Threading.Overlapped/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Threading.Tasks/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Threading.Tasks.Extensions/4.5.1": {},
"System.Threading.Thread/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0"
}
},
"System.Threading.ThreadPool/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Threading.Timer/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "3.0.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
}
},
"System.Windows.Extensions/4.6.0": {
"dependencies": {
"System.Drawing.Common": "4.6.0"
},
"runtime": {
"lib/netcoreapp3.0/System.Windows.Extensions.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.700.19.46214"
}
},
"runtimeTargets": {
"runtimes/win/lib/netcoreapp3.0/System.Windows.Extensions.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.700.19.46214"
}
}
},
"System.Xml.ReaderWriter/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Text.Encoding.Extensions": "4.3.0",
"System.Text.RegularExpressions": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Tasks.Extensions": "4.5.1"
}
},
"System.Xml.XDocument/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tools": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
},
"System.Xml.XmlDocument/4.0.1": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
},
"System.Xml.XPath/4.0.1": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0"
}
},
"System.Xml.XPath.XmlDocument/4.0.1": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Xml.ReaderWriter": "4.3.0",
"System.Xml.XPath": "4.0.1",
"System.Xml.XmlDocument": "4.0.1"
},
"runtime": {
"lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {
"assemblyVersion": "4.0.1.0",
"fileVersion": "1.0.24212.1"
}
}
},
"BrawlStars.Utilities/1.0.0": {
"dependencies": {
"DotNetty.Buffers": "0.6.0",
"MySql.Data": "8.0.19",
"Newtonsoft.Json": "12.0.3"
},
"runtime": {
"BrawlStars.Utilities.dll": {}
}
}
}
},
"libraries": {
"BrawlStars/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"BouncyCastle.NetCore/1.8.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jAy3uHN1U9DpoT/TgLqDTEhlccn/4doOVxhSmmNsnoSsGfHT9Lwr634ac9D0YFujAhNw61nWF4UIpHyzv0aQww==",
"path": "bouncycastle.netcore/1.8.3",
"hashPath": "bouncycastle.netcore.1.8.3.nupkg.sha512"
},
"Colorful.Console/1.2.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k9PGhscle9U3V/EbRhWLuU1683pteAmD4d+FKFjoK6Fn4Bykl6uWQH5y0qMAAXU5zlHTmEYB7JGxdvsoXlk5Ag==",
"path": "colorful.console/1.2.10",
"hashPath": "colorful.console.1.2.10.nupkg.sha512"
},
"DotNetty.Buffers/0.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-MjxoFMdKsSJ5CLKTFHTKYoFUZUvC6VHGx71vPLSflmR/X4dSm57/hVxhsQY3YU6aASeRjqgNiCHn4II+UNOIWQ==",
"path": "dotnetty.buffers/0.6.0",
"hashPath": "dotnetty.buffers.0.6.0.nupkg.sha512"
},
"DotNetty.Codecs/0.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gLAVaII7A4er3ZwUJIAZpynDLsxNr7Acw61OoCDfzIAkcB2L6OJ9jPnKy8YtrtTnJXm0lNod5+7aRJTmaBbT0Q==",
"path": "dotnetty.codecs/0.6.0",
"hashPath": "dotnetty.codecs.0.6.0.nupkg.sha512"
},
"DotNetty.Common/0.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aVD0bWoaH+Ou0wOTFzYEs3hrzsckUEkbdweVgwHsk7q0OTPgmPD/QkGxjNqjZ9diUyeGvHzYn7mFQGG5cgbYUA==",
"path": "dotnetty.common/0.6.0",
"hashPath": "dotnetty.common.0.6.0.nupkg.sha512"
},
"DotNetty.Handlers/0.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LXj49DSk/PzC5r7MkXKpYit4t5DsUNpEw1m899SoV2gGVs9WooYUVyjOhKwyqBUPie4QgkYc6tsgAHNJUmDhbA==",
"path": "dotnetty.handlers/0.6.0",
"hashPath": "dotnetty.handlers.0.6.0.nupkg.sha512"
},
"DotNetty.Transport/0.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HLYcbZfLDIVPhtr+x3nv2vvxBxKONWXeP/B1LaXvPeSfdvlOtvoxB0tuv92SaOdqq9NUCjAP59Nn9xofRrt8mA==",
"path": "dotnetty.transport/0.6.0",
"hashPath": "dotnetty.transport.0.6.0.nupkg.sha512"
},
"Google.Protobuf/3.6.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-741fGeDQjixBJaU2j+0CbrmZXsNJkTn/hWbOh4fLVXndHsCclJmWznCPWrJmPoZKvajBvAz3e8ECJOUvRtwjNQ==",
"path": "google.protobuf/3.6.1",
"hashPath": "google.protobuf.3.6.1.nupkg.sha512"
},
"Microsoft.CSharp/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==",
"path": "microsoft.csharp/4.0.1",
"hashPath": "microsoft.csharp.4.0.1.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Abstractions/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UfMC7L+8ha05PUAfVpmMS0kb7C1BoOrWxN70706D50qWohXLYgkUsu22oS7zkd9amCPTCmhRm2z/LisN8SESgg==",
"path": "microsoft.extensions.caching.abstractions/3.1.2",
"hashPath": "microsoft.extensions.caching.abstractions.3.1.2.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Memory/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-4O/YgpVhK/ZIYteGy9LyJv+YRcTxLOe7AnMUHBj1m1U40Er1/dbMymFTH1HrRS/fkVB90un24JhG+c1qSWjjjA==",
"path": "microsoft.extensions.caching.memory/3.1.2",
"hashPath": "microsoft.extensions.caching.memory.3.1.2.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/CZzCSCIm/3FFoXHfUpsfov/Elo268dcvlz/MMINT0vPgphqg2pAgdEn/EjCDyoAT3NAmsRmjfGwBumC1uYJtA==",
"path": "microsoft.extensions.dependencyinjection.abstractions/3.1.2",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.3.1.2.nupkg.sha512"
},
"Microsoft.Extensions.Logging/1.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cxLG416uOEFmnv7w4/rsVKD4dRYFuUY+G5WXpLVLMNIL6VYcQkDe67cx2IWBrtUieA08w9eCuxrd2pxIrJ7Wtg==",
"path": "microsoft.extensions.logging/1.1.1",
"hashPath": "microsoft.extensions.logging.1.1.1.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cIXPw7VVX3fON4uuHwJFmCi0qDl8uY75xZMKB2oM3In0ZDEB1Ee+p9Ti1DSw92AwRtJ2Zh+QG1joTBednJMzvA==",
"path": "microsoft.extensions.logging.abstractions/3.1.2",
"hashPath": "microsoft.extensions.logging.abstractions.3.1.2.nupkg.sha512"
},
"Microsoft.Extensions.Options/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6F4anwt9yMlnQckac2etjrasRFyqZNIp46p+i9qVps0DXNsOLZIKRkqq4AY4FlxXxKeGkEJC7M77RQEkvd3p8Q==",
"path": "microsoft.extensions.options/3.1.2",
"hashPath": "microsoft.extensions.options.3.1.2.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/3.1.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WGtoFWY9yc9HGMG6ObDNQPz9dBP+xz/GqFe2dKjdE/cSdXFEKxCFTyYCzL/e8kxVkc/Bq9qjOsXRWydvn0g9Uw==",
"path": "microsoft.extensions.primitives/3.1.2",
"hashPath": "microsoft.extensions.primitives.3.1.2.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/3.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TsETIgVJb/AKoYfSP+iCxkuly5d3inZjTdx/ItZLk2CxY85v8083OBS3uai84kK3/baLnS5/b5XGs6zR7SuuHQ==",
"path": "microsoft.netcore.platforms/3.0.0",
"hashPath": "microsoft.netcore.platforms.3.0.0.nupkg.sha512"
},
"Microsoft.NETCore.Targets/1.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
"path": "microsoft.netcore.targets/1.1.0",
"hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
},
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets/1.9.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-d5/5CDc4TAjrgO9oyyj+FHUDVumxgrlCMJqDtUX4GyTnr1Q/BP88PhnVunRZ9AQcL2UQkM4EkRNyFelPXunHtw==",
"path": "microsoft.visualstudio.azure.containers.tools.targets/1.9.10",
"hashPath": "microsoft.visualstudio.azure.containers.tools.targets.1.9.10.nupkg.sha512"
},
"Microsoft.Win32.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
"path": "microsoft.win32.primitives/4.3.0",
"hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512"
},
"Microsoft.Win32.SystemEvents/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Edg+pFW5C8WJb680Za2kTV8TqUi6Ahl/WldRVoOVJ23UQLpDHFspa+umgFjkWZw24ETsU99Cg+ErZz683M4chg==",
"path": "microsoft.win32.systemevents/4.6.0",
"hashPath": "microsoft.win32.systemevents.4.6.0.nupkg.sha512"
},
"MySql.Data/8.0.19": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zPFSg8rW3PcFIn27d0lEHQ/XWQhBzGIgKYQYFZN8aHLlpen5D6nz3/wb54V9ZRH3zkWlIWQ7FfxqbQdl3vizjQ==",
"path": "mysql.data/8.0.19",
"hashPath": "mysql.data.8.0.19.nupkg.sha512"
},
"NETStandard.Library/1.6.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
"path": "netstandard.library/1.6.1",
"hashPath": "netstandard.library.1.6.1.nupkg.sha512"
},
"Newtonsoft.Json/12.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==",
"path": "newtonsoft.json/12.0.3",
"hashPath": "newtonsoft.json.12.0.3.nupkg.sha512"
},
"NLog/4.6.8": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LKB0uN5naOTxdNz++iapk6arNYv2asE8FPRBAmQZ1fe8y8C1Zm6sldh/w9TP/w5s7FGK8s0x6ny0og5ytFK1oQ==",
"path": "nlog/4.6.8",
"hashPath": "nlog.4.6.8.nupkg.sha512"
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==",
"path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==",
"path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==",
"path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.native.System/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"path": "runtime.native.system/4.3.0",
"hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
},
"runtime.native.System.IO.Compression/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
"path": "runtime.native.system.io.compression/4.3.0",
"hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512"
},
"runtime.native.System.Net.Http/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"path": "runtime.native.system.net.http/4.3.0",
"hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
},
"runtime.native.System.Net.Security/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-M2nN92ePS8BgQ2oi6Jj3PlTUzadYSIWLdZrHY1n1ZcW9o4wAQQ6W+aQ2lfq1ysZQfVCgDwY58alUdowrzezztg==",
"path": "runtime.native.system.net.security/4.3.0",
"hashPath": "runtime.native.system.net.security.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"path": "runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
"path": "runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==",
"path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==",
"path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==",
"path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==",
"path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==",
"path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==",
"path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"SSH.NET/2016.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-b0fcFFOE044KNRhq1uGujmK04ab+OzA9xARdeVCoZrY6I4D1IIaR6dn6qBIa+er4bJapGBhznDitwcRQpSRC0w==",
"path": "ssh.net/2016.1.0",
"hashPath": "ssh.net.2016.1.0.nupkg.sha512"
},
"SshNet.Security.Cryptography/1.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EeFsirrrkIK+cdlYsxukNjBN98cbU7eHfTYZEwxsbOa3dvgR/OhOD06C0sTxvNPhe4UQ6yM0p1sKcT69jqgjTw==",
"path": "sshnet.security.cryptography/1.2.0",
"hashPath": "sshnet.security.cryptography.1.2.0.nupkg.sha512"
},
"System.AppContext/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
"path": "system.appcontext/4.3.0",
"hashPath": "system.appcontext.4.3.0.nupkg.sha512"
},
"System.Buffers/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==",
"path": "system.buffers/4.3.0",
"hashPath": "system.buffers.4.3.0.nupkg.sha512"
},
"System.Collections/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"path": "system.collections/4.3.0",
"hashPath": "system.collections.4.3.0.nupkg.sha512"
},
"System.Collections.Concurrent/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"path": "system.collections.concurrent/4.3.0",
"hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
},
"System.Collections.Immutable/1.5.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==",
"path": "system.collections.immutable/1.5.0",
"hashPath": "system.collections.immutable.1.5.0.nupkg.sha512"
},
"System.Configuration.ConfigurationManager/4.4.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-jz3TWKMAeuDEyrPCK5Jyt4bzQcmzUIMcY9Ud6PkElFxTfnsihV+9N/UCqvxe1z5gc7jMYAnj7V1COMS9QKIuHQ==",
"path": "system.configuration.configurationmanager/4.4.1",
"hashPath": "system.configuration.configurationmanager.4.4.1.nupkg.sha512"
},
"System.Console/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
"path": "system.console/4.3.0",
"hashPath": "system.console.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Contracts/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eelRRbnm+OloiQvp9CXS0ixjNQldjjkHO4iIkR5XH2VIP8sUB/SIpa1TdUW6/+HDcQ+MlhP3pNa1u5SbzYuWGA==",
"path": "system.diagnostics.contracts/4.3.0",
"hashPath": "system.diagnostics.contracts.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Debug/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
"path": "system.diagnostics.debug/4.3.0",
"hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
"path": "system.diagnostics.diagnosticsource/4.3.0",
"hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
},
"System.Diagnostics.StackTrace/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BiHg0vgtd35/DM9jvtaC1eKRpWZxr0gcQd643ABG7GnvSlf5pOkY2uyd42mMOJoOmKvnpNj0F4tuoS1pacTwYw==",
"path": "system.diagnostics.stacktrace/4.3.0",
"hashPath": "system.diagnostics.stacktrace.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Tools/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
"path": "system.diagnostics.tools/4.3.0",
"hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512"
},
"System.Diagnostics.TraceSource/4.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==",
"path": "system.diagnostics.tracesource/4.0.0",
"hashPath": "system.diagnostics.tracesource.4.0.0.nupkg.sha512"
},
"System.Diagnostics.Tracing/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"path": "system.diagnostics.tracing/4.3.0",
"hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
},
"System.Drawing.Common/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2A3spjjoPZnvpVh/sDTzd+0H8ZqTdr+hH/6obB8MMfG81EJ85PmxCKDBxhBVQiA25PliKAZ1sKogDcq9mSnFEA==",
"path": "system.drawing.common/4.6.0",
"hashPath": "system.drawing.common.4.6.0.nupkg.sha512"
},
"System.Dynamic.Runtime/4.0.11": {
"type": "package",
"serviceable": true,
"sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
"path": "system.dynamic.runtime/4.0.11",
"hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512"
},
"System.Globalization/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"path": "system.globalization/4.3.0",
"hashPath": "system.globalization.4.3.0.nupkg.sha512"
},
"System.Globalization.Calendars/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"path": "system.globalization.calendars/4.3.0",
"hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
},
"System.Globalization.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"path": "system.globalization.extensions/4.3.0",
"hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
},
"System.IO/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"path": "system.io/4.3.0",
"hashPath": "system.io.4.3.0.nupkg.sha512"
},
"System.IO.Compression/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
"path": "system.io.compression/4.3.0",
"hashPath": "system.io.compression.4.3.0.nupkg.sha512"
},
"System.IO.Compression.ZipFile/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
"path": "system.io.compression.zipfile/4.3.0",
"hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"path": "system.io.filesystem/4.3.0",
"hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"path": "system.io.filesystem.primitives/4.3.0",
"hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
},
"System.Linq/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
"path": "system.linq/4.3.0",
"hashPath": "system.linq.4.3.0.nupkg.sha512"
},
"System.Linq.Expressions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
"path": "system.linq.expressions/4.3.0",
"hashPath": "system.linq.expressions.4.3.0.nupkg.sha512"
},
"System.Net.Http/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==",
"path": "system.net.http/4.3.0",
"hashPath": "system.net.http.4.3.0.nupkg.sha512"
},
"System.Net.NameResolution/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-AFYl08R7MrsrEjqpQWTZWBadqXyTzNDaWpMqyxhb0d6sGhV6xMDKueuBXlLL30gz+DIRY6MpdgnHWlCh5wmq9w==",
"path": "system.net.nameresolution/4.3.0",
"hashPath": "system.net.nameresolution.4.3.0.nupkg.sha512"
},
"System.Net.NetworkInformation/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zNVmWVry0pAu7lcrRBhwwU96WUdbsrGL3azyzsbXmVNptae1+Za+UgOe9Z6s8iaWhPn7/l4wQqhC56HZWq7tkg==",
"path": "system.net.networkinformation/4.3.0",
"hashPath": "system.net.networkinformation.4.3.0.nupkg.sha512"
},
"System.Net.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"path": "system.net.primitives/4.3.0",
"hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
},
"System.Net.Security/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xT2jbYpbBo3ha87rViHoTA6WdvqOAW37drmqyx/6LD8p7HEPT2qgdxoimRzWtPg8Jh4X5G9BV2seeTv4x6FYlA==",
"path": "system.net.security/4.3.2",
"hashPath": "system.net.security.4.3.2.nupkg.sha512"
},
"System.Net.Sockets/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
"path": "system.net.sockets/4.3.0",
"hashPath": "system.net.sockets.4.3.0.nupkg.sha512"
},
"System.ObjectModel/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
"path": "system.objectmodel/4.3.0",
"hashPath": "system.objectmodel.4.3.0.nupkg.sha512"
},
"System.Reflection/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"path": "system.reflection/4.3.0",
"hashPath": "system.reflection.4.3.0.nupkg.sha512"
},
"System.Reflection.Emit/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
"path": "system.reflection.emit/4.3.0",
"hashPath": "system.reflection.emit.4.3.0.nupkg.sha512"
},
"System.Reflection.Emit.ILGeneration/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
"path": "system.reflection.emit.ilgeneration/4.3.0",
"hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512"
},
"System.Reflection.Emit.Lightweight/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
"path": "system.reflection.emit.lightweight/4.3.0",
"hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512"
},
"System.Reflection.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
"path": "system.reflection.extensions/4.3.0",
"hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512"
},
"System.Reflection.Metadata/1.4.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tc2ZyJgweHCLci5oQGuhQn9TD0Ii9DReXkHtZm3aAGp8xe40rpRjiTbMXOtZU+fr0BOQ46goE9+qIqRGjR9wGg==",
"path": "system.reflection.metadata/1.4.1",
"hashPath": "system.reflection.metadata.1.4.1.nupkg.sha512"
},
"System.Reflection.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"path": "system.reflection.primitives/4.3.0",
"hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
},
"System.Reflection.TypeExtensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==",
"path": "system.reflection.typeextensions/4.3.0",
"hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512"
},
"System.Resources.ResourceManager/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"path": "system.resources.resourcemanager/4.3.0",
"hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
},
"System.Runtime/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"path": "system.runtime/4.3.0",
"hashPath": "system.runtime.4.3.0.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/4.5.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==",
"path": "system.runtime.compilerservices.unsafe/4.5.2",
"hashPath": "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512"
},
"System.Runtime.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"path": "system.runtime.extensions/4.3.0",
"hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
},
"System.Runtime.Handles/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"path": "system.runtime.handles/4.3.0",
"hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
},
"System.Runtime.InteropServices/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"path": "system.runtime.interopservices/4.3.0",
"hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
},
"System.Runtime.InteropServices.RuntimeInformation/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
"path": "system.runtime.interopservices.runtimeinformation/4.3.0",
"hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512"
},
"System.Runtime.Numerics/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"path": "system.runtime.numerics/4.3.0",
"hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
},
"System.Security.AccessControl/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gmlk6khICtVhiUnVBBtlsH0H/5QFDqhTZgtpp3AX14wWE6OIE+BX95NLD+X4AolXnIy/oXpNNmXYnsNfW1KuDQ==",
"path": "system.security.accesscontrol/4.6.0",
"hashPath": "system.security.accesscontrol.4.6.0.nupkg.sha512"
},
"System.Security.Claims/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==",
"path": "system.security.claims/4.3.0",
"hashPath": "system.security.claims.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"path": "system.security.cryptography.algorithms/4.3.0",
"hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Cng/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"path": "system.security.cryptography.cng/4.3.0",
"hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Csp/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"path": "system.security.cryptography.csp/4.3.0",
"hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"path": "system.security.cryptography.encoding/4.3.0",
"hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"path": "system.security.cryptography.openssl/4.3.0",
"hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"path": "system.security.cryptography.primitives/4.3.0",
"hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.ProtectedData/4.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==",
"path": "system.security.cryptography.protecteddata/4.4.0",
"hashPath": "system.security.cryptography.protecteddata.4.4.0.nupkg.sha512"
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"path": "system.security.cryptography.x509certificates/4.3.0",
"hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
},
"System.Security.Permissions/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W3Uxog9KCZAmGYsOFHgJnb7L2q+SDbxS3vGnFHmErUnXuIjWYpIh1KVTlua7qmPdrlRCkAcTF9dImv+jciBPOQ==",
"path": "system.security.permissions/4.6.0",
"hashPath": "system.security.permissions.4.6.0.nupkg.sha512"
},
"System.Security.Principal/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==",
"path": "system.security.principal/4.3.0",
"hashPath": "system.security.principal.4.3.0.nupkg.sha512"
},
"System.Security.Principal.Windows/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Mdukseovp0YIGaz16FMH6nbfgZkrCFOJbtXQptv0aeBO9h775Ilb9+TDwLVTKikoW7y7CY7lpoXl9zmZ5G3ndA==",
"path": "system.security.principal.windows/4.6.0",
"hashPath": "system.security.principal.windows.4.6.0.nupkg.sha512"
},
"System.Text.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"path": "system.text.encoding/4.3.0",
"hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
},
"System.Text.Encoding.CodePages/4.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6JX7ZdaceBiLKLkYt8zJcp4xTJd1uYyXXEkPw6mnlUIjh1gZPIVKPtRXPmY5kLf6DwZmf5YLwR3QUrRonl7l0A==",
"path": "system.text.encoding.codepages/4.4.0",
"hashPath": "system.text.encoding.codepages.4.4.0.nupkg.sha512"
},
"System.Text.Encoding.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
"path": "system.text.encoding.extensions/4.3.0",
"hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512"
},
"System.Text.RegularExpressions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==",
"path": "system.text.regularexpressions/4.3.0",
"hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512"
},
"System.Threading/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
"path": "system.threading/4.3.0",
"hashPath": "system.threading.4.3.0.nupkg.sha512"
},
"System.Threading.Overlapped/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-m3HQ2dPiX/DSTpf+yJt8B0c+SRvzfqAJKx+QDWi+VLhz8svLT23MVjEOHPF/KiSLeArKU/iHescrbLd3yVgyNg==",
"path": "system.threading.overlapped/4.3.0",
"hashPath": "system.threading.overlapped.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"path": "system.threading.tasks/4.3.0",
"hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks.Extensions/4.5.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-WSKUTtLhPR8gllzIWO2x6l4lmAIfbyMAiTlyXAis4QBDonXK4b4S6F8zGARX4/P8wH3DH+sLdhamCiHn+fTU1A==",
"path": "system.threading.tasks.extensions/4.5.1",
"hashPath": "system.threading.tasks.extensions.4.5.1.nupkg.sha512"
},
"System.Threading.Thread/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==",
"path": "system.threading.thread/4.3.0",
"hashPath": "system.threading.thread.4.3.0.nupkg.sha512"
},
"System.Threading.ThreadPool/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==",
"path": "system.threading.threadpool/4.3.0",
"hashPath": "system.threading.threadpool.4.3.0.nupkg.sha512"
},
"System.Threading.Timer/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
"path": "system.threading.timer/4.3.0",
"hashPath": "system.threading.timer.4.3.0.nupkg.sha512"
},
"System.Windows.Extensions/4.6.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GL4izk0KgeyXklUOHViAk7y1IOYVYcn8nDpJZgcCqNzTGv2xd+8rgGgMKMo8G9nvfEuRCrNxWnGc74EiuYH2YA==",
"path": "system.windows.extensions/4.6.0",
"hashPath": "system.windows.extensions.4.6.0.nupkg.sha512"
},
"System.Xml.ReaderWriter/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
"path": "system.xml.readerwriter/4.3.0",
"hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512"
},
"System.Xml.XDocument/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
"path": "system.xml.xdocument/4.3.0",
"hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512"
},
"System.Xml.XmlDocument/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2eZu6IP+etFVBBFUFzw2w6J21DqIN5eL9Y8r8JfJWUmV28Z5P0SNU01oCisVHQgHsDhHPnmq2s1hJrJCFZWloQ==",
"path": "system.xml.xmldocument/4.0.1",
"hashPath": "system.xml.xmldocument.4.0.1.nupkg.sha512"
},
"System.Xml.XPath/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==",
"path": "system.xml.xpath/4.0.1",
"hashPath": "system.xml.xpath.4.0.1.nupkg.sha512"
},
"System.Xml.XPath.XmlDocument/4.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Zm2BdeanuncYs3NhCj4c9e1x3EXFzFBVv2wPEc/Dj4ZbI9R8ecLSR5frAsx4zJCPBtKQreQ7Q/KxJEohJZbfzA==",
"path": "system.xml.xpath.xmldocument/4.0.1",
"hashPath": "system.xml.xpath.xmldocument.4.0.1.nupkg.sha512"
},
"BrawlStars.Utilities/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
================================================
FILE: Server/BrawlStars.runtimeconfig.dev.json
================================================
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Vitalik\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Vitalik\\.nuget\\packages",
"E:\\Microsoft\\Xamarin\\NuGet"
]
}
}
================================================
FILE: Server/BrawlStars.runtimeconfig.json
================================================
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.1.0"
}
}
}
================================================
FILE: Server/GameAssets/database.sql
================================================
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE IF NOT EXISTS `player` (
`Id` bigint(20) NOT NULL,
`Trophies` bigint(20) NOT NULL,
`Language` text CHARACTER SET utf8mb4 NOT NULL,
`FacebookId` text CHARACTER SET utf8mb4,
`Home` text CHARACTER SET utf8mb4 NOT NULL,
`Sessions` text CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `clan` (
`Id` bigint(20) NOT NULL,
`Trophies` bigint(20) NOT NULL,
`RequiredTrophies` bigint(20) NOT NULL,
`Type` bigint(20) NOT NULL,
`Region` text CHARACTER SET utf8mb4 NOT NULL,
`Data` text CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
================================================
FILE: Server/GameAssets/fingerprint.json
================================================
{"files":[{"file":"badge\/default.edges","sha":"5a0f1a2906a37ff6ffde2b5ae328b88c6860493e"},{"file":"badge\/default_diffuse.png","sha":"20d078856a32bf496f1ecd40ce5dd90dff9daf65"},{"file":"badge\/default_diffuse_back.png","sha":"8068311784a41627032f1b4b059a7c1faaf36381"},{"file":"badge\/default_diffuse_edge.png","sha":"8068311784a41627032f1b4b059a7c1faaf36381"},{"file":"badge\/default_glossiness.png","sha":"614dd3e27c25dd4c9ae31d3abd7759304c239890"},{"file":"badge\/default_glossiness_back.png","sha":"865c7d52803440ce2c6896758a817b964459f239"},{"file":"badge\/default_glossiness_edge.png","sha":"12f5c636cb99cde7cf1869f4781166d3864df9af"},{"file":"badge\/default_normal.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_normal_back.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_normal_edge.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_specular.png","sha":"fcb9867d8c156ad035b4aa6b0b7d4190c10d37e2"},{"file":"badge\/default_specular_back.png","sha":"059c0014f39246cb05adf0dc54b51df866fe6f16"},{"file":"badge\/default_specular_edge.png","sha":"fcb9867d8c156ad035b4aa6b0b7d4190c10d37e2"},{"file":"csv_client\/animations.csv","sha":"97a9f634eb0911654753c2b72b110bd7f88c64f9"},{"file":"csv_client\/billing_packages.csv","sha":"eec119b6a7bd84101b50d005b72421146fbe9880"},{"file":"csv_client\/client_globals.csv","sha":"94c684a7333aea79fb1ad8cae14dac9247b1f31f"},{"file":"csv_client\/color_gradients.csv","sha":"79eb0edef89f0a38cb0e84d7a3c8588a4d43ec8e"},{"file":"csv_client\/credits.csv","sha":"4a002d5b8187acc72a8742cea4320582676d689b"},{"file":"csv_client\/effects.csv","sha":"267eb5d185c577317122d8374627b8a308a40472"},{"file":"csv_client\/faces.csv","sha":"a21365823c0d52094ddc7d8169954129937d1818"},{"file":"csv_client\/health_bars.csv","sha":"ba83fb73bcd710ed9bd376d77991dc0d35f6b2ba"},{"file":"csv_client\/hints.csv","sha":"86f03fdedda29ba03fe9881bf22ec97984b30b4e"},{"file":"csv_client\/links.csv","sha":"8fcc280ca8ec953a05e4b77d8d349db9d1c875fd"},{"file":"csv_client\/local_notifications.csv","sha":"f2b55e772aac69eac430d178203254d2274dad4e"},{"file":"csv_client\/music.csv","sha":"9c2b20e2efeaef89931b4dce14cba639bed9ae8f"},{"file":"csv_client\/particle_emitters.csv","sha":"250f6099f558cf46ff7a08a3fe4dd0c46937dd15"},{"file":"csv_client\/particle_emitters.json","sha":"2d242c47a2e20692ed447fd79bf85eb6f0ba6d36"},{"file":"csv_client\/shop_items.csv","sha":"8d5a2e4343917054b7b940510b1429f4de771f40"},{"file":"csv_client\/sounds.csv","sha":"772b8874a73e1f4aceea0cf37539f4c0e6974e3f"},{"file":"csv_client\/tutorial.csv","sha":"a057d703932c5f71c20552132115171d3c820e0f"},{"file":"csv_logic\/accessories.csv","sha":"0f9114b9389803990bd29ac1184450bd3888deec"},{"file":"csv_logic\/alliance_badges.csv","sha":"0f05e2a6aa752bcfbf1425348bfcf2d5dbbdd0be"},{"file":"csv_logic\/alliance_roles.csv","sha":"bc11c0632058700168d812c2cd07870624584710"},{"file":"csv_logic\/area_effects.csv","sha":"8406d56c4b9df0be9de7de4b26a954cdaed3662a"},{"file":"csv_logic\/bosses.csv","sha":"123c739bb4598cf1d76a00e5e4a1fec39ffaaf2f"},{"file":"csv_logic\/campaign.csv","sha":"2fb30b9c23dd7b1e87ef009f26453bf0e2f93c60"},{"file":"csv_logic\/cards.csv","sha":"1870e1ab143c3bcac574a93f86a7a69fb115e347"},{"file":"csv_logic\/challenges.csv","sha":"9cfce47b2b7f6a260d622f9105fdafbaa438a633"},{"file":"csv_logic\/characters.csv","sha":"7a24a10de47cd3ba275d5d0ab99368d2575abbd1"},{"file":"csv_logic\/game_mode_variations.csv","sha":"a8fa53263b80c7f0aff820a8d0fc8851b11c210c"},{"file":"csv_logic\/globals.csv","sha":"cb4f4fae4903787e20db0f5fca9734c4e1be9bb9"},{"file":"csv_logic\/items.csv","sha":"2b2dc75dec8c01f92e0325ce0903c289e65383cc"},{"file":"csv_logic\/locales.csv","sha":"1ae24282c0d1ff23717e7d0f12b5ae2c0718cde5"},{"file":"csv_logic\/location_themes.csv","sha":"fac809e9fff14cb86d62854af1a0db889f7a166a"},{"file":"csv_logic\/locations.csv","sha":"5927be4b6c8894d2d5077cea7eab4e14b877b9da"},{"file":"csv_logic\/map_blocks.csv","sha":"411c42c91071e15f00592f5f664477457e89df45"},{"file":"csv_logic\/maps.csv","sha":"b7654719c21e354ad4cf46d7d3e9087f94fdfbe3"},{"file":"csv_logic\/messages.csv","sha":"1f7ab8deab0544a2e9570c37a962f10ddd47feb5"},{"file":"csv_logic\/milestones.csv","sha":"216e850f4798f66f6c1aa895b1014a4a0cdeeef2"},{"file":"csv_logic\/name_colors.csv","sha":"a8282b1fad812d947e1b0b665d7821f46e9dc57e"},{"file":"csv_logic\/pins.csv","sha":"24ef753b5dbcc9475d47ac69edebeb09b521d777"},{"file":"csv_logic\/player_thumbnails.csv","sha":"574e74f15051a8bde30cd58335487a2cd1270aed"},{"file":"csv_logic\/projectiles.csv","sha":"42e4d0e1aa992b4b2745c20cf6aaf5f6c0c910dd"},{"file":"csv_logic\/regions.csv","sha":"50ae49e7358c1c05df74c6ee97be5ffe870d4258"},{"file":"csv_logic\/resources.csv","sha":"cd2d939e64de2fcf7b9c2dd1644931cbc91c1df0"},{"file":"csv_logic\/skills.csv","sha":"3bd4a65394ae36f64913c6e24d7c7fe0a46dcba6"},{"file":"csv_logic\/skin_confs.csv","sha":"65808d43e976aabdc6e1e8fd4b7ef671edd7ee4d"},{"file":"csv_logic\/skins.csv","sha":"70247ce2cf0f61b9a588ed6f27c5e39c3c689712"},{"file":"csv_logic\/skinsrarity.csv","sha":"cc59933ab880cabfa54aca22a84075e55f4df8e9"},{"file":"csv_logic\/themes.csv","sha":"88fbc84a28aac76c182cbf164c8378dc938de4dc"},{"file":"csv_logic\/tiles.csv","sha":"ac783470532750f2fd56134c5fa882ac3d20443a"},{"file":"font\/Brawl_Stars_Deputy.otf","sha":"7bf2c6c950542f35a7359c8676b8296d7255b9c8"},{"file":"font\/LilitaOne-Regular.ttf","sha":"70b4f26a4787952f7f45290cd963049ebd5a6501"},{"file":"font\/NotoNaskhArabic-Bold.ttf","sha":"9515989125309566cf2c4a5a84d7e498f853939f"},{"file":"font\/Pusia-Bold.otf","sha":"47699042537a908ad1187dedcd71d618c6651f31"},{"file":"font\/debug.fnt","sha":"719870d4573b1267eba821b4a5498b5505139ce9"},{"file":"font\/debug.png","sha":"59d01d0c4b1e3566e355422df4599462b1ace9fa"},{"file":"image\/range.png","sha":"0d95f0d1131655db9f2c5841370eb05f762508b9"},{"file":"localization\/ar.csv","sha":"54e518aeb4b684e5ea10698ca269e17c9339fdd9"},{"file":"localization\/cn.csv","sha":"4af6ef2ee032a1dfd8f1b607f0eeb92aa9aec41e"},{"file":"localization\/cnt.csv","sha":"65d1903dbd9f49b4708478f0b98228915dbbe354"},{"file":"localization\/de.csv","sha":"8bf6d9755a67c863e6c7a2ab3a00e4b4ec111ab8"},{"file":"localization\/es.csv","sha":"5a19ff4f9e81ebdb4072c82a699fd035e8141529"},{"file":"localization\/fi.csv","sha":"c99d65961375a175fec5f37aeb2fdeaec0ec9404"},{"file":"localization\/fr.csv","sha":"aff490986f4bf9510f46a6f0c1cc9eed6ffcaf83"},{"file":"localization\/he.csv","sha":"910be12d0798ba633c32aa3f0fc73fe9d6c9fa02"},{"file":"localization\/id.csv","sha":"2b49e70f73542ad133a585e01ee2b529ba99d4b0"},{"file":"localization\/it.csv","sha":"919cca7d7c4438ea86cf4b5b258ef9e8476bae81"},{"file":"localization\/jp.csv","sha":"1b15899eb166604eeee7fff88209649edc61b821"},{"file":"localization\/kr.csv","sha":"c11f6179ce9bf2410f2c729ce6f43527552bb246"},{"file":"localization\/ms.csv","sha":"6eed2ce434a6cbf13151e04ee6442129ce9a1f9b"},{"file":"localization\/nl.csv","sha":"1629a376db4985f82843df8b989f75574bc943e1"},{"file":"localization\/pl.csv","sha":"6357c08144a501b68350a37b3c9ebf48b82df989"},{"file":"localization\/pt.csv","sha":"abab9e920e1d0a7fb8a643c548adb9830a021269"},{"file":"localization\/ru.csv","sha":"4a532f3f6a212d11d131ba39c2b8d4bbbdb08767"},{"file":"localization\/texts.csv","sha":"1c8eeaa2e1e12ea488fdb1abaca522de11fdcae3"},{"file":"localization\/texts_patch.csv","sha":"5ae0a52e22a17b41dc19f7bf8e4456c0f3a021f4"},{"file":"localization\/th.csv","sha":"d116a9e4ba08d148df9d9876d1b56e9e235d799b"},{"file":"localization\/tr.csv","sha":"f78e6c7c2e9c471840c3a33280803965c78023f2"},{"file":"localization\/vi.csv","sha":"e6a07ca46a780bac3270cc5ceb5b613d3738492f"},{"file":"music\/Slugfest_ingame_01.ogg","sha":"84536637053872c4564d1a8e37019852b7900568"},{"file":"music\/Slugfest_ingame_02.ogg","sha":"cc0a2c5987426529f597ce9501e198e8066acfd3"},{"file":"music\/Slugfest_ingame_03.ogg","sha":"6c4a4a372894f724113308023fbe89e95818cf9d"},{"file":"music\/Slugfest_ingame_04.ogg","sha":"61818f7237a7b130a407ae9f1e6194d3404d4fc9"},{"file":"music\/Slugfest_ingame_06.ogg","sha":"7011e1cb2c99044fa575d3ca7e773c4ad39f26f3"},{"file":"music\/Slugfest_ingame_07.ogg","sha":"cd989185da1e385ebef4b856314e9ce69a70f941"},{"file":"music\/Slugfest_ingame_08.ogg","sha":"b290291a1b8000d3a58551f7601079c08a64490d"},{"file":"music\/brawl_goal_02.ogg","sha":"aac9feed6d489a22310174b5fe9702acdd9b9bdd"},{"file":"music\/brawl_other_goal_01.ogg","sha":"275ac274b52ed6fcb394b4b717d1d6c1d6fb6bb7"},{"file":"music\/brawl_panic_time_01.ogg","sha":"5f44a9374743b53d898796def9283fc330d5b0f8"},{"file":"music\/brawl_stars_menu_01.ogg","sha":"2a33604debf7d0a4eb824b3d8bef5181265a194f"},{"file":"music\/brawl_xmas_flag_lose_01.ogg","sha":"988ac2d4d2dd0c6a3a7bcb3c7710cff53f441930"},{"file":"music\/brawl_xmas_flag_win_01.ogg","sha":"81e6aee2f6f49ea2ace32cb510ac8a33fd22c862"},{"file":"music\/brawlcade_ingame_01.ogg","sha":"e5ded36f07e34cd816690d275b87e67ff2721ca1"},{"file":"music\/brawlcade_ingame_02.ogg","sha":"9ebd3ec78af1016dd9c9a17aaf882b82ee187796"},{"file":"music\/brawloween_ingame_01.ogg","sha":"6dec47fd7db80ba012810f78ab71fe90027421be"},{"file":"music\/brawloween_ingame_02.ogg","sha":"7dfd5c9bfcd13cd988578f7cc77a3c186bb8641e"},{"file":"music\/draw_screen_loop_4x_01.ogg","sha":"5688998114012870d73031daf5a0be1457afadf7"},{"file":"music\/footbrawl_ingame_muzak_01.ogg","sha":"09f1fb61738a8f887ab8fa8cd74a3ed9e21b61a1"},{"file":"music\/footbrawl_ingame_muzak_02.ogg","sha":"b4a7c4dc7d28e3f1a0549245c00643765496d907"},{"file":"music\/footbrawl_menu_muzak_01.ogg","sha":"4fef8ab01465b12ce2f99e79e1fce8441ab16ad8"},{"file":"music\/laser_game_draw_01.ogg","sha":"9aac08c3a8c985b9803dc858701c93b6ae3cc8fd"},{"file":"music\/lose_screen_loop_4x_01.ogg","sha":"75413ba39a23526ceb6d4a490a4979a5091118f5"},{"file":"music\/pirate_brawl_ingame_01.ogg","sha":"75c4949ad8fea98924fe10059817ef961c31d435"},{"file":"music\/pirate_brawl_ingame_02.ogg","sha":"77f8a03b78ae1bbde73b94534500c3b80ff51502"},{"file":"music\/retro_brawl_ingame_01.ogg","sha":"0b376465139f10277cd641a5c173bc2a73a2b5d4"},{"file":"music\/retro_brawl_ingame_02.ogg","sha":"a55e911bbc55313b4a6861908d25fe156609574a"},{"file":"music\/slugfest_game_lost_01.ogg","sha":"a9eac8476f2d81e946d2684b73001956f12c2a56"},{"file":"music\/slugfest_game_won_01.ogg","sha":"c1b1e00abeea9f80fbba6ce8887f1529f98ec3ce"},{"file":"music\/win_screen_loop_4x_01.ogg","sha":"04edbe5ff272d24c878c6a6498376c807b60b3c0"},{"file":"sc\/background_basic.sc","sha":"3fd9064fad7888eb44fbbf973895d4faab5872ee"},{"file":"sc\/background_basic_tex.sc","sha":"81f42c70ed2f07d8f5065fc139a00a3e13df75ab"},{"file":"sc\/background_brawlidays.sc","sha":"440930548d135a83bfb46986acdccb861850de3a"},{"file":"sc\/background_brawlidays_tex.sc","sha":"c856e971e1b8b0f54e8afc5f5585707b7613498f"},{"file":"sc\/background_brawloween.sc","sha":"5d3a6e3442e6b8a24b4b825e0062b3c400ca2d31"},{"file":"sc\/background_brawloween_tex.sc","sha":"b55a199a3c521ef70bf3193a6e960b82f021f0ad"},{"file":"sc\/background_golden_week.sc","sha":"ee23c78b6a5af1c4628ef4833c26521f7df65c42"},{"file":"sc\/background_golden_week_tex.sc","sha":"5cec1aa8f49d3bf6c802dd44c863eeb8622ca9b0"},{"file":"sc\/background_lny.sc","sha":"ea48d33f35f65367d580c6378c0b39003e7491bd"},{"file":"sc\/background_lny_20.sc","sha":"0b5e915ff4c99acbcd6f665715b84f0761c6e6ee"},{"file":"sc\/background_lny_20_tex.sc","sha":"f531595dedb8842b3d3309265746a06fac0a330b"},{"file":"sc\/background_lny_tex.sc","sha":"bfd62ea364d7ab4240cc9039a59d8d7b9bd2b050"},{"file":"sc\/background_mecha.sc","sha":"95d2038cea9b2e5351dc5ce1a06611ba568bddc3"},{"file":"sc\/background_mecha_tex.sc","sha":"f6b349210caf68982290f1fcfeace0623287db57"},{"file":"sc\/background_psg.sc","sha":"9ff368975d403b9dbd07bad843f0701d29403403"},{"file":"sc\/background_psg_tex.sc","sha":"34db4a6f71ba06ef3a4eb9fc4ac075fad78a1a32"},{"file":"sc\/background_retropolis.sc","sha":"cf6d09df4c862153962fd991531d3e961d0562d0"},{"file":"sc\/background_retropolis_tex.sc","sha":"0d3e7443440a36bc19831cec36c33352a514c965"},{"file":"sc\/characters.sc","sha":"c83f1eb247db23854d433b8c9e309c2d42032c59"},{"file":"sc\/characters_tex.sc","sha":"ee1b4aa109ed24f12d94071034f29605ea0c44bd"},{"file":"sc\/debug.sc","sha":"72be5665969f8300b8b45574988f787b747a4e68"},{"file":"sc\/debug_tex.sc","sha":"689c009488f4d31739dc5cc374f4f3fcf9bcbc37"},{"file":"sc\/effects.sc","sha":"5d0eaa69ebbf34b61f0d1a9be5e2b1dd493f2465"},{"file":"sc\/effects_brawler.sc","sha":"11e4d2f2b812e707f6ae2cd2fb3e086aa1ce6151"},{"file":"sc\/effects_brawler_tex.sc","sha":"98401f574c2a894d95418b047be9e460389a7350"},{"file":"sc\/effects_tex.sc","sha":"19fbd12b0588a1053737125123639cb91431546d"},{"file":"sc\/events.sc","sha":"35815b4a0a43c61213043b97a25393956f1349e3"},{"file":"sc\/events_tex.sc","sha":"47c071a3aa60083d29d32843f7c12b07f306f618"},{"file":"sc\/level.sc","sha":"0b888928370df8719e20d6741d07bc470393ea60"},{"file":"sc\/level_tex.sc","sha":"f6ce04cbfabe5c4d07a9f58f30c488fa1c948d00"},{"file":"sc\/loading.sc","sha":"aa8751e9990bdc0c31e27db30bc2081edd6627d6"},{"file":"sc\/loading_tex.sc","sha":"9e933c353fb7723a93bdebe76e23d4938a6b126d"},{"file":"sc\/supercell_id.sc","sha":"eca3334e42442b8b683e94fa32361accc190c48b"},{"file":"sc\/supercell_id_tex.sc","sha":"1cafc6c921773d9e287416c7e66e66a608acbfc8"},{"file":"sc\/ui.sc","sha":"50f9e96715ed3e386af055d31de6d226dd198e0b"},{"file":"sc\/ui_tex.sc","sha":"02a4045106eb9d049b0635b3b21cf449bd974356"},{"file":"sc3d\/8bit_attack.scw","sha":"ebaaaf747cee0b271ec875328a2951209f9aef77"},{"file":"sc3d\/8bit_base_cam.scw","sha":"c9f551f476f6166c7d79fc401e1429ce1b9df4e2"},{"file":"sc3d\/8bit_classic_geo.scw","sha":"5c78084a97267af4bb57054e3e924fcac07245aa"},{"file":"sc3d\/8bit_classic_tex.ktx","sha":"166ac8f0eaa7754a8138d0c880efac1b6b91cf16"},{"file":"sc3d\/8bit_classic_tex.pvr","sha":"a605dabd4a00be1d19ceec5a7354be7981c3334e"},{"file":"sc3d\/8bit_geo.scw","sha":"7972d9b1cf40e3d8c55000df4d5172b819c61846"},{"file":"sc3d\/8bit_idle.scw","sha":"0f798a08dda07a06f5755838e3e6603a3cb87123"},{"file":"sc3d\/8bit_lose.scw","sha":"4a2eaadc84497c10c4985aed636b3fe8b8a8cdd1"},{"file":"sc3d\/8bit_pushback.scw","sha":"c137a08aecf0d7ec908ffb6e0acccb9caaa1b332"},{"file":"sc3d\/8bit_reload.scw","sha":"7e0b846ad6395920549f74450e66f5df8a84343a"},{"file":"sc3d\/8bit_tex.ktx","sha":"6a40bdf0cccb6f5f3de2ce65aceb044e21f15c20"},{"file":"sc3d\/8bit_tex.pvr","sha":"d767151d0b37e1f36d68669b2278280047b86c45"},{"file":"sc3d\/8bit_turret_geo.scw","sha":"dc658d917f962bc86dfae6c48199409572b1262e"},{"file":"sc3d\/8bit_turret_idle.scw","sha":"a2346660ac571e50e9a1cc03ff84531252faeaad"},{"file":"sc3d\/8bit_turret_spawn.scw","sha":"6b274563ec6e58149295eb04d709187c2540d946"},{"file":"sc3d\/8bit_virus_attack.scw","sha":"01e4cc1454ecf7d0dfe9030ee9f3823575a54a8c"},{"file":"sc3d\/8bit_virus_geo.scw","sha":"49ddd4bc1f9bc583fb7c353fc6ad4a187cb938f5"},{"file":"sc3d\/8bit_virus_idle.scw","sha":"61d8f5db5c6ebab5e6f820926cb6b19d895473bf"},{"file":"sc3d\/8bit_virus_lose.scw","sha":"adea06a51e8da07fc1fd331614e16bab61c4140a"},{"file":"sc3d\/8bit_virus_portrait.scw","sha":"fe49348762e6a513f3e2f0896ea624e496d660c3"},{"file":"sc3d\/8bit_virus_reload.scw","sha":"d57273406d012e0c11567d9a73fefceab3a2beaa"},{"file":"sc3d\/8bit_virus_tex.ktx","sha":"37c7e6a99ae83ef610c37a5f5397b9d9e4791b4a"},{"file":"sc3d\/8bit_virus_tex.pvr","sha":"d7b74c6b07a509ee65267d6ec5037de87792c9ca"},{"file":"sc3d\/8bit_virus_turret_geo.scw","sha":"22abed84d0c66e6741d2619c418b9d2fc1ed9e9f"},{"file":"sc3d\/8bit_virus_walk.scw","sha":"4bc6aa01ae8d852c571b7f17d246afcc527bb3d3"},{"file":"sc3d\/8bit_virus_win.scw","sha":"3202eff355c197d4e158cb63c3576e23a43233dc"},{"file":"sc3d\/8bit_walk.scw","sha":"a2c6fea8243fc4be722d020e5af60129164ed92a"},{"file":"sc3d\/8bit_win.scw","sha":"90ff48c691d81b26c3f6c570a07ff0880e692516"},{"file":"sc3d\/arcade_002_ulti.ktx","sha":"0ca5627e62a211875307f048632189c741ca9f32"},{"file":"sc3d\/arcade_002_ulti.pvr","sha":"633fe8aec3f2981bc2c0ed3e80ea918dc5e68a41"},{"file":"sc3d\/arcade_002_ulti.scw","sha":"b0b2abb7dfb903335171fc145df83c012325b696"},{"file":"sc3d\/arcade_def_ulti.scw","sha":"63e5301a5d3969cb4a125b0c35d4233ac4570da8"},{"file":"sc3d\/arcade_def_ulti_blue.ktx","sha":"b13430663fb50832f3973faf3819de28e9e0a508"},{"file":"sc3d\/arcade_def_ulti_blue.pvr","sha":"4acd45ed45b685cae2a99f6bb706b2c4e2bef1cb"},{"file":"sc3d\/arcade_def_ulti_red.ktx","sha":"dcb0cda8e677ee595581d1e34904181e87c2fcf3"},{"file":"sc3d\/arcade_def_ulti_red.pvr","sha":"c73e17e1283afff04aa8da67d6310601e18b8590"},{"file":"sc3d\/arcade_def_ulti_red.scw","sha":"c39da976dc7ba9d3f59c2f16cfd25f276bcb3d34"},{"file":"sc3d\/arena_blocker.scw","sha":"b80e6bb154cf1ec19894f463f439ee9cfe673695"},{"file":"sc3d\/ball_cactus.scw","sha":"b835c254af11e5a4729d7a0c000d671af477d2c4"},{"file":"sc3d\/ball_tex.ktx","sha":"e24c7d51573d4ad4ee113a59d6bc7c695ed13aa8"},{"file":"sc3d\/ball_tex.pvr","sha":"8551cf7da1cfd195f37ce848b57f3a154d0bc8c9"},{"file":"sc3d\/barkeep_attack1.scw","sha":"d7e7b0e6fccfd46d581bad1877a5abee518e07f9"},{"file":"sc3d\/barkeep_geo.scw","sha":"3696699d735d8b852ba11a67739ebaf76c94457e"},{"file":"sc3d\/barkeep_gold_tex.ktx","sha":"e6abc38ea8e6afd23c3ff0148a36e2fa574fe446"},{"file":"sc3d\/barkeep_gold_tex.pvr","sha":"1a790040687efb9571b73b2c9d96f7e91bc03812"},{"file":"sc3d\/barkeep_idle.scw","sha":"f1df13f0478521c37505a2190308d86592a44282"},{"file":"sc3d\/barkeep_lose1.scw","sha":"cb5404f0438566e85dc25704f644c321a1ea00a4"},{"file":"sc3d\/barkeep_loseloop1.scw","sha":"da8b93f1704b6dee422097752b635c20ce918619"},{"file":"sc3d\/barkeep_pushback.scw","sha":"307ca1bb066352c11b5a120834344755d0ded219"},{"file":"sc3d\/barkeep_recoil.scw","sha":"d332270009ece9c2f42c88ebbc5a5c013878cbcd"},{"file":"sc3d\/barkeep_reload.scw","sha":"627c7af92441b135ca3099a398a9ac8855e979c3"},{"file":"sc3d\/barkeep_tex.ktx","sha":"c8f023004e788cea866f53e78a72780d63b9ad13"},{"file":"sc3d\/barkeep_tex.pvr","sha":"fae8a6efc8dca887553bba0429187b3dc398a29b"},{"file":"sc3d\/barkeep_walk.scw","sha":"c9e8207e75c55b830e8f5ef2b5f357ecc7ed49eb"},{"file":"sc3d\/barkeep_win1.scw","sha":"5922e70251b55f373cbeac46725108d778684178"},{"file":"sc3d\/barkeep_winidleloop.scw","sha":"1a7449ad7880758b74b0e242086b8e0b8657fcb7"},{"file":"sc3d\/barkeep_winloop1.scw","sha":"fa6e89d263096ec29c39b3176a0fae74eea7ed73"},{"file":"sc3d\/barley_005_atk_blue.ktx","sha":"050723020a32551d64961d05d123ff1dc02e80e0"},{"file":"sc3d\/barley_005_atk_blue.pvr","sha":"c62b6b1ac3075a16a7fc8c29873e07284e87f92b"},{"file":"sc3d\/barley_005_atk_blue.scw","sha":"e7e089e1f4f78ed6066da632ba75a8c7b8a6a34f"},{"file":"sc3d\/barley_005_atk_red.ktx","sha":"6622d061753c91d8b2f4f7630980d95ef1ce32e7"},{"file":"sc3d\/barley_005_atk_red.pvr","sha":"2f00b0acd9215e27cc5a6a96d127d552e5998941"},{"file":"sc3d\/barley_005_atk_red.scw","sha":"25f02f486e1100c9b9d9f137ae2a9c63a54dea07"},{"file":"sc3d\/barley_banker_attack1.scw","sha":"8d5318d3552740856c8dd5097b601c4f711493bb"},{"file":"sc3d\/barley_banker_geo.scw","sha":"148fbd72e5034b3201f8db7bc7a4c4a5457e22ed"},{"file":"sc3d\/barley_banker_idle.scw","sha":"51c35f99f4372833c037a97c9a6626ec6c7de76a"},{"file":"sc3d\/barley_banker_knockback.scw","sha":"0420e4359360a0c16d6822529c5b01b617f4ce7c"},{"file":"sc3d\/barley_banker_lose1.scw","sha":"3f624f14ded8b5517b88126d1123f4bf149e48d5"},{"file":"sc3d\/barley_banker_reload.scw","sha":"ac6cd9d373bcbb9437f8ee3e9fbd157f4cbfaf6c"},{"file":"sc3d\/barley_banker_tex.ktx","sha":"0281d1af7e852d7f5b169cd7a84f43d6e0d46c76"},{"file":"sc3d\/barley_banker_tex.pvr","sha":"058ed374887b54f8ad2ed7a9fb1fed38c618ad56"},{"file":"sc3d\/barley_banker_walk.scw","sha":"1c23ebe71189ee94d00ce292b4489e6e76bc477a"},{"file":"sc3d\/barley_banker_win1.scw","sha":"46eb82a9a6679e223dc3b9a4dec0500770fa925c"},{"file":"sc3d\/barley_banker_winidleloop.scw","sha":"849d71d79256a60b1e11ff33775243e60663d227"},{"file":"sc3d\/barley_base_cam.scw","sha":"51d2aa73d4a56f9c53b5b292c7c020966b6868f8"},{"file":"sc3d\/barley_lumberjack_attack.scw","sha":"bdf75b032c426051a9071c01ac9df4a4dae39a9b"},{"file":"sc3d\/barley_lumberjack_geo.scw","sha":"21088830f9f062f0e76b8f545b6fedd03bd4caeb"},{"file":"sc3d\/barley_lumberjack_idle.scw","sha":"de22c50920d7736cea581635df25f481068e79b5"},{"file":"sc3d\/barley_lumberjack_lose.scw","sha":"1d27cf4c8715cc4653118369c3e2e56c1b9522cc"},{"file":"sc3d\/barley_lumberjack_pushback.scw","sha":"f62984d7ab47487f588088d77975c10fd1bdaabe"},{"file":"sc3d\/barley_lumberjack_run.scw","sha":"de6e2ed16e9d0fb0d0a449df52c4151d942d12bb"},{"file":"sc3d\/barley_lumberjack_tex.ktx","sha":"c01bef33e9a2061ac6579bbeccbce4a7641b65a4"},{"file":"sc3d\/barley_lumberjack_tex.pvr","sha":"546da1ad86033bde04a8715a7420c40d52e37144"},{"file":"sc3d\/barley_lumberjack_win.scw","sha":"4439a542acf95c0b78bff58c93a3c730b85c0548"},{"file":"sc3d\/barley_ms_attack.scw","sha":"9d38789f3f4b9de7c781534a39b6fcebafa2be0f"},{"file":"sc3d\/barley_ms_geo.scw","sha":"f3100109268e5db1f50f1f03f54e6fda3c59b1dc"},{"file":"sc3d\/barley_ms_idle.scw","sha":"db6363940b2c10edb62540f87a3530b2f66bdfdc"},{"file":"sc3d\/barley_ms_lose.scw","sha":"9d3074b6191b74a68dfbf2724b58c3aafce43177"},{"file":"sc3d\/barley_ms_tex.ktx","sha":"f72b38ab3a789e078e52a415a2ccb1b4c2813c61"},{"file":"sc3d\/barley_ms_tex.pvr","sha":"bca170751330d1e90df8f291463b50fb1d1c0e03"},{"file":"sc3d\/barley_ms_walk.scw","sha":"c0bc1d25ba1bca0933b73ff784e431a5dedd787a"},{"file":"sc3d\/barley_ms_win.scw","sha":"59323cb32b88149c58e65a9e313441fb05c663cd"},{"file":"sc3d\/barley_pushback.scw","sha":"865e9743e1a45cf63a42f7dd904e394523a860af"},{"file":"sc3d\/barley_tex.ktx","sha":"58a8f57bab64649a2e0bed8371c1f0303cad10a1"},{"file":"sc3d\/barley_tex.pvr","sha":"f15944dcf5597cd37b23a43d21feae9cfaef97fb"},{"file":"sc3d\/barley_wizard_attack.scw","sha":"850e9312cf639672301f45936871bd69e432a718"},{"file":"sc3d\/barley_wizard_cam.scw","sha":"c43e0f48e61dc1360b1cfcfa21bf513c9ed69617"},{"file":"sc3d\/barley_wizard_geo.scw","sha":"ad883c3797b4494de9f79b400ef60accb83f0126"},{"file":"sc3d\/barley_wizard_idle.scw","sha":"18be53fefb42c15b39d8305fc82d120899a03743"},{"file":"sc3d\/barley_wizard_lose.scw","sha":"2594bdcfb0200b31a2da9f658623574f751706f5"},{"file":"sc3d\/barley_wizard_portrait.scw","sha":"82a6cb7c551b27c464a5269e204a08bf5fe620e9"},{"file":"sc3d\/barley_wizard_pushback.scw","sha":"fca17fcd6027211376b6e8aa06227037d03952ac"},{"file":"sc3d\/barley_wizard_tex.ktx","sha":"9e2a15f4ebbe2a12331730f790ec675b2fbeca7b"},{"file":"sc3d\/barley_wizard_tex.pvr","sha":"6275d15946c29ab427a3efad3122cd5ca267ed54"},{"file":"sc3d\/barley_wizard_walk.scw","sha":"eb93bd0491196019d1cf3e5ef54a52561a309a3f"},{"file":"sc3d\/barley_wizard_win.scw","sha":"a10a4146d7433b573d5d3c964f800542e5f35b9a"},{"file":"sc3d\/barrel1.scw","sha":"d5a1ab5cfa1d8cca26dd0fdaea3ca8e1563f2621"},{"file":"sc3d\/barrel2.scw","sha":"72282ec2f5b5d9155dd09c9d79c88257744a6119"},{"file":"sc3d\/barrel_1.ktx","sha":"2edc3079dc671e4db4954780befa42be203bf36c"},{"file":"sc3d\/barrel_1.pvr","sha":"296d40e700d35fe77b8910527873287625f1fbb3"},{"file":"sc3d\/barrel_2.ktx","sha":"0777a7645fe53f2b7aef03a98a0d89bb87b400c3"},{"file":"sc3d\/barrel_2.pvr","sha":"7c104c4b7f73cc82fff9d99f9b6346fd0b180aac"},{"file":"sc3d\/barrel_arcade.scw","sha":"b60e94652845743c2638b043651c369e6ad37afe"},{"file":"sc3d\/barrel_fishy.ktx","sha":"094b93d2ae04cd0fffce7ea58971c20c6b6f90d8"},{"file":"sc3d\/barrel_fishy.pvr","sha":"f8fbfef08e63bb796ad8769f044d0c07e20d7b2d"},{"file":"sc3d\/barrel_fishy.scw","sha":"09d24443d5d7b3e458e7524fd46a41647c0dde5e"},{"file":"sc3d\/barrel_mortuary.ktx","sha":"adfddbe54c9e59702e34e5ba6be87520578b2ea0"},{"file":"sc3d\/barrel_mortuary.pvr","sha":"d928d95b39d3d4a57eb38c5a01ae74b8fc51f8e8"},{"file":"sc3d\/barrel_mortuary.scw","sha":"139d784559e096925f20e4a979869e21a2050933"},{"file":"sc3d\/barrel_xmas.ktx","sha":"44d6f64f06bc80535c23abba918754a41643a1ef"},{"file":"sc3d\/barrel_xmas.pvr","sha":"d20b9a3e57d8e8abbe30f23f384c880768070779"},{"file":"sc3d\/barrel_xmas.scw","sha":"b0e138c7eab5df0aefcba522d78827b87dad7b0d"},{"file":"sc3d\/barrelbot_charge.scw","sha":"01b306fffbb53e3d005a7b7138327473bf4c2ca2"},{"file":"sc3d\/barrelbot_geo.scw","sha":"a47900512678df788077a8d9504eb245148cb3c9"},{"file":"sc3d\/barrelbot_idle.scw","sha":"b06abde95f5ee7deacd0b5fd20d2989bcf25bf75"},{"file":"sc3d\/barrelbot_lose1.scw","sha":"35e0f327fa70f543fa0e66e5eebafc22fa7bcac2"},{"file":"sc3d\/barrelbot_recoil.scw","sha":"11c1d6211e57f56b63e9e9b60b6d383d42494c73"},{"file":"sc3d\/barrelbot_recoil2.scw","sha":"894711dc6dbbcdd774b35a67f56d67421a1fe17e"},{"file":"sc3d\/barrelbot_signature.scw","sha":"27dc59e479dfd1f426228ce1ce5bd606f37cae38"},{"file":"sc3d\/barrelbot_tex.ktx","sha":"c4d07a3f9192cec5f0b39d80313014051aca3899"},{"file":"sc3d\/barrelbot_tex.pvr","sha":"298d2ee5771df9d0ff05e2d76ee330c3dc0f7091"},{"file":"sc3d\/barrelbot_tex_red.ktx","sha":"05f1615170608f5b163c3dba89580f8470680cec"},{"file":"sc3d\/barrelbot_tex_red.pvr","sha":"724a9eac0615cf3c2056ef06f123b025b908e0fa"},{"file":"sc3d\/barrelbot_walk.scw","sha":"7754bce5682eec066ecba925429922c7f2fd7905"},{"file":"sc3d\/barrelbot_win1.scw","sha":"da50bbe273865349926634c6b35be78e64741bf9"},{"file":"sc3d\/basic_tall_geo.scw","sha":"9936b2565b715f3d4f0ce780cf6c1a7bcc8c4862"},{"file":"sc3d\/bbox_10.scw","sha":"03cd7e8eea8b8464bc139a2cddba2fac4ea64eaa"},{"file":"sc3d\/bbox_11.scw","sha":"17f3cbaa0657dc7f7eeb184a0a69c71bdaeb7cb9"},{"file":"sc3d\/bbox_12.scw","sha":"1224383c360a988c365c989150fbace922dfb113"},{"file":"sc3d\/bbox_diffuse_lightmap.png","sha":"cc18a0637c3cbb294a0c2bc996051f7608a5c023"},{"file":"sc3d\/bbox_glow.ktx","sha":"aba94bd118c38ffdace85b077ded4aaa18e0f4cf"},{"file":"sc3d\/bbox_glow.pvr","sha":"3f57dde49c2bfa95e029ed7124686d3fa08c437f"},{"file":"sc3d\/bbox_l.ktx","sha":"a522297c042389317584b7d6bbae217cb37fff8c"},{"file":"sc3d\/bbox_l.pvr","sha":"b0b9311661b3d1047524886fa09d8aed6c957f90"},{"file":"sc3d\/bbox_m.ktx","sha":"deb1da84405d97e92ae48e03f08d2f05b985b7d9"},{"file":"sc3d\/bbox_m.pvr","sha":"cffabd4cbafc22076de94492a9712e95cc5bf420"},{"file":"sc3d\/bbox_specular_lightmap.png","sha":"9b385ff4340ecdd4c2a871da7990903bb3280248"},{"file":"sc3d\/bea_attack.scw","sha":"7a6353252a76dbeacf1824dd377bd42fbdb27739"},{"file":"sc3d\/bea_gadget_honeypot_geo.scw","sha":"114b0bc0f49dd3ebc0fb4a9adcd542b0ead7af46"},{"file":"sc3d\/bea_gadget_honeypot_tex.ktx","sha":"6ba00aeca8295ee094859ab902b4af21879b879d"},{"file":"sc3d\/bea_gadget_honeypot_tex.pvr","sha":"0c9cef0bac9db0311c96505223a91c3fb5d98d02"},{"file":"sc3d\/bea_geo.scw","sha":"244d77a9cd5379b66b1af16239cc1b304531b554"},{"file":"sc3d\/bea_idle.scw","sha":"9927f075f7527d150cedc9c52cbb71174afcb0f6"},{"file":"sc3d\/bea_ladybug_geo.scw","sha":"2555b7d50093c1decdfae995bcb6d597862014b8"},{"file":"sc3d\/bea_ladybug_tex.ktx","sha":"664726979bf23c652735a34ce570515e714590e6"},{"file":"sc3d\/bea_ladybug_tex.pvr","sha":"4fc6aba664725e457396663d55e8fff673a61380"},{"file":"sc3d\/bea_lose.scw","sha":"7f7a89bb6634c7c208ebb8aa976a341aa940a6b7"},{"file":"sc3d\/bea_portrait.scw","sha":"d4b55437df9b08de01f092a85f9b50e0cf6ff772"},{"file":"sc3d\/bea_pushback.scw","sha":"9329351c2709f0303d516c649b4fb5899ecb90b7"},{"file":"sc3d\/bea_reload.scw","sha":"414cc1a458f49fbb66ca18fbb191aa1e98cc3dd2"},{"file":"sc3d\/bea_tex.ktx","sha":"4ae95ab54edce075550eae0f4b5f06721541cbbf"},{"file":"sc3d\/bea_tex.pvr","sha":"c12cb35030007bf947158886b004275554902e20"},{"file":"sc3d\/bea_walk.scw","sha":"c981153fffd68ef9a5a3c71ecfbcdab0e748fac4"},{"file":"sc3d\/bea_win.scw","sha":"959f8f6a6b447544699b665b7a16628d74b06785"},{"file":"sc3d\/bear_koala_geo.scw","sha":"e8b8f87ff1fdf59143f3d0485cabdd30e90592cb"},{"file":"sc3d\/bear_reindeer_attack.scw","sha":"86e1b8a93ec700777ab37bef86dd1b7ca6edde80"},{"file":"sc3d\/bear_reindeer_geo.scw","sha":"6a4179acc857c36232c24517d4c5deedd0308f1a"},{"file":"sc3d\/bear_reindeer_idle.scw","sha":"727abc577b5669b8887fd2effdc7aa9c3e6b6401"},{"file":"sc3d\/bear_reindeer_walk.scw","sha":"aff798896be09b9971803d3b08f58fddb134a0e1"},{"file":"sc3d\/bear_shiba_geo.scw","sha":"628f4e3b38e9bef54913632b005734ff61ab4959"},{"file":"sc3d\/bear_shiba_idle.scw","sha":"8e589d2f5613e71c8154e5f350f01d0bfc601b03"},{"file":"sc3d\/bee_big_idle.scw","sha":"018c5eed2192325c4812d98c1cf36ebd0c64d5e1"},{"file":"sc3d\/bee_big_reload.scw","sha":"d1a5ed7b8b08ea550da13fd812a922de653d990e"},{"file":"sc3d\/bee_geo.scw","sha":"67e9851fd971ea214f6b52f308d76d54fb16bf03"},{"file":"sc3d\/bee_ladybug_geo.scw","sha":"72b4ed9493b508096eb96fe73c4b6e1debc76b8f"},{"file":"sc3d\/bee_small_idle.scw","sha":"31edaa54ce856a5f8171eee4de293a4239d9446a"},{"file":"sc3d\/bee_small_reload.scw","sha":"d882176324941aa4fc212df79deb4cd26c7100cf"},{"file":"sc3d\/bgr_arcade.ktx","sha":"616b8d666e7320f83d38ba4cc7101f70e73df986"},{"file":"sc3d\/bgr_arcade.pvr","sha":"1e4fd8fc5de5a528cb5094553279736f694eeb00"},{"file":"sc3d\/bgr_arcade.scw","sha":"e2c836ba690d26f381a20e776a157b5b5b2c8e65"},{"file":"sc3d\/bgr_arcade_ground.scw","sha":"d48902dd84ef4ce0fb92fb1eda40203ce0ebfdec"},{"file":"sc3d\/bgr_bb_arena.ktx","sha":"9c509142ffa38a2f3f53f6068ae3685fbbcd2c2d"},{"file":"sc3d\/bgr_bb_arena.pvr","sha":"83cb1c99a282eaa9debfeda41ae60ecf0b398fb6"},{"file":"sc3d\/bgr_bb_arena.scw","sha":"9b46197b30d25e3ab04bc1cc810cb7cb40d37129"},{"file":"sc3d\/bgr_bb_arena_decos_default.scw","sha":"b4fb9d44c52d91e35571cc2e4d842d1df9816c62"},{"file":"sc3d\/bgr_bb_arena_decos_psg.scw","sha":"ac94951d9675f4724a87ac58f8b7db58b5093c6e"},{"file":"sc3d\/bgr_bb_arena_ground.scw","sha":"87313110a4269f254f90a16615f0b875f8e577e7"},{"file":"sc3d\/bgr_bb_arena_ground_decos_psg.scw","sha":"e4347d22aee8763472bd1535bdeaae9e9f78eec4"},{"file":"sc3d\/bgr_bb_arena_psg.ktx","sha":"e56ad3081aa9f17230ef711252bda57fd4d5f375"},{"file":"sc3d\/bgr_bb_arena_psg.pvr","sha":"44992d328187e7df0c13437e8caf15e8cb425b38"},{"file":"sc3d\/bgr_beach.ktx","sha":"04d0dec9a1fee92c35c0483d039d1945744bd539"},{"file":"sc3d\/bgr_beach.pvr","sha":"35b52e75d192da0147d51f7be4ae9a3057e92420"},{"file":"sc3d\/bgr_beach.scw","sha":"5f0089ac35e4f7d6b8b1b341fdc120fcb3e2e945"},{"file":"sc3d\/bgr_beach_brawl_ball.scw","sha":"1a7c6cb9705a483ab83a004dc9101031b51a5dbf"},{"file":"sc3d\/bgr_beach_brawl_ball_ground.scw","sha":"2e005895a827035393403c51a661d0dec6ba617a"},{"file":"sc3d\/bgr_beach_ground.scw","sha":"82a6a8be2dd7592e8b3839ac72ca5c065b8e04aa"},{"file":"sc3d\/bgr_beach_ground_wf19.scw","sha":"9ded47be120a819c24b6d5a70ec7015a3e1507b9"},{"file":"sc3d\/bgr_canyon.scw","sha":"69d7a5f16547c7ba8ef3ee170e53eaac337c59ed"},{"file":"sc3d\/bgr_canyon_cactus.ktx","sha":"c8e680893c01edd798b42a4e49c040f4959a5ebe"},{"file":"sc3d\/bgr_canyon_cactus.pvr","sha":"4f4118107ac251fa660093d88e0cc7fb4537426f"},{"file":"sc3d\/bgr_canyon_ground.scw","sha":"3535a49a55f392dbfc5cd9e6f2747e9577b1294d"},{"file":"sc3d\/bgr_canyon_ground_wf19.scw","sha":"bd8698cb3480856edf3e35f4a1a0091a195884db"},{"file":"sc3d\/bgr_canyon_showdown.scw","sha":"92d1978ec9d33666e0836512a38736f45f67b5c0"},{"file":"sc3d\/bgr_canyon_showdown_ground.scw","sha":"ea714420f2935cfc62c16d65b4bbf592f9ee392a"},{"file":"sc3d\/bgr_canyon_showdown_ground_wf19.scw","sha":"96a0d432095af961af6fb45b6964b0a8b666d4e5"},{"file":"sc3d\/bgr_canyon_terrain.ktx","sha":"251e978936b6ad2b4470779b3d6f0ccf1ef5557b"},{"file":"sc3d\/bgr_canyon_terrain.pvr","sha":"9255f8a57d8865e29eec26f25c85163d7b8f6260"},{"file":"sc3d\/bgr_darryls_ship.ktx","sha":"8a55b6d28fb82811998a0afd4cb0543c620dfd32"},{"file":"sc3d\/bgr_darryls_ship.pvr","sha":"36c86b431109ac0080921e2f6a3cd9b10f4e6bac"},{"file":"sc3d\/bgr_darryls_ship.scw","sha":"95f0b0bb489ffa6e1559a7bcc42d8d503a8efe49"},{"file":"sc3d\/bgr_darryls_ship_decos_xmas.scw","sha":"f93488db919e863709a1db258bb3878c120c8cd6"},{"file":"sc3d\/bgr_darryls_ship_ground.scw","sha":"ca2449d146f0b71aa81475d79954c74b7348f60c"},{"file":"sc3d\/bgr_darryls_ship_hold.ktx","sha":"7ec097f7acb3ff736a74183ae15faf651328598a"},{"file":"sc3d\/bgr_darryls_ship_hold.pvr","sha":"770f00416fe3e3227dc280fef1b03391968b379e"},{"file":"sc3d\/bgr_darryls_ship_hold.scw","sha":"82f0ad6cadd47f5ef8aefbb75fb7ae23fb80d8fb"},{"file":"sc3d\/bgr_grassfield.scw","sha":"ea86477222bc61571c45039049ebf0febb7f2321"},{"file":"sc3d\/bgr_grassfield_ground.scw","sha":"ae6a8bbc04c25fcce57a2b6eb2c125efea138805"},{"file":"sc3d\/bgr_grassfield_ground_wf19.scw","sha":"d369a191f8622fb70ec8a2dfe94c7cb7a04d5168"},{"file":"sc3d\/bgr_island_showdown_ground.scw","sha":"e1599377e95d0122d4b45759d30f73378306be48"},{"file":"sc3d\/bgr_island_showdown_ground_wf19.scw","sha":"c4046ae3bd1b4aa551b3258dccb09bf7c7de5a61"},{"file":"sc3d\/bgr_jungle.scw","sha":"c3a9a82420fd14425fcae77d48683b61bf80b04c"},{"file":"sc3d\/bgr_jungle_ground.scw","sha":"61041e0c8485bfb37943fcb148c68b3cbcd4d805"},{"file":"sc3d\/bgr_jungle_ground_wf19.scw","sha":"9902454e21e0d9a80bd400b0bf7faa22aa865fd8"},{"file":"sc3d\/bgr_jungle_palm.ktx","sha":"51d32d8b532a9984c8531944386f5b7b7f8a5a68"},{"file":"sc3d\/bgr_jungle_palm.pvr","sha":"e08582a1333eba2cc92d81f60951f53ea83ade70"},{"file":"sc3d\/bgr_jungle_terrain.ktx","sha":"86ec1c96946d2c2a79bfedfa7cfee619376ec1c1"},{"file":"sc3d\/bgr_jungle_terrain.pvr","sha":"0edb4d4367a8f834a6be6705c91868f7e25323f8"},{"file":"sc3d\/bgr_mine.scw","sha":"80b1f4543debe6c048e8d1e6b2c78fdde4f8d1ae"},{"file":"sc3d\/bgr_mine_ground.scw","sha":"fc58c6e5f47ed0b0230ad27ff14d96f756e41e06"},{"file":"sc3d\/bgr_mine_ground_tracks_1.scw","sha":"c1e148a6bdbab5406f05d65f82328ffbaac35ebb"},{"file":"sc3d\/bgr_mine_ground_tracks_1_wf19.scw","sha":"1cb3c74f89f925d14044f964acf1f1dc582609f6"},{"file":"sc3d\/bgr_mine_ground_wf19.scw","sha":"c0f92af0a8bffb2d8616d2852c583894fa4bfff8"},{"file":"sc3d\/bgr_mine_terrain.ktx","sha":"af238302ed13b8357305860779214524daf5bc62"},{"file":"sc3d\/bgr_mine_terrain.pvr","sha":"f96871a94c4227a09b78d96754edcbdfed0d582e"},{"file":"sc3d\/bgr_mine_tracks_1.scw","sha":"c47e11161293f207bfba63ae531e0b56d6eea673"},{"file":"sc3d\/bgr_mine_tracks_1_boom_l_bot.scw","sha":"5c4464752083e202b0126c5d84f948c3f722011a"},{"file":"sc3d\/bgr_mine_tracks_1_boom_l_top.scw","sha":"8cba748140fa35dd6233b5c51eee2c0c55c5b19d"},{"file":"sc3d\/bgr_mine_tracks_1_boom_r_bot.scw","sha":"6adeed179e2c441cd8535d4c1790b697c7b831c8"},{"file":"sc3d\/bgr_mine_tracks_1_boom_r_top.scw","sha":"ef24efcc75d6b895b06983e0cf86d5a93fb8cb85"},{"file":"sc3d\/bgr_mine_tracks_1_lights.scw","sha":"1cdbe952465be36246e35597fcd1f2522c41d3ca"},{"file":"sc3d\/bgr_mine_tutorial.scw","sha":"6938e100ece847abf89d9321e47a6ec8c5b21757"},{"file":"sc3d\/bgr_mine_tutorial_ground.scw","sha":"1356bf81bb11894e343c44beb5db57db0a06f6f4"},{"file":"sc3d\/bgr_mortuary.ktx","sha":"43f41b12c9d2cab2d4c619ec797395f7ac39e369"},{"file":"sc3d\/bgr_mortuary.pvr","sha":"8c4c5dc4c87818b2427cdd135772ff5fa2e0d7a0"},{"file":"sc3d\/bgr_mortuary.scw","sha":"7538983a10d47d41509fdfb9b92cf83dc1a0eb95"},{"file":"sc3d\/bgr_mortuary_decos_hw.scw","sha":"a382e258f456163610320f4bc5f2530c398fd1d7"},{"file":"sc3d\/bgr_mortuary_ground.scw","sha":"f95db4645b4c7ef7304ee6f2c96c8ede9dcf0df7"},{"file":"sc3d\/bgr_mortuary_ground_wf19.scw","sha":"a17a7d4fb8f17c3f85ef3235f2d032f58c41d8b2"},{"file":"sc3d\/bgr_mortuary_showdown.scw","sha":"d4cc5cbfcb1829b798988f788719b670a68d058d"},{"file":"sc3d\/bgr_mortuary_showdown_decos_hw.scw","sha":"21bb8fbac70000db13a61ec9d094d5588446a34a"},{"file":"sc3d\/bgr_mortuary_showdown_ground.scw","sha":"16647bdcfc26155faf8dbbe629eaf7fd2005fe94"},{"file":"sc3d\/bgr_mortuary_showdown_ground_wf19.scw","sha":"4a0c34ba5ccd2234e882e09a125c6a74f1cee3a7"},{"file":"sc3d\/bgr_old_town.ktx","sha":"50bf8ca412f47a4eba1166f5d2eec7c633ef5980"},{"file":"sc3d\/bgr_old_town.pvr","sha":"9324bf021db71c1d16e01bde9a2fb9770d7b0690"},{"file":"sc3d\/bgr_old_town.scw","sha":"a6cf19581661a71425d63f89a6545ee98fb43fcc"},{"file":"sc3d\/bgr_old_town_ground.scw","sha":"7478ea17ae683ff145437a58acc5aa6bb0b53395"},{"file":"sc3d\/bgr_old_town_ground_wf19.scw","sha":"1eb45b2236c7d22d562883809f7e97be7081c788"},{"file":"sc3d\/bgr_retropolis.ktx","sha":"63f17b95ae8f2d2066d3ca13f44ed1f64a7adb55"},{"file":"sc3d\/bgr_retropolis.pvr","sha":"58403918b488c3f11964ec408fbcd2c8c03b63aa"},{"file":"sc3d\/bgr_retropolis.scw","sha":"60cc49f63fe215d5d7802c9d8b76c118708c5114"},{"file":"sc3d\/bgr_retropolis_ground.scw","sha":"f2ba6eb8bdc18fde8a3726f6fcffb767bd1903f7"},{"file":"sc3d\/bgr_retropolis_ground_wf19.scw","sha":"faf2c03d25ba8d82167ccb86d44402e082647cb8"},{"file":"sc3d\/bgr_warehouse.ktx","sha":"1b17440ff7d047b9587828a4c7545b9d5aa5367e"},{"file":"sc3d\/bgr_warehouse.pvr","sha":"b53c6bdc573e40e0d374cf894875ed18b924ae66"},{"file":"sc3d\/bgr_warehouse.scw","sha":"67e6dad33f9b11727a9c1041834bfa7697211066"},{"file":"sc3d\/bgr_warehouse_ground.scw","sha":"812aee80b4c6833c134819ab1c0af35d6877f1dd"},{"file":"sc3d\/bgr_warehouse_ground_wf19.scw","sha":"ab2636a82a7c048dce7bb703940f0da7166bc0a7"},{"file":"sc3d\/bibi_attack.scw","sha":"f055a910f250c3fdefa46a43c8b8e7eb478b7d49"},{"file":"sc3d\/bibi_base_cam.scw","sha":"335820b7bfe3460fed6e1715efea3cd50ff43255"},{"file":"sc3d\/bibi_gamer_attack.scw","sha":"7a69a0caeed5f88fbbf8895284aea0b5c415a8f3"},{"file":"sc3d\/bibi_gamer_geo.scw","sha":"64410db3b75aa09ec939a9a0943f77a68f7e3970"},{"file":"sc3d\/bibi_gamer_idle.scw","sha":"b5a25952a65746bbc0df1623514bce46f1b9304b"},{"file":"sc3d\/bibi_gamer_lose.scw","sha":"7780d60a89b4cc9e4c02cfef4c518f427effa57d"},{"file":"sc3d\/bibi_gamer_portrait.scw","sha":"71c96ee21519a3de138cf5d1ca7ef5d059b23462"},{"file":"sc3d\/bibi_gamer_pushback.scw","sha":"44900842260e2d5cd27db354f956024f060ddcee"},{"file":"sc3d\/bibi_gamer_tex.ktx","sha":"3f6a5f24ec8f732d9a3697703d53c319686dd34c"},{"file":"sc3d\/bibi_gamer_tex.pvr","sha":"88a9852bb661945c23bac5eb709a9af72c9d38eb"},{"file":"sc3d\/bibi_gamer_walk.scw","sha":"f15ee66b06dd364121fd64b57665040bf35c3ea7"},{"file":"sc3d\/bibi_gamer_win.scw","sha":"b52d8690c17646612b63105df80d2e9021f910cf"},{"file":"sc3d\/bibi_geo.scw","sha":"d77903a065a032b15f9111cb97af4c5c19b52c6e"},{"file":"sc3d\/bibi_idle.scw","sha":"eeaeca85b6a73de6206c7474683ada2659d3d2e3"},{"file":"sc3d\/bibi_lose.scw","sha":"ae668093f5e846d5c65bfb6d18e5d6dcd0852bc9"},{"file":"sc3d\/bibi_pushback.scw","sha":"544d4020869cd0d21470f304fd78423f9d42f7eb"},{"file":"sc3d\/bibi_run.scw","sha":"c200bae077a72ba2e19554f56661787bfcb21109"},{"file":"sc3d\/bibi_tex.ktx","sha":"9efc42955a96668b68ceb0a85b02381c9787fd97"},{"file":"sc3d\/bibi_tex.pvr","sha":"bb91ebfd2b98f90af28289c9bd71471d78e72701"},{"file":"sc3d\/bibi_win.scw","sha":"f324b18a6c46cf81adb7c44c0792bd1e559bcb85"},{"file":"sc3d\/blocker_arcade.scw","sha":"d5580e430c220edaad79f949b629b5a14e7cca55"},{"file":"sc3d\/blocker_arcade_2.scw","sha":"a3e37a01c5c77db8275318b73ccacec821b6d7e4"},{"file":"sc3d\/bo_002_ulti_projectile_blue.ktx","sha":"df024273d894c78a68b9d0f64c65fcd5b0ba5c26"},{"file":"sc3d\/bo_002_ulti_projectile_blue.pvr","sha":"9f9a031f5b028902ce40b4903b3f0af7a9d8763f"},{"file":"sc3d\/bo_002_ulti_projectile_blue.scw","sha":"e1f0235e3cbe674b9e3bee985872d55995c0a812"},{"file":"sc3d\/bo_002_ulti_projectile_red.ktx","sha":"3a61090518f217f5172138228ae32e0775216dc4"},{"file":"sc3d\/bo_002_ulti_projectile_red.pvr","sha":"39f0177062a69079d6822be2f926703bff36de71"},{"file":"sc3d\/bo_002_ulti_projectile_red.scw","sha":"3eb7c8a894b2b6f3019cd54c0676888fe4749965"},{"file":"sc3d\/bo_003_ulti_projectile_blue.ktx","sha":"45debe6e54d952c3cd25dabde99b5ff223b404b7"},{"file":"sc3d\/bo_003_ulti_projectile_blue.pvr","sha":"59d60cf7565125ffe93d253137ce98c40038454c"},{"file":"sc3d\/bo_003_ulti_projectile_blue.scw","sha":"04bd938624f989da8a98d25e8396d8daccdaa01a"},{"file":"sc3d\/bo_003_ulti_projectile_red.ktx","sha":"d90d1ed8ef18c7e51de624f70120449084cc04a8"},{"file":"sc3d\/bo_003_ulti_projectile_red.pvr","sha":"74eab88b2d0ed6cccf48146b881ffb0a55c476c7"},{"file":"sc3d\/bo_003_ulti_projectile_red.scw","sha":"448f57362ba240011bfe9ecbceee1eb46516ff7c"},{"file":"sc3d\/bo_attack.scw","sha":"49badb009502f9f0bb36fce8f0a5368e7cc47257"},{"file":"sc3d\/bo_base_cam.scw","sha":"3ce1d48f2e7040b44bd1bca0c46dcb155e7a8225"},{"file":"sc3d\/bo_def_ulti_projectile_blue.ktx","sha":"70ac6cfd618856801b9798effdae300865288c40"},{"file":"sc3d\/bo_def_ulti_projectile_blue.pvr","sha":"b2d899c2eee7668936e6219227db03ce5ccc8830"},{"file":"sc3d\/bo_def_ulti_projectile_blue.scw","sha":"19536322438c345fe4476d3239690cc59ff9a8b2"},{"file":"sc3d\/bo_def_ulti_projectile_red.ktx","sha":"56c5867d3eea6c34fdbf9e6bf2c6b9d4031227b5"},{"file":"sc3d\/bo_def_ulti_projectile_red.pvr","sha":"1321f345cc144ef27d88d164eb80af0c87386104"},{"file":"sc3d\/bo_def_ulti_projectile_red.scw","sha":"8d5871aab8a8da0260b41070f8c10d2cfd2c3cbd"},{"file":"sc3d\/bo_falcon_attack.scw","sha":"641be1ed52c1e530c382c0f95a460603c2e0066c"},{"file":"sc3d\/bo_falcon_geo.scw","sha":"047e26f2e72075cbaf99443ed4cc2f114706ed98"},{"file":"sc3d\/bo_falcon_idle.scw","sha":"464e11b5b772dff846b502e0547b75a2014537cf"},{"file":"sc3d\/bo_falcon_lose.scw","sha":"c1d9a3e3bb07f76ea32bdaf112c57b059d78d791"},{"file":"sc3d\/bo_falcon_portrait.scw","sha":"559771b83897b7b918f5fe60bdb3debe77aea59b"},{"file":"sc3d\/bo_falcon_tex.ktx","sha":"4906b337224a2d11514383d0d75c1ecbf3653138"},{"file":"sc3d\/bo_falcon_tex.pvr","sha":"ed0190415ec76d77c9e97fcc6cfa592c8133f72e"},{"file":"sc3d\/bo_falcon_walk.scw","sha":"edb7a56228f90be6ae441c32b95a84819a9d6a65"},{"file":"sc3d\/bo_falcon_win.scw","sha":"cfec16fdfe44f5341551259a56f1002537061ac6"},{"file":"sc3d\/bo_gadget_totem_geo.scw","sha":"ff391d4a5e531d70a935dfaef95c470bed5b22cc"},{"file":"sc3d\/bo_gadget_totem_tex.ktx","sha":"207429f2156f3748a1a36bdc9767ef93f37df311"},{"file":"sc3d\/bo_gadget_totem_tex.pvr","sha":"8ec87f3028ac6ac3eeb3c5a39ab0d5f303f412c9"},{"file":"sc3d\/bo_geo.scw","sha":"c554220e847714570b5fcd9c5d54ad2d76f387d9"},{"file":"sc3d\/bo_idle.scw","sha":"c6ca53590780b4500c6023716e61ea4e9b95487d"},{"file":"sc3d\/bo_lose.scw","sha":"fd8b7f87cd02c720e7d82b1ebc6254458647cbcb"},{"file":"sc3d\/bo_mecha_attack.scw","sha":"eab7df676ca40cb450be01cf3d957f5810f69dbf"},{"file":"sc3d\/bo_mecha_cam.scw","sha":"3c4bf73ccd9eb949f94cff21ba06dfe84924e881"},{"file":"sc3d\/bo_mecha_geo.scw","sha":"e0565f65cbb1e24c00cc827223f65311c3299955"},{"file":"sc3d\/bo_mecha_idle.scw","sha":"3f38c332128c03b407f8c9c525aea3258916601f"},{"file":"sc3d\/bo_mecha_lose.scw","sha":"b77ad9bc50bec7318ff7d933e956f6609809a760"},{"file":"sc3d\/bo_mecha_pushback.scw","sha":"e62e95cd05f494af700ed8b1f8c3725708754d1a"},{"file":"sc3d\/bo_mecha_run.scw","sha":"cc69ec18d215d2f565075c543c22d993d104b437"},{"file":"sc3d\/bo_mecha_tex.png","sha":"9ecac892d94a48e3da6af1620cc512e4f250834a"},{"file":"sc3d\/bo_mecha_ult.scw","sha":"1fe20836d20838b635c3f1ca60bc715b654a00af"},{"file":"sc3d\/bo_mecha_win.scw","sha":"7d2ea825d16ef88c7c3135e93423bdd9ee8730f1"},{"file":"sc3d\/bo_tex.ktx","sha":"769606731a1ba5a1e52aa7be7b4895ca56fb7917"},{"file":"sc3d\/bo_tex.pvr","sha":"df8060c92172f3deb310959525c570fe70ca064b"},{"file":"sc3d\/bo_ult.scw","sha":"ec0cc0005e3971ab873e11b02c03ce32ac97de65"},{"file":"sc3d\/bo_walk.scw","sha":"0b24f7924bfbcb3e40a1c60ff93c537ccf4c1e4c"},{"file":"sc3d\/bo_win.scw","sha":"2aae1d3a7008910dda50d77614434af8212dff5b"},{"file":"sc3d\/bombhead_geo.scw","sha":"8534793dbe987c320f5c3ed15e74e98d56c0ff9c"},{"file":"sc3d\/bombhead_idle.scw","sha":"7e7169df4277952fd1f1bc95ac1048644dbf8d21"},{"file":"sc3d\/bone_pile.png","sha":"d1d869d619a4b7bdefcedcbabc6a054aa1e6f831"},{"file":"sc3d\/bone_pile.scw","sha":"c1b072ae8acdccb7ca16989bab1e9e7ef1ddb471"},{"file":"sc3d\/bone_pile_mortuary.png","sha":"f79d1328e86e51dc6cd1caf26426977c3f62c8be"},{"file":"sc3d\/bone_pile_mortuary.scw","sha":"4ad89fc8ace9fb98835e12265a1dbcf5c2b54ab4"},{"file":"sc3d\/bone_ribs.scw","sha":"ae9663c34f9c53d942a44d87a187f0034a735a4c"},{"file":"sc3d\/bone_ribs_mortuary.scw","sha":"6b598668005dc07a6c7f726f9f950f13888a7fc5"},{"file":"sc3d\/bone_single.scw","sha":"a7fef01e34a961aaa701f42b29d8eec2a2d3bc00"},{"file":"sc3d\/bone_single_mortuary.scw","sha":"f91bb7aba337061a9838bbba77a295f7c878ce2e"},{"file":"sc3d\/bone_skull.scw","sha":"7ab8e91e4592c9b4e11e253629415e8955a941ec"},{"file":"sc3d\/bone_skull_mortuary.scw","sha":"6fd7fc77b61cc41ade19285541de6a828d5fb21d"},{"file":"sc3d\/bossbot_geo.scw","sha":"45df8a0a73b888dc0b2e573952095328a8ac7f5f"},{"file":"sc3d\/bossbot_idle.scw","sha":"c371a8a63bbbdc5b5cd8f7de3e1425236e527ca5"},{"file":"sc3d\/bossbot_recoil_1.scw","sha":"a729edf5d6fc38471912f7b9eb90554b2aa3889d"},{"file":"sc3d\/bossbot_recoil_2.scw","sha":"392d9c7fa1db993a19bc91a7623cc72f37332ce0"},{"file":"sc3d\/bossbot_shoot_recoil.scw","sha":"84ade02979016d8390963402813aa11428dd4bd1"},{"file":"sc3d\/bossbot_tex.ktx","sha":"9686f9f9eb5655efee467a5a7a82aed5fce22c21"},{"file":"sc3d\/bossbot_tex.pvr","sha":"4b1a3a0a391ec2adff2e4bc2a8356f54658d6fd2"},{"file":"sc3d\/bossbot_walk.scw","sha":"4f3c7284dcab8fcb839ac5a82ba43bb75f563b8f"},{"file":"sc3d\/bowdude_attack.scw","sha":"006dd5352268dcc3532aca6df32d5335d2331ab1"},{"file":"sc3d\/bowdude_geo.scw","sha":"3cf0d78de40c56b54d173d21d733e5d6a89ed452"},{"file":"sc3d\/bowdude_idle.scw","sha":"21f62044d0ffd0e69e40c857dfd9ed2da3594442"},{"file":"sc3d\/bowdude_lose1.scw","sha":"b82638958daba6dbde4abb4d53edfe602f2d9339"},{"file":"sc3d\/bowdude_loseloop1.scw","sha":"c466495ed6e909ba2b781ee49125e8c7e8d119fb"},{"file":"sc3d\/bowdude_recoil.scw","sha":"0d1ed78901a8039db16a8b3678c8e06197074390"},{"file":"sc3d\/bowdude_ultiattack1.scw","sha":"81fa0fc620c567bf755e3f5748f44f6923755661"},{"file":"sc3d\/bowdude_ultirecoil1.scw","sha":"3875897f7104a5ca662a6ce40a250832e086ed40"},{"file":"sc3d\/bowdude_walk.scw","sha":"0dc92cbdc12ac80e937a3c05e2c27d44ecd7b1b9"},{"file":"sc3d\/bowdude_win1.scw","sha":"fb1712c2a77bba544d33a06f5ca7ecff53ebd95e"},{"file":"sc3d\/bowdude_winloop1.scw","sha":"4327c511a7481b967744cbf7bcb620cf828e4c64"},{"file":"sc3d\/bowman_blue_tex.ktx","sha":"f14b25ab66999c8e0fcf9235030be7555ed097e1"},{"file":"sc3d\/bowman_blue_tex.pvr","sha":"14a53ee4c915550089ea263a1ae1be1d14597ceb"},{"file":"sc3d\/bowman_tex.ktx","sha":"caa2b6680852cd29ee291b6456d9826ff856ec5e"},{"file":"sc3d\/bowman_tex.pvr","sha":"3ac793d069a3c47f43ec871bb7de0959a86d4d1e"},{"file":"sc3d\/brawl_ball.scw","sha":"ac6d112805e3f3fe04440ee9e93a12624f231e9f"},{"file":"sc3d\/brawl_ball_beach.png","sha":"3344100a10f03e03813b49df6d4a03ba6311b6a7"},{"file":"sc3d\/brawl_ball_beach.scw","sha":"9e0bf5fc6a3d04ae1fc4aeb9f19410ee58c9badc"},{"file":"sc3d\/brawl_ball_football.scw","sha":"c58274e4fe29c907a4e821e3a40a5af13812fbac"},{"file":"sc3d\/brawl_ball_football_psg.scw","sha":"8c7f72116d49f6ae186b6ba690af9b9360ce6242"},{"file":"sc3d\/brick1.scw","sha":"ecb601e487b9dfaf4a6a580c2b1c851d47160c87"},{"file":"sc3d\/brick_1.ktx","sha":"8d8b9e5e1335df4ea90dc377498809f65d43d3b3"},{"file":"sc3d\/brick_1.pvr","sha":"5cf5361f6cb0cae5cf0ab40856c32376f48f2950"},{"file":"sc3d\/brock_003_atk_blue.ktx","sha":"6dca1cc0c0a9747800526c9687219bae037c2d43"},{"file":"sc3d\/brock_003_atk_blue.pvr","sha":"198e896fbcd2e9baf42b0793d1c2d926ee6e955f"},{"file":"sc3d\/brock_003_atk_blue.scw","sha":"4baaf3dafeadc1abb8487c84e3b0053bc8125867"},{"file":"sc3d\/brock_003_atk_red.ktx","sha":"147c2a5d2a5b6a89a7a6c6e9957bc591e44f9286"},{"file":"sc3d\/brock_003_atk_red.pvr","sha":"f4f795600be9ada440126bf2ccca8f44dcd38c35"},{"file":"sc3d\/brock_003_atk_red.scw","sha":"edc98dfd03ba97f07b970f9693a94aa79a151324"},{"file":"sc3d\/brock_004_atk_blue.ktx","sha":"bf3c54f54b0327e6612b787594d2e6faf46e3937"},{"file":"sc3d\/brock_004_atk_blue.pvr","sha":"bfdbb7454d9e2521618424403557546517df59be"},{"file":"sc3d\/brock_004_atk_blue.scw","sha":"d50f5b82f508932f03e2faced207f6d0830399b7"},{"file":"sc3d\/brock_004_atk_red.ktx","sha":"525980a336855f17005e978ec8c2e5126f40784f"},{"file":"sc3d\/brock_004_atk_red.pvr","sha":"ca64f2255c86aa3bc138b8a08cfa374b066fbba6"},{"file":"sc3d\/brock_004_atk_red.scw","sha":"b09fd0d32cfdc7add66eaee313b7c9f1bb61f98b"},{"file":"sc3d\/brock_attack1.scw","sha":"834c5e71998db8967fcf807e5fca7ecc2c4af325"},{"file":"sc3d\/brock_base_cam.scw","sha":"bb02180142c33c170e012b7cf3746d407163372c"},{"file":"sc3d\/brock_beach_blue_tex.ktx","sha":"67ff3257f9cb81e0cbcf26edddb55b3fb5f94a6b"},{"file":"sc3d\/brock_beach_blue_tex.pvr","sha":"832622c0e62f605bad8036f2909838e8b64775fd"},{"file":"sc3d\/brock_beach_geo.scw","sha":"98b46575efbb14952901d3e32e203b9a8d38e6aa"},{"file":"sc3d\/brock_beach_tex.ktx","sha":"7addf5dcd679db9ff49c03b93bbace816d7eba99"},{"file":"sc3d\/brock_beach_tex.pvr","sha":"4a0978e921eee2f29fa2b7c035a1b2b33417f38c"},{"file":"sc3d\/brock_blue_tex.ktx","sha":"842e63a510c92f40e2bc3a39dd6b2e93c059ea6e"},{"file":"sc3d\/brock_blue_tex.pvr","sha":"c13af0a943c0b71dc4368906beb46f2ba02d9d4c"},{"file":"sc3d\/brock_boombox_attack.scw","sha":"bfeb48f9f4d59ae8f36e046b7af963281f4d4e94"},{"file":"sc3d\/brock_boombox_blue_tex.ktx","sha":"eeb2e6217bbdb82add945a8c4f62927201a6cb92"},{"file":"sc3d\/brock_boombox_blue_tex.pvr","sha":"990db91511b004c9ad055d2241bd9be8956a6956"},{"file":"sc3d\/brock_boombox_geo.scw","sha":"61ecd8d4dfbecc9435cb93a7a4145a891815c96d"},{"file":"sc3d\/brock_boombox_idle.scw","sha":"c11a3cb80bbf6dbf8f510c1ce753380a8604ca2a"},{"file":"sc3d\/brock_boombox_lose.scw","sha":"c5edaf5ad565e3faa4ce2b65c444dd8a2ae9dfc0"},{"file":"sc3d\/brock_boombox_tex.ktx","sha":"2e233e18ccad92f75d82636835cfb3aad1262948"},{"file":"sc3d\/brock_boombox_tex.pvr","sha":"76e35fbed9b4fb4fa25b9778c4ee9bde3f9ef525"},{"file":"sc3d\/brock_boombox_walk.scw","sha":"fa7cfe0dfb782c6b00182a97fd05796fb1b933d3"},{"file":"sc3d\/brock_boombox_win.scw","sha":"2598846c414ba00f3f909ca83e3ac2f45cc4d8d6"},{"file":"sc3d\/brock_boombox_win_intro.scw","sha":"417694eb17ae4c593a1cdf16f0bfd721999ffb92"},{"file":"sc3d\/brock_cny_geo.scw","sha":"cd663989866d8db68fccd7be7d3949a1caa889d0"},{"file":"sc3d\/brock_cny_tex.ktx","sha":"bd100d52c565791a4a0b7fb668f49f4480577b46"},{"file":"sc3d\/brock_cny_tex.pvr","sha":"a5ea03307336ccef736d35a34c94b654b563ccb0"},{"file":"sc3d\/brock_cny_walk.scw","sha":"891d4b6d8855b97385fd576f94f64c7b72500484"},{"file":"sc3d\/brock_d_01.ktx","sha":"8e76c0af64938e4c6db8273d8bd0e2f332ba458b"},{"file":"sc3d\/brock_d_01.pvr","sha":"3530b59698bd979031f898b114923c6c66c9d982"},{"file":"sc3d\/brock_d_01_blue.ktx","sha":"b26dee37704685777d497565bb1dc4586660023c"},{"file":"sc3d\/brock_d_01_blue.pvr","sha":"2d2947efcd3e4fe797e441ff755a167dbbb54289"},{"file":"sc3d\/brock_geo.scw","sha":"63c55869e4f273e54e44b5ab344764e66aa5b7e4"},{"file":"sc3d\/brock_hotrod_attack.scw","sha":"5908ed3abfa43450e49ca76a8eb68d3e2971b4e2"},{"file":"sc3d\/brock_hotrod_geo.scw","sha":"e713360f018b48d4ea55d1855b23fa87235f3a22"},{"file":"sc3d\/brock_hotrod_idle.scw","sha":"fe988b38edfc39dde85277b0cf07f7b24d26dceb"},{"file":"sc3d\/brock_hotrod_lose.scw","sha":"ff1a9a120517ed5b63b230711087add2a7edfb27"},{"file":"sc3d\/brock_hotrod_run.scw","sha":"38c0a9b76866498e351dc263f6c53ca53c564183"},{"file":"sc3d\/brock_hotrod_tex.ktx","sha":"51478027147d0a19358eeecff53e934438ad12a2"},{"file":"sc3d\/brock_hotrod_tex.pvr","sha":"e9228bcd027477efeff4e2ab5e4ada3a0b18c1ad"},{"file":"sc3d\/brock_hotrod_win.scw","sha":"a0037426ad6716bce6664c8a5958f1c4ca1e74c1"},{"file":"sc3d\/brock_hotrod_winloop.scw","sha":"6d3bc3d3753adfb7a425d8a6367ebb6d10d611e7"},{"file":"sc3d\/brock_idle1.scw","sha":"ffc8accbba1b166680bc90ace7431aaa8686f7d5"},{"file":"sc3d\/brock_lose1.scw","sha":"4f8c9d05ac8797cdc7db43354ba9b2a09444b553"},{"file":"sc3d\/brock_loseloop1.scw","sha":"87f2b1cc5b51444792c14e4dbc0069af7cb996d8"},{"file":"sc3d\/brock_pushback1.scw","sha":"11c9a52ea1863edebd5001201d99a674bac07b8f"},{"file":"sc3d\/brock_recoil1.scw","sha":"12c74dfc614bb96166e6746e030b2480bafb3b13"},{"file":"sc3d\/brock_rocket_blue.png","sha":"7e4813a2549c9197866ceccada38bdf1042cef46"},{"file":"sc3d\/brock_rocket_blue.scw","sha":"ed1748de90e296d7017fec8a38e1c2430eb9e3a0"},{"file":"sc3d\/brock_rocket_red.png","sha":"d4010b0bcc4f1802e9b60855bf91c795e2087c34"},{"file":"sc3d\/brock_rocket_red.scw","sha":"8410660a6025c90fb5cd09c995e6348dcc13b136"},{"file":"sc3d\/brock_tex.ktx","sha":"9c7d27ef238de43cc6b8d060a81fbc457c6fe641"},{"file":"sc3d\/brock_tex.pvr","sha":"eb8a3b65da88ba6a31f3d6065e4d960260a92e4c"},{"file":"sc3d\/brock_ultiattack1.scw","sha":"d178ca701730ace50df7ddccd0d34c3084d2b2d5"},{"file":"sc3d\/brock_ultirecoil1.scw","sha":"6a29d410fc6d7b5648d1514859e7ab16a13ed24b"},{"file":"sc3d\/brock_walk1.scw","sha":"d8ad285539580f375cb7fa8d2415a99cdf4da4f4"},{"file":"sc3d\/brock_win1.scw","sha":"88e45481e4816e7441146f4d2651cb2fc5537a3f"},{"file":"sc3d\/brock_winloop1.scw","sha":"bad0af58bb456ca2ec9819298179ae894caf231c"},{"file":"sc3d\/bull_attack.scw","sha":"29de7e50f1160c7f8f34fbe4a297c6dc01be649d"},{"file":"sc3d\/bull_base_cam.scw","sha":"0f996d4b07c141527ca2a64294f9174c96b60fd5"},{"file":"sc3d\/bull_footbull_geo.scw","sha":"59d758d6a0a5283d98de3a49fb341b657621a8ec"},{"file":"sc3d\/bull_footbull_lose.scw","sha":"de2c8303b2a7fe28994e2c930799c30a176df1ca"},{"file":"sc3d\/bull_footbull_tex.png","sha":"fbd8a1265282fb36fd4a8b72a8a0e6456bbc31b4"},{"file":"sc3d\/bull_footbull_win.scw","sha":"41bc41af390761375bfed3267073395e78528326"},{"file":"sc3d\/bull_geo.scw","sha":"db7f39bf7bce6a9896ec10070824e07a1549e6ed"},{"file":"sc3d\/bull_idle.scw","sha":"6f6a2c779b11f75a1e8f7e731f5704e83c710313"},{"file":"sc3d\/bull_lose.scw","sha":"8a8aa82fe1c4610c574132a26896266e1be5a2c1"},{"file":"sc3d\/bull_rock_pushback.scw","sha":"d2581e96985057e7bb198b232eb03dbb67ec9b35"},{"file":"sc3d\/bull_super.scw","sha":"3c374c04ce3913ef50fd0d5b365a7ab00aba250c"},{"file":"sc3d\/bull_tex.ktx","sha":"b9a40560cc2a9f53803ad353a45d3ddd7275102f"},{"file":"sc3d\/bull_tex.pvr","sha":"68f5448a577a6ab73b64af0d6c7affbce9596495"},{"file":"sc3d\/bull_tex_01.ktx","sha":"d0b92603efd139f42bb98908f00f1de3b30df99d"},{"file":"sc3d\/bull_tex_01.pvr","sha":"c5d7a7e634c2b777df9183f396374206edf7f7cc"},{"file":"sc3d\/bull_viking_attack.scw","sha":"88a8be643d1e221e5d27c2f3f886e932b37e7466"},{"file":"sc3d\/bull_viking_geo.scw","sha":"5199db8d8c06dacad279fd67128edb815d6f2594"},{"file":"sc3d\/bull_viking_idle.scw","sha":"4befc741f006347d43bab0386afc61d62ebaa047"},{"file":"sc3d\/bull_viking_lose.scw","sha":"c26c21a8e45902f3c32e98e6e9efd155ad8b20b6"},{"file":"sc3d\/bull_viking_lose1.scw","sha":"047d720f20558210e1ab46c5ecff8324b21f4a09"},{"file":"sc3d\/bull_viking_pushback.scw","sha":"fb18239d2bf968765dadaf213564597831f5c996"},{"file":"sc3d\/bull_viking_run.scw","sha":"ac74a13c6d77684cd64259a7db5e804b3b4e992a"},{"file":"sc3d\/bull_viking_super.scw","sha":"e4904b310061356191be4034c7230fbfb2e43c36"},{"file":"sc3d\/bull_viking_tex.ktx","sha":"39a5766cbc64c648bb5a2b5ff7cea31ed8488536"},{"file":"sc3d\/bull_viking_tex.pvr","sha":"995513beb12cf8fd2e69f4c4f36196856c3086bb"},{"file":"sc3d\/bull_viking_walk.scw","sha":"94f49f8934c96789e38fbbd8382e020514ca7724"},{"file":"sc3d\/bull_viking_win.scw","sha":"7644e1a1787a5e82cca886bc0cb9a891345b47d8"},{"file":"sc3d\/bull_walk.scw","sha":"02bc14b2119280d3d7b0f2f5cb6ca28de3797d87"},{"file":"sc3d\/bull_win.scw","sha":"e1e56c0df00c26c43eb83b1121aa488658fb793f"},{"file":"sc3d\/bunny_turret_anim_attack.scw","sha":"f65bb0d8202e03955a73151cf34dcfa250aa4073"},{"file":"sc3d\/bunny_turret_anim_idle.scw","sha":"5e83caa42a0f4d563675284b4229704695a1b66b"},{"file":"sc3d\/bunny_turret_anim_idlemenu.scw","sha":"5e30305b3105e91eaa56752383735242448c9313"},{"file":"sc3d\/bunny_turret_anim_spawn.scw","sha":"e277b1146c0144fab9e2be106ede50b9f2ff2c69"},{"file":"sc3d\/bunny_turret_geo.scw","sha":"78d20390952664f5e238ef21d1ff6ad6ab360a7b"},{"file":"sc3d\/cactus_1.ktx","sha":"512c383ce048615f52c531a0c557b1e89efea0bd"},{"file":"sc3d\/cactus_1.pvr","sha":"ccb9922cd1ee47c1b6fd1530da2d475794321245"},{"file":"sc3d\/cactus_attack1.scw","sha":"8384535628fe742a9650badb459b4be5f532c7ec"},{"file":"sc3d\/cactus_d_01.ktx","sha":"16a93b3b5a69e40616f99a8e702fe6be70b94239"},{"file":"sc3d\/cactus_d_01.pvr","sha":"4be5211ea8bffe9e860d155322ab5bb816a922bc"},{"file":"sc3d\/cactus_geo.scw","sha":"9bf38301f9468e6d99bb84633d75bc75aceef32f"},{"file":"sc3d\/cactus_idle1.scw","sha":"7713c89af8282b0ac8456c587614fb0c669627e4"},{"file":"sc3d\/cactus_lose1.scw","sha":"73884e5ddee21d7b8cf583378178b168f97e5e4a"},{"file":"sc3d\/cactus_loseloop1.scw","sha":"dd93c8069c5e4f41ed55334c77de44b5b11f37fc"},{"file":"sc3d\/cactus_recoil1.scw","sha":"af1e88ec1efb7068c43da1898117f8f509abe036"},{"file":"sc3d\/cactus_ultirecoil1.scw","sha":"3833aebc1123372e25e288559658fab4d04ccb73"},{"file":"sc3d\/cactus_walk1.scw","sha":"eb08d047397d0e294342c8225d92835c1bfea079"},{"file":"sc3d\/cactus_win1.scw","sha":"bd7f5b8c31ca71f50779ad2e98593e8e32a73326"},{"file":"sc3d\/cactus_winloop1.scw","sha":"aa8f8c6da7bafc2dce42e8117705791e61ab9a37"},{"file":"sc3d\/candles_1.scw","sha":"8d5a822b607de5cdb9c220f4b39d58a1dc108310"},{"file":"sc3d\/candy_cane_small.scw","sha":"19a538780e295ec154436e57703f5ae6e4880ce7"},{"file":"sc3d\/cannon_balls.scw","sha":"4a537bc24c25cc7d3864b2abd498c9fbf216f756"},{"file":"sc3d\/car_tires.scw","sha":"39b7275b8e0ac302d9ccb46e1e8b8869befb3094"},{"file":"sc3d\/cargo_block_1.scw","sha":"88a167378cb284c6c63d287c99c38f501a5d7079"},{"file":"sc3d\/carl_attack.scw","sha":"1026b03939b4e7e84676345b661f95f4710177f2"},{"file":"sc3d\/carl_base_cam.scw","sha":"c2ce40c449afa93f4a13e74982434dcb1338ca17"},{"file":"sc3d\/carl_geo.scw","sha":"c0ef67cba078776c654c91244bae996cd9eab380"},{"file":"sc3d\/carl_hogrider_attack.scw","sha":"0becad8f9ab73e33f7ef19178fab8415bf43b88e"},{"file":"sc3d\/carl_hogrider_cam.scw","sha":"6df1d4c13867479296b1c1fd9c23a800c9daf7f1"},{"file":"sc3d\/carl_hogrider_geo.scw","sha":"5a886eb799c052ce6599dab6b61ae40e4be264ee"},{"file":"sc3d\/carl_hogrider_idle.scw","sha":"4d1df63a15d26c9dd4d6b937d1ac20e4cfcdd416"},{"file":"sc3d\/carl_hogrider_lose.scw","sha":"6d819daf1e86f6fc716824c4bcd0ecedca8ec6e5"},{"file":"sc3d\/carl_hogrider_loseloop.scw","sha":"5ff347f2cbeb217571a6b5acb4133f5284c9d15b"},{"file":"sc3d\/carl_hogrider_super.scw","sha":"d09829753ee3a5b8414afd644764c7e0626b0a3f"},{"file":"sc3d\/carl_hogrider_tex.ktx","sha":"2956362eece9683000de61ea4b22c01bc32b61cb"},{"file":"sc3d\/carl_hogrider_tex.pvr","sha":"f6db213851ef528a34d2f496d75d0a2024ca40f6"},{"file":"sc3d\/carl_hogrider_walk.scw","sha":"11ad9c330e537be99aa05dd322a9ac0c9faa69a5"},{"file":"sc3d\/carl_hogrider_win.scw","sha":"a43ff5459c69e4e22e5d8bfca4d22b7d95658772"},{"file":"sc3d\/carl_hogrider_winloop.scw","sha":"e7cf6170a8aec8c7c32542f517ca0c6ddcd39f5e"},{"file":"sc3d\/carl_hotrod_attack.scw","sha":"396ba0a2f699591500bb5e495b866b28b265dfef"},{"file":"sc3d\/carl_hotrod_cam.scw","sha":"e1bb49b24583ffbc5c50cfe40d77b3ea673250b2"},{"file":"sc3d\/carl_hotrod_geo.scw","sha":"bd32f158196f41b489519d2429d2e804b607b6ce"},{"file":"sc3d\/carl_hotrod_idle.scw","sha":"69d182d8a9f3fa00981e6740f421980525fa393b"},{"file":"sc3d\/carl_hotrod_lose.scw","sha":"0d621a578e60cc6021aba066f104e10dc0d62608"},{"file":"sc3d\/carl_hotrod_loseloop.scw","sha":"2b00ff623b4b347058bb3a08073b5127a456dbfe"},{"file":"sc3d\/carl_hotrod_super.scw","sha":"beff0c17c1b84929b3c05602b95d9cc8d857421c"},{"file":"sc3d\/carl_hotrod_tex.ktx","sha":"01683578a347e94c12cc3732c90ed3f7b686b84e"},{"file":"sc3d\/carl_hotrod_tex.pvr","sha":"4a2331c9492a14fa4f3ae557fac42969cdd69dbe"},{"file":"sc3d\/carl_hotrod_walk.scw","sha":"632a0ab59421b93a3cfec2efa33f79fc7e0d502e"},{"file":"sc3d\/carl_hotrod_win.scw","sha":"e60a22322d9b29c4071d6c6d546f290fa6b2478d"},{"file":"sc3d\/carl_hotrod_winloop.scw","sha":"0b63241b1c138bad6edaf568df822002edf0f326"},{"file":"sc3d\/carl_idle.scw","sha":"5cd90c892b7007e7bac0655199e5103691b3092f"},{"file":"sc3d\/carl_leonard_cam.scw","sha":"ec0fe0683fefd5ebae409941405b71b0eb53d81c"},{"file":"sc3d\/carl_leonard_geo.scw","sha":"220c2c84a4112a6587a8190ec28ee36dce777087"},{"file":"sc3d\/carl_leonard_tex.ktx","sha":"676c11080e3e2f55f86a1f8e67754ec96b0e20c7"},{"file":"sc3d\/carl_leonard_tex.pvr","sha":"10ff0f1853e0a7856c83ace4753590c351f9562b"},{"file":"sc3d\/carl_lose.scw","sha":"32c99cd5acb01e7ee153960118ebda50a66fccbd"},{"file":"sc3d\/carl_loseloop.scw","sha":"c972eaed67c37bf136dbb43f5851c0327dd09ca9"},{"file":"sc3d\/carl_pirate_attack.scw","sha":"3ec3e30af2aab4551b4dcb3235bc8694c39ad7d0"},{"file":"sc3d\/carl_pirate_geo.scw","sha":"951a9f7d45497013c745b085dc1684dcf31b1861"},{"file":"sc3d\/carl_pirate_idle.scw","sha":"feb5581ffaf40d166c2bf9ca43adb2ba1b60961a"},{"file":"sc3d\/carl_pirate_lose.scw","sha":"7677274899a995b7081bab7b465933d28fce2489"},{"file":"sc3d\/carl_pirate_pushback.scw","sha":"b3f5ba627da3678f824f4a0d87ae99058c6a168d"},{"file":"sc3d\/carl_pirate_reload.scw","sha":"b63fa21b305de509b65f8051541c669e541fee33"},{"file":"sc3d\/carl_pirate_super.scw","sha":"c683e2dd93d3984c4aa5f009b944615a79793191"},{"file":"sc3d\/carl_pirate_tex.ktx","sha":"b325ee435863e87c9b46f6ac698d50ceb5e7298d"},{"file":"sc3d\/carl_pirate_tex.pvr","sha":"c10ef2591865d5ae352b88f39bd19b82cedf236a"},{"file":"sc3d\/carl_pirate_walk.scw","sha":"162ef7296f9ab467bcb5e4f6201db040f70fadc5"},{"file":"sc3d\/carl_pirate_win.scw","sha":"bd3d3a0e0bdcef02247875ccc8a99489fb9355cb"},{"file":"sc3d\/carl_super.scw","sha":"e5fd8e91879e178508439e31f2d1f14bb9dd732b"},{"file":"sc3d\/carl_tex.ktx","sha":"dc092b6cd840d8bcdbff809fa5b7703838d517fd"},{"file":"sc3d\/carl_tex.pvr","sha":"f4bc0695050e55869e0b4518c1492361c85a7d4a"},{"file":"sc3d\/carl_walk.scw","sha":"94caf3a8e14390fa9607c53488a85d2accedfa94"},{"file":"sc3d\/carl_win.scw","sha":"53f8c40af2fbfd8a4db56f21f74699b8e4fd3682"},{"file":"sc3d\/carl_winloop.scw","sha":"1d10660f72a743d77b4fe37b8d95a44671cd599c"},{"file":"sc3d\/character_materials.scw","sha":"badf4925d017692129cd5fcde5efd58e2a38f33c"},{"file":"sc3d\/colt_attack.scw","sha":"39ceed073810744aa0e3b14b32d23fc394e911e2"},{"file":"sc3d\/colt_base_cam.scw","sha":"853ab3a8f6f585f2febca5ef59c1e1198b3c3fce"},{"file":"sc3d\/colt_geo.scw","sha":"6fc7112de29e7eda527f2ad533e70a256c8d8532"},{"file":"sc3d\/colt_hanbok_geo.scw","sha":"070497213b289ec65d082273d29aa029e2089c15"},{"file":"sc3d\/colt_hanbok_tex.ktx","sha":"9016a7ce80a3154fd14b5b637a185b3bf8d93514"},{"file":"sc3d\/colt_hanbok_tex.pvr","sha":"8e609d230e0b4da5e540924b0044218a6ae09fa2"},{"file":"sc3d\/colt_idle.scw","sha":"caebc1113d20cc81092251b09963cf55fd47eb71"},{"file":"sc3d\/colt_loseloop.scw","sha":"178433ade69086636645becff326a32eb9cd922b"},{"file":"sc3d\/colt_outlaw_tex.ktx","sha":"b84f258bf814a9bd7009d55e1c12f64310149c34"},{"file":"sc3d\/colt_outlaw_tex.pvr","sha":"0fb94663343a807a4b3c03fece710167a929deba"},{"file":"sc3d\/colt_pirate_attack.scw","sha":"ca83ae57c1bd77dfe240029a67bc00a87f14326e"},{"file":"sc3d\/colt_pirate_geo.scw","sha":"642798411e6ca238e07587004b03d81886fc6a20"},{"file":"sc3d\/colt_pirate_idle.scw","sha":"a6485fdb1da84e375c0de2f64b49c580d612666d"},{"file":"sc3d\/colt_pirate_lose.scw","sha":"05e2b846b94043b8326b5961d147febc12f5780e"},{"file":"sc3d\/colt_pirate_pushback.scw","sha":"8351c699c228c3fa61208747139b6c73a7e2a2de"},{"file":"sc3d\/colt_pirate_recoil1.scw","sha":"7c8ce5352fd19e222e67aa7e0d1c12c6dcd3a01b"},{"file":"sc3d\/colt_pirate_recoil2.scw","sha":"a90ff2961edbabffceed200d9678549b4a0479bc"},{"file":"sc3d\/colt_pirate_tex.ktx","sha":"1672a462872f1158138f3e61964c69b8cb2e6b15"},{"file":"sc3d\/colt_pirate_tex.pvr","sha":"cb7345a33b004f8cd74aff92720289eeda55124c"},{"file":"sc3d\/colt_pirate_walk.scw","sha":"cdd68b2fcf446c672457f034b98fe0ff35b05fe0"},{"file":"sc3d\/colt_pirate_win.scw","sha":"e4effa282b39a4ecf43a84fd5687526ec10642cc"},{"file":"sc3d\/colt_pushback.scw","sha":"90930d973f4596884a3dba10a45202e15ad91683"},{"file":"sc3d\/colt_recoil1.scw","sha":"d10d7c71d1cd079df9931c887b27ee7bbe7f5ff0"},{"file":"sc3d\/colt_recoil2.scw","sha":"33e977319ba0dbe4d3e02a1f0b0ce08e27c182f9"},{"file":"sc3d\/colt_rockstar_geo.scw","sha":"af4fcc393b56e2e1bd3d04a9b0c7c41b5e353607"},{"file":"sc3d\/colt_rockstar_tex.ktx","sha":"8d7eebccc77581ce3ce5ac2442dc685dada4c3e7"},{"file":"sc3d\/colt_rockstar_tex.pvr","sha":"62b531b4defd5756fe5be03029558ac95fba94b7"},{"file":"sc3d\/colt_tex.ktx","sha":"e0314427c9021cb7db2b564b69c03eb2ddbfd6f4"},{"file":"sc3d\/colt_tex.pvr","sha":"0e923d632c9b369bf6d32f9968ee85d15b1104e0"},{"file":"sc3d\/colt_walk.scw","sha":"1d0934a72dc2f1a00dc86b59119ce88c3fea51e5"},{"file":"sc3d\/colt_win.scw","sha":"3e954c96d8e7c5bfadbbf74dfb04f2c3a384089d"},{"file":"sc3d\/concrete_block.scw","sha":"041310f4c2c5cfbf2388ee0b68f2a251296cfb2f"},{"file":"sc3d\/construction_sign.scw","sha":"022fbfd024397ea02dce789cad6d8f147ab524b9"},{"file":"sc3d\/crate1.scw","sha":"b7f1707f9c763381b71043573c4deec2b4d92456"},{"file":"sc3d\/crate2.scw","sha":"24c6eb9ca10cbcb173db05420e81adb07e865bd6"},{"file":"sc3d\/crate_1.ktx","sha":"669d154d0eb5a834de8f107f3e1eb9498a157668"},{"file":"sc3d\/crate_1.pvr","sha":"7aa0ba4cf2f8940cbe157db1759a4fca1bfa37f4"},{"file":"sc3d\/crate_2.ktx","sha":"65805c0508875205d8a21dbba4eeaaaced673360"},{"file":"sc3d\/crate_2.pvr","sha":"fd1fa93df3308b12d6bfc8d45149e04130ed6720"},{"file":"sc3d\/crate_mortuary.scw","sha":"fb54dc7cc77fc8d826a2ec075b4f86cdf328aa14"},{"file":"sc3d\/crate_powerup.ktx","sha":"c3eb62926255e1f94d8f62a28aa26b87a4350ac6"},{"file":"sc3d\/crate_powerup.pvr","sha":"557be2ce492fe39cb85f7576089eb3cbed1c253b"},{"file":"sc3d\/crate_powerup.scw","sha":"dda202230cb6f9e549e172e4af6f94c4602ef3ca"},{"file":"sc3d\/crate_powerup_moon_festival.ktx","sha":"176e4235ab2f52dc6207ec9d31587a90bb851802"},{"file":"sc3d\/crate_powerup_moon_festival.pvr","sha":"3d1966f3e157b1d17ef8acd376156d9ceab2af6b"},{"file":"sc3d\/crate_powerup_moon_festival.scw","sha":"104272bb54d621ee854f4a8d8515b168414bae30"},{"file":"sc3d\/crate_powerup_night.scw","sha":"16f0afc151179235ac0e7a1031b4b9101bf6d7aa"},{"file":"sc3d\/crate_tnt.scw","sha":"0d5d6f740064e44644d9621d201de6cf2dff2806"},{"file":"sc3d\/crate_xmas.ktx","sha":"610f0f5d5651f0e0ae121ddce639d5385fd9c29d"},{"file":"sc3d\/crate_xmas.pvr","sha":"9f4c61aab589accd6d47f430253c74da2f492934"},{"file":"sc3d\/crate_xmas.scw","sha":"bd8921c93b37c915d7d17fdeeb2cb419a7745104"},{"file":"sc3d\/crow_attack1.scw","sha":"a421f294d4e60cc16583beec3ba1f55cde8e70ae"},{"file":"sc3d\/crow_attack2.scw","sha":"a5e2c610fae9b470fc15f8b28a2d41106a6f5d2d"},{"file":"sc3d\/crow_base_cam.scw","sha":"29eaca7696c8e5eb5ddbe220f8cd712860e65dfe"},{"file":"sc3d\/crow_d_01.ktx","sha":"2daaf3c9d6eb4ea018f27478571c16861bc0499d"},{"file":"sc3d\/crow_d_01.pvr","sha":"e7b36291f8227c0a61957e19f0b30d06a9798936"},{"file":"sc3d\/crow_geo.scw","sha":"9a8d61622d97f6656ebfca1200fe72c82c7f9169"},{"file":"sc3d\/crow_idle1.scw","sha":"2107e57833105640292150dbc1562ce22b46da37"},{"file":"sc3d\/crow_lose1.scw","sha":"a8fe727fe3f378fcb6c14fc55107cfef9d836f99"},{"file":"sc3d\/crow_loseloop1.scw","sha":"5d590be6ee60d323f1937e5e1963b80a1c6a13a4"},{"file":"sc3d\/crow_mecha_attack.scw","sha":"8f5370f1cc8e0012ffaa73ea71f1fc3de52624bb"},{"file":"sc3d\/crow_mecha_cam.scw","sha":"9521c4e6bd035e3b42a984ee9a2de6f215bc8424"},{"file":"sc3d\/crow_mecha_geo.scw","sha":"383e515739ddb52dd9b41c5b8714b2ffd4c4e371"},{"file":"sc3d\/crow_mecha_idle.scw","sha":"6e405797664d6662b19ca0f3a0056266583c8f03"},{"file":"sc3d\/crow_mecha_lose.scw","sha":"be540e6ce0b73a99d0f662e8289846a38609a71b"},{"file":"sc3d\/crow_mecha_pushback.scw","sha":"edb6d6dc4dab5d4f30c2f19ae24bab2bdd7a7fa3"},{"file":"sc3d\/crow_mecha_run.scw","sha":"96b11e60301898bed22b22f90f19b8cf619ba68f"},{"file":"sc3d\/crow_mecha_tex.png","sha":"ffb5b6d5b60c3ecd9d4bf39b02d9183caed8c68a"},{"file":"sc3d\/crow_mecha_ult.scw","sha":"6bf5f438760b80eafe25617b075783e87f40e29a"},{"file":"sc3d\/crow_mecha_win.scw","sha":"0d2c4598e07145f9ceaf066ef5f5be0e71b04832"},{"file":"sc3d\/crow_mechagold_tex.png","sha":"dbe50001ede10e76da16c0510a14049e554c0638"},{"file":"sc3d\/crow_pheonix_attack.scw","sha":"f5b1014a23f38c6345bb183b4004e4188e7e04b5"},{"file":"sc3d\/crow_pheonix_cam.scw","sha":"4b1ab8d2c46b98213ec455c6a0dfc702c9e2e397"},{"file":"sc3d\/crow_pheonix_geo.scw","sha":"c6795504024220ed44cdb24433780101ed5e71d2"},{"file":"sc3d\/crow_pheonix_idle.scw","sha":"3e7d38f31c0d13aa4bfe62fe43efd4fdf1130dff"},{"file":"sc3d\/crow_pheonix_lose.scw","sha":"4f0805b411ac1c72592f3ea6106b5efdc1ef927d"},{"file":"sc3d\/crow_pheonix_tex.ktx","sha":"5ecbd55be9b09d9e96c3d8bfe03b4be33e8b5565"},{"file":"sc3d\/crow_pheonix_tex.pvr","sha":"55c603a4b30e1a3313f865848dfcec8f7fe58cc6"},{"file":"sc3d\/crow_pheonix_ulti.scw","sha":"41b6e6a503d30b1d35723bed1c3634ab007cdee8"},{"file":"sc3d\/crow_pheonix_walk.scw","sha":"c1b447bde4809853bb108f366c0cb78f6e55c90e"},{"file":"sc3d\/crow_pheonix_win.scw","sha":"43e3c5e90e1b6438df3e8e876b8449befce8e588"},{"file":"sc3d\/crow_recoil1.scw","sha":"16c947bb6b9383014c1dd0c2336ead3f55833788"},{"file":"sc3d\/crow_walk1.scw","sha":"335e0319a734cd20304e4a73a6f9c71698b79cd6"},{"file":"sc3d\/crow_win1.scw","sha":"17ebd841952825a6ff53d130aa9b1114c054595c"},{"file":"sc3d\/crow_winloop1.scw","sha":"c2501741389fbf4949d2f980ce36afe724a4b80d"},{"file":"sc3d\/crowwhite_d_01.ktx","sha":"b4b5ba75d034c612481b67b3483e35a7658f52ca"},{"file":"sc3d\/crowwhite_d_01.pvr","sha":"75129ba47f2fbf938376659ce1c0cee06fdc1847"},{"file":"sc3d\/crystal1.scw","sha":"3426bafccf185db67ceb293594fb71b1b9b67c9b"},{"file":"sc3d\/crystal1_xmas.scw","sha":"ea1344b46e4379665a3d8ffb1399775df6984840"},{"file":"sc3d\/crystal_1.ktx","sha":"ecbe1c9252dd4855294583aa231d800c4545f82a"},{"file":"sc3d\/crystal_1.pvr","sha":"b07d5b20a74697fd5c4e599ca8fb1f7bb7aef302"},{"file":"sc3d\/darryl_anim_idle.scw","sha":"68b477f734a75a3e2e92b935f225050af1af3fd3"},{"file":"sc3d\/darryl_attack.scw","sha":"1c5af41c2076d1a793d1ab85d0b078db72c6f194"},{"file":"sc3d\/darryl_base_cam.scw","sha":"6fa73749c659ed41abb77af3fa12dd09014caada"},{"file":"sc3d\/darryl_cny_attack.scw","sha":"b8ff4d642f61222b56b13b0bcbbab90a123110f2"},{"file":"sc3d\/darryl_cny_geo.scw","sha":"02dcc8f20c73f83e8869b2a61f6a8e41bd5b94e0"},{"file":"sc3d\/darryl_cny_idle.scw","sha":"9dff13551b155f489b942a7dee97363d7cb0687a"},{"file":"sc3d\/darryl_cny_lose.scw","sha":"ebb39d7555e1e23986cba5a191d05c931fb6e8ba"},{"file":"sc3d\/darryl_cny_pushback.scw","sha":"bae108cded4f0b95ebc926c26a84b0539f31aa2c"},{"file":"sc3d\/darryl_cny_recoil1.scw","sha":"c5816613dbb4cc7514ba10ef3051f681f885a809"},{"file":"sc3d\/darryl_cny_recoil2.scw","sha":"7ecef6ebe4339544e179d1c446b33b30d8dd238f"},{"file":"sc3d\/darryl_cny_super.scw","sha":"db71964d15e663496eed55a167d76b5621fe50ef"},{"file":"sc3d\/darryl_cny_tex.ktx","sha":"18071c7398e5eb16b7d17fc3b0746cf8b2f71c27"},{"file":"sc3d\/darryl_cny_tex.pvr","sha":"e1083907ae4d47d132373e4478b84d8cb1491794"},{"file":"sc3d\/darryl_cny_walk.scw","sha":"6342d96073d69bd8038385ef87f1a08ba0ba4253"},{"file":"sc3d\/darryl_cny_win.scw","sha":"8fc29a12a73cbd5ebabe1e1a6354e349eecde9d0"},{"file":"sc3d\/darryl_cny_winloop.scw","sha":"de5b3c47bf8125eb241d94ada91b919efeaae10c"},{"file":"sc3d\/darryl_fb_attack.scw","sha":"50aee4c116f839147d0251c759c6ffec7f539269"},{"file":"sc3d\/darryl_fb_geo.scw","sha":"0b435d3b79a0745702100053988e33cadd382576"},{"file":"sc3d\/darryl_fb_idle.scw","sha":"db63966488a0f134ff3d7b6ede4098213b60653a"},{"file":"sc3d\/darryl_fb_lose.scw","sha":"25beaaa5e6d49199c889cae95bde7d42e3a9bdfc"},{"file":"sc3d\/darryl_fb_recoil_01.scw","sha":"083b6fac70cb29e1aa241f900b2034b9a742935d"},{"file":"sc3d\/darryl_fb_recoil_02.scw","sha":"0c12be993443b34227f60eb911e5875cb574fafb"},{"file":"sc3d\/darryl_fb_super.scw","sha":"2c9b18f07c99e3564a9447382f0cb9ce57414732"},{"file":"sc3d\/darryl_fb_tex.ktx","sha":"43b388d2e05e0171f45e13a423d804e1cd90489b"},{"file":"sc3d\/darryl_fb_tex.pvr","sha":"6f1884c950c8cce50c1758a9cb034f83a40f28c9"},{"file":"sc3d\/darryl_fb_walk.scw","sha":"18a0958d06202f07e62910d65c4c38dfa743f322"},{"file":"sc3d\/darryl_fb_win.scw","sha":"4ab46d9be2906cf4dba0688a7bd830c38fc6f2c4"},{"file":"sc3d\/darryl_geo.scw","sha":"7bb6fbfa2da31411816a5c3847a4f39ed37aadd4"},{"file":"sc3d\/darryl_idle.scw","sha":"64d28119346a0e160a5650abbcbb54e875204adc"},{"file":"sc3d\/darryl_lose.scw","sha":"d520ccb4c0231d016e14a1c09ee08be8e84f786c"},{"file":"sc3d\/darryl_pushback.scw","sha":"2bb5551a4e4c5dfe42f063c2fd427839ed5319e3"},{"file":"sc3d\/darryl_recoil_01.scw","sha":"3e1ded924158388714c9762dc1e235f3bbcbbb23"},{"file":"sc3d\/darryl_recoil_02.scw","sha":"69bbb53f74c187d1b306c9fbec983c1e564ea76b"},{"file":"sc3d\/darryl_ship_loop.scw","sha":"67545c780596530de37aaa15198d43e670b1301d"},{"file":"sc3d\/darryl_super.scw","sha":"2560182644830b99ce0b1ec1f6734ecd5f964053"},{"file":"sc3d\/darryl_tex.ktx","sha":"bce96dbd6ac98755af2eaa36ede03882f7ca36de"},{"file":"sc3d\/darryl_tex.pvr","sha":"bab0ea6f3d446aeae514af9246f9d57abfb7ab27"},{"file":"sc3d\/darryl_walk.scw","sha":"fd367f3bae14a38c46f824dd9c1219a175430951"},{"file":"sc3d\/darryl_win.scw","sha":"d003ffc8f39c3e24fc3495ea0d299e23fa9c381a"},{"file":"sc3d\/darryl_winloop.scw","sha":"fa5c79de842394ced5886596114346f9c141112e"},{"file":"sc3d\/diffuse_lightmap.png","sha":"f7e90742f72b37453ae7b5ba8f62000ba8c9102d"},{"file":"sc3d\/diffuse_lightmap_night.png","sha":"86269386c66a76a09dfb9d9c450e8a9c0fa5c1cd"},{"file":"sc3d\/dogturret.ktx","sha":"ec270d1ab7b0c021220a7d61c48a4c32cc935561"},{"file":"sc3d\/dogturret.pvr","sha":"7cbbc383fe7545237ec74c894e98f10e7fa9b33d"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.ktx","sha":"795e7ec3e5c36ecfd85583edc9ed5fad957ec20c"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.pvr","sha":"c55bcbedd6d87b9bfde016c98b708d95a6e63d92"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.scw","sha":"bc34f99a90994577da85b2ee261883f556e47388"},{"file":"sc3d\/dynamike_003_atk_projectile_red.ktx","sha":"6812ac14cd0fff19ba7a3f7ba440bfa5429e702a"},{"file":"sc3d\/dynamike_003_atk_projectile_red.pvr","sha":"ec517b115db5b1763d7dae5edeab2d5663776f79"},{"file":"sc3d\/dynamike_003_atk_projectile_red.scw","sha":"7201d05fc556f36194a7ed16e08a28332074864e"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.ktx","sha":"105a46d47959bb495a2e3566a3e3ab30c218095a"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.pvr","sha":"cb7d6975ae20a766e4477a187d40ea99d0386020"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.scw","sha":"4758297dec74630d7119c88e4fcd59b811202a27"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.ktx","sha":"2d10dce57baf592ad85e66b43537990b280a4b1b"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.pvr","sha":"8d1f42b56a6c6d06328b8339430776d0d57fd8d2"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.scw","sha":"851ade4ff46f2baab8fef59a6f21a301b9cb0c74"},{"file":"sc3d\/dynamike_attack.scw","sha":"a57f5b6f7b6e9edac0de67d0931bed12b53d2f1b"},{"file":"sc3d\/dynamike_base_cam.scw","sha":"62ef3e1a11b4268d14ac6d2bdf54cbf36906aa4a"},{"file":"sc3d\/dynamike_blue_tex.ktx","sha":"c988e3757f03c1e66a8938c0764654a26b323d8d"},{"file":"sc3d\/dynamike_blue_tex.pvr","sha":"8a5566756ee932ee18ce5860637d958ab8f41f52"},{"file":"sc3d\/dynamike_chef_blue_tex.ktx","sha":"c88b7c3194b1cf37e4ecbeeb53e0fa368481bbe5"},{"file":"sc3d\/dynamike_chef_blue_tex.pvr","sha":"8ddd5d95c57e114a3aabfd32697d79eeb0ee3ba1"},{"file":"sc3d\/dynamike_chef_geo.scw","sha":"c6a4936be652b24efbd5d4c9f8b81eefc81ab7d6"},{"file":"sc3d\/dynamike_chef_tex.ktx","sha":"f20d12a5698a93eb6946effcb5fbf778a53b0667"},{"file":"sc3d\/dynamike_chef_tex.pvr","sha":"3c52a37046b138a2a06e6bc5f7c17788747aeabe"},{"file":"sc3d\/dynamike_coach_attack.scw","sha":"b0432786e3e18d6ce41501d6a09ad099de6d3a2b"},{"file":"sc3d\/dynamike_coach_geo.scw","sha":"053e37bf82cfc28a03cca8088bd2a965b66c439a"},{"file":"sc3d\/dynamike_coach_idle.scw","sha":"20f10ad0afb08457b786347abaf25d093fe72756"},{"file":"sc3d\/dynamike_coach_lose.scw","sha":"6be0c4085db9da026f7aaaf7b2c8270ae24f6dad"},{"file":"sc3d\/dynamike_coach_pushback.scw","sha":"f5f6406e6802f61db101af7bbec2618f73af8660"},{"file":"sc3d\/dynamike_coach_super.scw","sha":"12f4f83a46660da0e4256cf9d5facdf42027c09b"},{"file":"sc3d\/dynamike_coach_tex.ktx","sha":"048f486e93f5d511853226f3e730612ae9560ea4"},{"file":"sc3d\/dynamike_coach_tex.pvr","sha":"8c297ed3df4bfb58cb10998cff02e188c17c9955"},{"file":"sc3d\/dynamike_coach_walk.scw","sha":"1ba493da37b8de05a0114a064afbdfd17fcadfcc"},{"file":"sc3d\/dynamike_coach_win.scw","sha":"6b776c4fc8619dfecd190d5420643acda20647f3"},{"file":"sc3d\/dynamike_geo.scw","sha":"bc46d1a3fcbca76da297ca54c08fe1bfaba4c03d"},{"file":"sc3d\/dynamike_idle.scw","sha":"fa733987c47a9b1a40cf4c45221ec7c71383ed43"},{"file":"sc3d\/dynamike_lose.scw","sha":"291705fa1299e488560477d8733584d3cfcee876"},{"file":"sc3d\/dynamike_mecha_attack.scw","sha":"0575c00776b341879771a2747e908e4a7584abeb"},{"file":"sc3d\/dynamike_mecha_geo.scw","sha":"de3b227a5db491ecad82141d25be6ea40b016b1f"},{"file":"sc3d\/dynamike_mecha_idle.scw","sha":"ad2c979446e4820bb531f3a27bdf575b8583d799"},{"file":"sc3d\/dynamike_mecha_lose.scw","sha":"64f6cc75faed9a79143885afe14526bc1d119bfa"},{"file":"sc3d\/dynamike_mecha_tex.ktx","sha":"227c724bc8e6b0d5a1c94f68c70c4d9818d50fab"},{"file":"sc3d\/dynamike_mecha_tex.pvr","sha":"554364fd66e0a0cf48c2a9f27969656d4a9ca414"},{"file":"sc3d\/dynamike_mecha_ult.scw","sha":"74e4c218399eaf94102cb119e3652a7aa8d9b0f3"},{"file":"sc3d\/dynamike_mecha_walk.scw","sha":"b03bf1dabdcce30d5046cab68ea1983f0bb4eef5"},{"file":"sc3d\/dynamike_mecha_win.scw","sha":"749f6c340f8d55d31cdb02159ccfa54969192acb"},{"file":"sc3d\/dynamike_pushback.scw","sha":"7b11c4fe08291e1ad8ec818131bb06ffd1eb9762"},{"file":"sc3d\/dynamike_santa_blue_tex.ktx","sha":"7e9dce6d94805b8f3fe5398e15a18ce09a244567"},{"file":"sc3d\/dynamike_santa_blue_tex.pvr","sha":"03ef672e8c138d05b945ed098b62c3fb8dec2bd7"},{"file":"sc3d\/dynamike_santa_geo.scw","sha":"2886aab7a9145a4873513a9e3c5fdd264ff6fdd0"},{"file":"sc3d\/dynamike_santa_rope_geo.scw","sha":"6cd87b2ff87140b02904a4303e58ddccf37bcb03"},{"file":"sc3d\/dynamike_santa_rope_loop.scw","sha":"3440cafb9cc40c3576bcce0b4f9f680855d6236e"},{"file":"sc3d\/dynamike_santa_tex.ktx","sha":"7e9dce6d94805b8f3fe5398e15a18ce09a244567"},{"file":"sc3d\/dynamike_santa_tex.pvr","sha":"03ef672e8c138d05b945ed098b62c3fb8dec2bd7"},{"file":"sc3d\/dynamike_super.scw","sha":"ac2357ccf60b432de1ab582645e744d73c152e2a"},{"file":"sc3d\/dynamike_tex.ktx","sha":"d75aeddecc83d3c71f0a5b253241f2591cae5489"},{"file":"sc3d\/dynamike_tex.pvr","sha":"923b278a06c9a1becdfe62520da361ce837812fc"},{"file":"sc3d\/dynamike_walk.scw","sha":"3f3c77826faaaad2a50ec4b2850f469e70c9e2ec"},{"file":"sc3d\/dynamike_win.scw","sha":"39c9e53aa453dc87a9aed3f908cd6b044c50e660"},{"file":"sc3d\/emz_attack.scw","sha":"b6c7fff423dd23d2d97f6a49b832153c5a6c44cb"},{"file":"sc3d\/emz_base_cam.scw","sha":"3ffed6122bd2e63d6129ae09c21b27ede1529b17"},{"file":"sc3d\/emz_college_geo.scw","sha":"9f64106dab40871ac823d4d30874c616ebae1bbd"},{"file":"sc3d\/emz_college_tex.ktx","sha":"28980759960eed83b5cd13341540728b7d9da755"},{"file":"sc3d\/emz_college_tex.pvr","sha":"d353b3c889c3a822b445dd79ee6b8c2227dfe4e8"},{"file":"sc3d\/emz_geo.scw","sha":"52ba7da0ce1959fa4483f27603d40750d7eb676e"},{"file":"sc3d\/emz_idle.scw","sha":"9e1b7553acbbacbb8c651b466fa78aa00dbb65be"},{"file":"sc3d\/emz_lose.scw","sha":"32255bf86d2c72fdd6c7eded25eada4300fd60c2"},{"file":"sc3d\/emz_pushback.scw","sha":"e20b978da5a87f75ae2e7bd300de2b901f0a7721"},{"file":"sc3d\/emz_reload.scw","sha":"600be9bfb641698f3ec1786e89d533ee708ecdcd"},{"file":"sc3d\/emz_tex.ktx","sha":"5653329a6a8005a0884e88df9127c363e69e6d23"},{"file":"sc3d\/emz_tex.pvr","sha":"a23ea70864543ed39c3fd623aa3df3f959ede7dd"},{"file":"sc3d\/emz_walk.scw","sha":"6254f0d78180f603fd44a5442164596e2a6fbf1d"},{"file":"sc3d\/emz_win.scw","sha":"9284a898929842ee24e107586fe82380883e491a"},{"file":"sc3d\/fastmeleebot_geo.scw","sha":"aeb4a581c057a80babaa411cfa4cfcc7c32ca306"},{"file":"sc3d\/fastmeleebot_idle.scw","sha":"8c9bd29493f4a5fbc6a92f5ddda9d268de9f7ec5"},{"file":"sc3d\/fastmeleebot_recoil.scw","sha":"7b25a6670cdb844296ffed57c52eee0fbde4e7a5"},{"file":"sc3d\/fastmeleebot_tex.ktx","sha":"d4b8b70f1dd0ab7e04cae83a4f2d9f364e6fb5f9"},{"file":"sc3d\/fastmeleebot_tex.pvr","sha":"ee7d71f141139850da9c896ec812e10b1c7b10ea"},{"file":"sc3d\/fastmeleebot_walk.scw","sha":"aab5120927d6c9236754d2dae2a1c89b2b2a0da6"},{"file":"sc3d\/fence_arcade.scw","sha":"3337e86f1a36318b9812fbb5acf31e848a0a80da"},{"file":"sc3d\/flame_1.ktx","sha":"1e9972da27c435b6d8b608397adde814a8f6f8dc"},{"file":"sc3d\/flame_1.pvr","sha":"2c4b444e1ddb610e3821bf6571884437724d65e5"},{"file":"sc3d\/frank_attack.scw","sha":"c905574b08e6efe5e651116111b91ffec4559568"},{"file":"sc3d\/frank_base_cam.scw","sha":"8e28dcf4a6d589af37ba6964d940791c40708c7e"},{"file":"sc3d\/frank_caveman_01.ktx","sha":"c02b75870edc0ae3be56f66b967b756ccd525833"},{"file":"sc3d\/frank_caveman_01.pvr","sha":"821f65a4c782b6b94913ef77c49e91b5ed784324"},{"file":"sc3d\/frank_caveman_geo.scw","sha":"4a5bd296256a0dca2ca7d1ac628ba2c0688b7781"},{"file":"sc3d\/frank_dj_geo.scw","sha":"afb88cdbc18a9da6e7ef709759a1c12811fa9572"},{"file":"sc3d\/frank_dj_tex.ktx","sha":"b1f674bbdce8384344174bb6003246ee1755c89a"},{"file":"sc3d\/frank_dj_tex.pvr","sha":"bf63d4cf39ad890e7df8fb9d76a13c0900597134"},{"file":"sc3d\/frank_geo.scw","sha":"335c35bd48c333523947e190665b973938cfd201"},{"file":"sc3d\/frank_idle.scw","sha":"88b9de6312b5ab1f69506aa63033199de3cc4d79"},{"file":"sc3d\/frank_lose.scw","sha":"d468bb203f3d7071302f0a7de4973be6dc59c870"},{"file":"sc3d\/frank_mortuary_env_loop.scw","sha":"c87706136e2cc9d2e180854cadd189ed5fb60dfa"},{"file":"sc3d\/frank_pushback.scw","sha":"9a39791d70fce48de1532d904cd9b8558476af03"},{"file":"sc3d\/frank_tex.ktx","sha":"60afa1e486e49784501b4cda1f16e72f1f4d4b31"},{"file":"sc3d\/frank_tex.pvr","sha":"1ea1ba69b3d8acc9a5eb548a3e1dbcd1ecaeabcd"},{"file":"sc3d\/frank_ulti.scw","sha":"22b5b921d0299def254f988c2a22ccbadaa29cde"},{"file":"sc3d\/frank_walk.scw","sha":"909a817024aeb0df6ba5b883b44ac7f7d1bfdba9"},{"file":"sc3d\/frank_win.scw","sha":"5a1fa2daa6649fb83c6d2a76f534f1c14fbdd4b3"},{"file":"sc3d\/gene_anim_attack.scw","sha":"c84d65260ebbd796f847b2134b9926dcf03fff3f"},{"file":"sc3d\/gene_anim_idle.scw","sha":"35c88066f552a2bd0d0aac306a15820bb50a47a9"},{"file":"sc3d\/gene_anim_lose.scw","sha":"31ea37c0c566e6df629295c121666fdb534d3d1b"},{"file":"sc3d\/gene_anim_loseloop.scw","sha":"394a7775ff1a4b93b0f4a0fd626e4289566e13d4"},{"file":"sc3d\/gene_anim_reload.scw","sha":"4059dd77507e49bf80ccb03d346322969b802961"},{"file":"sc3d\/gene_anim_super.scw","sha":"d1883d7495b690c30f6dd18fe858798c69f7fa22"},{"file":"sc3d\/gene_anim_super2.scw","sha":"979e509c434d999a912157cfe1b13c55a649de34"},{"file":"sc3d\/gene_anim_walk.scw","sha":"c1ddf4169ecfd7b87a6fcabfc8264afa10c6c7f5"},{"file":"sc3d\/gene_anim_win.scw","sha":"f3ae36798db05375afe3b5a851f5c64c4914a4fd"},{"file":"sc3d\/gene_base_cam.scw","sha":"048c935a6adad8d14446b94f01e1ba5846f1a9f9"},{"file":"sc3d\/gene_geo.scw","sha":"04013ec26421176fe04f0f2554ab393c54546f65"},{"file":"sc3d\/gene_pirate_anim_attack.scw","sha":"29e60518a9ada2cfe7cd14dbd0d4188beeb063ca"},{"file":"sc3d\/gene_pirate_anim_idle.scw","sha":"10fb119cd1001119f051f42a15be175e824507ff"},{"file":"sc3d\/gene_pirate_anim_lose.scw","sha":"ba1f4386af5322c364e93c20a3a9945aa6f3beae"},{"file":"sc3d\/gene_pirate_anim_reload.scw","sha":"391f23d3573dab69cab5a3f5fa54d8d62357339a"},{"file":"sc3d\/gene_pirate_anim_super.scw","sha":"eb929a9df777ba13b0fea3e23e70734e940318db"},{"file":"sc3d\/gene_pirate_anim_walk.scw","sha":"9dc6b8e6e109b7ac6a1197863c026503207ff201"},{"file":"sc3d\/gene_pirate_anim_win.scw","sha":"dc3bc70b683149d1898a22040e1ace5a7ab04fb2"},{"file":"sc3d\/gene_pirate_geo.scw","sha":"76e7c3f2eaf44902143fe6da2efc0e23b714981a"},{"file":"sc3d\/gene_pirate_tex.ktx","sha":"5064564b4c03d17e83c7f63855a78a05f272b2c7"},{"file":"sc3d\/gene_pirate_tex.pvr","sha":"530dc5bfedb0c3fa8fa340875326a6b174c8a214"},{"file":"sc3d\/gene_projectile_closed_blue.scw","sha":"d3ea5a1f84e4d9e925d6090f980b0ab53c1d60f0"},{"file":"sc3d\/gene_projectile_closed_red.scw","sha":"235a9018dc997f53689c0d55448983214552232a"},{"file":"sc3d\/gene_projectile_open_blue.scw","sha":"868565826ba45be1ea894be9539acf9d5b61b295"},{"file":"sc3d\/gene_projectile_open_red.scw","sha":"79eaabc3f4faece6693b5e8d9e8e0c124b7dbba3"},{"file":"sc3d\/gene_projectile_tex_alpha.ktx","sha":"eea8a9572c0f3416c2ff33c9f9ee0bc18b4177bf"},{"file":"sc3d\/gene_projectile_tex_alpha.pvr","sha":"5ddd89fb495f4befee7b6ffd2c3002c873b53a62"},{"file":"sc3d\/gene_projectile_tex_blue.ktx","sha":"ff78db3c17155599ae0f342f4d4922a2840fd534"},{"file":"sc3d\/gene_projectile_tex_blue.pvr","sha":"62a4ed593befed8d416c8d877cdcabfe11ac5cd2"},{"file":"sc3d\/gene_projectile_tex_red.ktx","sha":"a600271d59345528c494d52535356ff9c0f85868"},{"file":"sc3d\/gene_projectile_tex_red.pvr","sha":"d8bbb521d4aa95798d08aeea6bf30745fbe3abf8"},{"file":"sc3d\/gene_tex.ktx","sha":"5ee6e3793dbc20d0896047c58a5e88e7eac6e47b"},{"file":"sc3d\/gene_tex.pvr","sha":"9e2e7b5bc04e0240b3c6c6dfdb8093bd727e601d"},{"file":"sc3d\/generic_tilable_1.ktx","sha":"da93465cbbb2ab2daf533e73dca97c895860fa08"},{"file":"sc3d\/generic_tilable_1.pvr","sha":"aae1cdfc8e7497d569472cc1a7c275c7b465b923"},{"file":"sc3d\/generic_wood.ktx","sha":"ff64cbf0618dace10a299b5b3a51452569a4df52"},{"file":"sc3d\/generic_wood.pvr","sha":"fef3408dffb626ffc5f7447cf6aead167fc90ffa"},{"file":"sc3d\/grass1.scw","sha":"d988bebb17cf019362de7ee409855e47aa80c4b4"},{"file":"sc3d\/grass2.scw","sha":"9825b71ba7e2e97ac7647fdd3f546f19c1eefdea"},{"file":"sc3d\/grass3.scw","sha":"de2c4f7b28810f4be89fdfea9bbabb98c2282282"},{"file":"sc3d\/grass4.scw","sha":"4fbc6e9185804e757228bfc1fa3680e8ca56456f"},{"file":"sc3d\/grass5.scw","sha":"a9af8a18cb8a6bcdab8263eadf88930e11ed5676"},{"file":"sc3d\/grass6.scw","sha":"9cf8210276b09aad6af6d6cc910ff4ee185f14bd"},{"file":"sc3d\/grass7.scw","sha":"4498801834d0bf80a86b9cf219d92827b1ec2daf"},{"file":"sc3d\/grass_1.ktx","sha":"88544580cac7afaf2819af1d05c351a5d57e3bbc"},{"file":"sc3d\/grass_1.pvr","sha":"1d664711afd077f610ec91980776cf077c44b42e"},{"file":"sc3d\/grass_2.ktx","sha":"6bd56e25539fca8c01fa0a41dd18a26349ab7461"},{"file":"sc3d\/grass_2.pvr","sha":"586451504dd6fff89460921de2f3d19b19baf35a"},{"file":"sc3d\/grass_3.ktx","sha":"52c894b9fcbcd5e4adbb9dad4a97f394854d13e2"},{"file":"sc3d\/grass_3.pvr","sha":"7ae812cec10e6182045a7a24dd63f7b554d4e82f"},{"file":"sc3d\/grass_4.ktx","sha":"f9abff73e708399889b05d7ca31310d28ee3a129"},{"file":"sc3d\/grass_4.pvr","sha":"16f2c369a93eeab16632d09a32fe84eb6d36b959"},{"file":"sc3d\/grass_5.ktx","sha":"cff410af90613fc63429dc2acb116cde417def6c"},{"file":"sc3d\/grass_5.pvr","sha":"30a59cb69924594697a7876cab2ca0ae12f92766"},{"file":"sc3d\/grass_6.ktx","sha":"6581186b05ffa757c89ef3a08aec61b85e8b1113"},{"file":"sc3d\/grass_6.pvr","sha":"8763990204fac14b9f6a2b643acf7640ca5dd81f"},{"file":"sc3d\/grass_7.ktx","sha":"0bd77b12c3f2401f658f2a6256b70061ada705e9"},{"file":"sc3d\/grass_7.pvr","sha":"a99238448585e0190107b50bc524eb66d1344351"},{"file":"sc3d\/grass_seaweed.ktx","sha":"4a3bd47c3c9021abfceec29e6e8da1b7d8aaa40d"},{"file":"sc3d\/grass_seaweed.pvr","sha":"86f9f1cac308af78e06d51217855a99aefc2ea9f"},{"file":"sc3d\/grass_seaweed.scw","sha":"c0694917ca78478286b0dbcaf9ce807a2287c40e"},{"file":"sc3d\/grass_town.ktx","sha":"6bd56e25539fca8c01fa0a41dd18a26349ab7461"},{"file":"sc3d\/grass_town.pvr","sha":"586451504dd6fff89460921de2f3d19b19baf35a"},{"file":"sc3d\/grass_town.scw","sha":"c1fe16026a75f7d2c82f7d226b619b2afaeda6aa"},{"file":"sc3d\/hair_diffuse_lightmap.png","sha":"cbb89a2dc5def2a9309c7ebe3a197675a809ce73"},{"file":"sc3d\/hair_specular_lightmap.png","sha":"9d095cb3b4fe42a82c85a40512f42c41b45fd647"},{"file":"sc3d\/healstation_geo.scw","sha":"ce548a7dfb3323a7b0d1862b77009f183f2feb7a"},{"file":"sc3d\/healstion_red_tex.ktx","sha":"8345059242c060011934e1bc124cb427056dba82"},{"file":"sc3d\/healstion_red_tex.pvr","sha":"010c6566a9627b17a10260446850845ea0abbca6"},{"file":"sc3d\/healstion_tex.ktx","sha":"a5e741cc7ccb263c13f15e5c3fb75f97f43d0e92"},{"file":"sc3d\/healstion_tex.pvr","sha":"7fbb1ae473538b522eaab2a6ba73e31e33378087"},{"file":"sc3d\/heist_safe.ktx","sha":"22a79d1242c17a02e6f7619283cd299999bc12be"},{"file":"sc3d\/heist_safe.pvr","sha":"04946f3f28a7241192d6a418e58a7db9215f886b"},{"file":"sc3d\/heist_safe.scw","sha":"019f118319dd7a2c297785455e4905ce9d540fa7"},{"file":"sc3d\/ice_cube1.scw","sha":"f6dd542a9f20c1e33192c3e1ba0a2191066aff12"},{"file":"sc3d\/ice_cube_1.ktx","sha":"c2019ac7bbc40f958b9432163d41ebb51501f43c"},{"file":"sc3d\/ice_cube_1.pvr","sha":"9c7c5d4e2f3e76d57613e044acd8d7d82d539502"},{"file":"sc3d\/indestructible_metal_1.ktx","sha":"06f657d9a634fec1d160e8ed486d4ed32d6f6264"},{"file":"sc3d\/indestructible_metal_1.pvr","sha":"7ca3994fb1d81b47f1bfe2fb4bfaf29284600ee1"},{"file":"sc3d\/indestructible_metal_1.scw","sha":"fe2df649521590483f6ff866480b2523169eb609"},{"file":"sc3d\/item_bolt.ktx","sha":"0a8501c744b396d14119e2b33f34975603ccffed"},{"file":"sc3d\/item_bolt.pvr","sha":"3dc60c03b6c8ea4eb470ce2f4e0fda2d7cf00fcf"},{"file":"sc3d\/item_bolt.scw","sha":"0e2dfcf5f4578aa374e078494ea090cce78ca597"},{"file":"sc3d\/item_bolt_crate.ktx","sha":"797106548474c18b20518b98b672490c2d6b69f7"},{"file":"sc3d\/item_bolt_crate.pvr","sha":"2ea9e788c037876c33722b0c4bf0a3cebb6647df"},{"file":"sc3d\/item_bolt_crate.scw","sha":"534f70ce13a5af1b3cf815044875ec24dfad8bc9"},{"file":"sc3d\/item_gem.scw","sha":"ca5e763d87d142db04c0de5aeb7476da937ac06f"},{"file":"sc3d\/item_power_up_bottle.ktx","sha":"c3bfdd0595728586603aa0ac1a4ac971975949c8"},{"file":"sc3d\/item_power_up_bottle.pvr","sha":"93283132c6c33552de504287da25c41a8659141a"},{"file":"sc3d\/item_power_up_bottle.scw","sha":"fdd5d4da05ab2e812b0bc9c8bcaae8be15b0f73d"},{"file":"sc3d\/item_present_blue.ktx","sha":"2becf61a18db014bfecd9c2569d50ed9d3fcf1d5"},{"file":"sc3d\/item_present_blue.pvr","sha":"f91ccc1ad1d0162373b3d6ea204bcf23395617db"},{"file":"sc3d\/item_present_red.ktx","sha":"a3d9deb23ef487158ef8f55a58a99ce0633b28a1"},{"file":"sc3d\/item_present_red.pvr","sha":"1b2b2394859563302b3ca10684c3d4c875bdcd02"},{"file":"sc3d\/item_present_red.scw","sha":"14f02b51844022e9504a4fdc68663315c75ffc14"},{"file":"sc3d\/item_showdown_boost.ktx","sha":"1affcf81c1239fac560a6638132cfe177222408e"},{"file":"sc3d\/item_showdown_boost.pvr","sha":"5f5d7328fe3e7415caf3f39606e3c750ea9de45c"},{"file":"sc3d\/item_showdown_boost.scw","sha":"a5a3fbf081e4fc1b663c24a15164b45ef6cb6019"},{"file":"sc3d\/item_showdown_boost_moon_festival.ktx","sha":"19d497e0cbf7d50cfc88847171ee06b8c8f4a8ac"},{"file":"sc3d\/item_showdown_boost_moon_festival.pvr","sha":"9451900d88c79a35d5e0e5fa698e6803d10822a3"},{"file":"sc3d\/item_showdown_boost_moon_festival.scw","sha":"22a79324b9af8ddb67f57992c91b7991454b1fa8"},{"file":"sc3d\/jacky_attack.scw","sha":"d7dc8a8ed400ef90f712c2d6c938d19e5722ac46"},{"file":"sc3d\/jacky_geo.scw","sha":"72c6eaa7be8b858fc7a3ad0db353e6568d8af79d"},{"file":"sc3d\/jacky_idle.scw","sha":"0171c818cca20058ee3d663871c6786284816ded"},{"file":"sc3d\/jacky_lose.scw","sha":"df270e9cd49baf398b4396afe49b70d2e2baecea"},{"file":"sc3d\/jacky_portrait.scw","sha":"4fa12fd2523f24a113d42754a96350950c32c10c"},{"file":"sc3d\/jacky_super.scw","sha":"77d2d1f828d919a9d666987578eff36f83ea86dc"},{"file":"sc3d\/jacky_tex.ktx","sha":"3c8b03c249595a5cba2ad5e626824b8b18b7a110"},{"file":"sc3d\/jacky_tex.pvr","sha":"8cf4ddc763ea7b94e383518061af2a0d540383e0"},{"file":"sc3d\/jacky_walk.scw","sha":"d14d9d7c8a8fe329f4a86650a35fef40369e029d"},{"file":"sc3d\/jacky_win.scw","sha":"6566834260b9ae700c9777111dfa754698df9cb1"},{"file":"sc3d\/jessie_attack.scw","sha":"8f852a5b6f9605c5f826e371467281f119fa21d3"},{"file":"sc3d\/jessie_base_cam.scw","sha":"4a41c75b541704143a5cdd263c8332a55961e612"},{"file":"sc3d\/jessie_geo.scw","sha":"9cca8300347868e32eab6187c802a6b108010464"},{"file":"sc3d\/jessie_idle.scw","sha":"883ea06faac2d40b5399b17ef76cbefd1b7f8383"},{"file":"sc3d\/jessie_knight_attack.scw","sha":"5484be38320063f8161eb1f315dd09fe0e1db0de"},{"file":"sc3d\/jessie_knight_battlewin.scw","sha":"49576e8e8daf46a0286e78b41871119ef041f025"},{"file":"sc3d\/jessie_knight_geo.scw","sha":"33aeeaeee51abcac4fc23c7d24ff94ecac4b8cc2"},{"file":"sc3d\/jessie_knight_idle.scw","sha":"bc19975549816d94f21f75eeab86f1f68bf304b4"},{"file":"sc3d\/jessie_knight_lose.scw","sha":"e47eb54857207354112d62bc5e880f711fb6c030"},{"file":"sc3d\/jessie_knight_pushback.scw","sha":"fbb17f9fc22e700e5521acb01c90714f42e6b1e7"},{"file":"sc3d\/jessie_knight_tex.ktx","sha":"668e855f87d9fb9cec4b6ddb2292d201208fe535"},{"file":"sc3d\/jessie_knight_tex.pvr","sha":"30d1a85a22d1a6e1c5740fa76d62b1978a8b7857"},{"file":"sc3d\/jessie_knight_walk.scw","sha":"edddea394f1cdbd022f790f6540f8cb63809695f"},{"file":"sc3d\/jessie_knight_win.scw","sha":"c5bbcebbb9c41066e2501eff5faa48e43f1f520e"},{"file":"sc3d\/jessie_knightdark_battlewin.scw","sha":"240a488657b88812aed326db2d0ea7e535aefc2e"},{"file":"sc3d\/jessie_knightdark_idle.scw","sha":"127b45bf364e8a0d3ea2016b47466329ad0d028c"},{"file":"sc3d\/jessie_knightdark_win.scw","sha":"903f7a8d2020ba79ca63b80aa84ae6f4df78fb04"},{"file":"sc3d\/jessie_lose.scw","sha":"a1e5fd131d4e3e1ab35ae65ea5467043e2108490"},{"file":"sc3d\/jessie_portrait.scw","sha":"2b9e7ed90af622d8763910e66dc268df5cec4873"},{"file":"sc3d\/jessie_pushback.scw","sha":"a5d7302e57ccc2f48b7f3fadf542f93c5ecb225f"},{"file":"sc3d\/jessie_summertime_geo.scw","sha":"9cb4982c77fa4ddc02b9880d1d62ccc25e5f18dc"},{"file":"sc3d\/jessie_summertime_tex.ktx","sha":"f6fa7ad7db6bd9eb0e43aee44168ff36cf1b5f22"},{"file":"sc3d\/jessie_summertime_tex.pvr","sha":"fba850b87bbd93b52962a1907a2c106166716f19"},{"file":"sc3d\/jessie_summertime_walk.scw","sha":"f292df5cc54d41f1d32052dfe4aff8ea811b3247"},{"file":"sc3d\/jessie_tanuki_attack.scw","sha":"efdf731a7ea9f5c9a50e15cc0729a2cbe4ab2d55"},{"file":"sc3d\/jessie_tanuki_geo.scw","sha":"88d83289f18495ddca86bf2292d697b4016d36cd"},{"file":"sc3d\/jessie_tanuki_idle.scw","sha":"f666721970ca343b6042fdb2f0f20925d1c25827"},{"file":"sc3d\/jessie_tanuki_lose.scw","sha":"6edb14c99f0d140eca93bda4bb094b6bf8385bda"},{"file":"sc3d\/jessie_tanuki_tex.ktx","sha":"991f6d9b2a24edac3df1d86d4a55619c2f8db7bd"},{"file":"sc3d\/jessie_tanuki_tex.pvr","sha":"d4daa997f51a875dd727c884f382f7e0ec377bb5"},{"file":"sc3d\/jessie_tanuki_walk.scw","sha":"05d361b85f0200608f510855a10d15af9fcbc04d"},{"file":"sc3d\/jessie_tanuki_win.scw","sha":"677b62950f29d7a94bb847371b0a1bdeea986ff0"},{"file":"sc3d\/jessie_tex.ktx","sha":"bef3c424a15f616afaac72fe0e9049389c8c2a66"},{"file":"sc3d\/jessie_tex.pvr","sha":"92c9b7f0868ed554af00c318a4cac9f4536dc116"},{"file":"sc3d\/jessie_walk.scw","sha":"cd1ad62b4c584f2e4e2fc6a6caf9121b6ca7a89a"},{"file":"sc3d\/jessie_win.scw","sha":"25c87c2b614b5807bd986ec0af970661913df900"},{"file":"sc3d\/leon_attack.scw","sha":"6e031e203fda80ad7a534b340924c221f07239d2"},{"file":"sc3d\/leon_base_cam.scw","sha":"d655fd10164e1f1f06924afc5681109c8a5269f4"},{"file":"sc3d\/leon_geo.scw","sha":"1105bdef0643baeea2906f947d203900cafb8171"},{"file":"sc3d\/leon_idle.scw","sha":"ed39232524084922420c5bdec2bd9268afda7ed6"},{"file":"sc3d\/leon_lose.scw","sha":"fa8935960d6b8e0eea91b0a7ab681f78d46fb5d8"},{"file":"sc3d\/leon_pushback.scw","sha":"636f2ff9ce098ec94fb4313f65b23bef9c722869"},{"file":"sc3d\/leon_sally_geo.scw","sha":"55bebdee9b2ed5d9fcd740d00a40f259e65b9b0f"},{"file":"sc3d\/leon_sally_tex.ktx","sha":"f16057bcd7770cffc804de139163833257103e5e"},{"file":"sc3d\/leon_sally_tex.pvr","sha":"8aea1b036353c2d4edbbaee403093e21ad9c515c"},{"file":"sc3d\/leon_sally_win.scw","sha":"e1731e0af62cc3e9452a0718814b4725d2b5ff52"},{"file":"sc3d\/leon_tex.ktx","sha":"2cc67701e8d1271575c58a6e0b4c7446e9f2f722"},{"file":"sc3d\/leon_tex.pvr","sha":"5f50e5a7ccc73ee576e0a19d7c5a53fcfcf53553"},{"file":"sc3d\/leon_walk.scw","sha":"f893503af4d7a9d0024ecc17d8ce28a7b37c4798"},{"file":"sc3d\/leon_win.scw","sha":"c96b9a2bb9e334756592000e3a2b73750e6c7461"},{"file":"sc3d\/leon_wolf_attack.scw","sha":"cf84d2132f9be1c6ac925f58587e051f047ea380"},{"file":"sc3d\/leon_wolf_geo.scw","sha":"44f93a36664134bd51b0a4db9222429e8a2d4ec2"},{"file":"sc3d\/leon_wolf_idle.scw","sha":"13f44fbf6ccd8012ca08301bc6a9c32ed74ba327"},{"file":"sc3d\/leon_wolf_lose.scw","sha":"426bc571d376732dbc4eb8e9f314dbf1654cb0c3"},{"file":"sc3d\/leon_wolf_portrait.scw","sha":"3ee519171983f4b561928c39f0d0c7e526e71af3"},{"file":"sc3d\/leon_wolf_pushback.scw","sha":"c41c395c67fce7a89aa38ad9d15f6385fa34ca2c"},{"file":"sc3d\/leon_wolf_tex.ktx","sha":"6e1a32411201e79638b2c5ab5266e0460411cb52"},{"file":"sc3d\/leon_wolf_tex.pvr","sha":"d56af2b2d03c4454e12b5900af68d4163a466476"},{"file":"sc3d\/leon_wolf_walk.scw","sha":"ccd2732b795369bcf75a71a9cf85ad7162d3f9a7"},{"file":"sc3d\/leon_wolf_win.scw","sha":"a58eef316984413bed46b5bb312699b4d63c025d"},{"file":"sc3d\/light_gradient_1.ktx","sha":"602544d30d04500096c5d0f1b2c56c409fccdc26"},{"file":"sc3d\/light_gradient_1.pvr","sha":"a29d153a720311b9b84a45ea94472033152436bd"},{"file":"sc3d\/mari_attack.scw","sha":"ef440b397c4fec4e4f1f2a123fbd7a1b0342bf1c"},{"file":"sc3d\/mari_geo.scw","sha":"4d463653b34383f158ba292001b9a9d73507e436"},{"file":"sc3d\/mari_idle.scw","sha":"2bfc5eaba96bb1063f470438c0212665dae0f47e"},{"file":"sc3d\/mari_lose.scw","sha":"f8ad5a1cf2dff42b448510400f14fa8c3f7ddcd2"},{"file":"sc3d\/mari_pushback.scw","sha":"915d237ef04bae991c7ba9735ada03654187b700"},{"file":"sc3d\/mari_tex.ktx","sha":"46cc9b502c35ae51b05b9eb6426b4f10d633eba1"},{"file":"sc3d\/mari_tex.pvr","sha":"20704e1d9d91d13c4c9bed4c307ba0459b2b16ff"},{"file":"sc3d\/mari_ult.scw","sha":"0cf4287f3504bcd97387368c0915b547e52127f1"},{"file":"sc3d\/mari_walk.scw","sha":"773d5b2f59b556f994000157d349605e3da88b83"},{"file":"sc3d\/mari_win.scw","sha":"da9723094ecb6009a47b8c862fe1e19bf3c9b1cb"},{"file":"sc3d\/mariachi_attack.scw","sha":"360a87a652073179df62eb6b301d680d5fb22ddd"},{"file":"sc3d\/mariachi_geo.scw","sha":"2556f2b87e0c38fb6883703e21417f491c848a17"},{"file":"sc3d\/mariachi_idle.scw","sha":"c38b8b4f021239c7705532aba36b7c49cbd14b2b"},{"file":"sc3d\/mariachi_lose1.scw","sha":"4bc7beabf2b2a66c47bcb0eda7cd4077ae68abf5"},{"file":"sc3d\/mariachi_loseloop1.scw","sha":"f7c300f1e04b978fb2f8555cea44e5c35e477b3a"},{"file":"sc3d\/mariachi_recoil.scw","sha":"4d6b182257798c17800b15db62efa126bc30a33d"},{"file":"sc3d\/mariachi_reload.scw","sha":"538b433605ed52a966d4def73143dedb5da88a20"},{"file":"sc3d\/mariachi_tex.ktx","sha":"ff00a921ad176a4986cec85e94f10885a64a1752"},{"file":"sc3d\/mariachi_tex.pvr","sha":"b6fb5d5cb68f4d2142b3497327208dc8003d48d4"},{"file":"sc3d\/mariachi_walk.scw","sha":"95c09487f655278231d31869fcc8db694621b185"},{"file":"sc3d\/mariachi_win1.scw","sha":"5691039152bcb7a680022872cdc79a4e6c4ac783"},{"file":"sc3d\/mariachi_winloop1.scw","sha":"945a1e0acda1bab5246e85d5169df2032b82695a"},{"file":"sc3d\/masks\/8bit\/8bit_light_msk.png","sha":"f6d3726d025317f19d4fea01dcfd9f8bf5fd6d1a"},{"file":"sc3d\/masks\/8bit\/8bit_msk.png","sha":"4f0d1dfcef699a841060653c2dfe48654173ec16"},{"file":"sc3d\/masks\/barley\/coat_msk.png","sha":"4b94a675c2be7d14117414ff4407c881da9d6622"},{"file":"sc3d\/masks\/bo\/bo_mecha_ammo_msk.png","sha":"ade295bb43f5c647654bf876108616041a635e2d"},{"file":"sc3d\/masks\/bo\/bo_mecha_colour01_msk.png","sha":"26ead54e7e0c0a116d4640bf5931a06ba28a6426"},{"file":"sc3d\/masks\/bo\/bo_mecha_colour02_msk.png","sha":"a460a7c9c2a9239314c040841e5a91fc6cc1a5cc"},{"file":"sc3d\/masks\/bo\/bo_mecha_eyesvisor_msk.png","sha":"e6e106add5b0d29c538c9dbd19fd5a83082152e5"},{"file":"sc3d\/masks\/bo\/bo_mecha_seams_msk.png","sha":"0f6119566d608f93f2daef941009f377ffe157ce"},{"file":"sc3d\/masks\/bull\/bull_footbull_colour01_msk.png","sha":"56cc3d86a2fc4bba62b18d2a86aeb63961092593"},{"file":"sc3d\/masks\/bull\/bull_footbull_helmet_msk.png","sha":"3a06d13a25d3a113dcf32bd23739416faf8a7317"},{"file":"sc3d\/masks\/bull\/bull_footbull_metal_msk.png","sha":"956b1f1db1119963210663b12feaa9dc72610078"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour01_msk.png","sha":"4ee849e7565c8af455788f3f36f4d09d3203bab9"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour02_msk.png","sha":"3437734700cd38a53a92742783d69280c4b27e7a"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour03_msk.png","sha":"86850fa2eaa00681364efbe713e0c9d64c7826be"},{"file":"sc3d\/masks\/darryl\/darryl_msk.png","sha":"0670de72742896b4fa9b55c6caf66b25a163c26f"},{"file":"sc3d\/masks\/dynamike\/dynamike_mecha_ammo_msk.png","sha":"c92d04de336ff577c096724f2651ae8540c3e4e3"},{"file":"sc3d\/masks\/frank\/frank_dj_coat_msk.png","sha":"26df9bc99c9827739b162653e263ce53199adc51"},{"file":"sc3d\/masks\/jessie\/jessie_knight_fabric_msk.png","sha":"05ddb1f953631b648ff24bfeee4be1baa19b8ed4"},{"file":"sc3d\/masks\/jessie\/jessie_knight_gold_msk.png","sha":"c423f19dae74be449573ea3ae22259ee168c7347"},{"file":"sc3d\/masks\/jessie\/jessie_knight_metal_msk.png","sha":"c82d97c963bea4e4f8ab152bd9c6e792017e1e62"},{"file":"sc3d\/masks\/jessie\/jessie_knight_plume_msk.png","sha":"9256da7fe5f42acb21cee87a21ab54a0a805e4e0"},{"file":"sc3d\/masks\/jessie\/jessie_turrret_dragon_belly_msk.png","sha":"06481d71646fe760fe70f249858da3fd56c43ef4"},{"file":"sc3d\/masks\/jessie\/jessie_turrret_dragon_main_msk.png","sha":"509bdc92dd7d5505e307252f426a2cbee00df1cd"},{"file":"sc3d\/masks\/sprout\/sprout_glass_msk.png","sha":"55597a390eb3a2cfacd6f00c0245d4cdd292e051"},{"file":"sc3d\/max_attack.scw","sha":"b4ecb5d735347bb310d2f390974b62ab4190ae0b"},{"file":"sc3d\/max_geo.scw","sha":"ddcfc1f65b10a26837b50aee52120db795d8c5c1"},{"file":"sc3d\/max_gt_tex.ktx","sha":"f4dfd3199267fc1bce4259c529b689b074408c29"},{"file":"sc3d\/max_gt_tex.pvr","sha":"46781a6b1f74dcbb33bc6c690f3ee152a4765bfd"},{"file":"sc3d\/max_idle.scw","sha":"0471dfdf96aa733b7f859c28eb03352595518a30"},{"file":"sc3d\/max_lose.scw","sha":"83130ec2938c8ab5c92de2f5b453e29779e228f9"},{"file":"sc3d\/max_portrait.scw","sha":"3ddfb5745d45feffb0b5abe50dd92ca62bc29767"},{"file":"sc3d\/max_pushback.scw","sha":"cf6bf4f60e1d37dbb669737933df6374b651999f"},{"file":"sc3d\/max_reload.scw","sha":"7deb29a02e5cc4734454c41cc5a7a7dcd89003a4"},{"file":"sc3d\/max_super.scw","sha":"5748b7abf1eca3ffc06fc3c3baaccad6e0050808"},{"file":"sc3d\/max_tex.ktx","sha":"9f7388d9e8d2c7f6b78d29ff55ede5efc824748d"},{"file":"sc3d\/max_tex.pvr","sha":"a6bd34ba60dd7ca19fe1b8c0151ece03b41f4e7b"},{"file":"sc3d\/max_walk.scw","sha":"edd8c8f40296fa07aa764353b17c076aab5f978c"},{"file":"sc3d\/max_win.scw","sha":"35dd966de5a5e0812bf5c3a17e1772e570cc4f5f"},{"file":"sc3d\/meleebot_geo.scw","sha":"4d81a226390d594c21516eda427f820ee5ebdd24"},{"file":"sc3d\/meleebot_idle.scw","sha":"d1269c954c717165eff21efb3376357cc238bd41"},{"file":"sc3d\/meleebot_tex.ktx","sha":"3f6cbb75e425daa91947c8a7d293e7905676bed1"},{"file":"sc3d\/meleebot_tex.pvr","sha":"ae15a57a43445c1e5537e67f00f9799b7b738367"},{"file":"sc3d\/meleebot_walk.scw","sha":"3de7bfd829850520dfd9bd1f149cb1d91d47c811"},{"file":"sc3d\/menu_diffuse_lightmap.png","sha":"b24c733a99ca2993394b5802dcf79470e367e71d"},{"file":"sc3d\/menu_hair_diffuse_lightmap.png","sha":"5d1a4910aba8882b5fad1967d3eb16fedaadb3e5"},{"file":"sc3d\/menu_hair_specular_lightmap.png","sha":"7e40b0b1fc2085be1d5af924752e731c93bce44d"},{"file":"sc3d\/menu_metal_diffuse_lightmap.png","sha":"52857165ae137a2ff6e6a7cd486e412996c0da2d"},{"file":"sc3d\/menu_metal_specular_lightmap.png","sha":"5c1bda3d2862339bd38e5c3c61d1b7c8f3a145bb"},{"file":"sc3d\/menu_specular_lightmap.png","sha":"f5e7a12b8a827f98bad80af072948820b47f7770"},{"file":"sc3d\/metal2_specular_lightmap.png","sha":"df82a9bd8291300abb233fd6c2d7fe31dd166c9a"},{"file":"sc3d\/metal_diffuse_lightmap.png","sha":"06a27bf1531309e58a6648bba4c033e6da468bb2"},{"file":"sc3d\/metal_diffuse_lightmap_night.png","sha":"efaa328fb9e290e619dca329c6f867f91bf7cea8"},{"file":"sc3d\/metal_specular_lightmap.png","sha":"a095801e8a417b1aa36b159a99ac26744c1a1269"},{"file":"sc3d\/metal_specular_lightmap_night.png","sha":"3a48652eafd64afc6777a95ef96354be4d86692e"},{"file":"sc3d\/mine_cart.scw","sha":"756cf60a3c652259e4433259eac5d97b546dae15"},{"file":"sc3d\/mine_cart_b.scw","sha":"e8fdcd09401a9da6412ada83222be735c67a07cf"},{"file":"sc3d\/mine_cart_c.scw","sha":"c28fa219ba7740b75a4f5fbe68084ba91636bfe7"},{"file":"sc3d\/mine_cart_d.scw","sha":"c28fa219ba7740b75a4f5fbe68084ba91636bfe7"},{"file":"sc3d\/mine_cart_e.scw","sha":"a9b4f1d960f1ddeae8ba6799664f3ab0807c0b54"},{"file":"sc3d\/mine_gem_spawn.ktx","sha":"eb886162fbeda6a919f6d9dd40b1f57620e784e5"},{"file":"sc3d\/mine_gem_spawn.pvr","sha":"14c81ec865148c9a62efc7c449c2bb7a1e0abc09"},{"file":"sc3d\/mine_gem_spawn.scw","sha":"a138d1649643b5b81212efcafbddf8ea99425b66"},{"file":"sc3d\/mine_gem_spawn_darryls_ship.scw","sha":"f343e3fbbdb7d3f01b9a88552ec6fb0c6bea85bc"},{"file":"sc3d\/mine_gem_spawn_glow.ktx","sha":"dda27345166f2a95d69b83c71e44d16df1831179"},{"file":"sc3d\/mine_gem_spawn_glow.pvr","sha":"308905a00280e99367c3c333fc99cd1e43bd8f20"},{"file":"sc3d\/mine_gem_spawn_glow_snowy.ktx","sha":"3eded88e5268f01b63b5b636651f0bccc435ba13"},{"file":"sc3d\/mine_gem_spawn_glow_snowy.pvr","sha":"d09ef9f36f88b0e1bc4a7d48b13e24f10e4f185c"},{"file":"sc3d\/mine_gem_spawn_ice.scw","sha":"c42764e8399b348018b534f0800fdfc522770cd1"},{"file":"sc3d\/mine_gem_spawn_mortuary.scw","sha":"737c9b8ce9c3293bb09b41137059d196535ee278"},{"file":"sc3d\/mine_gem_spawn_retropolis.scw","sha":"d22463714a9d101e794ad0ea22707010c44ded0b"},{"file":"sc3d\/mine_gem_spawn_town.scw","sha":"def739dc2ab46c1af585ef5db62b164413c973bd"},{"file":"sc3d\/minigunner_geo.scw","sha":"7d5ee554d0fd48db61297f5fde95367bb60c8454"},{"file":"sc3d\/minigunner_idle.scw","sha":"49f29bc15ca81b4748d20fe2a6507631ee4d816a"},{"file":"sc3d\/minigunner_lose1.scw","sha":"86df8c31d7172a06b9eede96fb898e3ffe93b832"},{"file":"sc3d\/minigunner_ulti1.scw","sha":"17ceb48d14dd38f82ec006eb404c0d30bca9894e"},{"file":"sc3d\/minigunner_walk.scw","sha":"faec2d1912cf64b7408f6786cdf1a312b685247a"},{"file":"sc3d\/minigunner_win1.scw","sha":"22109e518b144317ff0774463f011f3b7d66394b"},{"file":"sc3d\/mist_1.ktx","sha":"1f6e3a439531511108b8d68b7a3adccbf5d4b6c3"},{"file":"sc3d\/mist_1.pvr","sha":"f5ad17e8694fa252d628b04192250c2d7eb7dc3e"},{"file":"sc3d\/mist_1.scw","sha":"9bce70a1c20a5496ee9f09c6b090adfa68aa6883"},{"file":"sc3d\/mortis_attack.scw","sha":"73b1b3a14380e407c02d0fc2ec942190c6520670"},{"file":"sc3d\/mortis_base_cam.scw","sha":"5cdd0bb21b15b1ce1bb342d936c96294f6c43f3f"},{"file":"sc3d\/mortis_geo.scw","sha":"8261455b616b35ee18d3b62b576b1b7c332cc871"},{"file":"sc3d\/mortis_greaser_geo.scw","sha":"e72667f36733f0bc0fa62f1db97a6ba7db704662"},{"file":"sc3d\/mortis_greaser_idle.scw","sha":"02ab7391aa973b03703a827d399e4b7f43b65a92"},{"file":"sc3d\/mortis_greaser_lose.scw","sha":"f4c26c5a92d4ddeab24da198cee4aa2e41beaea2"},{"file":"sc3d\/mortis_greaser_tex_02.ktx","sha":"c4ef02ed7c6b263ec55b521958b6f975666bdd75"},{"file":"sc3d\/mortis_greaser_tex_02.pvr","sha":"d35025a4aa095dd557677f9c32150e0a0eb0d42a"},{"file":"sc3d\/mortis_greaser_win.scw","sha":"2cd855be5b744cf986567ab8cc6439756a869c22"},{"file":"sc3d\/mortis_idle.scw","sha":"41e327793b804242f42b1c85f4ff30d7aa7ef778"},{"file":"sc3d\/mortis_lose.scw","sha":"903da08e837025d6e97a09dd15a6606e2f92ecb1"},{"file":"sc3d\/mortis_nightwitch_geo.scw","sha":"54e6d6e2e12d3daeff538197b17ac43cc7f9c49e"},{"file":"sc3d\/mortis_nightwitch_tex.ktx","sha":"7e5cb8541403a8b8db6b153493d190b35483e014"},{"file":"sc3d\/mortis_nightwitch_tex.pvr","sha":"221dae56b123fe2028bdc63ab98a9d629a054d11"},{"file":"sc3d\/mortis_nightwitch_win.scw","sha":"0f3d24656513c0503c2061e065a50bc9e56e1323"},{"file":"sc3d\/mortis_pushback.scw","sha":"6ebb2aba5fceaf350bcf1c7fd693506f2b631096"},{"file":"sc3d\/mortis_ulti.scw","sha":"ad2b167c830c5d1d5e8d8b4dca820542229b3ac6"},{"file":"sc3d\/mortis_v2_tex.ktx","sha":"529d105660b9acac363e853ae404f66ff82a147e"},{"file":"sc3d\/mortis_v2_tex.pvr","sha":"898c5380541956635a8f310bde4e19d5602299a6"},{"file":"sc3d\/mortis_walk.scw","sha":"ca9719ce096f73d30d5d4b4eff848f92cfe7f2f7"},{"file":"sc3d\/mortis_win.scw","sha":"df014d2abb085f0477e2d142bf1547b04f7e57c2"},{"file":"sc3d\/mortuary_fence.scw","sha":"64ead70c9e619720320043c9095b5a598fa5cedc"},{"file":"sc3d\/mortuary_tree_stump.scw","sha":"054ab0ced2ace8b3d24cb6d4513fb883fa4b5b5f"},{"file":"sc3d\/mrp_agentp_geo.scw","sha":"94c852899b129308d7ffd396b721f1688c10637d"},{"file":"sc3d\/mrp_agentp_spawner_tex.ktx","sha":"48a2e5616d609162f18f9af86e564dd62ec1f0e5"},{"file":"sc3d\/mrp_agentp_spawner_tex.pvr","sha":"e04dcdef97f550833e00a367e2fc57e14ec5681d"},{"file":"sc3d\/mrp_agentp_tex.ktx","sha":"5fd00447bf2e913dbba90a45692dafd198837429"},{"file":"sc3d\/mrp_agentp_tex.pvr","sha":"297f245b8113e391145e0c0873e22bc869994e51"},{"file":"sc3d\/mrp_agentp_win.scw","sha":"b0fd80fa12cd98271450a373ec640856e0263d22"},{"file":"sc3d\/mrp_attack.scw","sha":"6e23c1b06cab9317fa7d73ed05dfc479b17c5899"},{"file":"sc3d\/mrp_def_atk1.scw","sha":"17adf9b6c667ef92602b4a1ea85c7869fd2c2ab0"},{"file":"sc3d\/mrp_def_atk1_red.scw","sha":"d0dfa994721d641f5f7086835d4df6febefece33"},{"file":"sc3d\/mrp_def_atk1_texture.ktx","sha":"58b517b546fa7925882ea238338b8dad743362e5"},{"file":"sc3d\/mrp_def_atk1_texture.pvr","sha":"95822de5f6fa250085c7b5d413f5d6fbe90158db"},{"file":"sc3d\/mrp_def_atk1_texture_red.ktx","sha":"456631a9977ec6bde9d38f93c67eb6d98048dda3"},{"file":"sc3d\/mrp_def_atk1_texture_red.pvr","sha":"25c7c8b4e0e6538877f75ec1c35a601447c964c9"},{"file":"sc3d\/mrp_def_atk2.scw","sha":"670e64092257388620c0637314995eec11e9f178"},{"file":"sc3d\/mrp_def_atk2_red.scw","sha":"e466b7fb6309b3a1726e05ce7082dec6d2d9cb7d"},{"file":"sc3d\/mrp_def_atk2_texture.ktx","sha":"d27c1449f563427e782350e43154b1887da4ef1f"},{"file":"sc3d\/mrp_def_atk2_texture.pvr","sha":"87ffe922be4fbc9b08731c758cc72d3fe8fb6619"},{"file":"sc3d\/mrp_def_atk2_texture_red.ktx","sha":"b9e1e34027e7c20ae3c519ea50d11fbdb7ce779b"},{"file":"sc3d\/mrp_def_atk2_texture_red.pvr","sha":"13a633a60a73443ddd2ade838df0851fe8995cd0"},{"file":"sc3d\/mrp_geo.scw","sha":"1ded8b030ead61740988bce0f883034cc55e5a92"},{"file":"sc3d\/mrp_idle.scw","sha":"ae4690a7eed4b65f458e1c44123a9eb3e7866845"},{"file":"sc3d\/mrp_lose.scw","sha":"e32e4318c4f2cb09e114cee4588244bda380a55d"},{"file":"sc3d\/mrp_pet_geo.scw","sha":"e5e1d86f4b786c4f896f7fef5df40cbe21509be6"},{"file":"sc3d\/mrp_pet_idle.scw","sha":"46a7968902b7e4e3079eeb9ab96e3af904342430"},{"file":"sc3d\/mrp_pet_walk.scw","sha":"d574e988a8de2e63b4c0720b86d44184e3bd3358"},{"file":"sc3d\/mrp_portrait.scw","sha":"e6c2a4138272d6636d0ebaeb857f444babb6e9e4"},{"file":"sc3d\/mrp_spawner_idle.scw","sha":"67a2c066fa79cdc817accc1ab11391a9a6d01b39"},{"file":"sc3d\/mrp_spawner_spawn.scw","sha":"861bd6a806445779e323469e665802c817484d3d"},{"file":"sc3d\/mrp_spawner_tex.ktx","sha":"a49948c7209442c6f77eb52ddfb4999510b5b31b"},{"file":"sc3d\/mrp_spawner_tex.pvr","sha":"b86cf5ddb571a41e27d0d3eb0e8ac93d81c16d55"},{"file":"sc3d\/mrp_tex.ktx","sha":"164e552bcce00fce88d2db22e4d703bacebeda77"},{"file":"sc3d\/mrp_tex.pvr","sha":"ba1ac86ef0de812318294aff006b9eb0aacbcd89"},{"file":"sc3d\/mrp_walk.scw","sha":"5c309882f0299dd1efc824c3d679e48c0d1446e0"},{"file":"sc3d\/mrp_win.scw","sha":"a082016ddfe8473c8779078b028af1fe3c6814f3"},{"file":"sc3d\/multi_bumper_car.scw","sha":"1c2d151b7223e58acbd1b7c5d5c0f96ca8a40919"},{"file":"sc3d\/mushroom_1.ktx","sha":"32d64619292affcb2851a742d00cc15272860202"},{"file":"sc3d\/mushroom_1.pvr","sha":"9705487bd9380b82d6f7a7b04904f07d12b91b38"},{"file":"sc3d\/mushroom_1.scw","sha":"ebed46067731285bfffb58710c19ae9cc1c04821"},{"file":"sc3d\/mushroom_1_small.scw","sha":"2c079f4cb89645d548e62e8755001ab99eae77c0"},{"file":"sc3d\/ninja_ability_tex.ktx","sha":"49761b0461f87462d0a29e1acf04b67f32253dc9"},{"file":"sc3d\/ninja_ability_tex.pvr","sha":"f9ce899a2eb9fcac1e1c28a1d21f1b8fc457b637"},{"file":"sc3d\/ninja_attack1.scw","sha":"b58753fe44011f23b8690d356a4201c142e6b26b"},{"file":"sc3d\/ninja_geo.scw","sha":"07a678b7c549d746bdefe41cf5bb7aa52a613035"},{"file":"sc3d\/ninja_idle.scw","sha":"5547a3dd2081a71eb05d7f2789d7b05623a411c7"},{"file":"sc3d\/ninja_lose1.scw","sha":"84859c50cd98ab23af67fdfd9d64c1fb3c223075"},{"file":"sc3d\/ninja_red_tex.ktx","sha":"c59c83cef2d4ba69293570ec542997855c9defe8"},{"file":"sc3d\/ninja_red_tex.pvr","sha":"e1159f7c69f6868b016b7de24ab5319b2aef444b"},{"file":"sc3d\/ninja_tex.ktx","sha":"94f58acd753d76ed1d50b47b6cd0d18c5f6431d5"},{"file":"sc3d\/ninja_tex.pvr","sha":"652b2028d98f3f2cfef426f6563c6bf332c81d91"},{"file":"sc3d\/ninja_ulti1.scw","sha":"5e229d95ccc8eee285c2ad03a475f3bcf0117e27"},{"file":"sc3d\/ninja_walk.scw","sha":"7be6502beacf97dbcbd97232147a79887fcf4f52"},{"file":"sc3d\/ninja_win1.scw","sha":"4b99bba384a46698f9ec337da9ddeef7d0dbb074"},{"file":"sc3d\/nita_attack.scw","sha":"eaa31aabbb5ea134d9171ccb5048c170677c64c7"},{"file":"sc3d\/nita_base_cam.scw","sha":"950c24ab7d65f8673bf9df5d5e58abae4fb48177"},{"file":"sc3d\/nita_bear_attack.scw","sha":"0256ca43e21b05b7c88e27d7a83f2ad1e401cac1"},{"file":"sc3d\/nita_bear_geo.scw","sha":"8bc72b7f561467764809655a652c1a6194080010"},{"file":"sc3d\/nita_bear_idle.scw","sha":"ea7432318ed8b1dbb94ce0a36b494e9f81c1f5eb"},{"file":"sc3d\/nita_bear_panda_tex.ktx","sha":"a7b46df904cd9e844fead8ee66afcd24d36f5907"},{"file":"sc3d\/nita_bear_panda_tex.pvr","sha":"f210d926dcccd4718593ce9f65d43c7de9d364ec"},{"file":"sc3d\/nita_bear_reindeer_tex.ktx","sha":"57b08118d36e948a69f7f925ac3fb67f57d8b9e6"},{"file":"sc3d\/nita_bear_reindeer_tex.pvr","sha":"62803466366326648852e696e08e69421329f904"},{"file":"sc3d\/nita_bear_shiba_tex.ktx","sha":"7d304948794b6d5775641ed7931a1826c8ee0ff9"},{"file":"sc3d\/nita_bear_shiba_tex.pvr","sha":"65f061152cff6fed0634583843a0910656b2703e"},{"file":"sc3d\/nita_bear_tex.ktx","sha":"ca03e07fb44cc10d3d9c7cabacf962411b3c7c1f"},{"file":"sc3d\/nita_bear_tex.pvr","sha":"7b77f0adf31a38d0e8b7002e742d7fa05d5faf00"},{"file":"sc3d\/nita_bear_walk.scw","sha":"8ec7dd4aa185fcde8cbdfeddb7a20b717fbfaac9"},{"file":"sc3d\/nita_bear_win.scw","sha":"43bc98797264cac3510738786d4c63fdb696c872"},{"file":"sc3d\/nita_geo.scw","sha":"d5c3fe5fb8bc8d9f0c9308bb1c87775c0aed9eb9"},{"file":"sc3d\/nita_idle.scw","sha":"31e341083f2089d853b680a58d8bfc23b534ed05"},{"file":"sc3d\/nita_koala_bear_tex.ktx","sha":"ce601ecdb776388dee32eb100fde09fc025f315b"},{"file":"sc3d\/nita_koala_bear_tex.pvr","sha":"acf58e12a14789e3d35ac614626fc9a109895ad6"},{"file":"sc3d\/nita_koala_geo.scw","sha":"15e6ea33a51eced43320df24dd69607256aab8ba"},{"file":"sc3d\/nita_koala_tex.ktx","sha":"e0f4496577be3cdd04553dbe41463d5672ea06a5"},{"file":"sc3d\/nita_koala_tex.pvr","sha":"86b2e894aacb277be87127607f82bfd6199ff10b"},{"file":"sc3d\/nita_lose.scw","sha":"a4aec5607c2df4814d8a65eb395be61a6843d80b"},{"file":"sc3d\/nita_panda_tex.ktx","sha":"4e93edec31d7099c6ea614e768508202d9b455ea"},{"file":"sc3d\/nita_panda_tex.pvr","sha":"9c6f486a325e5aec87392483072fdcce61e17604"},{"file":"sc3d\/nita_pushback.scw","sha":"ec9a18aca46adbfa0bd15b7e54c3e41254b34549"},{"file":"sc3d\/nita_reindeer_geo.scw","sha":"d30eee4295f32aacf1cc732af94d8551b16d382e"},{"file":"sc3d\/nita_reindeer_tex.ktx","sha":"05e8ff4f08cc12afc6daf47bc4b043f919f81ef0"},{"file":"sc3d\/nita_reindeer_tex.pvr","sha":"416b7c86e78ffd785626bf632dcb62f1dd6e77cd"},{"file":"sc3d\/nita_shiba_geo.scw","sha":"e5bc4a66ea24bcf62d62a9e47128035c10573370"},{"file":"sc3d\/nita_shiba_idle.scw","sha":"a1b06ba096b3ee9c4a734718d17f0a5827480555"},{"file":"sc3d\/nita_shiba_tex.ktx","sha":"d8a66342d8bdd8e9c33bde86e55f859c50ace7c6"},{"file":"sc3d\/nita_shiba_tex.pvr","sha":"3f8ce1b814d4bffb7e969baae20d2c3ebabf37dc"},{"file":"sc3d\/nita_shiba_walk.scw","sha":"0f4a9a9780fb139ca961e6db44c54a505473a6a3"},{"file":"sc3d\/nita_shiba_win.scw","sha":"c5d49ddad0af96a984a68baaf8f6f6a3bd59abc0"},{"file":"sc3d\/nita_tex.ktx","sha":"6d480fc270c9285682290856821ef16c03dea72b"},{"file":"sc3d\/nita_tex.pvr","sha":"e4c49b1d0ae59f4818ca896d5d89846673152de4"},{"file":"sc3d\/nita_walk.scw","sha":"d5289877c1729bc452179acc4670918b4cef3c81"},{"file":"sc3d\/nita_win.scw","sha":"d47eb798aad626ae517fa2e8d07ebe6e7ff74652"},{"file":"sc3d\/pam_base_cam.scw","sha":"3249c15ca88a1ec9156a690cc4510bc4652ec0cc"},{"file":"sc3d\/pam_tex.ktx","sha":"e74b1d3814d44e8599e958cfb6b70e1f67d37bff"},{"file":"sc3d\/pam_tex.pvr","sha":"fc78e930f69ef927b128de00af52a14b86201bff"},{"file":"sc3d\/park_bench_1.scw","sha":"2b5e837f4af978ab5f754b2db11fbc1bd6c37e2c"},{"file":"sc3d\/penny_base_cam.scw","sha":"f7248f7a32f6519d06cc690d8eb8ca902fa4b351"},{"file":"sc3d\/penny_bunny_geo.scw","sha":"1a2cc6416792a5c0a173db48aadc5475ea3dbc44"},{"file":"sc3d\/penny_bunny_tex.ktx","sha":"27c8af3211d303df05a33cb18514d7cac23a091f"},{"file":"sc3d\/penny_bunny_tex.pvr","sha":"790473ef284c7949012e6559d4b5b3fdbaa063d4"},{"file":"sc3d\/penny_bunny_walk.scw","sha":"54ae430aabfe9271eb97d06549dd7dd064acfce2"},{"file":"sc3d\/penny_bunny_win.scw","sha":"bf85ad5db314d7e5580190d561360595d863a05c"},{"file":"sc3d\/penny_bunnydark_tex.ktx","sha":"463d13f61ff04e377334d3238b218c4d26b549a6"},{"file":"sc3d\/penny_bunnydark_tex.pvr","sha":"17cdebaf009fb665343b59237d3f7271fec3110d"},{"file":"sc3d\/penny_darkbunny_geo.scw","sha":"6dedce6fa8b8f298ff47bc8ec6be5a20b891564b"},{"file":"sc3d\/penny_elf_geo.scw","sha":"7b5b35b1d1212338def1b1900909e9f2c2a343ad"},{"file":"sc3d\/penny_elf_tex.ktx","sha":"0d7d932ac100f738145cd5e6b51cd3caff9833e2"},{"file":"sc3d\/penny_elf_tex.pvr","sha":"25f5e2ec4bb13e448705a62d56d88ba93a30ef72"},{"file":"sc3d\/penny_elf_turret_geo.scw","sha":"1ac3a16d9b8e6ff2957d8bfc32592f6f040da415"},{"file":"sc3d\/pinball_bumper.scw","sha":"4694684c22ded11fe73588dfd1e2a908f6a38d92"},{"file":"sc3d\/piper_attack.scw","sha":"605ff135171fdbae075b87c91c82aab087a88286"},{"file":"sc3d\/piper_base_cam.scw","sha":"2d7ccbe2735feb203d7d29469f10b3f9a6637690"},{"file":"sc3d\/piper_gadget_pistol_attack.scw","sha":"3d5d2be08504aad838db16bb12d546a0ed2924aa"},{"file":"sc3d\/piper_gadget_pistol_geo.scw","sha":"9fd8e39ce40f1db90d8f9a94b4f564d63282a1d3"},{"file":"sc3d\/piper_geo.scw","sha":"7a815e4aabb65210f8876591dbd48a117e3a4ea8"},{"file":"sc3d\/piper_idle.scw","sha":"72be1d8292d5cfae22a168fa8cebd8cca473fc02"},{"file":"sc3d\/piper_lose.scw","sha":"5c9987fd467dac64abb62842b1574ec3b3c168a4"},{"file":"sc3d\/piper_pink_tex.ktx","sha":"6a6d89e6555e2ac2637e48f468ec69498d927fef"},{"file":"sc3d\/piper_pink_tex.pvr","sha":"eb9226e438994fc7198468bf9b5a8085002575aa"},{"file":"sc3d\/piper_portrait.scw","sha":"92b768e71b0bbe55041625f40fd0b7049e1aa1a4"},{"file":"sc3d\/piper_pushback.scw","sha":"793c3ea9b9a02142745dfdc100f57c40f8fb800f"},{"file":"sc3d\/piper_rose.scw","sha":"fb380e62f86d4ea4ba5f86336d71018fddddfeb6"},{"file":"sc3d\/piper_rose_geo.scw","sha":"9687e6ab193bc74c9bc8a3456460d2f28ca88378"},{"file":"sc3d\/piper_rose_tex.ktx","sha":"125c7e9cad529b8c415f6da29599ad7c6b914262"},{"file":"sc3d\/piper_rose_tex.pvr","sha":"9c56f324220f0b5d31c6156dc0f53d47de373ce8"},{"file":"sc3d\/piper_super.scw","sha":"3cea736ddf76e25d3dd8f0fa16d01d47d93e4033"},{"file":"sc3d\/piper_tex.ktx","sha":"82c7bb7acd45c4871ea4516c52e1770e4933920a"},{"file":"sc3d\/piper_tex.pvr","sha":"f132853d76fc7cca11c29cf61bad1a4c9316d0b4"},{"file":"sc3d\/piper_valentines_attack.scw","sha":"68b66b22298adfad4e0b792a218d7b2e774dc930"},{"file":"sc3d\/piper_valentines_cam.scw","sha":"2e5cd5225dcabcc9b42eb42be96db3742917ae29"},{"file":"sc3d\/piper_valentines_geo.scw","sha":"527a57a3d83f5da445192282a17fb2c24e64ad49"},{"file":"sc3d\/piper_valentines_idle.scw","sha":"3de41abe6f0dfa381c65b672d5482b2ff4294ab4"},{"file":"sc3d\/piper_valentines_lose.scw","sha":"35c577cd53174892be68762eccb4db982a843084"},{"file":"sc3d\/piper_valentines_reload.scw","sha":"68b66b22298adfad4e0b792a218d7b2e774dc930"},{"file":"sc3d\/piper_valentines_run.scw","sha":"23f3b460f4e279d49bdd808aa7dbca69b4c93f99"},{"file":"sc3d\/piper_valentines_tex.ktx","sha":"81367b532e8bef21e354fd33ef55be21a4b48ff5"},{"file":"sc3d\/piper_valentines_tex.pvr","sha":"712856c62aa6f7172903e8355d26529857c87961"},{"file":"sc3d\/piper_valentines_win.scw","sha":"07d3572b541066b303d0ba73d5cc1fd205d17be2"},{"file":"sc3d\/piper_walk.scw","sha":"da732d7dbc29e30289e7c6e4b6e88c206fb634b3"},{"file":"sc3d\/piper_win.scw","sha":"609580157cf6c659b523f6bd8b7bfebc19e96c6a"},{"file":"sc3d\/pirate_chest.scw","sha":"b754d21c16116e5be9f10b560af8c1d5ba73a2af"},{"file":"sc3d\/plant_1.ktx","sha":"885acf33e6ca81329f532d3c3dedade6b477221f"},{"file":"sc3d\/plant_1.pvr","sha":"fab446391b0fc6aa3b7c80498a5d0a826752eeef"},{"file":"sc3d\/plant_1_small.scw","sha":"fb7fcd2afae884f6174cbb21ee429edc505a8d5f"},{"file":"sc3d\/plant_retropolis_small.scw","sha":"7ccc506653a0f48ae401986ee5b436fea977e6ad"},{"file":"sc3d\/poco_attack.scw","sha":"5b236d612f1045fc387442107d7a71a4c8aabd08"},{"file":"sc3d\/poco_base_cam.scw","sha":"cf09fd58debd758cad6c28204477e27909bcbc58"},{"file":"sc3d\/poco_geo.scw","sha":"aee7b7e8d003b385faf3cca6535db210df8df9ec"},{"file":"sc3d\/poco_idle.scw","sha":"5612468f1206a16cc0bd0b5404ed60b41e4a1ec8"},{"file":"sc3d\/poco_lose.scw","sha":"d10e8a5b19d2e33345d0a201ee0c2a2013321a62"},{"file":"sc3d\/poco_pirate_geo.scw","sha":"9709edb469ae667246952280079e8ddad3afe7a5"},{"file":"sc3d\/poco_pirate_idle.scw","sha":"cbbdac481247920bb1c6239677a6f819b003b537"},{"file":"sc3d\/poco_pirate_lose.scw","sha":"a3dfa235dd8b3eb0ac0224f00d552b11914d6d5c"},{"file":"sc3d\/poco_pirate_tex.ktx","sha":"33d4e342e85edec4fe2bb9f386e4b2c3108c1983"},{"file":"sc3d\/poco_pirate_tex.pvr","sha":"97fd3a98353d1ea59536c501a90c9cc0032cde4b"},{"file":"sc3d\/poco_pirate_walk.scw","sha":"f73c8f9273a82b376520ccb6d93f8d2d8394916c"},{"file":"sc3d\/poco_pirate_win.scw","sha":"205115c78fc8b6bcb06307c2551c3f9ee713151d"},{"file":"sc3d\/poco_tex.ktx","sha":"e60039a6532060df1d18a8e4db4ceed5427bb90c"},{"file":"sc3d\/poco_tex.pvr","sha":"5690e86a1d0ea278fa727da8df3310d9589a352f"},{"file":"sc3d\/poco_valentine_geo.scw","sha":"426cc1ace15447cac29f4b6ed17acc8d2443ced6"},{"file":"sc3d\/poco_valentine_tex.ktx","sha":"27ec63f393b543dedc08936aa7210e824fd01cdc"},{"file":"sc3d\/poco_valentine_tex.pvr","sha":"36ff34074f2f1db85bf56213bdee7a26fec82261"},{"file":"sc3d\/poco_walk.scw","sha":"fc4215a26a5faaf2188626f30e7d32cf1b15a45e"},{"file":"sc3d\/poco_win.scw","sha":"2c9fedd5693b8525111130eedfdd031f28875574"},{"file":"sc3d\/portrait_cam.scw","sha":"268abca8f84fb597c11ab2f7f1de1118bb1ccaa0"},{"file":"sc3d\/pothole.scw","sha":"3f4f4c9ba6671c9ff3737623930ad85f3b8e5b4b"},{"file":"sc3d\/potted_plant_1.ktx","sha":"8951eeac6ee23d2fbc58976f44830ae5766db8f8"},{"file":"sc3d\/potted_plant_1.pvr","sha":"f7529504cece6e09389af03e7c7903f0d02d52f2"},{"file":"sc3d\/potted_plant_1.scw","sha":"5180465ceb3588226b76039ea3dd19784baf42cd"},{"file":"sc3d\/present_pile_xmas.scw","sha":"bddf15f5427d9efdd34c4b7953d59dfc3df9d744"},{"file":"sc3d\/primo_003_atk_projectile_alpha.ktx","sha":"ed04e725ed66e1a412699b4f9d9c381fd20c0688"},{"file":"sc3d\/primo_003_atk_projectile_alpha.pvr","sha":"dd06a1282784d7824e7539876389103c474b9f0d"},{"file":"sc3d\/primo_003_atk_projectile_blue.ktx","sha":"e92bbca82ac6210ccf0a98cced7e3add47b17f45"},{"file":"sc3d\/primo_003_atk_projectile_blue.pvr","sha":"f8f501e93a062b75767dfdbb83b1935f1aaa91e6"},{"file":"sc3d\/primo_003_atk_projectile_blue.scw","sha":"ae52d484e1a8e15dfc56adc74f4d9969b43e3f49"},{"file":"sc3d\/primo_003_atk_projectile_red.ktx","sha":"21c139b8c67c30b4cbbab286a25c89d4380e37b9"},{"file":"sc3d\/primo_003_atk_projectile_red.pvr","sha":"bf8c3516278037e914012e475222212923daa2eb"},{"file":"sc3d\/primo_003_atk_projectile_red.scw","sha":"1f8f10fceb0fafb6d4321d447bcd8f0a8c6e00d9"},{"file":"sc3d\/primo_attack.scw","sha":"d1e1887523be02baddca7b72a77d07a0936516e5"},{"file":"sc3d\/primo_base_cam.scw","sha":"8858c053470ab30747255e9d674a659ffbd4b3bb"},{"file":"sc3d\/primo_brown_attack.scw","sha":"b69d9493df0c102d17bd97ef01ca33370f7d7409"},{"file":"sc3d\/primo_brown_gadget_flip_attack.scw","sha":"9c45442bb0f6737719f1c786a3de7acc19aceb3c"},{"file":"sc3d\/primo_brown_geo.scw","sha":"9e19cdd12a898f69a775e34c5a96decf58f230ca"},{"file":"sc3d\/primo_brown_idle.scw","sha":"ff94a6eab99df77c655772581cb163df81400d97"},{"file":"sc3d\/primo_brown_lose.scw","sha":"4dfc17a82856ac03a0af22e44a42c7227bbcd181"},{"file":"sc3d\/primo_brown_portrait.scw","sha":"0101e9003436de5b72cbb6ff18e08cdf3a36c2fb"},{"file":"sc3d\/primo_brown_pushback.scw","sha":"1f8d38ba4001a2392c69922e00b6e110e8562776"},{"file":"sc3d\/primo_brown_super.scw","sha":"cc692daadc45be967d78890ab1d7bf3478d8392a"},{"file":"sc3d\/primo_brown_tex.ktx","sha":"a6245ad186297d6ac9bae49f2b6a16258cff2f78"},{"file":"sc3d\/primo_brown_tex.pvr","sha":"a57010e8a8040d93720407cd6d31aff4eafb574f"},{"file":"sc3d\/primo_brown_walk.scw","sha":"e39e05186a883fdb2dac8cb509ed5f0497fc24cb"},{"file":"sc3d\/primo_brown_win.scw","sha":"c0a63969d7334366fc4d807c37f4e4a6213d1078"},{"file":"sc3d\/primo_def_atk_projectile_alpha.ktx","sha":"834a83a8b21f60778a85a44fe7a2a20f429a7a0a"},{"file":"sc3d\/primo_def_atk_projectile_alpha.pvr","sha":"0ca01792eb813bf3d1c4705a05790aa9d78998c3"},{"file":"sc3d\/primo_def_atk_projectile_blue.ktx","sha":"a7890e62fff88830de5232e84739b5b7aa13ec92"},{"file":"sc3d\/primo_def_atk_projectile_blue.pvr","sha":"b9be5561ecbc557bbdcc0ae18a21a1f8b3d5b253"},{"file":"sc3d\/primo_def_atk_projectile_blue.scw","sha":"2f1df967ae7e4293156dbc00f5d4c20cf77d87ba"},{"file":"sc3d\/primo_def_atk_projectile_red.ktx","sha":"b46b9f896e3e5b69b87a9960026e44dabe66bb5d"},{"file":"sc3d\/primo_def_atk_projectile_red.pvr","sha":"23c3d17419e3920c4bd5bbe51bcca4cdd7c97ad7"},{"file":"sc3d\/primo_def_atk_projectile_red.scw","sha":"e1e760b688458ab4ad307bb1c66274f8b7d7d242"},{"file":"sc3d\/primo_elrey_geo.scw","sha":"d8c320581d23dbf5d696f2974251259657c3e987"},{"file":"sc3d\/primo_elrey_tex.ktx","sha":"3a5b4131245e90547680ca44cfbb7e6926384036"},{"file":"sc3d\/primo_elrey_tex.pvr","sha":"1977bd0907a82ba10dc6c74404a964cf6f638d09"},{"file":"sc3d\/primo_elrudo_geo.scw","sha":"ed82096387268f7592610c4e7043d4b2762fdbd8"},{"file":"sc3d\/primo_elrudo_portrait.scw","sha":"ce51ea9f5665fc43021a361c39c2c2d5b0e081c4"},{"file":"sc3d\/primo_elrudo_tex.ktx","sha":"297105cafe04c1f28fc0ba96bd35d9322fdf0628"},{"file":"sc3d\/primo_elrudo_tex.pvr","sha":"dcedc2b78e1c776f48472ecce18cb71cdc8b75b4"},{"file":"sc3d\/primo_elrudo_win.scw","sha":"541e728142396d29e044ce409ffff2199d4a4cb1"},{"file":"sc3d\/primo_gadget_flip_attack.scw","sha":"18284851360e4ca347b19f2492a50cc284b34a7d"},{"file":"sc3d\/primo_geo.scw","sha":"c04ee42e6cf1f027fdb3387e6eef47fa89fceafe"},{"file":"sc3d\/primo_idle.scw","sha":"09a8f55cb8abbf5a3db566cab7c3b139c4c7be52"},{"file":"sc3d\/primo_lose.scw","sha":"556c06b06b7e30fc0ea457e2c2888d674b415798"},{"file":"sc3d\/primo_portrait.scw","sha":"5c615f11bc4358f87e2ac606d9c19c5f3e7574cc"},{"file":"sc3d\/primo_rey_attack.scw","sha":"d818543f30c262f25240ac1358982b475857c2df"},{"file":"sc3d\/primo_rey_idle.scw","sha":"5e967880dd2c389d0322d0fe3413103f81fdabc5"},{"file":"sc3d\/primo_rey_lose.scw","sha":"99466edcff0a6a4bb1ae06ba4a3e57991cf9177c"},{"file":"sc3d\/primo_rey_super.scw","sha":"8640f0f31ff1629bd2ae8c9b1749b151515fca0a"},{"file":"sc3d\/primo_rey_walk.scw","sha":"873046c623be1e37af9629ab6f1d3e5c0421716e"},{"file":"sc3d\/primo_rey_win.scw","sha":"7e59a8f1f4001fa8ca19a0dc56baa248683a8119"},{"file":"sc3d\/primo_super.scw","sha":"f7ad04683ac187ef0f10669551222acb0c794462"},{"file":"sc3d\/primo_tex.ktx","sha":"c6da735a15df81e8e7778e00ceabf0157009494d"},{"file":"sc3d\/primo_tex.pvr","sha":"51480db1a5e10dca97549cf502e85ed91ed082d6"},{"file":"sc3d\/primo_walk.scw","sha":"4188962cde8e88d7b24865802c8c328301c8dc32"},{"file":"sc3d\/primo_win.scw","sha":"cc8072dcdb777430b335e8f6c764b1a915c96cff"},{"file":"sc3d\/rangedbot_attack1.scw","sha":"71a32fb6eaac4f95e3457373d76729d4ab3fa865"},{"file":"sc3d\/rangedbot_geo.scw","sha":"13a56b982844fd903471a90ac4046e4a5d545131"},{"file":"sc3d\/rangedbot_idle.scw","sha":"4d175f027a6f08ff7683a99fbb6afe659b1642be"},{"file":"sc3d\/rangedbot_lose1.scw","sha":"411e1f8d289a31e52cf89a3a9f0e2fedc7c789f5"},{"file":"sc3d\/rangedbot_loseloop1.scw","sha":"34ac8ce4579609abde1da9a1c70c7d50de4b9f6e"},{"file":"sc3d\/rangedbot_recoil.scw","sha":"868563f93af4d4300d2f82d0bf1bf8e042a4fec3"},{"file":"sc3d\/rangedbot_reload.scw","sha":"24e93c5dc48e7ac29b31199ef21518beb77e99c6"},{"file":"sc3d\/rangedbot_tex.ktx","sha":"adde4060b3315906637bf3c603db4f917a311186"},{"file":"sc3d\/rangedbot_tex.pvr","sha":"193fe5ee46fe74d7812b8f1bf92ac4ee399ac660"},{"file":"sc3d\/rangedbot_walk.scw","sha":"bee7abb6651631dbe2fe526ebc77b028b32b0a96"},{"file":"sc3d\/rangedbot_win1.scw","sha":"8844d1ce582227f8ddc59c0d805da38e17056094"},{"file":"sc3d\/rangedbot_winloop1.scw","sha":"a416f4deafb5f45e1ab063370663402153481604"},{"file":"sc3d\/recoil.scw","sha":"b634dc0ec7b834a3c955ca9917d3d1ad5d8ee14e"},{"file":"sc3d\/recoil_2.scw","sha":"bed60e0789b66742e739f2afd3311311d2b05d07"},{"file":"sc3d\/retropolis_fence.scw","sha":"528623c721e13383a299b72ec21b36b04003faa5"},{"file":"sc3d\/rickoshea_attack1.scw","sha":"71a32fb6eaac4f95e3457373d76729d4ab3fa865"},{"file":"sc3d\/rickoshea_geo.scw","sha":"a0395d74ac5024cff5ed30bec4bf87d8a6da6370"},{"file":"sc3d\/rickoshea_gold_tex.ktx","sha":"e3215b2244934df7fb9b389b14295841b98ae7df"},{"file":"sc3d\/rickoshea_gold_tex.pvr","sha":"a11ed91ae5316922553c4a8f85a444969f9f4ffd"},{"file":"sc3d\/rickoshea_idle.scw","sha":"4d175f027a6f08ff7683a99fbb6afe659b1642be"},{"file":"sc3d\/rickoshea_lose1.scw","sha":"411e1f8d289a31e52cf89a3a9f0e2fedc7c789f5"},{"file":"sc3d\/rickoshea_loseloop1.scw","sha":"34ac8ce4579609abde1da9a1c70c7d50de4b9f6e"},{"file":"sc3d\/rickoshea_recoil.scw","sha":"868563f93af4d4300d2f82d0bf1bf8e042a4fec3"},{"file":"sc3d\/rickoshea_reload.scw","sha":"24e93c5dc48e7ac29b31199ef21518beb77e99c6"},{"file":"sc3d\/rickoshea_tex.ktx","sha":"b3b14751d55d57773233ac69cdd35f88ff395d80"},{"file":"sc3d\/rickoshea_tex.pvr","sha":"fd39a361382da6b2c6388f9b46931443cef18deb"},{"file":"sc3d\/rickoshea_walk.scw","sha":"bee7abb6651631dbe2fe526ebc77b028b32b0a96"},{"file":"sc3d\/rickoshea_win1.scw","sha":"8844d1ce582227f8ddc59c0d805da38e17056094"},{"file":"sc3d\/rickoshea_winloop1.scw","sha":"a416f4deafb5f45e1ab063370663402153481604"},{"file":"sc3d\/rico_attack.scw","sha":"c02f945e3779169bfaa6de59a63da546cc7644bb"},{"file":"sc3d\/rico_base_cam.scw","sha":"f08a0e40f726a70c628f9db8b770b3beafd29f7e"},{"file":"sc3d\/rico_geo.scw","sha":"68328c3b75cffc694e62e62779cce487358a6801"},{"file":"sc3d\/rico_gold_attack.scw","sha":"582804f7692e7dd26787d76079b97bebe77fa442"},{"file":"sc3d\/rico_gold_geo.scw","sha":"bfd95ed1f9f14672ced72f6646d73dcb0eadc5e3"},{"file":"sc3d\/rico_gold_idle.scw","sha":"0d7d235ae99b83cf6b217de9a89ac1b8498b1948"},{"file":"sc3d\/rico_gold_lose.scw","sha":"5037f974d8c6c91ceda354390ca622b3641116b3"},{"file":"sc3d\/rico_gold_tex.ktx","sha":"83c1a47ae89664626b5304ad20bd38ce5f830c7d"},{"file":"sc3d\/rico_gold_tex.pvr","sha":"53c094517d49d8046fd384024ba42514158c2d8e"},{"file":"sc3d\/rico_gold_walk.scw","sha":"fa2bf2897f5ed73ed33cacb7f6d1774874f89345"},{"file":"sc3d\/rico_gold_win.scw","sha":"08ae921f068de74a49c0dbcbbe9184e2d7bc70e3"},{"file":"sc3d\/rico_gold_win_test.scw","sha":"13b137717f262c0fe045eb6abe945ee41f3d1117"},{"file":"sc3d\/rico_idle.scw","sha":"96f5a67462a52670b517aabb596661fb01b03748"},{"file":"sc3d\/rico_lose.scw","sha":"a052c7313f11f4a42cf6eafe91e55598cbd198fc"},{"file":"sc3d\/rico_og_geo.scw","sha":"5f0d12631abfe070e313ce5bd0dc109afcb96567"},{"file":"sc3d\/rico_og_tex.ktx","sha":"7689d8a6a163e749eec38bde965604bb493186a1"},{"file":"sc3d\/rico_og_tex.pvr","sha":"6d64af30bc2dd68e7da367ea702f2100e3cc54cf"},{"file":"sc3d\/rico_popcorn_geo.scw","sha":"82e4b03d155328950a904bc6134b8c1f731d820f"},{"file":"sc3d\/rico_popcorn_idle.scw","sha":"e84bc970ab7b2819ce1541ff69b3aed0eb29ec2f"},{"file":"sc3d\/rico_popcorn_lose.scw","sha":"90f49fd632dd6013a16b63144a112ce4336db4f2"},{"file":"sc3d\/rico_popcorn_tex.ktx","sha":"dc716b3c9298cac1957e5970ea80a5c4421efe2f"},{"file":"sc3d\/rico_popcorn_tex.pvr","sha":"91cdc4c8d3299ff7961d0ddbc3bf5ffed8d9abb5"},{"file":"sc3d\/rico_popcorn_win.scw","sha":"606dbeab8919eb1b082e59bc18f4c146a59003b3"},{"file":"sc3d\/rico_tex.ktx","sha":"cc06b823441813b02005791ea0df0ad626fbe853"},{"file":"sc3d\/rico_tex.pvr","sha":"e82b14d56524c1226736a3e6e898d6a329614048"},{"file":"sc3d\/rico_walk.scw","sha":"e0fadb41859b22307a301c26e9cfe0b7ce22e079"},{"file":"sc3d\/rico_win.scw","sha":"f11b45f603c021e1ab092a47a4c1b19311c0f022"},{"file":"sc3d\/rock1.scw","sha":"ecb5855c1d50b48789832eb1524d54fac5adceaa"},{"file":"sc3d\/rock2.scw","sha":"e721d5e500407e984124aab966af0c84be281e32"},{"file":"sc3d\/rock_1.ktx","sha":"310c42d1f503df709ef644526ad59d72f0298748"},{"file":"sc3d\/rock_1.pvr","sha":"9f8ad83768d35eda5fe0fbe49ea0445702d38a9f"},{"file":"sc3d\/rock_2.ktx","sha":"60ed45444086c58e5c387dde4c8c011b2090b5d4"},{"file":"sc3d\/rock_2.pvr","sha":"cd70558e6a6f724f39f4ac0aaf43fc2dced54a51"},{"file":"sc3d\/rock_mortuary_1.scw","sha":"e37c3caad9716e33ade5f8daf2abc52cceb716a4"},{"file":"sc3d\/rock_retropolis_1.scw","sha":"50efe4227c055932b9ee4da4745fa1779834ca75"},{"file":"sc3d\/rock_town_1.scw","sha":"1c80ed49f6d340864d5c09bb050f4c453f0f4bef"},{"file":"sc3d\/rosa_attack.scw","sha":"f9e57446a9d2ee578614839acd4b91915564d485"},{"file":"sc3d\/rosa_attack_transform.scw","sha":"5344dc66facb7d06b17e7b7d941b96b2df6c347b"},{"file":"sc3d\/rosa_base_cam.scw","sha":"966a3b084d149b6f814919d8a3fb6389b77de4b5"},{"file":"sc3d\/rosa_def_atk_projectile_alpha.ktx","sha":"e83628256c30247e27222f95642db24fba09b941"},{"file":"sc3d\/rosa_def_atk_projectile_alpha.pvr","sha":"0996d06c72599f59a8196c8e6070009523d6da9a"},{"file":"sc3d\/rosa_def_atk_projectile_blue.ktx","sha":"c296d1e52b72bc23bc1cd3e3363ccc7957075bb4"},{"file":"sc3d\/rosa_def_atk_projectile_blue.pvr","sha":"b9f8757e00aa8a15727e62ea69bf9029bd6f42d5"},{"file":"sc3d\/rosa_def_atk_projectile_blue.scw","sha":"59ffc0f5d685890981f2ff3250068c72ed636ccc"},{"file":"sc3d\/rosa_def_atk_projectile_red.ktx","sha":"ca6941214429ff7fae347746480c5dc37f8c39db"},{"file":"sc3d\/rosa_def_atk_projectile_red.pvr","sha":"3c75d2e6a7e0dbde5e134b96f30e05b7ddd40dfe"},{"file":"sc3d\/rosa_def_atk_projectile_red.scw","sha":"ba3290b5209e2008e1bf3c232cc255f6160feae5"},{"file":"sc3d\/rosa_detransform.scw","sha":"1f83a90b4485175e0111bd31a525bd0ea9c1f3e0"},{"file":"sc3d\/rosa_geo.scw","sha":"519f798eb860ad48d87be8cd7a3d339b0322d9e9"},{"file":"sc3d\/rosa_idle.scw","sha":"8f2cc369068b5e8d4b6609b5eeafe277ac5b5692"},{"file":"sc3d\/rosa_idle_transform.scw","sha":"cb8eb1338a9c5fcbcd8cff6581de37b67682b353"},{"file":"sc3d\/rosa_lose.scw","sha":"ebca656a78fe9bc68380b503dde11e7ad2396368"},{"file":"sc3d\/rosa_tex.ktx","sha":"a521cf8e5716d96a4054933ba9ef13f75e2d75c2"},{"file":"sc3d\/rosa_tex.pvr","sha":"6f373020474a97767d2f7e5d681d26894a47173c"},{"file":"sc3d\/rosa_transform_tex.ktx","sha":"de19e5bda63b1a3a3b61d303f3485c9a56c64e72"},{"file":"sc3d\/rosa_transform_tex.pvr","sha":"cc592c8b0f3ab6b1fbd27ed7a0029f10412d5246"},{"file":"sc3d\/rosa_ult.scw","sha":"5cd6e947ebd3ad88e1259514ed2bd397614ff7c1"},{"file":"sc3d\/rosa_walk.scw","sha":"cd426b5e9337e80b048cf1a15507310819afb3e4"},{"file":"sc3d\/rosa_walk_transform.scw","sha":"70ec75890c241c70f465f6ce07dcdc241128b486"},{"file":"sc3d\/rosa_win.scw","sha":"ab323118a3cdb053f0b3f709842a78567e95073e"},{"file":"sc3d\/sandy_attack.scw","sha":"fa7257dadc208a02de839410b4d1a09ccd6c7c15"},{"file":"sc3d\/sandy_base_cam.scw","sha":"932c00352a69442be7e672bf5601a2bca69decd9"},{"file":"sc3d\/sandy_def_ulti.ktx","sha":"70561236164db5b9b7894ca2e202b4b4c6fd25b4"},{"file":"sc3d\/sandy_def_ulti.pvr","sha":"b63b4903a968f43197ebc8e85561bdad2d5129ab"},{"file":"sc3d\/sandy_def_ulti.scw","sha":"9043e8ba368463ab61351b2f56258fb744d284df"},{"file":"sc3d\/sandy_geo.scw","sha":"bbd5438fd7af932259d0b199926cd23c7051ecf5"},{"file":"sc3d\/sandy_idle.scw","sha":"ad0823b26d880995b7fdca51b70e3bffa3c4fa20"},{"file":"sc3d\/sandy_pushback.scw","sha":"6486e024951257f6bffba15884e65bc186880770"},{"file":"sc3d\/sandy_tex.ktx","sha":"b6b23446fde77fb9e1815eab19eb2695490e86ba"},{"file":"sc3d\/sandy_tex.pvr","sha":"fa7a0ac6128d24a7e558ec621ed2ceb62310a91c"},{"file":"sc3d\/sandy_walk.scw","sha":"68d905ad8b1fd53d7ac393595a58fc5f84c12956"},{"file":"sc3d\/sandy_win.scw","sha":"6a9e80aa22e615c6a699ab8651293d2051a1ed36"},{"file":"sc3d\/seaweed_small.scw","sha":"a1b535566106800c5ba0639f9ce7793314bec26a"},{"file":"sc3d\/shark_leon_geo.scw","sha":"2d47e978d2dc4dba5338e6f4a24007ada2960f48"},{"file":"sc3d\/shark_leon_tex.ktx","sha":"28ac3d30429413d0af9f95d0d875ccfcd96b9ed6"},{"file":"sc3d\/shark_leon_tex.pvr","sha":"88515b4b1e3b7a0792deff19787bc26b54012f07"},{"file":"sc3d\/shelly_attack.scw","sha":"8e43c75a5be0d49f381ae67cc7b7fa61b1101057"},{"file":"sc3d\/shelly_attack1.scw","sha":"0621a813e20d6ee4047e4a542caf6e179d929805"},{"file":"sc3d\/shelly_bandita_attack.scw","sha":"b243a9bfb276c252ebf6ffd267a0a573880ae9eb"},{"file":"sc3d\/shelly_bandita_geo.scw","sha":"d37403d96ddd422139f1b22d873b535b3590d860"},{"file":"sc3d\/shelly_bandita_idle.scw","sha":"96f6a6b76e2d9dc23f2c399b26a01ac59897574f"},{"file":"sc3d\/shelly_bandita_lose.scw","sha":"d3465c8af2764065a81063fd3a69f272b652b4a1"},{"file":"sc3d\/shelly_bandita_reload.scw","sha":"0c8216c908a848927af82a9ad883b119106aa1f2"},{"file":"sc3d\/shelly_bandita_tex.ktx","sha":"7ede296d2fc926b4a065b4aecb52c61af665f36f"},{"file":"sc3d\/shelly_bandita_tex.pvr","sha":"adf059965110fba7668d9ce908fedf5d8f47ca84"},{"file":"sc3d\/shelly_bandita_walk.scw","sha":"8bda578c41839f3fe2a7c149bf16518e0b2aaa3d"},{"file":"sc3d\/shelly_bandita_win.scw","sha":"f400d2c68ae892e9bf160f75bdca9b47c74cc2ee"},{"file":"sc3d\/shelly_bandito_d_01.ktx","sha":"ec51af85f0a99a7f1e5f0120df0944d05a48389a"},{"file":"sc3d\/shelly_bandito_d_01.pvr","sha":"70e93b46ea1f3ac9ffd68ceb64df357803fd1faa"},{"file":"sc3d\/shelly_base_cam.scw","sha":"0757c59d0a04349a05f4a0f4d1743e027cc2aa34"},{"file":"sc3d\/shelly_fb_geo.scw","sha":"6410986fcc100b9dc9ca2ea4e631a5438c3441ef"},{"file":"sc3d\/shelly_fb_tex.ktx","sha":"84aff5bc110da60f8e6f94b2f4d27b4ba7925a17"},{"file":"sc3d\/shelly_fb_tex.pvr","sha":"ad74b746155c25eb2bf857252e09e2a423d0d13f"},{"file":"sc3d\/shelly_geo.scw","sha":"e39ce4c36d7fc7aad9c89276040dc1c665d95043"},{"file":"sc3d\/shelly_idle.scw","sha":"4755e4761b9490ecfef02d2d6dcd809f65c26248"},{"file":"sc3d\/shelly_lose.scw","sha":"748d1421fdeec671919b1de704b38a036677a1fe"},{"file":"sc3d\/shelly_lose1.scw","sha":"a5f03867994cd419d2b53f6f02cb1da2d8023446"},{"file":"sc3d\/shelly_loseloop1.scw","sha":"08900367f1c97ab932825cc6692ee5d0fda084bd"},{"file":"sc3d\/shelly_prereg_01.ktx","sha":"2acfa1bc9c3691209060b05125410fb4bade1bd8"},{"file":"sc3d\/shelly_prereg_01.pvr","sha":"ba3d48e5adc74d013e747ccf4282e7d92233ee45"},{"file":"sc3d\/shelly_prereg_attack.scw","sha":"43ef489ff938d81a5eed6b60464bccdc69751343"},{"file":"sc3d\/shelly_prereg_geo.scw","sha":"ff563490f928a5bcc49f13acce34d53d3527602c"},{"file":"sc3d\/shelly_prereg_idle.scw","sha":"f345c9f086154301f7685d427d85c31e16e4c66c"},{"file":"sc3d\/shelly_prereg_lose.scw","sha":"471cff016f38043dcf949a7da7685480c238e57d"},{"file":"sc3d\/shelly_prereg_pushback.scw","sha":"61cccddf89e8afdc5aa2ee7a9f9bd214b79cefa7"},{"file":"sc3d\/shelly_prereg_reload.scw","sha":"ef0b6b2a93ca154e9a25a73fd850c068540a867d"},{"file":"sc3d\/shelly_prereg_walk.scw","sha":"b4b26db7b10599a1df3276d55765f87e9f753d59"},{"file":"sc3d\/shelly_prereg_win.scw","sha":"0adfbf3d2ffd5fbc73046101551abb6627fca9ad"},{"file":"sc3d\/shelly_pushback.scw","sha":"de47952f0d45745d2781114f8362b29fba5ce490"},{"file":"sc3d\/shelly_recoil1.scw","sha":"b850005ad7299dea70911413ca5398e8b8c3c540"},{"file":"sc3d\/shelly_reload.scw","sha":"f35eb6a6c2610951eaad7f13572ffcdd49648e35"},{"file":"sc3d\/shelly_tex.ktx","sha":"6ea44f5d2a68ba7bafaa61f960bf4901776754ab"},{"file":"sc3d\/shelly_tex.pvr","sha":"6037b18f5da301549dd68dac9fc96aa28b0c5027"},{"file":"sc3d\/shelly_v2_01.ktx","sha":"3fde9d40e9f0e2259ef10c3d4909d796b124c48c"},{"file":"sc3d\/shelly_v2_01.pvr","sha":"0e437acd1b3dbad698b14878174300d42f9016eb"},{"file":"sc3d\/shelly_walk.scw","sha":"f01e5d0a83b425d1c2d6f3d867b2deb958b0fcb9"},{"file":"sc3d\/shelly_win.scw","sha":"0a0a8101d521359a72ed21710761fc2bd15b6278"},{"file":"sc3d\/shelly_win1.scw","sha":"b61b4ac29f066e3c78a875df5a9f3876555d216e"},{"file":"sc3d\/shelly_winloop1.scw","sha":"2d6a46387dce80370acc18417e74e760e4cc0301"},{"file":"sc3d\/shelly_witch_attack.scw","sha":"3e4c45260b70dbc3af0ee2f79bd9e60736ad90e6"},{"file":"sc3d\/shelly_witch_geo.scw","sha":"45ac77f351edc26a7dcce110ae91ab27145b1ffa"},{"file":"sc3d\/shelly_witch_idle.scw","sha":"85b9fcca5ba9ef1038c0145cfd4f96bcb3835484"},{"file":"sc3d\/shelly_witch_lose.scw","sha":"b90b66bfa96a65b82f03d8313fc6a957dba51698"},{"file":"sc3d\/shelly_witch_reload.scw","sha":"41a455eace993688cf84bc6df009a677cb02ed77"},{"file":"sc3d\/shelly_witch_tex.ktx","sha":"186bc389b734a3b4f42e152eb6680629c02ddd37"},{"file":"sc3d\/shelly_witch_tex.pvr","sha":"e3b6fab218c5e42a86c39f530e8b775f8ef1e2ac"},{"file":"sc3d\/shelly_witch_walk.scw","sha":"b0f9c89cfef6bba987d7feb439653ba713de705c"},{"file":"sc3d\/shelly_witch_win.scw","sha":"5e24b7234d8d17988a6a26bd67faaf50a93dd5f1"},{"file":"sc3d\/shockwave_blue.ktx","sha":"3b7b9a764e530496a749fe8eab0d14377d0be783"},{"file":"sc3d\/shockwave_blue.pvr","sha":"fb684658cdf1820e4af8508930fa97c0c8a1e27f"},{"file":"sc3d\/shockwave_red.ktx","sha":"fbad0123de9f8ea98cf5a05db2d6a1783546451c"},{"file":"sc3d\/shockwave_red.pvr","sha":"fcd3ae35379b721d9753f209bb24054e49b9ac2a"},{"file":"sc3d\/siege_base.ktx","sha":"d5baf54069be3898951bb1bc1466cf4d345405be"},{"file":"sc3d\/siege_base.pvr","sha":"2d112bb58b2eec2bd6166d2ec1ab6c70fd6c3dc5"},{"file":"sc3d\/siege_base.scw","sha":"a269499e5774ad653ad35a0a85ecdf4f3ff81ab4"},{"file":"sc3d\/siege_base_attack.scw","sha":"15a331a2e111b8479d114dd5fdd8c4cd27b0aa38"},{"file":"sc3d\/siege_base_projectile_blue.scw","sha":"191057aa452e5385aaacab996c922aae25eaa033"},{"file":"sc3d\/siege_base_projectile_red.scw","sha":"3bcbf9ea70f43d20bef2e34b979247a040870b72"},{"file":"sc3d\/siege_base_red.ktx","sha":"08b9676d1ac6f681c30bab0f45686a4c2c8e2999"},{"file":"sc3d\/siege_base_red.pvr","sha":"85ba0d2a8adfafc27276b04576535014a2e6ec66"},{"file":"sc3d\/skin_lightmap.png","sha":"98b8d4eb746078f8ac87c526d30c94a5e358106f"},{"file":"sc3d\/skin_specular_lightmap.png","sha":"844e895576ccaf027dfdf0f86a8d8a1b9b3cb601"},{"file":"sc3d\/sleepy_sandy.scw","sha":"130b8d94f3d33bd8990423d60418187e28fc3e29"},{"file":"sc3d\/sleepy_sandy_tex.ktx","sha":"ae6fa848322ed1251c6dcace51ea746a2c4b216a"},{"file":"sc3d\/sleepy_sandy_tex.pvr","sha":"e29b6e72e3cc59183ce2774705a9b0f818fd73b2"},{"file":"sc3d\/sniper_attack1.scw","sha":"783d8b52948f559b1f3ce2a8e20f459be2cc114b"},{"file":"sc3d\/sniper_d_01.ktx","sha":"c81bff5e55b4713ead51166754a5fc34f1d0a4c9"},{"file":"sc3d\/sniper_d_01.pvr","sha":"90bd374dab42e896b4c2574bfbb8fb3a845aa14b"},{"file":"sc3d\/sniper_geo.scw","sha":"29bcd4a5ea7b194c161eeb86e261ae071ebc4cb2"},{"file":"sc3d\/sniper_idle1.scw","sha":"d22b13bb4c388fc89575c05298bf2d9c1194b5d9"},{"file":"sc3d\/sniper_lose1.scw","sha":"b38afab52173ca6f13c2521dbfd6b672d2c76cbc"},{"file":"sc3d\/sniper_recoil1.scw","sha":"9221ee8962cc9f640269f39b47394278e508d392"},{"file":"sc3d\/sniper_ulti1.scw","sha":"00658a89227f6f7ea0a4dc86a9f71e4c1e651632"},{"file":"sc3d\/sniper_walk1.scw","sha":"14b1d0b2adcca8ed1b8e886aebb9bea382d5f83e"},{"file":"sc3d\/sniper_win1.scw","sha":"b499e8b763d49de29f4b38b049b5f6da89d569b6"},{"file":"sc3d\/specular_lightmap.png","sha":"76beef36edaf0d295256ebb11bb9b124431b0e6a"},{"file":"sc3d\/specular_lightmap_night.png","sha":"5079310a27c019af617aecb0c1ecec4b23f71d65"},{"file":"sc3d\/spike_attack.scw","sha":"a08872cce79a75ff56015645f1e7c1c06e142aa5"},{"file":"sc3d\/spike_base_cam.scw","sha":"90ed566bccdf4930b3ef38a7a6f753f3c6b290ee"},{"file":"sc3d\/spike_blossom_geo.scw","sha":"540e6634f1c405edc1f730426d4e087c95815449"},{"file":"sc3d\/spike_blossom_tex.ktx","sha":"41f9dfaaf7ea15eeccc37de40b819fbaa07d85a6"},{"file":"sc3d\/spike_blossom_tex.pvr","sha":"d0e418eb30a452823d4300d81cc55be0cd90b6f8"},{"file":"sc3d\/spike_geo.scw","sha":"bbdf17521d42fa1c71978c4f064abad6905a33ff"},{"file":"sc3d\/spike_idle.scw","sha":"d560c79e1dcee57121a179bc0c788e6c6c9b2add"},{"file":"sc3d\/spike_lose.scw","sha":"b04a7a33f865d7764f92ed37ff4fc404ce53f23a"},{"file":"sc3d\/spike_loseloop.scw","sha":"06fb2be60339ab250ccf00241c352d50b5243135"},{"file":"sc3d\/spike_mecha_geo.scw","sha":"96caf5c5bbb24b8cb4d51a71b29c513c55b3380d"},{"file":"sc3d\/spike_mecha_lose.scw","sha":"7f46da380a69fd780939daaebaf274e2512d9e7d"},{"file":"sc3d\/spike_mecha_tex.ktx","sha":"2168d98451ff82d7fa82472c48bdd3eb95047601"},{"file":"sc3d\/spike_mecha_tex.pvr","sha":"fd1c7b146ba51e986da3e96ee51cfad8e2a6ea22"},{"file":"sc3d\/spike_mecha_walk.scw","sha":"cacd7750c9a59ea6554b45cab60f03ba893988d0"},{"file":"sc3d\/spike_mecha_win.scw","sha":"b2ce131494c1aa1a6b0220558599b98a061149ae"},{"file":"sc3d\/spike_tex.ktx","sha":"af1a6f81d6c9efe27444dbe70f4f5401580370a1"},{"file":"sc3d\/spike_tex.pvr","sha":"ee9bd91ca752cc6eb781ec8bb251aeaaf9401640"},{"file":"sc3d\/spike_walk.scw","sha":"9dd4a63df914d16584ad950dd298e8c7b5257d85"},{"file":"sc3d\/spike_win.scw","sha":"7df19bbc2c0a9207529066ff246e09cfde65d1fe"},{"file":"sc3d\/spring_board.ktx","sha":"341683330e72d6f9fe590fd41d914141ec22785a"},{"file":"sc3d\/spring_board.pvr","sha":"0f0b05db0226c02be643235adbd3e11bc2627193"},{"file":"sc3d\/spring_board.scw","sha":"0b003a6f2ae9191bb62a81a23adeef3327b0ee9f"},{"file":"sc3d\/spring_board_diagonal.scw","sha":"238b24c91c589f00995246afbdc765dc34f0d6af"},{"file":"sc3d\/sprout_attack.scw","sha":"78bc2030fda9c7c4815daea7ede2a6d761aaa3ba"},{"file":"sc3d\/sprout_geo.scw","sha":"4090dff05bc881068a03c12b127f450b0c467c34"},{"file":"sc3d\/sprout_idle.scw","sha":"1597f45d4c1e9e019a1821bfe06046bb564e7c13"},{"file":"sc3d\/sprout_lose.scw","sha":"5e81e9f5f6205a12a80408f3cac131c7d4f62bc4"},{"file":"sc3d\/sprout_portrait.scw","sha":"07aedfda36f6c6d8b951e675471ee2b77b5c0f42"},{"file":"sc3d\/sprout_pushback.scw","sha":"9ce040309268d40f8812a6cdfbc2453746c8a4ef"},{"file":"sc3d\/sprout_reload.scw","sha":"63cc88a3a67d3bc9c580a720e5e65223b514f5f3"},{"file":"sc3d\/sprout_tex.ktx","sha":"287e8b3fc5cd6fc923d065541ddd97bcbadea4f1"},{"file":"sc3d\/sprout_tex.pvr","sha":"dfbe40617a4c2e3123351b1b8e8909a5000422d6"},{"file":"sc3d\/sprout_walk.scw","sha":"10e4cc988e4036fe1516a8069d997eca37000ca5"},{"file":"sc3d\/sprout_win.scw","sha":"dcf9c59a984f9f158aa65bf49f6420a8415b0dad"},{"file":"sc3d\/spruce_snowy.scw","sha":"2d78a3513f936951503e2370f976e54c4698cc62"},{"file":"sc3d\/stack_tire.scw","sha":"a527fb8923f12b9fbfd763b125e62245e4bcdbf3"},{"file":"sc3d\/stone_ruin_1.ktx","sha":"0939a64cc88bc7751cb0193ff70c27ba63ee6af6"},{"file":"sc3d\/stone_ruin_1.pvr","sha":"41f1357eb79ea927ca327010fd0a02aa21855349"},{"file":"sc3d\/stone_ruin_1.scw","sha":"3bcb82e7f388ad375cb4a6ae84dd83b8f73e0e03"},{"file":"sc3d\/tara_attack.scw","sha":"2ca62a791af9b9fb888ec0327c1f90b20b5a827a"},{"file":"sc3d\/tara_base_cam.scw","sha":"345a00cdd28689c4f123fb7463e9d88f9f70c59e"},{"file":"sc3d\/tara_blue_geo.scw","sha":"8e29d7776818c8b23158eaaabb22584d1bec1159"},{"file":"sc3d\/tara_blue_tex.ktx","sha":"52bf008eea31e26e30c331582777b14550ca93ab"},{"file":"sc3d\/tara_blue_tex.pvr","sha":"0527572a43eaa4dc0cd93f80415023341c6b3b41"},{"file":"sc3d\/tara_geo.scw","sha":"287f382bef695b2b2e2de81f7404d4f50822bf49"},{"file":"sc3d\/tara_idle.scw","sha":"df0ad27a580fbe853afa3626ec8f2ba35982cfef"},{"file":"sc3d\/tara_lose.scw","sha":"dbc3e85ac370dc8af426adce4dd6b7c5c3bbe1c4"},{"file":"sc3d\/tara_streetninja_attack.scw","sha":"db4146db4db3a1d4b33bd809e0aa9c4f1b89a09e"},{"file":"sc3d\/tara_streetninja_geo.scw","sha":"cf8c76be41ee0bc9c540dd1a2fa46e4f67277f88"},{"file":"sc3d\/tara_streetninja_idle.scw","sha":"a8b804e24482ffcd4c95caa7135ce474087eb9cf"},{"file":"sc3d\/tara_streetninja_lose.scw","sha":"d0e6c1e22e15948327bbc5055c5e0f835a9cd8ff"},{"file":"sc3d\/tara_streetninja_portrait.scw","sha":"03abbbd2c3025d9e0347ad14e3484e246f13c249"},{"file":"sc3d\/tara_streetninja_tex.ktx","sha":"ed6ca817c18950ad073bb50b552d0801f38ebfcd"},{"file":"sc3d\/tara_streetninja_tex.pvr","sha":"db811b6ecb482c7bcd8f8549fcbbc6dcc0fbd872"},{"file":"sc3d\/tara_streetninja_ult.scw","sha":"423974885592c8e411e13e97724be91dd38bdf4a"},{"file":"sc3d\/tara_streetninja_walk.scw","sha":"936bfb7ba668c89d4e5b280c1d40ab16fad42579"},{"file":"sc3d\/tara_streetninja_win.scw","sha":"8d8795d0b44539b403ddfea35858a6236512da40"},{"file":"sc3d\/tara_tex.ktx","sha":"d0f952ec43bad015a28c4c854060b4c559a81f98"},{"file":"sc3d\/tara_tex.pvr","sha":"809dc736bad8b32faa1a7d27a0907250147a4ed9"},{"file":"sc3d\/tara_ult.scw","sha":"7ab20c87651fb46e23e5e6315aa3bc9f83578761"},{"file":"sc3d\/tara_walk.scw","sha":"1909ec6249e4121d4f830cea2789e70a76a5709b"},{"file":"sc3d\/tara_win.scw","sha":"e3651bb03e9530beee2f65867ee4f9aa69b54c25"},{"file":"sc3d\/test_stack_tile.scw","sha":"1e619c1c2597812dce79c3758d88454b0ced75d4"},{"file":"sc3d\/tick_attack.scw","sha":"01ab193f823c81ead7d397be1486df13a863b68b"},{"file":"sc3d\/tick_base_cam.scw","sha":"a979efefa8a2a55f1175df599243a22305fda596"},{"file":"sc3d\/tick_def_atk_blue.ktx","sha":"c35c75233c2ff281d2717d2e54d8758cc6c79605"},{"file":"sc3d\/tick_def_atk_blue.pvr","sha":"e7fc2b48ec714bdb678840dcfabb478f4e69d696"},{"file":"sc3d\/tick_def_atk_projectile_blue.scw","sha":"1d5fa31bad07c6024aa06f34ae480d01fec6b3e0"},{"file":"sc3d\/tick_def_ulti_blue.ktx","sha":"5a91004fbef40a6d2d9ae3cc51da6c659cc935fd"},{"file":"sc3d\/tick_def_ulti_blue.pvr","sha":"3d73172c79edbc3c3cd5f45806835c57035050f7"},{"file":"sc3d\/tick_def_ulti_projectile_blue.scw","sha":"1292ba74aadfc582009e9c87ce36cf5ea0ba8388"},{"file":"sc3d\/tick_geo.scw","sha":"ceb8ca3caff7f3247ea2812f5f7638438036341f"},{"file":"sc3d\/tick_idle.scw","sha":"74abc3d4186e921c221dee0d4d99645c02b39cc8"},{"file":"sc3d\/tick_lose.scw","sha":"5cc79de1c2b4a9622186ea951a75ebb440d2963e"},{"file":"sc3d\/tick_tex.ktx","sha":"6c110b73bdabe191387dd33e13ec6b9b7ae5a678"},{"file":"sc3d\/tick_tex.pvr","sha":"ef82babb1cbb03694e1a2f2347c3982bbbe66652"},{"file":"sc3d\/tick_ult.scw","sha":"0f964faf255669e9085a5365b5af2e80358d37e1"},{"file":"sc3d\/tick_walk.scw","sha":"78921ccb23cf51c5796c83b0c37976ee12e51154"},{"file":"sc3d\/tick_win.scw","sha":"f3e22a8ef78904cd3f4e4194f451344b3522afa4"},{"file":"sc3d\/tnt_d_01.ktx","sha":"2568b53bb87a4767b5f89d9d14b7905a9ee63354"},{"file":"sc3d\/tnt_d_01.pvr","sha":"5c4c8d46cd1b99ef3726d9f61ec022d4b798c0bf"},{"file":"sc3d\/tnt_d_01_blue.ktx","sha":"4a5e6bc2494e6f76c0b5593847fc9393bfc42db2"},{"file":"sc3d\/tnt_d_01_blue.pvr","sha":"d05d6122eb3b67be8a87560e36706329f7829700"},{"file":"sc3d\/tntguy_attack1.scw","sha":"a7dd04be7100515a84b77d0bbd299334423b95bf"},{"file":"sc3d\/tntguy_geo.scw","sha":"9a0b44fae9848be0991f6d73c416577da0fb2aa3"},{"file":"sc3d\/tntguy_idle1.scw","sha":"595246697e02d8a00370a2a9f0491a28e17d5120"},{"file":"sc3d\/tntguy_lose1.scw","sha":"115bffa59791ee57522e84819d029240ad69b27b"},{"file":"sc3d\/tntguy_loseloop1.scw","sha":"388b6019394b5751d965c9c663ccdeb7b6e90711"},{"file":"sc3d\/tntguy_recoil1.scw","sha":"d6d34dab536da1fda26b14781381ae13cc7df4d0"},{"file":"sc3d\/tntguy_ulti1.scw","sha":"fbfb24eb545bc5432cbb6467e351e13bd6645cd6"},{"file":"sc3d\/tntguy_walk1.scw","sha":"b731ff30d6ffcad6de3c8c73c21fd9f6ad37af9e"},{"file":"sc3d\/tntguy_win1.scw","sha":"241941e1d0754afa242b32ed11857a45100fed90"},{"file":"sc3d\/tntguy_winloop1.scw","sha":"b73ca2cbc7a5d49dff286a301b18acee6563fad3"},{"file":"sc3d\/tombstone_large.scw","sha":"6bac9cf3d595927e501c6146d07ca4949a13be5c"},{"file":"sc3d\/tombstones_1.scw","sha":"e31cecc0f95405809130bae4958d12df8819a8fe"},{"file":"sc3d\/town_gem_spawn.ktx","sha":"7e3b2b37dce2574868c61ce43934333eb410d1dd"},{"file":"sc3d\/town_gem_spawn.pvr","sha":"7cfae7900a0e6c2c57753214cc935c972ef3b1ee"},{"file":"sc3d\/track_wood.ktx","sha":"48b2b96bb795b407dc520728825b41ea1119f797"},{"file":"sc3d\/track_wood.pvr","sha":"80a656718359ebc1229f74c306beaa1a38c7b897"},{"file":"sc3d\/traffic_cone.scw","sha":"a9e1ca4d8326236240d827d3621f10af3b7958e5"},{"file":"sc3d\/turret_attack.scw","sha":"1e75698d68837459d60138814e10e69ae3d7a88b"},{"file":"sc3d\/turret_dragon_geo.scw","sha":"b2078e35fc99f94877202da2a3d16a0e6008a7e5"},{"file":"sc3d\/turret_dragon_tex.ktx","sha":"55be252548779dd1ebbe75c200a2b6c75e13f25d"},{"file":"sc3d\/turret_dragon_tex.pvr","sha":"c2eebecf7f4736c5febdb0be72a0fe5690e972ef"},{"file":"sc3d\/turret_dragon_win.scw","sha":"fc293eb9af95b90012a9e1796832a762cb11457b"},{"file":"sc3d\/turret_geo.scw","sha":"605d64140fa91654edc73d17fd050bd7e5520eb7"},{"file":"sc3d\/turret_idle.scw","sha":"28e2ba12e4ce5cc01091e40a7321fa9a18fb7281"},{"file":"sc3d\/turret_jessie_attack.scw","sha":"0ddba05b904ab42849bf915a720245d9471c3a62"},{"file":"sc3d\/turret_jessie_geo.scw","sha":"1bce78c5265f314cf972a2249b0d7059df3f35f0"},{"file":"sc3d\/turret_jessie_idle.scw","sha":"b992a35bf937ec2fb69fbac6e6909d3d7a74a71b"},{"file":"sc3d\/turret_jessie_red_dragon_attack.scw","sha":"942258e53c6ef786836b9a22a18efc5f925f5dd5"},{"file":"sc3d\/turret_jessie_red_dragon_geo.scw","sha":"69fce49e5b466dc996485cea22d3361ce76a89d8"},{"file":"sc3d\/turret_jessie_red_dragon_idle.scw","sha":"762fafd8077fd5adb5c10665655f682dfe392758"},{"file":"sc3d\/turret_jessie_red_dragon_spawn.scw","sha":"3e27c64f3c30c9a0d9fed4e579298eba26fa2fdd"},{"file":"sc3d\/turret_jessie_spawn.scw","sha":"19a2eebf27a94d574daf8b6f4f0b03f1f3a38d70"},{"file":"sc3d\/turret_jessie_tanuki_geo.scw","sha":"de70a04a6e9998f0d6bb2098ca8a1eed0461cb03"},{"file":"sc3d\/turret_jessie_tanuki_tex.ktx","sha":"274f06b801a09b9672cc00d2c6b87d0d980a6f15"},{"file":"sc3d\/turret_jessie_tanuki_tex.pvr","sha":"e8841c532aed46987955db4b70668a99b5d58f21"},{"file":"sc3d\/turret_spawn.scw","sha":"702d6adcc901d695487dd820c80dfe3fdb04abaa"},{"file":"sc3d\/turret_summertime_geo.scw","sha":"bcb952f221a234288dfd01e373814a6919c08c75"},{"file":"sc3d\/turret_summertime_tex.ktx","sha":"37c1c6478e7a2ad9f8783a5a06bc9aade1ae4e4e"},{"file":"sc3d\/turret_summertime_tex.pvr","sha":"25d299e52a4da566eb6fa3feef1505833b4c947a"},{"file":"sc3d\/undertaker_idle.scw","sha":"63b9371a7d0440eeb68f00b3bb8f5d14735a1d28"},{"file":"sc3d\/undertaker_lose1.scw","sha":"73af4a5ae5a20fba1d61533ecfd190d24fc68611"},{"file":"sc3d\/undertaker_loseloop1.scw","sha":"8fbbac1d2b1f0f376dec82d89128d9aa3c83dacb"},{"file":"sc3d\/undertaker_recoil1.scw","sha":"2b7e7d64c46cf87cccdad4d6100c313a661abc47"},{"file":"sc3d\/undertaker_tex.ktx","sha":"0a34a124b6db69632556652840f07dc3de7c5564"},{"file":"sc3d\/undertaker_tex.pvr","sha":"262c9730061bb64689df3e79e66b9d3382264999"},{"file":"sc3d\/undertaker_ulti_attack.scw","sha":"53d0cd1947c66508ca73ce79e2ae6ab69f173068"},{"file":"sc3d\/undertaker_ulti_recoil1.scw","sha":"d1aca282a26ce2653f6976b8a515c852447dd488"},{"file":"sc3d\/undertaker_walk.scw","sha":"84bc7d22d12d1f578b778628c3683a0f170f3b30"},{"file":"sc3d\/undertaker_win1.scw","sha":"ad02bdc60c43e61c650c1d799030e824ab0553f6"},{"file":"sc3d\/undertaker_winloop1.scw","sha":"a207f68548ef5728e6ad18eccebafa35f0b39ab8"},{"file":"sc3d\/vase_1.ktx","sha":"2f1350b748e6857b74456321d668613c2f12654e"},{"file":"sc3d\/vase_1.pvr","sha":"386796f87b8f7b919a57460aa488647b0739f62b"},{"file":"sc3d\/vase_1.scw","sha":"5769b23154eaab53e17a3a33474a3f6b886061ef"},{"file":"sc3d\/wally_wall.ktx","sha":"0645a2c11c4a398c7892595943a4d7cb3696dee8"},{"file":"sc3d\/wally_wall.pvr","sha":"bff607a5aa4312e90b9848d76c2db19dbea13789"},{"file":"sc3d\/wally_wall.scw","sha":"a76207956219b69709036869f6c0a369cee5850e"},{"file":"sc3d\/water_tile.scw","sha":"9bf6a2a00f1874028a6bac4fc402954a408c5046"},{"file":"sc3d\/water_tile_darryls_ship.scw","sha":"58c99e56fa8b5bb6d2f49f543b23ee6451e79dc6"},{"file":"sc3d\/water_tile_mine.scw","sha":"c5b974c641ec39edff4a55ccc5b53b7c5d99abac"},{"file":"sc3d\/water_tile_mortuary.scw","sha":"92b1b7a657a3ae20fa301e0c20df43e54a5e7282"},{"file":"sc3d\/water_tile_retropolis.scw","sha":"f03548a5c6c7decee3454f151487dd15bbcbfd87"},{"file":"sc3d\/water_tile_snowy.scw","sha":"d724eb1c6eee03e3c08a98581073f7e25dcb8749"},{"file":"sc3d\/water_tile_town.scw","sha":"65c147153b02bbfdd27d621fceecb2dadfa39653"},{"file":"sc3d\/wooden_fence.scw","sha":"bfb52217ba40126d883df391cab5676a96136471"},{"file":"sc3d\/wooden_fence_darryls_ship.scw","sha":"756498b529e4ea54d5928b8825a6d1e643b978f8"},{"file":"sc3d\/wooden_fence_town.scw","sha":"9b8ff89ee0b63a2ad1b5f4f863d0f860250b9198"},{"file":"sfx\/100coins_01.ogg","sha":"f50ec28726c65e910028e94a22c405616d62d965"},{"file":"sfx\/2x_gatcha_double_01.ogg","sha":"6945ec50b65b1186f8e6936536bd0188373f582c"},{"file":"sfx\/8bit_atk_02.ogg","sha":"4ed66202b3105ce6c31777fcd9941f78e9160075"},{"file":"sfx\/8bit_die_vo_01.ogg","sha":"9b71448681400760949fd65a6c9645680a8895e1"},{"file":"sfx\/8bit_die_vo_02.ogg","sha":"80694f17d65293629a2a925a1ae5f56b4fa97de4"},{"file":"sfx\/8bit_die_vo_03.ogg","sha":"ef073991f4cba51abf63a0f5cdb200818cfa7b88"},{"file":"sfx\/8bit_die_vo_04.ogg","sha":"89283d2010a65d5f779774249c263fd10d55ec39"},{"file":"sfx\/8bit_die_vo_05.ogg","sha":"3f601c2a7e8de4da8f898c700f57c26a05eb0104"},{"file":"sfx\/8bit_die_vo_06.ogg","sha":"69debc93b1f08c197ad7d8e8e7cd111529a59bd3"},{"file":"sfx\/8bit_gadget_01.ogg","sha":"a51b2b96d608e43a5a0ee0a333540d1501e8deb3"},{"file":"sfx\/8bit_hurt_vo_01.ogg","sha":"db633e9875fdf5af693f54d10ad4d05b43bff4dd"},{"file":"sfx\/8bit_hurt_vo_02.ogg","sha":"05375937980dbf59db946801f7cefdf3d8c6b7c5"},{"file":"sfx\/8bit_hurt_vo_03.ogg","sha":"641cf91c717a2ea9d07bf54a597b11ceb02c5e00"},{"file":"sfx\/8bit_hurt_vo_04.ogg","sha":"0c682820f3c948ab1397b97ea24ac4fb9539c193"},{"file":"sfx\/8bit_hurt_vo_05.ogg","sha":"e32774927d725b68362a828c9c94509c0b2925b9"},{"file":"sfx\/8bit_kill_vo_01.ogg","sha":"a7d71cf4e8045f7a47167bdbab375d0ea9b80db3"},{"file":"sfx\/8bit_kill_vo_02.ogg","sha":"f4cdad7337e9ac17978e007f9f1372b6d9a066a4"},{"file":"sfx\/8bit_kill_vo_03.ogg","sha":"b554e8b3cd8fb168d3c8d4d1a8447b33022dbf58"},{"file":"sfx\/8bit_kill_vo_04.ogg","sha":"e2ef690eabb58ef1f1ad85cda088826554f93088"},{"file":"sfx\/8bit_lead_vo_01.ogg","sha":"2fc4c2144f59db834b434ed9bbc93af122704036"},{"file":"sfx\/8bit_lead_vo_02.ogg","sha":"836e74b88c54fea3105f62b50b1e3dc7a6d6b1ec"},{"file":"sfx\/8bit_lead_vo_03.ogg","sha":"39a44be8a393500a201056ffb23c16033c592b01"},{"file":"sfx\/8bit_noammo_01.ogg","sha":"9c8ad289be0d3818a4fecce6e95a662af0f6bbeb"},{"file":"sfx\/8bit_reload_01.ogg","sha":"ad026d3417eab0c7a31ae4d3dc21e11c9bafef65"},{"file":"sfx\/8bit_start_vo_01.ogg","sha":"41f762a1a8ee3e4492da5b249b0021531517dcc2"},{"file":"sfx\/8bit_start_vo_02.ogg","sha":"cab6e4d51ed45c8a3ac47c4ae02dd99baa2f4a24"},{"file":"sfx\/8bit_start_vo_03.ogg","sha":"a246b4ee8d2f00b43fca21ecba7a0135decc61b9"},{"file":"sfx\/8bit_ulti_02.ogg","sha":"382a28e9eb476a3b706f02bd511894108a5af1df"},{"file":"sfx\/8bit_ulti_vo_01.ogg","sha":"9c679bd265d697bb34d36d5fd65cf2bccbbb84aa"},{"file":"sfx\/8bitvirus_die_vo_01.ogg","sha":"d65dd134e7c9cf80c3bb4e564110363ac3e0a613"},{"file":"sfx\/8bitvirus_die_vo_02.ogg","sha":"322efc7283b10f72c98061b6d6da1ad0816042cf"},{"file":"sfx\/8bitvirus_die_vo_03.ogg","sha":"72f0d483132da74a8e30bf3bbacf79b982f3bfbc"},{"file":"sfx\/8bitvirus_die_vo_04.ogg","sha":"42ca460dbde30dab8d8da942724111c85f00fd0a"},{"file":"sfx\/8bitvirus_hurt_vo_01.ogg","sha":"b5ceadc2038935029db5a5ea9024cffaa33b537e"},{"file":"sfx\/8bitvirus_hurt_vo_02.ogg","sha":"652b7f26478ef31371a6da97799aebff3064977d"},{"file":"sfx\/8bitvirus_hurt_vo_03.ogg","sha":"ea16995c99c770994962002f8abf334fdf3a9115"},{"file":"sfx\/8bitvirus_kill_vo_01.ogg","sha":"8041f1bece8ff0dfc1642f19671a0cedda463e1b"},{"file":"sfx\/8bitvirus_kill_vo_02.ogg","sha":"ea3648d28d89e316c7a3a4abf84bffec61ed473e"},{"file":"sfx\/8bitvirus_kill_vo_03.ogg","sha":"fe3434d7a7ecf46f27aff8e785e8bdc7fa336ba4"},{"file":"sfx\/8bitvirus_kill_vo_04.ogg","sha":"84f79cb64f14fc75a75bb706f529cf30a4329b87"},{"file":"sfx\/8bitvirus_lead_vo_01.ogg","sha":"c61561f4d54ed57c001124fa2d27e3344aba52bc"},{"file":"sfx\/8bitvirus_lead_vo_02.ogg","sha":"1a3f0caa1bf66d9a55eabad4a682c137a14878ab"},{"file":"sfx\/8bitvirus_lead_vo_03.ogg","sha":"d723faafa56389da4f548ef4f96a1b4fb3cf8c6a"},{"file":"sfx\/8bitvirus_lead_vo_04.ogg","sha":"3d66b8606f40ce2a0e826fe4c8e96a946933184c"},{"file":"sfx\/8bitvirus_start_vo_01.ogg","sha":"e8f7885605d96cc530c16008e7cd8df58ab0bf85"},{"file":"sfx\/8bitvirus_start_vo_02.ogg","sha":"20ceb65340e1f0db0b2e380b3b663b7138513339"},{"file":"sfx\/8bitvirus_start_vo_03.ogg","sha":"deb3512cc98c2826b465cf715ca5ff52bc3b44fe"},{"file":"sfx\/8bitvirus_start_vo_04.ogg","sha":"c5280add1ea5ec379f1540d869c9657cb664ba3c"},{"file":"sfx\/8bitvirus_start_vo_05.ogg","sha":"86516cb6ceea388419bc87d7b9813fc75698041b"},{"file":"sfx\/8bitvirus_start_vo_06.ogg","sha":"f9ec14df98e6727b0d465e72e919c32f8954ca57"},{"file":"sfx\/8bitvirus_ulti_vo_01.ogg","sha":"2cd92a3411927458b0701a8de68c4efc608d7b33"},{"file":"sfx\/8bitvirus_ulti_vo_02.ogg","sha":"4aa6d22304c745f1020922ba7f05dc6f7cbb2af2"},{"file":"sfx\/8bitvirus_ulti_vo_03.ogg","sha":"e70d6463fb90d1fabbc574475fb92963b3229904"},{"file":"sfx\/Nita_dog_summon_01.ogg","sha":"cd2561f14f1538e96570ef2ca8db48e67e2665bb"},{"file":"sfx\/Rosa_punch_01.ogg","sha":"b25385a7f8864fa7bf0f656c45709f5163be1dbf"},{"file":"sfx\/Rosa_reload_01.ogg","sha":"8fdf15a34f94c603c9bb9b559697296313ccbd2d"},{"file":"sfx\/Rosa_ulti_01.ogg","sha":"33c3148d648cb06fb4c14a6574cffe5f3a739c53"},{"file":"sfx\/bad_move_01.ogg","sha":"3ec2061ad4cadd1c503bf97ba8e7fbda23113ed6"},{"file":"sfx\/bandit_reload_01.ogg","sha":"7561564a23a226da76e6eb87a381c4be8dffd576"},{"file":"sfx\/bar_fire_atk_01.ogg","sha":"1dc3b81cc94c1b7a328e69560c7030cdfbc946e4"},{"file":"sfx\/bar_fire_hit_01.ogg","sha":"4759536d6d2e8ed1529f1f551ff533bc5ebf9f80"},{"file":"sfx\/barkeep_bottle_hit_01.ogg","sha":"4ca1bc1d433d57fc5ae9dea1e614f04dd47cde74"},{"file":"sfx\/barkeep_dryfire_01.ogg","sha":"339848424730bcc5cfc750f77e35e9241df7b5dd"},{"file":"sfx\/barkeep_reload_01.ogg","sha":"ac0b6e5b4f83d03b668d94a1c31232ebf499a1bc"},{"file":"sfx\/barkeep_throw_01.ogg","sha":"e11a417261641d99036acaee0a2082958c38f8a2"},{"file":"sfx\/barkeep_throw_ulti_01.ogg","sha":"16716e865732966a01d07873fe37542e1aaa12d1"},{"file":"sfx\/barkeep_ulti_hit_01.ogg","sha":"01586ee110b9b2c173e68f01c8e753fa1ca0c58b"},{"file":"sfx\/barley_die_01.ogg","sha":"b23988dc1a0603d88e59d358def420d482f5f680"},{"file":"sfx\/barley_die_02.ogg","sha":"75c1c3d5bdff951fdcfa51a20772addd6b129010"},{"file":"sfx\/barley_gadget_01.ogg","sha":"2d388acb14c3c0c0149cf264e5d9fa55bb6ac4a6"},{"file":"sfx\/barley_hurt_01.ogg","sha":"b44e50cdcb204c643f1594e456eb37e9ed3f516e"},{"file":"sfx\/barley_hurt_02.ogg","sha":"f2c6542e05ca52ef71528ed532849977a3974bf0"},{"file":"sfx\/barley_hurt_03.ogg","sha":"fb43fd5261d8c94daa0d84c15c02cc78dabc02c2"},{"file":"sfx\/barley_hurt_04.ogg","sha":"12f6ed9089ed5ea7a0ed0fd5f8ed109ff5783a33"},{"file":"sfx\/barley_kill_01.ogg","sha":"97d12f0aeadf577f90a7df17b56b6da07c3b5b38"},{"file":"sfx\/barley_kill_02.ogg","sha":"2bae530c8fc5ba9771741c1a1097cd9cd2754850"},{"file":"sfx\/barley_kill_03.ogg","sha":"8e3df2e7f03bbc3a0b337993c67928d65b78fdd9"},{"file":"sfx\/barley_kill_04.ogg","sha":"e29fffbf0ef78ba88c27b695411868cf854fbd51"},{"file":"sfx\/barley_lead_01.ogg","sha":"da32340cb4ca5390c4217b2a7876aa3eda8a18d3"},{"file":"sfx\/barley_start_01.ogg","sha":"b76060601c160c43c2afffb8a68e61e192f231ab"},{"file":"sfx\/barley_start_02.ogg","sha":"508784c50b1e99aaaded8c31985011ae0f591035"},{"file":"sfx\/barley_start_03.ogg","sha":"aea2e1af712b8a1371101d1ba34043ea4e08b005"},{"file":"sfx\/barley_start_04.ogg","sha":"18fe95427031959b9cc9e01531ba20bacf13c054"},{"file":"sfx\/barley_throw_01.ogg","sha":"c2f9a557331e419bfc9ad3897c7fa6d6a0e8c937"},{"file":"sfx\/barley_throw_02.ogg","sha":"c26b6469b4d8fee9d5a5b0952fa5879af13218f1"},{"file":"sfx\/barley_ulti_01.ogg","sha":"9618ac44364f67d18466b0618135dd1106d4abf2"},{"file":"sfx\/barley_ulti_02.ogg","sha":"3fce7997593713686ba0ac7d79928bf8cc479d1e"},{"file":"sfx\/barrel_roll_02.ogg","sha":"cf26028bdd46f0b46dd4769c416961c655fa962c"},{"file":"sfx\/barrelroll_ulti_01.ogg","sha":"68580882c2a74a234506d55bbcf9252ba90dbbc1"},{"file":"sfx\/bea_atk_01.ogg","sha":"e14a9d681400af2c84a6a3fd66c818c9667a346a"},{"file":"sfx\/bea_atk_hit_01.ogg","sha":"f91a8a3547df13c44ceaecf1d08409aa68e787dd"},{"file":"sfx\/bea_atk_vo_01.ogg","sha":"c605a05a2af783305e920ccee32af3cd9385c235"},{"file":"sfx\/bea_atk_vo_02.ogg","sha":"1cb824829f7693ff3e3db47c8f114d0915bb2194"},{"file":"sfx\/bea_atk_vo_03.ogg","sha":"d5e807dcb252df3ecf0c5ca6398be73c620cedaf"},{"file":"sfx\/bea_die_vo_01.ogg","sha":"cbf31e87c4eb955258669b460c0999ef6d883d8c"},{"file":"sfx\/bea_die_vo_02.ogg","sha":"55c9c2d0c00665de0b22edf578721abbd887919d"},{"file":"sfx\/bea_die_vo_03.ogg","sha":"1f97c03bc3f7311e974dfb65dfbb68465dffde1e"},{"file":"sfx\/bea_gadget_01.ogg","sha":"fba987b3856376fb8cd507a6caff1f62ab918c72"},{"file":"sfx\/bea_hurt_vo_01.ogg","sha":"67ada74e7cec4a9dbd9476abb3ec6c0511daa6ca"},{"file":"sfx\/bea_hurt_vo_02.ogg","sha":"277dc232f2dbafe827456b5a0d5303a0634e1f50"},{"file":"sfx\/bea_hurt_vo_03.ogg","sha":"577aac5449a3e1919c939e2adcf5ad21ca7648aa"},{"file":"sfx\/bea_hurt_vo_04.ogg","sha":"6c579b34cab5e24663fc4100af56982b1973bc71"},{"file":"sfx\/bea_hurt_vo_05.ogg","sha":"2516a40b3f5715feba97c9e13213686960555f53"},{"file":"sfx\/bea_kill_vo_01.ogg","sha":"9367fc905c94e4b7c0e512fdd349e054aeb53f32"},{"file":"sfx\/bea_kill_vo_02.ogg","sha":"147bd1711b468354864a9ccbb017391abf7d30e8"},{"file":"sfx\/bea_kill_vo_03.ogg","sha":"72e294cb45081c0645faa2f0e5ef15172d724a11"},{"file":"sfx\/bea_kill_vo_04.ogg","sha":"3c082dbe5c1d8d49afa1d12af475c5c4ec3cce48"},{"file":"sfx\/bea_lead_vo_01.ogg","sha":"40f2edbc4fd0d236e4ebc4355233dd20314c6dec"},{"file":"sfx\/bea_lead_vo_02.ogg","sha":"3c8229b7dc5439d1df8cdd670d22205c557919d2"},{"file":"sfx\/bea_lead_vo_03.ogg","sha":"32e7b671f7c558a6683371621e8276ff675680e0"},{"file":"sfx\/bea_lead_vo_04.ogg","sha":"7877d92bcd337f9c5d579497644c8c571b027b4b"},{"file":"sfx\/bea_lead_vo_05.ogg","sha":"a4b85a8020b214c72600105515a6c34d0fbf667e"},{"file":"sfx\/bea_no_ammo_01.ogg","sha":"3fff77b063b15ea10917dbc755cdfbe055bd57c7"},{"file":"sfx\/bea_reload_01.ogg","sha":"9634b882bf8f8e9f8ebabb0b5fac28bbbbbc4ef6"},{"file":"sfx\/bea_start_vo_01.ogg","sha":"be22341f2cae3fd109250e1c2e761ddc0d50611d"},{"file":"sfx\/bea_start_vo_02.ogg","sha":"c6428f5fe88d038fa75d8ccf252d30255b492bb0"},{"file":"sfx\/bea_start_vo_03.ogg","sha":"b8bfc6953da79b8b17d19f8030320680bc1a066b"},{"file":"sfx\/bea_start_vo_04.ogg","sha":"739f81b8c18131a29acf00107a98d5b8ce544e41"},{"file":"sfx\/bea_start_vo_05.ogg","sha":"4ef17de2f1a94b759eefec4d407239d4241d0aa9"},{"file":"sfx\/bea_ulti_01.ogg","sha":"a5b5be16bfc01780465930b2b261267e47cbe077"},{"file":"sfx\/bea_ulti_vo_01.ogg","sha":"036e5bf0f038dd24d6914a3f34de865bcd9e3e9c"},{"file":"sfx\/bea_ulti_vo_02.ogg","sha":"33928cea063345edad27c3f6cee98ed4d64f1c41"},{"file":"sfx\/bea_ulti_vo_03.ogg","sha":"bedfc21dd66008b91597ff6c160e78d5ce3af803"},{"file":"sfx\/bea_ulti_vo_04.ogg","sha":"0c125228a15534c26440af9c92a0a8b142f625ac"},{"file":"sfx\/beach_brock_explo_01.ogg","sha":"d4252b2750930cda0afda344efe86cb6c0d53fe2"},{"file":"sfx\/bear_spawn_01.ogg","sha":"7e1b3681c1523163633b10bd49b0005a56fbbc54"},{"file":"sfx\/become_chips_01.ogg","sha":"1462bfc178324c90864dcdc4f348794e54faf5fe"},{"file":"sfx\/bibi_bubble_hit_01.ogg","sha":"b96ecb9d089892f12c30804766535881c40c45da"},{"file":"sfx\/bibi_bubble_pop_01.ogg","sha":"c07e68739fe5d739d13f5224bd50c6c98d96ee12"},{"file":"sfx\/bibi_die_vo_01.ogg","sha":"58e30e2d23a9704df3dd2ef892605146fa387728"},{"file":"sfx\/bibi_die_vo_02.ogg","sha":"acbf09fca8a2a0ba3aab223d09343a9fed0763a8"},{"file":"sfx\/bibi_die_vo_03.ogg","sha":"4d1633b80056a076189757362d0e8c1cefd8171c"},{"file":"sfx\/bibi_die_vo_04.ogg","sha":"02359b415fc0ead50d0bea364c9bd0d2a636f846"},{"file":"sfx\/bibi_hurt_vo_01.ogg","sha":"3028d231875369375883709e0712dd2f4fe4abbe"},{"file":"sfx\/bibi_hurt_vo_02.ogg","sha":"b5de50b6f118f05ab6d21ccd716b0a105ac1b09f"},{"file":"sfx\/bibi_hurt_vo_03.ogg","sha":"444831efcd4061aeb0b4a9fac589d9a478c44818"},{"file":"sfx\/bibi_hurt_vo_04.ogg","sha":"f4bb01523f1716ad75dce2a5e129fb669aaf2afb"},{"file":"sfx\/bibi_kill_vo_01.ogg","sha":"26997303cbfd016f7cf960f4aed7e838cadd40bd"},{"file":"sfx\/bibi_kill_vo_02.ogg","sha":"3c944be9661efc4d3153d57647c058d8280f39c9"},{"file":"sfx\/bibi_kill_vo_03.ogg","sha":"9d0de0d695679e504097562745cd25772c9be9c3"},{"file":"sfx\/bibi_kill_vo_04.ogg","sha":"dee7169ec4bcdf9b19b42a123ba0217a552b57c6"},{"file":"sfx\/bibi_lead_vo_01.ogg","sha":"175baa4410401a3ef8f05be39aa2259eeaff615b"},{"file":"sfx\/bibi_lead_vo_02.ogg","sha":"1fdcd0c5694b12b7492c424706a368624bc01b37"},{"file":"sfx\/bibi_lead_vo_03.ogg","sha":"70c72caa1d3f6e38ef6b2039947e63180f6742ab"},{"file":"sfx\/bibi_lead_vo_04.ogg","sha":"8031a74cba02e019255d9b93f05006a643211187"},{"file":"sfx\/bibi_reload_01.ogg","sha":"b42461a211acece6b69df8daa2b1cde213366c1f"},{"file":"sfx\/bibi_start_vo_01.ogg","sha":"467bbf384d3064e9c970c42018213d98bf43fa6f"},{"file":"sfx\/bibi_start_vo_02.ogg","sha":"f82560515b54a8f5d0e64733bd9feb09664d0f93"},{"file":"sfx\/bibi_start_vo_03.ogg","sha":"2a8b51c3c3f4bb7a056c851f4b75065c60c3ccc8"},{"file":"sfx\/bibi_start_vo_04.ogg","sha":"3c84060ae5972cfe1781285fd6d5d5849b599057"},{"file":"sfx\/bibi_start_vo_05.ogg","sha":"20b9bb4273620137c19dca12eba058931d4f21cd"},{"file":"sfx\/bibi_start_vo_06.ogg","sha":"3a87518bc76f52f743be7c423a52aae91459d648"},{"file":"sfx\/bibi_swing_03.ogg","sha":"d760e5516dc77fa4cd7ce5573c9eddb629dc25ef"},{"file":"sfx\/bibi_ulti_02.ogg","sha":"4888379fd41de9c4e9c98cbd834560a4e23d7ab0"},{"file":"sfx\/bibi_ulti_hit_01.ogg","sha":"d8f424b5bc41e512a5ab36cf8fb86d0c41524f38"},{"file":"sfx\/bibi_ulti_vo_01.ogg","sha":"5fa34e9f8a4464e5048f487be6eca0f3748d353e"},{"file":"sfx\/bibi_ulti_vo_02.ogg","sha":"7b84bc0d5cc6971f0e022fc83ff803c4da60f333"},{"file":"sfx\/bibi_ulti_vo_03.ogg","sha":"3daef6975212182aaaead245d2961de021399c0c"},{"file":"sfx\/bibi_ulti_vo_04.ogg","sha":"b986396600f2d63ad4094efed58f909b171cf0ab"},{"file":"sfx\/bibibat_impact_01.ogg","sha":"7a94cf6eee779985e33b665fbe9fc6db1a880d52"},{"file":"sfx\/bigshotgun01.ogg","sha":"e0a3dc0e7a449a94f7efafe196bcb200c11229f5"},{"file":"sfx\/blink_01.ogg","sha":"f2a9dd801c0f5f618751dc90af7cc3e448bbadb8"},{"file":"sfx\/blink_01v2.ogg","sha":"eca1f53eaf81a639f8a6995de7d6e0d13c673407"},{"file":"sfx\/blue_mine_01.ogg","sha":"550f3731754f9c22da4ae2b3bbe4c29076813c1b"},{"file":"sfx\/bo_die_01.ogg","sha":"e5c60e48c874c73f5e1265da936ba996d8d8987d"},{"file":"sfx\/bo_die_02.ogg","sha":"0432ced9caf74ae526afa53245c12d6cf88e248d"},{"file":"sfx\/bo_die_03.ogg","sha":"eb353c6c470ce316b223514bbfba8626f01dfcbd"},{"file":"sfx\/bo_die_04.ogg","sha":"e92167a71d5fb0219d8ee7a6f16736a1d4a039d5"},{"file":"sfx\/bo_fire_vo_01.ogg","sha":"5d581e35de4a34b06a6ad43db1f550a43b38998f"},{"file":"sfx\/bo_fire_vo_02.ogg","sha":"5051923b86f7622436ed424153b4330dd16a0d75"},{"file":"sfx\/bo_fire_vo_03.ogg","sha":"516b29e779d6c15fdf2b572611d64e5b811eb294"},{"file":"sfx\/bo_fire_vo_04.ogg","sha":"984de812313d6b533238fd101789eee3932004f4"},{"file":"sfx\/bo_gadget_01.ogg","sha":"cf7f787e8b2f263033079ed7b5488a483cd3b48d"},{"file":"sfx\/bo_hurt_01.ogg","sha":"22cd6e733095aff8e218c1b0fe1106db40ffd0db"},{"file":"sfx\/bo_hurt_02.ogg","sha":"8ebdf6f5fcc0dca99d89b687881aae54c033918a"},{"file":"sfx\/bo_hurt_03.ogg","sha":"d4a8d06904c9397d520867a0d37da1cce324d60e"},{"file":"sfx\/bo_hurt_04.ogg","sha":"ed1407a2704fae611bb5ac953df4452f71bf58fb"},{"file":"sfx\/bo_kill_vo_01.ogg","sha":"41de82d27f16b3771eb52245170b2c7dfea02301"},{"file":"sfx\/bo_kill_vo_02.ogg","sha":"a8a8abd07590901600fc4270ad462b36b69aa8e2"},{"file":"sfx\/bo_kill_vo_03.ogg","sha":"d84d49cd59d329f2ea221a0a3736545dbf0ef556"},{"file":"sfx\/bo_kill_vo_04.ogg","sha":"bfaee7fdf8144b2b87064388bb188d8678f68289"},{"file":"sfx\/bo_lead_vo_01.ogg","sha":"e0b6fbcab8de7bc961ce34955d78840ba842f7d3"},{"file":"sfx\/bo_lead_vo_02.ogg","sha":"519694c1b210b06855e44afa37a188d3cd387b44"},{"file":"sfx\/bo_lead_vo_03.ogg","sha":"1016a680399ffa6df50595777be1c3449cf6c100"},{"file":"sfx\/bo_lead_vo_04.ogg","sha":"48d6aea50317bfa85cb910228c0677ec073752d9"},{"file":"sfx\/bo_mine_spawn_01.ogg","sha":"979cc466d68cecff33c1da5881005f155537ee3c"},{"file":"sfx\/bo_start_vo_01.ogg","sha":"1b6da6f039088aebc4c4ae612b90480f467c7690"},{"file":"sfx\/bo_start_vo_02.ogg","sha":"f3bcc31c55c0edcbf3f1d89932eeaa3967bb0888"},{"file":"sfx\/bo_start_vo_03.ogg","sha":"774d113a672369d5f71c83c003a1d1dd0f0fd7a4"},{"file":"sfx\/bo_start_vo_04.ogg","sha":"7d955607ba45815b11757d628609dfd659f8f6fa"},{"file":"sfx\/bo_start_vo_05.ogg","sha":"e7bc8946d96f2b5d636e9d04a3c928e3803e7f6e"},{"file":"sfx\/bo_ulti_vo_01.ogg","sha":"74ce40045ba659d0298b444bbf26ecceb3ae9380"},{"file":"sfx\/bo_ulti_vo_02.ogg","sha":"38ed612442dba16bc8c9cdf0c3d24cb2309b940b"},{"file":"sfx\/bo_ulti_vo_03.ogg","sha":"afc3e58b0b7e3c6ac4e286dfe0836c7427a8f5af"},{"file":"sfx\/bo_ulti_vo_04.ogg","sha":"5092f34a879ffc309733125b6b5f96f2b09f2f99"},{"file":"sfx\/bomb_bleeps_01.ogg","sha":"33144deaabcdb1be18748fc9f9204873cc4ccfa5"},{"file":"sfx\/boss_spawn_seq_01.ogg","sha":"1ad0c68000345367d3ade246a7a76a51aec375f5"},{"file":"sfx\/bounce_fire_01.ogg","sha":"7b999e8669698a2b053eea1e2cd5f4742b03ba11"},{"file":"sfx\/bow_dryfire_01.ogg","sha":"96f5c5155b098219791185e680f319380aa9ff77"},{"file":"sfx\/bow_fire_01.ogg","sha":"dfed27d8391a9cbe0d6ebf03b2b80de446c058b6"},{"file":"sfx\/bow_reload_01.ogg","sha":"b38d6e6f3e4b015208c8e7aaea7e56ec3e07d675"},{"file":"sfx\/brawl_ball_kick_02.ogg","sha":"199a0e64cf7e82bb4af0f7745b6fbb17792615de"},{"file":"sfx\/brawl_button_01.ogg","sha":"9be0c962a2bf445f62f259ecd874e1941071fbc2"},{"file":"sfx\/brawl_go_01.ogg","sha":"4a3916051cfeb1adb20363d14029f5f7ca50de9c"},{"file":"sfx\/brawl_intro_01.ogg","sha":"1cf176718f847ce38bafa9c1586fd009af799534"},{"file":"sfx\/brawl_unlock_01.ogg","sha":"d646d5fe1fa187697c546e8db897228c86f9af68"},{"file":"sfx\/brawl_unlock_02.ogg","sha":"b6ca998d6287bf535bd351325621620b033979a7"},{"file":"sfx\/brawlbuy_01.ogg","sha":"9804734e123294ca05f52224d3041ecdcb92e28e"},{"file":"sfx\/brawlerintro_01.ogg","sha":"f2c9dccfc386806ffc72906d309c101ca5ef783b"},{"file":"sfx\/brock_death_01.ogg","sha":"08a6e826b11ccac715f27ae54bf3ae6ec9cc7b09"},{"file":"sfx\/brock_death_02.ogg","sha":"c273f54922025903b698b5f2eaa066b242bae7ea"},{"file":"sfx\/brock_death_03.ogg","sha":"cf9b83c5b3ea0c3f75de6e2feeedf534d3a214fa"},{"file":"sfx\/brock_death_04.ogg","sha":"c56aec7aee230ee96e3b46fcdeec9ed84af594ca"},{"file":"sfx\/brock_dryfire_01.ogg","sha":"4f72f3b3481a60ff7b3deaf5389b666278761569"},{"file":"sfx\/brock_hurt_01.ogg","sha":"071d1e3aa42a4795b8b9d66aea489e5b0672a289"},{"file":"sfx\/brock_hurt_02.ogg","sha":"065c7bcae55dcc78ea8256636124fa77a1bbbdb1"},{"file":"sfx\/brock_hurt_03.ogg","sha":"addf039a044813fb97ce29bc7abfc7e5c50e5b4b"},{"file":"sfx\/brock_hurt_04.ogg","sha":"7ffe858ca39f2b65b3d93b6b746bc10c75bc5345"},{"file":"sfx\/brock_hurt_05.ogg","sha":"218b34a251f9b30d9b58c8e965610231f655504c"},{"file":"sfx\/brock_kill_vo_01.ogg","sha":"934de5c0b7632fca2b57366f30ae627d137c12ba"},{"file":"sfx\/brock_kill_vo_02.ogg","sha":"82967c2f4d113f19aafc68d16579ea64c895c1e8"},{"file":"sfx\/brock_kill_vo_03.ogg","sha":"d3a19724b9fd6644c4677122b4895931d5db827c"},{"file":"sfx\/brock_kill_vo_04.ogg","sha":"aea5313d74d50e8a8c933023c5bb0be93dab7c99"},{"file":"sfx\/brock_lead_vo_01.ogg","sha":"f72678330d9da164b7db897004115d127e56887d"},{"file":"sfx\/brock_lead_vo_02.ogg","sha":"f8661daf12c089cebe51cd39e83671012c0fcfa6"},{"file":"sfx\/brock_lead_vo_03.ogg","sha":"6a0c21664dfac9d631c5a571cdb808b83e0276c5"},{"file":"sfx\/brock_lead_vo_04.ogg","sha":"ce26ac6ed65d19c20ac30952598087f979db02fa"},{"file":"sfx\/brock_lead_vo_05.ogg","sha":"5e2c7b5e5761feed8b29dba6f007f1d3c46f47fd"},{"file":"sfx\/brock_lead_vo_06.ogg","sha":"74914f6db9c3df490b8219337fd983111fa9c3f6"},{"file":"sfx\/brock_reload_01.ogg","sha":"8dcbf802a6e4c5e2dec1a920f52aeacef71230fe"},{"file":"sfx\/brock_start_vo_01.ogg","sha":"fd8018f66e7a748a2113967e49fee6a3862d7c8a"},{"file":"sfx\/brock_start_vo_02.ogg","sha":"afb6d7c00eefdc7849179b54984129a12a627b5f"},{"file":"sfx\/brock_start_vo_03.ogg","sha":"af59d060d79b6a264009f0a3358d873cfe9193c0"},{"file":"sfx\/brock_start_vo_04.ogg","sha":"2860123e79592daeb38e992c6435d57a6147a10f"},{"file":"sfx\/brock_start_vo_05.ogg","sha":"b0c6acd6cc572e288028ad7fcc59a5dc31a74b5b"},{"file":"sfx\/brock_start_vo_06.ogg","sha":"94e47bddd930fed439d616948c10251cc5613b4f"},{"file":"sfx\/brock_start_vo_07.ogg","sha":"4040d3de72d1ee9356a456935f2e8ee71eaad9f5"},{"file":"sfx\/brock_ulti_vo_01.ogg","sha":"4046d03240feee4783627339fbe3686f3b4943a7"},{"file":"sfx\/brock_ulti_vo_02.ogg","sha":"e99430be3b155efec9eba77a11889d2a5074ea3e"},{"file":"sfx\/brock_ulti_vo_03.ogg","sha":"5631ebd033622ad207b0b564cd876127393aa63c"},{"file":"sfx\/brock_ulti_vo_04.ogg","sha":"74881285e52b5e71c43416ca8002004d9823379d"},{"file":"sfx\/brock_ulti_vo_05.ogg","sha":"e3f1bcb9587f23170e08a895609f99ebf4348d5e"},{"file":"sfx\/bull_berserk_01.ogg","sha":"3d124a98375caac1b575a3512f19de7b4328e2f6"},{"file":"sfx\/bull_die_vo_01.ogg","sha":"ae3e4203161976f62045550cede2dfb600566ced"},{"file":"sfx\/bull_die_vo_02.ogg","sha":"8f64c0e3ff281c8f60daa33d41ce1e90861d5917"},{"file":"sfx\/bull_die_vo_03.ogg","sha":"57d2803a960b54791afa464c01e84d3e17364375"},{"file":"sfx\/bull_die_vo_04.ogg","sha":"d6b8e8cf283d605a492d83ee42639439ec327b6b"},{"file":"sfx\/bull_hurt_vo_01.ogg","sha":"f6446dd1bda4f2ac1ae5b38042b2301dddbc09c0"},{"file":"sfx\/bull_hurt_vo_02.ogg","sha":"ffb46ef94d1028a59255a1a21f93888e2d0d9139"},{"file":"sfx\/bull_hurt_vo_03.ogg","sha":"781e424413cc2f390f5cdb82e8d117f5cc6678a8"},{"file":"sfx\/bull_hurt_vo_04.ogg","sha":"4aa9982e3db4abed342e5d9e9531ddb0383d5a30"},{"file":"sfx\/bull_hurt_vo_05.ogg","sha":"8f73fd849ca3a2a78a72197650c5b5ed7a486bb0"},{"file":"sfx\/bull_kill_vo_01.ogg","sha":"7e8ef88cb2e3afcc9b83bc96297da8feee32dae8"},{"file":"sfx\/bull_kill_vo_02.ogg","sha":"3517b1c5d7531c39de9e2e755b93c936eb1ed4ce"},{"file":"sfx\/bull_kill_vo_03.ogg","sha":"1418715ad1eb8acb4cbcf25e78ac3bf1ff7cdd61"},{"file":"sfx\/bull_kill_vo_04.ogg","sha":"eb1e903efeb1d4d0a28334cf4d8de6e50c3369d1"},{"file":"sfx\/bull_lead_vo_01.ogg","sha":"4c48cdc133e39d17c999f1d7ea9373fd6c0df3ae"},{"file":"sfx\/bull_lead_vo_02.ogg","sha":"67cf5c18c2acbb80f1e2ecc2fe1f96c2a3f6ac2f"},{"file":"sfx\/bull_lead_vo_03.ogg","sha":"cf6e91d1f9702b413a4dbd86427d7ae8c1a1fa5e"},{"file":"sfx\/bull_lead_vo_04.ogg","sha":"2c4cba8d9a0ba5df0da37724b3d7cf7f8f265e5b"},{"file":"sfx\/bull_start_vo_01.ogg","sha":"d016a12a11127a3f547d7f03b519787b4cffc3a7"},{"file":"sfx\/bull_start_vo_02.ogg","sha":"0079ab2d107a018df3a60b732bb40d067ee6c7c4"},{"file":"sfx\/bull_start_vo_03.ogg","sha":"53ad72423ab004d64e10be171a68a86de5b52b3d"},{"file":"sfx\/bull_ulti_vo_01.ogg","sha":"28421a46d26f8576b3152286ca973a6802e2787f"},{"file":"sfx\/bull_ulti_vo_02.ogg","sha":"976fb5f7997446e7437b4e523e537f52341626ee"},{"file":"sfx\/bull_ulti_vo_03.ogg","sha":"331bec996755426acd5393f5921a0fc32a528b9b"},{"file":"sfx\/bull_ulti_vo_04.ogg","sha":"b213f32fcacea6cc6377b69d38a2d545724558f7"},{"file":"sfx\/bullet_rico_grass_02.ogg","sha":"e917b9f2c7f4f9ac7f41970f6d52b7656e648170"},{"file":"sfx\/bullet_rico_metal_01.ogg","sha":"6c0040c09dfa272a6f9d2b9804145fcb42d7f5bf"},{"file":"sfx\/bullet_rico_rock_01.ogg","sha":"b30b155f982aa6d136fdff678a2df8a6afd495ef"},{"file":"sfx\/bullet_rico_wood_01.ogg","sha":"eaa0136db9dbb9b71df83676b3bdc3dd27ead780"},{"file":"sfx\/buy_gems_01.ogg","sha":"1b4aa5ec7778c0ac3bd0e8caa767ce5534801f68"},{"file":"sfx\/carl_atk_01v2.ogg","sha":"ed5a4edcb6d4bf5185bfd0ef32089b2665854308"},{"file":"sfx\/carl_atk_hit_return_01.ogg","sha":"e1b2456c314fee2be9666e90e1f312197772578a"},{"file":"sfx\/carl_atk_return_03.ogg","sha":"d425c8c43e7b623dc9c32d5118ec3644d668f64e"},{"file":"sfx\/carl_atk_vo_01.ogg","sha":"cbe169845f7f9327527a7279b90bb9f46b2ea38d"},{"file":"sfx\/carl_atk_vo_02.ogg","sha":"89dcc7d19e16fd031d2842b9aec73d8056b59d53"},{"file":"sfx\/carl_atk_vo_03.ogg","sha":"d2813436387a547a8912ac09156ab2c7d6903956"},{"file":"sfx\/carl_death_vo_01.ogg","sha":"be42c11c32389f54c3e63efbf66b392d987b82b9"},{"file":"sfx\/carl_death_vo_02.ogg","sha":"485b736c03e09be52d31b3489a7bdc77b02ea088"},{"file":"sfx\/carl_death_vo_03.ogg","sha":"9814d936fbeda4f1b93741490f908ed36c53d6de"},{"file":"sfx\/carl_death_vo_04.ogg","sha":"a756f78343bc9a48dbd26feb38de47981e8c4025"},{"file":"sfx\/carl_hurt_vo_01.ogg","sha":"4748fff958ba312a947a15d9ae28643e11340833"},{"file":"sfx\/carl_hurt_vo_02.ogg","sha":"740d698e24d5e86c88c7e909f36f9db78b20fd01"},{"file":"sfx\/carl_hurt_vo_03.ogg","sha":"1b648a8c09a9ca38cb3784ff22d43b3e82fd28cd"},{"file":"sfx\/carl_hurt_vo_04.ogg","sha":"29371c137c70376fd077084a36a3a4c31d28c5b1"},{"file":"sfx\/carl_hurt_vo_05.ogg","sha":"429d8626a495943ea4ed500027064af83b59f1a9"},{"file":"sfx\/carl_kill_vo_01.ogg","sha":"6a8e28199f5f573246091418a3ded4fa4f8ec7c2"},{"file":"sfx\/carl_kill_vo_02.ogg","sha":"e370d0a1b226ae00853a8f1188ac19c9c44b42b3"},{"file":"sfx\/carl_kill_vo_03.ogg","sha":"db23f8c830510a647539b316a72dfb344db24d1d"},{"file":"sfx\/carl_kill_vo_04.ogg","sha":"ea1c5fd2fdd2ffb1b70ace25f92e9097f4461dfe"},{"file":"sfx\/carl_kill_vo_05.ogg","sha":"990fdc62f409c176a3022bc83d5944fa387ae0e6"},{"file":"sfx\/carl_lead_vo_01.ogg","sha":"717f925aa93bb5b7299462a39cc6da06808bac24"},{"file":"sfx\/carl_lead_vo_02.ogg","sha":"ab3f5e938702b036677cecfeedfc4b26e0dc9c74"},{"file":"sfx\/carl_lead_vo_03.ogg","sha":"8cc47ce53e28048462d184f200aba25ab739e6ee"},{"file":"sfx\/carl_lead_vo_04.ogg","sha":"7a21f7e9d1c18a5c592bae4a2b65c0016dd02490"},{"file":"sfx\/carl_no_ammo.ogg","sha":"6ecfc96fbe22d0c6266995068febaa7ef9f9a0c9"},{"file":"sfx\/carl_reload_01.ogg","sha":"7458c32b543644e5341331592060590ae203b989"},{"file":"sfx\/carl_start_vo_01.ogg","sha":"ec8c950581c9dceb060e09c81797e38c1cf8abe9"},{"file":"sfx\/carl_start_vo_02.ogg","sha":"37b2b14c68580f53758d2cacaa4249732a5f0a46"},{"file":"sfx\/carl_start_vo_03.ogg","sha":"78b42cb2edd6509cd41ce62d195452057f57d72a"},{"file":"sfx\/carl_start_vo_04.ogg","sha":"6eba1850038636be35d9ea25d4e1dfb7eadaa30d"},{"file":"sfx\/carl_start_vo_05.ogg","sha":"74fe495ac4f99e77c58c950c92880bf2d84b923e"},{"file":"sfx\/carl_start_vo_06.ogg","sha":"bf3b343f83232bb74a09e3ced2cbc6aaa74d6d41"},{"file":"sfx\/carl_start_vo_07.ogg","sha":"06045fa68294fc40ddc88893f2b4ae18726ad91b"},{"file":"sfx\/carl_twirl_02.ogg","sha":"c31f1520a63111aa156af03375ac234d1d5580fa"},{"file":"sfx\/carl_ulti_vo_01.ogg","sha":"a3ec8eaa5353d93b8b188df47f0b34782f806663"},{"file":"sfx\/carl_ulti_vo_02.ogg","sha":"2f1e3bb76dbfe024e3019471053dd4f51e2602d9"},{"file":"sfx\/catch_bawl_01.ogg","sha":"e0f2e09f3b9cb51ae74358fe8b7952efda730764"},{"file":"sfx\/char_respawn_01.ogg","sha":"1499669b3d764c1b4311f5cc9759edb8c0586cff"},{"file":"sfx\/char_roll_out_02.ogg","sha":"463cd5fe5f39d166195a58966bf6477e61b9987a"},{"file":"sfx\/coin_count_02.ogg","sha":"d7ca38a63fe2d64a97aa980d4ab1d0e15721518b"},{"file":"sfx\/coin_hit_01.ogg","sha":"1270c21546a6452e4abc26cc912cb8f504bc2ac1"},{"file":"sfx\/collect_coins_01.ogg","sha":"c7db690c363854bff3d82162396774f89ec97d7c"},{"file":"sfx\/count_gems_01.ogg","sha":"75f297d719e4456535d5c1df9dabdc9043460035"},{"file":"sfx\/count_keys_01.ogg","sha":"0f68ac529f3c8a893797c49ec307b6d1715a526e"},{"file":"sfx\/count_powerpoints_01.ogg","sha":"3366851b21041cbf8f5027bcf03eeb676ce228b3"},{"file":"sfx\/count_starkeys_01.ogg","sha":"d8344b876a5b9a5448ea2d10de7fcdad27edba3c"},{"file":"sfx\/count_tickets_01.ogg","sha":"8394eb98b530891e1151b76a5f0df26a91816cf3"},{"file":"sfx\/count_trophies_01.ogg","sha":"6b7dc7dbb8a551bd5b28216dbae63580a7dbdd2a"},{"file":"sfx\/countdown_01.ogg","sha":"472cab6986ace9fe13078909959d08e851313233"},{"file":"sfx\/craft_rarity_01.ogg","sha":"a746da547f4f714a45fe024d6365b08faaba0f33"},{"file":"sfx\/craft_rarity_02.ogg","sha":"bd314e7597f2fae1466631067405c89b1d584e76"},{"file":"sfx\/craft_rarity_03v2.ogg","sha":"d6cdbd475e5d4ce926ea408f4aed63a76748a104"},{"file":"sfx\/craft_rarity_04v2.ogg","sha":"1a3ad12e1e47a136d5b0d06b04f48d353710bd4b"},{"file":"sfx\/craft_rarity_05.ogg","sha":"d65e8da83b27787bcb07c2a6b7c100b3038da488"},{"file":"sfx\/crow_dies_01.ogg","sha":"2499018032b211bac3ec3be67fe292b3869bab2b"},{"file":"sfx\/crow_dryfire_01.ogg","sha":"78b91a2f1ff7d3239a1766ff638839007c7d8e5d"},{"file":"sfx\/crow_get_hit_01.ogg","sha":"c7be89c9412241c846de66988f8e58b51d9f328c"},{"file":"sfx\/crow_get_hit_02.ogg","sha":"72e0489ba4abf557c5a9f3f21d9ce866cd623df8"},{"file":"sfx\/crow_get_hit_03.ogg","sha":"4766514074b0b8f7b6a52ba3199e89e55d50d47f"},{"file":"sfx\/crow_get_hit_04.ogg","sha":"c5366eb809bf746a762606ffa222f5cab19a3c7b"},{"file":"sfx\/crow_get_hit_05.ogg","sha":"f73f3dfa3b949f357e6d9ebe97b9aaca3e993649"},{"file":"sfx\/crow_get_hit_06.ogg","sha":"8e13ab89e1fa6acefad07039cc0fd05d06920cb7"},{"file":"sfx\/crow_kills_01.ogg","sha":"bec13346dd20673372d0860d53775bf81b9743e7"},{"file":"sfx\/crow_kills_02.ogg","sha":"8f518bb4cac52a01e04a21aae4950d82873a89c9"},{"file":"sfx\/crow_kills_03.ogg","sha":"1d7b25b04038671559b07a2aaba176198224c260"},{"file":"sfx\/crow_lead_01.ogg","sha":"2bf988c71f59b91164ed41c6767237c8c6952a3e"},{"file":"sfx\/crow_lead_02.ogg","sha":"088f69f5cb7550933306e11255282d6adf226e32"},{"file":"sfx\/crow_reload_01.ogg","sha":"143b6056a546b0ddf8f065fa41ad91428c426865"},{"file":"sfx\/crow_start_01.ogg","sha":"7ffcc5d14201834a6d4371d491c737173da46941"},{"file":"sfx\/crow_start_02.ogg","sha":"6583e52cb5deef9eded991089377ac7f45fecccd"},{"file":"sfx\/crow_start_03.ogg","sha":"08df7ac43c8185dd00549b0476b1c99856e7a431"},{"file":"sfx\/crow_throw_01.ogg","sha":"ad78c1b1e3ff03bf8af01ebe94d39d360ff8ea62"},{"file":"sfx\/crow_ulti_01.ogg","sha":"71d37626945ca3b01ff09883cdb2cbaf2c5a09db"},{"file":"sfx\/dash_gadget_01.ogg","sha":"9c12b41489e018cffc37f49d48be9a6c72f8a59a"},{"file":"sfx\/deadyey_shot_01.ogg","sha":"aedfea76b8ac21f1d6c1790047b36f4b6271a87c"},{"file":"sfx\/death_plop_01.ogg","sha":"abfc6e34cda790167e26cccb23a37639facace34"},{"file":"sfx\/drink_powerup_01.ogg","sha":"7411ac0a9916a0a8702ce90ec5094caa476e3a35"},{"file":"sfx\/dummy.ogg","sha":"f2b272e3cf735198c0dd043599bb502222887bf5"},{"file":"sfx\/dynamike_gadget_01.ogg","sha":"4dc34ca1b09e6f65b163b883873616306168a4f3"},{"file":"sfx\/dynamike_throw_01.ogg","sha":"a352bc77a7c8224fb9e6941423c6dddbd83f654a"},{"file":"sfx\/dynamike_throw_02.ogg","sha":"ae0740fcae263e7069ceebbb79a6442a708d2b0f"},{"file":"sfx\/earth_atk_01.ogg","sha":"72b4c455f4baf2ecc20f233d3fe6c2053f200e27"},{"file":"sfx\/el_primo_atk_01.ogg","sha":"96d093b50946456b68857860fae8841f63aa8f08"},{"file":"sfx\/el_primo_atk_02.ogg","sha":"51bc0f52545ee1c1ec7c9cbbdb94bc225ecee457"},{"file":"sfx\/el_primo_atk_03.ogg","sha":"7b44059425550ddbfeb71183e98c3e5237ac9099"},{"file":"sfx\/el_primo_atk_04.ogg","sha":"b27022c259d77c38cc9ade7023418d0c18d31796"},{"file":"sfx\/el_primo_atk_05.ogg","sha":"efec73f44c688df6d4cc48b35b26504140196b11"},{"file":"sfx\/el_primo_death_01.ogg","sha":"2990c77ceb3e83506fca708339513dc125871865"},{"file":"sfx\/el_primo_death_02.ogg","sha":"ff0c946f6ec62bccdf68c634f2ba15c714af25dc"},{"file":"sfx\/el_primo_death_03.ogg","sha":"3a1d8679068f1b0ba202bfc59f0a21eac3265fd7"},{"file":"sfx\/el_primo_death_04.ogg","sha":"f161e0de07c6871b7e2d8eed7db683143213dd67"},{"file":"sfx\/el_primo_hurt_01.ogg","sha":"5e7e01623389212b45979b8c7b2dcfa62b593be0"},{"file":"sfx\/el_primo_hurt_02.ogg","sha":"eef055b5c36952ab89da6a763d5f0a478ce65e21"},{"file":"sfx\/el_primo_hurt_03.ogg","sha":"78c9bf4aa6a32bf9c2a36dce15f187525e6c7ce5"},{"file":"sfx\/el_primo_hurt_04.ogg","sha":"ebb9b874b39d25550c5f4d97c17d0ab06528199f"},{"file":"sfx\/el_primo_kill_01.ogg","sha":"b9f19ffc43afc6a83791af50ed4a18fc5669063a"},{"file":"sfx\/el_primo_kill_02.ogg","sha":"4d51ce3f568036748cd699c5013087f15383e63a"},{"file":"sfx\/el_primo_kill_03.ogg","sha":"630348f8cd370e4ff94aa965d6a5afa9b1f6a361"},{"file":"sfx\/el_primo_lead_01.ogg","sha":"08e1724112b39b16ad8d766ccb2c9b4d6aef4f9e"},{"file":"sfx\/el_primo_lead_02.ogg","sha":"bfa37d3959da6cce459915c8078fcc2292b0de64"},{"file":"sfx\/el_primo_lead_03.ogg","sha":"28a273cc5a339cc5ff5219af83f94ca190097309"},{"file":"sfx\/el_primo_start_vo_01.ogg","sha":"5d763fa671067356d1f069c54eb1135a63a415a8"},{"file":"sfx\/el_primo_start_vo_02.ogg","sha":"f94c784b720acafe2c9ae4ba414c3a1b1d4beee7"},{"file":"sfx\/el_primo_start_vo_03.ogg","sha":"e78442e1fe087f817d0f257892060c33ae98a7c9"},{"file":"sfx\/el_primo_start_vo_04.ogg","sha":"2a6a9d2ee8dcadd6574d69a7802f77e20bc42087"},{"file":"sfx\/el_primo_start_vo_05.ogg","sha":"792453a3f0dea09f151ab237eb9906216e8a1d86"},{"file":"sfx\/el_primo_start_vo_06.ogg","sha":"1cb6df6d0d2eeb0f0169bfe80972661b1daa1226"},{"file":"sfx\/el_primo_start_vo_07.ogg","sha":"2ca28adc52f1facd933b76c24352d06339ddf2e1"},{"file":"sfx\/el_primo_ulti_01.ogg","sha":"79c026c98cc203807e490744fdafe0b0d1408efb"},{"file":"sfx\/el_primo_ulti_02.ogg","sha":"cdc00f6f261623938b7510c21fa005f318efd43f"},{"file":"sfx\/emit_coins_01.ogg","sha":"3271683ea7677f12945415ebee947efb4a8c4f3a"},{"file":"sfx\/emit_gems_01.ogg","sha":"86b6befcb5097e10c4f276fa634215e7aa02836a"},{"file":"sfx\/emit_keys_01.ogg","sha":"8868aba0ee5fd839459c2c21fef865e27353f987"},{"file":"sfx\/emit_powerpoints_01.ogg","sha":"22154966b61c199e14b9110b212b962d5f94e315"},{"file":"sfx\/emit_starkeys_01.ogg","sha":"b803e3970b8e7492148edda371bb9da264ed5bc8"},{"file":"sfx\/emit_tickets_01.ogg","sha":"c94f87b11a84d833d83b57e9036a68ae4bf5c2ed"},{"file":"sfx\/emit_trophies_01.ogg","sha":"1895b2ae414e969bb90d7ad731eeab8f045ead37"},{"file":"sfx\/emz_atk_01.ogg","sha":"65deb8750bba25049ceab0786751c411553fb5cd"},{"file":"sfx\/emz_atk_vo_01.ogg","sha":"f249f6858155c5b484e658e4355ad1bb4ce662a1"},{"file":"sfx\/emz_atk_vo_02.ogg","sha":"f0efb8a97e53c1480447446d6a1949def5df907e"},{"file":"sfx\/emz_atk_vo_03.ogg","sha":"0860f1d740b4969df0381faf703cf06c7e7de221"},{"file":"sfx\/emz_atk_vo_04.ogg","sha":"0c123a8a3db6aea5d16fe45439886cc36b782ce6"},{"file":"sfx\/emz_atk_vo_05.ogg","sha":"2ea6097a7ca32f79f60306a1388606bb11efcc96"},{"file":"sfx\/emz_die_vo_02.ogg","sha":"66607f41c764e3fc00b24927c1d6d16007d7680c"},{"file":"sfx\/emz_die_vo_03.ogg","sha":"751cc315e2fe89105c02d9b02b92ed92652240c0"},{"file":"sfx\/emz_die_vo_04.ogg","sha":"de46974452738f17a28cb8138a6a73ea00e64d6e"},{"file":"sfx\/emz_dryfire_01.ogg","sha":"e6f3147ded4f460520ff36ff613f31a053bfaef3"},{"file":"sfx\/emz_gadget_01.ogg","sha":"83ae0ad1e586a9dbd548a8b9b919c679ed6911ed"},{"file":"sfx\/emz_hurt_vo_01.ogg","sha":"09418c6547cc1e8f43ec74e9866702c547acd8d8"},{"file":"sfx\/emz_hurt_vo_02.ogg","sha":"0955defc2ffdd78cb442230d105af5aa9115d26d"},{"file":"sfx\/emz_hurt_vo_03.ogg","sha":"810402085be536491fde548db336f553b5c69e37"},{"file":"sfx\/emz_hurt_vo_04.ogg","sha":"06880d0d32c79724637cc9e30b0ecae0161d784d"},{"file":"sfx\/emz_hurt_vo_05.ogg","sha":"992f837ec1de33d6c239e56668d0298ef52a1a4e"},{"file":"sfx\/emz_hurt_vo_06.ogg","sha":"b8fb20d954901adbd097399221a26beab128a5f2"},{"file":"sfx\/emz_hurt_vo_07.ogg","sha":"b8cc51af30715d59a4867c99952cdf2bd732d96b"},{"file":"sfx\/emz_kill_vo_02.ogg","sha":"1d25aa4b730df6e6625acf97ab41b38952cc65b2"},{"file":"sfx\/emz_kill_vo_03.ogg","sha":"1223d96e9d6742bffc173e98052872032d60fb67"},{"file":"sfx\/emz_kill_vo_04.ogg","sha":"a044a28f1587e52b2b7abbb49ec657628d6b731a"},{"file":"sfx\/emz_kill_vo_05.ogg","sha":"9b57f0f9c112b3114d6448a2a0107bd74c238086"},{"file":"sfx\/emz_kill_vo_06.ogg","sha":"5a7536efab9258b55f9d41f9995da9af5f8918f8"},{"file":"sfx\/emz_kill_vo_07.ogg","sha":"a617ab5d39a6bd230dd7a5728410521aad691ee8"},{"file":"sfx\/emz_lead_vo_02.ogg","sha":"269e0a62c7f7afa578a740aac3eef5065c13ff44"},{"file":"sfx\/emz_lead_vo_03.ogg","sha":"5e9ab873b5bceb1a8e12fbecc0039a519c99f7ef"},{"file":"sfx\/emz_lead_vo_04.ogg","sha":"3548d56c561bab55f8c0b8147d0c7376c39ac6a1"},{"file":"sfx\/emz_reload_01.ogg","sha":"750e6b1e63da6ba8a9ab028818d4831288f56b7e"},{"file":"sfx\/emz_start_vo_01.ogg","sha":"613d6863136663e317d5af164d9a76fc08034e05"},{"file":"sfx\/emz_start_vo_02.ogg","sha":"d2af0c366cc74248fd5105d7d982a4bf04753da4"},{"file":"sfx\/emz_start_vo_03.ogg","sha":"a88292efb3f389bc182765cb9b43cf6d949c6b8c"},{"file":"sfx\/emz_start_vo_04.ogg","sha":"5dc56888b17b4bcc9be7134350c7688d42f0b286"},{"file":"sfx\/emz_start_vo_05.ogg","sha":"75f4bd3451c0ac3bb4762faa95730231dcd26c35"},{"file":"sfx\/emz_ulti_01.ogg","sha":"12a856657723449f8df2fb8c3ab8a27772c16935"},{"file":"sfx\/emz_ulti_vo_01.ogg","sha":"8143a305676c23067c1f6a6954f3a05b7e2f20a0"},{"file":"sfx\/emz_ulti_vo_02.ogg","sha":"6b49aa2fcfa7492b448973f62b995fb1370072c0"},{"file":"sfx\/enemy_char_respawn_01.ogg","sha":"af61b7414b91343a0917015d2ca1875d66b2b3d3"},{"file":"sfx\/enemy_gadget_button_01.ogg","sha":"140a1b6d539d8448d5763913bdb769667c646726"},{"file":"sfx\/flowerrocket_01.ogg","sha":"45c27cd67f860e92e44b894c53cb60aadfeb805f"},{"file":"sfx\/footbrawl_load_01.ogg","sha":"b4e20f809da31e42c7eb1184f617c0976f31bb5a"},{"file":"sfx\/frank_gadget_01.ogg","sha":"00e8341c1e40403c672639461d85341554a8ed0d"},{"file":"sfx\/frank_hit_01.ogg","sha":"88b88376165fa8b42b4a31bb34351814cfb6b619"},{"file":"sfx\/frank_swing_01.ogg","sha":"ff12006164b71b9399ba2235eea6b80ef1e5d44c"},{"file":"sfx\/frank_ulti_hit_01.ogg","sha":"278dbb1bef07d903364ed293cb6cc5f78db8849d"},{"file":"sfx\/frank_ulti_swing_01.ogg","sha":"22575bb44154df8bb48493e68aa691d92688a07f"},{"file":"sfx\/frank_vo_01.ogg","sha":"75d8c03f0ab3a3a43edf7a43bf55c52dcf6a15b1"},{"file":"sfx\/frank_vo_02.ogg","sha":"aea5952068e3b6bf877d1a3cb76d4bc26fd300fa"},{"file":"sfx\/frank_vo_03.ogg","sha":"860be5704919b274873272c6e13cfa5289f3c497"},{"file":"sfx\/frank_vo_04.ogg","sha":"447794ebabf3f9b7f4235c1c2cce29222161d300"},{"file":"sfx\/frank_vo_05.ogg","sha":"0d3f534c848217f9a70909a0e8c860444d3189d6"},{"file":"sfx\/frank_vo_06.ogg","sha":"f68fce34c25914a43bad927706fd8e1710c011c4"},{"file":"sfx\/friend_online_01.ogg","sha":"4fb8d51160c8a4b7ae29a6430f1655812aa27807"},{"file":"sfx\/gatcha_summary_01.ogg","sha":"0bb494aa7511faeb74dd1e9633fee1bfdf4e5aba"},{"file":"sfx\/gems_gatcha_01.ogg","sha":"f9f2eff61c8b842d4841fb77ca7ab2c99d108f4a"},{"file":"sfx\/gen_small_explo_02.ogg","sha":"c25608e389f81c3831f3d919dc7337ebe83cb4df"},{"file":"sfx\/gene_atk_02.ogg","sha":"ca2ba674ebac1eacda8fc1e0a5da9f5dbb5f67ed"},{"file":"sfx\/gene_atk_dry_01.ogg","sha":"dfe4fa3876b8cc803fc1987c347d1bd648251835"},{"file":"sfx\/gene_atk_hit_01.ogg","sha":"3ab8fea80a5d67e0b0211aa6c241e4cacbffbd95"},{"file":"sfx\/gene_atk_hit_02.ogg","sha":"62ee8cbbfaf403e8e0afa37781b6b9016b39d450"},{"file":"sfx\/gene_atk_reload_01.ogg","sha":"9675906fb5f9207994fdba309fc0906a48539048"},{"file":"sfx\/gene_atk_split_01.ogg","sha":"1137fdad71a8f637bd3db7ed3d25042e83050ed2"},{"file":"sfx\/gene_atk_ulti_01.ogg","sha":"f45e3c3fc562789d93eb1e273b132569051df984"},{"file":"sfx\/gene_gadget_01.ogg","sha":"45c285453dd15f24d417372e94b492a7457418f5"},{"file":"sfx\/gene_hit_01.ogg","sha":"7a06db3f920f5fbc092a896e7ff9cb78114857a3"},{"file":"sfx\/gene_vo_01.ogg","sha":"e85dae39f54dc799ddff0f3e0059498f1984d260"},{"file":"sfx\/gene_vo_02.ogg","sha":"a0d399106a918c2a0bbda46b45060f39d077e505"},{"file":"sfx\/gene_vo_03.ogg","sha":"f659626e45910bc359864a46d93e562dd650036d"},{"file":"sfx\/gene_vo_04.ogg","sha":"200a53dd2073019ac7e5538c274c5d4698923e82"},{"file":"sfx\/gene_vo_05.ogg","sha":"2ec8983ca605d96f0333a0edc159d8f91aa710df"},{"file":"sfx\/gene_vo_06.ogg","sha":"2d3854b2e423b765d4d97c5c470d58199fcab3d7"},{"file":"sfx\/gene_vo_07.ogg","sha":"d998fbf1186b76a94416c58c33cf949c45be9980"},{"file":"sfx\/gene_vo_08.ogg","sha":"8e500ede9bcf3e700133cb3e7b532a7451967972"},{"file":"sfx\/gene_vo_09.ogg","sha":"05b75becc513ee2b5172dae6e5a86b04a895a140"},{"file":"sfx\/gene_vo_10.ogg","sha":"afb6b64f02fd034ff592904391074e874c8ecc06"},{"file":"sfx\/gene_vo_11.ogg","sha":"f1f6086ad2ed55b3eac5143974e9ac609f882f99"},{"file":"sfx\/gene_vo_12.ogg","sha":"ab256098e6b96737cb0b4ca07a011efb3e454464"},{"file":"sfx\/gene_vo_13.ogg","sha":"2b90210bf5f8a5aab26b9aa8c023ed4305e47382"},{"file":"sfx\/gene_vo_14.ogg","sha":"e29b25ec31da1c5e885c2b9511d240f0151a8ff7"},{"file":"sfx\/get_coins_01.ogg","sha":"148f04741943c66588ab70af0b8219a4d6d0fb4a"},{"file":"sfx\/get_pickup_02.ogg","sha":"e31b29b5bb025b322fd29f7c5f65d0d66ddcedb2"},{"file":"sfx\/get_pickup_06.ogg","sha":"69e1fafb0cbb227cf6257ab47b5496c66f36edb7"},{"file":"sfx\/get_powerpoints_01v2.ogg","sha":"e4629a5155516755a3b71697a9e274799893973d"},{"file":"sfx\/get_powerpoints_02v2.ogg","sha":"a757fccf7e9fc72dccea730d413b63bdd188a2a1"},{"file":"sfx\/get_powerpoints_03v2.ogg","sha":"e8c74224a55a1c7fb0547563a537c5307e075274"},{"file":"sfx\/get_pp_2_accent_01.ogg","sha":"19e48b89b555d51047588d1f65cacc44982b80e1"},{"file":"sfx\/get_pp_accent_01.ogg","sha":"17589193e55f414d537bfbbadf293cb6a6dbf51c"},{"file":"sfx\/get_star_points_01.ogg","sha":"b3ab4ba958c03a1fa451d480e4fc9de2588d456d"},{"file":"sfx\/get_tickets_01.ogg","sha":"882b0d6628185b7816824fe99e808e7b1c48826c"},{"file":"sfx\/get_trophies_01.ogg","sha":"c43f7a34da78f6b45f5513a12f0bbc793bdfe213"},{"file":"sfx\/get_xp_01.ogg","sha":"2fcee6182bf2056cc1bfb715857fd2bb2fadcd9f"},{"file":"sfx\/gr_launch02.ogg","sha":"f352299626e9aeea3b9dfbc93669a651d8392927"},{"file":"sfx\/guntown_select_char_01.ogg","sha":"d5fd8878e591ad65927a3fd0604d133e867b5eb6"},{"file":"sfx\/heal01.ogg","sha":"08c5deea7be785039afce51790f70add3c75431c"},{"file":"sfx\/heal_loop_01.ogg","sha":"4492ee8efd05418c39ad06fbfc2be8ba0c766509"},{"file":"sfx\/hotshot_die_01.ogg","sha":"a98a093761c7144ae995a14ac7d9f8947369d786"},{"file":"sfx\/hotshot_die_02.ogg","sha":"35e2afdb7fbb1349ab1b135e284333173e689092"},{"file":"sfx\/hotshot_die_03.ogg","sha":"171473df0264151c95bbaf851151808e07a022fb"},{"file":"sfx\/hotshot_die_04.ogg","sha":"b1257bcda54816e967831b3195485fac5c7b2148"},{"file":"sfx\/hotshot_hurt_01.ogg","sha":"2bab9f4e19d9f3d08d9a34f3a507b17fb19dca99"},{"file":"sfx\/hotshot_hurt_02.ogg","sha":"fa1d18704b975aa18318860bd7e833ba9ddc366f"},{"file":"sfx\/hotshot_hurt_03.ogg","sha":"1bdae712078b77033f981403a0b6df862185bba7"},{"file":"sfx\/hotshot_hurt_04.ogg","sha":"092211a4218e055ca2d371def882bf8b9e42e4e0"},{"file":"sfx\/hotshot_hurt_05.ogg","sha":"2b1797a54cc0414383aefc0626efc6ed561e7e22"},{"file":"sfx\/hotshot_hurt_06.ogg","sha":"b152778d574613a86f5afe7ebf905cb94b95265c"},{"file":"sfx\/hotshot_hurt_07.ogg","sha":"6dbd8571a8df16698099520ee534db848c25e4b4"},{"file":"sfx\/hotshot_hurt_08.ogg","sha":"7620d5369cc91ac385e1fa1f40db9c131d695a66"},{"file":"sfx\/hotshot_kill_01.ogg","sha":"80b86b6e0f3a8a0eae378944dfcdd98ff2c7cb6e"},{"file":"sfx\/hotshot_kill_02.ogg","sha":"e8f86fc77b325013988ed7c52b64e3795c946941"},{"file":"sfx\/hotshot_kill_03.ogg","sha":"b7f15507779d1be49f1b3df88b41f2a056a9b108"},{"file":"sfx\/hotshot_kill_04.ogg","sha":"e99af5b4bee225617bc4ed2ab8a900e26eaf5b3b"},{"file":"sfx\/hotshot_kill_05.ogg","sha":"83c0b5bbc6780d856bb64482321125c220e223c2"},{"file":"sfx\/hotshot_kill_06.ogg","sha":"c719aec18f5bd4ccfb69684f0c57391b7ca1b144"},{"file":"sfx\/hotshot_kill_07.ogg","sha":"77d6a5161de040be1f81264a74fe6d92830624ac"},{"file":"sfx\/hotshot_lead_01.ogg","sha":"cc932e98ea8cf66a86a3ed34bfb011cacf975d3a"},{"file":"sfx\/hotshot_lead_02.ogg","sha":"4a4c1b9f0790204423c9b6b4817470fd8ec4bd17"},{"file":"sfx\/hotshot_lead_03.ogg","sha":"a48e2258c30b7d0b146697e49d6d3081564473e5"},{"file":"sfx\/hotshot_lead_04.ogg","sha":"2989e77457504b47ea3f874728ede9b9e4f3304d"},{"file":"sfx\/hotshot_lead_05.ogg","sha":"d3d60a25f30b16997e05bbcbe8af04656bc82f69"},{"file":"sfx\/hotshot_start_01.ogg","sha":"0eba7c66599caedf54fcc834be11c5a3e6c318da"},{"file":"sfx\/hotshot_start_02.ogg","sha":"b967bb16f19581cc1d791dfafba4d16560a8bd9e"},{"file":"sfx\/hotshot_start_03.ogg","sha":"130a1c83af85d67a546bca7707b4b7a8a1c38f5b"},{"file":"sfx\/hotshot_start_04.ogg","sha":"7640749b4e97e5aec89bbd159d1d9f4f39dd553c"},{"file":"sfx\/hotshot_ulti_01.ogg","sha":"bc8c6cab0713407f02be42df0ab6016864bc1ca7"},{"file":"sfx\/hotshot_ulti_02.ogg","sha":"a11a9f95e61f60c3331c6cc23f55d07e0715eb00"},{"file":"sfx\/hotshot_ulti_03.ogg","sha":"b9cb578d6d5f4ee6e66f400d1d3cd835bafcc099"},{"file":"sfx\/hotshot_ulti_04.ogg","sha":"cd06ed91b03d13554bbb21bbae4daee3c99578c2"},{"file":"sfx\/item_swirl_01.ogg","sha":"d6441c32a83b5a821bb40a5178e7af6bafb3499a"},{"file":"sfx\/jackie_atk_01.ogg","sha":"932f48fc6fbc1de4cb5498b88651fc4967628d68"},{"file":"sfx\/jackie_atk_02.ogg","sha":"b93d446e1e3b9c57b57408474f206de787a03295"},{"file":"sfx\/jackie_atk_ulti_01.ogg","sha":"9f1958cf934f5dd651b68046f22f6576d8cc81e4"},{"file":"sfx\/jackie_atk_ulti_02.ogg","sha":"1474f538491406545e23359ebc2a7385d30839ee"},{"file":"sfx\/jackie_atk_ulti_03.ogg","sha":"cb3e486825706e1bc004159245018bafb4cbaf89"},{"file":"sfx\/jackie_die_vo_01.ogg","sha":"ff2535b7571d47caa150bca260f76563cc1655a8"},{"file":"sfx\/jackie_die_vo_02.ogg","sha":"6b9f3f5ef56bc150eec0c5b790bf2969a40b4896"},{"file":"sfx\/jackie_die_vo_03.ogg","sha":"e93c958adae80f3c7062aeb7412851984af927d9"},{"file":"sfx\/jackie_die_vo_04.ogg","sha":"91dd9e303040e78841feeb3f7d2f452a39a50545"},{"file":"sfx\/jackie_dryfire_01.ogg","sha":"2e75de281ae23be4ecdab67b854d5aa4d1a71999"},{"file":"sfx\/jackie_hurt_vo_01.ogg","sha":"392f10e4a62215e250de95da52f1689373e9e64c"},{"file":"sfx\/jackie_hurt_vo_02.ogg","sha":"69cb8257f89731824dfc3529451068becd6fb302"},{"file":"sfx\/jackie_hurt_vo_03.ogg","sha":"82a7d038b0871d53c43ccd2e126fcb07c23527b4"},{"file":"sfx\/jackie_hurt_vo_04.ogg","sha":"8e3d1e9085674fda1a92aed239ea10dbf6023792"},{"file":"sfx\/jackie_hurt_vo_05.ogg","sha":"7902a0cc4d1d80085c9dc402d6cd7f007b8d7e7c"},{"file":"sfx\/jackie_hurt_vo_06.ogg","sha":"abe19becadb221d21746c305d4d4c9fbabe560bb"},{"file":"sfx\/jackie_kill_vo_01.ogg","sha":"bc95ceebfaf0cc6cd213d818a6cef5542b2a18fa"},{"file":"sfx\/jackie_kill_vo_02.ogg","sha":"d021196ba18d6cb21c0e897ad054ca0c1057561d"},{"file":"sfx\/jackie_kill_vo_03.ogg","sha":"b53fcbc880312dd6da5d0f26e56b367403be4838"},{"file":"sfx\/jackie_kill_vo_04.ogg","sha":"627ba75e28f3b4a5c1ad66ad426628dc4274dabb"},{"file":"sfx\/jackie_kill_vo_05.ogg","sha":"ef37b6d61d38f59ae51c66b3f192c5c6f10cb8dc"},{"file":"sfx\/jackie_lead_vo_01.ogg","sha":"1a3cd657396ec02f5598419e13ee3b14dc8e5b1c"},{"file":"sfx\/jackie_lead_vo_02.ogg","sha":"c103a91d77452fead3da6dd22bbd939f278e1582"},{"file":"sfx\/jackie_lead_vo_03.ogg","sha":"02898adec2a2d23d1c74175d4ab9e840c0b7f5a2"},{"file":"sfx\/jackie_lead_vo_04.ogg","sha":"2a8f8bbda19d2a180c5058cee6ae4c9ad22b2f17"},{"file":"sfx\/jackie_reload_01.ogg","sha":"8ccaa58d7e13fde357a2d89bafffbab6a7e50c59"},{"file":"sfx\/jackie_start_vo_01.ogg","sha":"ceac52a57e3dcc46b112672a9ebae8ba452a2009"},{"file":"sfx\/jackie_start_vo_02.ogg","sha":"533e495a2bd18c60167440fa92f3c4fb5b9674fb"},{"file":"sfx\/jackie_start_vo_03.ogg","sha":"5ab586ccb3ffad39707a335608943627d1018592"},{"file":"sfx\/jackie_start_vo_04.ogg","sha":"cbc89a7cf535c688eae3d99999b9c3cf6f450bd6"},{"file":"sfx\/jackie_ulti_vo_01.ogg","sha":"6aa7f4788df7ff8cdab24e8f35be350e4ca8f170"},{"file":"sfx\/jackie_ulti_vo_02.ogg","sha":"7fdcfc023cd3fca8b0beef4fa95df53d66bb7323"},{"file":"sfx\/jackie_ulti_vo_03.ogg","sha":"ca867110a690484bfb1f9643cecdef55a1d38ad3"},{"file":"sfx\/jackie_ulti_vo_04.ogg","sha":"79e6fb26dad58a96dca7e8a7b9ab5aa8537855d5"},{"file":"sfx\/jackie_ulti_vo_05.ogg","sha":"32981a401c298ab4fc1db5b2d8c598fb06fc1ba3"},{"file":"sfx\/jackie_ulti_vo_06.ogg","sha":"071ca3b5d8a2c3f8473c22e25738f435063acdd6"},{"file":"sfx\/jess_die_01.ogg","sha":"83906d5e00324f812d981724d2e61f490509474b"},{"file":"sfx\/jess_die_02.ogg","sha":"13a94fc1d4150b51540b5a5b7635ac89a279d4a2"},{"file":"sfx\/jess_die_03.ogg","sha":"81732733d5dd8cb44ea2a11c153f96f8b3c4eaa6"},{"file":"sfx\/jess_die_04.ogg","sha":"ed9edc4bf470cdccc8ed3af7c7ac87d7ef57bec3"},{"file":"sfx\/jess_dry_fire_01.ogg","sha":"e73ca02985e7c5b13ca3c91a0a2c7122af516bb5"},{"file":"sfx\/jess_gadget_01.ogg","sha":"64bcfdd8babf65e2a68bb0dffbf0aa01031cba44"},{"file":"sfx\/jess_hit_01.ogg","sha":"115f2d176e29b6c75c6771672f0658f9bacc710a"},{"file":"sfx\/jess_hurt_01.ogg","sha":"faee7dcd8895fe2daaff82830e8131658a519986"},{"file":"sfx\/jess_hurt_02.ogg","sha":"b1c5f39be7f4ba1f7c28c14dd51cdc6d19316f4e"},{"file":"sfx\/jess_hurt_03.ogg","sha":"b6df83f22a29741519a8b095e34b32cb88f8c4c4"},{"file":"sfx\/jess_hurt_04.ogg","sha":"ac4179c302b695af043560efb08543f66ea802e3"},{"file":"sfx\/jess_hurt_05.ogg","sha":"35959926d1b0ba99c4e4e98f8440bf3bf4c964a9"},{"file":"sfx\/jess_hurt_06.ogg","sha":"df4a84a5df34d4c0e1ae0c26e433db231c631a19"},{"file":"sfx\/jess_kill_01.ogg","sha":"0a007cc98a0cc1b8b7b932a3cf0bc38de153c192"},{"file":"sfx\/jess_kill_02.ogg","sha":"c0db173978ace1c9f407ec0890e040c022622fd0"},{"file":"sfx\/jess_kill_03.ogg","sha":"b089968b24cd46a2b77b20bf5664c0f4a5087fb0"},{"file":"sfx\/jess_kill_04.ogg","sha":"77be36d1b5486ae46cec9ad0e9a644e7efeade81"},{"file":"sfx\/jess_kill_05.ogg","sha":"aff84c8c54c1855d23c361bfbf4ae5f59006f08f"},{"file":"sfx\/jess_kill_06.ogg","sha":"c5fc55b2729c33d63f55da7598b0c6d39cf26eb1"},{"file":"sfx\/jess_kill_07.ogg","sha":"a7803b9b7dbb54ca9695db568a3d66459236af7b"},{"file":"sfx\/jess_lead_01.ogg","sha":"84df096ea4fce5b156db706a80b68684578bb6d1"},{"file":"sfx\/jess_lead_02.ogg","sha":"8107210b19bee3bf35bfc112a0a5b8e88b2d3408"},{"file":"sfx\/jess_lead_03.ogg","sha":"df8c109ea73b411b05d4020ad065b4d1e126dac0"},{"file":"sfx\/jess_lead_04.ogg","sha":"feb36dd6ab092dcb6dd3e60ea41b5669c48908f7"},{"file":"sfx\/jess_lead_05.ogg","sha":"0b52c963489a435a15e58b829ef4c385fcd808b7"},{"file":"sfx\/jess_reload_02.ogg","sha":"0ba7db2b27098c4145da5381e3939a6905437a60"},{"file":"sfx\/jess_shoot_01.ogg","sha":"378f70b27cf4c10fa8ae8c3a5e02410567c43d85"},{"file":"sfx\/jess_start_vo_01.ogg","sha":"5a0f62a0ee035b3e9a176361eadbee358fe27955"},{"file":"sfx\/jess_start_vo_02.ogg","sha":"5ff7a79b021ea8ef2c0c351dc2ddfd1ecbe5fa89"},{"file":"sfx\/jess_start_vo_03.ogg","sha":"2b89fdd3b906706cbc17b5880f3b849fcca3d830"},{"file":"sfx\/jess_start_vo_04.ogg","sha":"4ae84a576426aafd6b56e8fbc6f9590f417a99a5"},{"file":"sfx\/jess_start_vo_05.ogg","sha":"dcfa91c1fef5a9e61cdd6c433ae1ab7a19ab8c45"},{"file":"sfx\/jess_throw_01.ogg","sha":"56eea49674a87aac9fa2aca7ebc089fe314db027"},{"file":"sfx\/jess_ulti_01.ogg","sha":"27d95e671efc052e03c352d5f7473f3545ce5604"},{"file":"sfx\/jess_ulti_02.ogg","sha":"096e4e4dbd0255dc685ec4dcdf2119b511a50fba"},{"file":"sfx\/jess_ulti_03.ogg","sha":"e85a4ca240bc093a93c799c78ac3cae667de8fb1"},{"file":"sfx\/jess_ulti_04.ogg","sha":"6c38616f07fdc7f4040c0ca1b08dc08ae00c93ff"},{"file":"sfx\/jess_ulti_05.ogg","sha":"634d8c1d3a1feeac7513c727b7b5438f57ee2385"},{"file":"sfx\/jess_ulti_06.ogg","sha":"5ded241e5de5a84c56f6766f90ffb4b3d881af49"},{"file":"sfx\/join_game_room_01.ogg","sha":"9fd0d21cc8a2c2a17ea6daf36f3501a120c82dd4"},{"file":"sfx\/laser_04.ogg","sha":"4189978114aacb5558feb8291962b2c7e374ea9a"},{"file":"sfx\/laser_explo_01.ogg","sha":"8586a32ac2b947c0cc98471bf37c2c0ac7f96d18"},{"file":"sfx\/laser_load_01.ogg","sha":"c36246a78ea7fd6dd2788a197483da18db7b1636"},{"file":"sfx\/laser_panic_01.ogg","sha":"5d034774472831ed7e5e435bedf27bf62ae1a856"},{"file":"sfx\/laser_panic_bad_01.ogg","sha":"443934e3932d4539742a77aab39a0cbccca7731e"},{"file":"sfx\/laser_upgrade_char_01.ogg","sha":"da4dfaff25956e1e4cd976b94e124b136a8e1c05"},{"file":"sfx\/leave_game_room_01.ogg","sha":"6b65cd1ab7204b5d6363d5b64963d08bfe366d69"},{"file":"sfx\/leon_die_vo_01.ogg","sha":"fb636919138486ebfe102951d7436c9b68735603"},{"file":"sfx\/leon_die_vo_02.ogg","sha":"a5d23f6c406666ee965d12ee7e4980cf9a76d613"},{"file":"sfx\/leon_die_vo_03.ogg","sha":"4c4f15d4720bd84128027b2bfecf06bb35dc3e0d"},{"file":"sfx\/leon_die_vo_04.ogg","sha":"b4fdc42148da140b347b8419cbc0da81ffd0f07b"},{"file":"sfx\/leon_hurt_vo_01.ogg","sha":"0c3eb0e7251c6e5d8f09bf5b7915e5b6ec7dc68b"},{"file":"sfx\/leon_hurt_vo_02.ogg","sha":"3410d3502000d0ea17bc701cb6b733b25babab71"},{"file":"sfx\/leon_hurt_vo_03.ogg","sha":"87c6ff3d79b59ba60a2b9eec81a7db8c61ffb190"},{"file":"sfx\/leon_hurt_vo_04.ogg","sha":"4ae6b367e8cdb9a63eb25ae158a5a5dd73a05404"},{"file":"sfx\/leon_hurt_vo_05.ogg","sha":"f119d3b779e7449a314aed9b7b7e8bc213593eec"},{"file":"sfx\/leon_kill_vo_01.ogg","sha":"d2720e0eff1a89c87c967a1c804bea2c1b7166f6"},{"file":"sfx\/leon_kill_vo_02.ogg","sha":"02d503a5ed69945d2285c5659e09eef97a09ca59"},{"file":"sfx\/leon_kill_vo_03.ogg","sha":"6b326531b94386a96562d4bf0c1f7d7118236df3"},{"file":"sfx\/leon_kill_vo_04.ogg","sha":"a256b97cf23600b9387fa344045ca7d35a4bd812"},{"file":"sfx\/leon_kill_vo_05.ogg","sha":"ac4d7b426d10d953d783649a08fec7c1b9decb62"},{"file":"sfx\/leon_kill_vo_06.ogg","sha":"4cad6787a4494127ee4d07972930a1886c5776a7"},{"file":"sfx\/leon_lead_vo_01.ogg","sha":"33d7350b2de78704121157c0803b03cdceb0e353"},{"file":"sfx\/leon_lead_vo_02.ogg","sha":"db121fcead6fb3e4d150e222f91ef00aea6b3ae3"},{"file":"sfx\/leon_lead_vo_03.ogg","sha":"bf1fd31a94023de76d0b9dc525b7e5028567e03b"},{"file":"sfx\/leon_lead_vo_04.ogg","sha":"b55be2fc5eee7aa29fbdb1b6c4c3ec12de5c3417"},{"file":"sfx\/leon_lead_vo_05.ogg","sha":"def49df85888741d17f92736d47dbf4e7a5bf81f"},{"file":"sfx\/leon_reload_01.ogg","sha":"bb02ea6c4ac87120f4b0e95bae997e84fb050da0"},{"file":"sfx\/leon_start_vo_01.ogg","sha":"454a18ec953aa7109b2e941a1ab24a17a3fe8f21"},{"file":"sfx\/leon_start_vo_02.ogg","sha":"0f55109f9534aa969a74556e1abd657b37bdd6ec"},{"file":"sfx\/leon_start_vo_03.ogg","sha":"15dc0eb1713ca880484cedb3fddbe6a9d51d70b9"},{"file":"sfx\/leon_start_vo_04.ogg","sha":"19bfb39e8db894ccd6e60fb1fd856db607224055"},{"file":"sfx\/leon_start_vo_05.ogg","sha":"7d7b1434b2f4fab3ce78b8394ce5f596efb7472d"},{"file":"sfx\/leon_ulti_vo_01.ogg","sha":"285a83133868f2308589f102029a8ab75e42edf7"},{"file":"sfx\/leon_ulti_vo_02.ogg","sha":"12b1afa89dd2601f0b7d8ff8b1aa6759b1152697"},{"file":"sfx\/leon_ulti_vo_04.ogg","sha":"ab06faa82a270ca020c2bb3b3beef061bd9a7c04"},{"file":"sfx\/leon_ulti_vo_05.ogg","sha":"02b0097fecdcb4891c0801c66f08b3314e21f626"},{"file":"sfx\/leon_wolf_ulti_vo_01.ogg","sha":"1076399d1db3e1b9d78909b2ae6aaaf0d8948e78"},{"file":"sfx\/leon_wolf_ulti_vo_02.ogg","sha":"d3bc379acf8e446c78a0dc1b043b8899a0a23c09"},{"file":"sfx\/level_up_01.ogg","sha":"5e1108d3f86d818310311c42681542e3c8c6745d"},{"file":"sfx\/ll_atk_01.ogg","sha":"55c765070b5f7b73e730132b484be23cd9e4981c"},{"file":"sfx\/ll_die_01.ogg","sha":"980406c4ed078c90bef86401673ed5ea9d218e59"},{"file":"sfx\/ll_hurt_01.ogg","sha":"53d9a545655d85ffa03eabb880c8b30da3cae165"},{"file":"sfx\/ll_kill_01.ogg","sha":"9d37b34a1021ab716ae8a0e4c4c93c9bb8dd4b2b"},{"file":"sfx\/ll_start_01.ogg","sha":"f0b0af0c5ee50ad8662c96fb93a4d144be57681d"},{"file":"sfx\/ll_ulti_01.ogg","sha":"85cfa7d10a0f8f894f835ab24339885e8eea4346"},{"file":"sfx\/ll_ulti_hit_01.ogg","sha":"f84603e21c6f1fcf3ca312e433dce72c41f37c20"},{"file":"sfx\/lose_trophies_01.ogg","sha":"4acb1ca6c8fa868485d5abd926d0ab23549094ad"},{"file":"sfx\/low_health_beep_03.ogg","sha":"a1f8d9c41778f119ec70fe8d620d74fb1cdce730"},{"file":"sfx\/lucha_punch_01.ogg","sha":"7226941572dd8cf12fd18b960eeedd8a2bb1994f"},{"file":"sfx\/lucha_ulti_01.ogg","sha":"d6a275d4eb9501bc4dcf56624d5347a46a956b7d"},{"file":"sfx\/marig_fire_01.ogg","sha":"d5c41c1bbd114cdd5f76f6cde82dca0f18cb707f"},{"file":"sfx\/marig_hit_01.ogg","sha":"0098b0f6b079ce5866d657c811c983e7f2370013"},{"file":"sfx\/marig_miss_01.ogg","sha":"c73b8ec6772bb6e9c4722be0c433a51bf46bee92"},{"file":"sfx\/marig_turret_02.ogg","sha":"4fbbb4ffe5a2009fb8935153713e9025d4770af8"},{"file":"sfx\/marig_turret_spawn_01.ogg","sha":"8f0e4df94c4aeaa700e6893dae4314572e018098"},{"file":"sfx\/max_atk_01.ogg","sha":"51f92b576de80e39e098b257e5a1b58d59f767de"},{"file":"sfx\/max_atk_impact_01.ogg","sha":"610fa3fba656b18b317ca80cb686ecda5fa15203"},{"file":"sfx\/max_die_vo_01.ogg","sha":"b91949a273a2c9d7967385d15b788a175dbfaab9"},{"file":"sfx\/max_die_vo_02.ogg","sha":"ade356be7935c45f3d514c6981c3a3103385c7cb"},{"file":"sfx\/max_die_vo_03.ogg","sha":"30669f92313d5cc28267d5930e134998bbbc68cd"},{"file":"sfx\/max_die_vo_04.ogg","sha":"16c28fd72322bbaea7d11e520f3899d752f38fb8"},{"file":"sfx\/max_die_vo_05.ogg","sha":"b1de6243e346540548464f81f9c8eba5f94e0664"},{"file":"sfx\/max_dryfire_01.ogg","sha":"a2422a140de7178d16757a2512fffda2abe47b10"},{"file":"sfx\/max_hurt_vo_01.ogg","sha":"924e0a98b081b9b21f84af79b3a2511e113925b8"},{"file":"sfx\/max_hurt_vo_02.ogg","sha":"b6b223b9d7ff8bda4a25b77e6268ca557c9fc35b"},{"file":"sfx\/max_hurt_vo_03.ogg","sha":"da2226068151b22f1a6082d273161c006ea9bc41"},{"file":"sfx\/max_hurt_vo_04.ogg","sha":"e5e06cc22f361e0f2e72eab589fd217ae5f5b967"},{"file":"sfx\/max_kill_vo_01.ogg","sha":"8638a145177746c5e3ff5664fb6ef8fb8171ffcb"},{"file":"sfx\/max_kill_vo_02.ogg","sha":"4ab170da533c7e41da923b7f42635f2ff7ef3524"},{"file":"sfx\/max_kill_vo_03.ogg","sha":"d9a29fa673ee50286cb3b1d6235b316752ffe3a1"},{"file":"sfx\/max_kill_vo_04.ogg","sha":"ff8ca4503e1365f1545f941f070ac7eff731dcee"},{"file":"sfx\/max_kill_vo_05.ogg","sha":"f9014fe3997edc550044a56080fd6d32c47b22c5"},{"file":"sfx\/max_lead_vo_01.ogg","sha":"9613b3361fdd3fabee8616e9fbe47e438a2860fc"},{"file":"sfx\/max_lead_vo_02.ogg","sha":"3e419149928921c4d2ac632fcf7af54eaa17a0d0"},{"file":"sfx\/max_lead_vo_03.ogg","sha":"a1faee5a7b043a27ee9a66066c1c9e9ab6eec4cd"},{"file":"sfx\/max_lead_vo_04.ogg","sha":"3013e66317b88e47cd270ab78686798f0120e33d"},{"file":"sfx\/max_lead_vo_05.ogg","sha":"d668ad0f704baa425dda0d631845dc17dc4ca895"},{"file":"sfx\/max_reload_01.ogg","sha":"26613a2683027cb704b432c55fb52a5dea4ff639"},{"file":"sfx\/max_start_vo_01.ogg","sha":"478e39a6aec7948b759cdf86cce60bbd0a40cd4c"},{"file":"sfx\/max_start_vo_02.ogg","sha":"ca2715ad2a72d336fe28c7b7503a6a71cf6337c5"},{"file":"sfx\/max_start_vo_03.ogg","sha":"412ec330ad799e27f47b22c9ead4b32eb46bf73c"},{"file":"sfx\/max_start_vo_04.ogg","sha":"eed1f361cf503ad6d2f2832c2d1e0b11cef867f8"},{"file":"sfx\/max_start_vo_05.ogg","sha":"cc0218849b97f0d7a2c35ffc94135e7b6cdff796"},{"file":"sfx\/max_ulti_01.ogg","sha":"45132115be234b8dcf3c349dc0ceb8f249f1f572"},{"file":"sfx\/max_ulti_vo_01.ogg","sha":"e20dc069275c6cdf05d8f32627a346e809a5ecfd"},{"file":"sfx\/max_ulti_vo_02.ogg","sha":"627886f70121c8d8ffd52b3fcffcd3f62c060a5e"},{"file":"sfx\/max_ulti_vo_03.ogg","sha":"7f2edc5f09aefe16444dae6bacb9167600fc5b9f"},{"file":"sfx\/max_ulti_vo_04.ogg","sha":"dbdc1b156cc3877f3a515bd877a96eff8885ba67"},{"file":"sfx\/mech_bo_fire_01.ogg","sha":"50259bc0a22a6b9402f1f94e58ea154934e9a0f7"},{"file":"sfx\/mech_bo_reload_01.ogg","sha":"22ef4034cde7d649598e1906b0a5f7fa54f318df"},{"file":"sfx\/mech_bo_ulti_01.ogg","sha":"9b63ce8d4ded44eee156767d43eae5a997e12cf2"},{"file":"sfx\/mech_crow_atk_01.ogg","sha":"889777639cda90d9dce18e647a865e319463fee4"},{"file":"sfx\/mech_crow_dies_01.ogg","sha":"8debbe5903b3fe5dcb917bf01d9abcfd2e48f51a"},{"file":"sfx\/mech_crow_get_hit_01.ogg","sha":"8af6222bad99d6f30da689bd5c261036bab9b6c1"},{"file":"sfx\/mech_crow_get_hit_02.ogg","sha":"925f094b85144d1303643cadc6677637971f1976"},{"file":"sfx\/mech_crow_get_hit_03.ogg","sha":"f0e8249c8c184fa30c16dca3bac1a04856f0bdf9"},{"file":"sfx\/mech_crow_get_hit_04.ogg","sha":"b9b5873a2660bc1e8c615a26259e67dd3035322a"},{"file":"sfx\/mech_crow_get_hit_05.ogg","sha":"afbbde3178d95703b950fc143f3e3e2c3e4aaef4"},{"file":"sfx\/mech_crow_get_hit_06.ogg","sha":"aa34899a602efea86b3b96c06bdc8e1ad2619fbe"},{"file":"sfx\/mech_crow_kills_01.ogg","sha":"c208ba8d7365db58f09dfd72c5b62fffaa814b6e"},{"file":"sfx\/mech_crow_kills_02.ogg","sha":"8f0b24e8b30f9c89957ee645ebaaae0477346039"},{"file":"sfx\/mech_crow_kills_03.ogg","sha":"ce5ca4e04bf2a32052e16360cdb4384a86e8dd84"},{"file":"sfx\/mech_crow_lead_01.ogg","sha":"e27514b30c160203b7b984e43f781b0f92a67546"},{"file":"sfx\/mech_crow_lead_02.ogg","sha":"107116631c677bdc90b0d912a49ebcc646ab63c0"},{"file":"sfx\/mech_crow_start_01.ogg","sha":"d9eb5f155cd2b486ab7e65908d79fbe356c77370"},{"file":"sfx\/mech_crow_start_02.ogg","sha":"d00d2518fd4ca516b8105286a110066042868f7e"},{"file":"sfx\/mech_crow_start_03.ogg","sha":"3082ae1c9f09d4c5431bcf390743a3fa08e72f4c"},{"file":"sfx\/mech_crow_ulti_01.ogg","sha":"3c3281eb5362ed85b73931bf73be342497188d9a"},{"file":"sfx\/mech_crow_ulti_vo_01.ogg","sha":"9a1809b59cf8896f9d1047bd285d1ea86647bc44"},{"file":"sfx\/mech_mike_atk_01.ogg","sha":"b888090c804d1f973df067b22e23a8062fea3f82"},{"file":"sfx\/mech_mike_die_vo_01.ogg","sha":"c166a0bb4f947456a0c77d6307301b17fde9fc2b"},{"file":"sfx\/mech_mike_die_vo_02.ogg","sha":"9e77b257bf7e5c648fa66d16d0780eacb63e5d09"},{"file":"sfx\/mech_mike_die_vo_03.ogg","sha":"6c415d6793e551b33132763d1d4f9bd1875c6c90"},{"file":"sfx\/mech_mike_die_vo_04.ogg","sha":"f8bbd5ccb57ca078f4f26aaf7a1b608286aa16f1"},{"file":"sfx\/mech_mike_die_vo_05.ogg","sha":"5e32bd3992820ea62f6f1cc1dc01432ab28f7b1d"},{"file":"sfx\/mech_mike_hurt_vo_01.ogg","sha":"9573b5cd62f523c1861308c69fbf80eb2978f5bf"},{"file":"sfx\/mech_mike_hurt_vo_02.ogg","sha":"7b1607090385d67c41d1eb03225357f616df92cf"},{"file":"sfx\/mech_mike_hurt_vo_03.ogg","sha":"ed9c643876705ec47edf4ee4af108ec4ef46f2f2"},{"file":"sfx\/mech_mike_hurt_vo_04.ogg","sha":"6485e15de085f0d62f9b59386bac07f224225859"},{"file":"sfx\/mech_mike_hurt_vo_05.ogg","sha":"47e07ac1265ec5e4ca0acd358f9662bd6eff192b"},{"file":"sfx\/mech_mike_kill_vo_01.ogg","sha":"4efed04783d09a8aed49621765e9b8781046f329"},{"file":"sfx\/mech_mike_kill_vo_02.ogg","sha":"894c247bbe6b3b49e9b06f5c5c398cdf2402ce05"},{"file":"sfx\/mech_mike_kill_vo_03.ogg","sha":"090b054272150424735b98f0322b1a96873db45d"},{"file":"sfx\/mech_mike_kill_vo_04.ogg","sha":"fe3b8c7046c16488784e4aa1abcb5277137a5335"},{"file":"sfx\/mech_mike_lead_vo_01.ogg","sha":"230a1a8a372179160e754c17d92125bb8894f8ae"},{"file":"sfx\/mech_mike_lead_vo_02.ogg","sha":"d77978f05e85c31d0787029568a82899fdb39dad"},{"file":"sfx\/mech_mike_start_vo_01.ogg","sha":"ad06a0f0d797dcd1eca10c273b2fdd369cdac2a6"},{"file":"sfx\/mech_mike_start_vo_02.ogg","sha":"78b7b73f6c36a84bca0d04d729337a32607ac886"},{"file":"sfx\/mech_mike_start_vo_03.ogg","sha":"b1540a71feb5a9ab06bc35e95ff67ea1b8f24ef6"},{"file":"sfx\/mech_mike_start_vo_04.ogg","sha":"3da0a625b594b53dad1db56752141971d76ed020"},{"file":"sfx\/mech_mike_ulti_01.ogg","sha":"7c6fb1ba7e342ae79577ad9483f3b00b3bb3a1db"},{"file":"sfx\/mech_mike_ulti_vo_01.ogg","sha":"34d06780fa3d8551bee9d439a964b2f5577d43e3"},{"file":"sfx\/mech_mike_ulti_vo_02.ogg","sha":"02ea1c1ae23305840568aa52dc31d51841e63c59"},{"file":"sfx\/mech_spike_atk_01.ogg","sha":"70b14e32d0ca32f6785d6c79206decbb3d31c129"},{"file":"sfx\/mech_spike_ulti_01.ogg","sha":"369d6dd90b963ea2e4030b10037a29618dbe1b47"},{"file":"sfx\/menu_click_08.ogg","sha":"ac9d8a6108f95aabad7c0c7e924aaea4022caba1"},{"file":"sfx\/menu_dismiss_01.ogg","sha":"536414a202f14099a3c19770c8ff0e31d71250a9"},{"file":"sfx\/menu_go_back_01.ogg","sha":"996dc6037f4d2b1251fc585170de80f6f478d00f"},{"file":"sfx\/meteor_01.ogg","sha":"de0a00312aa03f726ebe63941f330ca7d33a7381"},{"file":"sfx\/meteor_02.ogg","sha":"213cfe7be91b9f095940e9a60ade32dacc399de0"},{"file":"sfx\/meteor_03.ogg","sha":"7ee53c85348fadbbd11e7da184db6d2d041d6795"},{"file":"sfx\/minig_dryfire_01.ogg","sha":"6d6d56d7df50a599e331275357ba6160417e1cc2"},{"file":"sfx\/minig_fire_01.ogg","sha":"94ddfaa44eb2cdbb8f94b2440786eeb4b542b0c6"},{"file":"sfx\/minig_reload_01.ogg","sha":"5ce09a6c71f113423b33345ef13fdddb1cbaab2c"},{"file":"sfx\/minig_ulti_01.ogg","sha":"ec856f063d86fc5935e7588dca329a9ac5ff603e"},{"file":"sfx\/mortis_atk_01.ogg","sha":"aef5480536f04b1e9544a6f3a304d4e579f64597"},{"file":"sfx\/mortis_atk_vo_01.ogg","sha":"8ed71415ea3cd9d2f986e5bea5d3df1b53de660a"},{"file":"sfx\/mortis_atk_vo_02.ogg","sha":"749fab07c2f5be73f8958e4abed909a773f6cb42"},{"file":"sfx\/mortis_atk_vo_03.ogg","sha":"76f41aeb4a87878271b7f7f7316586162760f833"},{"file":"sfx\/mortis_atk_vo_04.ogg","sha":"4a69bd1440f14bbc3ba2f30c05dcbb514067a1a6"},{"file":"sfx\/mortis_die_01.ogg","sha":"6fea2c82c13c5d06cb89dd539b37ffc6d766ab71"},{"file":"sfx\/mortis_die_02.ogg","sha":"a6613477820be8dd367f8007b399b927499bddf4"},{"file":"sfx\/mortis_die_03.ogg","sha":"e1f63a1ce7b07a7afcbe1a98cf6cc10a2b75e023"},{"file":"sfx\/mortis_die_04.ogg","sha":"62beb7ebe71a9009522b53025d2560789d593f4b"},{"file":"sfx\/mortis_die_05.ogg","sha":"9307971a00c795440647cd786ef658237bbec76e"},{"file":"sfx\/mortis_gadget_01.ogg","sha":"6942dd6796293d248852c0876705cd2f39ec25f7"},{"file":"sfx\/mortis_hurt_01.ogg","sha":"73a9cb0cac94144e462236d8a03520d408e0431e"},{"file":"sfx\/mortis_hurt_02.ogg","sha":"b0d1941afcec4979a40062310a9a358a6df51738"},{"file":"sfx\/mortis_hurt_03.ogg","sha":"3ecc7729b55fffcfb1d3578d8a7b40ebbd2e20ba"},{"file":"sfx\/mortis_hurt_04.ogg","sha":"6a869373fc11fdc066c3cfd6ad4f3ff81de52407"},{"file":"sfx\/mortis_kill_01.ogg","sha":"c177436e5027e35e2be9daf252bf93f438ee99f8"},{"file":"sfx\/mortis_kill_02.ogg","sha":"7537751efa97132bec29f05bac61126952e94e8a"},{"file":"sfx\/mortis_kill_03.ogg","sha":"039e2a9d402265e110bc084b979e7a8fa64ea1c7"},{"file":"sfx\/mortis_kill_04.ogg","sha":"163e98b1412cb8cf81ff49a1614dee353b45ab4d"},{"file":"sfx\/mortis_lead_01.ogg","sha":"3ff7759aae9b62cf07f1457f429f7a9f19a26130"},{"file":"sfx\/mortis_lead_02.ogg","sha":"0969c9477f685210b3e1799df5533e6a1fa1c771"},{"file":"sfx\/mortis_lead_03.ogg","sha":"3a057d1822a3cc1a466cff13e009086f37246d39"},{"file":"sfx\/mortis_lead_04.ogg","sha":"ea564002cabf115f176e685cbd969aee2291cef1"},{"file":"sfx\/mortis_lead_05.ogg","sha":"b4970b47e2047c587a2463b41f1fa00740a833f9"},{"file":"sfx\/mortis_reload_02.ogg","sha":"825a64b80e3c74c6db6a430aacf9bc818786df77"},{"file":"sfx\/mortis_start_01.ogg","sha":"16c5438b309794ee9a48b0a0653cdab7703f6dc6"},{"file":"sfx\/mortis_start_02.ogg","sha":"218abc046b7a4de49b4b921055bfc32c70a5b792"},{"file":"sfx\/mortis_start_03.ogg","sha":"d75ee3b03086d4eeb0e9454ff00852a76fe051d0"},{"file":"sfx\/mortis_start_04.ogg","sha":"3c5a51510049cb5fe0993ff39f81ac1679cea620"},{"file":"sfx\/mortis_ulti_01.ogg","sha":"56183cc745b211152939f0ddedd8d4d588a03866"},{"file":"sfx\/mortis_ulti_vo_01.ogg","sha":"bdda18e925b542978ce057c76500adfdf485c02d"},{"file":"sfx\/mortis_ulti_vo_02.ogg","sha":"9938494fc376beb9df850b8170f649d12016b612"},{"file":"sfx\/mortis_ulti_vo_03.ogg","sha":"4a01dd34ca92367ae0872b599aab4052466330fb"},{"file":"sfx\/mortis_ulti_vo_04.ogg","sha":"b4484137b0d9c46cb18847ca21f8885c41b4fe09"},{"file":"sfx\/mortis_ulti_vo_05.ogg","sha":"520f48597136994197304d35300a1a258965db5c"},{"file":"sfx\/mrp_atk_01.ogg","sha":"5a49e8948fc46528b32c5b0eb1aef0fc278b7602"},{"file":"sfx\/mrp_atk_vo_01.ogg","sha":"753370fc8043abe9989cc27d2804d13a21c054e2"},{"file":"sfx\/mrp_atk_vo_02.ogg","sha":"a9eb8258ba4809cd783921d3e8d85c21777b7f52"},{"file":"sfx\/mrp_atk_vo_03.ogg","sha":"280fc0820936458734df68561b0bfa53eef1d65e"},{"file":"sfx\/mrp_atk_vo_04.ogg","sha":"2ea8b75fc785492e8c7c427cf02938fc582730ae"},{"file":"sfx\/mrp_die_vo_01.ogg","sha":"1ea4341a974c7b7725487779ce6a1227670bd311"},{"file":"sfx\/mrp_die_vo_02.ogg","sha":"87cc94000380ae1c8da82d171db81f174c34ced7"},{"file":"sfx\/mrp_die_vo_03.ogg","sha":"21cca72a0a277f4894a55b55cfd12d740c4b4e33"},{"file":"sfx\/mrp_dryfire_01.ogg","sha":"b728ecd22b805e17cbb6348430c9a4374f4c70f9"},{"file":"sfx\/mrp_get_hurt_vo_01.ogg","sha":"99d55db31f320b7e2bf290f20d83f4e4ee0f5da4"},{"file":"sfx\/mrp_get_hurt_vo_02.ogg","sha":"c2d5674dee18f17c0c946ef52db02a34f3c09ff6"},{"file":"sfx\/mrp_get_hurt_vo_03.ogg","sha":"2272d408828ce67e139efeed8d310726e810f8e8"},{"file":"sfx\/mrp_get_hurt_vo_04.ogg","sha":"8ed301c062cc748c07a53b1f0cea8e2dbb6812dd"},{"file":"sfx\/mrp_kill_vo_01.ogg","sha":"4b120a4719827b5450feca089d3efcf06345a2c5"},{"file":"sfx\/mrp_kill_vo_02.ogg","sha":"c297ebd1f0e137bc62cbb8d561720bbd0d9e0665"},{"file":"sfx\/mrp_kill_vo_03.ogg","sha":"386fedd90de1a743b4c94e3a92897b91bcb1b7cb"},{"file":"sfx\/mrp_kill_vo_04.ogg","sha":"558637c320f73c4f56407341ec7f68f6f623ac5a"},{"file":"sfx\/mrp_kill_vo_05.ogg","sha":"0e01466d6fc18c6a05e714192eaa8a62abcafc66"},{"file":"sfx\/mrp_lead_vo_01.ogg","sha":"02fad02c934629329af63812a0484837a2d24f9b"},{"file":"sfx\/mrp_lead_vo_02.ogg","sha":"a596336f13486c13ad908f9af586b3a3d3bf5afa"},{"file":"sfx\/mrp_lead_vo_03.ogg","sha":"7dee5b5cee19452054635f344095b77cd9db80c8"},{"file":"sfx\/mrp_minip_atk_01.ogg","sha":"cf193112955d719c23c431f0b56fab30c4f9745e"},{"file":"sfx\/mrp_minip_atk_02.ogg","sha":"ca295a059713969851c7c191879d3a8279341b90"},{"file":"sfx\/mrp_minip_bell_01.ogg","sha":"5f4681481ea234db6d7a99a39958a141be6bb9a0"},{"file":"sfx\/mrp_minip_die_01.ogg","sha":"6904d6e0836231e8f0d8f79bc36c598fd84d0177"},{"file":"sfx\/mrp_minip_die_02.ogg","sha":"bb851a2b187f4c323c35f37a489773e3808bd3a8"},{"file":"sfx\/mrp_minip_die_03.ogg","sha":"f814619d519b443134e9df52f5ee3816a262f01d"},{"file":"sfx\/mrp_minip_spawn_01.ogg","sha":"5753907c73f7b49dce3e914e0e0315400ca7509d"},{"file":"sfx\/mrp_minip_spawn_02.ogg","sha":"d29be0fe7d017f051b42804698819483d62350eb"},{"file":"sfx\/mrp_minip_spawn_03.ogg","sha":"a2e62d0349cef0b2efb3c35d9ec11965ab9c9ed7"},{"file":"sfx\/mrp_reload_01.ogg","sha":"19dab272723784de360536f262154a14304dfed4"},{"file":"sfx\/mrp_start_vo_01.ogg","sha":"5ec0a87114507cbde231920004c59f4bbcd04b33"},{"file":"sfx\/mrp_start_vo_02.ogg","sha":"9b635737ee7ebc9c5f1b9d19ae1880eda742d312"},{"file":"sfx\/mrp_start_vo_03.ogg","sha":"8b344dea057bfdf7d77a6f528b06b37842fcd980"},{"file":"sfx\/mrp_start_vo_04.ogg","sha":"bbcfce67d0610c193413c17584a9cfbbb7f9bea6"},{"file":"sfx\/mrp_start_vo_05.ogg","sha":"bbc6722d622dd73ee5789b3874a8e7dd53fbb021"},{"file":"sfx\/mrp_ulti_vo_01.ogg","sha":"14eb5786a2e45a0dd44c51b55f50e125e2ac09cd"},{"file":"sfx\/mrp_ulti_vo_02.ogg","sha":"2b85acfd14a9aee3655d8590729c4a09f57132e8"},{"file":"sfx\/mrp_ulti_vo_03.ogg","sha":"9e5f591d94234c73a2996eeea53a73d038710157"},{"file":"sfx\/mrp_ulti_vo_04.ogg","sha":"3d21fba62b333fa27704fe6eb95923a440d9b4c3"},{"file":"sfx\/mvp_jingle_01.ogg","sha":"c1983e5042cce7ea7650b4c1f539405bc223d850"},{"file":"sfx\/mystic_atk_01.ogg","sha":"c91d06312e5439587337057ef31f2b1860653725"},{"file":"sfx\/mystic_dryfire_01.ogg","sha":"d010300e4db99acd4ced218fea63988a66eee5da"},{"file":"sfx\/mystic_hole_01.ogg","sha":"a12d5c634d50ef6e8e7eabf98b9448e9041f4fd7"},{"file":"sfx\/mystic_reload_01.ogg","sha":"467f2379667501963fdb36b4a94c9a27cfa3e115"},{"file":"sfx\/mystic_ulti_deploy_01.ogg","sha":"138dad1aebe3955deaa73ee0e1a0ed1d59e4e7b3"},{"file":"sfx\/ninja_invis_01.ogg","sha":"b7576c11af9ef4ac34e2872ad5df00d299b8b84e"},{"file":"sfx\/ninja_invis_end_01.ogg","sha":"7ca535baafb7b9edcb806fba37f7b15556c021ce"},{"file":"sfx\/ninja_star_01.ogg","sha":"9774a4421766b2fd2e8a148a1481c836e1ec6cbb"},{"file":"sfx\/ninja_star_dry_01.ogg","sha":"c24ed981f2162058cb7dfb6cd9e20d884930abe1"},{"file":"sfx\/nita_atk_01.ogg","sha":"d4fde066779177e22b67accc86c5453636b1b8f9"},{"file":"sfx\/nita_atk_02.ogg","sha":"436ff334189499f71ad98ef4cb7339ec5c790e7f"},{"file":"sfx\/nita_atk_03.ogg","sha":"9bbbbea41f6fb02d577d571edfe3698a0c42d299"},{"file":"sfx\/nita_atk_04.ogg","sha":"0d576fb97f1af31cb63eb2d8cb5aea8390963a2e"},{"file":"sfx\/nita_atk_05.ogg","sha":"8b3c3c15054573d864632e79707368cf28ee1103"},{"file":"sfx\/nita_die_01.ogg","sha":"57b5d1b5d60183c84938d29c39545783537472ea"},{"file":"sfx\/nita_die_02.ogg","sha":"149ca06123db642b1862b380732cd5111846a031"},{"file":"sfx\/nita_gadget_01.ogg","sha":"71a344e16fe4c7d35b9e4930b82c16f9e350af6a"},{"file":"sfx\/nita_hurt_01.ogg","sha":"af884b1ca64b386d79ceec1ef24c901d426d2e28"},{"file":"sfx\/nita_hurt_02.ogg","sha":"1d922a529a8118ecb9af0763159209332098bfbe"},{"file":"sfx\/nita_hurt_03.ogg","sha":"f9962e1949ec8e1f1c1e627f31328f9e695a33a2"},{"file":"sfx\/nita_hurt_04.ogg","sha":"6d415b8dc727b8ed49515fa47ea6b71b16dcd39d"},{"file":"sfx\/nita_hurt_05.ogg","sha":"908972b93021986c4ef3d5a8771cb75b7d74b190"},{"file":"sfx\/nita_kill_vo_01.ogg","sha":"2dbc38b1a52d96425847853ce4491f8c5a38b9f2"},{"file":"sfx\/nita_kill_vo_02.ogg","sha":"9fdebd6a760c78dd9e813f411c28fc1f3ad99f7e"},{"file":"sfx\/nita_kill_vo_03.ogg","sha":"e41085bc11fe91458fb72bf0b29d08ed44bca524"},{"file":"sfx\/nita_lead_01.ogg","sha":"e94d5e7ed54bf9833dde6d402bf4725a0f7286e9"},{"file":"sfx\/nita_lead_02.ogg","sha":"f4a7a880ad238ab6af5428c008c330f45a48af1b"},{"file":"sfx\/nita_lead_03.ogg","sha":"689a92cb784579c5f8f5176a11b1ba9a2bafd2cd"},{"file":"sfx\/nita_start_vo_01.ogg","sha":"3d6bfc6058edbbf20db3a7043bc470e33fe78de0"},{"file":"sfx\/nita_start_vo_02.ogg","sha":"064ac733376b57dcbf42cbca3501592138c32594"},{"file":"sfx\/nita_start_vo_03.ogg","sha":"1b33d6e53734921a7aeb0cfec5701ed15c3be918"},{"file":"sfx\/nita_ulti_01.ogg","sha":"45c308387d0bd245520b13a2f17de18ad475bc93"},{"file":"sfx\/nita_ulti_vo_01.ogg","sha":"078857280aa02bc974fdadde0d4d0cfe600ec156"},{"file":"sfx\/nita_ulti_vo_02.ogg","sha":"ca2f00f7c2ba42569efcaba540433dc2d2163fa9"},{"file":"sfx\/nita_ulti_vo_03.ogg","sha":"30cb6ce2f2093f9b60810d8d6ae2486b8b6068e6"},{"file":"sfx\/orb_glow_03.ogg","sha":"a6f09618ce7e6e15db6ead97a509c276c9737ab7"},{"file":"sfx\/overtime_02.ogg","sha":"8b763d1fc20a4a2c30e7c6377ecf71836d3ef980"},{"file":"sfx\/pam_die_vo_01.ogg","sha":"f1b6c9cb0eefb05c180d3120d2c072482d82e0ef"},{"file":"sfx\/pam_die_vo_02.ogg","sha":"d23a26aff6a0110502cd976c4564cf442f3f9331"},{"file":"sfx\/pam_die_vo_03.ogg","sha":"c32728d3621b37311e51f21a2fb50f12e298c338"},{"file":"sfx\/pam_die_vo_04.ogg","sha":"204546ecbfa822a695ee98ca5c79dd94e430e896"},{"file":"sfx\/pam_hurt_vo_01.ogg","sha":"9f2963d447fd31d5d80313861652a538eb2b0313"},{"file":"sfx\/pam_hurt_vo_02.ogg","sha":"d253d3663bf7b941185b47a53c1b64e19b4f6b67"},{"file":"sfx\/pam_hurt_vo_03.ogg","sha":"919336bfa6cdee8875eda486b64eb405b4a1ff44"},{"file":"sfx\/pam_hurt_vo_04.ogg","sha":"c4377206275a561b5a19dd0c1e9de5e60fb6c679"},{"file":"sfx\/pam_hurt_vo_05.ogg","sha":"9f90505807848ddb4afb43097b9dd9db33facaee"},{"file":"sfx\/pam_kill_vo_01.ogg","sha":"00fbe1853cde4faffb18a5576d732ff9c47c8020"},{"file":"sfx\/pam_kill_vo_02.ogg","sha":"d8ff75cba3d4b8180cf7ec77cfd6e2ecb474f7c0"},{"file":"sfx\/pam_kill_vo_03.ogg","sha":"1edbbcbb77f17706c1fd5e4ebfae0ab1a0f1288c"},{"file":"sfx\/pam_kill_vo_04.ogg","sha":"3eb4af7c6a3df87d5d675dc6e6fb09402db76117"},{"file":"sfx\/pam_lead_vo_01.ogg","sha":"408235fba2e637a0927697794ae368e4e18ca564"},{"file":"sfx\/pam_lead_vo_02.ogg","sha":"6d5ff8bffd9eb8d8dafe77b256104b1093b264de"},{"file":"sfx\/pam_lead_vo_03.ogg","sha":"c3ad5694878db839f0854c1285ab9c85b7034ca4"},{"file":"sfx\/pam_lead_vo_04.ogg","sha":"83ca51665a98930be74ee32476d616efc1f1b025"},{"file":"sfx\/pam_start_vo_01.ogg","sha":"97734b9cac1e11714ca20d969c7bbf6ca5d4ba86"},{"file":"sfx\/pam_start_vo_02.ogg","sha":"72d3209dc8cd36645db60f25742f369b325febac"},{"file":"sfx\/pam_start_vo_03.ogg","sha":"fd5e2aa441c8d78978e68d68403900cd6ddc78d3"},{"file":"sfx\/pam_start_vo_04.ogg","sha":"4fcffd798e69d1c5b67bb310dc259559f0f1aca0"},{"file":"sfx\/pam_ulti_vo_01.ogg","sha":"ce541f4d3bfdfbd54eddc754855427e7244269e5"},{"file":"sfx\/pam_ulti_vo_02.ogg","sha":"7bb0116b411ea50d8544189768ffdfa8acdee4c7"},{"file":"sfx\/pam_ulti_vo_03.ogg","sha":"53000a7b3b88603e835d2533266df7d826dc6a4f"},{"file":"sfx\/pam_ulti_vo_04.ogg","sha":"ebef58b5615e52ebfb660b2570c23cbffe646ab2"},{"file":"sfx\/penny_die_vo_01.ogg","sha":"13487367380a832ba83b189a28754fff801e7a29"},{"file":"sfx\/penny_die_vo_02.ogg","sha":"67c8b38bea8caf4945e7189a5909e757b2ddceb5"},{"file":"sfx\/penny_die_vo_03.ogg","sha":"7cec2c92eff4794581ab17cc3c2dcfb5074fd06c"},{"file":"sfx\/penny_hurt_vo_01.ogg","sha":"0a9c30846a8810b3f4cad915532a08f48184fd83"},{"file":"sfx\/penny_hurt_vo_02.ogg","sha":"dbe589b19c75b781650bcba98798b5b65ccb9832"},{"file":"sfx\/penny_hurt_vo_03.ogg","sha":"94bc7b1399d173dcd76b1b6ba215ad1560e5adcd"},{"file":"sfx\/penny_kill_vo_01.ogg","sha":"8af72fc659dd88807abe730e4b1003fdd480bc2d"},{"file":"sfx\/penny_kill_vo_02.ogg","sha":"28ed78b29163e62cf1cc555b5b37553be079a9ec"},{"file":"sfx\/penny_kill_vo_03.ogg","sha":"7b16b1034a5a6144c66a542b5e47f183ad62be46"},{"file":"sfx\/penny_kill_vo_04.ogg","sha":"ec98454dc062f23302cb8581f4cbfae0d1b6a48c"},{"file":"sfx\/penny_kill_vo_05.ogg","sha":"ecd81cae910bac2195c9715ee443e1b48980323c"},{"file":"sfx\/penny_lead_vo_01.ogg","sha":"ee8da27d2a4b5ec3f4fc01c3d056bf77f989b497"},{"file":"sfx\/penny_lead_vo_02.ogg","sha":"ca6ba43a1bd5f46b5be15747fa5d17a01b213543"},{"file":"sfx\/penny_lead_vo_03.ogg","sha":"1de6b0402eef39ecba150e379f727c785d82959f"},{"file":"sfx\/penny_start_vo_01.ogg","sha":"1d14237be2f65f2b5a2f8efe488039037fcfdfa2"},{"file":"sfx\/penny_start_vo_02.ogg","sha":"f6dc8179764769c9a1261a14324fd9186b728590"},{"file":"sfx\/penny_start_vo_03.ogg","sha":"ae3954d5fe89c9848f75a52df8916090eb836339"},{"file":"sfx\/penny_ulti_vo_01.ogg","sha":"6dbacdbc104a59d6aeee3143dc11c49543dbca48"},{"file":"sfx\/penny_ulti_vo_02.ogg","sha":"bdd69655fea9eb5fffcdce3397c4c657005bbe2c"},{"file":"sfx\/penny_ulti_vo_03.ogg","sha":"12544317d698053c4d753aa612666eb06baee39e"},{"file":"sfx\/pickup_spawn_03.ogg","sha":"233af5c2c78210d0ac82c2baf671529c3a955ed1"},{"file":"sfx\/piper_die_01.ogg","sha":"5284a646fde698cf9f87130fba64f161bf57263e"},{"file":"sfx\/piper_die_02.ogg","sha":"3fcbe58499a234c9969927ff0b74c0543608230f"},{"file":"sfx\/piper_die_03.ogg","sha":"b480a1e1a97c01b6fd5b2fdd6b52d85964d314fd"},{"file":"sfx\/piper_gadget_01.ogg","sha":"1e9d2cb140811e1ec8f5d189a51c03171ff4f678"},{"file":"sfx\/piper_hurt_01.ogg","sha":"ac3c1bdcbc2285efdaea358dacdc4242806f78c0"},{"file":"sfx\/piper_hurt_02.ogg","sha":"18327dd1e5e3f051eabcb3e2fec021d4c5d8ff77"},{"file":"sfx\/piper_hurt_03.ogg","sha":"2b29fd5dcdd92ea08ac1a18c0e069334d54e48fd"},{"file":"sfx\/piper_hurt_04.ogg","sha":"ee6b8fbe11ba38e1b4048bec1fabcf2bd519f3f5"},{"file":"sfx\/piper_hurt_05.ogg","sha":"5a43f0f4b99ac10afffc1cd00466104ea079843d"},{"file":"sfx\/piper_hurt_06.ogg","sha":"59ec9817dbe5f4072bd768186bc7a632ced3fc1b"},{"file":"sfx\/piper_kill_01.ogg","sha":"be782e89e90d5a7a7b7f59f0a2147bdd9a6ffddd"},{"file":"sfx\/piper_kill_02.ogg","sha":"8e61e5d3758a6ee5b76dae3ac3737075b9940518"},{"file":"sfx\/piper_kill_03.ogg","sha":"b58b2a07a9308a0c27b179ad91a7dc688b888e6b"},{"file":"sfx\/piper_kill_04.ogg","sha":"dff8d9ebf3d37811782a131786ff563b7dfdb58f"},{"file":"sfx\/piper_lead_01.ogg","sha":"c05a1ba5b5cd44ed6f62ddeee31248c9b3062d1d"},{"file":"sfx\/piper_lead_02.ogg","sha":"f4b5394f25e638c3f7c7ac5dd18b1c3c5d9167b1"},{"file":"sfx\/piper_lead_03.ogg","sha":"23f36bf4b53e397de82ffe20498fbb51251ea2b5"},{"file":"sfx\/piper_mine_drop_02.ogg","sha":"cc35b4f35bf452d0def312500007c668ce314628"},{"file":"sfx\/piper_start_01.ogg","sha":"6c0cc8cf062e195c43ed870c01a29765167e07de"},{"file":"sfx\/piper_start_02.ogg","sha":"679df62e42658c2e1785fd8a5e4152ca4a376084"},{"file":"sfx\/piper_start_03.ogg","sha":"4bf11a7fc64707f26869909725565bd181392983"},{"file":"sfx\/piper_start_04.ogg","sha":"b1e595958ce740860cf64caa13460beafb0233cb"},{"file":"sfx\/piper_ulti_01.ogg","sha":"6dc1d7e984e2935be38d1322584315e464284be1"},{"file":"sfx\/piper_ulti_02.ogg","sha":"6d81ba8eec4b32f7c04a1e3ce63863ef4c07532c"},{"file":"sfx\/pistol_fire_01.ogg","sha":"c07db786f9e52e4a44763156bda352356499695a"},{"file":"sfx\/pistol_fire_ulti_01.ogg","sha":"508d393a61100d29ac052d30f6c0efbd9b5a3e34"},{"file":"sfx\/planet_whoosh_03.ogg","sha":"e9554ae99c58000d0667470f4b085f7ba0fc3ebb"},{"file":"sfx\/player_gadget_button_01.ogg","sha":"e59427f3c63fe9c4cba353cc5805d26337db5d89"},{"file":"sfx\/poco_die_01.ogg","sha":"53ddfa51dbf287efc1cd16a39a5ccaba90e6be4e"},{"file":"sfx\/poco_die_02.ogg","sha":"a715eb126c9f84bf2f4d91b333f55231a8f6d0e8"},{"file":"sfx\/poco_die_03.ogg","sha":"19a4a1fcc1929e3c48acb05981916dbc27dd9679"},{"file":"sfx\/poco_gadget_01.ogg","sha":"0db15f5892626257a5606063e89513a6d47518d4"},{"file":"sfx\/poco_hurt_01.ogg","sha":"20685455546254f820d8fac8261dba873e5bdd55"},{"file":"sfx\/poco_hurt_02.ogg","sha":"fcfa50827daf493a557ac530a58faf94847be17b"},{"file":"sfx\/poco_hurt_03.ogg","sha":"d9516d18dfbe33a381ff11210682ecb478d4965d"},{"file":"sfx\/poco_hurt_04.ogg","sha":"98971883794f38b51cb79e359e1e2f382846a09f"},{"file":"sfx\/poco_kill_01.ogg","sha":"57eccfd8d7c21926e71e7b0f78f83d9b2699e4ef"},{"file":"sfx\/poco_kill_02.ogg","sha":"1e8ec29f58a0d8066d636076f58fe658fc644dd9"},{"file":"sfx\/poco_kill_03.ogg","sha":"ffb590c14fd87d05b1bcf4580dc831499f61fe42"},{"file":"sfx\/poco_lead_01.ogg","sha":"3f3b339963b5777f71dc29ad29c0f2af5ec636fe"},{"file":"sfx\/poco_lead_02.ogg","sha":"cb24f12650119a187818981aa69f0baeff70353c"},{"file":"sfx\/poco_lead_03.ogg","sha":"69e067c9d8069a14a91383e6a2af7d44d0e841f2"},{"file":"sfx\/poco_new_atk_01.ogg","sha":"9091c2e3582f3d5260d53fcfadf1ca49f9674e93"},{"file":"sfx\/poco_new_reload_02.ogg","sha":"014a94fb496c814e4eb826de07474ae8cacfe868"},{"file":"sfx\/poco_start_01.ogg","sha":"3490f59fb9ddb5b61a30015bdf0d9df74bbd714f"},{"file":"sfx\/poco_start_02.ogg","sha":"725ac07ab023343a5a6a055df0ab6e8500a4f80d"},{"file":"sfx\/poco_start_03.ogg","sha":"7a45beb2a434c86f58f39d1852edd111369da31d"},{"file":"sfx\/poco_start_04.ogg","sha":"80c91f3027ae7b95c68e0d891be2567a43ca0040"},{"file":"sfx\/poco_ulti_01.ogg","sha":"5b03489d9f68c4b5fc0e8a9be70ae1883fdbb779"},{"file":"sfx\/poco_ulti_02.ogg","sha":"e235fd581b11a4dcb9ed87993860a35927abbc52"},{"file":"sfx\/poco_ulti_03.ogg","sha":"7f91dcc30c123cef00e17e7c7ed684226c709f9c"},{"file":"sfx\/poco_ulti_04.ogg","sha":"4bb128de2e598d45979bff7096a4aab4e5a79ef2"},{"file":"sfx\/poco_ulti_sfx.ogg","sha":"67aecbbd0e2582dac1a465debbb6f4beac64398f"},{"file":"sfx\/post_match_draw_cheer_02.ogg","sha":"0a7686f5b30eb10386119bc727de040c7b5cbe5a"},{"file":"sfx\/post_match_lose_cheer_01.ogg","sha":"615f23585e855b1540a01b4fa893dfaa94006434"},{"file":"sfx\/post_match_win_cheer_01.ogg","sha":"f34e4058907592ca9ce7e4c526178c60db125690"},{"file":"sfx\/power_up_spawn_01.ogg","sha":"4898a25f8611120f71f1184caad313cce7ef2600"},{"file":"sfx\/princess_land_01.ogg","sha":"9389363c7c2a95985338cdef962b996eb5c25e62"},{"file":"sfx\/princess_shoot_01.ogg","sha":"aee8f54088de59187fabaeca107eee631dd9cb7f"},{"file":"sfx\/punch_impact_01.ogg","sha":"d3115f435e9e40f9ac734550eae6bcdd63cdf8fc"},{"file":"sfx\/punch_impact_02.ogg","sha":"5e961e24bf6ebf9491fcf9452433e61efc832b68"},{"file":"sfx\/rank_up_01.ogg","sha":"679908e9e7ac96bf6e207abdefa4d40b8179ab1a"},{"file":"sfx\/respawn_count_01.ogg","sha":"7c6de5988b917026d1f93e779a0506a4c80dfe6f"},{"file":"sfx\/reveal_common_card_01.ogg","sha":"67758a9c4dc48bd10280dfc0d3cc36e347fdc34d"},{"file":"sfx\/reveal_epic_card_01.ogg","sha":"8019ec8ea53e7ea8bbbd704ffcbd7c3851ad2687"},{"file":"sfx\/reveal_legendary_card_01.ogg","sha":"4c87e8621d63ea8dfc6ad6db0b8cb47915517b2b"},{"file":"sfx\/reveal_rare_card_01.ogg","sha":"9da7345ea2d35954eae9ce204dba666f51dc2d04"},{"file":"sfx\/rhino_fire_01.ogg","sha":"825822edc092322f54e498ab6a384c00d37033da"},{"file":"sfx\/rhinostep_01.ogg","sha":"d1c7caf085fc79054e0b30f8217acf2b1cc0fc33"},{"file":"sfx\/rick_bullet_01.ogg","sha":"b461689bde6fa83d086213668fe81bf5f12bc853"},{"file":"sfx\/rick_die_01.ogg","sha":"91e6c19943cfedcd5dca622498e28525ab538598"},{"file":"sfx\/rick_die_02.ogg","sha":"e3c58ef246eb2800a8254888ff00a82fe69abc5d"},{"file":"sfx\/rick_die_03.ogg","sha":"c790f5cea2fece5399ee3e44cf6e1a4dfb307492"},{"file":"sfx\/rick_die_04.ogg","sha":"21502e77d25b3fe2187c3530ef15e81d420270c9"},{"file":"sfx\/rick_die_05.ogg","sha":"575543d93752db9d0a20596d8f312269ba45921f"},{"file":"sfx\/rick_hurt_01.ogg","sha":"aea13d6286c696d6ec85b20befe33d72f99ad54e"},{"file":"sfx\/rick_hurt_02.ogg","sha":"a25e329ad322dcc91ac6618826abc453064094de"},{"file":"sfx\/rick_hurt_03.ogg","sha":"ffc0ee000eb60f5920b93ffe3c5f431c74cebe48"},{"file":"sfx\/rick_hurt_04.ogg","sha":"c0bf6a635d6ba6ff905dffc5cf8899a6e865e1be"},{"file":"sfx\/rick_hurt_05.ogg","sha":"e1526e62cc55d131cc319aaf2e5963f3834a418e"},{"file":"sfx\/rick_kill_vo_01.ogg","sha":"2e385b4159b8de2513c6d493183466af17867b58"},{"file":"sfx\/rick_kill_vo_02.ogg","sha":"a807e712ad5b69d1e06b0c4f6ad1be4e3c30e1ba"},{"file":"sfx\/rick_kill_vo_03.ogg","sha":"238e4c76096c53995c2f29842737e02a02c04ef5"},{"file":"sfx\/rick_kill_vo_04.ogg","sha":"3073252f22230bd8b9f4271e172671159e173117"},{"file":"sfx\/rick_kill_vo_05.ogg","sha":"11a3a74c5d903899303da7804d8bb8428bec1f97"},{"file":"sfx\/rick_kill_vo_06.ogg","sha":"8247408409f508da42c9a5c8a99aea104191111c"},{"file":"sfx\/rick_kill_vo_07.ogg","sha":"1960f3e9c1a2ac0ab5ddb8eacdf7f24ffde2274e"},{"file":"sfx\/rick_lead_01.ogg","sha":"a86ca2567284f1619de604599128ac86541caf37"},{"file":"sfx\/rick_lead_02.ogg","sha":"68555c002a8db86212194bbadde9aec136be3cc6"},{"file":"sfx\/rick_lead_03.ogg","sha":"32c74ca2e84eb7b0ea40bbedf5197a90497a4676"},{"file":"sfx\/rick_lead_04.ogg","sha":"4f26f406cd0e5b4301ad102a0b778e6cd45bb5d6"},{"file":"sfx\/rick_lead_05.ogg","sha":"d44412c682eef30a6a13ab81d57a8e70c1fdc430"},{"file":"sfx\/rick_start_vo_01.ogg","sha":"69046f47145982957ec72e35a2d26299b06f6b32"},{"file":"sfx\/rick_start_vo_02.ogg","sha":"d49a0fb72c17a24c362c564e0028d6c97a3d97cc"},{"file":"sfx\/rick_start_vo_03.ogg","sha":"5ee8c6cf539117328ed551a7edf28f07ef65865a"},{"file":"sfx\/rick_start_vo_04.ogg","sha":"7e4f811487de6550f639fdb1734867d1019f4ff5"},{"file":"sfx\/rick_start_vo_05.ogg","sha":"344ad7f75ee763ef30b648710f3bcc5f521854cd"},{"file":"sfx\/rick_start_vo_06.ogg","sha":"18219e6048f9666f7406d9bb07ccb20512896b2c"},{"file":"sfx\/rick_ulti_01.ogg","sha":"3f74cf55168d95d43670be31cf772c0c7edfb560"},{"file":"sfx\/rick_ulti_02.ogg","sha":"10a59368d9f2bb9a60da2a1602980e61867c690f"},{"file":"sfx\/rick_ulti_03.ogg","sha":"2ed365d18c931e984628a5e9ab50ce1d7b620366"},{"file":"sfx\/rick_ulti_04.ogg","sha":"309f4a5ee70c6a2da4662eb6a66fdeaa0f6babf6"},{"file":"sfx\/rick_ulti_05.ogg","sha":"ba0f2d514ae0acb109bdf18d56acfd1571ef9477"},{"file":"sfx\/rick_ulti_06.ogg","sha":"7e7bf6420ebdf34b4569a9013fe37d2c6996f88f"},{"file":"sfx\/robo_bo_die_01.ogg","sha":"34e11fe2415102099ab33cf3e2e7e1b67a4f3b6f"},{"file":"sfx\/robo_bo_die_02.ogg","sha":"bedfc4d1cedc95e037e163d5863f832461ed50a8"},{"file":"sfx\/robo_bo_die_03.ogg","sha":"b5fbd752379e0f09ef17489846fe3df17f51db37"},{"file":"sfx\/robo_bo_die_04.ogg","sha":"5893bf0d35d61812d87d3ced856ab81b1cb59967"},{"file":"sfx\/robo_bo_die_05.ogg","sha":"6e9b031ead0fc4cd916a2408e909683d470b84ab"},{"file":"sfx\/robo_bo_fire_vo_01.ogg","sha":"cdaf709dc647987b393b5669eb813d2c0501bc3c"},{"file":"sfx\/robo_bo_fire_vo_02.ogg","sha":"d586dc619f4424369e52a61535f812057669881d"},{"file":"sfx\/robo_bo_fire_vo_03.ogg","sha":"7ed9859973514ee682750978ed1e9bd0ee7cd48a"},{"file":"sfx\/robo_bo_fire_vo_04.ogg","sha":"52dfa02f08d716e2f33bd5d1a18c9df93d86348f"},{"file":"sfx\/robo_bo_hurt_01.ogg","sha":"1b215261e764880ee2a988eeb04aa4231cbc7122"},{"file":"sfx\/robo_bo_hurt_02.ogg","sha":"cb2a4084a898122683a8199d85685a6b5ce400cd"},{"file":"sfx\/robo_bo_hurt_03.ogg","sha":"ed6d024699869c06f246fa490573902acc142d7f"},{"file":"sfx\/robo_bo_hurt_04.ogg","sha":"b574baccf4590cb9e2d94e0f88afb18a71352e7e"},{"file":"sfx\/robo_bo_kill_01.ogg","sha":"2e666075bb7bab0d3b976c36fcaef2d7d9db081e"},{"file":"sfx\/robo_bo_kill_02.ogg","sha":"aa2111d1e42ceb6cd180198a9536527881978e60"},{"file":"sfx\/robo_bo_kill_03.ogg","sha":"7172994b76ee7141e48f5f251a1a1b2ff7c80ac9"},{"file":"sfx\/robo_bo_kill_04.ogg","sha":"02bd3a68fd30d055a3c16fac0d19e3c6a50317ee"},{"file":"sfx\/robo_bo_lead_vo_01.ogg","sha":"dc6bba72554bca4bc6355ee308c6fc14f25c1b7b"},{"file":"sfx\/robo_bo_lead_vo_02.ogg","sha":"a6bc0181357c78f43f20c395c5b470acf0d72fbc"},{"file":"sfx\/robo_bo_lead_vo_03.ogg","sha":"097f30a01768c6fcb516a53f62322e124d2f274f"},{"file":"sfx\/robo_bo_lead_vo_04.ogg","sha":"b3e3f30dcf050236c22468ab789e298ac7edc984"},{"file":"sfx\/robo_bo_start_vo_01.ogg","sha":"899f8a9b978e748ab091df79e905d7dcf5fc3647"},{"file":"sfx\/robo_bo_start_vo_02.ogg","sha":"011cc2d08e54500f1ac53122b5328e0e12ea56b0"},{"file":"sfx\/robo_bo_start_vo_03.ogg","sha":"c162e1636fec4de522ce0651107e99521d739dfc"},{"file":"sfx\/robo_bo_start_vo_04.ogg","sha":"2ac54be3df0c1ff031aa468003c3e51376657f5a"},{"file":"sfx\/robo_bo_start_vo_05.ogg","sha":"a864f848bbf3e71177a95547c68887671bd027d7"},{"file":"sfx\/robo_bo_ulti_vo_01.ogg","sha":"c9da37b701fefad356cbc0083e0f504fbd29a731"},{"file":"sfx\/robo_bo_ulti_vo_02.ogg","sha":"c20e3a3d40112f83eb317392fc38e7f2616d3821"},{"file":"sfx\/robo_bo_ulti_vo_03.ogg","sha":"bc8c9d5fd58a326ac7586690b306b955aadc2b04"},{"file":"sfx\/robo_bo_ulti_vo_04.ogg","sha":"e45980f5b99d427dd47d77bc5f9c2386aa6f83c3"},{"file":"sfx\/robo_death_01.ogg","sha":"b952b89d9efd0d15308252fd44a27c8d7634bc80"},{"file":"sfx\/robo_death_02.ogg","sha":"5c089652b790373e0432e84f5af7a9c705b50e5c"},{"file":"sfx\/robocon_01.ogg","sha":"b241d9f0ed6a82d9a6bef88da8e9a176b9c48d97"},{"file":"sfx\/roborocket01.ogg","sha":"be515d3f99ad2ea30cc7ed30eb4281ddb5a0ed74"},{"file":"sfx\/robotshoot_01.ogg","sha":"9c0d98af51affd6e6e3300048d8d8928ea97a2de"},{"file":"sfx\/roboturret01.ogg","sha":"86b06e223495b8286fce7fd2ccbd471546259fa7"},{"file":"sfx\/rocket_rose_atk_02.ogg","sha":"94d33fb18bff6a95cf9f03cbb5c17b219d20f00d"},{"file":"sfx\/rosa_death_01.ogg","sha":"48c354fbf01e62dc37dd74b2622715eb522b3d1f"},{"file":"sfx\/rosa_death_02.ogg","sha":"0dbd4e28e1a77206d84d69b5e70c7c18eec75b79"},{"file":"sfx\/rosa_death_03.ogg","sha":"19ce86073a8421ec8b7093c33d9493134242e069"},{"file":"sfx\/rosa_death_04.ogg","sha":"88869bce431cf494840c0abc211afd8629bfdc75"},{"file":"sfx\/rosa_gadget_01.ogg","sha":"a4105e956890d25dc53e16e935527b819735893c"},{"file":"sfx\/rosa_hit_01.ogg","sha":"31ac9a7dacd44f1e178d0e15f594af7d96e41665"},{"file":"sfx\/rosa_hit_02.ogg","sha":"a174c76adac1038b6d579d14ed0d6ee908cdc24d"},{"file":"sfx\/rosa_hit_03.ogg","sha":"4ac354ce3aa666618aaca9bc237a8a653a8ba154"},{"file":"sfx\/rosa_hit_04.ogg","sha":"37fdc54262d53fc8c2a9db9370fdeb19f6f14f59"},{"file":"sfx\/rosa_hit_05.ogg","sha":"4dd04bad8265f2bfbe8d1098ed98fdac0adf60f8"},{"file":"sfx\/rosa_hit_06.ogg","sha":"54aa113d97e6fb901fdb7a9f74835adb6976307e"},{"file":"sfx\/rosa_hit_07.ogg","sha":"7da7d162fea9db794e65a42e9b3a0df4c9cb8f87"},{"file":"sfx\/rosa_kill_01.ogg","sha":"e767979301c80936b7cc7193733d72d3fbfa6e35"},{"file":"sfx\/rosa_kill_02.ogg","sha":"51b5e6945925fbce5d26ee0686e42d5543fa155b"},{"file":"sfx\/rosa_kill_03.ogg","sha":"e8c496f1fd33cf67f29efbd308a28513387e6e48"},{"file":"sfx\/rosa_kill_04.ogg","sha":"a664f4de9e23e2de5d91c2946582ab692f019ba1"},{"file":"sfx\/rosa_kill_05.ogg","sha":"53adaa2aeb133b6261c1faa29873f7b6fbbed172"},{"file":"sfx\/rosa_lead_01.ogg","sha":"92994e1a118fd484873fecf983349b9fa103176c"},{"file":"sfx\/rosa_lead_02.ogg","sha":"af5b51059697f6225196e7478b52f6944cb0ee0c"},{"file":"sfx\/rosa_lead_03.ogg","sha":"a8ec28343f348e974b0dd97881de8a8a37bfc76d"},{"file":"sfx\/rosa_start_01.ogg","sha":"e88870fb8ec8423d06a1e0a01e48c10679926970"},{"file":"sfx\/rosa_start_02.ogg","sha":"501246e776d09775d4d955b078af7f9454f7f0fd"},{"file":"sfx\/rosa_start_03.ogg","sha":"6e4df12d56ab0525f96f9d1258dd8a7bde12a6b4"},{"file":"sfx\/rosa_start_04.ogg","sha":"011e8648224351a0ff4702818c8504e69a901d7c"},{"file":"sfx\/rosa_ulti_vo_01.ogg","sha":"309237abf0f3da6ebe7339a53fe41834cfa7bba3"},{"file":"sfx\/rosa_ulti_vo_02.ogg","sha":"6169bf1b45eb22117b259d62558e751df36f5907"},{"file":"sfx\/rosa_ulti_vo_03.ogg","sha":"63916c4c5d95d410b33717c43c8ceb429fa6b572"},{"file":"sfx\/rosa_ulti_vo_04.ogg","sha":"10db87593f293de35ac366bad9dec3298109997a"},{"file":"sfx\/rose_rocket_explo_01.ogg","sha":"e5cd00c40d9b3b71ee2064add19c8afb7060eb12"},{"file":"sfx\/rose_rocket_ulti_explo_01.ogg","sha":"3332df1b4bfc52abb85fa12623b4ea266d32ddb2"},{"file":"sfx\/safe_drop_01.ogg","sha":"35f7f1b630b1da6e1e7615b9155fd7932391e22d"},{"file":"sfx\/safe_open_char_01.ogg","sha":"ebc86498592f9b227d45a7cb38f42185cbf4b595"},{"file":"sfx\/sandy_atk_01.ogg","sha":"d14bd7ad86930c40f317c09553dde59888a97e30"},{"file":"sfx\/sandy_die_vo_01.ogg","sha":"ad5e660b06caa0b3c0c04a8d685b528df9f55758"},{"file":"sfx\/sandy_die_vo_02.ogg","sha":"69989ccf4d5f8c24439e4e01ac5721fbf251b7b8"},{"file":"sfx\/sandy_die_vo_03.ogg","sha":"b3dfe828eee2ae7f0a3c8b534704eeb71c054417"},{"file":"sfx\/sandy_die_vo_04.ogg","sha":"17e7eb51a92f2faf410264f61f4d49500fc2233f"},{"file":"sfx\/sandy_hurt_vo_01.ogg","sha":"dfd571db46ff2219b2b9c56220958e29d1af2271"},{"file":"sfx\/sandy_hurt_vo_02.ogg","sha":"e676e3c066bff0716216e64d612c62fe3294ce91"},{"file":"sfx\/sandy_hurt_vo_03.ogg","sha":"a4c32dd7132f4d3e009b40cc97176a7b7e3ae41e"},{"file":"sfx\/sandy_hurt_vo_04.ogg","sha":"85ca36495121f708a360dbfc16b9edbb200bb942"},{"file":"sfx\/sandy_hurt_vo_05.ogg","sha":"d9891b0444c7f71c7b516a8a02c41c77fb314099"},{"file":"sfx\/sandy_hurt_vo_06.ogg","sha":"416afd2e9bcb2f08fe103da7f5e3acdef8b13e1d"},{"file":"sfx\/sandy_kill_vo_01.ogg","sha":"46a13c47ff6348faaedf0bf865b81c6067e89f33"},{"file":"sfx\/sandy_kill_vo_02.ogg","sha":"cb20e80f8bd7c24c2960b9f72ca3c0ebdd6f548b"},{"file":"sfx\/sandy_kill_vo_03.ogg","sha":"020ae1616a5d03e6b938cff77fddb90793013bde"},{"file":"sfx\/sandy_kill_vo_04.ogg","sha":"ff9e2957a505147b0e63c0939fd9181a8b4951dc"},{"file":"sfx\/sandy_kill_vo_05.ogg","sha":"d8116733afe4e1fc7f6877324108f578ca8cda7b"},{"file":"sfx\/sandy_lead_vo_01.ogg","sha":"050e904395607eacc04f560944c8a22ac3f13fec"},{"file":"sfx\/sandy_lead_vo_02.ogg","sha":"f6c236d7a847e03f56ca1a2ea0e2daa481c8c294"},{"file":"sfx\/sandy_lead_vo_03.ogg","sha":"13c84b6af31167b8efa509241c38b022256ebfd5"},{"file":"sfx\/sandy_lead_vo_04.ogg","sha":"9b025a2ab80af3441c0d69f0fcd88add9f044b03"},{"file":"sfx\/sandy_lead_vo_05.ogg","sha":"ba9b35872dc6b96ae24dceae2eefaf37f56e30c7"},{"file":"sfx\/sandy_no_ammo_01.ogg","sha":"b83c25ea91b95c11dbb49fa6fd09e4e0dc385554"},{"file":"sfx\/sandy_reload_01.ogg","sha":"ce8ac176d2746cf041c7b8d09fc79154dd24a91b"},{"file":"sfx\/sandy_start_vo_01.ogg","sha":"9d09de2789002fc55af34cbbcc96cf289f3a565e"},{"file":"sfx\/sandy_start_vo_02.ogg","sha":"a8b4c134095fbe5639af947d61ed09ac4961db85"},{"file":"sfx\/sandy_start_vo_03.ogg","sha":"78ad8cbf8348ebb96bf8341a228a1d0679fb8ec4"},{"file":"sfx\/sandy_start_vo_04.ogg","sha":"d7057754ae59b0c5753c123b1a8e6be7e214d773"},{"file":"sfx\/sandy_start_vo_05.ogg","sha":"394b2411d4478aea14c428efb00d259166d0e1e3"},{"file":"sfx\/sandy_start_vo_06.ogg","sha":"c21477d0ea07a60de854ec0fa9c1b2575199d34f"},{"file":"sfx\/sandy_ulti_01.ogg","sha":"3315245d2cac234941727c695000a0ad52903dae"},{"file":"sfx\/sandy_ulti_vo_01.ogg","sha":"cf92aa729a11b8ea000cadaf2f9594a7f367d9fb"},{"file":"sfx\/sandy_ulti_vo_02.ogg","sha":"dbabc175e09c8c4f76e8a96e357a38c2ea72ea3d"},{"file":"sfx\/select_brawler_01.ogg","sha":"16511d104e8c2121459d58e616c8c0e8959b87b6"},{"file":"sfx\/sgg_dryfire_01.ogg","sha":"9ec0e616eeb600a1f6427000b42739906da0b992"},{"file":"sfx\/sgg_out_of_ammo_02.ogg","sha":"80b6ca2e781f132f66c8304c42a172815c748560"},{"file":"sfx\/shelly_die_01.ogg","sha":"0a5011177a93e74cbcc1ecbf03f173eb2fec0ec4"},{"file":"sfx\/shelly_die_02.ogg","sha":"1fd0d9ec5535a40cd57a1c1da31f4e116a78ef99"},{"file":"sfx\/shelly_die_03.ogg","sha":"0a91f5c2e9ff0732105b137f41c7fae5ac287aa3"},{"file":"sfx\/shelly_die_04.ogg","sha":"1ed70949ffdb339562dac2bb911e1eaef7049a6d"},{"file":"sfx\/shelly_hurt_01.ogg","sha":"a4db4470185cbdbe36aad2735d5ee555b8c66bd2"},{"file":"sfx\/shelly_hurt_02.ogg","sha":"f388022bb8f99b89607d118e08bd9bedf9d74789"},{"file":"sfx\/shelly_hurt_03.ogg","sha":"2c71910f18152b71bccf4e50c69e6782c2b9cea3"},{"file":"sfx\/shelly_hurt_04.ogg","sha":"857efaf860e9294ada0896901e63b4ce5d89e23e"},{"file":"sfx\/shelly_hurt_05.ogg","sha":"91b430f267ac6842584593da48040d1399708cb7"},{"file":"sfx\/shelly_kill_01.ogg","sha":"01649ddc2ae8e147ec1bb10b2895f7418d96a1b4"},{"file":"sfx\/shelly_kill_02.ogg","sha":"b0dd39533aaf20a84d39d544af7877bb2085f0ea"},{"file":"sfx\/shelly_kill_03.ogg","sha":"e2af115e57859e65f137d8125ea12ec64483fcf9"},{"file":"sfx\/shelly_kill_04.ogg","sha":"b8a9b87e7245c1f249e57acdca74faf91a01224f"},{"file":"sfx\/shelly_kill_05.ogg","sha":"86cff3d39074a86bee04f3eb8dab429fc14aafeb"},{"file":"sfx\/shelly_lead_01.ogg","sha":"e82e5bf9d63bde1f669532c23200487205531c9b"},{"file":"sfx\/shelly_lead_02.ogg","sha":"1b813cdec39a2764a610fe838d7b31312f60d620"},{"file":"sfx\/shelly_lead_03.ogg","sha":"7ca23febb33dc1532c153b06f8c263e029d8e688"},{"file":"sfx\/shelly_lead_04.ogg","sha":"3b86dab85f6a06c237eb39b2ff2b80d9824bd178"},{"file":"sfx\/shelly_start_01.ogg","sha":"85cbaa55a6904b147871572c8904b20b41096b16"},{"file":"sfx\/shelly_start_02.ogg","sha":"0701cb9b59ee094561c85389494ae85df1f0424b"},{"file":"sfx\/shelly_start_03.ogg","sha":"ecc44fda6fdeb4cae365c28a93b8b732aae500e9"},{"file":"sfx\/shelly_start_04.ogg","sha":"101013b5c67f2e759e0b0d46ac869b924e9e06cb"},{"file":"sfx\/shelly_ulti_01.ogg","sha":"509cb1f21ed7f694d051b71a49b718a42479ea98"},{"file":"sfx\/shelly_ulti_02.ogg","sha":"92cc1126d2d7703feb21aaa2377b6d41c708282a"},{"file":"sfx\/shelly_ulti_03.ogg","sha":"6a46a37687b8edc06944f1289f703bd809fa88e1"},{"file":"sfx\/shelly_ulti_04.ogg","sha":"ad504d8a582f8c4a833b548a7f685aa2230dccb4"},{"file":"sfx\/shield_03.ogg","sha":"630186425958779c0749a8ea03d2da745d70da7c"},{"file":"sfx\/shotgun_fire_01.ogg","sha":"7ab6b8a4bc57189ec49bd2c9f758427466e741f8"},{"file":"sfx\/shroomz.ogg","sha":"0297f50e99f6cb3c2e8078bedfc0b82ce91124af"},{"file":"sfx\/skill_used_03.ogg","sha":"ba37c239847c33ecffdcdfd04ace2f408646c222"},{"file":"sfx\/slider_tick_01.ogg","sha":"141dc928e3453aea5ffa0d6fc207db12a417f9e8"},{"file":"sfx\/slimey_shotgun_01.ogg","sha":"60d9976a5e87366249b7b5ce8fe66dc9e555a2b7"},{"file":"sfx\/slimey_shotgun_ulti_01.ogg","sha":"181138ac38a360b84a6e0d6ec5ae2f69b0879c80"},{"file":"sfx\/slug_bad_kill_01.ogg","sha":"82cc1c0883864a95d6c417f557985fb52d4c7cfb"},{"file":"sfx\/slug_good_kill_01.ogg","sha":"f3828d0a77ebfd224bdf22ef70e4a5f1ec634bf4"},{"file":"sfx\/slugfest_clock_01.ogg","sha":"6549d12e4c4ea62648b86e26ffea80705b92d227"},{"file":"sfx\/sniper_reload_01.ogg","sha":"a1464481765e0b1722058b1902053735422308fa"},{"file":"sfx\/sniper_trail_02.ogg","sha":"558115f832f168ed8fb7ce4e783b360fda3bd2e6"},{"file":"sfx\/sniper_ulti_01.ogg","sha":"a940357d4eaffdd27140ee456ff639d0eb5d290e"},{"file":"sfx\/solgrenade01.ogg","sha":"ce15ab0fe6cbd7949a741a63a9205b2a30bb9fc8"},{"file":"sfx\/spike_atk_01.ogg","sha":"6b3ec159a3b9e6843b43739147e46cb4aedbb33a"},{"file":"sfx\/spike_reload_03.ogg","sha":"6c5b8307d553f5fb1f11f781a01921eb1b3f2ec4"},{"file":"sfx\/spike_ulti_explo_01.ogg","sha":"b827597a2fc7530137b374d48e80dfa4ce25c247"},{"file":"sfx\/springboard_charge_01.ogg","sha":"95dcc001b1628e818d8187422df5fc43fe6622a3"},{"file":"sfx\/springboard_jump_01.ogg","sha":"6f02696572e19c735829f85d64d03ff0420b9159"},{"file":"sfx\/sprout_atk_01.ogg","sha":"9cf7e103e7998e9affb4ba0ecc54d908cb125534"},{"file":"sfx\/sprout_atk_explo_01.ogg","sha":"829a176a8a15aac6a1230daab2922ffd32bdf17d"},{"file":"sfx\/sprout_atk_ulti_01.ogg","sha":"63e78d5bf0c35741246067d0a1222dbb6aa680ed"},{"file":"sfx\/sprout_atk_ulti_explo_01.ogg","sha":"f3099e30bc68e7225ec660b507bb9aa1887dc58d"},{"file":"sfx\/sprout_atk_ulti_explo_02.ogg","sha":"04d9877c869cb94df5c6a73b294273a4606b6f62"},{"file":"sfx\/sprout_die_vo_01.ogg","sha":"544e1c4c34bb71ed21b22678771afcedd5f3a7b6"},{"file":"sfx\/sprout_die_vo_02.ogg","sha":"1bca05884207418c139a20ecac57a9edf25dc7d3"},{"file":"sfx\/sprout_die_vo_03.ogg","sha":"e288b01b92d70e5f6006a10550cca992604cb6c3"},{"file":"sfx\/sprout_die_vo_04.ogg","sha":"841ed5e59c868b5c17a9b2880507ed2ae1f400f3"},{"file":"sfx\/sprout_die_vo_05.ogg","sha":"be2b1d8e546550ddf9867dcc312b137d503a3b9d"},{"file":"sfx\/sprout_dryfire_01.ogg","sha":"30fecee3d6ad201b46ce7c9ac8c7cff71bb22752"},{"file":"sfx\/sprout_hurt_vo_01.ogg","sha":"0dd231aa07a84011af8e42b2d7b4a3c288814a2c"},{"file":"sfx\/sprout_hurt_vo_02.ogg","sha":"db5cc344042d79165e7414b10142eb63c1de6c01"},{"file":"sfx\/sprout_hurt_vo_03.ogg","sha":"49e90e3b6e5b5b827d2a409dd010d7a624d82c3d"},{"file":"sfx\/sprout_hurt_vo_04.ogg","sha":"f613f23acd9231b2e3b32bb0c34ff6269c183e7d"},{"file":"sfx\/sprout_kill_vo_01.ogg","sha":"a971574332de705b4735edca6028b3c9d26f2faa"},{"file":"sfx\/sprout_kill_vo_02.ogg","sha":"9b808ca195f828b430d105b55561de2993e5a103"},{"file":"sfx\/sprout_kill_vo_03.ogg","sha":"c63817c83563b0d11253df17103c9debdbcc32e4"},{"file":"sfx\/sprout_kill_vo_04.ogg","sha":"50717e0b62e9511ac56b48ecb32c877c9639a801"},{"file":"sfx\/sprout_kill_vo_05.ogg","sha":"43be79ca137c86c60351a7dadab61067030b0455"},{"file":"sfx\/sprout_lead_vo_01.ogg","sha":"ae9f91c52c0c3a519f5815a7153ab285a8e8d50b"},{"file":"sfx\/sprout_lead_vo_02.ogg","sha":"3aa7c4b880b15019cf7d411a9965f03021cf3591"},{"file":"sfx\/sprout_lead_vo_03.ogg","sha":"d5fe825c9a815ff3d72e65ae3589566517d9b5ce"},{"file":"sfx\/sprout_lead_vo_04.ogg","sha":"d164f63d05412549f0ef01b1142018be6d566d27"},{"file":"sfx\/sprout_reload_01.ogg","sha":"d9645497feb10ee2adfad3f806c6becae17064f0"},{"file":"sfx\/sprout_start_vo_01.ogg","sha":"7121911c26d602dd86c4bc10665ade25f35b6ade"},{"file":"sfx\/sprout_start_vo_02.ogg","sha":"02bb68a4c9cded3e7acf3e9511025302df4634d4"},{"file":"sfx\/sprout_start_vo_03.ogg","sha":"5dcc5a7941c4c1ee5af2716e33bde8f80f658295"},{"file":"sfx\/sprout_start_vo_04.ogg","sha":"de0b45a7452fc63354d6907a7e7210839620590c"},{"file":"sfx\/sprout_ulti_vo_01.ogg","sha":"71166d0a9bb6b09dd8387e4a355f5bb0553f3378"},{"file":"sfx\/sprout_ulti_vo_02.ogg","sha":"deaafbfdab9f860230330824e198efb27f98732e"},{"file":"sfx\/sprout_ulti_vo_03.ogg","sha":"07a04b1598eb23a8b4d4645d5f91ce61abeabc7d"},{"file":"sfx\/sprout_ulti_vo_04.ogg","sha":"059f66df254c83ba9372f38eb59b92bd4c550573"},{"file":"sfx\/star_power_equip_01.ogg","sha":"a62fcdff19ea21c882afe2c98f9c53ec5b2cefeb"},{"file":"sfx\/starpower_shield_01.ogg","sha":"481cc775efbc368b3f0690cf165c4e5d90edfa93"},{"file":"sfx\/starpower_speed_01.ogg","sha":"b3a7ad29e690ef37f12be2f4833e507476f068eb"},{"file":"sfx\/startwirl_01.ogg","sha":"5bea3b25102cfe0f0b3e47ff62798a06c280f9d7"},{"file":"sfx\/supercell_jingle.ogg","sha":"030b22dec66f329e04fcc428232cc2a22d91e339"},{"file":"sfx\/tanuki_jess_fire_01.ogg","sha":"7765ebd571b4195324f02dbaa334944d17c25a59"},{"file":"sfx\/tanuki_turret_fire_01.ogg","sha":"d1dea0ceba14d8c8aad38a04a804b4941d11151a"},{"file":"sfx\/tap_guns_02.ogg","sha":"08131fd3c18ef09999714b3728647741c7c642cb"},{"file":"sfx\/tap_normal_02.ogg","sha":"b7a25e6f1ff348d9c778c7c9508f76772cd742c2"},{"file":"sfx\/tara_die_vo_01.ogg","sha":"91a9ae5986199c508cdeb6a03307f11bd65c90a2"},{"file":"sfx\/tara_die_vo_02.ogg","sha":"2a87f9140250772fdbe8736e12a020692478a61c"},{"file":"sfx\/tara_die_vo_03.ogg","sha":"6362e77f4046479e08e819ce89431844891e498a"},{"file":"sfx\/tara_die_vo_04.ogg","sha":"6b150703b0be885a90bb78a0f030eda6c877d51a"},{"file":"sfx\/tara_gagdet_01.ogg","sha":"5264fe0012baab8bf47ad90ef42fff1f9931e689"},{"file":"sfx\/tara_hurt_vo_01.ogg","sha":"6a67eb05c0560743fa3d926274f358fb2f8cefb9"},{"file":"sfx\/tara_hurt_vo_02.ogg","sha":"ed4524401f9481e20a5dd7268bcf2aa83367328e"},{"file":"sfx\/tara_hurt_vo_03.ogg","sha":"9504aa712560d809125d0a27638db8ff217910c9"},{"file":"sfx\/tara_kill_vo_01.ogg","sha":"b0136e90023e09009dc7f25741319bc4916ee517"},{"file":"sfx\/tara_kill_vo_02.ogg","sha":"06a05840f34007015628d994dca52f872ba7bffc"},{"file":"sfx\/tara_kill_vo_03.ogg","sha":"037dcad60f3b0a71db7e2a7328b6657ee0d0fd96"},{"file":"sfx\/tara_kill_vo_04.ogg","sha":"69f1cfab3b918c5c9884688371992b7f55ec425d"},{"file":"sfx\/tara_lead_vo_01.ogg","sha":"a506b7ed911b30cea7dc1d241a75e71de2d9c1f5"},{"file":"sfx\/tara_lead_vo_02.ogg","sha":"1ae6376c9b583c84f4d5c220ea593c9e41a6401b"},{"file":"sfx\/tara_lead_vo_03.ogg","sha":"bd3e9c73eba8c833dce5f3ebd87a1ec0c4126c8d"},{"file":"sfx\/tara_start_vo_01.ogg","sha":"5f535443bb017abb0f29b11d43975dd6d5e76570"},{"file":"sfx\/tara_start_vo_02.ogg","sha":"27e53ea295801ec1fd3cd43a68afe3520a58b205"},{"file":"sfx\/tara_start_vo_03.ogg","sha":"a0f268bb6ef5542103491e90296a85dfa1852776"},{"file":"sfx\/throw_bawl_ulti_01.ogg","sha":"370a0d3b18dce04019daeebeb7fc0d9953aeacec"},{"file":"sfx\/tick_atk_01.ogg","sha":"fe24e87c16672315650220564210e3a650b9c134"},{"file":"sfx\/tick_atk_split_02.ogg","sha":"da7c956a2558e571ffe75b7a86f38921dad70572"},{"file":"sfx\/tick_reload_01.ogg","sha":"3741fa1b37a060aedcebfb98fb73a9c8fb7b6c42"},{"file":"sfx\/tick_ulti_01.ogg","sha":"b6e7c155d816addad69fe0ad0d2055fff9440c6b"},{"file":"sfx\/tick_vo_01v2.ogg","sha":"daf7c88cee1cfca52588b0041804444159221f02"},{"file":"sfx\/tick_vo_02v2.ogg","sha":"823f4502d6a5fafb6a9b76d6be407393b89498fe"},{"file":"sfx\/tick_vo_03v2.ogg","sha":"2aa88dd06600610c9522ad0a56c6dca2dc507edd"},{"file":"sfx\/tick_vo_04v2.ogg","sha":"c34ad40737f96a0b206c533fbd7e667daecd787a"},{"file":"sfx\/tick_vo_05hurt.ogg","sha":"e1518de841200990da8c2a9a945263e38c086cc2"},{"file":"sfx\/tick_vo_05v2.ogg","sha":"1e86fc7ca5726ef964d95b0d1c9e8e92aa36ea7f"},{"file":"sfx\/tick_vo_06hurt.ogg","sha":"674b8ba61199ec5e06dc3abd2629502fb15656c4"},{"file":"sfx\/tick_vo_06v2.ogg","sha":"26aeac5faed4cdf697298fe48929d836903b4c6d"},{"file":"sfx\/tick_vo_07hurt.ogg","sha":"07ece5fb5b2d4ed3f4719026ae715cfce2cf06ca"},{"file":"sfx\/tick_vo_08die.ogg","sha":"5921c3bb6d51747eb6255f8b9b0e87a5dfc87d8b"},{"file":"sfx\/tnt_guy_die_01.ogg","sha":"ec3c8b98cc1a1eb3fc1861723aac2421ca9bd541"},{"file":"sfx\/tnt_guy_die_02.ogg","sha":"ec04a55d4b4f35f1c5fab0d41b4f6fdb7d867708"},{"file":"sfx\/tnt_guy_die_03.ogg","sha":"7a37322bc75282c5a9848df025c84b2f8237d78b"},{"file":"sfx\/tnt_guy_die_04.ogg","sha":"5249f5825b6b392056dfe50116280da6fc6faea2"},{"file":"sfx\/tnt_guy_die_05.ogg","sha":"d8a068da13d15bbffc06b7d33bab5de9602d5c8c"},{"file":"sfx\/tnt_guy_hurt_01.ogg","sha":"ca7aaa6584ff001a934a637a7a14017549bfd6c9"},{"file":"sfx\/tnt_guy_hurt_02.ogg","sha":"5c0e32440dae0217b92a292295fb79b68556382c"},{"file":"sfx\/tnt_guy_hurt_03.ogg","sha":"058d11e6d35eebd0103d184461ef1a2303e33c45"},{"file":"sfx\/tnt_guy_hurt_04.ogg","sha":"4a03b700941abebb0e87653d1db3c6f7a1a23c15"},{"file":"sfx\/tnt_guy_hurt_05.ogg","sha":"f45ee3f0efe81a7ea69f7ed9f9fcb0e316ad6a6a"},{"file":"sfx\/tnt_guy_kill_01.ogg","sha":"43580a4a4d084fb4d4990793864dba63092c152a"},{"file":"sfx\/tnt_guy_kill_02.ogg","sha":"3cd3c2ffd5b1117544c5cbdf7f461d78883b15b3"},{"file":"sfx\/tnt_guy_kill_03.ogg","sha":"9db959c77881d5c8a8fa60c81d948aebb892a34f"},{"file":"sfx\/tnt_guy_kill_04.ogg","sha":"cbb9fec905be047e4dc038821dc78c276d96e186"},{"file":"sfx\/tnt_guy_lead_01.ogg","sha":"4196e294e6b5f475bf2d2adb5b797f73ad1b1371"},{"file":"sfx\/tnt_guy_lead_02.ogg","sha":"2855ab2e16a8e2e9665c901b8954b162f2bd6961"},{"file":"sfx\/tnt_guy_start_vo_01.ogg","sha":"1befb093d3f87cc0893da8b5ecc8a058797002ce"},{"file":"sfx\/tnt_guy_start_vo_02.ogg","sha":"0cd1f61a216b0ff84fa2a70267aabcb1eb913a02"},{"file":"sfx\/tnt_guy_start_vo_03.ogg","sha":"745b16ba345c069354514851eb11b1a4d3b412e2"},{"file":"sfx\/tnt_guy_start_vo_04.ogg","sha":"0791467e349b4ae057a9a3c47b3ccbc4fb4af07c"},{"file":"sfx\/tnt_guy_ulti_01.ogg","sha":"4ebff8e1ac81a4f883dc67b99a9b32e9cdad6c7a"},{"file":"sfx\/tnt_guy_ulti_02.ogg","sha":"55caa9d12afb4b89490cef14bd51db9f4179674e"},{"file":"sfx\/tnt_reload_03.ogg","sha":"27ebb9415893239f7aa159221b9492c8f0b18928"},{"file":"sfx\/tnt_ulti_01.ogg","sha":"5a20d30a57891de53d2cc01692df8d5a796b720b"},{"file":"sfx\/troll_train_warn_01.ogg","sha":"26e92e6b35703909fa1e08be3ee639248242e32c"},{"file":"sfx\/trophy_rank_up_01v2.ogg","sha":"1a1b6c0b4e2b29388ba83f6294305eab7fc41377"},{"file":"sfx\/tut_speech_01.ogg","sha":"1c16dff0a00ab3e5e6be03e7fec021351481697f"},{"file":"sfx\/tutorial_enter_circle_01.ogg","sha":"a9fb3f4b1d73038d057013d321070d07ac2ea4eb"},{"file":"sfx\/ulti_button_cancel_01.ogg","sha":"473eba865ed1b5a389ad362ef221695f7dbb729c"},{"file":"sfx\/ulti_button_press_01.ogg","sha":"beab9e495cf4956d343b41fe113fc136270a51ac"},{"file":"sfx\/ulti_gain_03.ogg","sha":"a721af4312f479b99e2a7e45fee20629d3654ae6"},{"file":"sfx\/ulti_ready_01.ogg","sha":"fa47902196aedd208834dd0ce67654f261321a4a"},{"file":"sfx\/unlock_new_power_lvl_01.ogg","sha":"d5c6032b5ccc4b199189fae3f606b2a410ec3ae0"},{"file":"sfx\/upgrade_count_01.ogg","sha":"e97f481fb825f2f90a0ea8e6c53bdcf217c88934"},{"file":"sfx\/water_brock_atk_01.ogg","sha":"978bd8fb0b863d9014ebd46e99d017349b0f3312"},{"file":"sfx\/water_jess_atk_01.ogg","sha":"54f28419dadab421819482a8f0b893f92512e000"},{"file":"sfx\/water_jess_hit_01.ogg","sha":"107f302f4625047232266e424edbfd09a31308b7"},{"file":"sfx\/water_jess_turret_atk_01.ogg","sha":"db5ffd55a4fffbadf3dfb78324b7d381d7dd960c"},{"file":"sfx\/water_jess_ulti_01.ogg","sha":"ff8ad1af9360eee8efa934a80964a3a546274c23"},{"file":"sfx\/wave_boss_fight_01.ogg","sha":"0c7aaf012bf760fb9ebb84527b33c995d7179e70"},{"file":"sfx\/wave_fight_01v2.ogg","sha":"22646ed71f2078a39a1a52cc459b5add003588d3"},{"file":"sfx\/wind_gust_01.ogg","sha":"d143ad934cfa88db6a58f0f757e87ff2d741b32f"},{"file":"shader\/badge.fsh","sha":"36a6cdeb710a4637c55739abbfe06606e03619b4"},{"file":"shader\/badge.vsh","sha":"3b17fe627fafcbb9095ac3065e5c248904025694"},{"file":"shader\/ghost.fsh","sha":"dfa263bd2a88509c82707cb0c314f1688d716b01"},{"file":"shader\/ghost.vsh","sha":"1c075f951d70b1eb8ff06590978891cab0b1c322"},{"file":"shader\/hologram.fsh","sha":"813618fdf152a1c7fc323e296f581c77819891ab"},{"file":"shader\/hologram.vsh","sha":"eb3856d82380a9724df8a4d049331cef7e975c66"},{"file":"shader\/impostor.fsh","sha":"0f2f959cb0ece052799310549b0644b4dd393703"},{"file":"shader\/impostor.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline.fsh","sha":"c41ff174995908ba8824eb2e0a23f186ca05eea6"},{"file":"shader\/impostor_outline.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline_mask.fsh","sha":"f77099206e2be541156b8eca21f84466f7605838"},{"file":"shader\/impostor_outline_mask.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline_opaque.fsh","sha":"86c2a7b68970f154f475ca170641fe92800a94fc"},{"file":"shader\/impostor_outline_opaque.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/mask.fsh","sha":"604401258c83a9e88c66c4c325d7a1bf905485ce"},{"file":"shader\/mask.vsh","sha":"d24e0bbdb372eb8a4d73f17e95e6c09c8243047f"},{"file":"shader\/seaweed.fsh","sha":"5160f70a5b764e82c9e3174e6df6de907fa84160"},{"file":"shader\/seaweed.vsh","sha":"49922f8284a10cfd5eee3464643e5579e4c97c5c"},{"file":"shader\/shadow.fsh","sha":"d2fa6e6ac2190ea9b5bea00cdf5c04acfd87349b"},{"file":"shader\/shadow.vsh","sha":"428963e8e8b323fb153ba931385d46b716dadef3"},{"file":"shader\/uber.fsh","sha":"5160f70a5b764e82c9e3174e6df6de907fa84160"},{"file":"shader\/uber.vsh","sha":"51d83297dee2f17c2e02193d4682aab0748387ab"},{"file":"supercell_id_config.json","sha":"89be9c166ec1eb810ae3511c72f3f574f1ff8d62"}],"sha":"1660a966daa31a498bee59a78670c89ef4364b05","version":"26.165.1"}
================================================
FILE: Server/NLog.config
================================================
================================================
FILE: Server/config.json
================================================
{
"mysql_database": "bsdb",
"mysql_password": "",
"mysql_server": "127.0.0.1",
"mysql_user": "root",
"server_port": 9339,
"default_name": "Mr Vitalik",
"default_region": "IL",
"default_trophies": 99999,
"patch_url": "",
"use_content_patch": false
}
================================================
FILE: Source/BrawlStars/BrawlStars.csproj
================================================
Exe
netcoreapp3.1
Linux
7.3
OnBuildSuccess
server.ico
BrawlStars
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
PreserveNewest
================================================
FILE: Source/BrawlStars/BrawlStars.csproj.user
================================================
ProjectDebugger
BrawlStars
================================================
FILE: Source/BrawlStars/Core/Configuration.cs
================================================
using System;
using System.IO;
using Newtonsoft.Json;
namespace BrawlStars.Core
{
public class Configuration
{
[JsonIgnore] public static JsonSerializerSettings JsonSettings = new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Auto,
MissingMemberHandling = MissingMemberHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
TypeNameHandling = TypeNameHandling.Auto,
Formatting = Formatting.None
};
[JsonProperty("mysql_database")] public string MySqlDatabase = "bsdb";
[JsonProperty("mysql_password")] public string MySqlPassword = "";
[JsonProperty("mysql_server")] public string MySqlServer = "127.0.0.1";
[JsonProperty("mysql_user")] public string MySqlUserId = "root";
[JsonProperty("server_port")] public int ServerPort = 9339;
[JsonProperty("default_name")] public string Name = "";
[JsonProperty("default_region")] public string Region = "";
[JsonProperty("default_trophies")] public int Trophies = 99999;
[JsonProperty("patch_url")] public string PatchUrl = "";
[JsonProperty("use_content_patch")] public bool UseContentPatch;
///
/// Loads the configuration
///
public void Initialize()
{
if (File.Exists("config.json"))
try
{
var config = JsonConvert.DeserializeObject(File.ReadAllText("config.json"));
MySqlUserId = config.MySqlUserId;
MySqlServer = config.MySqlServer;
MySqlPassword = config.MySqlPassword;
MySqlDatabase = config.MySqlDatabase;
ServerPort = config.ServerPort;
Name = config.Name;
Region = config.Region;
Trophies = config.Trophies;
PatchUrl = config.PatchUrl;
UseContentPatch = config.UseContentPatch;
}
catch (Exception)
{
Console.WriteLine("Couldn't load configuration.");
Console.ReadKey(true);
Environment.Exit(0);
}
else
try
{
Save();
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine("Server configuration has been created.\nNow update the config.json for your needs.");
Console.ReadKey();
Environment.Exit(0);
}
catch (Exception)
{
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.WriteLine("Couldn't create config file.");
Console.ReadKey();
Environment.Exit(0);
}
}
public void Save()
{
File.WriteAllText("config.json", JsonConvert.SerializeObject(this, Formatting.Indented));
}
}
}
================================================
FILE: Source/BrawlStars/Core/Network/Handlers/PacketEncoder.cs
================================================
using System.Threading.Tasks;
using BrawlStars.Protocol;
using DotNetty.Buffers;
using DotNetty.Transport.Channels;
namespace BrawlStars.Core.Network.Handlers
{
public class PacketEncoder : ChannelHandlerAdapter
{
public override Task WriteAsync(IChannelHandlerContext context, object msg)
{
var message = (PiranhaMessage) msg;
message.Encode();
var header = PooledByteBufferAllocator.Default.Buffer(7);
header.WriteUnsignedShort(message.Id);
header.WriteMedium(message.Writer.ReadableBytes);
header.WriteUnsignedShort(message.Version);
message.EncodeCryptoBytes();
base.WriteAsync(context, header);
return base.WriteAsync(context, message.Writer);
}
}
}
================================================
FILE: Source/BrawlStars/Core/Network/Handlers/PacketHandler.cs
================================================
using System;
using System.Net;
using BrawlStars.Logic;
using DotNetty.Buffers;
using DotNetty.Handlers.Timeout;
using DotNetty.Transport.Channels;
namespace BrawlStars.Core.Network.Handlers
{
public class PacketHandler : ChannelHandlerAdapter
{
public PacketHandler()
{
Throttler = new Throttler(10, 500);
Device = new Device(this);
}
public Device Device { get; set; }
public IChannel Channel { get; set; }
public Throttler Throttler { get; set; }
public override void ChannelRead(IChannelHandlerContext context, object message)
{
var buffer = (IByteBuffer) message;
if (buffer == null) return;
if (Throttler.CanProcess())
{
Device.Process(buffer);
}
else
{
Logger.Log("Client reached ratelimit. Disconnecting...", GetType(), Logger.ErrorLevel.Warning);
Device.Disconnect();
}
}
public override void ChannelRegistered(IChannelHandlerContext context)
{
Channel = context.Channel;
var remoteAddress = (IPEndPoint) Channel.RemoteAddress;
Logger.Log($"Client {remoteAddress.Address.MapToIPv4()}:{remoteAddress.Port} connected.", GetType(),
Logger.ErrorLevel.Debug);
base.ChannelRegistered(context);
}
public override async void ChannelUnregistered(IChannelHandlerContext context)
{
if (Device?.Player?.Home != null)
{
var player = await Resources.Players.GetPlayerAsync(Device.Player.Home.Id, true);
if (player != null)
if (player.Device.Session.SessionId == Device.Session.SessionId)
Resources.Players.LogoutById(player.Home.Id);
}
var remoteAddress = (IPEndPoint) Channel.RemoteAddress;
Logger.Log($"Client {remoteAddress.Address.MapToIPv4()}:{remoteAddress.Port} disconnected.", GetType(),
Logger.ErrorLevel.Debug);
base.ChannelUnregistered(context);
}
public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)
{
if (exception.GetType() != typeof(ReadTimeoutException) &&
exception.GetType() != typeof(WriteTimeoutException))
Logger.Log(exception, GetType(), Logger.ErrorLevel.Error);
context.CloseAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Core/Network/NettyService.cs
================================================
using System.Net;
using System.Threading.Tasks;
using BrawlStars.Core.Network.Handlers;
using DotNetty.Codecs;
using DotNetty.Handlers.Logging;
using DotNetty.Handlers.Timeout;
using DotNetty.Transport.Bootstrapping;
using DotNetty.Transport.Channels;
using DotNetty.Transport.Channels.Sockets;
namespace BrawlStars.Core.Network
{
public class NettyService
{
public MultithreadEventLoopGroup BossGroup { get; set; }
public MultithreadEventLoopGroup WorkerGroup { get; set; }
public ServerBootstrap ServerBootstrap { get; set; }
public IChannel ServerChannel { get; set; }
///
/// Run the server
///
///
public async Task RunServerAsync()
{
BossGroup = new MultithreadEventLoopGroup();
WorkerGroup = new MultithreadEventLoopGroup();
ServerBootstrap = new ServerBootstrap();
ServerBootstrap.Group(BossGroup, WorkerGroup);
ServerBootstrap.Channel();
ServerBootstrap
.Option(ChannelOption.SoBacklog, 100)
.Option(ChannelOption.TcpNodelay, true)
.Option(ChannelOption.SoKeepalive, true)
.Handler(new LoggingHandler("SRV-ICR"))
.ChildHandler(new ActionChannelInitializer(channel =>
{
var pipeline = channel.Pipeline;
pipeline.AddFirst("FrameDecoder", new LengthFieldBasedFrameDecoder(4096, 2, 3, 2, 0));
pipeline.AddFirst("ReadTimeoutHandler", new ReadTimeoutHandler(30));
pipeline.AddLast("PacketHandler", new PacketHandler());
pipeline.AddLast("WriteTimeoutHandler", new WriteTimeoutHandler(30));
pipeline.AddLast("PacketEncoder", new PacketEncoder());
}));
ServerChannel = await ServerBootstrap.BindAsync(Resources.Configuration.ServerPort);
var endpoint = (IPEndPoint) ServerChannel.LocalAddress;
Logger.Log(
$"Listening on {endpoint.Address.MapToIPv4()}:{endpoint.Port}. Let's play Brawl Stars!",
GetType());
}
///
/// Close all channels and disconnects clients
///
///
public async Task Shutdown()
{
await ServerChannel.CloseAsync();
}
///
/// Shutdown all workers of netty
///
///
public async Task ShutdownWorkers()
{
await WorkerGroup.ShutdownGracefullyAsync();
await BossGroup.ShutdownGracefullyAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Core/Network/Throttler.cs
================================================
using System;
namespace BrawlStars.Core.Network
{
public class Throttler
{
private readonly int _interval;
private readonly int _maxPackets;
private int _count;
private DateTime _lastReset = DateTime.UtcNow;
///
/// Throttle packets by checking if we can process it or if the ratelimit is reached
///
///
///
public Throttler(int maxPackets, int interval)
{
_maxPackets = maxPackets;
_interval = interval;
}
public bool CanProcess()
{
if (_count++ < _maxPackets) return true;
if (GetMillisecondsSinceLastReset() < _interval) return false;
_count = 1;
_lastReset = DateTime.UtcNow;
return true;
}
private int GetMillisecondsSinceLastReset()
{
return (int) DateTime.UtcNow.Subtract(_lastReset).TotalMilliseconds;
}
}
}
================================================
FILE: Source/BrawlStars/Database/AllianceDb.cs
================================================
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using BrawlStars.Core;
using BrawlStars.Logic.Clan;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
namespace BrawlStars.Database
{
public class AllianceDb
{
private const string Name = "clan";
private static string _connectionString;
private static long _allianceSeed;
public AllianceDb()
{
_connectionString = new MySqlConnectionStringBuilder
{
Server = Resources.Configuration.MySqlServer,
Database = Resources.Configuration.MySqlDatabase,
UserID = Resources.Configuration.MySqlUserId,
Password = Resources.Configuration.MySqlPassword,
SslMode = MySqlSslMode.None,
MinimumPoolSize = 4,
MaximumPoolSize = 20,
CharacterSet = "utf8mb4"
}.ToString();
_allianceSeed = MaxAllianceId();
if (_allianceSeed > -1) return;
Logger.Log($"MysqlConnection for clans failed [{Resources.Configuration.MySqlServer}]!", GetType());
Program.Exit();
}
public static async Task ExecuteAsync(MySqlCommand cmd)
{
#region Execute
try
{
cmd.Connection = new MySqlConnection(_connectionString);
await cmd.Connection.OpenAsync();
await cmd.ExecuteNonQueryAsync();
}
catch (MySqlException exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
finally
{
cmd.Connection?.Close();
}
#endregion
}
public static long MaxAllianceId()
{
#region MaxId
try
{
long seed;
using (var connection = new MySqlConnection(_connectionString))
{
connection.Open();
using (var cmd = new MySqlCommand($"SELECT coalesce(MAX(Id), 0) FROM {Name}", connection))
{
seed = Convert.ToInt64(cmd.ExecuteScalar());
}
connection.Close();
}
return seed;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return -1;
}
#endregion
}
public static async Task CountAsync()
{
#region Count
try
{
long seed;
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
using (var cmd = new MySqlCommand($"SELECT COUNT(*) FROM {Name}", connection))
{
seed = Convert.ToInt64(await cmd.ExecuteScalarAsync());
}
await connection.CloseAsync();
}
return seed;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return 0;
}
#endregion
}
public static async Task CreateAsync()
{
#region Create
try
{
var id = _allianceSeed++;
if (id <= -1)
return null;
var alliance = new Alliance(id + 1);
using (var cmd =
new MySqlCommand(
$"INSERT INTO {Name} (`Id`, `Trophies`, `RequiredTrophies`, `Type`, `Region`, `Data`) VALUES ({id + 1}, {alliance.Score}, {alliance.RequiredScore}, {alliance.Type}, {alliance.Region}, @data)")
)
{
#pragma warning disable 618
cmd.Parameters?.AddWithValue("@data",
JsonConvert.SerializeObject(alliance, Configuration.JsonSettings));
#pragma warning restore 618
await ExecuteAsync(cmd);
}
return alliance;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return null;
}
#endregion
}
public static async Task GetAsync(long id)
{
#region Get
try
{
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
Alliance alliance = null;
using (var cmd = new MySqlCommand($"SELECT * FROM {Name} WHERE Id = '{id}'", connection))
{
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
alliance = JsonConvert.DeserializeObject((string) reader["Data"],
Configuration.JsonSettings);
break;
}
}
await connection.CloseAsync();
return alliance;
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return null;
}
#endregion
}
public static async Task SaveAsync(Alliance alliance)
{
#region Save
try
{
using (var cmd =
new MySqlCommand(
$"UPDATE {Name} SET `Trophies`='{alliance.Score}', `RequiredTrophies`='{alliance.RequiredScore}', `Type`='{alliance.Type}', `Region`='{alliance.Region}', `Data`=@data WHERE Id = '{alliance.Id}'")
)
{
#pragma warning disable 618
cmd.Parameters?.AddWithValue("@data",
JsonConvert.SerializeObject(alliance, Configuration.JsonSettings));
#pragma warning restore 618
await ExecuteAsync(cmd);
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
#endregion
}
public static async Task DeleteAsync(long id)
{
#region Delete
try
{
using (var cmd = new MySqlCommand(
$"DELETE FROM {Name} WHERE Id = '{id}'")
)
{
await ExecuteAsync(cmd);
/*if (Redis.IsConnected)
await Redis.UncacheAllianceAsync(id);*/
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
#endregion
}
public static async Task> GetGlobalAlliancesAsync()
{
#region Global
var list = new List();
try
{
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
using (var cmd = new MySqlCommand($"SELECT * FROM {Name} ORDER BY `Trophies` DESC LIMIT 200",
connection))
{
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
list.Add(JsonConvert.DeserializeObject((string) reader["Data"],
Configuration.JsonSettings));
}
await connection.CloseAsync();
}
return list;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return list;
}
#endregion
}
}
}
================================================
FILE: Source/BrawlStars/Database/Cache/Alliances.cs
================================================
using System.Collections.Generic;
using BrawlStars.Logic.Clan;
using System.Threading.Tasks;
namespace BrawlStars.Database.Cache
{
public class Alliances : Dictionary
{
private readonly object _syncObject = new object();
///
/// Add an alliance to the server
///
///
public void Add(Alliance alliance)
{
lock (_syncObject)
{
if (!ContainsKey(alliance.Id)) Add(alliance.Id, alliance);
}
}
///
/// Remove an alliance from the server and save it
///
///
public new void Remove(long allianceId)
{
lock (_syncObject)
{
if (ContainsKey(allianceId))
{
var alliance = this[allianceId];
alliance.Save();
var result = base.Remove(allianceId);
if (!result)
Logger.Log($"Couldn't remove alliance {allianceId}", GetType(), Logger.ErrorLevel.Error);
}
}
}
public async Task GetAllianceAsync(long allianceId, bool onlineOnly = false)
{
lock (_syncObject)
{
if (ContainsKey(allianceId))
return this[allianceId];
}
if (onlineOnly) return null;
var alliance = Resources.ObjectCache.GetCachedAlliance(allianceId);
if (alliance != null) return alliance;
alliance = await AllianceDb.GetAsync(allianceId);
Resources.ObjectCache.CacheAlliance(alliance);
return alliance;
}
///
/// Get an alliance from cache or database
///
///
///
///
/*public async Task GetAllianceAsync(long allianceId, bool onlineOnly = false)
{
lock (_syncObject)
{
if (ContainsKey(allianceId))
return this[allianceId];
}
if (onlineOnly) return null;
if (!Redis.IsConnected) return await AllianceDb.GetAsync(allianceId);
var alliance = await Redis.GetAllianceAsync(allianceId);
if (alliance != null) return alliance;
alliance = await AllianceDb.GetAsync(allianceId);
await Redis.CacheAsync(alliance);
return alliance;
}
///
/// Returns a list of random cached Alliances
///
///
///
public async Task> GetRandomAlliancesAsync(int count = 40, bool notFull = true)
{
var alliances = new List(count);
for (var i = 0; i < count; i++)
{
var alliance = await Redis.GetRandomAllianceAsync();
if (alliance != null && alliances.FindIndex(a => a.Id == alliance.Id) == -1)
{
if (notFull)
{
if (alliance.Members.Count < 50) alliances.Add(alliance);
}
else
{
alliances.Add(alliance);
}
}
}
return alliances;
}*/
}
}
================================================
FILE: Source/BrawlStars/Database/Cache/Players.cs
================================================
using System.Collections.Generic;
using System.Threading.Tasks;
using BrawlStars.Logic;
namespace BrawlStars.Database.Cache
{
public class Players : Dictionary
{
public readonly object SyncObject = new object();
///
/// Login a player
///
///
///
public async Task Login(long userId, string token)
{
Player player;
if (userId <= 0 && string.IsNullOrEmpty(token))
{
player = await PlayerDb.CreateAsync();
}
else
{
//var p = await Redis.GetPlayerAsync(userId);
var p = Resources.ObjectCache.GetCachedPlayer(userId);
if (p != null)
player = p;
else
player = await PlayerDb.GetAsync(userId);
if (player == null) return null;
if (player.Home.UserToken != token) return null;
}
lock (SyncObject)
{
if (player == null) return null;
Logout(ref player);
var result = TryAdd(player.Home.Id, player);
if (!result) return null;
//Logger.Log($"User {player.Home.Id} logged in.", GetType(), ErrorLevel.Debug);
return player;
}
}
///
/// Called when a player logs out
///
///
public void Logout(ref Player player)
{
lock (SyncObject)
{
if (!ContainsKey(player.Home.Id)) return;
var p = this[player.Home.Id];
p.ValidateSession();
p.Save();
player = p;
var result = Remove(p.Home.Id);
if (!result) Logger.Log($"Couldn't logout player {p.Home.Id}", GetType(), Logger.ErrorLevel.Error);
//else Logger.Log($"User {player.UserId} logged out.", GetType(), ErrorLevel.Debug);
}
}
///
/// Log out a player by the UserId
///
///
///
public bool LogoutById(long userId)
{
lock (SyncObject)
{
if (!ContainsKey(userId)) return true;
var player = this[userId];
player.ValidateSession();
player.Save();
var result = Remove(userId);
if (!result) Logger.Log($"Couldn't logout player {userId}", GetType(), Logger.ErrorLevel.Error);
return result;
}
}
///
/// Get a player from cache or database
///
///
///
///
public async Task GetPlayerAsync(long userId, bool onlineOnly = false)
{
lock (SyncObject)
{
if (ContainsKey(userId))
return this[userId];
}
if (onlineOnly) return null;
var player = Resources.ObjectCache.GetCachedPlayer(userId);
if (player != null) return player;
player = await PlayerDb.GetAsync(userId);
Resources.ObjectCache.CachePlayer(player);
return player;
}
}
}
================================================
FILE: Source/BrawlStars/Database/ObjectCache.cs
================================================
using System;
using System.Diagnostics;
using BrawlStars.Logic;
using BrawlStars.Logic.Home;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging.Abstractions;
using BrawlStars.Logic.Clan;
namespace BrawlStars.Database
{
public class ObjectCache
{
private readonly TimeSpan _expirationTimeSpan;
private readonly MemoryCache _objectCache;
private readonly MemoryCache _playerCache;
private readonly MemoryCache _allianceCache;
public ObjectCache()
{
var options = new MemoryCacheOptions
{
ExpirationScanFrequency = TimeSpan.FromMinutes(5)
};
_expirationTimeSpan = TimeSpan.FromHours(2);
_playerCache = new MemoryCache(options, new NullLoggerFactory());
_objectCache = new MemoryCache(options, new NullLoggerFactory());
_allianceCache = new MemoryCache(options, new NullLoggerFactory());
Logger.Log("Successfully loaded caches", null);
}
///
/// Cache a player to access it from memory
///
///
public void CachePlayer(Player player)
{
try
{
var home = player.Home;
var playerEntry = _playerCache.CreateEntry(home.Id);
playerEntry.Value = home;
_playerCache.Set(home.Id, playerEntry, _expirationTimeSpan);
var objectEntry = _objectCache.CreateEntry(home.Id);
_objectCache.Set(home.Id, objectEntry, _expirationTimeSpan);
}
catch (Exception)
{
Logger.Log("Failed to cache player.", GetType(), Logger.ErrorLevel.Error);
}
}
public void CacheAlliance(Alliance alliance)
{
try
{
var allianceEntry = _allianceCache.CreateEntry(alliance.Id);
allianceEntry.Value = alliance;
_allianceCache.Set(alliance.Id, allianceEntry, _expirationTimeSpan);
}
catch (Exception)
{
Logger.Log("Failed to cache player.", GetType(), Logger.ErrorLevel.Error);
}
}
public Player GetCachedPlayer(long id)
{
try
{
var st = new Stopwatch();
st.Start();
if (_playerCache.Get(id) is ICacheEntry playerEntry)
if (_objectCache.Get(id) is ICacheEntry objectEntry)
if (playerEntry.Value is Home home)
if (objectEntry.Value is string json)
{
home.Time.SubTick = 0;
st.Stop();
Logger.Log($"Successfully got player {id} from cache in {st.ElapsedMilliseconds}ms",
null,
Logger.ErrorLevel.Debug);
return new Player
{
Home = home
};
}
}
catch (Exception)
{
Logger.Log("Failed to fetch player from cache.", GetType(), Logger.ErrorLevel.Error);
}
return null;
}
public Alliance GetCachedAlliance(long id)
{
try
{
var st = new Stopwatch();
st.Start();
if (_allianceCache.Get(id) is ICacheEntry allianceEntry)
{
if (allianceEntry.Value is Alliance alliance)
{
st.Stop();
Logger.Log($"Successfully got alliance {id} from cache in {st.ElapsedMilliseconds}ms", null,
Logger.ErrorLevel.Debug);
return alliance;
}
}
}
catch (Exception)
{
Logger.Log("Failed to fetch alliance from cache.", GetType(), Logger.ErrorLevel.Error);
}
return null;
}
public long CachedPlayers()
{
return _playerCache.Count;
}
}
}
================================================
FILE: Source/BrawlStars/Database/PlayerDb.cs
================================================
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using BrawlStars.Core;
using BrawlStars.Logic;
using BrawlStars.Logic.Home;
using BrawlStars.Logic.Sessions;
using MySql.Data.MySqlClient;
using Newtonsoft.Json;
namespace BrawlStars.Database
{
public class PlayerDb
{
private const string Name = "player";
private static string _connectionString;
private static long _playerSeed;
public PlayerDb()
{
_connectionString = new MySqlConnectionStringBuilder
{
Server = Resources.Configuration.MySqlServer,
Database = Resources.Configuration.MySqlDatabase,
UserID = Resources.Configuration.MySqlUserId,
Password = Resources.Configuration.MySqlPassword,
SslMode = MySqlSslMode.None,
MinimumPoolSize = 4,
MaximumPoolSize = 20,
CharacterSet = "utf8mb4"
}.ToString();
_playerSeed = MaxPlayerId();
if (_playerSeed > -1) return;
Logger.Log($"MysqlConnection for players failed [{Resources.Configuration.MySqlServer}]!", GetType());
Program.Exit();
}
public static async Task ExecuteAsync(MySqlCommand cmd)
{
#region Execute
try
{
cmd.Connection = new MySqlConnection(_connectionString);
await cmd.Connection.OpenAsync();
await cmd.ExecuteNonQueryAsync();
}
catch (MySqlException exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
finally
{
cmd.Connection?.Close();
}
#endregion
}
public static long MaxPlayerId()
{
#region MaxId
try
{
long seed;
using (var connection = new MySqlConnection(_connectionString))
{
connection.Open();
using (var cmd = new MySqlCommand($"SELECT coalesce(MAX(Id), 0) FROM {Name}", connection))
{
seed = Convert.ToInt64(cmd.ExecuteScalar());
}
connection.Close();
}
return seed;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return -1;
}
#endregion
}
public static async Task CountAsync()
{
#region Count
try
{
long seed;
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
using (var cmd = new MySqlCommand($"SELECT COUNT(*) FROM {Name}", connection))
{
seed = Convert.ToInt64(await cmd.ExecuteScalarAsync());
}
await connection.CloseAsync();
}
return seed;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return 0;
}
#endregion
}
public static async Task CreateAsync()
{
#region Create
try
{
var id = _playerSeed++;
if (id <= -1)
return null;
var player = new Player(id + 1);
var home = player.Home;
using (var cmd =
new MySqlCommand(
$"INSERT INTO {Name} (`Id`, `Trophies`, `Language`, `FacebookId`, `Home`, `Sessions`) VALUES ({id + 1}, {home.Trophies}, @language, @fb, @home, @sessions)")
)
{
#pragma warning disable 618
cmd.Parameters?.AddWithValue("@language", home.PreferredDeviceLanguage);
cmd.Parameters?.AddWithValue("@fb", home.FacebookId);
cmd.Parameters?.AddWithValue("@home",
JsonConvert.SerializeObject(home, Configuration.JsonSettings));
cmd.Parameters?.AddWithValue("@sessions",
JsonConvert.SerializeObject(home.Sessions, Configuration.JsonSettings));
#pragma warning restore 618
await ExecuteAsync(cmd);
}
return player;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return null;
}
#endregion
}
public static async Task GetAsync(long id)
{
#region Get
try
{
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
Player player = null;
using (var cmd = new MySqlCommand($"SELECT * FROM {Name} WHERE Id = '{id}'", connection))
{
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
player = new Player
{
Home = JsonConvert.DeserializeObject((string) reader["Home"],
Configuration.JsonSettings)
};
player.Home.Sessions = JsonConvert.DeserializeObject>(
(string) reader["Sessions"],
Configuration.JsonSettings) ?? new List(50);
break;
}
}
await connection.CloseAsync();
return player;
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return null;
}
#endregion
}
public static async Task SaveAsync(Player player)
{
#region Save
try
{
var home = player.Home;
using (var cmd =
new MySqlCommand(
$"UPDATE {Name} SET `Trophies`='{home.Trophies}', `Language`=@language, `FacebookId`=@fb, `Home`=@home, `Sessions`=@sessions WHERE Id = '{home.Id}'")
)
{
#pragma warning disable 618
cmd.Parameters?.AddWithValue("@language", home.PreferredDeviceLanguage);
cmd.Parameters?.AddWithValue("@fb", home.FacebookId);
cmd.Parameters?.AddWithValue("@home",
JsonConvert.SerializeObject(home, Configuration.JsonSettings));
cmd.Parameters?.AddWithValue("@sessions",
JsonConvert.SerializeObject(home.Sessions, Configuration.JsonSettings));
#pragma warning restore 618
await ExecuteAsync(cmd);
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
#endregion
}
public static async Task DeleteAsync(long id)
{
#region Delete
try
{
using (var cmd = new MySqlCommand(
$"DELETE FROM {Name} WHERE Id = '{id}'")
)
{
await ExecuteAsync(cmd);
/*if (Redis.IsConnected)
await Redis.UncachePlayerAsync(id);*/
}
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
}
#endregion
}
public static async Task> GetGlobalPlayerRankingAsync()
{
#region GetGlobal
var list = new List();
try
{
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
using (var cmd = new MySqlCommand($"SELECT * FROM {Name} ORDER BY `Trophies` DESC LIMIT 200",
connection))
{
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
list.Add(JsonConvert.DeserializeObject((string) reader["Home"],
Configuration.JsonSettings));
}
await connection.CloseAsync();
}
return list;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return list;
}
#endregion
}
public static async Task> GetLocalPlayerRankingAsync(string language)
{
#region GetLocal
var list = new List();
try
{
using (var connection = new MySqlConnection(_connectionString))
{
await connection.OpenAsync();
using (var cmd =
new MySqlCommand(
$"SELECT * FROM {Name} WHERE Language = '{language}' ORDER BY `Trophies` DESC LIMIT 200",
connection))
{
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
list.Add(JsonConvert.DeserializeObject((string) reader["Home"],
Configuration.JsonSettings));
}
await connection.CloseAsync();
}
return list;
}
catch (Exception exception)
{
Logger.Log(exception, null, Logger.ErrorLevel.Error);
return list;
}
#endregion
}
}
}
================================================
FILE: Source/BrawlStars/Extensions/ChatStreamEntry.cs
================================================
using BrawlStars.Logic.Clan.StreamEntry;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Extensions
{
public class ChatStreamEntry : AllianceStreamEntry
{
public ChatStreamEntry()
{
StreamEntryType = 2;
}
[JsonProperty("msg")] public string Message { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
packet.WriteScString(Message);
}
}
}
================================================
FILE: Source/BrawlStars/Extensions/CustomWriter.cs
================================================
using BrawlStars.Files.CsvHelpers;
using DotNetty.Buffers;
namespace BrawlStars.Extensions
{
///
/// This implements a few extensions for games from supercell
///
public static class CustomWriter
{
///
/// Encodes CsvData
///
///
///
public static void WriteData(this IByteBuffer buffer, Data value)
{
buffer.WriteInt(value.GetDataType());
buffer.WriteInt(value.GetInstanceId());
}
}
}
================================================
FILE: Source/BrawlStars/Extensions/GamePlayUtil.cs
================================================
using System;
using BrawlStars.Files;
using BrawlStars.Files.Logic;
namespace BrawlStars.Extensions
{
public class GamePlayUtil
{
public int GetResourceDiamondCost(int resourceCount, string resource)
{
int result = 0;
var globals = Csv.Tables.Get(Csv.Files.Globals);
if (resourceCount >= 1)
{
if (resourceCount >= 100)
{
if (resourceCount >= 1000)
{
if (resourceCount >= 10000)
{
if (resourceCount >= 100000)
{
if (resourceCount >= 1000000)
{
var supCost = globals.GetData("RESOURCE_DIAMOND_COST_10000000")
.NumberValue;
var infCost = globals.GetData("RESOURCE_DIAMOND_COST_1000000")
.NumberValue;
result = CalculateResourceCost(10000000, 1000000, supCost, infCost,
resourceCount);
}
else
{
var supCost = globals.GetData("RESOURCE_DIAMOND_COST_1000000")
.NumberValue;
var infCost = globals.GetData("RESOURCE_DIAMOND_COST_100000")
.NumberValue;
result = CalculateResourceCost(1000000, 100000, supCost, infCost,
resourceCount);
}
}
else
{
var supCost = globals.GetData("RESOURCE_DIAMOND_COST_100000").NumberValue;
var infCost = globals.GetData("RESOURCE_DIAMOND_COST_10000").NumberValue;
result = CalculateResourceCost(100000, 10000, supCost, infCost, resourceCount);
}
}
else
{
var supCost = globals.GetData("RESOURCE_DIAMOND_COST_10000").NumberValue;
var infCost = globals.GetData("RESOURCE_DIAMOND_COST_1000").NumberValue;
result = CalculateResourceCost(10000, 1000, supCost, infCost, resourceCount);
}
}
else
{
var supCost = globals.GetData("RESOURCE_DIAMOND_COST_1000").NumberValue;
var infCost = globals.GetData("RESOURCE_DIAMOND_COST_100").NumberValue;
result = CalculateResourceCost(1000, 100, supCost, infCost, resourceCount);
}
}
else
{
result = globals.GetData("RESOURCE_DIAMOND_COST_100")
.NumberValue;
}
}
return result;
}
public static int GetSpeedUpCost(int seconds)
{
var globals = Csv.Tables.Get(Csv.Files.Globals);
var cost = 0;
if (seconds >= 1)
{
if (seconds >= 60)
{
if (seconds >= 3600)
{
if (seconds >= 86400)
{
var supCost = globals.GetData("SPEED_UP_DIAMOND_COST_1_WEEK").NumberValue;
var infCost = globals.GetData("SPEED_UP_DIAMOND_COST_24_HOURS").NumberValue;
cost = CalculateSpeedUpCost(604800, 86400, supCost, infCost, seconds);
}
else
{
var supCost = globals.GetData("SPEED_UP_DIAMOND_COST_24_HOURS").NumberValue;
var infCost = globals.GetData("SPEED_UP_DIAMOND_COST_1_HOUR").NumberValue;
cost = CalculateSpeedUpCost(86400, 3600, supCost, infCost, seconds);
}
}
else
{
var supCost = globals.GetData("SPEED_UP_DIAMOND_COST_1_HOUR")
.NumberValue;
var infCost = globals.GetData("SPEED_UP_DIAMOND_COST_1_MIN")
.NumberValue;
cost = CalculateSpeedUpCost(3600, 60, supCost, infCost, seconds);
}
}
else
{
cost = globals.GetData("SPEED_UP_DIAMOND_COST_1_MIN")
.NumberValue;
}
}
return cost;
}
public static int CalculateResourceCost(int sup, int inf, int supCost, int infCost, int amount)
{
return (int) Math.Round((supCost - infCost) * (long) (amount - inf) / (sup - inf * 1.0)) + infCost;
}
public static int CalculateSpeedUpCost(int sup, int inf, int supCost, int infCost, int amount)
{
return (int) Math.Round((supCost - infCost) * (long) (amount - inf) / (sup - inf * 1.0)) + infCost;
}
}
}
================================================
FILE: Source/BrawlStars/Files/Csv.Files.cs
================================================
using System;
using System.Collections.Generic;
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
using BrawlStars.Files.Logic;
namespace BrawlStars.Files
{
public partial class Csv
{
public enum Files
{
Locales = 1,
Globals = 3,
Resources = 5,
AllianceBadges = 8,
Characters = 16,
AreaEffects = 17,
Items = 18,
Skills = 20,
Campaign = 21,
Bosses = 22,
Cards = 23,
AllianceRoles = 25,
Skins = 29,
}
public static Dictionary DataTypes = new Dictionary();
static Csv()
{
DataTypes.Add(Files.Locales, typeof(Locale));
DataTypes.Add(Files.Globals, typeof(Global));
DataTypes.Add(Files.Resources, typeof(Resource));
DataTypes.Add(Files.AllianceBadges, typeof(AllianceBadge));
DataTypes.Add(Files.Characters, typeof(Character));
DataTypes.Add(Files.AreaEffects, typeof(AreaEffect));
DataTypes.Add(Files.Items, typeof(Item));
DataTypes.Add(Files.Skills, typeof(Skill));
DataTypes.Add(Files.Campaign, typeof(Campaign));
DataTypes.Add(Files.Bosses, typeof(Bosses));
DataTypes.Add(Files.Cards, typeof(Card));
DataTypes.Add(Files.AllianceRoles, typeof(AllianceRole));
DataTypes.Add(Files.Skins, typeof(Skin));
}
public static Data Create(Files file, Row row, DataTable dataTable)
{
if (DataTypes.ContainsKey(file)) return Activator.CreateInstance(DataTypes[file], row, dataTable) as Data;
return null;
}
}
}
================================================
FILE: Source/BrawlStars/Files/Csv.cs
================================================
using System.Collections.Generic;
using System.Threading.Tasks;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files
{
public partial class Csv
{
public static readonly List Gamefiles = new List();
public static Gamefiles Tables;
public Csv()
{
/*Gamefiles.Add("GameAssets/csv_logic/locales.csv");
Gamefiles.Add("GameAssets/csv_logic/globals.csv");
Gamefiles.Add("GameAssets/csv_logic/resources.csv");
Gamefiles.Add("GameAssets/csv_logic/alliance_badges.csv");
Gamefiles.Add("GameAssets/csv_logic/characters.csv");
Gamefiles.Add("GameAssets/csv_logic/area_effects.csv");
Gamefiles.Add("GameAssets/csv_logic/items.csv");
Gamefiles.Add("GameAssets/csv_logic/skills.csv");
Gamefiles.Add("GameAssets/csv_logic/campaign.csv");
Gamefiles.Add("GameAssets/csv_logic/bosses.csv");
Gamefiles.Add("GameAssets/csv_logic/cards.csv");
Gamefiles.Add("GameAssets/csv_logic/alliance_roles.csv");
Gamefiles.Add("GameAssets/csv_logic/skins.csv");*/
Tables = new Gamefiles();
Parallel.ForEach(Gamefiles,
file => { Tables.Initialize(new Table(file), (Files) Gamefiles.IndexOf(file) + 1); });
Logger.Log($"{Gamefiles.Count} Gamefile(s) loaded.", GetType());
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvHelpers/Data.cs
================================================
using System;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.CsvHelpers
{
public class Data
{
private int _dataType;
private int _id;
protected DataTable DataTable;
protected Row Row;
public Data(Row row, DataTable dataTable)
{
Row = row;
DataTable = dataTable;
}
public void LoadData(Data data, Type type, Row row, int dataType = 0)
{
_dataType = dataType;
_id = GlobalId.CreateGlobalId(_dataType, DataTable.Count());
Row = row;
Row.LoadData(data);
}
public int GetDataType()
{
return _dataType;
}
public int GetGlobalId()
{
return _id;
}
public int GetInstanceId()
{
return GlobalId.GetInstanceId(_id);
}
public string GetName()
{
return Row.GetName();
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvHelpers/DataTable.cs
================================================
using System.Collections.Generic;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.CsvHelpers
{
public class DataTable
{
public List Datas;
public Csv.Files Index;
public DataTable()
{
Datas = new List();
}
public DataTable(Table table, Csv.Files index)
{
Index = index;
Datas = new List();
for (var i = 0; i < table.GetRowCount(); i += 2)
{
var row = table.GetRowAt(i);
var data = Csv.Create(Index, row, this);
Datas.Add(data);
}
}
public int Count()
{
return Datas?.Count ?? 0;
}
public List GetDatas()
{
return Datas;
}
public Data GetDataWithId(int id)
{
return Datas[GlobalId.GetInstanceId(id)];
}
public T GetDataWithId(int id) where T : Data
{
return Datas[GlobalId.GetInstanceId(id)] as T;
}
public T GetDataWithInstanceId(int id) where T : Data
{
if (Datas.Count < id) return null;
return Datas[id] as T;
}
public T GetData(string name) where T : Data
{
return Datas.Find(data => data.GetName() == name) as T;
}
public int GetIndex()
{
return (int) Index;
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvHelpers/GlobalId.cs
================================================
namespace BrawlStars.Files.CsvHelpers
{
public static class GlobalId
{
public static int CreateGlobalId(int classId, int instanceId)
{
return classId <= 0 ? 1000000 + instanceId : classId * 1000000 + instanceId;
}
public static int GetClassId(int globalId)
{
return globalId / 1000000;
}
public static int GetInstanceId(int globalId)
{
return globalId % 1000000;
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvReader/Column.cs
================================================
using System.Collections.Generic;
using System.Linq;
namespace BrawlStars.Files.CsvReader
{
public class Column
{
private readonly List _values;
public Column()
{
_values = new List();
}
public static int GetArraySize(int offset, int nOffset)
{
return nOffset - offset;
}
public void Add(string value)
{
if (value == null)
_values.Add(_values.Count > 0 ? _values.Last() : string.Empty);
else
_values.Add(value);
}
public string Get(int row)
{
return _values[row];
}
public int GetSize()
{
return _values.Count;
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvReader/Gamefiles.cs
================================================
using System;
using System.Collections.Generic;
using BrawlStars.Files.CsvHelpers;
namespace BrawlStars.Files.CsvReader
{
public class Gamefiles : IDisposable
{
private readonly List _dataTables = new List();
public Gamefiles()
{
if (Csv.Gamefiles.Count <= 0) return;
for (var i = 0; i < Csv.Gamefiles.Count; i++)
_dataTables.Add(new DataTable());
}
public void Dispose()
{
_dataTables.Clear();
}
public DataTable Get(Csv.Files index)
{
return _dataTables[(int) index - 1];
}
public DataTable Get(int index)
{
return _dataTables[index - 1];
}
public void Initialize(Table table, Csv.Files index)
{
_dataTables[(int) index - 1] = new DataTable(table, index);
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvReader/Row.cs
================================================
using System;
using System.Collections.Generic;
using System.Reflection;
using BrawlStars.Files.CsvHelpers;
namespace BrawlStars.Files.CsvReader
{
public class Row
{
private readonly Table _table;
public readonly int RowStart;
public Row(Table table)
{
_table = table;
RowStart = _table.GetColumnRowCount();
_table.AddRow(this);
}
public int Offset => RowStart;
public void LoadData(Data data)
{
foreach (var property in data.GetType().GetProperties(BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.Public))
if (property.CanRead && property.CanWrite)
{
if (property.PropertyType.IsArray)
{
var elementType = property.PropertyType.GetElementType();
if (elementType == typeof(byte)) property.SetValue(data, LoadBoolArray(property.Name));
else if (elementType == typeof(int)) property.SetValue(data, LoadIntArray(property.Name));
else if (elementType == typeof(string)) property.SetValue(data, LoadStringArray(property.Name));
}
else if (property.PropertyType.IsGenericType)
{
if (property.PropertyType == typeof(List<>))
{
var listType = typeof(List<>);
var generic = property.PropertyType.GetGenericArguments();
var concreteType = listType.MakeGenericType(generic);
var newList = Activator.CreateInstance(concreteType);
var add = concreteType.GetMethod("Add");
var indexerName =
((DefaultMemberAttribute) newList.GetType()
.GetCustomAttributes(typeof(DefaultMemberAttribute), true)[0]).MemberName;
var indexProperty = newList.GetType().GetProperty(indexerName);
for (var i = Offset; i < Offset + GetArraySize(property.Name); i++)
{
var value = GetValue(property.Name, i - Offset);
if (value == string.Empty && i != Offset)
if (indexProperty != null)
value = indexProperty.GetValue(newList, new object[]
{
i - Offset - 1
}).ToString();
if (string.IsNullOrEmpty(value))
{
var Object = generic[0].IsValueType
? Activator.CreateInstance(generic[0])
: string.Empty;
if (add != null)
add.Invoke(newList, new[]
{
Object
});
}
else
{
if (add != null)
add.Invoke(newList, new[]
{
Convert.ChangeType(value, generic[0])
});
}
}
property.SetValue(data, newList);
}
else if (property.PropertyType == typeof(Data) ||
property.PropertyType.BaseType == typeof(Data))
{
var pData = (Data) Activator.CreateInstance(property.PropertyType);
LoadData(pData);
property.SetValue(data, pData);
}
}
else
{
var value = GetValue(property.Name, 0);
if (!string.IsNullOrEmpty(value))
property.SetValue(data, Convert.ChangeType(value, property.PropertyType));
}
}
}
public int GetArraySize(string name)
{
var index = _table.GetColumnIndexByName(name);
return index != -1 ? _table.GetArraySizeAt(this, index) : 0;
}
public string GetName()
{
return _table.GetValueAt(0, RowStart);
}
public string GetValue(string name, int level)
{
return _table.GetValue(name, level + RowStart);
}
private bool[] LoadBoolArray(string column)
{
var array = new bool[GetArraySize(column)];
for (var i = 0; i < array.Length; i++)
{
var value = GetValue(column, i);
if (string.IsNullOrEmpty(value)) continue;
if (bool.TryParse(value, out var boolean))
array[i] = boolean;
}
return array;
}
private int[] LoadIntArray(string column)
{
var array = new int[GetArraySize(column)];
for (var i = 0; i < array.Length; i++)
{
var value = GetValue(column, i);
if (string.IsNullOrEmpty(value)) continue;
if (int.TryParse(value, out var number))
array[i] = number;
}
return array;
}
private string[] LoadStringArray(string column)
{
var array = new string[GetArraySize(column)];
for (var i = 0; i < array.Length; i++) array[i] = GetValue(column, i);
return array;
}
}
}
================================================
FILE: Source/BrawlStars/Files/CsvReader/Table.cs
================================================
using System.Collections.Generic;
using Microsoft.VisualBasic.FileIO;
namespace BrawlStars.Files.CsvReader
{
public class Table
{
private readonly List _columns;
private readonly List _headers;
private readonly List _rows;
private readonly List _types;
public Table(string path)
{
_rows = new List();
_headers = new List();
_types = new List();
_columns = new List();
using (var reader = new TextFieldParser(path))
{
reader.SetDelimiters(",");
var columns = reader.ReadFields();
foreach (var column in columns)
{
_headers.Add(column);
_columns.Add(new Column());
}
var types = reader.ReadFields();
foreach (var type in types) _types.Add(type);
while (!reader.EndOfData)
{
var values = reader.ReadFields();
if (!string.IsNullOrEmpty(values[0])) AddRow(new Row(this));
for (var i = 0; i < _headers.Count; i++) _columns[i].Add(values[i]);
}
}
}
public void AddRow(Row row)
{
_rows.Add(row);
}
public int GetArraySizeAt(Row row, int columnIndex)
{
var index = _rows.IndexOf(row) + 1;
if (index == -1) return 0;
int nextOffset;
if (index + 1 >= _rows.Count)
{
nextOffset = _columns[columnIndex].GetSize();
}
else
{
var nextRow = _rows[index + 1];
nextOffset = nextRow.Offset;
}
return Column.GetArraySize(row.Offset, nextOffset);
}
public int GetColumnIndexByName(string name)
{
return _headers.IndexOf(name);
}
public string GetColumnName(int index)
{
return _headers[index];
}
public int GetColumnRowCount()
{
return _columns.Count > 0 ? _columns[0].GetSize() : 0;
}
public Row GetRowAt(int index)
{
return _rows[index];
}
public int GetRowCount()
{
return _rows.Count;
}
public string GetValue(string name, int level)
{
var index = _headers.IndexOf(name);
return GetValueAt(index, level);
}
public string GetValueAt(int column, int row)
{
return _columns[column].Get(row);
}
}
}
================================================
FILE: Source/BrawlStars/Files/Fingerprint.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace BrawlStars.Files
{
public class Fingerprint
{
public const string Path = "GameAssets/fingerprint.json";
public Fingerprint()
{
try
{
if (File.Exists(Path))
{
Json = File.ReadAllText(Path);
Files = new List();
var json = JObject.Parse(Json);
{
Sha = json["sha"].ToObject();
Version = json["version"].ToObject().Split('.').Select(int.Parse).ToArray();
foreach (var file in json["files"]) Files.Add(file.ToObject());
Logger.Log($"Fingerprint [v{GetVersion}] loaded.",
GetType());
}
}
else
{
Console.WriteLine("The Fingerprint cannot be loaded, the file does not exist.");
Program.Exit();
}
}
catch (Exception)
{
Console.WriteLine("Failed to load the Fingerprint.");
Program.Exit();
}
}
[JsonIgnore] public string Json { get; set; }
[JsonIgnore] public int[] Version { get; set; }
[JsonIgnore] public int GetMajorVersion => Version?[0] ?? 3;
[JsonIgnore] public int GetBuildVersion => Version?[1] ?? 377;
[JsonIgnore] public int GetContentVersion => Version?[2] ?? 1;
[JsonProperty("files")] public List Files { get; set; }
[JsonProperty("sha")] public string Sha { get; set; }
[JsonProperty("version")]
public string GetVersion => $"{GetMajorVersion}.{GetBuildVersion}.{GetContentVersion}";
public void Save()
{
var json = JsonConvert.SerializeObject(this, new JsonSerializerSettings
{
DefaultValueHandling = DefaultValueHandling.Include,
Formatting = Formatting.None
});
Json = json.Replace("/", "\\/").TrimEnd();
File.WriteAllText(Path, Json);
}
}
public class Asset
{
[JsonProperty("file")] public string File { get; set; }
[JsonProperty("sha")] public string Sha { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/GameEvents.cs
================================================
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using BrawlStars.Logic;
using Newtonsoft.Json;
namespace BrawlStars.Files
{
internal static class GameEvents
{
internal static string Events_Json = string.Empty;
internal static Calendar Events_Calendar = new Calendar();
internal static string JsonPath = "Gamefiles/events.json";
internal static void Initialize()
{
if (!Directory.Exists("Gamefiles/"))
{
throw new DirectoryNotFoundException("Directory Gamefiles does not exist!");
}
if (!File.Exists(GameEvents.JsonPath))
{
throw new Exception($"{GameEvents.JsonPath} does not exist in current directory!");
}
GameEvents.Events_Json = Regex.Replace(File.ReadAllText(GameEvents.JsonPath, Encoding.UTF8), "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1");
JsonConvert.PopulateObject(GameEvents.Events_Json, GameEvents.Events_Calendar);
Console.WriteLine("Game Events successfully loaded and stored in memory.");
}
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Accessorie.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Accessorie : Data
{
public Accessorie(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string Type { get; set; }
public int ChargeCount { get; set; }
public int Cooldown { get; set; }
public string UseEffect { get; set; }
public string LoopingEffect { get; set; }
public int ActivationDelay { get; set; }
public int ActiveTicks { get; set; }
public bool StopMovement { get; set; }
public bool SetAttackAngle { get; set; }
public int AimGuideType { get; set; }
public bool ConsumesAmmo { get; set; }
public string AreaEffect { get; set; }
public string PetAreaEffect { get; set; }
public bool InterruptsAction { get; set; }
public bool AllowStunActivation { get; set; }
public bool RequirePet { get; set; }
public bool DestroyPet { get; set; }
public int RequireEnemyDistance { get; set; }
public int ShieldPercent { get; set; }
public int ShieldTicks { get; set; }
public bool SkipTypeCondition { get; set; }
public string CustomObject { get; set; }
public int CustomValue1 { get; set; }
public int CustomValue2 { get; set; }
public int CustomValue3 { get; set; }
public int CustomValue4 { get; set; }
public int CustomValue5 { get; set; }
public int CustomValue6 { get; set; }
public string MissingTargetText { get; set; }
public string TargetTooFarText { get; set; }
public string TargetAlreadyActiveText { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/AllianceBadge.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class AllianceBadge : Data
{
public AllianceBadge(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string IconSWF { get; set; }
public string IconExportName { get; set; }
public string Category { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/AllianceRole.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class AllianceRole : Data
{
public AllianceRole(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public int Level { get; set; }
public string TID { get; set; }
public bool CanInvite { get; set; }
public bool CanSendMail { get; set; }
public bool CanChangeAllianceSettings { get; set; }
public bool CanAcceptJoinRequest { get; set; }
public bool CanKick { get; set; }
public bool CanBePromotedToLeader { get; set; }
public int PromoteSkill { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/AreaEffect.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class AreaEffect : Data
{
public AreaEffect(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string ParentAreaEffectForSkin { get; set; }
public string FileName { get; set; }
public string OwnExportName { get; set; }
public string BlueExportName { get; set; }
public string RedExportName { get; set; }
public string NeutralExportName { get; set; }
public string Layer { get; set; }
public string ExportNameTop { get; set; }
public string ExportNameObject { get; set; }
public string Effect { get; set; }
public string LoopingEffect { get; set; }
public bool AllowEffectInterrupt { get; set; }
public bool ServerControlsFrame { get; set; }
public int Scale { get; set; }
public int TimeMs { get; set; }
public int Radius { get; set; }
public int Damage { get; set; }
public int CustomValue { get; set; }
public string Type { get; set; }
public bool IsPersonal { get; set; }
public string BulletExplosionBullet { get; set; }
public int BulletExplosionBulletDistance { get; set; }
public string BulletExplosionItem { get; set; }
public bool DestroysEnvironment { get; set; }
public int PushbackStrength { get; set; }
public int PushbackStrengthSelf { get; set; }
public int PushbackDeadzone { get; set; }
public bool CanStopGrapple { get; set; }
public int FreezeStrength { get; set; }
public int FreezeTicks { get; set; }
public bool ShouldShowEvenIfOutsideScreen { get; set; }
public int SameAreaEffectCanNotDamageMs { get; set; }
public bool DontShowToEnemy { get; set; }
public bool RequireLineOfSight { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Boss.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Bosses : Data
{
public Bosses(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string TID { get; set; }
public int PlayerCount { get; set; }
public int RequiredCampaignProgressToUnlock { get; set; }
public string Location { get; set; }
public string AllowedHeroes { get; set; }
public string Reward { get; set; }
public int LevelGenerationSeed { get; set; }
public string Map { get; set; }
public string Boss { get; set; }
public int BossLevel { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Campaign.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Campaign : Data
{
public Campaign(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string TID { get; set; }
public string Location { get; set; }
public string AllowedHeroes { get; set; }
public string Reward { get; set; }
public int LevelGenerationSeed { get; set; }
public string Map { get; set; }
public string Enemies { get; set; }
public int EnemyLevel { get; set; }
public string Boss { get; set; }
public int BossLevel { get; set; }
public string Base { get; set; }
public int NumBases { get; set; }
public int BaseLevel { get; set; }
public string Tower { get; set; }
public int NumTowers { get; set; }
public int TowerLevel { get; set; }
public int RequiredStars { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Card.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Card : Data
{
public Card(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string IconSWF { get; set; }
public string IconExportName { get; set; }
public string Target { get; set; }
public bool LockedForChronos { get; set; }
public int DynamicRarityStartSeason { get; set; }
public int MetaType { get; set; }
public string RequiresCard { get; set; }
public string Type { get; set; }
public string Skill { get; set; }
public int Value { get; set; }
public int Value2 { get; set; }
public int Value3 { get; set; }
public string Rarity { get; set; }
public string TID { get; set; }
public string PowerNumberTID { get; set; }
public string PowerNumber2TID { get; set; }
public string PowerNumber3TID { get; set; }
public string PowerIcon1ExportName { get; set; }
public string PowerIcon2ExportName { get; set; }
public int SortOrder { get; set; }
public bool DontUpgradeStat { get; set; }
public bool HideDamageStat { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Challenge.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Challenge : Data
{
public Challenge(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public int ChallengeId { get; set; }
public string FileName { get; set; }
public string EventAsset { get; set; }
public string BannerSWF { get; set; }
public string EventBanner { get; set; }
public string RewardItem { get; set; }
public string RewardUnlockedItem { get; set; }
public string HeaderFrame { get; set; }
public string TID { get; set; }
public string StageTID { get; set; }
public string RewardTID { get; set; }
public string CompletedTID { get; set; }
public string RewardPopupTID { get; set; }
public string BattleEndHeaderTID { get; set; }
public string BattleEndWinLabelTID { get; set; }
public string BattleEndWinTID { get; set; }
public string StartNotification { get; set; }
public string ReminderNotification { get; set; }
public string TeaserTitleTID { get; set; }
public string TeaserInfoTID { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Character.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Character : Data
{
public Character(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public bool LockedForChronos { get; set; }
public bool Disabled { get; set; }
public string ItemName { get; set; }
public string WeaponSkill { get; set; }
public string UltimateSkill { get; set; }
public string Pet { get; set; }
public int Speed { get; set; }
public int Hitpoints { get; set; }
public bool MeleeAutoAttackSplashDamage { get; set; }
public int AutoAttackSpeedMs { get; set; }
public int AutoAttackDamage { get; set; }
public int AutoAttackBulletsPerShot { get; set; }
public string AutoAttackMode { get; set; }
public int AutoAttackProjectileSpread { get; set; }
public string AutoAttackProjectile { get; set; }
public int AutoAttackRange { get; set; }
public int RegeneratePerSecond { get; set; }
public int UltiChargeMul { get; set; }
public int UltiChargeUltiMul { get; set; }
public string Type { get; set; }
public int DamagerPercentFromAliens { get; set; }
public string DefaultSkin { get; set; }
public string FileName { get; set; }
public string BlueExportName { get; set; }
public string RedExportName { get; set; }
public string ShadowExportName { get; set; }
public string AreaEffect { get; set; }
public string DeathAreaEffect { get; set; }
public string TakeDamageEffect { get; set; }
public string DeathEffect { get; set; }
public string MoveEffect { get; set; }
public string ReloadEffect { get; set; }
public string OutOfAmmoEffect { get; set; }
public string DryFireEffect { get; set; }
public string SpawnEffect { get; set; }
public string MeleeHitEffect { get; set; }
public string AutoAttackStartEffect { get; set; }
public string BoneEffect1 { get; set; }
public string BoneEffect2 { get; set; }
public string BoneEffect3 { get; set; }
public string BoneEffect4 { get; set; }
public string BoneEffectUse { get; set; }
public string LoopedEffect { get; set; }
public string LoopedEffect2 { get; set; }
public string KillCelebrationSoundVO { get; set; }
public string InLeadCelebrationSoundVO { get; set; }
public string StartSoundVO { get; set; }
public string UseUltiSoundVO { get; set; }
public string TakeDamageSoundVO { get; set; }
public string DeathSoundVO { get; set; }
public string AttackSoundVO { get; set; }
public int AttackStartEffectOffset { get; set; }
public int TwoWeaponAttackEffectOffset { get; set; }
public int ShadowScaleX { get; set; }
public int ShadowScaleY { get; set; }
public int ShadowX { get; set; }
public int ShadowY { get; set; }
public int ShadowSkew { get; set; }
public int Scale { get; set; }
public int HeroScreenScale { get; set; }
public int FitToBoxScale { get; set; }
public int EndScreenScale { get; set; }
public int GatchaScreenScale { get; set; }
public int HomeScreenScale { get; set; }
public int HeroScreenXOffset { get; set; }
public int HeroScreenZOffset { get; set; }
public int CollisionRadius { get; set; }
public string HealthBar { get; set; }
public int HealthBarOffsetY { get; set; }
public int FlyingHeight { get; set; }
public int ProjectileStartZ { get; set; }
public int StopMovementAfterMS { get; set; }
public int WaitMS { get; set; }
public string TID { get; set; }
public bool ForceAttackAnimationToEnd { get; set; }
public string IconSWF { get; set; }
public string IconExportName { get; set; }
public int RecoilAmount { get; set; }
public string Homeworld { get; set; }
public string FootstepClip { get; set; }
public int DifferentFootstepOffset { get; set; }
public int FootstepIntervalMS { get; set; }
public int AttackingWeaponScale { get; set; }
public bool UseThrowingLeftWeaponBoneScaling { get; set; }
public bool UseThrowingRightWeaponBoneScaling { get; set; }
public int CommonSetUpgradeBonus { get; set; }
public int RareSetUpgradeBonus { get; set; }
public int SuperRareSetUpgradeBonus { get; set; }
public bool CanWalkOverWater { get; set; }
public bool UseColorMod { get; set; }
public int RedAdd { get; set; }
public int GreenAdd { get; set; }
public int BlueAdd { get; set; }
public int RedMul { get; set; }
public int GreenMul { get; set; }
public int BlueMul { get; set; }
public int ChargeUltiAutomatically { get; set; }
public string VideoLink { get; set; }
public bool ShouldEncodePetStatus { get; set; }
public bool SecondaryPet { get; set; }
public int ExtraMinions { get; set; }
public int PetAutoSpawnDelay { get; set; }
public int OffenseRating { get; set; }
public int DefenseRating { get; set; }
public int UtilityRating { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Emote.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Emote : Data
{
public Emote(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public bool Disabled { get; set; }
public string FileName { get; set; }
public string ExportName { get; set; }
public string Character { get; set; }
public string Skin { get; set; }
public int Type { get; set; }
public int Rarity { get; set; }
public bool LockedForChronos { get; set; }
public int BundleCode { get; set; }
public bool IsDefaultBattleEmote { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/GameModeVariations.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class GameModeVariation : Data
{
public GameModeVariation(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public int Variation { get; set; }
public bool Disabled { get; set; }
public string TID { get; set; }
public string ChatSuggestionItemName { get; set; }
public string GameModeRoomIconName { get; set; }
public string GameModeIconName { get; set; }
public string ScoreSfx { get; set; }
public string OpponentScoreSfx { get; set; }
public string ScoreText { get; set; }
public string ScoreTextEnd { get; set; }
public int FriendlyMenuOrder { get; set; }
public string IntroText { get; set; }
public string IntroDescText { get; set; }
public string IntroDescText2 { get; set; }
public string StartNotification { get; set; }
public string EndNotification { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Global.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Global : Data
{
public Global(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public int NumberValue { get; set; }
public bool BooleanValue { get; set; }
public string TextValue { get; set; }
public string[] StringArray { get; set; }
public int[] NumberArray { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Item.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Item : Data
{
public Item(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string ParentItemForSkin { get; set; }
public string FileName { get; set; }
public string ExportName { get; set; }
public string ExportNameEnemy { get; set; }
public string ShadowExportName { get; set; }
public string GroundGlowExportName { get; set; }
public string LoopingEffect { get; set; }
public int Value { get; set; }
public int Value2 { get; set; }
public int TriggerRangeSubTiles { get; set; }
public string TriggerAreaEffect { get; set; }
public bool CanBePickedUp { get; set; }
public string SpawnEffect { get; set; }
public string ActivateEffect { get; set; }
public string SCW { get; set; }
public string SCWEnemy { get; set; }
public string Layer { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Locale.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Locale : Data
{
public Locale(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string IconSWF { get; set; }
public string IconExportName { get; set; }
public string LocalizedName { get; set; }
public int SortOrder { get; set; }
public bool Enabled { get; set; }
public string FileName { get; set; }
public bool TestLanguage { get; set; }
public string UsedSystemFont { get; set; }
public string PreferedFallbackFont { get; set; }
public string ForcedFontFullName { get; set; }
public string HelpshiftSDKLanguage { get; set; }
public string HelpshiftSDKLanguageAndroid { get; set; }
public string[] TestExcludes { get; set; }
public bool LoadAllLanguages { get; set; }
public string ChampionshipRegisterUrl { get; set; }
public string ChampionshipRegisterUrl_cn { get; set; }
public string TermsAndServiceUrl { get; set; }
public string ParentsGuideUrl { get; set; }
public string PrivacyPolicyUrl { get; set; }
public string LaserboxUrl { get; set; }
public string LaserboxUrlCN { get; set; }
public string LaserboxStagingUrl { get; set; }
public string LaserboxStagingUrlCN { get; set; }
public string LaserboxCommunityUrl { get; set; }
public string LaserboxCommunityUrlCN { get; set; }
public string LaserboxCommunityStagingUrl { get; set; }
public string LaserboxCommunityStagingUrlCN { get; set; }
public string LaserboxLangCode { get; set; }
public string FaqUrl_ios { get; set; }
public string FaqUrl_ios_cn { get; set; }
public string FaqUrl_android { get; set; }
public string FaqUrl_android_cn { get; set; }
public string ContactUsUrl_ios { get; set; }
public string ContactUsUrl_ios_cn { get; set; }
public string ContactUsUrl_android { get; set; }
public string ContactUsUrl_android_cn { get; set; }
public bool LaserboxEnabled { get; set; }
public bool IsRTL { get; set; }
public bool isNounAdj { get; set; }
public bool SeparateThousandsWithSpaces { get; set; }
public string SelfHelpUrl { get; set; }
public bool FallbackToHelpshift { get; set; }
public bool FallbackToHelpshiftCN { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Resource.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Resource : Data
{
public Resource(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string TID { get; set; }
public string IconSWF { get; set; }
public string CollectEffect { get; set; }
public string IconExportName { get; set; }
public string Type { get; set; }
public string Rarity { get; set; }
public bool PremiumCurrency { get; set; }
public int TextRed { get; set; }
public int TextGreen { get; set; }
public int TextBlue { get; set; }
public int Cap { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Skill.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Skill : Data
{
public Skill(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string BehaviorType { get; set; }
public bool CanMoveAtSameTime { get; set; }
public bool Targeted { get; set; }
public bool CanAutoShoot { get; set; }
public bool FaceMovement { get; set; }
public int Cooldown { get; set; }
public int ActiveTime { get; set; }
public int CastingTime { get; set; }
public int CastingRange { get; set; }
public int RangeVisual { get; set; }
public int RangeInputScale { get; set; }
public int MaxCastingRange { get; set; }
public int ForceValidTile { get; set; }
public int RechargeTime { get; set; }
public int MaxCharge { get; set; }
public int Damage { get; set; }
public int MsBetweenAttacks { get; set; }
public int Spread { get; set; }
public int AttackPattern { get; set; }
public int NumBulletsInOneAttack { get; set; }
public bool TwoGuns { get; set; }
public bool ExecuteFirstAttackImmediately { get; set; }
public int ChargePushback { get; set; }
public int ChargeSpeed { get; set; }
public int ChargeType { get; set; }
public int NumSpawns { get; set; }
public int MaxSpawns { get; set; }
public bool BreakInvisibilityOnAttack { get; set; }
public int SeeInvisibilityDistance { get; set; }
public bool AlwaysCastAtMaxRange { get; set; }
public string Projectile { get; set; }
public string SummonedCharacter { get; set; }
public string AreaEffectObject { get; set; }
public string AreaEffectObject2 { get; set; }
public string SpawnedItem { get; set; }
public string IconSWF { get; set; }
public string IconExportName { get; set; }
public string LargeIconSWF { get; set; }
public string LargeIconExportName { get; set; }
public string ButtonSWF { get; set; }
public string ButtonExportName { get; set; }
public string AttackEffect { get; set; }
public string UseEffect { get; set; }
public string EndEffect { get; set; }
public string LoopEffect { get; set; }
public string LoopEffect2 { get; set; }
public string ChargeMoveSound { get; set; }
public bool MultiShot { get; set; }
public bool SkillCanChange { get; set; }
public bool ShowTimerBar { get; set; }
public string SecondaryProjectile { get; set; }
public int ChargedShotCount { get; set; }
public int DamageModifier { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Files/Logic/Skin.cs
================================================
using BrawlStars.Files.CsvHelpers;
using BrawlStars.Files.CsvReader;
namespace BrawlStars.Files.Logic
{
public class Skin : Data
{
public Skin(Row row, DataTable datatable) : base(row, datatable)
{
LoadData(this, GetType(), row);
}
public string Name { get; set; }
public string Conf { get; set; }
public int Campaign { get; set; }
public int ObtainType { get; set; }
public int ObtainTypeCN { get; set; }
public string PetSkin { get; set; }
public string PetSkin2 { get; set; }
public int CostLegendaryTrophies { get; set; }
public int CostGems { get; set; }
public string TID { get; set; }
public string ShopTID { get; set; }
public string Features { get; set; }
public string CommunityCredit { get; set; }
public string MaterialsFile { get; set; }
public string BlueTexture { get; set; }
public string RedTexture { get; set; }
public string BlueSpecular { get; set; }
public string RedSpecular { get; set; }
}
}
================================================
FILE: Source/BrawlStars/GameAssets/database.sql
================================================
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE IF NOT EXISTS `player` (
`Id` bigint(20) NOT NULL,
`Trophies` bigint(20) NOT NULL,
`Language` text CHARACTER SET utf8mb4 NOT NULL,
`FacebookId` text CHARACTER SET utf8mb4,
`Home` text CHARACTER SET utf8mb4 NOT NULL,
`Sessions` text CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `clan` (
`Id` bigint(20) NOT NULL,
`Trophies` bigint(20) NOT NULL,
`RequiredTrophies` bigint(20) NOT NULL,
`Type` bigint(20) NOT NULL,
`Region` text CHARACTER SET utf8mb4 NOT NULL,
`Data` text CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
================================================
FILE: Source/BrawlStars/GameAssets/fingerprint.json
================================================
{"files":[{"file":"badge\/default.edges","sha":"5a0f1a2906a37ff6ffde2b5ae328b88c6860493e"},{"file":"badge\/default_diffuse.png","sha":"20d078856a32bf496f1ecd40ce5dd90dff9daf65"},{"file":"badge\/default_diffuse_back.png","sha":"8068311784a41627032f1b4b059a7c1faaf36381"},{"file":"badge\/default_diffuse_edge.png","sha":"8068311784a41627032f1b4b059a7c1faaf36381"},{"file":"badge\/default_glossiness.png","sha":"614dd3e27c25dd4c9ae31d3abd7759304c239890"},{"file":"badge\/default_glossiness_back.png","sha":"865c7d52803440ce2c6896758a817b964459f239"},{"file":"badge\/default_glossiness_edge.png","sha":"12f5c636cb99cde7cf1869f4781166d3864df9af"},{"file":"badge\/default_normal.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_normal_back.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_normal_edge.png","sha":"836c2439436055579f860a9a354c09c99c892104"},{"file":"badge\/default_specular.png","sha":"fcb9867d8c156ad035b4aa6b0b7d4190c10d37e2"},{"file":"badge\/default_specular_back.png","sha":"059c0014f39246cb05adf0dc54b51df866fe6f16"},{"file":"badge\/default_specular_edge.png","sha":"fcb9867d8c156ad035b4aa6b0b7d4190c10d37e2"},{"file":"csv_client\/animations.csv","sha":"97a9f634eb0911654753c2b72b110bd7f88c64f9"},{"file":"csv_client\/billing_packages.csv","sha":"eec119b6a7bd84101b50d005b72421146fbe9880"},{"file":"csv_client\/client_globals.csv","sha":"94c684a7333aea79fb1ad8cae14dac9247b1f31f"},{"file":"csv_client\/color_gradients.csv","sha":"79eb0edef89f0a38cb0e84d7a3c8588a4d43ec8e"},{"file":"csv_client\/credits.csv","sha":"4a002d5b8187acc72a8742cea4320582676d689b"},{"file":"csv_client\/effects.csv","sha":"267eb5d185c577317122d8374627b8a308a40472"},{"file":"csv_client\/faces.csv","sha":"a21365823c0d52094ddc7d8169954129937d1818"},{"file":"csv_client\/health_bars.csv","sha":"ba83fb73bcd710ed9bd376d77991dc0d35f6b2ba"},{"file":"csv_client\/hints.csv","sha":"86f03fdedda29ba03fe9881bf22ec97984b30b4e"},{"file":"csv_client\/links.csv","sha":"8fcc280ca8ec953a05e4b77d8d349db9d1c875fd"},{"file":"csv_client\/local_notifications.csv","sha":"f2b55e772aac69eac430d178203254d2274dad4e"},{"file":"csv_client\/music.csv","sha":"9c2b20e2efeaef89931b4dce14cba639bed9ae8f"},{"file":"csv_client\/particle_emitters.csv","sha":"250f6099f558cf46ff7a08a3fe4dd0c46937dd15"},{"file":"csv_client\/particle_emitters.json","sha":"2d242c47a2e20692ed447fd79bf85eb6f0ba6d36"},{"file":"csv_client\/shop_items.csv","sha":"8d5a2e4343917054b7b940510b1429f4de771f40"},{"file":"csv_client\/sounds.csv","sha":"772b8874a73e1f4aceea0cf37539f4c0e6974e3f"},{"file":"csv_client\/tutorial.csv","sha":"a057d703932c5f71c20552132115171d3c820e0f"},{"file":"csv_logic\/accessories.csv","sha":"0f9114b9389803990bd29ac1184450bd3888deec"},{"file":"csv_logic\/alliance_badges.csv","sha":"0f05e2a6aa752bcfbf1425348bfcf2d5dbbdd0be"},{"file":"csv_logic\/alliance_roles.csv","sha":"bc11c0632058700168d812c2cd07870624584710"},{"file":"csv_logic\/area_effects.csv","sha":"8406d56c4b9df0be9de7de4b26a954cdaed3662a"},{"file":"csv_logic\/bosses.csv","sha":"123c739bb4598cf1d76a00e5e4a1fec39ffaaf2f"},{"file":"csv_logic\/campaign.csv","sha":"2fb30b9c23dd7b1e87ef009f26453bf0e2f93c60"},{"file":"csv_logic\/cards.csv","sha":"1870e1ab143c3bcac574a93f86a7a69fb115e347"},{"file":"csv_logic\/challenges.csv","sha":"9cfce47b2b7f6a260d622f9105fdafbaa438a633"},{"file":"csv_logic\/characters.csv","sha":"7a24a10de47cd3ba275d5d0ab99368d2575abbd1"},{"file":"csv_logic\/game_mode_variations.csv","sha":"a8fa53263b80c7f0aff820a8d0fc8851b11c210c"},{"file":"csv_logic\/globals.csv","sha":"cb4f4fae4903787e20db0f5fca9734c4e1be9bb9"},{"file":"csv_logic\/items.csv","sha":"2b2dc75dec8c01f92e0325ce0903c289e65383cc"},{"file":"csv_logic\/locales.csv","sha":"1ae24282c0d1ff23717e7d0f12b5ae2c0718cde5"},{"file":"csv_logic\/location_themes.csv","sha":"fac809e9fff14cb86d62854af1a0db889f7a166a"},{"file":"csv_logic\/locations.csv","sha":"5927be4b6c8894d2d5077cea7eab4e14b877b9da"},{"file":"csv_logic\/map_blocks.csv","sha":"411c42c91071e15f00592f5f664477457e89df45"},{"file":"csv_logic\/maps.csv","sha":"b7654719c21e354ad4cf46d7d3e9087f94fdfbe3"},{"file":"csv_logic\/messages.csv","sha":"1f7ab8deab0544a2e9570c37a962f10ddd47feb5"},{"file":"csv_logic\/milestones.csv","sha":"216e850f4798f66f6c1aa895b1014a4a0cdeeef2"},{"file":"csv_logic\/name_colors.csv","sha":"a8282b1fad812d947e1b0b665d7821f46e9dc57e"},{"file":"csv_logic\/pins.csv","sha":"24ef753b5dbcc9475d47ac69edebeb09b521d777"},{"file":"csv_logic\/player_thumbnails.csv","sha":"574e74f15051a8bde30cd58335487a2cd1270aed"},{"file":"csv_logic\/projectiles.csv","sha":"42e4d0e1aa992b4b2745c20cf6aaf5f6c0c910dd"},{"file":"csv_logic\/regions.csv","sha":"50ae49e7358c1c05df74c6ee97be5ffe870d4258"},{"file":"csv_logic\/resources.csv","sha":"cd2d939e64de2fcf7b9c2dd1644931cbc91c1df0"},{"file":"csv_logic\/skills.csv","sha":"3bd4a65394ae36f64913c6e24d7c7fe0a46dcba6"},{"file":"csv_logic\/skin_confs.csv","sha":"65808d43e976aabdc6e1e8fd4b7ef671edd7ee4d"},{"file":"csv_logic\/skins.csv","sha":"70247ce2cf0f61b9a588ed6f27c5e39c3c689712"},{"file":"csv_logic\/skinsrarity.csv","sha":"cc59933ab880cabfa54aca22a84075e55f4df8e9"},{"file":"csv_logic\/themes.csv","sha":"88fbc84a28aac76c182cbf164c8378dc938de4dc"},{"file":"csv_logic\/tiles.csv","sha":"ac783470532750f2fd56134c5fa882ac3d20443a"},{"file":"font\/Brawl_Stars_Deputy.otf","sha":"7bf2c6c950542f35a7359c8676b8296d7255b9c8"},{"file":"font\/LilitaOne-Regular.ttf","sha":"70b4f26a4787952f7f45290cd963049ebd5a6501"},{"file":"font\/NotoNaskhArabic-Bold.ttf","sha":"9515989125309566cf2c4a5a84d7e498f853939f"},{"file":"font\/Pusia-Bold.otf","sha":"47699042537a908ad1187dedcd71d618c6651f31"},{"file":"font\/debug.fnt","sha":"719870d4573b1267eba821b4a5498b5505139ce9"},{"file":"font\/debug.png","sha":"59d01d0c4b1e3566e355422df4599462b1ace9fa"},{"file":"image\/range.png","sha":"0d95f0d1131655db9f2c5841370eb05f762508b9"},{"file":"localization\/ar.csv","sha":"54e518aeb4b684e5ea10698ca269e17c9339fdd9"},{"file":"localization\/cn.csv","sha":"4af6ef2ee032a1dfd8f1b607f0eeb92aa9aec41e"},{"file":"localization\/cnt.csv","sha":"65d1903dbd9f49b4708478f0b98228915dbbe354"},{"file":"localization\/de.csv","sha":"8bf6d9755a67c863e6c7a2ab3a00e4b4ec111ab8"},{"file":"localization\/es.csv","sha":"5a19ff4f9e81ebdb4072c82a699fd035e8141529"},{"file":"localization\/fi.csv","sha":"c99d65961375a175fec5f37aeb2fdeaec0ec9404"},{"file":"localization\/fr.csv","sha":"aff490986f4bf9510f46a6f0c1cc9eed6ffcaf83"},{"file":"localization\/he.csv","sha":"910be12d0798ba633c32aa3f0fc73fe9d6c9fa02"},{"file":"localization\/id.csv","sha":"2b49e70f73542ad133a585e01ee2b529ba99d4b0"},{"file":"localization\/it.csv","sha":"919cca7d7c4438ea86cf4b5b258ef9e8476bae81"},{"file":"localization\/jp.csv","sha":"1b15899eb166604eeee7fff88209649edc61b821"},{"file":"localization\/kr.csv","sha":"c11f6179ce9bf2410f2c729ce6f43527552bb246"},{"file":"localization\/ms.csv","sha":"6eed2ce434a6cbf13151e04ee6442129ce9a1f9b"},{"file":"localization\/nl.csv","sha":"1629a376db4985f82843df8b989f75574bc943e1"},{"file":"localization\/pl.csv","sha":"6357c08144a501b68350a37b3c9ebf48b82df989"},{"file":"localization\/pt.csv","sha":"abab9e920e1d0a7fb8a643c548adb9830a021269"},{"file":"localization\/ru.csv","sha":"4a532f3f6a212d11d131ba39c2b8d4bbbdb08767"},{"file":"localization\/texts.csv","sha":"1c8eeaa2e1e12ea488fdb1abaca522de11fdcae3"},{"file":"localization\/texts_patch.csv","sha":"5ae0a52e22a17b41dc19f7bf8e4456c0f3a021f4"},{"file":"localization\/th.csv","sha":"d116a9e4ba08d148df9d9876d1b56e9e235d799b"},{"file":"localization\/tr.csv","sha":"f78e6c7c2e9c471840c3a33280803965c78023f2"},{"file":"localization\/vi.csv","sha":"e6a07ca46a780bac3270cc5ceb5b613d3738492f"},{"file":"music\/Slugfest_ingame_01.ogg","sha":"84536637053872c4564d1a8e37019852b7900568"},{"file":"music\/Slugfest_ingame_02.ogg","sha":"cc0a2c5987426529f597ce9501e198e8066acfd3"},{"file":"music\/Slugfest_ingame_03.ogg","sha":"6c4a4a372894f724113308023fbe89e95818cf9d"},{"file":"music\/Slugfest_ingame_04.ogg","sha":"61818f7237a7b130a407ae9f1e6194d3404d4fc9"},{"file":"music\/Slugfest_ingame_06.ogg","sha":"7011e1cb2c99044fa575d3ca7e773c4ad39f26f3"},{"file":"music\/Slugfest_ingame_07.ogg","sha":"cd989185da1e385ebef4b856314e9ce69a70f941"},{"file":"music\/Slugfest_ingame_08.ogg","sha":"b290291a1b8000d3a58551f7601079c08a64490d"},{"file":"music\/brawl_goal_02.ogg","sha":"aac9feed6d489a22310174b5fe9702acdd9b9bdd"},{"file":"music\/brawl_other_goal_01.ogg","sha":"275ac274b52ed6fcb394b4b717d1d6c1d6fb6bb7"},{"file":"music\/brawl_panic_time_01.ogg","sha":"5f44a9374743b53d898796def9283fc330d5b0f8"},{"file":"music\/brawl_stars_menu_01.ogg","sha":"2a33604debf7d0a4eb824b3d8bef5181265a194f"},{"file":"music\/brawl_xmas_flag_lose_01.ogg","sha":"988ac2d4d2dd0c6a3a7bcb3c7710cff53f441930"},{"file":"music\/brawl_xmas_flag_win_01.ogg","sha":"81e6aee2f6f49ea2ace32cb510ac8a33fd22c862"},{"file":"music\/brawlcade_ingame_01.ogg","sha":"e5ded36f07e34cd816690d275b87e67ff2721ca1"},{"file":"music\/brawlcade_ingame_02.ogg","sha":"9ebd3ec78af1016dd9c9a17aaf882b82ee187796"},{"file":"music\/brawloween_ingame_01.ogg","sha":"6dec47fd7db80ba012810f78ab71fe90027421be"},{"file":"music\/brawloween_ingame_02.ogg","sha":"7dfd5c9bfcd13cd988578f7cc77a3c186bb8641e"},{"file":"music\/draw_screen_loop_4x_01.ogg","sha":"5688998114012870d73031daf5a0be1457afadf7"},{"file":"music\/footbrawl_ingame_muzak_01.ogg","sha":"09f1fb61738a8f887ab8fa8cd74a3ed9e21b61a1"},{"file":"music\/footbrawl_ingame_muzak_02.ogg","sha":"b4a7c4dc7d28e3f1a0549245c00643765496d907"},{"file":"music\/footbrawl_menu_muzak_01.ogg","sha":"4fef8ab01465b12ce2f99e79e1fce8441ab16ad8"},{"file":"music\/laser_game_draw_01.ogg","sha":"9aac08c3a8c985b9803dc858701c93b6ae3cc8fd"},{"file":"music\/lose_screen_loop_4x_01.ogg","sha":"75413ba39a23526ceb6d4a490a4979a5091118f5"},{"file":"music\/pirate_brawl_ingame_01.ogg","sha":"75c4949ad8fea98924fe10059817ef961c31d435"},{"file":"music\/pirate_brawl_ingame_02.ogg","sha":"77f8a03b78ae1bbde73b94534500c3b80ff51502"},{"file":"music\/retro_brawl_ingame_01.ogg","sha":"0b376465139f10277cd641a5c173bc2a73a2b5d4"},{"file":"music\/retro_brawl_ingame_02.ogg","sha":"a55e911bbc55313b4a6861908d25fe156609574a"},{"file":"music\/slugfest_game_lost_01.ogg","sha":"a9eac8476f2d81e946d2684b73001956f12c2a56"},{"file":"music\/slugfest_game_won_01.ogg","sha":"c1b1e00abeea9f80fbba6ce8887f1529f98ec3ce"},{"file":"music\/win_screen_loop_4x_01.ogg","sha":"04edbe5ff272d24c878c6a6498376c807b60b3c0"},{"file":"sc\/background_basic.sc","sha":"3fd9064fad7888eb44fbbf973895d4faab5872ee"},{"file":"sc\/background_basic_tex.sc","sha":"81f42c70ed2f07d8f5065fc139a00a3e13df75ab"},{"file":"sc\/background_brawlidays.sc","sha":"440930548d135a83bfb46986acdccb861850de3a"},{"file":"sc\/background_brawlidays_tex.sc","sha":"c856e971e1b8b0f54e8afc5f5585707b7613498f"},{"file":"sc\/background_brawloween.sc","sha":"5d3a6e3442e6b8a24b4b825e0062b3c400ca2d31"},{"file":"sc\/background_brawloween_tex.sc","sha":"b55a199a3c521ef70bf3193a6e960b82f021f0ad"},{"file":"sc\/background_golden_week.sc","sha":"ee23c78b6a5af1c4628ef4833c26521f7df65c42"},{"file":"sc\/background_golden_week_tex.sc","sha":"5cec1aa8f49d3bf6c802dd44c863eeb8622ca9b0"},{"file":"sc\/background_lny.sc","sha":"ea48d33f35f65367d580c6378c0b39003e7491bd"},{"file":"sc\/background_lny_20.sc","sha":"0b5e915ff4c99acbcd6f665715b84f0761c6e6ee"},{"file":"sc\/background_lny_20_tex.sc","sha":"f531595dedb8842b3d3309265746a06fac0a330b"},{"file":"sc\/background_lny_tex.sc","sha":"bfd62ea364d7ab4240cc9039a59d8d7b9bd2b050"},{"file":"sc\/background_mecha.sc","sha":"95d2038cea9b2e5351dc5ce1a06611ba568bddc3"},{"file":"sc\/background_mecha_tex.sc","sha":"f6b349210caf68982290f1fcfeace0623287db57"},{"file":"sc\/background_psg.sc","sha":"9ff368975d403b9dbd07bad843f0701d29403403"},{"file":"sc\/background_psg_tex.sc","sha":"34db4a6f71ba06ef3a4eb9fc4ac075fad78a1a32"},{"file":"sc\/background_retropolis.sc","sha":"cf6d09df4c862153962fd991531d3e961d0562d0"},{"file":"sc\/background_retropolis_tex.sc","sha":"0d3e7443440a36bc19831cec36c33352a514c965"},{"file":"sc\/characters.sc","sha":"c83f1eb247db23854d433b8c9e309c2d42032c59"},{"file":"sc\/characters_tex.sc","sha":"ee1b4aa109ed24f12d94071034f29605ea0c44bd"},{"file":"sc\/debug.sc","sha":"72be5665969f8300b8b45574988f787b747a4e68"},{"file":"sc\/debug_tex.sc","sha":"689c009488f4d31739dc5cc374f4f3fcf9bcbc37"},{"file":"sc\/effects.sc","sha":"5d0eaa69ebbf34b61f0d1a9be5e2b1dd493f2465"},{"file":"sc\/effects_brawler.sc","sha":"11e4d2f2b812e707f6ae2cd2fb3e086aa1ce6151"},{"file":"sc\/effects_brawler_tex.sc","sha":"98401f574c2a894d95418b047be9e460389a7350"},{"file":"sc\/effects_tex.sc","sha":"19fbd12b0588a1053737125123639cb91431546d"},{"file":"sc\/events.sc","sha":"35815b4a0a43c61213043b97a25393956f1349e3"},{"file":"sc\/events_tex.sc","sha":"47c071a3aa60083d29d32843f7c12b07f306f618"},{"file":"sc\/level.sc","sha":"0b888928370df8719e20d6741d07bc470393ea60"},{"file":"sc\/level_tex.sc","sha":"f6ce04cbfabe5c4d07a9f58f30c488fa1c948d00"},{"file":"sc\/loading.sc","sha":"aa8751e9990bdc0c31e27db30bc2081edd6627d6"},{"file":"sc\/loading_tex.sc","sha":"9e933c353fb7723a93bdebe76e23d4938a6b126d"},{"file":"sc\/supercell_id.sc","sha":"eca3334e42442b8b683e94fa32361accc190c48b"},{"file":"sc\/supercell_id_tex.sc","sha":"1cafc6c921773d9e287416c7e66e66a608acbfc8"},{"file":"sc\/ui.sc","sha":"50f9e96715ed3e386af055d31de6d226dd198e0b"},{"file":"sc\/ui_tex.sc","sha":"02a4045106eb9d049b0635b3b21cf449bd974356"},{"file":"sc3d\/8bit_attack.scw","sha":"ebaaaf747cee0b271ec875328a2951209f9aef77"},{"file":"sc3d\/8bit_base_cam.scw","sha":"c9f551f476f6166c7d79fc401e1429ce1b9df4e2"},{"file":"sc3d\/8bit_classic_geo.scw","sha":"5c78084a97267af4bb57054e3e924fcac07245aa"},{"file":"sc3d\/8bit_classic_tex.ktx","sha":"166ac8f0eaa7754a8138d0c880efac1b6b91cf16"},{"file":"sc3d\/8bit_classic_tex.pvr","sha":"a605dabd4a00be1d19ceec5a7354be7981c3334e"},{"file":"sc3d\/8bit_geo.scw","sha":"7972d9b1cf40e3d8c55000df4d5172b819c61846"},{"file":"sc3d\/8bit_idle.scw","sha":"0f798a08dda07a06f5755838e3e6603a3cb87123"},{"file":"sc3d\/8bit_lose.scw","sha":"4a2eaadc84497c10c4985aed636b3fe8b8a8cdd1"},{"file":"sc3d\/8bit_pushback.scw","sha":"c137a08aecf0d7ec908ffb6e0acccb9caaa1b332"},{"file":"sc3d\/8bit_reload.scw","sha":"7e0b846ad6395920549f74450e66f5df8a84343a"},{"file":"sc3d\/8bit_tex.ktx","sha":"6a40bdf0cccb6f5f3de2ce65aceb044e21f15c20"},{"file":"sc3d\/8bit_tex.pvr","sha":"d767151d0b37e1f36d68669b2278280047b86c45"},{"file":"sc3d\/8bit_turret_geo.scw","sha":"dc658d917f962bc86dfae6c48199409572b1262e"},{"file":"sc3d\/8bit_turret_idle.scw","sha":"a2346660ac571e50e9a1cc03ff84531252faeaad"},{"file":"sc3d\/8bit_turret_spawn.scw","sha":"6b274563ec6e58149295eb04d709187c2540d946"},{"file":"sc3d\/8bit_virus_attack.scw","sha":"01e4cc1454ecf7d0dfe9030ee9f3823575a54a8c"},{"file":"sc3d\/8bit_virus_geo.scw","sha":"49ddd4bc1f9bc583fb7c353fc6ad4a187cb938f5"},{"file":"sc3d\/8bit_virus_idle.scw","sha":"61d8f5db5c6ebab5e6f820926cb6b19d895473bf"},{"file":"sc3d\/8bit_virus_lose.scw","sha":"adea06a51e8da07fc1fd331614e16bab61c4140a"},{"file":"sc3d\/8bit_virus_portrait.scw","sha":"fe49348762e6a513f3e2f0896ea624e496d660c3"},{"file":"sc3d\/8bit_virus_reload.scw","sha":"d57273406d012e0c11567d9a73fefceab3a2beaa"},{"file":"sc3d\/8bit_virus_tex.ktx","sha":"37c7e6a99ae83ef610c37a5f5397b9d9e4791b4a"},{"file":"sc3d\/8bit_virus_tex.pvr","sha":"d7b74c6b07a509ee65267d6ec5037de87792c9ca"},{"file":"sc3d\/8bit_virus_turret_geo.scw","sha":"22abed84d0c66e6741d2619c418b9d2fc1ed9e9f"},{"file":"sc3d\/8bit_virus_walk.scw","sha":"4bc6aa01ae8d852c571b7f17d246afcc527bb3d3"},{"file":"sc3d\/8bit_virus_win.scw","sha":"3202eff355c197d4e158cb63c3576e23a43233dc"},{"file":"sc3d\/8bit_walk.scw","sha":"a2c6fea8243fc4be722d020e5af60129164ed92a"},{"file":"sc3d\/8bit_win.scw","sha":"90ff48c691d81b26c3f6c570a07ff0880e692516"},{"file":"sc3d\/arcade_002_ulti.ktx","sha":"0ca5627e62a211875307f048632189c741ca9f32"},{"file":"sc3d\/arcade_002_ulti.pvr","sha":"633fe8aec3f2981bc2c0ed3e80ea918dc5e68a41"},{"file":"sc3d\/arcade_002_ulti.scw","sha":"b0b2abb7dfb903335171fc145df83c012325b696"},{"file":"sc3d\/arcade_def_ulti.scw","sha":"63e5301a5d3969cb4a125b0c35d4233ac4570da8"},{"file":"sc3d\/arcade_def_ulti_blue.ktx","sha":"b13430663fb50832f3973faf3819de28e9e0a508"},{"file":"sc3d\/arcade_def_ulti_blue.pvr","sha":"4acd45ed45b685cae2a99f6bb706b2c4e2bef1cb"},{"file":"sc3d\/arcade_def_ulti_red.ktx","sha":"dcb0cda8e677ee595581d1e34904181e87c2fcf3"},{"file":"sc3d\/arcade_def_ulti_red.pvr","sha":"c73e17e1283afff04aa8da67d6310601e18b8590"},{"file":"sc3d\/arcade_def_ulti_red.scw","sha":"c39da976dc7ba9d3f59c2f16cfd25f276bcb3d34"},{"file":"sc3d\/arena_blocker.scw","sha":"b80e6bb154cf1ec19894f463f439ee9cfe673695"},{"file":"sc3d\/ball_cactus.scw","sha":"b835c254af11e5a4729d7a0c000d671af477d2c4"},{"file":"sc3d\/ball_tex.ktx","sha":"e24c7d51573d4ad4ee113a59d6bc7c695ed13aa8"},{"file":"sc3d\/ball_tex.pvr","sha":"8551cf7da1cfd195f37ce848b57f3a154d0bc8c9"},{"file":"sc3d\/barkeep_attack1.scw","sha":"d7e7b0e6fccfd46d581bad1877a5abee518e07f9"},{"file":"sc3d\/barkeep_geo.scw","sha":"3696699d735d8b852ba11a67739ebaf76c94457e"},{"file":"sc3d\/barkeep_gold_tex.ktx","sha":"e6abc38ea8e6afd23c3ff0148a36e2fa574fe446"},{"file":"sc3d\/barkeep_gold_tex.pvr","sha":"1a790040687efb9571b73b2c9d96f7e91bc03812"},{"file":"sc3d\/barkeep_idle.scw","sha":"f1df13f0478521c37505a2190308d86592a44282"},{"file":"sc3d\/barkeep_lose1.scw","sha":"cb5404f0438566e85dc25704f644c321a1ea00a4"},{"file":"sc3d\/barkeep_loseloop1.scw","sha":"da8b93f1704b6dee422097752b635c20ce918619"},{"file":"sc3d\/barkeep_pushback.scw","sha":"307ca1bb066352c11b5a120834344755d0ded219"},{"file":"sc3d\/barkeep_recoil.scw","sha":"d332270009ece9c2f42c88ebbc5a5c013878cbcd"},{"file":"sc3d\/barkeep_reload.scw","sha":"627c7af92441b135ca3099a398a9ac8855e979c3"},{"file":"sc3d\/barkeep_tex.ktx","sha":"c8f023004e788cea866f53e78a72780d63b9ad13"},{"file":"sc3d\/barkeep_tex.pvr","sha":"fae8a6efc8dca887553bba0429187b3dc398a29b"},{"file":"sc3d\/barkeep_walk.scw","sha":"c9e8207e75c55b830e8f5ef2b5f357ecc7ed49eb"},{"file":"sc3d\/barkeep_win1.scw","sha":"5922e70251b55f373cbeac46725108d778684178"},{"file":"sc3d\/barkeep_winidleloop.scw","sha":"1a7449ad7880758b74b0e242086b8e0b8657fcb7"},{"file":"sc3d\/barkeep_winloop1.scw","sha":"fa6e89d263096ec29c39b3176a0fae74eea7ed73"},{"file":"sc3d\/barley_005_atk_blue.ktx","sha":"050723020a32551d64961d05d123ff1dc02e80e0"},{"file":"sc3d\/barley_005_atk_blue.pvr","sha":"c62b6b1ac3075a16a7fc8c29873e07284e87f92b"},{"file":"sc3d\/barley_005_atk_blue.scw","sha":"e7e089e1f4f78ed6066da632ba75a8c7b8a6a34f"},{"file":"sc3d\/barley_005_atk_red.ktx","sha":"6622d061753c91d8b2f4f7630980d95ef1ce32e7"},{"file":"sc3d\/barley_005_atk_red.pvr","sha":"2f00b0acd9215e27cc5a6a96d127d552e5998941"},{"file":"sc3d\/barley_005_atk_red.scw","sha":"25f02f486e1100c9b9d9f137ae2a9c63a54dea07"},{"file":"sc3d\/barley_banker_attack1.scw","sha":"8d5318d3552740856c8dd5097b601c4f711493bb"},{"file":"sc3d\/barley_banker_geo.scw","sha":"148fbd72e5034b3201f8db7bc7a4c4a5457e22ed"},{"file":"sc3d\/barley_banker_idle.scw","sha":"51c35f99f4372833c037a97c9a6626ec6c7de76a"},{"file":"sc3d\/barley_banker_knockback.scw","sha":"0420e4359360a0c16d6822529c5b01b617f4ce7c"},{"file":"sc3d\/barley_banker_lose1.scw","sha":"3f624f14ded8b5517b88126d1123f4bf149e48d5"},{"file":"sc3d\/barley_banker_reload.scw","sha":"ac6cd9d373bcbb9437f8ee3e9fbd157f4cbfaf6c"},{"file":"sc3d\/barley_banker_tex.ktx","sha":"0281d1af7e852d7f5b169cd7a84f43d6e0d46c76"},{"file":"sc3d\/barley_banker_tex.pvr","sha":"058ed374887b54f8ad2ed7a9fb1fed38c618ad56"},{"file":"sc3d\/barley_banker_walk.scw","sha":"1c23ebe71189ee94d00ce292b4489e6e76bc477a"},{"file":"sc3d\/barley_banker_win1.scw","sha":"46eb82a9a6679e223dc3b9a4dec0500770fa925c"},{"file":"sc3d\/barley_banker_winidleloop.scw","sha":"849d71d79256a60b1e11ff33775243e60663d227"},{"file":"sc3d\/barley_base_cam.scw","sha":"51d2aa73d4a56f9c53b5b292c7c020966b6868f8"},{"file":"sc3d\/barley_lumberjack_attack.scw","sha":"bdf75b032c426051a9071c01ac9df4a4dae39a9b"},{"file":"sc3d\/barley_lumberjack_geo.scw","sha":"21088830f9f062f0e76b8f545b6fedd03bd4caeb"},{"file":"sc3d\/barley_lumberjack_idle.scw","sha":"de22c50920d7736cea581635df25f481068e79b5"},{"file":"sc3d\/barley_lumberjack_lose.scw","sha":"1d27cf4c8715cc4653118369c3e2e56c1b9522cc"},{"file":"sc3d\/barley_lumberjack_pushback.scw","sha":"f62984d7ab47487f588088d77975c10fd1bdaabe"},{"file":"sc3d\/barley_lumberjack_run.scw","sha":"de6e2ed16e9d0fb0d0a449df52c4151d942d12bb"},{"file":"sc3d\/barley_lumberjack_tex.ktx","sha":"c01bef33e9a2061ac6579bbeccbce4a7641b65a4"},{"file":"sc3d\/barley_lumberjack_tex.pvr","sha":"546da1ad86033bde04a8715a7420c40d52e37144"},{"file":"sc3d\/barley_lumberjack_win.scw","sha":"4439a542acf95c0b78bff58c93a3c730b85c0548"},{"file":"sc3d\/barley_ms_attack.scw","sha":"9d38789f3f4b9de7c781534a39b6fcebafa2be0f"},{"file":"sc3d\/barley_ms_geo.scw","sha":"f3100109268e5db1f50f1f03f54e6fda3c59b1dc"},{"file":"sc3d\/barley_ms_idle.scw","sha":"db6363940b2c10edb62540f87a3530b2f66bdfdc"},{"file":"sc3d\/barley_ms_lose.scw","sha":"9d3074b6191b74a68dfbf2724b58c3aafce43177"},{"file":"sc3d\/barley_ms_tex.ktx","sha":"f72b38ab3a789e078e52a415a2ccb1b4c2813c61"},{"file":"sc3d\/barley_ms_tex.pvr","sha":"bca170751330d1e90df8f291463b50fb1d1c0e03"},{"file":"sc3d\/barley_ms_walk.scw","sha":"c0bc1d25ba1bca0933b73ff784e431a5dedd787a"},{"file":"sc3d\/barley_ms_win.scw","sha":"59323cb32b88149c58e65a9e313441fb05c663cd"},{"file":"sc3d\/barley_pushback.scw","sha":"865e9743e1a45cf63a42f7dd904e394523a860af"},{"file":"sc3d\/barley_tex.ktx","sha":"58a8f57bab64649a2e0bed8371c1f0303cad10a1"},{"file":"sc3d\/barley_tex.pvr","sha":"f15944dcf5597cd37b23a43d21feae9cfaef97fb"},{"file":"sc3d\/barley_wizard_attack.scw","sha":"850e9312cf639672301f45936871bd69e432a718"},{"file":"sc3d\/barley_wizard_cam.scw","sha":"c43e0f48e61dc1360b1cfcfa21bf513c9ed69617"},{"file":"sc3d\/barley_wizard_geo.scw","sha":"ad883c3797b4494de9f79b400ef60accb83f0126"},{"file":"sc3d\/barley_wizard_idle.scw","sha":"18be53fefb42c15b39d8305fc82d120899a03743"},{"file":"sc3d\/barley_wizard_lose.scw","sha":"2594bdcfb0200b31a2da9f658623574f751706f5"},{"file":"sc3d\/barley_wizard_portrait.scw","sha":"82a6cb7c551b27c464a5269e204a08bf5fe620e9"},{"file":"sc3d\/barley_wizard_pushback.scw","sha":"fca17fcd6027211376b6e8aa06227037d03952ac"},{"file":"sc3d\/barley_wizard_tex.ktx","sha":"9e2a15f4ebbe2a12331730f790ec675b2fbeca7b"},{"file":"sc3d\/barley_wizard_tex.pvr","sha":"6275d15946c29ab427a3efad3122cd5ca267ed54"},{"file":"sc3d\/barley_wizard_walk.scw","sha":"eb93bd0491196019d1cf3e5ef54a52561a309a3f"},{"file":"sc3d\/barley_wizard_win.scw","sha":"a10a4146d7433b573d5d3c964f800542e5f35b9a"},{"file":"sc3d\/barrel1.scw","sha":"d5a1ab5cfa1d8cca26dd0fdaea3ca8e1563f2621"},{"file":"sc3d\/barrel2.scw","sha":"72282ec2f5b5d9155dd09c9d79c88257744a6119"},{"file":"sc3d\/barrel_1.ktx","sha":"2edc3079dc671e4db4954780befa42be203bf36c"},{"file":"sc3d\/barrel_1.pvr","sha":"296d40e700d35fe77b8910527873287625f1fbb3"},{"file":"sc3d\/barrel_2.ktx","sha":"0777a7645fe53f2b7aef03a98a0d89bb87b400c3"},{"file":"sc3d\/barrel_2.pvr","sha":"7c104c4b7f73cc82fff9d99f9b6346fd0b180aac"},{"file":"sc3d\/barrel_arcade.scw","sha":"b60e94652845743c2638b043651c369e6ad37afe"},{"file":"sc3d\/barrel_fishy.ktx","sha":"094b93d2ae04cd0fffce7ea58971c20c6b6f90d8"},{"file":"sc3d\/barrel_fishy.pvr","sha":"f8fbfef08e63bb796ad8769f044d0c07e20d7b2d"},{"file":"sc3d\/barrel_fishy.scw","sha":"09d24443d5d7b3e458e7524fd46a41647c0dde5e"},{"file":"sc3d\/barrel_mortuary.ktx","sha":"adfddbe54c9e59702e34e5ba6be87520578b2ea0"},{"file":"sc3d\/barrel_mortuary.pvr","sha":"d928d95b39d3d4a57eb38c5a01ae74b8fc51f8e8"},{"file":"sc3d\/barrel_mortuary.scw","sha":"139d784559e096925f20e4a979869e21a2050933"},{"file":"sc3d\/barrel_xmas.ktx","sha":"44d6f64f06bc80535c23abba918754a41643a1ef"},{"file":"sc3d\/barrel_xmas.pvr","sha":"d20b9a3e57d8e8abbe30f23f384c880768070779"},{"file":"sc3d\/barrel_xmas.scw","sha":"b0e138c7eab5df0aefcba522d78827b87dad7b0d"},{"file":"sc3d\/barrelbot_charge.scw","sha":"01b306fffbb53e3d005a7b7138327473bf4c2ca2"},{"file":"sc3d\/barrelbot_geo.scw","sha":"a47900512678df788077a8d9504eb245148cb3c9"},{"file":"sc3d\/barrelbot_idle.scw","sha":"b06abde95f5ee7deacd0b5fd20d2989bcf25bf75"},{"file":"sc3d\/barrelbot_lose1.scw","sha":"35e0f327fa70f543fa0e66e5eebafc22fa7bcac2"},{"file":"sc3d\/barrelbot_recoil.scw","sha":"11c1d6211e57f56b63e9e9b60b6d383d42494c73"},{"file":"sc3d\/barrelbot_recoil2.scw","sha":"894711dc6dbbcdd774b35a67f56d67421a1fe17e"},{"file":"sc3d\/barrelbot_signature.scw","sha":"27dc59e479dfd1f426228ce1ce5bd606f37cae38"},{"file":"sc3d\/barrelbot_tex.ktx","sha":"c4d07a3f9192cec5f0b39d80313014051aca3899"},{"file":"sc3d\/barrelbot_tex.pvr","sha":"298d2ee5771df9d0ff05e2d76ee330c3dc0f7091"},{"file":"sc3d\/barrelbot_tex_red.ktx","sha":"05f1615170608f5b163c3dba89580f8470680cec"},{"file":"sc3d\/barrelbot_tex_red.pvr","sha":"724a9eac0615cf3c2056ef06f123b025b908e0fa"},{"file":"sc3d\/barrelbot_walk.scw","sha":"7754bce5682eec066ecba925429922c7f2fd7905"},{"file":"sc3d\/barrelbot_win1.scw","sha":"da50bbe273865349926634c6b35be78e64741bf9"},{"file":"sc3d\/basic_tall_geo.scw","sha":"9936b2565b715f3d4f0ce780cf6c1a7bcc8c4862"},{"file":"sc3d\/bbox_10.scw","sha":"03cd7e8eea8b8464bc139a2cddba2fac4ea64eaa"},{"file":"sc3d\/bbox_11.scw","sha":"17f3cbaa0657dc7f7eeb184a0a69c71bdaeb7cb9"},{"file":"sc3d\/bbox_12.scw","sha":"1224383c360a988c365c989150fbace922dfb113"},{"file":"sc3d\/bbox_diffuse_lightmap.png","sha":"cc18a0637c3cbb294a0c2bc996051f7608a5c023"},{"file":"sc3d\/bbox_glow.ktx","sha":"aba94bd118c38ffdace85b077ded4aaa18e0f4cf"},{"file":"sc3d\/bbox_glow.pvr","sha":"3f57dde49c2bfa95e029ed7124686d3fa08c437f"},{"file":"sc3d\/bbox_l.ktx","sha":"a522297c042389317584b7d6bbae217cb37fff8c"},{"file":"sc3d\/bbox_l.pvr","sha":"b0b9311661b3d1047524886fa09d8aed6c957f90"},{"file":"sc3d\/bbox_m.ktx","sha":"deb1da84405d97e92ae48e03f08d2f05b985b7d9"},{"file":"sc3d\/bbox_m.pvr","sha":"cffabd4cbafc22076de94492a9712e95cc5bf420"},{"file":"sc3d\/bbox_specular_lightmap.png","sha":"9b385ff4340ecdd4c2a871da7990903bb3280248"},{"file":"sc3d\/bea_attack.scw","sha":"7a6353252a76dbeacf1824dd377bd42fbdb27739"},{"file":"sc3d\/bea_gadget_honeypot_geo.scw","sha":"114b0bc0f49dd3ebc0fb4a9adcd542b0ead7af46"},{"file":"sc3d\/bea_gadget_honeypot_tex.ktx","sha":"6ba00aeca8295ee094859ab902b4af21879b879d"},{"file":"sc3d\/bea_gadget_honeypot_tex.pvr","sha":"0c9cef0bac9db0311c96505223a91c3fb5d98d02"},{"file":"sc3d\/bea_geo.scw","sha":"244d77a9cd5379b66b1af16239cc1b304531b554"},{"file":"sc3d\/bea_idle.scw","sha":"9927f075f7527d150cedc9c52cbb71174afcb0f6"},{"file":"sc3d\/bea_ladybug_geo.scw","sha":"2555b7d50093c1decdfae995bcb6d597862014b8"},{"file":"sc3d\/bea_ladybug_tex.ktx","sha":"664726979bf23c652735a34ce570515e714590e6"},{"file":"sc3d\/bea_ladybug_tex.pvr","sha":"4fc6aba664725e457396663d55e8fff673a61380"},{"file":"sc3d\/bea_lose.scw","sha":"7f7a89bb6634c7c208ebb8aa976a341aa940a6b7"},{"file":"sc3d\/bea_portrait.scw","sha":"d4b55437df9b08de01f092a85f9b50e0cf6ff772"},{"file":"sc3d\/bea_pushback.scw","sha":"9329351c2709f0303d516c649b4fb5899ecb90b7"},{"file":"sc3d\/bea_reload.scw","sha":"414cc1a458f49fbb66ca18fbb191aa1e98cc3dd2"},{"file":"sc3d\/bea_tex.ktx","sha":"4ae95ab54edce075550eae0f4b5f06721541cbbf"},{"file":"sc3d\/bea_tex.pvr","sha":"c12cb35030007bf947158886b004275554902e20"},{"file":"sc3d\/bea_walk.scw","sha":"c981153fffd68ef9a5a3c71ecfbcdab0e748fac4"},{"file":"sc3d\/bea_win.scw","sha":"959f8f6a6b447544699b665b7a16628d74b06785"},{"file":"sc3d\/bear_koala_geo.scw","sha":"e8b8f87ff1fdf59143f3d0485cabdd30e90592cb"},{"file":"sc3d\/bear_reindeer_attack.scw","sha":"86e1b8a93ec700777ab37bef86dd1b7ca6edde80"},{"file":"sc3d\/bear_reindeer_geo.scw","sha":"6a4179acc857c36232c24517d4c5deedd0308f1a"},{"file":"sc3d\/bear_reindeer_idle.scw","sha":"727abc577b5669b8887fd2effdc7aa9c3e6b6401"},{"file":"sc3d\/bear_reindeer_walk.scw","sha":"aff798896be09b9971803d3b08f58fddb134a0e1"},{"file":"sc3d\/bear_shiba_geo.scw","sha":"628f4e3b38e9bef54913632b005734ff61ab4959"},{"file":"sc3d\/bear_shiba_idle.scw","sha":"8e589d2f5613e71c8154e5f350f01d0bfc601b03"},{"file":"sc3d\/bee_big_idle.scw","sha":"018c5eed2192325c4812d98c1cf36ebd0c64d5e1"},{"file":"sc3d\/bee_big_reload.scw","sha":"d1a5ed7b8b08ea550da13fd812a922de653d990e"},{"file":"sc3d\/bee_geo.scw","sha":"67e9851fd971ea214f6b52f308d76d54fb16bf03"},{"file":"sc3d\/bee_ladybug_geo.scw","sha":"72b4ed9493b508096eb96fe73c4b6e1debc76b8f"},{"file":"sc3d\/bee_small_idle.scw","sha":"31edaa54ce856a5f8171eee4de293a4239d9446a"},{"file":"sc3d\/bee_small_reload.scw","sha":"d882176324941aa4fc212df79deb4cd26c7100cf"},{"file":"sc3d\/bgr_arcade.ktx","sha":"616b8d666e7320f83d38ba4cc7101f70e73df986"},{"file":"sc3d\/bgr_arcade.pvr","sha":"1e4fd8fc5de5a528cb5094553279736f694eeb00"},{"file":"sc3d\/bgr_arcade.scw","sha":"e2c836ba690d26f381a20e776a157b5b5b2c8e65"},{"file":"sc3d\/bgr_arcade_ground.scw","sha":"d48902dd84ef4ce0fb92fb1eda40203ce0ebfdec"},{"file":"sc3d\/bgr_bb_arena.ktx","sha":"9c509142ffa38a2f3f53f6068ae3685fbbcd2c2d"},{"file":"sc3d\/bgr_bb_arena.pvr","sha":"83cb1c99a282eaa9debfeda41ae60ecf0b398fb6"},{"file":"sc3d\/bgr_bb_arena.scw","sha":"9b46197b30d25e3ab04bc1cc810cb7cb40d37129"},{"file":"sc3d\/bgr_bb_arena_decos_default.scw","sha":"b4fb9d44c52d91e35571cc2e4d842d1df9816c62"},{"file":"sc3d\/bgr_bb_arena_decos_psg.scw","sha":"ac94951d9675f4724a87ac58f8b7db58b5093c6e"},{"file":"sc3d\/bgr_bb_arena_ground.scw","sha":"87313110a4269f254f90a16615f0b875f8e577e7"},{"file":"sc3d\/bgr_bb_arena_ground_decos_psg.scw","sha":"e4347d22aee8763472bd1535bdeaae9e9f78eec4"},{"file":"sc3d\/bgr_bb_arena_psg.ktx","sha":"e56ad3081aa9f17230ef711252bda57fd4d5f375"},{"file":"sc3d\/bgr_bb_arena_psg.pvr","sha":"44992d328187e7df0c13437e8caf15e8cb425b38"},{"file":"sc3d\/bgr_beach.ktx","sha":"04d0dec9a1fee92c35c0483d039d1945744bd539"},{"file":"sc3d\/bgr_beach.pvr","sha":"35b52e75d192da0147d51f7be4ae9a3057e92420"},{"file":"sc3d\/bgr_beach.scw","sha":"5f0089ac35e4f7d6b8b1b341fdc120fcb3e2e945"},{"file":"sc3d\/bgr_beach_brawl_ball.scw","sha":"1a7c6cb9705a483ab83a004dc9101031b51a5dbf"},{"file":"sc3d\/bgr_beach_brawl_ball_ground.scw","sha":"2e005895a827035393403c51a661d0dec6ba617a"},{"file":"sc3d\/bgr_beach_ground.scw","sha":"82a6a8be2dd7592e8b3839ac72ca5c065b8e04aa"},{"file":"sc3d\/bgr_beach_ground_wf19.scw","sha":"9ded47be120a819c24b6d5a70ec7015a3e1507b9"},{"file":"sc3d\/bgr_canyon.scw","sha":"69d7a5f16547c7ba8ef3ee170e53eaac337c59ed"},{"file":"sc3d\/bgr_canyon_cactus.ktx","sha":"c8e680893c01edd798b42a4e49c040f4959a5ebe"},{"file":"sc3d\/bgr_canyon_cactus.pvr","sha":"4f4118107ac251fa660093d88e0cc7fb4537426f"},{"file":"sc3d\/bgr_canyon_ground.scw","sha":"3535a49a55f392dbfc5cd9e6f2747e9577b1294d"},{"file":"sc3d\/bgr_canyon_ground_wf19.scw","sha":"bd8698cb3480856edf3e35f4a1a0091a195884db"},{"file":"sc3d\/bgr_canyon_showdown.scw","sha":"92d1978ec9d33666e0836512a38736f45f67b5c0"},{"file":"sc3d\/bgr_canyon_showdown_ground.scw","sha":"ea714420f2935cfc62c16d65b4bbf592f9ee392a"},{"file":"sc3d\/bgr_canyon_showdown_ground_wf19.scw","sha":"96a0d432095af961af6fb45b6964b0a8b666d4e5"},{"file":"sc3d\/bgr_canyon_terrain.ktx","sha":"251e978936b6ad2b4470779b3d6f0ccf1ef5557b"},{"file":"sc3d\/bgr_canyon_terrain.pvr","sha":"9255f8a57d8865e29eec26f25c85163d7b8f6260"},{"file":"sc3d\/bgr_darryls_ship.ktx","sha":"8a55b6d28fb82811998a0afd4cb0543c620dfd32"},{"file":"sc3d\/bgr_darryls_ship.pvr","sha":"36c86b431109ac0080921e2f6a3cd9b10f4e6bac"},{"file":"sc3d\/bgr_darryls_ship.scw","sha":"95f0b0bb489ffa6e1559a7bcc42d8d503a8efe49"},{"file":"sc3d\/bgr_darryls_ship_decos_xmas.scw","sha":"f93488db919e863709a1db258bb3878c120c8cd6"},{"file":"sc3d\/bgr_darryls_ship_ground.scw","sha":"ca2449d146f0b71aa81475d79954c74b7348f60c"},{"file":"sc3d\/bgr_darryls_ship_hold.ktx","sha":"7ec097f7acb3ff736a74183ae15faf651328598a"},{"file":"sc3d\/bgr_darryls_ship_hold.pvr","sha":"770f00416fe3e3227dc280fef1b03391968b379e"},{"file":"sc3d\/bgr_darryls_ship_hold.scw","sha":"82f0ad6cadd47f5ef8aefbb75fb7ae23fb80d8fb"},{"file":"sc3d\/bgr_grassfield.scw","sha":"ea86477222bc61571c45039049ebf0febb7f2321"},{"file":"sc3d\/bgr_grassfield_ground.scw","sha":"ae6a8bbc04c25fcce57a2b6eb2c125efea138805"},{"file":"sc3d\/bgr_grassfield_ground_wf19.scw","sha":"d369a191f8622fb70ec8a2dfe94c7cb7a04d5168"},{"file":"sc3d\/bgr_island_showdown_ground.scw","sha":"e1599377e95d0122d4b45759d30f73378306be48"},{"file":"sc3d\/bgr_island_showdown_ground_wf19.scw","sha":"c4046ae3bd1b4aa551b3258dccb09bf7c7de5a61"},{"file":"sc3d\/bgr_jungle.scw","sha":"c3a9a82420fd14425fcae77d48683b61bf80b04c"},{"file":"sc3d\/bgr_jungle_ground.scw","sha":"61041e0c8485bfb37943fcb148c68b3cbcd4d805"},{"file":"sc3d\/bgr_jungle_ground_wf19.scw","sha":"9902454e21e0d9a80bd400b0bf7faa22aa865fd8"},{"file":"sc3d\/bgr_jungle_palm.ktx","sha":"51d32d8b532a9984c8531944386f5b7b7f8a5a68"},{"file":"sc3d\/bgr_jungle_palm.pvr","sha":"e08582a1333eba2cc92d81f60951f53ea83ade70"},{"file":"sc3d\/bgr_jungle_terrain.ktx","sha":"86ec1c96946d2c2a79bfedfa7cfee619376ec1c1"},{"file":"sc3d\/bgr_jungle_terrain.pvr","sha":"0edb4d4367a8f834a6be6705c91868f7e25323f8"},{"file":"sc3d\/bgr_mine.scw","sha":"80b1f4543debe6c048e8d1e6b2c78fdde4f8d1ae"},{"file":"sc3d\/bgr_mine_ground.scw","sha":"fc58c6e5f47ed0b0230ad27ff14d96f756e41e06"},{"file":"sc3d\/bgr_mine_ground_tracks_1.scw","sha":"c1e148a6bdbab5406f05d65f82328ffbaac35ebb"},{"file":"sc3d\/bgr_mine_ground_tracks_1_wf19.scw","sha":"1cb3c74f89f925d14044f964acf1f1dc582609f6"},{"file":"sc3d\/bgr_mine_ground_wf19.scw","sha":"c0f92af0a8bffb2d8616d2852c583894fa4bfff8"},{"file":"sc3d\/bgr_mine_terrain.ktx","sha":"af238302ed13b8357305860779214524daf5bc62"},{"file":"sc3d\/bgr_mine_terrain.pvr","sha":"f96871a94c4227a09b78d96754edcbdfed0d582e"},{"file":"sc3d\/bgr_mine_tracks_1.scw","sha":"c47e11161293f207bfba63ae531e0b56d6eea673"},{"file":"sc3d\/bgr_mine_tracks_1_boom_l_bot.scw","sha":"5c4464752083e202b0126c5d84f948c3f722011a"},{"file":"sc3d\/bgr_mine_tracks_1_boom_l_top.scw","sha":"8cba748140fa35dd6233b5c51eee2c0c55c5b19d"},{"file":"sc3d\/bgr_mine_tracks_1_boom_r_bot.scw","sha":"6adeed179e2c441cd8535d4c1790b697c7b831c8"},{"file":"sc3d\/bgr_mine_tracks_1_boom_r_top.scw","sha":"ef24efcc75d6b895b06983e0cf86d5a93fb8cb85"},{"file":"sc3d\/bgr_mine_tracks_1_lights.scw","sha":"1cdbe952465be36246e35597fcd1f2522c41d3ca"},{"file":"sc3d\/bgr_mine_tutorial.scw","sha":"6938e100ece847abf89d9321e47a6ec8c5b21757"},{"file":"sc3d\/bgr_mine_tutorial_ground.scw","sha":"1356bf81bb11894e343c44beb5db57db0a06f6f4"},{"file":"sc3d\/bgr_mortuary.ktx","sha":"43f41b12c9d2cab2d4c619ec797395f7ac39e369"},{"file":"sc3d\/bgr_mortuary.pvr","sha":"8c4c5dc4c87818b2427cdd135772ff5fa2e0d7a0"},{"file":"sc3d\/bgr_mortuary.scw","sha":"7538983a10d47d41509fdfb9b92cf83dc1a0eb95"},{"file":"sc3d\/bgr_mortuary_decos_hw.scw","sha":"a382e258f456163610320f4bc5f2530c398fd1d7"},{"file":"sc3d\/bgr_mortuary_ground.scw","sha":"f95db4645b4c7ef7304ee6f2c96c8ede9dcf0df7"},{"file":"sc3d\/bgr_mortuary_ground_wf19.scw","sha":"a17a7d4fb8f17c3f85ef3235f2d032f58c41d8b2"},{"file":"sc3d\/bgr_mortuary_showdown.scw","sha":"d4cc5cbfcb1829b798988f788719b670a68d058d"},{"file":"sc3d\/bgr_mortuary_showdown_decos_hw.scw","sha":"21bb8fbac70000db13a61ec9d094d5588446a34a"},{"file":"sc3d\/bgr_mortuary_showdown_ground.scw","sha":"16647bdcfc26155faf8dbbe629eaf7fd2005fe94"},{"file":"sc3d\/bgr_mortuary_showdown_ground_wf19.scw","sha":"4a0c34ba5ccd2234e882e09a125c6a74f1cee3a7"},{"file":"sc3d\/bgr_old_town.ktx","sha":"50bf8ca412f47a4eba1166f5d2eec7c633ef5980"},{"file":"sc3d\/bgr_old_town.pvr","sha":"9324bf021db71c1d16e01bde9a2fb9770d7b0690"},{"file":"sc3d\/bgr_old_town.scw","sha":"a6cf19581661a71425d63f89a6545ee98fb43fcc"},{"file":"sc3d\/bgr_old_town_ground.scw","sha":"7478ea17ae683ff145437a58acc5aa6bb0b53395"},{"file":"sc3d\/bgr_old_town_ground_wf19.scw","sha":"1eb45b2236c7d22d562883809f7e97be7081c788"},{"file":"sc3d\/bgr_retropolis.ktx","sha":"63f17b95ae8f2d2066d3ca13f44ed1f64a7adb55"},{"file":"sc3d\/bgr_retropolis.pvr","sha":"58403918b488c3f11964ec408fbcd2c8c03b63aa"},{"file":"sc3d\/bgr_retropolis.scw","sha":"60cc49f63fe215d5d7802c9d8b76c118708c5114"},{"file":"sc3d\/bgr_retropolis_ground.scw","sha":"f2ba6eb8bdc18fde8a3726f6fcffb767bd1903f7"},{"file":"sc3d\/bgr_retropolis_ground_wf19.scw","sha":"faf2c03d25ba8d82167ccb86d44402e082647cb8"},{"file":"sc3d\/bgr_warehouse.ktx","sha":"1b17440ff7d047b9587828a4c7545b9d5aa5367e"},{"file":"sc3d\/bgr_warehouse.pvr","sha":"b53c6bdc573e40e0d374cf894875ed18b924ae66"},{"file":"sc3d\/bgr_warehouse.scw","sha":"67e6dad33f9b11727a9c1041834bfa7697211066"},{"file":"sc3d\/bgr_warehouse_ground.scw","sha":"812aee80b4c6833c134819ab1c0af35d6877f1dd"},{"file":"sc3d\/bgr_warehouse_ground_wf19.scw","sha":"ab2636a82a7c048dce7bb703940f0da7166bc0a7"},{"file":"sc3d\/bibi_attack.scw","sha":"f055a910f250c3fdefa46a43c8b8e7eb478b7d49"},{"file":"sc3d\/bibi_base_cam.scw","sha":"335820b7bfe3460fed6e1715efea3cd50ff43255"},{"file":"sc3d\/bibi_gamer_attack.scw","sha":"7a69a0caeed5f88fbbf8895284aea0b5c415a8f3"},{"file":"sc3d\/bibi_gamer_geo.scw","sha":"64410db3b75aa09ec939a9a0943f77a68f7e3970"},{"file":"sc3d\/bibi_gamer_idle.scw","sha":"b5a25952a65746bbc0df1623514bce46f1b9304b"},{"file":"sc3d\/bibi_gamer_lose.scw","sha":"7780d60a89b4cc9e4c02cfef4c518f427effa57d"},{"file":"sc3d\/bibi_gamer_portrait.scw","sha":"71c96ee21519a3de138cf5d1ca7ef5d059b23462"},{"file":"sc3d\/bibi_gamer_pushback.scw","sha":"44900842260e2d5cd27db354f956024f060ddcee"},{"file":"sc3d\/bibi_gamer_tex.ktx","sha":"3f6a5f24ec8f732d9a3697703d53c319686dd34c"},{"file":"sc3d\/bibi_gamer_tex.pvr","sha":"88a9852bb661945c23bac5eb709a9af72c9d38eb"},{"file":"sc3d\/bibi_gamer_walk.scw","sha":"f15ee66b06dd364121fd64b57665040bf35c3ea7"},{"file":"sc3d\/bibi_gamer_win.scw","sha":"b52d8690c17646612b63105df80d2e9021f910cf"},{"file":"sc3d\/bibi_geo.scw","sha":"d77903a065a032b15f9111cb97af4c5c19b52c6e"},{"file":"sc3d\/bibi_idle.scw","sha":"eeaeca85b6a73de6206c7474683ada2659d3d2e3"},{"file":"sc3d\/bibi_lose.scw","sha":"ae668093f5e846d5c65bfb6d18e5d6dcd0852bc9"},{"file":"sc3d\/bibi_pushback.scw","sha":"544d4020869cd0d21470f304fd78423f9d42f7eb"},{"file":"sc3d\/bibi_run.scw","sha":"c200bae077a72ba2e19554f56661787bfcb21109"},{"file":"sc3d\/bibi_tex.ktx","sha":"9efc42955a96668b68ceb0a85b02381c9787fd97"},{"file":"sc3d\/bibi_tex.pvr","sha":"bb91ebfd2b98f90af28289c9bd71471d78e72701"},{"file":"sc3d\/bibi_win.scw","sha":"f324b18a6c46cf81adb7c44c0792bd1e559bcb85"},{"file":"sc3d\/blocker_arcade.scw","sha":"d5580e430c220edaad79f949b629b5a14e7cca55"},{"file":"sc3d\/blocker_arcade_2.scw","sha":"a3e37a01c5c77db8275318b73ccacec821b6d7e4"},{"file":"sc3d\/bo_002_ulti_projectile_blue.ktx","sha":"df024273d894c78a68b9d0f64c65fcd5b0ba5c26"},{"file":"sc3d\/bo_002_ulti_projectile_blue.pvr","sha":"9f9a031f5b028902ce40b4903b3f0af7a9d8763f"},{"file":"sc3d\/bo_002_ulti_projectile_blue.scw","sha":"e1f0235e3cbe674b9e3bee985872d55995c0a812"},{"file":"sc3d\/bo_002_ulti_projectile_red.ktx","sha":"3a61090518f217f5172138228ae32e0775216dc4"},{"file":"sc3d\/bo_002_ulti_projectile_red.pvr","sha":"39f0177062a69079d6822be2f926703bff36de71"},{"file":"sc3d\/bo_002_ulti_projectile_red.scw","sha":"3eb7c8a894b2b6f3019cd54c0676888fe4749965"},{"file":"sc3d\/bo_003_ulti_projectile_blue.ktx","sha":"45debe6e54d952c3cd25dabde99b5ff223b404b7"},{"file":"sc3d\/bo_003_ulti_projectile_blue.pvr","sha":"59d60cf7565125ffe93d253137ce98c40038454c"},{"file":"sc3d\/bo_003_ulti_projectile_blue.scw","sha":"04bd938624f989da8a98d25e8396d8daccdaa01a"},{"file":"sc3d\/bo_003_ulti_projectile_red.ktx","sha":"d90d1ed8ef18c7e51de624f70120449084cc04a8"},{"file":"sc3d\/bo_003_ulti_projectile_red.pvr","sha":"74eab88b2d0ed6cccf48146b881ffb0a55c476c7"},{"file":"sc3d\/bo_003_ulti_projectile_red.scw","sha":"448f57362ba240011bfe9ecbceee1eb46516ff7c"},{"file":"sc3d\/bo_attack.scw","sha":"49badb009502f9f0bb36fce8f0a5368e7cc47257"},{"file":"sc3d\/bo_base_cam.scw","sha":"3ce1d48f2e7040b44bd1bca0c46dcb155e7a8225"},{"file":"sc3d\/bo_def_ulti_projectile_blue.ktx","sha":"70ac6cfd618856801b9798effdae300865288c40"},{"file":"sc3d\/bo_def_ulti_projectile_blue.pvr","sha":"b2d899c2eee7668936e6219227db03ce5ccc8830"},{"file":"sc3d\/bo_def_ulti_projectile_blue.scw","sha":"19536322438c345fe4476d3239690cc59ff9a8b2"},{"file":"sc3d\/bo_def_ulti_projectile_red.ktx","sha":"56c5867d3eea6c34fdbf9e6bf2c6b9d4031227b5"},{"file":"sc3d\/bo_def_ulti_projectile_red.pvr","sha":"1321f345cc144ef27d88d164eb80af0c87386104"},{"file":"sc3d\/bo_def_ulti_projectile_red.scw","sha":"8d5871aab8a8da0260b41070f8c10d2cfd2c3cbd"},{"file":"sc3d\/bo_falcon_attack.scw","sha":"641be1ed52c1e530c382c0f95a460603c2e0066c"},{"file":"sc3d\/bo_falcon_geo.scw","sha":"047e26f2e72075cbaf99443ed4cc2f114706ed98"},{"file":"sc3d\/bo_falcon_idle.scw","sha":"464e11b5b772dff846b502e0547b75a2014537cf"},{"file":"sc3d\/bo_falcon_lose.scw","sha":"c1d9a3e3bb07f76ea32bdaf112c57b059d78d791"},{"file":"sc3d\/bo_falcon_portrait.scw","sha":"559771b83897b7b918f5fe60bdb3debe77aea59b"},{"file":"sc3d\/bo_falcon_tex.ktx","sha":"4906b337224a2d11514383d0d75c1ecbf3653138"},{"file":"sc3d\/bo_falcon_tex.pvr","sha":"ed0190415ec76d77c9e97fcc6cfa592c8133f72e"},{"file":"sc3d\/bo_falcon_walk.scw","sha":"edb7a56228f90be6ae441c32b95a84819a9d6a65"},{"file":"sc3d\/bo_falcon_win.scw","sha":"cfec16fdfe44f5341551259a56f1002537061ac6"},{"file":"sc3d\/bo_gadget_totem_geo.scw","sha":"ff391d4a5e531d70a935dfaef95c470bed5b22cc"},{"file":"sc3d\/bo_gadget_totem_tex.ktx","sha":"207429f2156f3748a1a36bdc9767ef93f37df311"},{"file":"sc3d\/bo_gadget_totem_tex.pvr","sha":"8ec87f3028ac6ac3eeb3c5a39ab0d5f303f412c9"},{"file":"sc3d\/bo_geo.scw","sha":"c554220e847714570b5fcd9c5d54ad2d76f387d9"},{"file":"sc3d\/bo_idle.scw","sha":"c6ca53590780b4500c6023716e61ea4e9b95487d"},{"file":"sc3d\/bo_lose.scw","sha":"fd8b7f87cd02c720e7d82b1ebc6254458647cbcb"},{"file":"sc3d\/bo_mecha_attack.scw","sha":"eab7df676ca40cb450be01cf3d957f5810f69dbf"},{"file":"sc3d\/bo_mecha_cam.scw","sha":"3c4bf73ccd9eb949f94cff21ba06dfe84924e881"},{"file":"sc3d\/bo_mecha_geo.scw","sha":"e0565f65cbb1e24c00cc827223f65311c3299955"},{"file":"sc3d\/bo_mecha_idle.scw","sha":"3f38c332128c03b407f8c9c525aea3258916601f"},{"file":"sc3d\/bo_mecha_lose.scw","sha":"b77ad9bc50bec7318ff7d933e956f6609809a760"},{"file":"sc3d\/bo_mecha_pushback.scw","sha":"e62e95cd05f494af700ed8b1f8c3725708754d1a"},{"file":"sc3d\/bo_mecha_run.scw","sha":"cc69ec18d215d2f565075c543c22d993d104b437"},{"file":"sc3d\/bo_mecha_tex.png","sha":"9ecac892d94a48e3da6af1620cc512e4f250834a"},{"file":"sc3d\/bo_mecha_ult.scw","sha":"1fe20836d20838b635c3f1ca60bc715b654a00af"},{"file":"sc3d\/bo_mecha_win.scw","sha":"7d2ea825d16ef88c7c3135e93423bdd9ee8730f1"},{"file":"sc3d\/bo_tex.ktx","sha":"769606731a1ba5a1e52aa7be7b4895ca56fb7917"},{"file":"sc3d\/bo_tex.pvr","sha":"df8060c92172f3deb310959525c570fe70ca064b"},{"file":"sc3d\/bo_ult.scw","sha":"ec0cc0005e3971ab873e11b02c03ce32ac97de65"},{"file":"sc3d\/bo_walk.scw","sha":"0b24f7924bfbcb3e40a1c60ff93c537ccf4c1e4c"},{"file":"sc3d\/bo_win.scw","sha":"2aae1d3a7008910dda50d77614434af8212dff5b"},{"file":"sc3d\/bombhead_geo.scw","sha":"8534793dbe987c320f5c3ed15e74e98d56c0ff9c"},{"file":"sc3d\/bombhead_idle.scw","sha":"7e7169df4277952fd1f1bc95ac1048644dbf8d21"},{"file":"sc3d\/bone_pile.png","sha":"d1d869d619a4b7bdefcedcbabc6a054aa1e6f831"},{"file":"sc3d\/bone_pile.scw","sha":"c1b072ae8acdccb7ca16989bab1e9e7ef1ddb471"},{"file":"sc3d\/bone_pile_mortuary.png","sha":"f79d1328e86e51dc6cd1caf26426977c3f62c8be"},{"file":"sc3d\/bone_pile_mortuary.scw","sha":"4ad89fc8ace9fb98835e12265a1dbcf5c2b54ab4"},{"file":"sc3d\/bone_ribs.scw","sha":"ae9663c34f9c53d942a44d87a187f0034a735a4c"},{"file":"sc3d\/bone_ribs_mortuary.scw","sha":"6b598668005dc07a6c7f726f9f950f13888a7fc5"},{"file":"sc3d\/bone_single.scw","sha":"a7fef01e34a961aaa701f42b29d8eec2a2d3bc00"},{"file":"sc3d\/bone_single_mortuary.scw","sha":"f91bb7aba337061a9838bbba77a295f7c878ce2e"},{"file":"sc3d\/bone_skull.scw","sha":"7ab8e91e4592c9b4e11e253629415e8955a941ec"},{"file":"sc3d\/bone_skull_mortuary.scw","sha":"6fd7fc77b61cc41ade19285541de6a828d5fb21d"},{"file":"sc3d\/bossbot_geo.scw","sha":"45df8a0a73b888dc0b2e573952095328a8ac7f5f"},{"file":"sc3d\/bossbot_idle.scw","sha":"c371a8a63bbbdc5b5cd8f7de3e1425236e527ca5"},{"file":"sc3d\/bossbot_recoil_1.scw","sha":"a729edf5d6fc38471912f7b9eb90554b2aa3889d"},{"file":"sc3d\/bossbot_recoil_2.scw","sha":"392d9c7fa1db993a19bc91a7623cc72f37332ce0"},{"file":"sc3d\/bossbot_shoot_recoil.scw","sha":"84ade02979016d8390963402813aa11428dd4bd1"},{"file":"sc3d\/bossbot_tex.ktx","sha":"9686f9f9eb5655efee467a5a7a82aed5fce22c21"},{"file":"sc3d\/bossbot_tex.pvr","sha":"4b1a3a0a391ec2adff2e4bc2a8356f54658d6fd2"},{"file":"sc3d\/bossbot_walk.scw","sha":"4f3c7284dcab8fcb839ac5a82ba43bb75f563b8f"},{"file":"sc3d\/bowdude_attack.scw","sha":"006dd5352268dcc3532aca6df32d5335d2331ab1"},{"file":"sc3d\/bowdude_geo.scw","sha":"3cf0d78de40c56b54d173d21d733e5d6a89ed452"},{"file":"sc3d\/bowdude_idle.scw","sha":"21f62044d0ffd0e69e40c857dfd9ed2da3594442"},{"file":"sc3d\/bowdude_lose1.scw","sha":"b82638958daba6dbde4abb4d53edfe602f2d9339"},{"file":"sc3d\/bowdude_loseloop1.scw","sha":"c466495ed6e909ba2b781ee49125e8c7e8d119fb"},{"file":"sc3d\/bowdude_recoil.scw","sha":"0d1ed78901a8039db16a8b3678c8e06197074390"},{"file":"sc3d\/bowdude_ultiattack1.scw","sha":"81fa0fc620c567bf755e3f5748f44f6923755661"},{"file":"sc3d\/bowdude_ultirecoil1.scw","sha":"3875897f7104a5ca662a6ce40a250832e086ed40"},{"file":"sc3d\/bowdude_walk.scw","sha":"0dc92cbdc12ac80e937a3c05e2c27d44ecd7b1b9"},{"file":"sc3d\/bowdude_win1.scw","sha":"fb1712c2a77bba544d33a06f5ca7ecff53ebd95e"},{"file":"sc3d\/bowdude_winloop1.scw","sha":"4327c511a7481b967744cbf7bcb620cf828e4c64"},{"file":"sc3d\/bowman_blue_tex.ktx","sha":"f14b25ab66999c8e0fcf9235030be7555ed097e1"},{"file":"sc3d\/bowman_blue_tex.pvr","sha":"14a53ee4c915550089ea263a1ae1be1d14597ceb"},{"file":"sc3d\/bowman_tex.ktx","sha":"caa2b6680852cd29ee291b6456d9826ff856ec5e"},{"file":"sc3d\/bowman_tex.pvr","sha":"3ac793d069a3c47f43ec871bb7de0959a86d4d1e"},{"file":"sc3d\/brawl_ball.scw","sha":"ac6d112805e3f3fe04440ee9e93a12624f231e9f"},{"file":"sc3d\/brawl_ball_beach.png","sha":"3344100a10f03e03813b49df6d4a03ba6311b6a7"},{"file":"sc3d\/brawl_ball_beach.scw","sha":"9e0bf5fc6a3d04ae1fc4aeb9f19410ee58c9badc"},{"file":"sc3d\/brawl_ball_football.scw","sha":"c58274e4fe29c907a4e821e3a40a5af13812fbac"},{"file":"sc3d\/brawl_ball_football_psg.scw","sha":"8c7f72116d49f6ae186b6ba690af9b9360ce6242"},{"file":"sc3d\/brick1.scw","sha":"ecb601e487b9dfaf4a6a580c2b1c851d47160c87"},{"file":"sc3d\/brick_1.ktx","sha":"8d8b9e5e1335df4ea90dc377498809f65d43d3b3"},{"file":"sc3d\/brick_1.pvr","sha":"5cf5361f6cb0cae5cf0ab40856c32376f48f2950"},{"file":"sc3d\/brock_003_atk_blue.ktx","sha":"6dca1cc0c0a9747800526c9687219bae037c2d43"},{"file":"sc3d\/brock_003_atk_blue.pvr","sha":"198e896fbcd2e9baf42b0793d1c2d926ee6e955f"},{"file":"sc3d\/brock_003_atk_blue.scw","sha":"4baaf3dafeadc1abb8487c84e3b0053bc8125867"},{"file":"sc3d\/brock_003_atk_red.ktx","sha":"147c2a5d2a5b6a89a7a6c6e9957bc591e44f9286"},{"file":"sc3d\/brock_003_atk_red.pvr","sha":"f4f795600be9ada440126bf2ccca8f44dcd38c35"},{"file":"sc3d\/brock_003_atk_red.scw","sha":"edc98dfd03ba97f07b970f9693a94aa79a151324"},{"file":"sc3d\/brock_004_atk_blue.ktx","sha":"bf3c54f54b0327e6612b787594d2e6faf46e3937"},{"file":"sc3d\/brock_004_atk_blue.pvr","sha":"bfdbb7454d9e2521618424403557546517df59be"},{"file":"sc3d\/brock_004_atk_blue.scw","sha":"d50f5b82f508932f03e2faced207f6d0830399b7"},{"file":"sc3d\/brock_004_atk_red.ktx","sha":"525980a336855f17005e978ec8c2e5126f40784f"},{"file":"sc3d\/brock_004_atk_red.pvr","sha":"ca64f2255c86aa3bc138b8a08cfa374b066fbba6"},{"file":"sc3d\/brock_004_atk_red.scw","sha":"b09fd0d32cfdc7add66eaee313b7c9f1bb61f98b"},{"file":"sc3d\/brock_attack1.scw","sha":"834c5e71998db8967fcf807e5fca7ecc2c4af325"},{"file":"sc3d\/brock_base_cam.scw","sha":"bb02180142c33c170e012b7cf3746d407163372c"},{"file":"sc3d\/brock_beach_blue_tex.ktx","sha":"67ff3257f9cb81e0cbcf26edddb55b3fb5f94a6b"},{"file":"sc3d\/brock_beach_blue_tex.pvr","sha":"832622c0e62f605bad8036f2909838e8b64775fd"},{"file":"sc3d\/brock_beach_geo.scw","sha":"98b46575efbb14952901d3e32e203b9a8d38e6aa"},{"file":"sc3d\/brock_beach_tex.ktx","sha":"7addf5dcd679db9ff49c03b93bbace816d7eba99"},{"file":"sc3d\/brock_beach_tex.pvr","sha":"4a0978e921eee2f29fa2b7c035a1b2b33417f38c"},{"file":"sc3d\/brock_blue_tex.ktx","sha":"842e63a510c92f40e2bc3a39dd6b2e93c059ea6e"},{"file":"sc3d\/brock_blue_tex.pvr","sha":"c13af0a943c0b71dc4368906beb46f2ba02d9d4c"},{"file":"sc3d\/brock_boombox_attack.scw","sha":"bfeb48f9f4d59ae8f36e046b7af963281f4d4e94"},{"file":"sc3d\/brock_boombox_blue_tex.ktx","sha":"eeb2e6217bbdb82add945a8c4f62927201a6cb92"},{"file":"sc3d\/brock_boombox_blue_tex.pvr","sha":"990db91511b004c9ad055d2241bd9be8956a6956"},{"file":"sc3d\/brock_boombox_geo.scw","sha":"61ecd8d4dfbecc9435cb93a7a4145a891815c96d"},{"file":"sc3d\/brock_boombox_idle.scw","sha":"c11a3cb80bbf6dbf8f510c1ce753380a8604ca2a"},{"file":"sc3d\/brock_boombox_lose.scw","sha":"c5edaf5ad565e3faa4ce2b65c444dd8a2ae9dfc0"},{"file":"sc3d\/brock_boombox_tex.ktx","sha":"2e233e18ccad92f75d82636835cfb3aad1262948"},{"file":"sc3d\/brock_boombox_tex.pvr","sha":"76e35fbed9b4fb4fa25b9778c4ee9bde3f9ef525"},{"file":"sc3d\/brock_boombox_walk.scw","sha":"fa7cfe0dfb782c6b00182a97fd05796fb1b933d3"},{"file":"sc3d\/brock_boombox_win.scw","sha":"2598846c414ba00f3f909ca83e3ac2f45cc4d8d6"},{"file":"sc3d\/brock_boombox_win_intro.scw","sha":"417694eb17ae4c593a1cdf16f0bfd721999ffb92"},{"file":"sc3d\/brock_cny_geo.scw","sha":"cd663989866d8db68fccd7be7d3949a1caa889d0"},{"file":"sc3d\/brock_cny_tex.ktx","sha":"bd100d52c565791a4a0b7fb668f49f4480577b46"},{"file":"sc3d\/brock_cny_tex.pvr","sha":"a5ea03307336ccef736d35a34c94b654b563ccb0"},{"file":"sc3d\/brock_cny_walk.scw","sha":"891d4b6d8855b97385fd576f94f64c7b72500484"},{"file":"sc3d\/brock_d_01.ktx","sha":"8e76c0af64938e4c6db8273d8bd0e2f332ba458b"},{"file":"sc3d\/brock_d_01.pvr","sha":"3530b59698bd979031f898b114923c6c66c9d982"},{"file":"sc3d\/brock_d_01_blue.ktx","sha":"b26dee37704685777d497565bb1dc4586660023c"},{"file":"sc3d\/brock_d_01_blue.pvr","sha":"2d2947efcd3e4fe797e441ff755a167dbbb54289"},{"file":"sc3d\/brock_geo.scw","sha":"63c55869e4f273e54e44b5ab344764e66aa5b7e4"},{"file":"sc3d\/brock_hotrod_attack.scw","sha":"5908ed3abfa43450e49ca76a8eb68d3e2971b4e2"},{"file":"sc3d\/brock_hotrod_geo.scw","sha":"e713360f018b48d4ea55d1855b23fa87235f3a22"},{"file":"sc3d\/brock_hotrod_idle.scw","sha":"fe988b38edfc39dde85277b0cf07f7b24d26dceb"},{"file":"sc3d\/brock_hotrod_lose.scw","sha":"ff1a9a120517ed5b63b230711087add2a7edfb27"},{"file":"sc3d\/brock_hotrod_run.scw","sha":"38c0a9b76866498e351dc263f6c53ca53c564183"},{"file":"sc3d\/brock_hotrod_tex.ktx","sha":"51478027147d0a19358eeecff53e934438ad12a2"},{"file":"sc3d\/brock_hotrod_tex.pvr","sha":"e9228bcd027477efeff4e2ab5e4ada3a0b18c1ad"},{"file":"sc3d\/brock_hotrod_win.scw","sha":"a0037426ad6716bce6664c8a5958f1c4ca1e74c1"},{"file":"sc3d\/brock_hotrod_winloop.scw","sha":"6d3bc3d3753adfb7a425d8a6367ebb6d10d611e7"},{"file":"sc3d\/brock_idle1.scw","sha":"ffc8accbba1b166680bc90ace7431aaa8686f7d5"},{"file":"sc3d\/brock_lose1.scw","sha":"4f8c9d05ac8797cdc7db43354ba9b2a09444b553"},{"file":"sc3d\/brock_loseloop1.scw","sha":"87f2b1cc5b51444792c14e4dbc0069af7cb996d8"},{"file":"sc3d\/brock_pushback1.scw","sha":"11c9a52ea1863edebd5001201d99a674bac07b8f"},{"file":"sc3d\/brock_recoil1.scw","sha":"12c74dfc614bb96166e6746e030b2480bafb3b13"},{"file":"sc3d\/brock_rocket_blue.png","sha":"7e4813a2549c9197866ceccada38bdf1042cef46"},{"file":"sc3d\/brock_rocket_blue.scw","sha":"ed1748de90e296d7017fec8a38e1c2430eb9e3a0"},{"file":"sc3d\/brock_rocket_red.png","sha":"d4010b0bcc4f1802e9b60855bf91c795e2087c34"},{"file":"sc3d\/brock_rocket_red.scw","sha":"8410660a6025c90fb5cd09c995e6348dcc13b136"},{"file":"sc3d\/brock_tex.ktx","sha":"9c7d27ef238de43cc6b8d060a81fbc457c6fe641"},{"file":"sc3d\/brock_tex.pvr","sha":"eb8a3b65da88ba6a31f3d6065e4d960260a92e4c"},{"file":"sc3d\/brock_ultiattack1.scw","sha":"d178ca701730ace50df7ddccd0d34c3084d2b2d5"},{"file":"sc3d\/brock_ultirecoil1.scw","sha":"6a29d410fc6d7b5648d1514859e7ab16a13ed24b"},{"file":"sc3d\/brock_walk1.scw","sha":"d8ad285539580f375cb7fa8d2415a99cdf4da4f4"},{"file":"sc3d\/brock_win1.scw","sha":"88e45481e4816e7441146f4d2651cb2fc5537a3f"},{"file":"sc3d\/brock_winloop1.scw","sha":"bad0af58bb456ca2ec9819298179ae894caf231c"},{"file":"sc3d\/bull_attack.scw","sha":"29de7e50f1160c7f8f34fbe4a297c6dc01be649d"},{"file":"sc3d\/bull_base_cam.scw","sha":"0f996d4b07c141527ca2a64294f9174c96b60fd5"},{"file":"sc3d\/bull_footbull_geo.scw","sha":"59d758d6a0a5283d98de3a49fb341b657621a8ec"},{"file":"sc3d\/bull_footbull_lose.scw","sha":"de2c8303b2a7fe28994e2c930799c30a176df1ca"},{"file":"sc3d\/bull_footbull_tex.png","sha":"fbd8a1265282fb36fd4a8b72a8a0e6456bbc31b4"},{"file":"sc3d\/bull_footbull_win.scw","sha":"41bc41af390761375bfed3267073395e78528326"},{"file":"sc3d\/bull_geo.scw","sha":"db7f39bf7bce6a9896ec10070824e07a1549e6ed"},{"file":"sc3d\/bull_idle.scw","sha":"6f6a2c779b11f75a1e8f7e731f5704e83c710313"},{"file":"sc3d\/bull_lose.scw","sha":"8a8aa82fe1c4610c574132a26896266e1be5a2c1"},{"file":"sc3d\/bull_rock_pushback.scw","sha":"d2581e96985057e7bb198b232eb03dbb67ec9b35"},{"file":"sc3d\/bull_super.scw","sha":"3c374c04ce3913ef50fd0d5b365a7ab00aba250c"},{"file":"sc3d\/bull_tex.ktx","sha":"b9a40560cc2a9f53803ad353a45d3ddd7275102f"},{"file":"sc3d\/bull_tex.pvr","sha":"68f5448a577a6ab73b64af0d6c7affbce9596495"},{"file":"sc3d\/bull_tex_01.ktx","sha":"d0b92603efd139f42bb98908f00f1de3b30df99d"},{"file":"sc3d\/bull_tex_01.pvr","sha":"c5d7a7e634c2b777df9183f396374206edf7f7cc"},{"file":"sc3d\/bull_viking_attack.scw","sha":"88a8be643d1e221e5d27c2f3f886e932b37e7466"},{"file":"sc3d\/bull_viking_geo.scw","sha":"5199db8d8c06dacad279fd67128edb815d6f2594"},{"file":"sc3d\/bull_viking_idle.scw","sha":"4befc741f006347d43bab0386afc61d62ebaa047"},{"file":"sc3d\/bull_viking_lose.scw","sha":"c26c21a8e45902f3c32e98e6e9efd155ad8b20b6"},{"file":"sc3d\/bull_viking_lose1.scw","sha":"047d720f20558210e1ab46c5ecff8324b21f4a09"},{"file":"sc3d\/bull_viking_pushback.scw","sha":"fb18239d2bf968765dadaf213564597831f5c996"},{"file":"sc3d\/bull_viking_run.scw","sha":"ac74a13c6d77684cd64259a7db5e804b3b4e992a"},{"file":"sc3d\/bull_viking_super.scw","sha":"e4904b310061356191be4034c7230fbfb2e43c36"},{"file":"sc3d\/bull_viking_tex.ktx","sha":"39a5766cbc64c648bb5a2b5ff7cea31ed8488536"},{"file":"sc3d\/bull_viking_tex.pvr","sha":"995513beb12cf8fd2e69f4c4f36196856c3086bb"},{"file":"sc3d\/bull_viking_walk.scw","sha":"94f49f8934c96789e38fbbd8382e020514ca7724"},{"file":"sc3d\/bull_viking_win.scw","sha":"7644e1a1787a5e82cca886bc0cb9a891345b47d8"},{"file":"sc3d\/bull_walk.scw","sha":"02bc14b2119280d3d7b0f2f5cb6ca28de3797d87"},{"file":"sc3d\/bull_win.scw","sha":"e1e56c0df00c26c43eb83b1121aa488658fb793f"},{"file":"sc3d\/bunny_turret_anim_attack.scw","sha":"f65bb0d8202e03955a73151cf34dcfa250aa4073"},{"file":"sc3d\/bunny_turret_anim_idle.scw","sha":"5e83caa42a0f4d563675284b4229704695a1b66b"},{"file":"sc3d\/bunny_turret_anim_idlemenu.scw","sha":"5e30305b3105e91eaa56752383735242448c9313"},{"file":"sc3d\/bunny_turret_anim_spawn.scw","sha":"e277b1146c0144fab9e2be106ede50b9f2ff2c69"},{"file":"sc3d\/bunny_turret_geo.scw","sha":"78d20390952664f5e238ef21d1ff6ad6ab360a7b"},{"file":"sc3d\/cactus_1.ktx","sha":"512c383ce048615f52c531a0c557b1e89efea0bd"},{"file":"sc3d\/cactus_1.pvr","sha":"ccb9922cd1ee47c1b6fd1530da2d475794321245"},{"file":"sc3d\/cactus_attack1.scw","sha":"8384535628fe742a9650badb459b4be5f532c7ec"},{"file":"sc3d\/cactus_d_01.ktx","sha":"16a93b3b5a69e40616f99a8e702fe6be70b94239"},{"file":"sc3d\/cactus_d_01.pvr","sha":"4be5211ea8bffe9e860d155322ab5bb816a922bc"},{"file":"sc3d\/cactus_geo.scw","sha":"9bf38301f9468e6d99bb84633d75bc75aceef32f"},{"file":"sc3d\/cactus_idle1.scw","sha":"7713c89af8282b0ac8456c587614fb0c669627e4"},{"file":"sc3d\/cactus_lose1.scw","sha":"73884e5ddee21d7b8cf583378178b168f97e5e4a"},{"file":"sc3d\/cactus_loseloop1.scw","sha":"dd93c8069c5e4f41ed55334c77de44b5b11f37fc"},{"file":"sc3d\/cactus_recoil1.scw","sha":"af1e88ec1efb7068c43da1898117f8f509abe036"},{"file":"sc3d\/cactus_ultirecoil1.scw","sha":"3833aebc1123372e25e288559658fab4d04ccb73"},{"file":"sc3d\/cactus_walk1.scw","sha":"eb08d047397d0e294342c8225d92835c1bfea079"},{"file":"sc3d\/cactus_win1.scw","sha":"bd7f5b8c31ca71f50779ad2e98593e8e32a73326"},{"file":"sc3d\/cactus_winloop1.scw","sha":"aa8f8c6da7bafc2dce42e8117705791e61ab9a37"},{"file":"sc3d\/candles_1.scw","sha":"8d5a822b607de5cdb9c220f4b39d58a1dc108310"},{"file":"sc3d\/candy_cane_small.scw","sha":"19a538780e295ec154436e57703f5ae6e4880ce7"},{"file":"sc3d\/cannon_balls.scw","sha":"4a537bc24c25cc7d3864b2abd498c9fbf216f756"},{"file":"sc3d\/car_tires.scw","sha":"39b7275b8e0ac302d9ccb46e1e8b8869befb3094"},{"file":"sc3d\/cargo_block_1.scw","sha":"88a167378cb284c6c63d287c99c38f501a5d7079"},{"file":"sc3d\/carl_attack.scw","sha":"1026b03939b4e7e84676345b661f95f4710177f2"},{"file":"sc3d\/carl_base_cam.scw","sha":"c2ce40c449afa93f4a13e74982434dcb1338ca17"},{"file":"sc3d\/carl_geo.scw","sha":"c0ef67cba078776c654c91244bae996cd9eab380"},{"file":"sc3d\/carl_hogrider_attack.scw","sha":"0becad8f9ab73e33f7ef19178fab8415bf43b88e"},{"file":"sc3d\/carl_hogrider_cam.scw","sha":"6df1d4c13867479296b1c1fd9c23a800c9daf7f1"},{"file":"sc3d\/carl_hogrider_geo.scw","sha":"5a886eb799c052ce6599dab6b61ae40e4be264ee"},{"file":"sc3d\/carl_hogrider_idle.scw","sha":"4d1df63a15d26c9dd4d6b937d1ac20e4cfcdd416"},{"file":"sc3d\/carl_hogrider_lose.scw","sha":"6d819daf1e86f6fc716824c4bcd0ecedca8ec6e5"},{"file":"sc3d\/carl_hogrider_loseloop.scw","sha":"5ff347f2cbeb217571a6b5acb4133f5284c9d15b"},{"file":"sc3d\/carl_hogrider_super.scw","sha":"d09829753ee3a5b8414afd644764c7e0626b0a3f"},{"file":"sc3d\/carl_hogrider_tex.ktx","sha":"2956362eece9683000de61ea4b22c01bc32b61cb"},{"file":"sc3d\/carl_hogrider_tex.pvr","sha":"f6db213851ef528a34d2f496d75d0a2024ca40f6"},{"file":"sc3d\/carl_hogrider_walk.scw","sha":"11ad9c330e537be99aa05dd322a9ac0c9faa69a5"},{"file":"sc3d\/carl_hogrider_win.scw","sha":"a43ff5459c69e4e22e5d8bfca4d22b7d95658772"},{"file":"sc3d\/carl_hogrider_winloop.scw","sha":"e7cf6170a8aec8c7c32542f517ca0c6ddcd39f5e"},{"file":"sc3d\/carl_hotrod_attack.scw","sha":"396ba0a2f699591500bb5e495b866b28b265dfef"},{"file":"sc3d\/carl_hotrod_cam.scw","sha":"e1bb49b24583ffbc5c50cfe40d77b3ea673250b2"},{"file":"sc3d\/carl_hotrod_geo.scw","sha":"bd32f158196f41b489519d2429d2e804b607b6ce"},{"file":"sc3d\/carl_hotrod_idle.scw","sha":"69d182d8a9f3fa00981e6740f421980525fa393b"},{"file":"sc3d\/carl_hotrod_lose.scw","sha":"0d621a578e60cc6021aba066f104e10dc0d62608"},{"file":"sc3d\/carl_hotrod_loseloop.scw","sha":"2b00ff623b4b347058bb3a08073b5127a456dbfe"},{"file":"sc3d\/carl_hotrod_super.scw","sha":"beff0c17c1b84929b3c05602b95d9cc8d857421c"},{"file":"sc3d\/carl_hotrod_tex.ktx","sha":"01683578a347e94c12cc3732c90ed3f7b686b84e"},{"file":"sc3d\/carl_hotrod_tex.pvr","sha":"4a2331c9492a14fa4f3ae557fac42969cdd69dbe"},{"file":"sc3d\/carl_hotrod_walk.scw","sha":"632a0ab59421b93a3cfec2efa33f79fc7e0d502e"},{"file":"sc3d\/carl_hotrod_win.scw","sha":"e60a22322d9b29c4071d6c6d546f290fa6b2478d"},{"file":"sc3d\/carl_hotrod_winloop.scw","sha":"0b63241b1c138bad6edaf568df822002edf0f326"},{"file":"sc3d\/carl_idle.scw","sha":"5cd90c892b7007e7bac0655199e5103691b3092f"},{"file":"sc3d\/carl_leonard_cam.scw","sha":"ec0fe0683fefd5ebae409941405b71b0eb53d81c"},{"file":"sc3d\/carl_leonard_geo.scw","sha":"220c2c84a4112a6587a8190ec28ee36dce777087"},{"file":"sc3d\/carl_leonard_tex.ktx","sha":"676c11080e3e2f55f86a1f8e67754ec96b0e20c7"},{"file":"sc3d\/carl_leonard_tex.pvr","sha":"10ff0f1853e0a7856c83ace4753590c351f9562b"},{"file":"sc3d\/carl_lose.scw","sha":"32c99cd5acb01e7ee153960118ebda50a66fccbd"},{"file":"sc3d\/carl_loseloop.scw","sha":"c972eaed67c37bf136dbb43f5851c0327dd09ca9"},{"file":"sc3d\/carl_pirate_attack.scw","sha":"3ec3e30af2aab4551b4dcb3235bc8694c39ad7d0"},{"file":"sc3d\/carl_pirate_geo.scw","sha":"951a9f7d45497013c745b085dc1684dcf31b1861"},{"file":"sc3d\/carl_pirate_idle.scw","sha":"feb5581ffaf40d166c2bf9ca43adb2ba1b60961a"},{"file":"sc3d\/carl_pirate_lose.scw","sha":"7677274899a995b7081bab7b465933d28fce2489"},{"file":"sc3d\/carl_pirate_pushback.scw","sha":"b3f5ba627da3678f824f4a0d87ae99058c6a168d"},{"file":"sc3d\/carl_pirate_reload.scw","sha":"b63fa21b305de509b65f8051541c669e541fee33"},{"file":"sc3d\/carl_pirate_super.scw","sha":"c683e2dd93d3984c4aa5f009b944615a79793191"},{"file":"sc3d\/carl_pirate_tex.ktx","sha":"b325ee435863e87c9b46f6ac698d50ceb5e7298d"},{"file":"sc3d\/carl_pirate_tex.pvr","sha":"c10ef2591865d5ae352b88f39bd19b82cedf236a"},{"file":"sc3d\/carl_pirate_walk.scw","sha":"162ef7296f9ab467bcb5e4f6201db040f70fadc5"},{"file":"sc3d\/carl_pirate_win.scw","sha":"bd3d3a0e0bdcef02247875ccc8a99489fb9355cb"},{"file":"sc3d\/carl_super.scw","sha":"e5fd8e91879e178508439e31f2d1f14bb9dd732b"},{"file":"sc3d\/carl_tex.ktx","sha":"dc092b6cd840d8bcdbff809fa5b7703838d517fd"},{"file":"sc3d\/carl_tex.pvr","sha":"f4bc0695050e55869e0b4518c1492361c85a7d4a"},{"file":"sc3d\/carl_walk.scw","sha":"94caf3a8e14390fa9607c53488a85d2accedfa94"},{"file":"sc3d\/carl_win.scw","sha":"53f8c40af2fbfd8a4db56f21f74699b8e4fd3682"},{"file":"sc3d\/carl_winloop.scw","sha":"1d10660f72a743d77b4fe37b8d95a44671cd599c"},{"file":"sc3d\/character_materials.scw","sha":"badf4925d017692129cd5fcde5efd58e2a38f33c"},{"file":"sc3d\/colt_attack.scw","sha":"39ceed073810744aa0e3b14b32d23fc394e911e2"},{"file":"sc3d\/colt_base_cam.scw","sha":"853ab3a8f6f585f2febca5ef59c1e1198b3c3fce"},{"file":"sc3d\/colt_geo.scw","sha":"6fc7112de29e7eda527f2ad533e70a256c8d8532"},{"file":"sc3d\/colt_hanbok_geo.scw","sha":"070497213b289ec65d082273d29aa029e2089c15"},{"file":"sc3d\/colt_hanbok_tex.ktx","sha":"9016a7ce80a3154fd14b5b637a185b3bf8d93514"},{"file":"sc3d\/colt_hanbok_tex.pvr","sha":"8e609d230e0b4da5e540924b0044218a6ae09fa2"},{"file":"sc3d\/colt_idle.scw","sha":"caebc1113d20cc81092251b09963cf55fd47eb71"},{"file":"sc3d\/colt_loseloop.scw","sha":"178433ade69086636645becff326a32eb9cd922b"},{"file":"sc3d\/colt_outlaw_tex.ktx","sha":"b84f258bf814a9bd7009d55e1c12f64310149c34"},{"file":"sc3d\/colt_outlaw_tex.pvr","sha":"0fb94663343a807a4b3c03fece710167a929deba"},{"file":"sc3d\/colt_pirate_attack.scw","sha":"ca83ae57c1bd77dfe240029a67bc00a87f14326e"},{"file":"sc3d\/colt_pirate_geo.scw","sha":"642798411e6ca238e07587004b03d81886fc6a20"},{"file":"sc3d\/colt_pirate_idle.scw","sha":"a6485fdb1da84e375c0de2f64b49c580d612666d"},{"file":"sc3d\/colt_pirate_lose.scw","sha":"05e2b846b94043b8326b5961d147febc12f5780e"},{"file":"sc3d\/colt_pirate_pushback.scw","sha":"8351c699c228c3fa61208747139b6c73a7e2a2de"},{"file":"sc3d\/colt_pirate_recoil1.scw","sha":"7c8ce5352fd19e222e67aa7e0d1c12c6dcd3a01b"},{"file":"sc3d\/colt_pirate_recoil2.scw","sha":"a90ff2961edbabffceed200d9678549b4a0479bc"},{"file":"sc3d\/colt_pirate_tex.ktx","sha":"1672a462872f1158138f3e61964c69b8cb2e6b15"},{"file":"sc3d\/colt_pirate_tex.pvr","sha":"cb7345a33b004f8cd74aff92720289eeda55124c"},{"file":"sc3d\/colt_pirate_walk.scw","sha":"cdd68b2fcf446c672457f034b98fe0ff35b05fe0"},{"file":"sc3d\/colt_pirate_win.scw","sha":"e4effa282b39a4ecf43a84fd5687526ec10642cc"},{"file":"sc3d\/colt_pushback.scw","sha":"90930d973f4596884a3dba10a45202e15ad91683"},{"file":"sc3d\/colt_recoil1.scw","sha":"d10d7c71d1cd079df9931c887b27ee7bbe7f5ff0"},{"file":"sc3d\/colt_recoil2.scw","sha":"33e977319ba0dbe4d3e02a1f0b0ce08e27c182f9"},{"file":"sc3d\/colt_rockstar_geo.scw","sha":"af4fcc393b56e2e1bd3d04a9b0c7c41b5e353607"},{"file":"sc3d\/colt_rockstar_tex.ktx","sha":"8d7eebccc77581ce3ce5ac2442dc685dada4c3e7"},{"file":"sc3d\/colt_rockstar_tex.pvr","sha":"62b531b4defd5756fe5be03029558ac95fba94b7"},{"file":"sc3d\/colt_tex.ktx","sha":"e0314427c9021cb7db2b564b69c03eb2ddbfd6f4"},{"file":"sc3d\/colt_tex.pvr","sha":"0e923d632c9b369bf6d32f9968ee85d15b1104e0"},{"file":"sc3d\/colt_walk.scw","sha":"1d0934a72dc2f1a00dc86b59119ce88c3fea51e5"},{"file":"sc3d\/colt_win.scw","sha":"3e954c96d8e7c5bfadbbf74dfb04f2c3a384089d"},{"file":"sc3d\/concrete_block.scw","sha":"041310f4c2c5cfbf2388ee0b68f2a251296cfb2f"},{"file":"sc3d\/construction_sign.scw","sha":"022fbfd024397ea02dce789cad6d8f147ab524b9"},{"file":"sc3d\/crate1.scw","sha":"b7f1707f9c763381b71043573c4deec2b4d92456"},{"file":"sc3d\/crate2.scw","sha":"24c6eb9ca10cbcb173db05420e81adb07e865bd6"},{"file":"sc3d\/crate_1.ktx","sha":"669d154d0eb5a834de8f107f3e1eb9498a157668"},{"file":"sc3d\/crate_1.pvr","sha":"7aa0ba4cf2f8940cbe157db1759a4fca1bfa37f4"},{"file":"sc3d\/crate_2.ktx","sha":"65805c0508875205d8a21dbba4eeaaaced673360"},{"file":"sc3d\/crate_2.pvr","sha":"fd1fa93df3308b12d6bfc8d45149e04130ed6720"},{"file":"sc3d\/crate_mortuary.scw","sha":"fb54dc7cc77fc8d826a2ec075b4f86cdf328aa14"},{"file":"sc3d\/crate_powerup.ktx","sha":"c3eb62926255e1f94d8f62a28aa26b87a4350ac6"},{"file":"sc3d\/crate_powerup.pvr","sha":"557be2ce492fe39cb85f7576089eb3cbed1c253b"},{"file":"sc3d\/crate_powerup.scw","sha":"dda202230cb6f9e549e172e4af6f94c4602ef3ca"},{"file":"sc3d\/crate_powerup_moon_festival.ktx","sha":"176e4235ab2f52dc6207ec9d31587a90bb851802"},{"file":"sc3d\/crate_powerup_moon_festival.pvr","sha":"3d1966f3e157b1d17ef8acd376156d9ceab2af6b"},{"file":"sc3d\/crate_powerup_moon_festival.scw","sha":"104272bb54d621ee854f4a8d8515b168414bae30"},{"file":"sc3d\/crate_powerup_night.scw","sha":"16f0afc151179235ac0e7a1031b4b9101bf6d7aa"},{"file":"sc3d\/crate_tnt.scw","sha":"0d5d6f740064e44644d9621d201de6cf2dff2806"},{"file":"sc3d\/crate_xmas.ktx","sha":"610f0f5d5651f0e0ae121ddce639d5385fd9c29d"},{"file":"sc3d\/crate_xmas.pvr","sha":"9f4c61aab589accd6d47f430253c74da2f492934"},{"file":"sc3d\/crate_xmas.scw","sha":"bd8921c93b37c915d7d17fdeeb2cb419a7745104"},{"file":"sc3d\/crow_attack1.scw","sha":"a421f294d4e60cc16583beec3ba1f55cde8e70ae"},{"file":"sc3d\/crow_attack2.scw","sha":"a5e2c610fae9b470fc15f8b28a2d41106a6f5d2d"},{"file":"sc3d\/crow_base_cam.scw","sha":"29eaca7696c8e5eb5ddbe220f8cd712860e65dfe"},{"file":"sc3d\/crow_d_01.ktx","sha":"2daaf3c9d6eb4ea018f27478571c16861bc0499d"},{"file":"sc3d\/crow_d_01.pvr","sha":"e7b36291f8227c0a61957e19f0b30d06a9798936"},{"file":"sc3d\/crow_geo.scw","sha":"9a8d61622d97f6656ebfca1200fe72c82c7f9169"},{"file":"sc3d\/crow_idle1.scw","sha":"2107e57833105640292150dbc1562ce22b46da37"},{"file":"sc3d\/crow_lose1.scw","sha":"a8fe727fe3f378fcb6c14fc55107cfef9d836f99"},{"file":"sc3d\/crow_loseloop1.scw","sha":"5d590be6ee60d323f1937e5e1963b80a1c6a13a4"},{"file":"sc3d\/crow_mecha_attack.scw","sha":"8f5370f1cc8e0012ffaa73ea71f1fc3de52624bb"},{"file":"sc3d\/crow_mecha_cam.scw","sha":"9521c4e6bd035e3b42a984ee9a2de6f215bc8424"},{"file":"sc3d\/crow_mecha_geo.scw","sha":"383e515739ddb52dd9b41c5b8714b2ffd4c4e371"},{"file":"sc3d\/crow_mecha_idle.scw","sha":"6e405797664d6662b19ca0f3a0056266583c8f03"},{"file":"sc3d\/crow_mecha_lose.scw","sha":"be540e6ce0b73a99d0f662e8289846a38609a71b"},{"file":"sc3d\/crow_mecha_pushback.scw","sha":"edb6d6dc4dab5d4f30c2f19ae24bab2bdd7a7fa3"},{"file":"sc3d\/crow_mecha_run.scw","sha":"96b11e60301898bed22b22f90f19b8cf619ba68f"},{"file":"sc3d\/crow_mecha_tex.png","sha":"ffb5b6d5b60c3ecd9d4bf39b02d9183caed8c68a"},{"file":"sc3d\/crow_mecha_ult.scw","sha":"6bf5f438760b80eafe25617b075783e87f40e29a"},{"file":"sc3d\/crow_mecha_win.scw","sha":"0d2c4598e07145f9ceaf066ef5f5be0e71b04832"},{"file":"sc3d\/crow_mechagold_tex.png","sha":"dbe50001ede10e76da16c0510a14049e554c0638"},{"file":"sc3d\/crow_pheonix_attack.scw","sha":"f5b1014a23f38c6345bb183b4004e4188e7e04b5"},{"file":"sc3d\/crow_pheonix_cam.scw","sha":"4b1ab8d2c46b98213ec455c6a0dfc702c9e2e397"},{"file":"sc3d\/crow_pheonix_geo.scw","sha":"c6795504024220ed44cdb24433780101ed5e71d2"},{"file":"sc3d\/crow_pheonix_idle.scw","sha":"3e7d38f31c0d13aa4bfe62fe43efd4fdf1130dff"},{"file":"sc3d\/crow_pheonix_lose.scw","sha":"4f0805b411ac1c72592f3ea6106b5efdc1ef927d"},{"file":"sc3d\/crow_pheonix_tex.ktx","sha":"5ecbd55be9b09d9e96c3d8bfe03b4be33e8b5565"},{"file":"sc3d\/crow_pheonix_tex.pvr","sha":"55c603a4b30e1a3313f865848dfcec8f7fe58cc6"},{"file":"sc3d\/crow_pheonix_ulti.scw","sha":"41b6e6a503d30b1d35723bed1c3634ab007cdee8"},{"file":"sc3d\/crow_pheonix_walk.scw","sha":"c1b447bde4809853bb108f366c0cb78f6e55c90e"},{"file":"sc3d\/crow_pheonix_win.scw","sha":"43e3c5e90e1b6438df3e8e876b8449befce8e588"},{"file":"sc3d\/crow_recoil1.scw","sha":"16c947bb6b9383014c1dd0c2336ead3f55833788"},{"file":"sc3d\/crow_walk1.scw","sha":"335e0319a734cd20304e4a73a6f9c71698b79cd6"},{"file":"sc3d\/crow_win1.scw","sha":"17ebd841952825a6ff53d130aa9b1114c054595c"},{"file":"sc3d\/crow_winloop1.scw","sha":"c2501741389fbf4949d2f980ce36afe724a4b80d"},{"file":"sc3d\/crowwhite_d_01.ktx","sha":"b4b5ba75d034c612481b67b3483e35a7658f52ca"},{"file":"sc3d\/crowwhite_d_01.pvr","sha":"75129ba47f2fbf938376659ce1c0cee06fdc1847"},{"file":"sc3d\/crystal1.scw","sha":"3426bafccf185db67ceb293594fb71b1b9b67c9b"},{"file":"sc3d\/crystal1_xmas.scw","sha":"ea1344b46e4379665a3d8ffb1399775df6984840"},{"file":"sc3d\/crystal_1.ktx","sha":"ecbe1c9252dd4855294583aa231d800c4545f82a"},{"file":"sc3d\/crystal_1.pvr","sha":"b07d5b20a74697fd5c4e599ca8fb1f7bb7aef302"},{"file":"sc3d\/darryl_anim_idle.scw","sha":"68b477f734a75a3e2e92b935f225050af1af3fd3"},{"file":"sc3d\/darryl_attack.scw","sha":"1c5af41c2076d1a793d1ab85d0b078db72c6f194"},{"file":"sc3d\/darryl_base_cam.scw","sha":"6fa73749c659ed41abb77af3fa12dd09014caada"},{"file":"sc3d\/darryl_cny_attack.scw","sha":"b8ff4d642f61222b56b13b0bcbbab90a123110f2"},{"file":"sc3d\/darryl_cny_geo.scw","sha":"02dcc8f20c73f83e8869b2a61f6a8e41bd5b94e0"},{"file":"sc3d\/darryl_cny_idle.scw","sha":"9dff13551b155f489b942a7dee97363d7cb0687a"},{"file":"sc3d\/darryl_cny_lose.scw","sha":"ebb39d7555e1e23986cba5a191d05c931fb6e8ba"},{"file":"sc3d\/darryl_cny_pushback.scw","sha":"bae108cded4f0b95ebc926c26a84b0539f31aa2c"},{"file":"sc3d\/darryl_cny_recoil1.scw","sha":"c5816613dbb4cc7514ba10ef3051f681f885a809"},{"file":"sc3d\/darryl_cny_recoil2.scw","sha":"7ecef6ebe4339544e179d1c446b33b30d8dd238f"},{"file":"sc3d\/darryl_cny_super.scw","sha":"db71964d15e663496eed55a167d76b5621fe50ef"},{"file":"sc3d\/darryl_cny_tex.ktx","sha":"18071c7398e5eb16b7d17fc3b0746cf8b2f71c27"},{"file":"sc3d\/darryl_cny_tex.pvr","sha":"e1083907ae4d47d132373e4478b84d8cb1491794"},{"file":"sc3d\/darryl_cny_walk.scw","sha":"6342d96073d69bd8038385ef87f1a08ba0ba4253"},{"file":"sc3d\/darryl_cny_win.scw","sha":"8fc29a12a73cbd5ebabe1e1a6354e349eecde9d0"},{"file":"sc3d\/darryl_cny_winloop.scw","sha":"de5b3c47bf8125eb241d94ada91b919efeaae10c"},{"file":"sc3d\/darryl_fb_attack.scw","sha":"50aee4c116f839147d0251c759c6ffec7f539269"},{"file":"sc3d\/darryl_fb_geo.scw","sha":"0b435d3b79a0745702100053988e33cadd382576"},{"file":"sc3d\/darryl_fb_idle.scw","sha":"db63966488a0f134ff3d7b6ede4098213b60653a"},{"file":"sc3d\/darryl_fb_lose.scw","sha":"25beaaa5e6d49199c889cae95bde7d42e3a9bdfc"},{"file":"sc3d\/darryl_fb_recoil_01.scw","sha":"083b6fac70cb29e1aa241f900b2034b9a742935d"},{"file":"sc3d\/darryl_fb_recoil_02.scw","sha":"0c12be993443b34227f60eb911e5875cb574fafb"},{"file":"sc3d\/darryl_fb_super.scw","sha":"2c9b18f07c99e3564a9447382f0cb9ce57414732"},{"file":"sc3d\/darryl_fb_tex.ktx","sha":"43b388d2e05e0171f45e13a423d804e1cd90489b"},{"file":"sc3d\/darryl_fb_tex.pvr","sha":"6f1884c950c8cce50c1758a9cb034f83a40f28c9"},{"file":"sc3d\/darryl_fb_walk.scw","sha":"18a0958d06202f07e62910d65c4c38dfa743f322"},{"file":"sc3d\/darryl_fb_win.scw","sha":"4ab46d9be2906cf4dba0688a7bd830c38fc6f2c4"},{"file":"sc3d\/darryl_geo.scw","sha":"7bb6fbfa2da31411816a5c3847a4f39ed37aadd4"},{"file":"sc3d\/darryl_idle.scw","sha":"64d28119346a0e160a5650abbcbb54e875204adc"},{"file":"sc3d\/darryl_lose.scw","sha":"d520ccb4c0231d016e14a1c09ee08be8e84f786c"},{"file":"sc3d\/darryl_pushback.scw","sha":"2bb5551a4e4c5dfe42f063c2fd427839ed5319e3"},{"file":"sc3d\/darryl_recoil_01.scw","sha":"3e1ded924158388714c9762dc1e235f3bbcbbb23"},{"file":"sc3d\/darryl_recoil_02.scw","sha":"69bbb53f74c187d1b306c9fbec983c1e564ea76b"},{"file":"sc3d\/darryl_ship_loop.scw","sha":"67545c780596530de37aaa15198d43e670b1301d"},{"file":"sc3d\/darryl_super.scw","sha":"2560182644830b99ce0b1ec1f6734ecd5f964053"},{"file":"sc3d\/darryl_tex.ktx","sha":"bce96dbd6ac98755af2eaa36ede03882f7ca36de"},{"file":"sc3d\/darryl_tex.pvr","sha":"bab0ea6f3d446aeae514af9246f9d57abfb7ab27"},{"file":"sc3d\/darryl_walk.scw","sha":"fd367f3bae14a38c46f824dd9c1219a175430951"},{"file":"sc3d\/darryl_win.scw","sha":"d003ffc8f39c3e24fc3495ea0d299e23fa9c381a"},{"file":"sc3d\/darryl_winloop.scw","sha":"fa5c79de842394ced5886596114346f9c141112e"},{"file":"sc3d\/diffuse_lightmap.png","sha":"f7e90742f72b37453ae7b5ba8f62000ba8c9102d"},{"file":"sc3d\/diffuse_lightmap_night.png","sha":"86269386c66a76a09dfb9d9c450e8a9c0fa5c1cd"},{"file":"sc3d\/dogturret.ktx","sha":"ec270d1ab7b0c021220a7d61c48a4c32cc935561"},{"file":"sc3d\/dogturret.pvr","sha":"7cbbc383fe7545237ec74c894e98f10e7fa9b33d"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.ktx","sha":"795e7ec3e5c36ecfd85583edc9ed5fad957ec20c"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.pvr","sha":"c55bcbedd6d87b9bfde016c98b708d95a6e63d92"},{"file":"sc3d\/dynamike_003_atk_projectile_blue.scw","sha":"bc34f99a90994577da85b2ee261883f556e47388"},{"file":"sc3d\/dynamike_003_atk_projectile_red.ktx","sha":"6812ac14cd0fff19ba7a3f7ba440bfa5429e702a"},{"file":"sc3d\/dynamike_003_atk_projectile_red.pvr","sha":"ec517b115db5b1763d7dae5edeab2d5663776f79"},{"file":"sc3d\/dynamike_003_atk_projectile_red.scw","sha":"7201d05fc556f36194a7ed16e08a28332074864e"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.ktx","sha":"105a46d47959bb495a2e3566a3e3ab30c218095a"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.pvr","sha":"cb7d6975ae20a766e4477a187d40ea99d0386020"},{"file":"sc3d\/dynamike_003_ulti_projectile_blue.scw","sha":"4758297dec74630d7119c88e4fcd59b811202a27"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.ktx","sha":"2d10dce57baf592ad85e66b43537990b280a4b1b"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.pvr","sha":"8d1f42b56a6c6d06328b8339430776d0d57fd8d2"},{"file":"sc3d\/dynamike_003_ulti_projectile_red.scw","sha":"851ade4ff46f2baab8fef59a6f21a301b9cb0c74"},{"file":"sc3d\/dynamike_attack.scw","sha":"a57f5b6f7b6e9edac0de67d0931bed12b53d2f1b"},{"file":"sc3d\/dynamike_base_cam.scw","sha":"62ef3e1a11b4268d14ac6d2bdf54cbf36906aa4a"},{"file":"sc3d\/dynamike_blue_tex.ktx","sha":"c988e3757f03c1e66a8938c0764654a26b323d8d"},{"file":"sc3d\/dynamike_blue_tex.pvr","sha":"8a5566756ee932ee18ce5860637d958ab8f41f52"},{"file":"sc3d\/dynamike_chef_blue_tex.ktx","sha":"c88b7c3194b1cf37e4ecbeeb53e0fa368481bbe5"},{"file":"sc3d\/dynamike_chef_blue_tex.pvr","sha":"8ddd5d95c57e114a3aabfd32697d79eeb0ee3ba1"},{"file":"sc3d\/dynamike_chef_geo.scw","sha":"c6a4936be652b24efbd5d4c9f8b81eefc81ab7d6"},{"file":"sc3d\/dynamike_chef_tex.ktx","sha":"f20d12a5698a93eb6946effcb5fbf778a53b0667"},{"file":"sc3d\/dynamike_chef_tex.pvr","sha":"3c52a37046b138a2a06e6bc5f7c17788747aeabe"},{"file":"sc3d\/dynamike_coach_attack.scw","sha":"b0432786e3e18d6ce41501d6a09ad099de6d3a2b"},{"file":"sc3d\/dynamike_coach_geo.scw","sha":"053e37bf82cfc28a03cca8088bd2a965b66c439a"},{"file":"sc3d\/dynamike_coach_idle.scw","sha":"20f10ad0afb08457b786347abaf25d093fe72756"},{"file":"sc3d\/dynamike_coach_lose.scw","sha":"6be0c4085db9da026f7aaaf7b2c8270ae24f6dad"},{"file":"sc3d\/dynamike_coach_pushback.scw","sha":"f5f6406e6802f61db101af7bbec2618f73af8660"},{"file":"sc3d\/dynamike_coach_super.scw","sha":"12f4f83a46660da0e4256cf9d5facdf42027c09b"},{"file":"sc3d\/dynamike_coach_tex.ktx","sha":"048f486e93f5d511853226f3e730612ae9560ea4"},{"file":"sc3d\/dynamike_coach_tex.pvr","sha":"8c297ed3df4bfb58cb10998cff02e188c17c9955"},{"file":"sc3d\/dynamike_coach_walk.scw","sha":"1ba493da37b8de05a0114a064afbdfd17fcadfcc"},{"file":"sc3d\/dynamike_coach_win.scw","sha":"6b776c4fc8619dfecd190d5420643acda20647f3"},{"file":"sc3d\/dynamike_geo.scw","sha":"bc46d1a3fcbca76da297ca54c08fe1bfaba4c03d"},{"file":"sc3d\/dynamike_idle.scw","sha":"fa733987c47a9b1a40cf4c45221ec7c71383ed43"},{"file":"sc3d\/dynamike_lose.scw","sha":"291705fa1299e488560477d8733584d3cfcee876"},{"file":"sc3d\/dynamike_mecha_attack.scw","sha":"0575c00776b341879771a2747e908e4a7584abeb"},{"file":"sc3d\/dynamike_mecha_geo.scw","sha":"de3b227a5db491ecad82141d25be6ea40b016b1f"},{"file":"sc3d\/dynamike_mecha_idle.scw","sha":"ad2c979446e4820bb531f3a27bdf575b8583d799"},{"file":"sc3d\/dynamike_mecha_lose.scw","sha":"64f6cc75faed9a79143885afe14526bc1d119bfa"},{"file":"sc3d\/dynamike_mecha_tex.ktx","sha":"227c724bc8e6b0d5a1c94f68c70c4d9818d50fab"},{"file":"sc3d\/dynamike_mecha_tex.pvr","sha":"554364fd66e0a0cf48c2a9f27969656d4a9ca414"},{"file":"sc3d\/dynamike_mecha_ult.scw","sha":"74e4c218399eaf94102cb119e3652a7aa8d9b0f3"},{"file":"sc3d\/dynamike_mecha_walk.scw","sha":"b03bf1dabdcce30d5046cab68ea1983f0bb4eef5"},{"file":"sc3d\/dynamike_mecha_win.scw","sha":"749f6c340f8d55d31cdb02159ccfa54969192acb"},{"file":"sc3d\/dynamike_pushback.scw","sha":"7b11c4fe08291e1ad8ec818131bb06ffd1eb9762"},{"file":"sc3d\/dynamike_santa_blue_tex.ktx","sha":"7e9dce6d94805b8f3fe5398e15a18ce09a244567"},{"file":"sc3d\/dynamike_santa_blue_tex.pvr","sha":"03ef672e8c138d05b945ed098b62c3fb8dec2bd7"},{"file":"sc3d\/dynamike_santa_geo.scw","sha":"2886aab7a9145a4873513a9e3c5fdd264ff6fdd0"},{"file":"sc3d\/dynamike_santa_rope_geo.scw","sha":"6cd87b2ff87140b02904a4303e58ddccf37bcb03"},{"file":"sc3d\/dynamike_santa_rope_loop.scw","sha":"3440cafb9cc40c3576bcce0b4f9f680855d6236e"},{"file":"sc3d\/dynamike_santa_tex.ktx","sha":"7e9dce6d94805b8f3fe5398e15a18ce09a244567"},{"file":"sc3d\/dynamike_santa_tex.pvr","sha":"03ef672e8c138d05b945ed098b62c3fb8dec2bd7"},{"file":"sc3d\/dynamike_super.scw","sha":"ac2357ccf60b432de1ab582645e744d73c152e2a"},{"file":"sc3d\/dynamike_tex.ktx","sha":"d75aeddecc83d3c71f0a5b253241f2591cae5489"},{"file":"sc3d\/dynamike_tex.pvr","sha":"923b278a06c9a1becdfe62520da361ce837812fc"},{"file":"sc3d\/dynamike_walk.scw","sha":"3f3c77826faaaad2a50ec4b2850f469e70c9e2ec"},{"file":"sc3d\/dynamike_win.scw","sha":"39c9e53aa453dc87a9aed3f908cd6b044c50e660"},{"file":"sc3d\/emz_attack.scw","sha":"b6c7fff423dd23d2d97f6a49b832153c5a6c44cb"},{"file":"sc3d\/emz_base_cam.scw","sha":"3ffed6122bd2e63d6129ae09c21b27ede1529b17"},{"file":"sc3d\/emz_college_geo.scw","sha":"9f64106dab40871ac823d4d30874c616ebae1bbd"},{"file":"sc3d\/emz_college_tex.ktx","sha":"28980759960eed83b5cd13341540728b7d9da755"},{"file":"sc3d\/emz_college_tex.pvr","sha":"d353b3c889c3a822b445dd79ee6b8c2227dfe4e8"},{"file":"sc3d\/emz_geo.scw","sha":"52ba7da0ce1959fa4483f27603d40750d7eb676e"},{"file":"sc3d\/emz_idle.scw","sha":"9e1b7553acbbacbb8c651b466fa78aa00dbb65be"},{"file":"sc3d\/emz_lose.scw","sha":"32255bf86d2c72fdd6c7eded25eada4300fd60c2"},{"file":"sc3d\/emz_pushback.scw","sha":"e20b978da5a87f75ae2e7bd300de2b901f0a7721"},{"file":"sc3d\/emz_reload.scw","sha":"600be9bfb641698f3ec1786e89d533ee708ecdcd"},{"file":"sc3d\/emz_tex.ktx","sha":"5653329a6a8005a0884e88df9127c363e69e6d23"},{"file":"sc3d\/emz_tex.pvr","sha":"a23ea70864543ed39c3fd623aa3df3f959ede7dd"},{"file":"sc3d\/emz_walk.scw","sha":"6254f0d78180f603fd44a5442164596e2a6fbf1d"},{"file":"sc3d\/emz_win.scw","sha":"9284a898929842ee24e107586fe82380883e491a"},{"file":"sc3d\/fastmeleebot_geo.scw","sha":"aeb4a581c057a80babaa411cfa4cfcc7c32ca306"},{"file":"sc3d\/fastmeleebot_idle.scw","sha":"8c9bd29493f4a5fbc6a92f5ddda9d268de9f7ec5"},{"file":"sc3d\/fastmeleebot_recoil.scw","sha":"7b25a6670cdb844296ffed57c52eee0fbde4e7a5"},{"file":"sc3d\/fastmeleebot_tex.ktx","sha":"d4b8b70f1dd0ab7e04cae83a4f2d9f364e6fb5f9"},{"file":"sc3d\/fastmeleebot_tex.pvr","sha":"ee7d71f141139850da9c896ec812e10b1c7b10ea"},{"file":"sc3d\/fastmeleebot_walk.scw","sha":"aab5120927d6c9236754d2dae2a1c89b2b2a0da6"},{"file":"sc3d\/fence_arcade.scw","sha":"3337e86f1a36318b9812fbb5acf31e848a0a80da"},{"file":"sc3d\/flame_1.ktx","sha":"1e9972da27c435b6d8b608397adde814a8f6f8dc"},{"file":"sc3d\/flame_1.pvr","sha":"2c4b444e1ddb610e3821bf6571884437724d65e5"},{"file":"sc3d\/frank_attack.scw","sha":"c905574b08e6efe5e651116111b91ffec4559568"},{"file":"sc3d\/frank_base_cam.scw","sha":"8e28dcf4a6d589af37ba6964d940791c40708c7e"},{"file":"sc3d\/frank_caveman_01.ktx","sha":"c02b75870edc0ae3be56f66b967b756ccd525833"},{"file":"sc3d\/frank_caveman_01.pvr","sha":"821f65a4c782b6b94913ef77c49e91b5ed784324"},{"file":"sc3d\/frank_caveman_geo.scw","sha":"4a5bd296256a0dca2ca7d1ac628ba2c0688b7781"},{"file":"sc3d\/frank_dj_geo.scw","sha":"afb88cdbc18a9da6e7ef709759a1c12811fa9572"},{"file":"sc3d\/frank_dj_tex.ktx","sha":"b1f674bbdce8384344174bb6003246ee1755c89a"},{"file":"sc3d\/frank_dj_tex.pvr","sha":"bf63d4cf39ad890e7df8fb9d76a13c0900597134"},{"file":"sc3d\/frank_geo.scw","sha":"335c35bd48c333523947e190665b973938cfd201"},{"file":"sc3d\/frank_idle.scw","sha":"88b9de6312b5ab1f69506aa63033199de3cc4d79"},{"file":"sc3d\/frank_lose.scw","sha":"d468bb203f3d7071302f0a7de4973be6dc59c870"},{"file":"sc3d\/frank_mortuary_env_loop.scw","sha":"c87706136e2cc9d2e180854cadd189ed5fb60dfa"},{"file":"sc3d\/frank_pushback.scw","sha":"9a39791d70fce48de1532d904cd9b8558476af03"},{"file":"sc3d\/frank_tex.ktx","sha":"60afa1e486e49784501b4cda1f16e72f1f4d4b31"},{"file":"sc3d\/frank_tex.pvr","sha":"1ea1ba69b3d8acc9a5eb548a3e1dbcd1ecaeabcd"},{"file":"sc3d\/frank_ulti.scw","sha":"22b5b921d0299def254f988c2a22ccbadaa29cde"},{"file":"sc3d\/frank_walk.scw","sha":"909a817024aeb0df6ba5b883b44ac7f7d1bfdba9"},{"file":"sc3d\/frank_win.scw","sha":"5a1fa2daa6649fb83c6d2a76f534f1c14fbdd4b3"},{"file":"sc3d\/gene_anim_attack.scw","sha":"c84d65260ebbd796f847b2134b9926dcf03fff3f"},{"file":"sc3d\/gene_anim_idle.scw","sha":"35c88066f552a2bd0d0aac306a15820bb50a47a9"},{"file":"sc3d\/gene_anim_lose.scw","sha":"31ea37c0c566e6df629295c121666fdb534d3d1b"},{"file":"sc3d\/gene_anim_loseloop.scw","sha":"394a7775ff1a4b93b0f4a0fd626e4289566e13d4"},{"file":"sc3d\/gene_anim_reload.scw","sha":"4059dd77507e49bf80ccb03d346322969b802961"},{"file":"sc3d\/gene_anim_super.scw","sha":"d1883d7495b690c30f6dd18fe858798c69f7fa22"},{"file":"sc3d\/gene_anim_super2.scw","sha":"979e509c434d999a912157cfe1b13c55a649de34"},{"file":"sc3d\/gene_anim_walk.scw","sha":"c1ddf4169ecfd7b87a6fcabfc8264afa10c6c7f5"},{"file":"sc3d\/gene_anim_win.scw","sha":"f3ae36798db05375afe3b5a851f5c64c4914a4fd"},{"file":"sc3d\/gene_base_cam.scw","sha":"048c935a6adad8d14446b94f01e1ba5846f1a9f9"},{"file":"sc3d\/gene_geo.scw","sha":"04013ec26421176fe04f0f2554ab393c54546f65"},{"file":"sc3d\/gene_pirate_anim_attack.scw","sha":"29e60518a9ada2cfe7cd14dbd0d4188beeb063ca"},{"file":"sc3d\/gene_pirate_anim_idle.scw","sha":"10fb119cd1001119f051f42a15be175e824507ff"},{"file":"sc3d\/gene_pirate_anim_lose.scw","sha":"ba1f4386af5322c364e93c20a3a9945aa6f3beae"},{"file":"sc3d\/gene_pirate_anim_reload.scw","sha":"391f23d3573dab69cab5a3f5fa54d8d62357339a"},{"file":"sc3d\/gene_pirate_anim_super.scw","sha":"eb929a9df777ba13b0fea3e23e70734e940318db"},{"file":"sc3d\/gene_pirate_anim_walk.scw","sha":"9dc6b8e6e109b7ac6a1197863c026503207ff201"},{"file":"sc3d\/gene_pirate_anim_win.scw","sha":"dc3bc70b683149d1898a22040e1ace5a7ab04fb2"},{"file":"sc3d\/gene_pirate_geo.scw","sha":"76e7c3f2eaf44902143fe6da2efc0e23b714981a"},{"file":"sc3d\/gene_pirate_tex.ktx","sha":"5064564b4c03d17e83c7f63855a78a05f272b2c7"},{"file":"sc3d\/gene_pirate_tex.pvr","sha":"530dc5bfedb0c3fa8fa340875326a6b174c8a214"},{"file":"sc3d\/gene_projectile_closed_blue.scw","sha":"d3ea5a1f84e4d9e925d6090f980b0ab53c1d60f0"},{"file":"sc3d\/gene_projectile_closed_red.scw","sha":"235a9018dc997f53689c0d55448983214552232a"},{"file":"sc3d\/gene_projectile_open_blue.scw","sha":"868565826ba45be1ea894be9539acf9d5b61b295"},{"file":"sc3d\/gene_projectile_open_red.scw","sha":"79eaabc3f4faece6693b5e8d9e8e0c124b7dbba3"},{"file":"sc3d\/gene_projectile_tex_alpha.ktx","sha":"eea8a9572c0f3416c2ff33c9f9ee0bc18b4177bf"},{"file":"sc3d\/gene_projectile_tex_alpha.pvr","sha":"5ddd89fb495f4befee7b6ffd2c3002c873b53a62"},{"file":"sc3d\/gene_projectile_tex_blue.ktx","sha":"ff78db3c17155599ae0f342f4d4922a2840fd534"},{"file":"sc3d\/gene_projectile_tex_blue.pvr","sha":"62a4ed593befed8d416c8d877cdcabfe11ac5cd2"},{"file":"sc3d\/gene_projectile_tex_red.ktx","sha":"a600271d59345528c494d52535356ff9c0f85868"},{"file":"sc3d\/gene_projectile_tex_red.pvr","sha":"d8bbb521d4aa95798d08aeea6bf30745fbe3abf8"},{"file":"sc3d\/gene_tex.ktx","sha":"5ee6e3793dbc20d0896047c58a5e88e7eac6e47b"},{"file":"sc3d\/gene_tex.pvr","sha":"9e2e7b5bc04e0240b3c6c6dfdb8093bd727e601d"},{"file":"sc3d\/generic_tilable_1.ktx","sha":"da93465cbbb2ab2daf533e73dca97c895860fa08"},{"file":"sc3d\/generic_tilable_1.pvr","sha":"aae1cdfc8e7497d569472cc1a7c275c7b465b923"},{"file":"sc3d\/generic_wood.ktx","sha":"ff64cbf0618dace10a299b5b3a51452569a4df52"},{"file":"sc3d\/generic_wood.pvr","sha":"fef3408dffb626ffc5f7447cf6aead167fc90ffa"},{"file":"sc3d\/grass1.scw","sha":"d988bebb17cf019362de7ee409855e47aa80c4b4"},{"file":"sc3d\/grass2.scw","sha":"9825b71ba7e2e97ac7647fdd3f546f19c1eefdea"},{"file":"sc3d\/grass3.scw","sha":"de2c4f7b28810f4be89fdfea9bbabb98c2282282"},{"file":"sc3d\/grass4.scw","sha":"4fbc6e9185804e757228bfc1fa3680e8ca56456f"},{"file":"sc3d\/grass5.scw","sha":"a9af8a18cb8a6bcdab8263eadf88930e11ed5676"},{"file":"sc3d\/grass6.scw","sha":"9cf8210276b09aad6af6d6cc910ff4ee185f14bd"},{"file":"sc3d\/grass7.scw","sha":"4498801834d0bf80a86b9cf219d92827b1ec2daf"},{"file":"sc3d\/grass_1.ktx","sha":"88544580cac7afaf2819af1d05c351a5d57e3bbc"},{"file":"sc3d\/grass_1.pvr","sha":"1d664711afd077f610ec91980776cf077c44b42e"},{"file":"sc3d\/grass_2.ktx","sha":"6bd56e25539fca8c01fa0a41dd18a26349ab7461"},{"file":"sc3d\/grass_2.pvr","sha":"586451504dd6fff89460921de2f3d19b19baf35a"},{"file":"sc3d\/grass_3.ktx","sha":"52c894b9fcbcd5e4adbb9dad4a97f394854d13e2"},{"file":"sc3d\/grass_3.pvr","sha":"7ae812cec10e6182045a7a24dd63f7b554d4e82f"},{"file":"sc3d\/grass_4.ktx","sha":"f9abff73e708399889b05d7ca31310d28ee3a129"},{"file":"sc3d\/grass_4.pvr","sha":"16f2c369a93eeab16632d09a32fe84eb6d36b959"},{"file":"sc3d\/grass_5.ktx","sha":"cff410af90613fc63429dc2acb116cde417def6c"},{"file":"sc3d\/grass_5.pvr","sha":"30a59cb69924594697a7876cab2ca0ae12f92766"},{"file":"sc3d\/grass_6.ktx","sha":"6581186b05ffa757c89ef3a08aec61b85e8b1113"},{"file":"sc3d\/grass_6.pvr","sha":"8763990204fac14b9f6a2b643acf7640ca5dd81f"},{"file":"sc3d\/grass_7.ktx","sha":"0bd77b12c3f2401f658f2a6256b70061ada705e9"},{"file":"sc3d\/grass_7.pvr","sha":"a99238448585e0190107b50bc524eb66d1344351"},{"file":"sc3d\/grass_seaweed.ktx","sha":"4a3bd47c3c9021abfceec29e6e8da1b7d8aaa40d"},{"file":"sc3d\/grass_seaweed.pvr","sha":"86f9f1cac308af78e06d51217855a99aefc2ea9f"},{"file":"sc3d\/grass_seaweed.scw","sha":"c0694917ca78478286b0dbcaf9ce807a2287c40e"},{"file":"sc3d\/grass_town.ktx","sha":"6bd56e25539fca8c01fa0a41dd18a26349ab7461"},{"file":"sc3d\/grass_town.pvr","sha":"586451504dd6fff89460921de2f3d19b19baf35a"},{"file":"sc3d\/grass_town.scw","sha":"c1fe16026a75f7d2c82f7d226b619b2afaeda6aa"},{"file":"sc3d\/hair_diffuse_lightmap.png","sha":"cbb89a2dc5def2a9309c7ebe3a197675a809ce73"},{"file":"sc3d\/hair_specular_lightmap.png","sha":"9d095cb3b4fe42a82c85a40512f42c41b45fd647"},{"file":"sc3d\/healstation_geo.scw","sha":"ce548a7dfb3323a7b0d1862b77009f183f2feb7a"},{"file":"sc3d\/healstion_red_tex.ktx","sha":"8345059242c060011934e1bc124cb427056dba82"},{"file":"sc3d\/healstion_red_tex.pvr","sha":"010c6566a9627b17a10260446850845ea0abbca6"},{"file":"sc3d\/healstion_tex.ktx","sha":"a5e741cc7ccb263c13f15e5c3fb75f97f43d0e92"},{"file":"sc3d\/healstion_tex.pvr","sha":"7fbb1ae473538b522eaab2a6ba73e31e33378087"},{"file":"sc3d\/heist_safe.ktx","sha":"22a79d1242c17a02e6f7619283cd299999bc12be"},{"file":"sc3d\/heist_safe.pvr","sha":"04946f3f28a7241192d6a418e58a7db9215f886b"},{"file":"sc3d\/heist_safe.scw","sha":"019f118319dd7a2c297785455e4905ce9d540fa7"},{"file":"sc3d\/ice_cube1.scw","sha":"f6dd542a9f20c1e33192c3e1ba0a2191066aff12"},{"file":"sc3d\/ice_cube_1.ktx","sha":"c2019ac7bbc40f958b9432163d41ebb51501f43c"},{"file":"sc3d\/ice_cube_1.pvr","sha":"9c7c5d4e2f3e76d57613e044acd8d7d82d539502"},{"file":"sc3d\/indestructible_metal_1.ktx","sha":"06f657d9a634fec1d160e8ed486d4ed32d6f6264"},{"file":"sc3d\/indestructible_metal_1.pvr","sha":"7ca3994fb1d81b47f1bfe2fb4bfaf29284600ee1"},{"file":"sc3d\/indestructible_metal_1.scw","sha":"fe2df649521590483f6ff866480b2523169eb609"},{"file":"sc3d\/item_bolt.ktx","sha":"0a8501c744b396d14119e2b33f34975603ccffed"},{"file":"sc3d\/item_bolt.pvr","sha":"3dc60c03b6c8ea4eb470ce2f4e0fda2d7cf00fcf"},{"file":"sc3d\/item_bolt.scw","sha":"0e2dfcf5f4578aa374e078494ea090cce78ca597"},{"file":"sc3d\/item_bolt_crate.ktx","sha":"797106548474c18b20518b98b672490c2d6b69f7"},{"file":"sc3d\/item_bolt_crate.pvr","sha":"2ea9e788c037876c33722b0c4bf0a3cebb6647df"},{"file":"sc3d\/item_bolt_crate.scw","sha":"534f70ce13a5af1b3cf815044875ec24dfad8bc9"},{"file":"sc3d\/item_gem.scw","sha":"ca5e763d87d142db04c0de5aeb7476da937ac06f"},{"file":"sc3d\/item_power_up_bottle.ktx","sha":"c3bfdd0595728586603aa0ac1a4ac971975949c8"},{"file":"sc3d\/item_power_up_bottle.pvr","sha":"93283132c6c33552de504287da25c41a8659141a"},{"file":"sc3d\/item_power_up_bottle.scw","sha":"fdd5d4da05ab2e812b0bc9c8bcaae8be15b0f73d"},{"file":"sc3d\/item_present_blue.ktx","sha":"2becf61a18db014bfecd9c2569d50ed9d3fcf1d5"},{"file":"sc3d\/item_present_blue.pvr","sha":"f91ccc1ad1d0162373b3d6ea204bcf23395617db"},{"file":"sc3d\/item_present_red.ktx","sha":"a3d9deb23ef487158ef8f55a58a99ce0633b28a1"},{"file":"sc3d\/item_present_red.pvr","sha":"1b2b2394859563302b3ca10684c3d4c875bdcd02"},{"file":"sc3d\/item_present_red.scw","sha":"14f02b51844022e9504a4fdc68663315c75ffc14"},{"file":"sc3d\/item_showdown_boost.ktx","sha":"1affcf81c1239fac560a6638132cfe177222408e"},{"file":"sc3d\/item_showdown_boost.pvr","sha":"5f5d7328fe3e7415caf3f39606e3c750ea9de45c"},{"file":"sc3d\/item_showdown_boost.scw","sha":"a5a3fbf081e4fc1b663c24a15164b45ef6cb6019"},{"file":"sc3d\/item_showdown_boost_moon_festival.ktx","sha":"19d497e0cbf7d50cfc88847171ee06b8c8f4a8ac"},{"file":"sc3d\/item_showdown_boost_moon_festival.pvr","sha":"9451900d88c79a35d5e0e5fa698e6803d10822a3"},{"file":"sc3d\/item_showdown_boost_moon_festival.scw","sha":"22a79324b9af8ddb67f57992c91b7991454b1fa8"},{"file":"sc3d\/jacky_attack.scw","sha":"d7dc8a8ed400ef90f712c2d6c938d19e5722ac46"},{"file":"sc3d\/jacky_geo.scw","sha":"72c6eaa7be8b858fc7a3ad0db353e6568d8af79d"},{"file":"sc3d\/jacky_idle.scw","sha":"0171c818cca20058ee3d663871c6786284816ded"},{"file":"sc3d\/jacky_lose.scw","sha":"df270e9cd49baf398b4396afe49b70d2e2baecea"},{"file":"sc3d\/jacky_portrait.scw","sha":"4fa12fd2523f24a113d42754a96350950c32c10c"},{"file":"sc3d\/jacky_super.scw","sha":"77d2d1f828d919a9d666987578eff36f83ea86dc"},{"file":"sc3d\/jacky_tex.ktx","sha":"3c8b03c249595a5cba2ad5e626824b8b18b7a110"},{"file":"sc3d\/jacky_tex.pvr","sha":"8cf4ddc763ea7b94e383518061af2a0d540383e0"},{"file":"sc3d\/jacky_walk.scw","sha":"d14d9d7c8a8fe329f4a86650a35fef40369e029d"},{"file":"sc3d\/jacky_win.scw","sha":"6566834260b9ae700c9777111dfa754698df9cb1"},{"file":"sc3d\/jessie_attack.scw","sha":"8f852a5b6f9605c5f826e371467281f119fa21d3"},{"file":"sc3d\/jessie_base_cam.scw","sha":"4a41c75b541704143a5cdd263c8332a55961e612"},{"file":"sc3d\/jessie_geo.scw","sha":"9cca8300347868e32eab6187c802a6b108010464"},{"file":"sc3d\/jessie_idle.scw","sha":"883ea06faac2d40b5399b17ef76cbefd1b7f8383"},{"file":"sc3d\/jessie_knight_attack.scw","sha":"5484be38320063f8161eb1f315dd09fe0e1db0de"},{"file":"sc3d\/jessie_knight_battlewin.scw","sha":"49576e8e8daf46a0286e78b41871119ef041f025"},{"file":"sc3d\/jessie_knight_geo.scw","sha":"33aeeaeee51abcac4fc23c7d24ff94ecac4b8cc2"},{"file":"sc3d\/jessie_knight_idle.scw","sha":"bc19975549816d94f21f75eeab86f1f68bf304b4"},{"file":"sc3d\/jessie_knight_lose.scw","sha":"e47eb54857207354112d62bc5e880f711fb6c030"},{"file":"sc3d\/jessie_knight_pushback.scw","sha":"fbb17f9fc22e700e5521acb01c90714f42e6b1e7"},{"file":"sc3d\/jessie_knight_tex.ktx","sha":"668e855f87d9fb9cec4b6ddb2292d201208fe535"},{"file":"sc3d\/jessie_knight_tex.pvr","sha":"30d1a85a22d1a6e1c5740fa76d62b1978a8b7857"},{"file":"sc3d\/jessie_knight_walk.scw","sha":"edddea394f1cdbd022f790f6540f8cb63809695f"},{"file":"sc3d\/jessie_knight_win.scw","sha":"c5bbcebbb9c41066e2501eff5faa48e43f1f520e"},{"file":"sc3d\/jessie_knightdark_battlewin.scw","sha":"240a488657b88812aed326db2d0ea7e535aefc2e"},{"file":"sc3d\/jessie_knightdark_idle.scw","sha":"127b45bf364e8a0d3ea2016b47466329ad0d028c"},{"file":"sc3d\/jessie_knightdark_win.scw","sha":"903f7a8d2020ba79ca63b80aa84ae6f4df78fb04"},{"file":"sc3d\/jessie_lose.scw","sha":"a1e5fd131d4e3e1ab35ae65ea5467043e2108490"},{"file":"sc3d\/jessie_portrait.scw","sha":"2b9e7ed90af622d8763910e66dc268df5cec4873"},{"file":"sc3d\/jessie_pushback.scw","sha":"a5d7302e57ccc2f48b7f3fadf542f93c5ecb225f"},{"file":"sc3d\/jessie_summertime_geo.scw","sha":"9cb4982c77fa4ddc02b9880d1d62ccc25e5f18dc"},{"file":"sc3d\/jessie_summertime_tex.ktx","sha":"f6fa7ad7db6bd9eb0e43aee44168ff36cf1b5f22"},{"file":"sc3d\/jessie_summertime_tex.pvr","sha":"fba850b87bbd93b52962a1907a2c106166716f19"},{"file":"sc3d\/jessie_summertime_walk.scw","sha":"f292df5cc54d41f1d32052dfe4aff8ea811b3247"},{"file":"sc3d\/jessie_tanuki_attack.scw","sha":"efdf731a7ea9f5c9a50e15cc0729a2cbe4ab2d55"},{"file":"sc3d\/jessie_tanuki_geo.scw","sha":"88d83289f18495ddca86bf2292d697b4016d36cd"},{"file":"sc3d\/jessie_tanuki_idle.scw","sha":"f666721970ca343b6042fdb2f0f20925d1c25827"},{"file":"sc3d\/jessie_tanuki_lose.scw","sha":"6edb14c99f0d140eca93bda4bb094b6bf8385bda"},{"file":"sc3d\/jessie_tanuki_tex.ktx","sha":"991f6d9b2a24edac3df1d86d4a55619c2f8db7bd"},{"file":"sc3d\/jessie_tanuki_tex.pvr","sha":"d4daa997f51a875dd727c884f382f7e0ec377bb5"},{"file":"sc3d\/jessie_tanuki_walk.scw","sha":"05d361b85f0200608f510855a10d15af9fcbc04d"},{"file":"sc3d\/jessie_tanuki_win.scw","sha":"677b62950f29d7a94bb847371b0a1bdeea986ff0"},{"file":"sc3d\/jessie_tex.ktx","sha":"bef3c424a15f616afaac72fe0e9049389c8c2a66"},{"file":"sc3d\/jessie_tex.pvr","sha":"92c9b7f0868ed554af00c318a4cac9f4536dc116"},{"file":"sc3d\/jessie_walk.scw","sha":"cd1ad62b4c584f2e4e2fc6a6caf9121b6ca7a89a"},{"file":"sc3d\/jessie_win.scw","sha":"25c87c2b614b5807bd986ec0af970661913df900"},{"file":"sc3d\/leon_attack.scw","sha":"6e031e203fda80ad7a534b340924c221f07239d2"},{"file":"sc3d\/leon_base_cam.scw","sha":"d655fd10164e1f1f06924afc5681109c8a5269f4"},{"file":"sc3d\/leon_geo.scw","sha":"1105bdef0643baeea2906f947d203900cafb8171"},{"file":"sc3d\/leon_idle.scw","sha":"ed39232524084922420c5bdec2bd9268afda7ed6"},{"file":"sc3d\/leon_lose.scw","sha":"fa8935960d6b8e0eea91b0a7ab681f78d46fb5d8"},{"file":"sc3d\/leon_pushback.scw","sha":"636f2ff9ce098ec94fb4313f65b23bef9c722869"},{"file":"sc3d\/leon_sally_geo.scw","sha":"55bebdee9b2ed5d9fcd740d00a40f259e65b9b0f"},{"file":"sc3d\/leon_sally_tex.ktx","sha":"f16057bcd7770cffc804de139163833257103e5e"},{"file":"sc3d\/leon_sally_tex.pvr","sha":"8aea1b036353c2d4edbbaee403093e21ad9c515c"},{"file":"sc3d\/leon_sally_win.scw","sha":"e1731e0af62cc3e9452a0718814b4725d2b5ff52"},{"file":"sc3d\/leon_tex.ktx","sha":"2cc67701e8d1271575c58a6e0b4c7446e9f2f722"},{"file":"sc3d\/leon_tex.pvr","sha":"5f50e5a7ccc73ee576e0a19d7c5a53fcfcf53553"},{"file":"sc3d\/leon_walk.scw","sha":"f893503af4d7a9d0024ecc17d8ce28a7b37c4798"},{"file":"sc3d\/leon_win.scw","sha":"c96b9a2bb9e334756592000e3a2b73750e6c7461"},{"file":"sc3d\/leon_wolf_attack.scw","sha":"cf84d2132f9be1c6ac925f58587e051f047ea380"},{"file":"sc3d\/leon_wolf_geo.scw","sha":"44f93a36664134bd51b0a4db9222429e8a2d4ec2"},{"file":"sc3d\/leon_wolf_idle.scw","sha":"13f44fbf6ccd8012ca08301bc6a9c32ed74ba327"},{"file":"sc3d\/leon_wolf_lose.scw","sha":"426bc571d376732dbc4eb8e9f314dbf1654cb0c3"},{"file":"sc3d\/leon_wolf_portrait.scw","sha":"3ee519171983f4b561928c39f0d0c7e526e71af3"},{"file":"sc3d\/leon_wolf_pushback.scw","sha":"c41c395c67fce7a89aa38ad9d15f6385fa34ca2c"},{"file":"sc3d\/leon_wolf_tex.ktx","sha":"6e1a32411201e79638b2c5ab5266e0460411cb52"},{"file":"sc3d\/leon_wolf_tex.pvr","sha":"d56af2b2d03c4454e12b5900af68d4163a466476"},{"file":"sc3d\/leon_wolf_walk.scw","sha":"ccd2732b795369bcf75a71a9cf85ad7162d3f9a7"},{"file":"sc3d\/leon_wolf_win.scw","sha":"a58eef316984413bed46b5bb312699b4d63c025d"},{"file":"sc3d\/light_gradient_1.ktx","sha":"602544d30d04500096c5d0f1b2c56c409fccdc26"},{"file":"sc3d\/light_gradient_1.pvr","sha":"a29d153a720311b9b84a45ea94472033152436bd"},{"file":"sc3d\/mari_attack.scw","sha":"ef440b397c4fec4e4f1f2a123fbd7a1b0342bf1c"},{"file":"sc3d\/mari_geo.scw","sha":"4d463653b34383f158ba292001b9a9d73507e436"},{"file":"sc3d\/mari_idle.scw","sha":"2bfc5eaba96bb1063f470438c0212665dae0f47e"},{"file":"sc3d\/mari_lose.scw","sha":"f8ad5a1cf2dff42b448510400f14fa8c3f7ddcd2"},{"file":"sc3d\/mari_pushback.scw","sha":"915d237ef04bae991c7ba9735ada03654187b700"},{"file":"sc3d\/mari_tex.ktx","sha":"46cc9b502c35ae51b05b9eb6426b4f10d633eba1"},{"file":"sc3d\/mari_tex.pvr","sha":"20704e1d9d91d13c4c9bed4c307ba0459b2b16ff"},{"file":"sc3d\/mari_ult.scw","sha":"0cf4287f3504bcd97387368c0915b547e52127f1"},{"file":"sc3d\/mari_walk.scw","sha":"773d5b2f59b556f994000157d349605e3da88b83"},{"file":"sc3d\/mari_win.scw","sha":"da9723094ecb6009a47b8c862fe1e19bf3c9b1cb"},{"file":"sc3d\/mariachi_attack.scw","sha":"360a87a652073179df62eb6b301d680d5fb22ddd"},{"file":"sc3d\/mariachi_geo.scw","sha":"2556f2b87e0c38fb6883703e21417f491c848a17"},{"file":"sc3d\/mariachi_idle.scw","sha":"c38b8b4f021239c7705532aba36b7c49cbd14b2b"},{"file":"sc3d\/mariachi_lose1.scw","sha":"4bc7beabf2b2a66c47bcb0eda7cd4077ae68abf5"},{"file":"sc3d\/mariachi_loseloop1.scw","sha":"f7c300f1e04b978fb2f8555cea44e5c35e477b3a"},{"file":"sc3d\/mariachi_recoil.scw","sha":"4d6b182257798c17800b15db62efa126bc30a33d"},{"file":"sc3d\/mariachi_reload.scw","sha":"538b433605ed52a966d4def73143dedb5da88a20"},{"file":"sc3d\/mariachi_tex.ktx","sha":"ff00a921ad176a4986cec85e94f10885a64a1752"},{"file":"sc3d\/mariachi_tex.pvr","sha":"b6fb5d5cb68f4d2142b3497327208dc8003d48d4"},{"file":"sc3d\/mariachi_walk.scw","sha":"95c09487f655278231d31869fcc8db694621b185"},{"file":"sc3d\/mariachi_win1.scw","sha":"5691039152bcb7a680022872cdc79a4e6c4ac783"},{"file":"sc3d\/mariachi_winloop1.scw","sha":"945a1e0acda1bab5246e85d5169df2032b82695a"},{"file":"sc3d\/masks\/8bit\/8bit_light_msk.png","sha":"f6d3726d025317f19d4fea01dcfd9f8bf5fd6d1a"},{"file":"sc3d\/masks\/8bit\/8bit_msk.png","sha":"4f0d1dfcef699a841060653c2dfe48654173ec16"},{"file":"sc3d\/masks\/barley\/coat_msk.png","sha":"4b94a675c2be7d14117414ff4407c881da9d6622"},{"file":"sc3d\/masks\/bo\/bo_mecha_ammo_msk.png","sha":"ade295bb43f5c647654bf876108616041a635e2d"},{"file":"sc3d\/masks\/bo\/bo_mecha_colour01_msk.png","sha":"26ead54e7e0c0a116d4640bf5931a06ba28a6426"},{"file":"sc3d\/masks\/bo\/bo_mecha_colour02_msk.png","sha":"a460a7c9c2a9239314c040841e5a91fc6cc1a5cc"},{"file":"sc3d\/masks\/bo\/bo_mecha_eyesvisor_msk.png","sha":"e6e106add5b0d29c538c9dbd19fd5a83082152e5"},{"file":"sc3d\/masks\/bo\/bo_mecha_seams_msk.png","sha":"0f6119566d608f93f2daef941009f377ffe157ce"},{"file":"sc3d\/masks\/bull\/bull_footbull_colour01_msk.png","sha":"56cc3d86a2fc4bba62b18d2a86aeb63961092593"},{"file":"sc3d\/masks\/bull\/bull_footbull_helmet_msk.png","sha":"3a06d13a25d3a113dcf32bd23739416faf8a7317"},{"file":"sc3d\/masks\/bull\/bull_footbull_metal_msk.png","sha":"956b1f1db1119963210663b12feaa9dc72610078"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour01_msk.png","sha":"4ee849e7565c8af455788f3f36f4d09d3203bab9"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour02_msk.png","sha":"3437734700cd38a53a92742783d69280c4b27e7a"},{"file":"sc3d\/masks\/crow\/crow_mecha_colour03_msk.png","sha":"86850fa2eaa00681364efbe713e0c9d64c7826be"},{"file":"sc3d\/masks\/darryl\/darryl_msk.png","sha":"0670de72742896b4fa9b55c6caf66b25a163c26f"},{"file":"sc3d\/masks\/dynamike\/dynamike_mecha_ammo_msk.png","sha":"c92d04de336ff577c096724f2651ae8540c3e4e3"},{"file":"sc3d\/masks\/frank\/frank_dj_coat_msk.png","sha":"26df9bc99c9827739b162653e263ce53199adc51"},{"file":"sc3d\/masks\/jessie\/jessie_knight_fabric_msk.png","sha":"05ddb1f953631b648ff24bfeee4be1baa19b8ed4"},{"file":"sc3d\/masks\/jessie\/jessie_knight_gold_msk.png","sha":"c423f19dae74be449573ea3ae22259ee168c7347"},{"file":"sc3d\/masks\/jessie\/jessie_knight_metal_msk.png","sha":"c82d97c963bea4e4f8ab152bd9c6e792017e1e62"},{"file":"sc3d\/masks\/jessie\/jessie_knight_plume_msk.png","sha":"9256da7fe5f42acb21cee87a21ab54a0a805e4e0"},{"file":"sc3d\/masks\/jessie\/jessie_turrret_dragon_belly_msk.png","sha":"06481d71646fe760fe70f249858da3fd56c43ef4"},{"file":"sc3d\/masks\/jessie\/jessie_turrret_dragon_main_msk.png","sha":"509bdc92dd7d5505e307252f426a2cbee00df1cd"},{"file":"sc3d\/masks\/sprout\/sprout_glass_msk.png","sha":"55597a390eb3a2cfacd6f00c0245d4cdd292e051"},{"file":"sc3d\/max_attack.scw","sha":"b4ecb5d735347bb310d2f390974b62ab4190ae0b"},{"file":"sc3d\/max_geo.scw","sha":"ddcfc1f65b10a26837b50aee52120db795d8c5c1"},{"file":"sc3d\/max_gt_tex.ktx","sha":"f4dfd3199267fc1bce4259c529b689b074408c29"},{"file":"sc3d\/max_gt_tex.pvr","sha":"46781a6b1f74dcbb33bc6c690f3ee152a4765bfd"},{"file":"sc3d\/max_idle.scw","sha":"0471dfdf96aa733b7f859c28eb03352595518a30"},{"file":"sc3d\/max_lose.scw","sha":"83130ec2938c8ab5c92de2f5b453e29779e228f9"},{"file":"sc3d\/max_portrait.scw","sha":"3ddfb5745d45feffb0b5abe50dd92ca62bc29767"},{"file":"sc3d\/max_pushback.scw","sha":"cf6bf4f60e1d37dbb669737933df6374b651999f"},{"file":"sc3d\/max_reload.scw","sha":"7deb29a02e5cc4734454c41cc5a7a7dcd89003a4"},{"file":"sc3d\/max_super.scw","sha":"5748b7abf1eca3ffc06fc3c3baaccad6e0050808"},{"file":"sc3d\/max_tex.ktx","sha":"9f7388d9e8d2c7f6b78d29ff55ede5efc824748d"},{"file":"sc3d\/max_tex.pvr","sha":"a6bd34ba60dd7ca19fe1b8c0151ece03b41f4e7b"},{"file":"sc3d\/max_walk.scw","sha":"edd8c8f40296fa07aa764353b17c076aab5f978c"},{"file":"sc3d\/max_win.scw","sha":"35dd966de5a5e0812bf5c3a17e1772e570cc4f5f"},{"file":"sc3d\/meleebot_geo.scw","sha":"4d81a226390d594c21516eda427f820ee5ebdd24"},{"file":"sc3d\/meleebot_idle.scw","sha":"d1269c954c717165eff21efb3376357cc238bd41"},{"file":"sc3d\/meleebot_tex.ktx","sha":"3f6cbb75e425daa91947c8a7d293e7905676bed1"},{"file":"sc3d\/meleebot_tex.pvr","sha":"ae15a57a43445c1e5537e67f00f9799b7b738367"},{"file":"sc3d\/meleebot_walk.scw","sha":"3de7bfd829850520dfd9bd1f149cb1d91d47c811"},{"file":"sc3d\/menu_diffuse_lightmap.png","sha":"b24c733a99ca2993394b5802dcf79470e367e71d"},{"file":"sc3d\/menu_hair_diffuse_lightmap.png","sha":"5d1a4910aba8882b5fad1967d3eb16fedaadb3e5"},{"file":"sc3d\/menu_hair_specular_lightmap.png","sha":"7e40b0b1fc2085be1d5af924752e731c93bce44d"},{"file":"sc3d\/menu_metal_diffuse_lightmap.png","sha":"52857165ae137a2ff6e6a7cd486e412996c0da2d"},{"file":"sc3d\/menu_metal_specular_lightmap.png","sha":"5c1bda3d2862339bd38e5c3c61d1b7c8f3a145bb"},{"file":"sc3d\/menu_specular_lightmap.png","sha":"f5e7a12b8a827f98bad80af072948820b47f7770"},{"file":"sc3d\/metal2_specular_lightmap.png","sha":"df82a9bd8291300abb233fd6c2d7fe31dd166c9a"},{"file":"sc3d\/metal_diffuse_lightmap.png","sha":"06a27bf1531309e58a6648bba4c033e6da468bb2"},{"file":"sc3d\/metal_diffuse_lightmap_night.png","sha":"efaa328fb9e290e619dca329c6f867f91bf7cea8"},{"file":"sc3d\/metal_specular_lightmap.png","sha":"a095801e8a417b1aa36b159a99ac26744c1a1269"},{"file":"sc3d\/metal_specular_lightmap_night.png","sha":"3a48652eafd64afc6777a95ef96354be4d86692e"},{"file":"sc3d\/mine_cart.scw","sha":"756cf60a3c652259e4433259eac5d97b546dae15"},{"file":"sc3d\/mine_cart_b.scw","sha":"e8fdcd09401a9da6412ada83222be735c67a07cf"},{"file":"sc3d\/mine_cart_c.scw","sha":"c28fa219ba7740b75a4f5fbe68084ba91636bfe7"},{"file":"sc3d\/mine_cart_d.scw","sha":"c28fa219ba7740b75a4f5fbe68084ba91636bfe7"},{"file":"sc3d\/mine_cart_e.scw","sha":"a9b4f1d960f1ddeae8ba6799664f3ab0807c0b54"},{"file":"sc3d\/mine_gem_spawn.ktx","sha":"eb886162fbeda6a919f6d9dd40b1f57620e784e5"},{"file":"sc3d\/mine_gem_spawn.pvr","sha":"14c81ec865148c9a62efc7c449c2bb7a1e0abc09"},{"file":"sc3d\/mine_gem_spawn.scw","sha":"a138d1649643b5b81212efcafbddf8ea99425b66"},{"file":"sc3d\/mine_gem_spawn_darryls_ship.scw","sha":"f343e3fbbdb7d3f01b9a88552ec6fb0c6bea85bc"},{"file":"sc3d\/mine_gem_spawn_glow.ktx","sha":"dda27345166f2a95d69b83c71e44d16df1831179"},{"file":"sc3d\/mine_gem_spawn_glow.pvr","sha":"308905a00280e99367c3c333fc99cd1e43bd8f20"},{"file":"sc3d\/mine_gem_spawn_glow_snowy.ktx","sha":"3eded88e5268f01b63b5b636651f0bccc435ba13"},{"file":"sc3d\/mine_gem_spawn_glow_snowy.pvr","sha":"d09ef9f36f88b0e1bc4a7d48b13e24f10e4f185c"},{"file":"sc3d\/mine_gem_spawn_ice.scw","sha":"c42764e8399b348018b534f0800fdfc522770cd1"},{"file":"sc3d\/mine_gem_spawn_mortuary.scw","sha":"737c9b8ce9c3293bb09b41137059d196535ee278"},{"file":"sc3d\/mine_gem_spawn_retropolis.scw","sha":"d22463714a9d101e794ad0ea22707010c44ded0b"},{"file":"sc3d\/mine_gem_spawn_town.scw","sha":"def739dc2ab46c1af585ef5db62b164413c973bd"},{"file":"sc3d\/minigunner_geo.scw","sha":"7d5ee554d0fd48db61297f5fde95367bb60c8454"},{"file":"sc3d\/minigunner_idle.scw","sha":"49f29bc15ca81b4748d20fe2a6507631ee4d816a"},{"file":"sc3d\/minigunner_lose1.scw","sha":"86df8c31d7172a06b9eede96fb898e3ffe93b832"},{"file":"sc3d\/minigunner_ulti1.scw","sha":"17ceb48d14dd38f82ec006eb404c0d30bca9894e"},{"file":"sc3d\/minigunner_walk.scw","sha":"faec2d1912cf64b7408f6786cdf1a312b685247a"},{"file":"sc3d\/minigunner_win1.scw","sha":"22109e518b144317ff0774463f011f3b7d66394b"},{"file":"sc3d\/mist_1.ktx","sha":"1f6e3a439531511108b8d68b7a3adccbf5d4b6c3"},{"file":"sc3d\/mist_1.pvr","sha":"f5ad17e8694fa252d628b04192250c2d7eb7dc3e"},{"file":"sc3d\/mist_1.scw","sha":"9bce70a1c20a5496ee9f09c6b090adfa68aa6883"},{"file":"sc3d\/mortis_attack.scw","sha":"73b1b3a14380e407c02d0fc2ec942190c6520670"},{"file":"sc3d\/mortis_base_cam.scw","sha":"5cdd0bb21b15b1ce1bb342d936c96294f6c43f3f"},{"file":"sc3d\/mortis_geo.scw","sha":"8261455b616b35ee18d3b62b576b1b7c332cc871"},{"file":"sc3d\/mortis_greaser_geo.scw","sha":"e72667f36733f0bc0fa62f1db97a6ba7db704662"},{"file":"sc3d\/mortis_greaser_idle.scw","sha":"02ab7391aa973b03703a827d399e4b7f43b65a92"},{"file":"sc3d\/mortis_greaser_lose.scw","sha":"f4c26c5a92d4ddeab24da198cee4aa2e41beaea2"},{"file":"sc3d\/mortis_greaser_tex_02.ktx","sha":"c4ef02ed7c6b263ec55b521958b6f975666bdd75"},{"file":"sc3d\/mortis_greaser_tex_02.pvr","sha":"d35025a4aa095dd557677f9c32150e0a0eb0d42a"},{"file":"sc3d\/mortis_greaser_win.scw","sha":"2cd855be5b744cf986567ab8cc6439756a869c22"},{"file":"sc3d\/mortis_idle.scw","sha":"41e327793b804242f42b1c85f4ff30d7aa7ef778"},{"file":"sc3d\/mortis_lose.scw","sha":"903da08e837025d6e97a09dd15a6606e2f92ecb1"},{"file":"sc3d\/mortis_nightwitch_geo.scw","sha":"54e6d6e2e12d3daeff538197b17ac43cc7f9c49e"},{"file":"sc3d\/mortis_nightwitch_tex.ktx","sha":"7e5cb8541403a8b8db6b153493d190b35483e014"},{"file":"sc3d\/mortis_nightwitch_tex.pvr","sha":"221dae56b123fe2028bdc63ab98a9d629a054d11"},{"file":"sc3d\/mortis_nightwitch_win.scw","sha":"0f3d24656513c0503c2061e065a50bc9e56e1323"},{"file":"sc3d\/mortis_pushback.scw","sha":"6ebb2aba5fceaf350bcf1c7fd693506f2b631096"},{"file":"sc3d\/mortis_ulti.scw","sha":"ad2b167c830c5d1d5e8d8b4dca820542229b3ac6"},{"file":"sc3d\/mortis_v2_tex.ktx","sha":"529d105660b9acac363e853ae404f66ff82a147e"},{"file":"sc3d\/mortis_v2_tex.pvr","sha":"898c5380541956635a8f310bde4e19d5602299a6"},{"file":"sc3d\/mortis_walk.scw","sha":"ca9719ce096f73d30d5d4b4eff848f92cfe7f2f7"},{"file":"sc3d\/mortis_win.scw","sha":"df014d2abb085f0477e2d142bf1547b04f7e57c2"},{"file":"sc3d\/mortuary_fence.scw","sha":"64ead70c9e619720320043c9095b5a598fa5cedc"},{"file":"sc3d\/mortuary_tree_stump.scw","sha":"054ab0ced2ace8b3d24cb6d4513fb883fa4b5b5f"},{"file":"sc3d\/mrp_agentp_geo.scw","sha":"94c852899b129308d7ffd396b721f1688c10637d"},{"file":"sc3d\/mrp_agentp_spawner_tex.ktx","sha":"48a2e5616d609162f18f9af86e564dd62ec1f0e5"},{"file":"sc3d\/mrp_agentp_spawner_tex.pvr","sha":"e04dcdef97f550833e00a367e2fc57e14ec5681d"},{"file":"sc3d\/mrp_agentp_tex.ktx","sha":"5fd00447bf2e913dbba90a45692dafd198837429"},{"file":"sc3d\/mrp_agentp_tex.pvr","sha":"297f245b8113e391145e0c0873e22bc869994e51"},{"file":"sc3d\/mrp_agentp_win.scw","sha":"b0fd80fa12cd98271450a373ec640856e0263d22"},{"file":"sc3d\/mrp_attack.scw","sha":"6e23c1b06cab9317fa7d73ed05dfc479b17c5899"},{"file":"sc3d\/mrp_def_atk1.scw","sha":"17adf9b6c667ef92602b4a1ea85c7869fd2c2ab0"},{"file":"sc3d\/mrp_def_atk1_red.scw","sha":"d0dfa994721d641f5f7086835d4df6febefece33"},{"file":"sc3d\/mrp_def_atk1_texture.ktx","sha":"58b517b546fa7925882ea238338b8dad743362e5"},{"file":"sc3d\/mrp_def_atk1_texture.pvr","sha":"95822de5f6fa250085c7b5d413f5d6fbe90158db"},{"file":"sc3d\/mrp_def_atk1_texture_red.ktx","sha":"456631a9977ec6bde9d38f93c67eb6d98048dda3"},{"file":"sc3d\/mrp_def_atk1_texture_red.pvr","sha":"25c7c8b4e0e6538877f75ec1c35a601447c964c9"},{"file":"sc3d\/mrp_def_atk2.scw","sha":"670e64092257388620c0637314995eec11e9f178"},{"file":"sc3d\/mrp_def_atk2_red.scw","sha":"e466b7fb6309b3a1726e05ce7082dec6d2d9cb7d"},{"file":"sc3d\/mrp_def_atk2_texture.ktx","sha":"d27c1449f563427e782350e43154b1887da4ef1f"},{"file":"sc3d\/mrp_def_atk2_texture.pvr","sha":"87ffe922be4fbc9b08731c758cc72d3fe8fb6619"},{"file":"sc3d\/mrp_def_atk2_texture_red.ktx","sha":"b9e1e34027e7c20ae3c519ea50d11fbdb7ce779b"},{"file":"sc3d\/mrp_def_atk2_texture_red.pvr","sha":"13a633a60a73443ddd2ade838df0851fe8995cd0"},{"file":"sc3d\/mrp_geo.scw","sha":"1ded8b030ead61740988bce0f883034cc55e5a92"},{"file":"sc3d\/mrp_idle.scw","sha":"ae4690a7eed4b65f458e1c44123a9eb3e7866845"},{"file":"sc3d\/mrp_lose.scw","sha":"e32e4318c4f2cb09e114cee4588244bda380a55d"},{"file":"sc3d\/mrp_pet_geo.scw","sha":"e5e1d86f4b786c4f896f7fef5df40cbe21509be6"},{"file":"sc3d\/mrp_pet_idle.scw","sha":"46a7968902b7e4e3079eeb9ab96e3af904342430"},{"file":"sc3d\/mrp_pet_walk.scw","sha":"d574e988a8de2e63b4c0720b86d44184e3bd3358"},{"file":"sc3d\/mrp_portrait.scw","sha":"e6c2a4138272d6636d0ebaeb857f444babb6e9e4"},{"file":"sc3d\/mrp_spawner_idle.scw","sha":"67a2c066fa79cdc817accc1ab11391a9a6d01b39"},{"file":"sc3d\/mrp_spawner_spawn.scw","sha":"861bd6a806445779e323469e665802c817484d3d"},{"file":"sc3d\/mrp_spawner_tex.ktx","sha":"a49948c7209442c6f77eb52ddfb4999510b5b31b"},{"file":"sc3d\/mrp_spawner_tex.pvr","sha":"b86cf5ddb571a41e27d0d3eb0e8ac93d81c16d55"},{"file":"sc3d\/mrp_tex.ktx","sha":"164e552bcce00fce88d2db22e4d703bacebeda77"},{"file":"sc3d\/mrp_tex.pvr","sha":"ba1ac86ef0de812318294aff006b9eb0aacbcd89"},{"file":"sc3d\/mrp_walk.scw","sha":"5c309882f0299dd1efc824c3d679e48c0d1446e0"},{"file":"sc3d\/mrp_win.scw","sha":"a082016ddfe8473c8779078b028af1fe3c6814f3"},{"file":"sc3d\/multi_bumper_car.scw","sha":"1c2d151b7223e58acbd1b7c5d5c0f96ca8a40919"},{"file":"sc3d\/mushroom_1.ktx","sha":"32d64619292affcb2851a742d00cc15272860202"},{"file":"sc3d\/mushroom_1.pvr","sha":"9705487bd9380b82d6f7a7b04904f07d12b91b38"},{"file":"sc3d\/mushroom_1.scw","sha":"ebed46067731285bfffb58710c19ae9cc1c04821"},{"file":"sc3d\/mushroom_1_small.scw","sha":"2c079f4cb89645d548e62e8755001ab99eae77c0"},{"file":"sc3d\/ninja_ability_tex.ktx","sha":"49761b0461f87462d0a29e1acf04b67f32253dc9"},{"file":"sc3d\/ninja_ability_tex.pvr","sha":"f9ce899a2eb9fcac1e1c28a1d21f1b8fc457b637"},{"file":"sc3d\/ninja_attack1.scw","sha":"b58753fe44011f23b8690d356a4201c142e6b26b"},{"file":"sc3d\/ninja_geo.scw","sha":"07a678b7c549d746bdefe41cf5bb7aa52a613035"},{"file":"sc3d\/ninja_idle.scw","sha":"5547a3dd2081a71eb05d7f2789d7b05623a411c7"},{"file":"sc3d\/ninja_lose1.scw","sha":"84859c50cd98ab23af67fdfd9d64c1fb3c223075"},{"file":"sc3d\/ninja_red_tex.ktx","sha":"c59c83cef2d4ba69293570ec542997855c9defe8"},{"file":"sc3d\/ninja_red_tex.pvr","sha":"e1159f7c69f6868b016b7de24ab5319b2aef444b"},{"file":"sc3d\/ninja_tex.ktx","sha":"94f58acd753d76ed1d50b47b6cd0d18c5f6431d5"},{"file":"sc3d\/ninja_tex.pvr","sha":"652b2028d98f3f2cfef426f6563c6bf332c81d91"},{"file":"sc3d\/ninja_ulti1.scw","sha":"5e229d95ccc8eee285c2ad03a475f3bcf0117e27"},{"file":"sc3d\/ninja_walk.scw","sha":"7be6502beacf97dbcbd97232147a79887fcf4f52"},{"file":"sc3d\/ninja_win1.scw","sha":"4b99bba384a46698f9ec337da9ddeef7d0dbb074"},{"file":"sc3d\/nita_attack.scw","sha":"eaa31aabbb5ea134d9171ccb5048c170677c64c7"},{"file":"sc3d\/nita_base_cam.scw","sha":"950c24ab7d65f8673bf9df5d5e58abae4fb48177"},{"file":"sc3d\/nita_bear_attack.scw","sha":"0256ca43e21b05b7c88e27d7a83f2ad1e401cac1"},{"file":"sc3d\/nita_bear_geo.scw","sha":"8bc72b7f561467764809655a652c1a6194080010"},{"file":"sc3d\/nita_bear_idle.scw","sha":"ea7432318ed8b1dbb94ce0a36b494e9f81c1f5eb"},{"file":"sc3d\/nita_bear_panda_tex.ktx","sha":"a7b46df904cd9e844fead8ee66afcd24d36f5907"},{"file":"sc3d\/nita_bear_panda_tex.pvr","sha":"f210d926dcccd4718593ce9f65d43c7de9d364ec"},{"file":"sc3d\/nita_bear_reindeer_tex.ktx","sha":"57b08118d36e948a69f7f925ac3fb67f57d8b9e6"},{"file":"sc3d\/nita_bear_reindeer_tex.pvr","sha":"62803466366326648852e696e08e69421329f904"},{"file":"sc3d\/nita_bear_shiba_tex.ktx","sha":"7d304948794b6d5775641ed7931a1826c8ee0ff9"},{"file":"sc3d\/nita_bear_shiba_tex.pvr","sha":"65f061152cff6fed0634583843a0910656b2703e"},{"file":"sc3d\/nita_bear_tex.ktx","sha":"ca03e07fb44cc10d3d9c7cabacf962411b3c7c1f"},{"file":"sc3d\/nita_bear_tex.pvr","sha":"7b77f0adf31a38d0e8b7002e742d7fa05d5faf00"},{"file":"sc3d\/nita_bear_walk.scw","sha":"8ec7dd4aa185fcde8cbdfeddb7a20b717fbfaac9"},{"file":"sc3d\/nita_bear_win.scw","sha":"43bc98797264cac3510738786d4c63fdb696c872"},{"file":"sc3d\/nita_geo.scw","sha":"d5c3fe5fb8bc8d9f0c9308bb1c87775c0aed9eb9"},{"file":"sc3d\/nita_idle.scw","sha":"31e341083f2089d853b680a58d8bfc23b534ed05"},{"file":"sc3d\/nita_koala_bear_tex.ktx","sha":"ce601ecdb776388dee32eb100fde09fc025f315b"},{"file":"sc3d\/nita_koala_bear_tex.pvr","sha":"acf58e12a14789e3d35ac614626fc9a109895ad6"},{"file":"sc3d\/nita_koala_geo.scw","sha":"15e6ea33a51eced43320df24dd69607256aab8ba"},{"file":"sc3d\/nita_koala_tex.ktx","sha":"e0f4496577be3cdd04553dbe41463d5672ea06a5"},{"file":"sc3d\/nita_koala_tex.pvr","sha":"86b2e894aacb277be87127607f82bfd6199ff10b"},{"file":"sc3d\/nita_lose.scw","sha":"a4aec5607c2df4814d8a65eb395be61a6843d80b"},{"file":"sc3d\/nita_panda_tex.ktx","sha":"4e93edec31d7099c6ea614e768508202d9b455ea"},{"file":"sc3d\/nita_panda_tex.pvr","sha":"9c6f486a325e5aec87392483072fdcce61e17604"},{"file":"sc3d\/nita_pushback.scw","sha":"ec9a18aca46adbfa0bd15b7e54c3e41254b34549"},{"file":"sc3d\/nita_reindeer_geo.scw","sha":"d30eee4295f32aacf1cc732af94d8551b16d382e"},{"file":"sc3d\/nita_reindeer_tex.ktx","sha":"05e8ff4f08cc12afc6daf47bc4b043f919f81ef0"},{"file":"sc3d\/nita_reindeer_tex.pvr","sha":"416b7c86e78ffd785626bf632dcb62f1dd6e77cd"},{"file":"sc3d\/nita_shiba_geo.scw","sha":"e5bc4a66ea24bcf62d62a9e47128035c10573370"},{"file":"sc3d\/nita_shiba_idle.scw","sha":"a1b06ba096b3ee9c4a734718d17f0a5827480555"},{"file":"sc3d\/nita_shiba_tex.ktx","sha":"d8a66342d8bdd8e9c33bde86e55f859c50ace7c6"},{"file":"sc3d\/nita_shiba_tex.pvr","sha":"3f8ce1b814d4bffb7e969baae20d2c3ebabf37dc"},{"file":"sc3d\/nita_shiba_walk.scw","sha":"0f4a9a9780fb139ca961e6db44c54a505473a6a3"},{"file":"sc3d\/nita_shiba_win.scw","sha":"c5d49ddad0af96a984a68baaf8f6f6a3bd59abc0"},{"file":"sc3d\/nita_tex.ktx","sha":"6d480fc270c9285682290856821ef16c03dea72b"},{"file":"sc3d\/nita_tex.pvr","sha":"e4c49b1d0ae59f4818ca896d5d89846673152de4"},{"file":"sc3d\/nita_walk.scw","sha":"d5289877c1729bc452179acc4670918b4cef3c81"},{"file":"sc3d\/nita_win.scw","sha":"d47eb798aad626ae517fa2e8d07ebe6e7ff74652"},{"file":"sc3d\/pam_base_cam.scw","sha":"3249c15ca88a1ec9156a690cc4510bc4652ec0cc"},{"file":"sc3d\/pam_tex.ktx","sha":"e74b1d3814d44e8599e958cfb6b70e1f67d37bff"},{"file":"sc3d\/pam_tex.pvr","sha":"fc78e930f69ef927b128de00af52a14b86201bff"},{"file":"sc3d\/park_bench_1.scw","sha":"2b5e837f4af978ab5f754b2db11fbc1bd6c37e2c"},{"file":"sc3d\/penny_base_cam.scw","sha":"f7248f7a32f6519d06cc690d8eb8ca902fa4b351"},{"file":"sc3d\/penny_bunny_geo.scw","sha":"1a2cc6416792a5c0a173db48aadc5475ea3dbc44"},{"file":"sc3d\/penny_bunny_tex.ktx","sha":"27c8af3211d303df05a33cb18514d7cac23a091f"},{"file":"sc3d\/penny_bunny_tex.pvr","sha":"790473ef284c7949012e6559d4b5b3fdbaa063d4"},{"file":"sc3d\/penny_bunny_walk.scw","sha":"54ae430aabfe9271eb97d06549dd7dd064acfce2"},{"file":"sc3d\/penny_bunny_win.scw","sha":"bf85ad5db314d7e5580190d561360595d863a05c"},{"file":"sc3d\/penny_bunnydark_tex.ktx","sha":"463d13f61ff04e377334d3238b218c4d26b549a6"},{"file":"sc3d\/penny_bunnydark_tex.pvr","sha":"17cdebaf009fb665343b59237d3f7271fec3110d"},{"file":"sc3d\/penny_darkbunny_geo.scw","sha":"6dedce6fa8b8f298ff47bc8ec6be5a20b891564b"},{"file":"sc3d\/penny_elf_geo.scw","sha":"7b5b35b1d1212338def1b1900909e9f2c2a343ad"},{"file":"sc3d\/penny_elf_tex.ktx","sha":"0d7d932ac100f738145cd5e6b51cd3caff9833e2"},{"file":"sc3d\/penny_elf_tex.pvr","sha":"25f5e2ec4bb13e448705a62d56d88ba93a30ef72"},{"file":"sc3d\/penny_elf_turret_geo.scw","sha":"1ac3a16d9b8e6ff2957d8bfc32592f6f040da415"},{"file":"sc3d\/pinball_bumper.scw","sha":"4694684c22ded11fe73588dfd1e2a908f6a38d92"},{"file":"sc3d\/piper_attack.scw","sha":"605ff135171fdbae075b87c91c82aab087a88286"},{"file":"sc3d\/piper_base_cam.scw","sha":"2d7ccbe2735feb203d7d29469f10b3f9a6637690"},{"file":"sc3d\/piper_gadget_pistol_attack.scw","sha":"3d5d2be08504aad838db16bb12d546a0ed2924aa"},{"file":"sc3d\/piper_gadget_pistol_geo.scw","sha":"9fd8e39ce40f1db90d8f9a94b4f564d63282a1d3"},{"file":"sc3d\/piper_geo.scw","sha":"7a815e4aabb65210f8876591dbd48a117e3a4ea8"},{"file":"sc3d\/piper_idle.scw","sha":"72be1d8292d5cfae22a168fa8cebd8cca473fc02"},{"file":"sc3d\/piper_lose.scw","sha":"5c9987fd467dac64abb62842b1574ec3b3c168a4"},{"file":"sc3d\/piper_pink_tex.ktx","sha":"6a6d89e6555e2ac2637e48f468ec69498d927fef"},{"file":"sc3d\/piper_pink_tex.pvr","sha":"eb9226e438994fc7198468bf9b5a8085002575aa"},{"file":"sc3d\/piper_portrait.scw","sha":"92b768e71b0bbe55041625f40fd0b7049e1aa1a4"},{"file":"sc3d\/piper_pushback.scw","sha":"793c3ea9b9a02142745dfdc100f57c40f8fb800f"},{"file":"sc3d\/piper_rose.scw","sha":"fb380e62f86d4ea4ba5f86336d71018fddddfeb6"},{"file":"sc3d\/piper_rose_geo.scw","sha":"9687e6ab193bc74c9bc8a3456460d2f28ca88378"},{"file":"sc3d\/piper_rose_tex.ktx","sha":"125c7e9cad529b8c415f6da29599ad7c6b914262"},{"file":"sc3d\/piper_rose_tex.pvr","sha":"9c56f324220f0b5d31c6156dc0f53d47de373ce8"},{"file":"sc3d\/piper_super.scw","sha":"3cea736ddf76e25d3dd8f0fa16d01d47d93e4033"},{"file":"sc3d\/piper_tex.ktx","sha":"82c7bb7acd45c4871ea4516c52e1770e4933920a"},{"file":"sc3d\/piper_tex.pvr","sha":"f132853d76fc7cca11c29cf61bad1a4c9316d0b4"},{"file":"sc3d\/piper_valentines_attack.scw","sha":"68b66b22298adfad4e0b792a218d7b2e774dc930"},{"file":"sc3d\/piper_valentines_cam.scw","sha":"2e5cd5225dcabcc9b42eb42be96db3742917ae29"},{"file":"sc3d\/piper_valentines_geo.scw","sha":"527a57a3d83f5da445192282a17fb2c24e64ad49"},{"file":"sc3d\/piper_valentines_idle.scw","sha":"3de41abe6f0dfa381c65b672d5482b2ff4294ab4"},{"file":"sc3d\/piper_valentines_lose.scw","sha":"35c577cd53174892be68762eccb4db982a843084"},{"file":"sc3d\/piper_valentines_reload.scw","sha":"68b66b22298adfad4e0b792a218d7b2e774dc930"},{"file":"sc3d\/piper_valentines_run.scw","sha":"23f3b460f4e279d49bdd808aa7dbca69b4c93f99"},{"file":"sc3d\/piper_valentines_tex.ktx","sha":"81367b532e8bef21e354fd33ef55be21a4b48ff5"},{"file":"sc3d\/piper_valentines_tex.pvr","sha":"712856c62aa6f7172903e8355d26529857c87961"},{"file":"sc3d\/piper_valentines_win.scw","sha":"07d3572b541066b303d0ba73d5cc1fd205d17be2"},{"file":"sc3d\/piper_walk.scw","sha":"da732d7dbc29e30289e7c6e4b6e88c206fb634b3"},{"file":"sc3d\/piper_win.scw","sha":"609580157cf6c659b523f6bd8b7bfebc19e96c6a"},{"file":"sc3d\/pirate_chest.scw","sha":"b754d21c16116e5be9f10b560af8c1d5ba73a2af"},{"file":"sc3d\/plant_1.ktx","sha":"885acf33e6ca81329f532d3c3dedade6b477221f"},{"file":"sc3d\/plant_1.pvr","sha":"fab446391b0fc6aa3b7c80498a5d0a826752eeef"},{"file":"sc3d\/plant_1_small.scw","sha":"fb7fcd2afae884f6174cbb21ee429edc505a8d5f"},{"file":"sc3d\/plant_retropolis_small.scw","sha":"7ccc506653a0f48ae401986ee5b436fea977e6ad"},{"file":"sc3d\/poco_attack.scw","sha":"5b236d612f1045fc387442107d7a71a4c8aabd08"},{"file":"sc3d\/poco_base_cam.scw","sha":"cf09fd58debd758cad6c28204477e27909bcbc58"},{"file":"sc3d\/poco_geo.scw","sha":"aee7b7e8d003b385faf3cca6535db210df8df9ec"},{"file":"sc3d\/poco_idle.scw","sha":"5612468f1206a16cc0bd0b5404ed60b41e4a1ec8"},{"file":"sc3d\/poco_lose.scw","sha":"d10e8a5b19d2e33345d0a201ee0c2a2013321a62"},{"file":"sc3d\/poco_pirate_geo.scw","sha":"9709edb469ae667246952280079e8ddad3afe7a5"},{"file":"sc3d\/poco_pirate_idle.scw","sha":"cbbdac481247920bb1c6239677a6f819b003b537"},{"file":"sc3d\/poco_pirate_lose.scw","sha":"a3dfa235dd8b3eb0ac0224f00d552b11914d6d5c"},{"file":"sc3d\/poco_pirate_tex.ktx","sha":"33d4e342e85edec4fe2bb9f386e4b2c3108c1983"},{"file":"sc3d\/poco_pirate_tex.pvr","sha":"97fd3a98353d1ea59536c501a90c9cc0032cde4b"},{"file":"sc3d\/poco_pirate_walk.scw","sha":"f73c8f9273a82b376520ccb6d93f8d2d8394916c"},{"file":"sc3d\/poco_pirate_win.scw","sha":"205115c78fc8b6bcb06307c2551c3f9ee713151d"},{"file":"sc3d\/poco_tex.ktx","sha":"e60039a6532060df1d18a8e4db4ceed5427bb90c"},{"file":"sc3d\/poco_tex.pvr","sha":"5690e86a1d0ea278fa727da8df3310d9589a352f"},{"file":"sc3d\/poco_valentine_geo.scw","sha":"426cc1ace15447cac29f4b6ed17acc8d2443ced6"},{"file":"sc3d\/poco_valentine_tex.ktx","sha":"27ec63f393b543dedc08936aa7210e824fd01cdc"},{"file":"sc3d\/poco_valentine_tex.pvr","sha":"36ff34074f2f1db85bf56213bdee7a26fec82261"},{"file":"sc3d\/poco_walk.scw","sha":"fc4215a26a5faaf2188626f30e7d32cf1b15a45e"},{"file":"sc3d\/poco_win.scw","sha":"2c9fedd5693b8525111130eedfdd031f28875574"},{"file":"sc3d\/portrait_cam.scw","sha":"268abca8f84fb597c11ab2f7f1de1118bb1ccaa0"},{"file":"sc3d\/pothole.scw","sha":"3f4f4c9ba6671c9ff3737623930ad85f3b8e5b4b"},{"file":"sc3d\/potted_plant_1.ktx","sha":"8951eeac6ee23d2fbc58976f44830ae5766db8f8"},{"file":"sc3d\/potted_plant_1.pvr","sha":"f7529504cece6e09389af03e7c7903f0d02d52f2"},{"file":"sc3d\/potted_plant_1.scw","sha":"5180465ceb3588226b76039ea3dd19784baf42cd"},{"file":"sc3d\/present_pile_xmas.scw","sha":"bddf15f5427d9efdd34c4b7953d59dfc3df9d744"},{"file":"sc3d\/primo_003_atk_projectile_alpha.ktx","sha":"ed04e725ed66e1a412699b4f9d9c381fd20c0688"},{"file":"sc3d\/primo_003_atk_projectile_alpha.pvr","sha":"dd06a1282784d7824e7539876389103c474b9f0d"},{"file":"sc3d\/primo_003_atk_projectile_blue.ktx","sha":"e92bbca82ac6210ccf0a98cced7e3add47b17f45"},{"file":"sc3d\/primo_003_atk_projectile_blue.pvr","sha":"f8f501e93a062b75767dfdbb83b1935f1aaa91e6"},{"file":"sc3d\/primo_003_atk_projectile_blue.scw","sha":"ae52d484e1a8e15dfc56adc74f4d9969b43e3f49"},{"file":"sc3d\/primo_003_atk_projectile_red.ktx","sha":"21c139b8c67c30b4cbbab286a25c89d4380e37b9"},{"file":"sc3d\/primo_003_atk_projectile_red.pvr","sha":"bf8c3516278037e914012e475222212923daa2eb"},{"file":"sc3d\/primo_003_atk_projectile_red.scw","sha":"1f8f10fceb0fafb6d4321d447bcd8f0a8c6e00d9"},{"file":"sc3d\/primo_attack.scw","sha":"d1e1887523be02baddca7b72a77d07a0936516e5"},{"file":"sc3d\/primo_base_cam.scw","sha":"8858c053470ab30747255e9d674a659ffbd4b3bb"},{"file":"sc3d\/primo_brown_attack.scw","sha":"b69d9493df0c102d17bd97ef01ca33370f7d7409"},{"file":"sc3d\/primo_brown_gadget_flip_attack.scw","sha":"9c45442bb0f6737719f1c786a3de7acc19aceb3c"},{"file":"sc3d\/primo_brown_geo.scw","sha":"9e19cdd12a898f69a775e34c5a96decf58f230ca"},{"file":"sc3d\/primo_brown_idle.scw","sha":"ff94a6eab99df77c655772581cb163df81400d97"},{"file":"sc3d\/primo_brown_lose.scw","sha":"4dfc17a82856ac03a0af22e44a42c7227bbcd181"},{"file":"sc3d\/primo_brown_portrait.scw","sha":"0101e9003436de5b72cbb6ff18e08cdf3a36c2fb"},{"file":"sc3d\/primo_brown_pushback.scw","sha":"1f8d38ba4001a2392c69922e00b6e110e8562776"},{"file":"sc3d\/primo_brown_super.scw","sha":"cc692daadc45be967d78890ab1d7bf3478d8392a"},{"file":"sc3d\/primo_brown_tex.ktx","sha":"a6245ad186297d6ac9bae49f2b6a16258cff2f78"},{"file":"sc3d\/primo_brown_tex.pvr","sha":"a57010e8a8040d93720407cd6d31aff4eafb574f"},{"file":"sc3d\/primo_brown_walk.scw","sha":"e39e05186a883fdb2dac8cb509ed5f0497fc24cb"},{"file":"sc3d\/primo_brown_win.scw","sha":"c0a63969d7334366fc4d807c37f4e4a6213d1078"},{"file":"sc3d\/primo_def_atk_projectile_alpha.ktx","sha":"834a83a8b21f60778a85a44fe7a2a20f429a7a0a"},{"file":"sc3d\/primo_def_atk_projectile_alpha.pvr","sha":"0ca01792eb813bf3d1c4705a05790aa9d78998c3"},{"file":"sc3d\/primo_def_atk_projectile_blue.ktx","sha":"a7890e62fff88830de5232e84739b5b7aa13ec92"},{"file":"sc3d\/primo_def_atk_projectile_blue.pvr","sha":"b9be5561ecbc557bbdcc0ae18a21a1f8b3d5b253"},{"file":"sc3d\/primo_def_atk_projectile_blue.scw","sha":"2f1df967ae7e4293156dbc00f5d4c20cf77d87ba"},{"file":"sc3d\/primo_def_atk_projectile_red.ktx","sha":"b46b9f896e3e5b69b87a9960026e44dabe66bb5d"},{"file":"sc3d\/primo_def_atk_projectile_red.pvr","sha":"23c3d17419e3920c4bd5bbe51bcca4cdd7c97ad7"},{"file":"sc3d\/primo_def_atk_projectile_red.scw","sha":"e1e760b688458ab4ad307bb1c66274f8b7d7d242"},{"file":"sc3d\/primo_elrey_geo.scw","sha":"d8c320581d23dbf5d696f2974251259657c3e987"},{"file":"sc3d\/primo_elrey_tex.ktx","sha":"3a5b4131245e90547680ca44cfbb7e6926384036"},{"file":"sc3d\/primo_elrey_tex.pvr","sha":"1977bd0907a82ba10dc6c74404a964cf6f638d09"},{"file":"sc3d\/primo_elrudo_geo.scw","sha":"ed82096387268f7592610c4e7043d4b2762fdbd8"},{"file":"sc3d\/primo_elrudo_portrait.scw","sha":"ce51ea9f5665fc43021a361c39c2c2d5b0e081c4"},{"file":"sc3d\/primo_elrudo_tex.ktx","sha":"297105cafe04c1f28fc0ba96bd35d9322fdf0628"},{"file":"sc3d\/primo_elrudo_tex.pvr","sha":"dcedc2b78e1c776f48472ecce18cb71cdc8b75b4"},{"file":"sc3d\/primo_elrudo_win.scw","sha":"541e728142396d29e044ce409ffff2199d4a4cb1"},{"file":"sc3d\/primo_gadget_flip_attack.scw","sha":"18284851360e4ca347b19f2492a50cc284b34a7d"},{"file":"sc3d\/primo_geo.scw","sha":"c04ee42e6cf1f027fdb3387e6eef47fa89fceafe"},{"file":"sc3d\/primo_idle.scw","sha":"09a8f55cb8abbf5a3db566cab7c3b139c4c7be52"},{"file":"sc3d\/primo_lose.scw","sha":"556c06b06b7e30fc0ea457e2c2888d674b415798"},{"file":"sc3d\/primo_portrait.scw","sha":"5c615f11bc4358f87e2ac606d9c19c5f3e7574cc"},{"file":"sc3d\/primo_rey_attack.scw","sha":"d818543f30c262f25240ac1358982b475857c2df"},{"file":"sc3d\/primo_rey_idle.scw","sha":"5e967880dd2c389d0322d0fe3413103f81fdabc5"},{"file":"sc3d\/primo_rey_lose.scw","sha":"99466edcff0a6a4bb1ae06ba4a3e57991cf9177c"},{"file":"sc3d\/primo_rey_super.scw","sha":"8640f0f31ff1629bd2ae8c9b1749b151515fca0a"},{"file":"sc3d\/primo_rey_walk.scw","sha":"873046c623be1e37af9629ab6f1d3e5c0421716e"},{"file":"sc3d\/primo_rey_win.scw","sha":"7e59a8f1f4001fa8ca19a0dc56baa248683a8119"},{"file":"sc3d\/primo_super.scw","sha":"f7ad04683ac187ef0f10669551222acb0c794462"},{"file":"sc3d\/primo_tex.ktx","sha":"c6da735a15df81e8e7778e00ceabf0157009494d"},{"file":"sc3d\/primo_tex.pvr","sha":"51480db1a5e10dca97549cf502e85ed91ed082d6"},{"file":"sc3d\/primo_walk.scw","sha":"4188962cde8e88d7b24865802c8c328301c8dc32"},{"file":"sc3d\/primo_win.scw","sha":"cc8072dcdb777430b335e8f6c764b1a915c96cff"},{"file":"sc3d\/rangedbot_attack1.scw","sha":"71a32fb6eaac4f95e3457373d76729d4ab3fa865"},{"file":"sc3d\/rangedbot_geo.scw","sha":"13a56b982844fd903471a90ac4046e4a5d545131"},{"file":"sc3d\/rangedbot_idle.scw","sha":"4d175f027a6f08ff7683a99fbb6afe659b1642be"},{"file":"sc3d\/rangedbot_lose1.scw","sha":"411e1f8d289a31e52cf89a3a9f0e2fedc7c789f5"},{"file":"sc3d\/rangedbot_loseloop1.scw","sha":"34ac8ce4579609abde1da9a1c70c7d50de4b9f6e"},{"file":"sc3d\/rangedbot_recoil.scw","sha":"868563f93af4d4300d2f82d0bf1bf8e042a4fec3"},{"file":"sc3d\/rangedbot_reload.scw","sha":"24e93c5dc48e7ac29b31199ef21518beb77e99c6"},{"file":"sc3d\/rangedbot_tex.ktx","sha":"adde4060b3315906637bf3c603db4f917a311186"},{"file":"sc3d\/rangedbot_tex.pvr","sha":"193fe5ee46fe74d7812b8f1bf92ac4ee399ac660"},{"file":"sc3d\/rangedbot_walk.scw","sha":"bee7abb6651631dbe2fe526ebc77b028b32b0a96"},{"file":"sc3d\/rangedbot_win1.scw","sha":"8844d1ce582227f8ddc59c0d805da38e17056094"},{"file":"sc3d\/rangedbot_winloop1.scw","sha":"a416f4deafb5f45e1ab063370663402153481604"},{"file":"sc3d\/recoil.scw","sha":"b634dc0ec7b834a3c955ca9917d3d1ad5d8ee14e"},{"file":"sc3d\/recoil_2.scw","sha":"bed60e0789b66742e739f2afd3311311d2b05d07"},{"file":"sc3d\/retropolis_fence.scw","sha":"528623c721e13383a299b72ec21b36b04003faa5"},{"file":"sc3d\/rickoshea_attack1.scw","sha":"71a32fb6eaac4f95e3457373d76729d4ab3fa865"},{"file":"sc3d\/rickoshea_geo.scw","sha":"a0395d74ac5024cff5ed30bec4bf87d8a6da6370"},{"file":"sc3d\/rickoshea_gold_tex.ktx","sha":"e3215b2244934df7fb9b389b14295841b98ae7df"},{"file":"sc3d\/rickoshea_gold_tex.pvr","sha":"a11ed91ae5316922553c4a8f85a444969f9f4ffd"},{"file":"sc3d\/rickoshea_idle.scw","sha":"4d175f027a6f08ff7683a99fbb6afe659b1642be"},{"file":"sc3d\/rickoshea_lose1.scw","sha":"411e1f8d289a31e52cf89a3a9f0e2fedc7c789f5"},{"file":"sc3d\/rickoshea_loseloop1.scw","sha":"34ac8ce4579609abde1da9a1c70c7d50de4b9f6e"},{"file":"sc3d\/rickoshea_recoil.scw","sha":"868563f93af4d4300d2f82d0bf1bf8e042a4fec3"},{"file":"sc3d\/rickoshea_reload.scw","sha":"24e93c5dc48e7ac29b31199ef21518beb77e99c6"},{"file":"sc3d\/rickoshea_tex.ktx","sha":"b3b14751d55d57773233ac69cdd35f88ff395d80"},{"file":"sc3d\/rickoshea_tex.pvr","sha":"fd39a361382da6b2c6388f9b46931443cef18deb"},{"file":"sc3d\/rickoshea_walk.scw","sha":"bee7abb6651631dbe2fe526ebc77b028b32b0a96"},{"file":"sc3d\/rickoshea_win1.scw","sha":"8844d1ce582227f8ddc59c0d805da38e17056094"},{"file":"sc3d\/rickoshea_winloop1.scw","sha":"a416f4deafb5f45e1ab063370663402153481604"},{"file":"sc3d\/rico_attack.scw","sha":"c02f945e3779169bfaa6de59a63da546cc7644bb"},{"file":"sc3d\/rico_base_cam.scw","sha":"f08a0e40f726a70c628f9db8b770b3beafd29f7e"},{"file":"sc3d\/rico_geo.scw","sha":"68328c3b75cffc694e62e62779cce487358a6801"},{"file":"sc3d\/rico_gold_attack.scw","sha":"582804f7692e7dd26787d76079b97bebe77fa442"},{"file":"sc3d\/rico_gold_geo.scw","sha":"bfd95ed1f9f14672ced72f6646d73dcb0eadc5e3"},{"file":"sc3d\/rico_gold_idle.scw","sha":"0d7d235ae99b83cf6b217de9a89ac1b8498b1948"},{"file":"sc3d\/rico_gold_lose.scw","sha":"5037f974d8c6c91ceda354390ca622b3641116b3"},{"file":"sc3d\/rico_gold_tex.ktx","sha":"83c1a47ae89664626b5304ad20bd38ce5f830c7d"},{"file":"sc3d\/rico_gold_tex.pvr","sha":"53c094517d49d8046fd384024ba42514158c2d8e"},{"file":"sc3d\/rico_gold_walk.scw","sha":"fa2bf2897f5ed73ed33cacb7f6d1774874f89345"},{"file":"sc3d\/rico_gold_win.scw","sha":"08ae921f068de74a49c0dbcbbe9184e2d7bc70e3"},{"file":"sc3d\/rico_gold_win_test.scw","sha":"13b137717f262c0fe045eb6abe945ee41f3d1117"},{"file":"sc3d\/rico_idle.scw","sha":"96f5a67462a52670b517aabb596661fb01b03748"},{"file":"sc3d\/rico_lose.scw","sha":"a052c7313f11f4a42cf6eafe91e55598cbd198fc"},{"file":"sc3d\/rico_og_geo.scw","sha":"5f0d12631abfe070e313ce5bd0dc109afcb96567"},{"file":"sc3d\/rico_og_tex.ktx","sha":"7689d8a6a163e749eec38bde965604bb493186a1"},{"file":"sc3d\/rico_og_tex.pvr","sha":"6d64af30bc2dd68e7da367ea702f2100e3cc54cf"},{"file":"sc3d\/rico_popcorn_geo.scw","sha":"82e4b03d155328950a904bc6134b8c1f731d820f"},{"file":"sc3d\/rico_popcorn_idle.scw","sha":"e84bc970ab7b2819ce1541ff69b3aed0eb29ec2f"},{"file":"sc3d\/rico_popcorn_lose.scw","sha":"90f49fd632dd6013a16b63144a112ce4336db4f2"},{"file":"sc3d\/rico_popcorn_tex.ktx","sha":"dc716b3c9298cac1957e5970ea80a5c4421efe2f"},{"file":"sc3d\/rico_popcorn_tex.pvr","sha":"91cdc4c8d3299ff7961d0ddbc3bf5ffed8d9abb5"},{"file":"sc3d\/rico_popcorn_win.scw","sha":"606dbeab8919eb1b082e59bc18f4c146a59003b3"},{"file":"sc3d\/rico_tex.ktx","sha":"cc06b823441813b02005791ea0df0ad626fbe853"},{"file":"sc3d\/rico_tex.pvr","sha":"e82b14d56524c1226736a3e6e898d6a329614048"},{"file":"sc3d\/rico_walk.scw","sha":"e0fadb41859b22307a301c26e9cfe0b7ce22e079"},{"file":"sc3d\/rico_win.scw","sha":"f11b45f603c021e1ab092a47a4c1b19311c0f022"},{"file":"sc3d\/rock1.scw","sha":"ecb5855c1d50b48789832eb1524d54fac5adceaa"},{"file":"sc3d\/rock2.scw","sha":"e721d5e500407e984124aab966af0c84be281e32"},{"file":"sc3d\/rock_1.ktx","sha":"310c42d1f503df709ef644526ad59d72f0298748"},{"file":"sc3d\/rock_1.pvr","sha":"9f8ad83768d35eda5fe0fbe49ea0445702d38a9f"},{"file":"sc3d\/rock_2.ktx","sha":"60ed45444086c58e5c387dde4c8c011b2090b5d4"},{"file":"sc3d\/rock_2.pvr","sha":"cd70558e6a6f724f39f4ac0aaf43fc2dced54a51"},{"file":"sc3d\/rock_mortuary_1.scw","sha":"e37c3caad9716e33ade5f8daf2abc52cceb716a4"},{"file":"sc3d\/rock_retropolis_1.scw","sha":"50efe4227c055932b9ee4da4745fa1779834ca75"},{"file":"sc3d\/rock_town_1.scw","sha":"1c80ed49f6d340864d5c09bb050f4c453f0f4bef"},{"file":"sc3d\/rosa_attack.scw","sha":"f9e57446a9d2ee578614839acd4b91915564d485"},{"file":"sc3d\/rosa_attack_transform.scw","sha":"5344dc66facb7d06b17e7b7d941b96b2df6c347b"},{"file":"sc3d\/rosa_base_cam.scw","sha":"966a3b084d149b6f814919d8a3fb6389b77de4b5"},{"file":"sc3d\/rosa_def_atk_projectile_alpha.ktx","sha":"e83628256c30247e27222f95642db24fba09b941"},{"file":"sc3d\/rosa_def_atk_projectile_alpha.pvr","sha":"0996d06c72599f59a8196c8e6070009523d6da9a"},{"file":"sc3d\/rosa_def_atk_projectile_blue.ktx","sha":"c296d1e52b72bc23bc1cd3e3363ccc7957075bb4"},{"file":"sc3d\/rosa_def_atk_projectile_blue.pvr","sha":"b9f8757e00aa8a15727e62ea69bf9029bd6f42d5"},{"file":"sc3d\/rosa_def_atk_projectile_blue.scw","sha":"59ffc0f5d685890981f2ff3250068c72ed636ccc"},{"file":"sc3d\/rosa_def_atk_projectile_red.ktx","sha":"ca6941214429ff7fae347746480c5dc37f8c39db"},{"file":"sc3d\/rosa_def_atk_projectile_red.pvr","sha":"3c75d2e6a7e0dbde5e134b96f30e05b7ddd40dfe"},{"file":"sc3d\/rosa_def_atk_projectile_red.scw","sha":"ba3290b5209e2008e1bf3c232cc255f6160feae5"},{"file":"sc3d\/rosa_detransform.scw","sha":"1f83a90b4485175e0111bd31a525bd0ea9c1f3e0"},{"file":"sc3d\/rosa_geo.scw","sha":"519f798eb860ad48d87be8cd7a3d339b0322d9e9"},{"file":"sc3d\/rosa_idle.scw","sha":"8f2cc369068b5e8d4b6609b5eeafe277ac5b5692"},{"file":"sc3d\/rosa_idle_transform.scw","sha":"cb8eb1338a9c5fcbcd8cff6581de37b67682b353"},{"file":"sc3d\/rosa_lose.scw","sha":"ebca656a78fe9bc68380b503dde11e7ad2396368"},{"file":"sc3d\/rosa_tex.ktx","sha":"a521cf8e5716d96a4054933ba9ef13f75e2d75c2"},{"file":"sc3d\/rosa_tex.pvr","sha":"6f373020474a97767d2f7e5d681d26894a47173c"},{"file":"sc3d\/rosa_transform_tex.ktx","sha":"de19e5bda63b1a3a3b61d303f3485c9a56c64e72"},{"file":"sc3d\/rosa_transform_tex.pvr","sha":"cc592c8b0f3ab6b1fbd27ed7a0029f10412d5246"},{"file":"sc3d\/rosa_ult.scw","sha":"5cd6e947ebd3ad88e1259514ed2bd397614ff7c1"},{"file":"sc3d\/rosa_walk.scw","sha":"cd426b5e9337e80b048cf1a15507310819afb3e4"},{"file":"sc3d\/rosa_walk_transform.scw","sha":"70ec75890c241c70f465f6ce07dcdc241128b486"},{"file":"sc3d\/rosa_win.scw","sha":"ab323118a3cdb053f0b3f709842a78567e95073e"},{"file":"sc3d\/sandy_attack.scw","sha":"fa7257dadc208a02de839410b4d1a09ccd6c7c15"},{"file":"sc3d\/sandy_base_cam.scw","sha":"932c00352a69442be7e672bf5601a2bca69decd9"},{"file":"sc3d\/sandy_def_ulti.ktx","sha":"70561236164db5b9b7894ca2e202b4b4c6fd25b4"},{"file":"sc3d\/sandy_def_ulti.pvr","sha":"b63b4903a968f43197ebc8e85561bdad2d5129ab"},{"file":"sc3d\/sandy_def_ulti.scw","sha":"9043e8ba368463ab61351b2f56258fb744d284df"},{"file":"sc3d\/sandy_geo.scw","sha":"bbd5438fd7af932259d0b199926cd23c7051ecf5"},{"file":"sc3d\/sandy_idle.scw","sha":"ad0823b26d880995b7fdca51b70e3bffa3c4fa20"},{"file":"sc3d\/sandy_pushback.scw","sha":"6486e024951257f6bffba15884e65bc186880770"},{"file":"sc3d\/sandy_tex.ktx","sha":"b6b23446fde77fb9e1815eab19eb2695490e86ba"},{"file":"sc3d\/sandy_tex.pvr","sha":"fa7a0ac6128d24a7e558ec621ed2ceb62310a91c"},{"file":"sc3d\/sandy_walk.scw","sha":"68d905ad8b1fd53d7ac393595a58fc5f84c12956"},{"file":"sc3d\/sandy_win.scw","sha":"6a9e80aa22e615c6a699ab8651293d2051a1ed36"},{"file":"sc3d\/seaweed_small.scw","sha":"a1b535566106800c5ba0639f9ce7793314bec26a"},{"file":"sc3d\/shark_leon_geo.scw","sha":"2d47e978d2dc4dba5338e6f4a24007ada2960f48"},{"file":"sc3d\/shark_leon_tex.ktx","sha":"28ac3d30429413d0af9f95d0d875ccfcd96b9ed6"},{"file":"sc3d\/shark_leon_tex.pvr","sha":"88515b4b1e3b7a0792deff19787bc26b54012f07"},{"file":"sc3d\/shelly_attack.scw","sha":"8e43c75a5be0d49f381ae67cc7b7fa61b1101057"},{"file":"sc3d\/shelly_attack1.scw","sha":"0621a813e20d6ee4047e4a542caf6e179d929805"},{"file":"sc3d\/shelly_bandita_attack.scw","sha":"b243a9bfb276c252ebf6ffd267a0a573880ae9eb"},{"file":"sc3d\/shelly_bandita_geo.scw","sha":"d37403d96ddd422139f1b22d873b535b3590d860"},{"file":"sc3d\/shelly_bandita_idle.scw","sha":"96f6a6b76e2d9dc23f2c399b26a01ac59897574f"},{"file":"sc3d\/shelly_bandita_lose.scw","sha":"d3465c8af2764065a81063fd3a69f272b652b4a1"},{"file":"sc3d\/shelly_bandita_reload.scw","sha":"0c8216c908a848927af82a9ad883b119106aa1f2"},{"file":"sc3d\/shelly_bandita_tex.ktx","sha":"7ede296d2fc926b4a065b4aecb52c61af665f36f"},{"file":"sc3d\/shelly_bandita_tex.pvr","sha":"adf059965110fba7668d9ce908fedf5d8f47ca84"},{"file":"sc3d\/shelly_bandita_walk.scw","sha":"8bda578c41839f3fe2a7c149bf16518e0b2aaa3d"},{"file":"sc3d\/shelly_bandita_win.scw","sha":"f400d2c68ae892e9bf160f75bdca9b47c74cc2ee"},{"file":"sc3d\/shelly_bandito_d_01.ktx","sha":"ec51af85f0a99a7f1e5f0120df0944d05a48389a"},{"file":"sc3d\/shelly_bandito_d_01.pvr","sha":"70e93b46ea1f3ac9ffd68ceb64df357803fd1faa"},{"file":"sc3d\/shelly_base_cam.scw","sha":"0757c59d0a04349a05f4a0f4d1743e027cc2aa34"},{"file":"sc3d\/shelly_fb_geo.scw","sha":"6410986fcc100b9dc9ca2ea4e631a5438c3441ef"},{"file":"sc3d\/shelly_fb_tex.ktx","sha":"84aff5bc110da60f8e6f94b2f4d27b4ba7925a17"},{"file":"sc3d\/shelly_fb_tex.pvr","sha":"ad74b746155c25eb2bf857252e09e2a423d0d13f"},{"file":"sc3d\/shelly_geo.scw","sha":"e39ce4c36d7fc7aad9c89276040dc1c665d95043"},{"file":"sc3d\/shelly_idle.scw","sha":"4755e4761b9490ecfef02d2d6dcd809f65c26248"},{"file":"sc3d\/shelly_lose.scw","sha":"748d1421fdeec671919b1de704b38a036677a1fe"},{"file":"sc3d\/shelly_lose1.scw","sha":"a5f03867994cd419d2b53f6f02cb1da2d8023446"},{"file":"sc3d\/shelly_loseloop1.scw","sha":"08900367f1c97ab932825cc6692ee5d0fda084bd"},{"file":"sc3d\/shelly_prereg_01.ktx","sha":"2acfa1bc9c3691209060b05125410fb4bade1bd8"},{"file":"sc3d\/shelly_prereg_01.pvr","sha":"ba3d48e5adc74d013e747ccf4282e7d92233ee45"},{"file":"sc3d\/shelly_prereg_attack.scw","sha":"43ef489ff938d81a5eed6b60464bccdc69751343"},{"file":"sc3d\/shelly_prereg_geo.scw","sha":"ff563490f928a5bcc49f13acce34d53d3527602c"},{"file":"sc3d\/shelly_prereg_idle.scw","sha":"f345c9f086154301f7685d427d85c31e16e4c66c"},{"file":"sc3d\/shelly_prereg_lose.scw","sha":"471cff016f38043dcf949a7da7685480c238e57d"},{"file":"sc3d\/shelly_prereg_pushback.scw","sha":"61cccddf89e8afdc5aa2ee7a9f9bd214b79cefa7"},{"file":"sc3d\/shelly_prereg_reload.scw","sha":"ef0b6b2a93ca154e9a25a73fd850c068540a867d"},{"file":"sc3d\/shelly_prereg_walk.scw","sha":"b4b26db7b10599a1df3276d55765f87e9f753d59"},{"file":"sc3d\/shelly_prereg_win.scw","sha":"0adfbf3d2ffd5fbc73046101551abb6627fca9ad"},{"file":"sc3d\/shelly_pushback.scw","sha":"de47952f0d45745d2781114f8362b29fba5ce490"},{"file":"sc3d\/shelly_recoil1.scw","sha":"b850005ad7299dea70911413ca5398e8b8c3c540"},{"file":"sc3d\/shelly_reload.scw","sha":"f35eb6a6c2610951eaad7f13572ffcdd49648e35"},{"file":"sc3d\/shelly_tex.ktx","sha":"6ea44f5d2a68ba7bafaa61f960bf4901776754ab"},{"file":"sc3d\/shelly_tex.pvr","sha":"6037b18f5da301549dd68dac9fc96aa28b0c5027"},{"file":"sc3d\/shelly_v2_01.ktx","sha":"3fde9d40e9f0e2259ef10c3d4909d796b124c48c"},{"file":"sc3d\/shelly_v2_01.pvr","sha":"0e437acd1b3dbad698b14878174300d42f9016eb"},{"file":"sc3d\/shelly_walk.scw","sha":"f01e5d0a83b425d1c2d6f3d867b2deb958b0fcb9"},{"file":"sc3d\/shelly_win.scw","sha":"0a0a8101d521359a72ed21710761fc2bd15b6278"},{"file":"sc3d\/shelly_win1.scw","sha":"b61b4ac29f066e3c78a875df5a9f3876555d216e"},{"file":"sc3d\/shelly_winloop1.scw","sha":"2d6a46387dce80370acc18417e74e760e4cc0301"},{"file":"sc3d\/shelly_witch_attack.scw","sha":"3e4c45260b70dbc3af0ee2f79bd9e60736ad90e6"},{"file":"sc3d\/shelly_witch_geo.scw","sha":"45ac77f351edc26a7dcce110ae91ab27145b1ffa"},{"file":"sc3d\/shelly_witch_idle.scw","sha":"85b9fcca5ba9ef1038c0145cfd4f96bcb3835484"},{"file":"sc3d\/shelly_witch_lose.scw","sha":"b90b66bfa96a65b82f03d8313fc6a957dba51698"},{"file":"sc3d\/shelly_witch_reload.scw","sha":"41a455eace993688cf84bc6df009a677cb02ed77"},{"file":"sc3d\/shelly_witch_tex.ktx","sha":"186bc389b734a3b4f42e152eb6680629c02ddd37"},{"file":"sc3d\/shelly_witch_tex.pvr","sha":"e3b6fab218c5e42a86c39f530e8b775f8ef1e2ac"},{"file":"sc3d\/shelly_witch_walk.scw","sha":"b0f9c89cfef6bba987d7feb439653ba713de705c"},{"file":"sc3d\/shelly_witch_win.scw","sha":"5e24b7234d8d17988a6a26bd67faaf50a93dd5f1"},{"file":"sc3d\/shockwave_blue.ktx","sha":"3b7b9a764e530496a749fe8eab0d14377d0be783"},{"file":"sc3d\/shockwave_blue.pvr","sha":"fb684658cdf1820e4af8508930fa97c0c8a1e27f"},{"file":"sc3d\/shockwave_red.ktx","sha":"fbad0123de9f8ea98cf5a05db2d6a1783546451c"},{"file":"sc3d\/shockwave_red.pvr","sha":"fcd3ae35379b721d9753f209bb24054e49b9ac2a"},{"file":"sc3d\/siege_base.ktx","sha":"d5baf54069be3898951bb1bc1466cf4d345405be"},{"file":"sc3d\/siege_base.pvr","sha":"2d112bb58b2eec2bd6166d2ec1ab6c70fd6c3dc5"},{"file":"sc3d\/siege_base.scw","sha":"a269499e5774ad653ad35a0a85ecdf4f3ff81ab4"},{"file":"sc3d\/siege_base_attack.scw","sha":"15a331a2e111b8479d114dd5fdd8c4cd27b0aa38"},{"file":"sc3d\/siege_base_projectile_blue.scw","sha":"191057aa452e5385aaacab996c922aae25eaa033"},{"file":"sc3d\/siege_base_projectile_red.scw","sha":"3bcbf9ea70f43d20bef2e34b979247a040870b72"},{"file":"sc3d\/siege_base_red.ktx","sha":"08b9676d1ac6f681c30bab0f45686a4c2c8e2999"},{"file":"sc3d\/siege_base_red.pvr","sha":"85ba0d2a8adfafc27276b04576535014a2e6ec66"},{"file":"sc3d\/skin_lightmap.png","sha":"98b8d4eb746078f8ac87c526d30c94a5e358106f"},{"file":"sc3d\/skin_specular_lightmap.png","sha":"844e895576ccaf027dfdf0f86a8d8a1b9b3cb601"},{"file":"sc3d\/sleepy_sandy.scw","sha":"130b8d94f3d33bd8990423d60418187e28fc3e29"},{"file":"sc3d\/sleepy_sandy_tex.ktx","sha":"ae6fa848322ed1251c6dcace51ea746a2c4b216a"},{"file":"sc3d\/sleepy_sandy_tex.pvr","sha":"e29b6e72e3cc59183ce2774705a9b0f818fd73b2"},{"file":"sc3d\/sniper_attack1.scw","sha":"783d8b52948f559b1f3ce2a8e20f459be2cc114b"},{"file":"sc3d\/sniper_d_01.ktx","sha":"c81bff5e55b4713ead51166754a5fc34f1d0a4c9"},{"file":"sc3d\/sniper_d_01.pvr","sha":"90bd374dab42e896b4c2574bfbb8fb3a845aa14b"},{"file":"sc3d\/sniper_geo.scw","sha":"29bcd4a5ea7b194c161eeb86e261ae071ebc4cb2"},{"file":"sc3d\/sniper_idle1.scw","sha":"d22b13bb4c388fc89575c05298bf2d9c1194b5d9"},{"file":"sc3d\/sniper_lose1.scw","sha":"b38afab52173ca6f13c2521dbfd6b672d2c76cbc"},{"file":"sc3d\/sniper_recoil1.scw","sha":"9221ee8962cc9f640269f39b47394278e508d392"},{"file":"sc3d\/sniper_ulti1.scw","sha":"00658a89227f6f7ea0a4dc86a9f71e4c1e651632"},{"file":"sc3d\/sniper_walk1.scw","sha":"14b1d0b2adcca8ed1b8e886aebb9bea382d5f83e"},{"file":"sc3d\/sniper_win1.scw","sha":"b499e8b763d49de29f4b38b049b5f6da89d569b6"},{"file":"sc3d\/specular_lightmap.png","sha":"76beef36edaf0d295256ebb11bb9b124431b0e6a"},{"file":"sc3d\/specular_lightmap_night.png","sha":"5079310a27c019af617aecb0c1ecec4b23f71d65"},{"file":"sc3d\/spike_attack.scw","sha":"a08872cce79a75ff56015645f1e7c1c06e142aa5"},{"file":"sc3d\/spike_base_cam.scw","sha":"90ed566bccdf4930b3ef38a7a6f753f3c6b290ee"},{"file":"sc3d\/spike_blossom_geo.scw","sha":"540e6634f1c405edc1f730426d4e087c95815449"},{"file":"sc3d\/spike_blossom_tex.ktx","sha":"41f9dfaaf7ea15eeccc37de40b819fbaa07d85a6"},{"file":"sc3d\/spike_blossom_tex.pvr","sha":"d0e418eb30a452823d4300d81cc55be0cd90b6f8"},{"file":"sc3d\/spike_geo.scw","sha":"bbdf17521d42fa1c71978c4f064abad6905a33ff"},{"file":"sc3d\/spike_idle.scw","sha":"d560c79e1dcee57121a179bc0c788e6c6c9b2add"},{"file":"sc3d\/spike_lose.scw","sha":"b04a7a33f865d7764f92ed37ff4fc404ce53f23a"},{"file":"sc3d\/spike_loseloop.scw","sha":"06fb2be60339ab250ccf00241c352d50b5243135"},{"file":"sc3d\/spike_mecha_geo.scw","sha":"96caf5c5bbb24b8cb4d51a71b29c513c55b3380d"},{"file":"sc3d\/spike_mecha_lose.scw","sha":"7f46da380a69fd780939daaebaf274e2512d9e7d"},{"file":"sc3d\/spike_mecha_tex.ktx","sha":"2168d98451ff82d7fa82472c48bdd3eb95047601"},{"file":"sc3d\/spike_mecha_tex.pvr","sha":"fd1c7b146ba51e986da3e96ee51cfad8e2a6ea22"},{"file":"sc3d\/spike_mecha_walk.scw","sha":"cacd7750c9a59ea6554b45cab60f03ba893988d0"},{"file":"sc3d\/spike_mecha_win.scw","sha":"b2ce131494c1aa1a6b0220558599b98a061149ae"},{"file":"sc3d\/spike_tex.ktx","sha":"af1a6f81d6c9efe27444dbe70f4f5401580370a1"},{"file":"sc3d\/spike_tex.pvr","sha":"ee9bd91ca752cc6eb781ec8bb251aeaaf9401640"},{"file":"sc3d\/spike_walk.scw","sha":"9dd4a63df914d16584ad950dd298e8c7b5257d85"},{"file":"sc3d\/spike_win.scw","sha":"7df19bbc2c0a9207529066ff246e09cfde65d1fe"},{"file":"sc3d\/spring_board.ktx","sha":"341683330e72d6f9fe590fd41d914141ec22785a"},{"file":"sc3d\/spring_board.pvr","sha":"0f0b05db0226c02be643235adbd3e11bc2627193"},{"file":"sc3d\/spring_board.scw","sha":"0b003a6f2ae9191bb62a81a23adeef3327b0ee9f"},{"file":"sc3d\/spring_board_diagonal.scw","sha":"238b24c91c589f00995246afbdc765dc34f0d6af"},{"file":"sc3d\/sprout_attack.scw","sha":"78bc2030fda9c7c4815daea7ede2a6d761aaa3ba"},{"file":"sc3d\/sprout_geo.scw","sha":"4090dff05bc881068a03c12b127f450b0c467c34"},{"file":"sc3d\/sprout_idle.scw","sha":"1597f45d4c1e9e019a1821bfe06046bb564e7c13"},{"file":"sc3d\/sprout_lose.scw","sha":"5e81e9f5f6205a12a80408f3cac131c7d4f62bc4"},{"file":"sc3d\/sprout_portrait.scw","sha":"07aedfda36f6c6d8b951e675471ee2b77b5c0f42"},{"file":"sc3d\/sprout_pushback.scw","sha":"9ce040309268d40f8812a6cdfbc2453746c8a4ef"},{"file":"sc3d\/sprout_reload.scw","sha":"63cc88a3a67d3bc9c580a720e5e65223b514f5f3"},{"file":"sc3d\/sprout_tex.ktx","sha":"287e8b3fc5cd6fc923d065541ddd97bcbadea4f1"},{"file":"sc3d\/sprout_tex.pvr","sha":"dfbe40617a4c2e3123351b1b8e8909a5000422d6"},{"file":"sc3d\/sprout_walk.scw","sha":"10e4cc988e4036fe1516a8069d997eca37000ca5"},{"file":"sc3d\/sprout_win.scw","sha":"dcf9c59a984f9f158aa65bf49f6420a8415b0dad"},{"file":"sc3d\/spruce_snowy.scw","sha":"2d78a3513f936951503e2370f976e54c4698cc62"},{"file":"sc3d\/stack_tire.scw","sha":"a527fb8923f12b9fbfd763b125e62245e4bcdbf3"},{"file":"sc3d\/stone_ruin_1.ktx","sha":"0939a64cc88bc7751cb0193ff70c27ba63ee6af6"},{"file":"sc3d\/stone_ruin_1.pvr","sha":"41f1357eb79ea927ca327010fd0a02aa21855349"},{"file":"sc3d\/stone_ruin_1.scw","sha":"3bcb82e7f388ad375cb4a6ae84dd83b8f73e0e03"},{"file":"sc3d\/tara_attack.scw","sha":"2ca62a791af9b9fb888ec0327c1f90b20b5a827a"},{"file":"sc3d\/tara_base_cam.scw","sha":"345a00cdd28689c4f123fb7463e9d88f9f70c59e"},{"file":"sc3d\/tara_blue_geo.scw","sha":"8e29d7776818c8b23158eaaabb22584d1bec1159"},{"file":"sc3d\/tara_blue_tex.ktx","sha":"52bf008eea31e26e30c331582777b14550ca93ab"},{"file":"sc3d\/tara_blue_tex.pvr","sha":"0527572a43eaa4dc0cd93f80415023341c6b3b41"},{"file":"sc3d\/tara_geo.scw","sha":"287f382bef695b2b2e2de81f7404d4f50822bf49"},{"file":"sc3d\/tara_idle.scw","sha":"df0ad27a580fbe853afa3626ec8f2ba35982cfef"},{"file":"sc3d\/tara_lose.scw","sha":"dbc3e85ac370dc8af426adce4dd6b7c5c3bbe1c4"},{"file":"sc3d\/tara_streetninja_attack.scw","sha":"db4146db4db3a1d4b33bd809e0aa9c4f1b89a09e"},{"file":"sc3d\/tara_streetninja_geo.scw","sha":"cf8c76be41ee0bc9c540dd1a2fa46e4f67277f88"},{"file":"sc3d\/tara_streetninja_idle.scw","sha":"a8b804e24482ffcd4c95caa7135ce474087eb9cf"},{"file":"sc3d\/tara_streetninja_lose.scw","sha":"d0e6c1e22e15948327bbc5055c5e0f835a9cd8ff"},{"file":"sc3d\/tara_streetninja_portrait.scw","sha":"03abbbd2c3025d9e0347ad14e3484e246f13c249"},{"file":"sc3d\/tara_streetninja_tex.ktx","sha":"ed6ca817c18950ad073bb50b552d0801f38ebfcd"},{"file":"sc3d\/tara_streetninja_tex.pvr","sha":"db811b6ecb482c7bcd8f8549fcbbc6dcc0fbd872"},{"file":"sc3d\/tara_streetninja_ult.scw","sha":"423974885592c8e411e13e97724be91dd38bdf4a"},{"file":"sc3d\/tara_streetninja_walk.scw","sha":"936bfb7ba668c89d4e5b280c1d40ab16fad42579"},{"file":"sc3d\/tara_streetninja_win.scw","sha":"8d8795d0b44539b403ddfea35858a6236512da40"},{"file":"sc3d\/tara_tex.ktx","sha":"d0f952ec43bad015a28c4c854060b4c559a81f98"},{"file":"sc3d\/tara_tex.pvr","sha":"809dc736bad8b32faa1a7d27a0907250147a4ed9"},{"file":"sc3d\/tara_ult.scw","sha":"7ab20c87651fb46e23e5e6315aa3bc9f83578761"},{"file":"sc3d\/tara_walk.scw","sha":"1909ec6249e4121d4f830cea2789e70a76a5709b"},{"file":"sc3d\/tara_win.scw","sha":"e3651bb03e9530beee2f65867ee4f9aa69b54c25"},{"file":"sc3d\/test_stack_tile.scw","sha":"1e619c1c2597812dce79c3758d88454b0ced75d4"},{"file":"sc3d\/tick_attack.scw","sha":"01ab193f823c81ead7d397be1486df13a863b68b"},{"file":"sc3d\/tick_base_cam.scw","sha":"a979efefa8a2a55f1175df599243a22305fda596"},{"file":"sc3d\/tick_def_atk_blue.ktx","sha":"c35c75233c2ff281d2717d2e54d8758cc6c79605"},{"file":"sc3d\/tick_def_atk_blue.pvr","sha":"e7fc2b48ec714bdb678840dcfabb478f4e69d696"},{"file":"sc3d\/tick_def_atk_projectile_blue.scw","sha":"1d5fa31bad07c6024aa06f34ae480d01fec6b3e0"},{"file":"sc3d\/tick_def_ulti_blue.ktx","sha":"5a91004fbef40a6d2d9ae3cc51da6c659cc935fd"},{"file":"sc3d\/tick_def_ulti_blue.pvr","sha":"3d73172c79edbc3c3cd5f45806835c57035050f7"},{"file":"sc3d\/tick_def_ulti_projectile_blue.scw","sha":"1292ba74aadfc582009e9c87ce36cf5ea0ba8388"},{"file":"sc3d\/tick_geo.scw","sha":"ceb8ca3caff7f3247ea2812f5f7638438036341f"},{"file":"sc3d\/tick_idle.scw","sha":"74abc3d4186e921c221dee0d4d99645c02b39cc8"},{"file":"sc3d\/tick_lose.scw","sha":"5cc79de1c2b4a9622186ea951a75ebb440d2963e"},{"file":"sc3d\/tick_tex.ktx","sha":"6c110b73bdabe191387dd33e13ec6b9b7ae5a678"},{"file":"sc3d\/tick_tex.pvr","sha":"ef82babb1cbb03694e1a2f2347c3982bbbe66652"},{"file":"sc3d\/tick_ult.scw","sha":"0f964faf255669e9085a5365b5af2e80358d37e1"},{"file":"sc3d\/tick_walk.scw","sha":"78921ccb23cf51c5796c83b0c37976ee12e51154"},{"file":"sc3d\/tick_win.scw","sha":"f3e22a8ef78904cd3f4e4194f451344b3522afa4"},{"file":"sc3d\/tnt_d_01.ktx","sha":"2568b53bb87a4767b5f89d9d14b7905a9ee63354"},{"file":"sc3d\/tnt_d_01.pvr","sha":"5c4c8d46cd1b99ef3726d9f61ec022d4b798c0bf"},{"file":"sc3d\/tnt_d_01_blue.ktx","sha":"4a5e6bc2494e6f76c0b5593847fc9393bfc42db2"},{"file":"sc3d\/tnt_d_01_blue.pvr","sha":"d05d6122eb3b67be8a87560e36706329f7829700"},{"file":"sc3d\/tntguy_attack1.scw","sha":"a7dd04be7100515a84b77d0bbd299334423b95bf"},{"file":"sc3d\/tntguy_geo.scw","sha":"9a0b44fae9848be0991f6d73c416577da0fb2aa3"},{"file":"sc3d\/tntguy_idle1.scw","sha":"595246697e02d8a00370a2a9f0491a28e17d5120"},{"file":"sc3d\/tntguy_lose1.scw","sha":"115bffa59791ee57522e84819d029240ad69b27b"},{"file":"sc3d\/tntguy_loseloop1.scw","sha":"388b6019394b5751d965c9c663ccdeb7b6e90711"},{"file":"sc3d\/tntguy_recoil1.scw","sha":"d6d34dab536da1fda26b14781381ae13cc7df4d0"},{"file":"sc3d\/tntguy_ulti1.scw","sha":"fbfb24eb545bc5432cbb6467e351e13bd6645cd6"},{"file":"sc3d\/tntguy_walk1.scw","sha":"b731ff30d6ffcad6de3c8c73c21fd9f6ad37af9e"},{"file":"sc3d\/tntguy_win1.scw","sha":"241941e1d0754afa242b32ed11857a45100fed90"},{"file":"sc3d\/tntguy_winloop1.scw","sha":"b73ca2cbc7a5d49dff286a301b18acee6563fad3"},{"file":"sc3d\/tombstone_large.scw","sha":"6bac9cf3d595927e501c6146d07ca4949a13be5c"},{"file":"sc3d\/tombstones_1.scw","sha":"e31cecc0f95405809130bae4958d12df8819a8fe"},{"file":"sc3d\/town_gem_spawn.ktx","sha":"7e3b2b37dce2574868c61ce43934333eb410d1dd"},{"file":"sc3d\/town_gem_spawn.pvr","sha":"7cfae7900a0e6c2c57753214cc935c972ef3b1ee"},{"file":"sc3d\/track_wood.ktx","sha":"48b2b96bb795b407dc520728825b41ea1119f797"},{"file":"sc3d\/track_wood.pvr","sha":"80a656718359ebc1229f74c306beaa1a38c7b897"},{"file":"sc3d\/traffic_cone.scw","sha":"a9e1ca4d8326236240d827d3621f10af3b7958e5"},{"file":"sc3d\/turret_attack.scw","sha":"1e75698d68837459d60138814e10e69ae3d7a88b"},{"file":"sc3d\/turret_dragon_geo.scw","sha":"b2078e35fc99f94877202da2a3d16a0e6008a7e5"},{"file":"sc3d\/turret_dragon_tex.ktx","sha":"55be252548779dd1ebbe75c200a2b6c75e13f25d"},{"file":"sc3d\/turret_dragon_tex.pvr","sha":"c2eebecf7f4736c5febdb0be72a0fe5690e972ef"},{"file":"sc3d\/turret_dragon_win.scw","sha":"fc293eb9af95b90012a9e1796832a762cb11457b"},{"file":"sc3d\/turret_geo.scw","sha":"605d64140fa91654edc73d17fd050bd7e5520eb7"},{"file":"sc3d\/turret_idle.scw","sha":"28e2ba12e4ce5cc01091e40a7321fa9a18fb7281"},{"file":"sc3d\/turret_jessie_attack.scw","sha":"0ddba05b904ab42849bf915a720245d9471c3a62"},{"file":"sc3d\/turret_jessie_geo.scw","sha":"1bce78c5265f314cf972a2249b0d7059df3f35f0"},{"file":"sc3d\/turret_jessie_idle.scw","sha":"b992a35bf937ec2fb69fbac6e6909d3d7a74a71b"},{"file":"sc3d\/turret_jessie_red_dragon_attack.scw","sha":"942258e53c6ef786836b9a22a18efc5f925f5dd5"},{"file":"sc3d\/turret_jessie_red_dragon_geo.scw","sha":"69fce49e5b466dc996485cea22d3361ce76a89d8"},{"file":"sc3d\/turret_jessie_red_dragon_idle.scw","sha":"762fafd8077fd5adb5c10665655f682dfe392758"},{"file":"sc3d\/turret_jessie_red_dragon_spawn.scw","sha":"3e27c64f3c30c9a0d9fed4e579298eba26fa2fdd"},{"file":"sc3d\/turret_jessie_spawn.scw","sha":"19a2eebf27a94d574daf8b6f4f0b03f1f3a38d70"},{"file":"sc3d\/turret_jessie_tanuki_geo.scw","sha":"de70a04a6e9998f0d6bb2098ca8a1eed0461cb03"},{"file":"sc3d\/turret_jessie_tanuki_tex.ktx","sha":"274f06b801a09b9672cc00d2c6b87d0d980a6f15"},{"file":"sc3d\/turret_jessie_tanuki_tex.pvr","sha":"e8841c532aed46987955db4b70668a99b5d58f21"},{"file":"sc3d\/turret_spawn.scw","sha":"702d6adcc901d695487dd820c80dfe3fdb04abaa"},{"file":"sc3d\/turret_summertime_geo.scw","sha":"bcb952f221a234288dfd01e373814a6919c08c75"},{"file":"sc3d\/turret_summertime_tex.ktx","sha":"37c1c6478e7a2ad9f8783a5a06bc9aade1ae4e4e"},{"file":"sc3d\/turret_summertime_tex.pvr","sha":"25d299e52a4da566eb6fa3feef1505833b4c947a"},{"file":"sc3d\/undertaker_idle.scw","sha":"63b9371a7d0440eeb68f00b3bb8f5d14735a1d28"},{"file":"sc3d\/undertaker_lose1.scw","sha":"73af4a5ae5a20fba1d61533ecfd190d24fc68611"},{"file":"sc3d\/undertaker_loseloop1.scw","sha":"8fbbac1d2b1f0f376dec82d89128d9aa3c83dacb"},{"file":"sc3d\/undertaker_recoil1.scw","sha":"2b7e7d64c46cf87cccdad4d6100c313a661abc47"},{"file":"sc3d\/undertaker_tex.ktx","sha":"0a34a124b6db69632556652840f07dc3de7c5564"},{"file":"sc3d\/undertaker_tex.pvr","sha":"262c9730061bb64689df3e79e66b9d3382264999"},{"file":"sc3d\/undertaker_ulti_attack.scw","sha":"53d0cd1947c66508ca73ce79e2ae6ab69f173068"},{"file":"sc3d\/undertaker_ulti_recoil1.scw","sha":"d1aca282a26ce2653f6976b8a515c852447dd488"},{"file":"sc3d\/undertaker_walk.scw","sha":"84bc7d22d12d1f578b778628c3683a0f170f3b30"},{"file":"sc3d\/undertaker_win1.scw","sha":"ad02bdc60c43e61c650c1d799030e824ab0553f6"},{"file":"sc3d\/undertaker_winloop1.scw","sha":"a207f68548ef5728e6ad18eccebafa35f0b39ab8"},{"file":"sc3d\/vase_1.ktx","sha":"2f1350b748e6857b74456321d668613c2f12654e"},{"file":"sc3d\/vase_1.pvr","sha":"386796f87b8f7b919a57460aa488647b0739f62b"},{"file":"sc3d\/vase_1.scw","sha":"5769b23154eaab53e17a3a33474a3f6b886061ef"},{"file":"sc3d\/wally_wall.ktx","sha":"0645a2c11c4a398c7892595943a4d7cb3696dee8"},{"file":"sc3d\/wally_wall.pvr","sha":"bff607a5aa4312e90b9848d76c2db19dbea13789"},{"file":"sc3d\/wally_wall.scw","sha":"a76207956219b69709036869f6c0a369cee5850e"},{"file":"sc3d\/water_tile.scw","sha":"9bf6a2a00f1874028a6bac4fc402954a408c5046"},{"file":"sc3d\/water_tile_darryls_ship.scw","sha":"58c99e56fa8b5bb6d2f49f543b23ee6451e79dc6"},{"file":"sc3d\/water_tile_mine.scw","sha":"c5b974c641ec39edff4a55ccc5b53b7c5d99abac"},{"file":"sc3d\/water_tile_mortuary.scw","sha":"92b1b7a657a3ae20fa301e0c20df43e54a5e7282"},{"file":"sc3d\/water_tile_retropolis.scw","sha":"f03548a5c6c7decee3454f151487dd15bbcbfd87"},{"file":"sc3d\/water_tile_snowy.scw","sha":"d724eb1c6eee03e3c08a98581073f7e25dcb8749"},{"file":"sc3d\/water_tile_town.scw","sha":"65c147153b02bbfdd27d621fceecb2dadfa39653"},{"file":"sc3d\/wooden_fence.scw","sha":"bfb52217ba40126d883df391cab5676a96136471"},{"file":"sc3d\/wooden_fence_darryls_ship.scw","sha":"756498b529e4ea54d5928b8825a6d1e643b978f8"},{"file":"sc3d\/wooden_fence_town.scw","sha":"9b8ff89ee0b63a2ad1b5f4f863d0f860250b9198"},{"file":"sfx\/100coins_01.ogg","sha":"f50ec28726c65e910028e94a22c405616d62d965"},{"file":"sfx\/2x_gatcha_double_01.ogg","sha":"6945ec50b65b1186f8e6936536bd0188373f582c"},{"file":"sfx\/8bit_atk_02.ogg","sha":"4ed66202b3105ce6c31777fcd9941f78e9160075"},{"file":"sfx\/8bit_die_vo_01.ogg","sha":"9b71448681400760949fd65a6c9645680a8895e1"},{"file":"sfx\/8bit_die_vo_02.ogg","sha":"80694f17d65293629a2a925a1ae5f56b4fa97de4"},{"file":"sfx\/8bit_die_vo_03.ogg","sha":"ef073991f4cba51abf63a0f5cdb200818cfa7b88"},{"file":"sfx\/8bit_die_vo_04.ogg","sha":"89283d2010a65d5f779774249c263fd10d55ec39"},{"file":"sfx\/8bit_die_vo_05.ogg","sha":"3f601c2a7e8de4da8f898c700f57c26a05eb0104"},{"file":"sfx\/8bit_die_vo_06.ogg","sha":"69debc93b1f08c197ad7d8e8e7cd111529a59bd3"},{"file":"sfx\/8bit_gadget_01.ogg","sha":"a51b2b96d608e43a5a0ee0a333540d1501e8deb3"},{"file":"sfx\/8bit_hurt_vo_01.ogg","sha":"db633e9875fdf5af693f54d10ad4d05b43bff4dd"},{"file":"sfx\/8bit_hurt_vo_02.ogg","sha":"05375937980dbf59db946801f7cefdf3d8c6b7c5"},{"file":"sfx\/8bit_hurt_vo_03.ogg","sha":"641cf91c717a2ea9d07bf54a597b11ceb02c5e00"},{"file":"sfx\/8bit_hurt_vo_04.ogg","sha":"0c682820f3c948ab1397b97ea24ac4fb9539c193"},{"file":"sfx\/8bit_hurt_vo_05.ogg","sha":"e32774927d725b68362a828c9c94509c0b2925b9"},{"file":"sfx\/8bit_kill_vo_01.ogg","sha":"a7d71cf4e8045f7a47167bdbab375d0ea9b80db3"},{"file":"sfx\/8bit_kill_vo_02.ogg","sha":"f4cdad7337e9ac17978e007f9f1372b6d9a066a4"},{"file":"sfx\/8bit_kill_vo_03.ogg","sha":"b554e8b3cd8fb168d3c8d4d1a8447b33022dbf58"},{"file":"sfx\/8bit_kill_vo_04.ogg","sha":"e2ef690eabb58ef1f1ad85cda088826554f93088"},{"file":"sfx\/8bit_lead_vo_01.ogg","sha":"2fc4c2144f59db834b434ed9bbc93af122704036"},{"file":"sfx\/8bit_lead_vo_02.ogg","sha":"836e74b88c54fea3105f62b50b1e3dc7a6d6b1ec"},{"file":"sfx\/8bit_lead_vo_03.ogg","sha":"39a44be8a393500a201056ffb23c16033c592b01"},{"file":"sfx\/8bit_noammo_01.ogg","sha":"9c8ad289be0d3818a4fecce6e95a662af0f6bbeb"},{"file":"sfx\/8bit_reload_01.ogg","sha":"ad026d3417eab0c7a31ae4d3dc21e11c9bafef65"},{"file":"sfx\/8bit_start_vo_01.ogg","sha":"41f762a1a8ee3e4492da5b249b0021531517dcc2"},{"file":"sfx\/8bit_start_vo_02.ogg","sha":"cab6e4d51ed45c8a3ac47c4ae02dd99baa2f4a24"},{"file":"sfx\/8bit_start_vo_03.ogg","sha":"a246b4ee8d2f00b43fca21ecba7a0135decc61b9"},{"file":"sfx\/8bit_ulti_02.ogg","sha":"382a28e9eb476a3b706f02bd511894108a5af1df"},{"file":"sfx\/8bit_ulti_vo_01.ogg","sha":"9c679bd265d697bb34d36d5fd65cf2bccbbb84aa"},{"file":"sfx\/8bitvirus_die_vo_01.ogg","sha":"d65dd134e7c9cf80c3bb4e564110363ac3e0a613"},{"file":"sfx\/8bitvirus_die_vo_02.ogg","sha":"322efc7283b10f72c98061b6d6da1ad0816042cf"},{"file":"sfx\/8bitvirus_die_vo_03.ogg","sha":"72f0d483132da74a8e30bf3bbacf79b982f3bfbc"},{"file":"sfx\/8bitvirus_die_vo_04.ogg","sha":"42ca460dbde30dab8d8da942724111c85f00fd0a"},{"file":"sfx\/8bitvirus_hurt_vo_01.ogg","sha":"b5ceadc2038935029db5a5ea9024cffaa33b537e"},{"file":"sfx\/8bitvirus_hurt_vo_02.ogg","sha":"652b7f26478ef31371a6da97799aebff3064977d"},{"file":"sfx\/8bitvirus_hurt_vo_03.ogg","sha":"ea16995c99c770994962002f8abf334fdf3a9115"},{"file":"sfx\/8bitvirus_kill_vo_01.ogg","sha":"8041f1bece8ff0dfc1642f19671a0cedda463e1b"},{"file":"sfx\/8bitvirus_kill_vo_02.ogg","sha":"ea3648d28d89e316c7a3a4abf84bffec61ed473e"},{"file":"sfx\/8bitvirus_kill_vo_03.ogg","sha":"fe3434d7a7ecf46f27aff8e785e8bdc7fa336ba4"},{"file":"sfx\/8bitvirus_kill_vo_04.ogg","sha":"84f79cb64f14fc75a75bb706f529cf30a4329b87"},{"file":"sfx\/8bitvirus_lead_vo_01.ogg","sha":"c61561f4d54ed57c001124fa2d27e3344aba52bc"},{"file":"sfx\/8bitvirus_lead_vo_02.ogg","sha":"1a3f0caa1bf66d9a55eabad4a682c137a14878ab"},{"file":"sfx\/8bitvirus_lead_vo_03.ogg","sha":"d723faafa56389da4f548ef4f96a1b4fb3cf8c6a"},{"file":"sfx\/8bitvirus_lead_vo_04.ogg","sha":"3d66b8606f40ce2a0e826fe4c8e96a946933184c"},{"file":"sfx\/8bitvirus_start_vo_01.ogg","sha":"e8f7885605d96cc530c16008e7cd8df58ab0bf85"},{"file":"sfx\/8bitvirus_start_vo_02.ogg","sha":"20ceb65340e1f0db0b2e380b3b663b7138513339"},{"file":"sfx\/8bitvirus_start_vo_03.ogg","sha":"deb3512cc98c2826b465cf715ca5ff52bc3b44fe"},{"file":"sfx\/8bitvirus_start_vo_04.ogg","sha":"c5280add1ea5ec379f1540d869c9657cb664ba3c"},{"file":"sfx\/8bitvirus_start_vo_05.ogg","sha":"86516cb6ceea388419bc87d7b9813fc75698041b"},{"file":"sfx\/8bitvirus_start_vo_06.ogg","sha":"f9ec14df98e6727b0d465e72e919c32f8954ca57"},{"file":"sfx\/8bitvirus_ulti_vo_01.ogg","sha":"2cd92a3411927458b0701a8de68c4efc608d7b33"},{"file":"sfx\/8bitvirus_ulti_vo_02.ogg","sha":"4aa6d22304c745f1020922ba7f05dc6f7cbb2af2"},{"file":"sfx\/8bitvirus_ulti_vo_03.ogg","sha":"e70d6463fb90d1fabbc574475fb92963b3229904"},{"file":"sfx\/Nita_dog_summon_01.ogg","sha":"cd2561f14f1538e96570ef2ca8db48e67e2665bb"},{"file":"sfx\/Rosa_punch_01.ogg","sha":"b25385a7f8864fa7bf0f656c45709f5163be1dbf"},{"file":"sfx\/Rosa_reload_01.ogg","sha":"8fdf15a34f94c603c9bb9b559697296313ccbd2d"},{"file":"sfx\/Rosa_ulti_01.ogg","sha":"33c3148d648cb06fb4c14a6574cffe5f3a739c53"},{"file":"sfx\/bad_move_01.ogg","sha":"3ec2061ad4cadd1c503bf97ba8e7fbda23113ed6"},{"file":"sfx\/bandit_reload_01.ogg","sha":"7561564a23a226da76e6eb87a381c4be8dffd576"},{"file":"sfx\/bar_fire_atk_01.ogg","sha":"1dc3b81cc94c1b7a328e69560c7030cdfbc946e4"},{"file":"sfx\/bar_fire_hit_01.ogg","sha":"4759536d6d2e8ed1529f1f551ff533bc5ebf9f80"},{"file":"sfx\/barkeep_bottle_hit_01.ogg","sha":"4ca1bc1d433d57fc5ae9dea1e614f04dd47cde74"},{"file":"sfx\/barkeep_dryfire_01.ogg","sha":"339848424730bcc5cfc750f77e35e9241df7b5dd"},{"file":"sfx\/barkeep_reload_01.ogg","sha":"ac0b6e5b4f83d03b668d94a1c31232ebf499a1bc"},{"file":"sfx\/barkeep_throw_01.ogg","sha":"e11a417261641d99036acaee0a2082958c38f8a2"},{"file":"sfx\/barkeep_throw_ulti_01.ogg","sha":"16716e865732966a01d07873fe37542e1aaa12d1"},{"file":"sfx\/barkeep_ulti_hit_01.ogg","sha":"01586ee110b9b2c173e68f01c8e753fa1ca0c58b"},{"file":"sfx\/barley_die_01.ogg","sha":"b23988dc1a0603d88e59d358def420d482f5f680"},{"file":"sfx\/barley_die_02.ogg","sha":"75c1c3d5bdff951fdcfa51a20772addd6b129010"},{"file":"sfx\/barley_gadget_01.ogg","sha":"2d388acb14c3c0c0149cf264e5d9fa55bb6ac4a6"},{"file":"sfx\/barley_hurt_01.ogg","sha":"b44e50cdcb204c643f1594e456eb37e9ed3f516e"},{"file":"sfx\/barley_hurt_02.ogg","sha":"f2c6542e05ca52ef71528ed532849977a3974bf0"},{"file":"sfx\/barley_hurt_03.ogg","sha":"fb43fd5261d8c94daa0d84c15c02cc78dabc02c2"},{"file":"sfx\/barley_hurt_04.ogg","sha":"12f6ed9089ed5ea7a0ed0fd5f8ed109ff5783a33"},{"file":"sfx\/barley_kill_01.ogg","sha":"97d12f0aeadf577f90a7df17b56b6da07c3b5b38"},{"file":"sfx\/barley_kill_02.ogg","sha":"2bae530c8fc5ba9771741c1a1097cd9cd2754850"},{"file":"sfx\/barley_kill_03.ogg","sha":"8e3df2e7f03bbc3a0b337993c67928d65b78fdd9"},{"file":"sfx\/barley_kill_04.ogg","sha":"e29fffbf0ef78ba88c27b695411868cf854fbd51"},{"file":"sfx\/barley_lead_01.ogg","sha":"da32340cb4ca5390c4217b2a7876aa3eda8a18d3"},{"file":"sfx\/barley_start_01.ogg","sha":"b76060601c160c43c2afffb8a68e61e192f231ab"},{"file":"sfx\/barley_start_02.ogg","sha":"508784c50b1e99aaaded8c31985011ae0f591035"},{"file":"sfx\/barley_start_03.ogg","sha":"aea2e1af712b8a1371101d1ba34043ea4e08b005"},{"file":"sfx\/barley_start_04.ogg","sha":"18fe95427031959b9cc9e01531ba20bacf13c054"},{"file":"sfx\/barley_throw_01.ogg","sha":"c2f9a557331e419bfc9ad3897c7fa6d6a0e8c937"},{"file":"sfx\/barley_throw_02.ogg","sha":"c26b6469b4d8fee9d5a5b0952fa5879af13218f1"},{"file":"sfx\/barley_ulti_01.ogg","sha":"9618ac44364f67d18466b0618135dd1106d4abf2"},{"file":"sfx\/barley_ulti_02.ogg","sha":"3fce7997593713686ba0ac7d79928bf8cc479d1e"},{"file":"sfx\/barrel_roll_02.ogg","sha":"cf26028bdd46f0b46dd4769c416961c655fa962c"},{"file":"sfx\/barrelroll_ulti_01.ogg","sha":"68580882c2a74a234506d55bbcf9252ba90dbbc1"},{"file":"sfx\/bea_atk_01.ogg","sha":"e14a9d681400af2c84a6a3fd66c818c9667a346a"},{"file":"sfx\/bea_atk_hit_01.ogg","sha":"f91a8a3547df13c44ceaecf1d08409aa68e787dd"},{"file":"sfx\/bea_atk_vo_01.ogg","sha":"c605a05a2af783305e920ccee32af3cd9385c235"},{"file":"sfx\/bea_atk_vo_02.ogg","sha":"1cb824829f7693ff3e3db47c8f114d0915bb2194"},{"file":"sfx\/bea_atk_vo_03.ogg","sha":"d5e807dcb252df3ecf0c5ca6398be73c620cedaf"},{"file":"sfx\/bea_die_vo_01.ogg","sha":"cbf31e87c4eb955258669b460c0999ef6d883d8c"},{"file":"sfx\/bea_die_vo_02.ogg","sha":"55c9c2d0c00665de0b22edf578721abbd887919d"},{"file":"sfx\/bea_die_vo_03.ogg","sha":"1f97c03bc3f7311e974dfb65dfbb68465dffde1e"},{"file":"sfx\/bea_gadget_01.ogg","sha":"fba987b3856376fb8cd507a6caff1f62ab918c72"},{"file":"sfx\/bea_hurt_vo_01.ogg","sha":"67ada74e7cec4a9dbd9476abb3ec6c0511daa6ca"},{"file":"sfx\/bea_hurt_vo_02.ogg","sha":"277dc232f2dbafe827456b5a0d5303a0634e1f50"},{"file":"sfx\/bea_hurt_vo_03.ogg","sha":"577aac5449a3e1919c939e2adcf5ad21ca7648aa"},{"file":"sfx\/bea_hurt_vo_04.ogg","sha":"6c579b34cab5e24663fc4100af56982b1973bc71"},{"file":"sfx\/bea_hurt_vo_05.ogg","sha":"2516a40b3f5715feba97c9e13213686960555f53"},{"file":"sfx\/bea_kill_vo_01.ogg","sha":"9367fc905c94e4b7c0e512fdd349e054aeb53f32"},{"file":"sfx\/bea_kill_vo_02.ogg","sha":"147bd1711b468354864a9ccbb017391abf7d30e8"},{"file":"sfx\/bea_kill_vo_03.ogg","sha":"72e294cb45081c0645faa2f0e5ef15172d724a11"},{"file":"sfx\/bea_kill_vo_04.ogg","sha":"3c082dbe5c1d8d49afa1d12af475c5c4ec3cce48"},{"file":"sfx\/bea_lead_vo_01.ogg","sha":"40f2edbc4fd0d236e4ebc4355233dd20314c6dec"},{"file":"sfx\/bea_lead_vo_02.ogg","sha":"3c8229b7dc5439d1df8cdd670d22205c557919d2"},{"file":"sfx\/bea_lead_vo_03.ogg","sha":"32e7b671f7c558a6683371621e8276ff675680e0"},{"file":"sfx\/bea_lead_vo_04.ogg","sha":"7877d92bcd337f9c5d579497644c8c571b027b4b"},{"file":"sfx\/bea_lead_vo_05.ogg","sha":"a4b85a8020b214c72600105515a6c34d0fbf667e"},{"file":"sfx\/bea_no_ammo_01.ogg","sha":"3fff77b063b15ea10917dbc755cdfbe055bd57c7"},{"file":"sfx\/bea_reload_01.ogg","sha":"9634b882bf8f8e9f8ebabb0b5fac28bbbbbc4ef6"},{"file":"sfx\/bea_start_vo_01.ogg","sha":"be22341f2cae3fd109250e1c2e761ddc0d50611d"},{"file":"sfx\/bea_start_vo_02.ogg","sha":"c6428f5fe88d038fa75d8ccf252d30255b492bb0"},{"file":"sfx\/bea_start_vo_03.ogg","sha":"b8bfc6953da79b8b17d19f8030320680bc1a066b"},{"file":"sfx\/bea_start_vo_04.ogg","sha":"739f81b8c18131a29acf00107a98d5b8ce544e41"},{"file":"sfx\/bea_start_vo_05.ogg","sha":"4ef17de2f1a94b759eefec4d407239d4241d0aa9"},{"file":"sfx\/bea_ulti_01.ogg","sha":"a5b5be16bfc01780465930b2b261267e47cbe077"},{"file":"sfx\/bea_ulti_vo_01.ogg","sha":"036e5bf0f038dd24d6914a3f34de865bcd9e3e9c"},{"file":"sfx\/bea_ulti_vo_02.ogg","sha":"33928cea063345edad27c3f6cee98ed4d64f1c41"},{"file":"sfx\/bea_ulti_vo_03.ogg","sha":"bedfc21dd66008b91597ff6c160e78d5ce3af803"},{"file":"sfx\/bea_ulti_vo_04.ogg","sha":"0c125228a15534c26440af9c92a0a8b142f625ac"},{"file":"sfx\/beach_brock_explo_01.ogg","sha":"d4252b2750930cda0afda344efe86cb6c0d53fe2"},{"file":"sfx\/bear_spawn_01.ogg","sha":"7e1b3681c1523163633b10bd49b0005a56fbbc54"},{"file":"sfx\/become_chips_01.ogg","sha":"1462bfc178324c90864dcdc4f348794e54faf5fe"},{"file":"sfx\/bibi_bubble_hit_01.ogg","sha":"b96ecb9d089892f12c30804766535881c40c45da"},{"file":"sfx\/bibi_bubble_pop_01.ogg","sha":"c07e68739fe5d739d13f5224bd50c6c98d96ee12"},{"file":"sfx\/bibi_die_vo_01.ogg","sha":"58e30e2d23a9704df3dd2ef892605146fa387728"},{"file":"sfx\/bibi_die_vo_02.ogg","sha":"acbf09fca8a2a0ba3aab223d09343a9fed0763a8"},{"file":"sfx\/bibi_die_vo_03.ogg","sha":"4d1633b80056a076189757362d0e8c1cefd8171c"},{"file":"sfx\/bibi_die_vo_04.ogg","sha":"02359b415fc0ead50d0bea364c9bd0d2a636f846"},{"file":"sfx\/bibi_hurt_vo_01.ogg","sha":"3028d231875369375883709e0712dd2f4fe4abbe"},{"file":"sfx\/bibi_hurt_vo_02.ogg","sha":"b5de50b6f118f05ab6d21ccd716b0a105ac1b09f"},{"file":"sfx\/bibi_hurt_vo_03.ogg","sha":"444831efcd4061aeb0b4a9fac589d9a478c44818"},{"file":"sfx\/bibi_hurt_vo_04.ogg","sha":"f4bb01523f1716ad75dce2a5e129fb669aaf2afb"},{"file":"sfx\/bibi_kill_vo_01.ogg","sha":"26997303cbfd016f7cf960f4aed7e838cadd40bd"},{"file":"sfx\/bibi_kill_vo_02.ogg","sha":"3c944be9661efc4d3153d57647c058d8280f39c9"},{"file":"sfx\/bibi_kill_vo_03.ogg","sha":"9d0de0d695679e504097562745cd25772c9be9c3"},{"file":"sfx\/bibi_kill_vo_04.ogg","sha":"dee7169ec4bcdf9b19b42a123ba0217a552b57c6"},{"file":"sfx\/bibi_lead_vo_01.ogg","sha":"175baa4410401a3ef8f05be39aa2259eeaff615b"},{"file":"sfx\/bibi_lead_vo_02.ogg","sha":"1fdcd0c5694b12b7492c424706a368624bc01b37"},{"file":"sfx\/bibi_lead_vo_03.ogg","sha":"70c72caa1d3f6e38ef6b2039947e63180f6742ab"},{"file":"sfx\/bibi_lead_vo_04.ogg","sha":"8031a74cba02e019255d9b93f05006a643211187"},{"file":"sfx\/bibi_reload_01.ogg","sha":"b42461a211acece6b69df8daa2b1cde213366c1f"},{"file":"sfx\/bibi_start_vo_01.ogg","sha":"467bbf384d3064e9c970c42018213d98bf43fa6f"},{"file":"sfx\/bibi_start_vo_02.ogg","sha":"f82560515b54a8f5d0e64733bd9feb09664d0f93"},{"file":"sfx\/bibi_start_vo_03.ogg","sha":"2a8b51c3c3f4bb7a056c851f4b75065c60c3ccc8"},{"file":"sfx\/bibi_start_vo_04.ogg","sha":"3c84060ae5972cfe1781285fd6d5d5849b599057"},{"file":"sfx\/bibi_start_vo_05.ogg","sha":"20b9bb4273620137c19dca12eba058931d4f21cd"},{"file":"sfx\/bibi_start_vo_06.ogg","sha":"3a87518bc76f52f743be7c423a52aae91459d648"},{"file":"sfx\/bibi_swing_03.ogg","sha":"d760e5516dc77fa4cd7ce5573c9eddb629dc25ef"},{"file":"sfx\/bibi_ulti_02.ogg","sha":"4888379fd41de9c4e9c98cbd834560a4e23d7ab0"},{"file":"sfx\/bibi_ulti_hit_01.ogg","sha":"d8f424b5bc41e512a5ab36cf8fb86d0c41524f38"},{"file":"sfx\/bibi_ulti_vo_01.ogg","sha":"5fa34e9f8a4464e5048f487be6eca0f3748d353e"},{"file":"sfx\/bibi_ulti_vo_02.ogg","sha":"7b84bc0d5cc6971f0e022fc83ff803c4da60f333"},{"file":"sfx\/bibi_ulti_vo_03.ogg","sha":"3daef6975212182aaaead245d2961de021399c0c"},{"file":"sfx\/bibi_ulti_vo_04.ogg","sha":"b986396600f2d63ad4094efed58f909b171cf0ab"},{"file":"sfx\/bibibat_impact_01.ogg","sha":"7a94cf6eee779985e33b665fbe9fc6db1a880d52"},{"file":"sfx\/bigshotgun01.ogg","sha":"e0a3dc0e7a449a94f7efafe196bcb200c11229f5"},{"file":"sfx\/blink_01.ogg","sha":"f2a9dd801c0f5f618751dc90af7cc3e448bbadb8"},{"file":"sfx\/blink_01v2.ogg","sha":"eca1f53eaf81a639f8a6995de7d6e0d13c673407"},{"file":"sfx\/blue_mine_01.ogg","sha":"550f3731754f9c22da4ae2b3bbe4c29076813c1b"},{"file":"sfx\/bo_die_01.ogg","sha":"e5c60e48c874c73f5e1265da936ba996d8d8987d"},{"file":"sfx\/bo_die_02.ogg","sha":"0432ced9caf74ae526afa53245c12d6cf88e248d"},{"file":"sfx\/bo_die_03.ogg","sha":"eb353c6c470ce316b223514bbfba8626f01dfcbd"},{"file":"sfx\/bo_die_04.ogg","sha":"e92167a71d5fb0219d8ee7a6f16736a1d4a039d5"},{"file":"sfx\/bo_fire_vo_01.ogg","sha":"5d581e35de4a34b06a6ad43db1f550a43b38998f"},{"file":"sfx\/bo_fire_vo_02.ogg","sha":"5051923b86f7622436ed424153b4330dd16a0d75"},{"file":"sfx\/bo_fire_vo_03.ogg","sha":"516b29e779d6c15fdf2b572611d64e5b811eb294"},{"file":"sfx\/bo_fire_vo_04.ogg","sha":"984de812313d6b533238fd101789eee3932004f4"},{"file":"sfx\/bo_gadget_01.ogg","sha":"cf7f787e8b2f263033079ed7b5488a483cd3b48d"},{"file":"sfx\/bo_hurt_01.ogg","sha":"22cd6e733095aff8e218c1b0fe1106db40ffd0db"},{"file":"sfx\/bo_hurt_02.ogg","sha":"8ebdf6f5fcc0dca99d89b687881aae54c033918a"},{"file":"sfx\/bo_hurt_03.ogg","sha":"d4a8d06904c9397d520867a0d37da1cce324d60e"},{"file":"sfx\/bo_hurt_04.ogg","sha":"ed1407a2704fae611bb5ac953df4452f71bf58fb"},{"file":"sfx\/bo_kill_vo_01.ogg","sha":"41de82d27f16b3771eb52245170b2c7dfea02301"},{"file":"sfx\/bo_kill_vo_02.ogg","sha":"a8a8abd07590901600fc4270ad462b36b69aa8e2"},{"file":"sfx\/bo_kill_vo_03.ogg","sha":"d84d49cd59d329f2ea221a0a3736545dbf0ef556"},{"file":"sfx\/bo_kill_vo_04.ogg","sha":"bfaee7fdf8144b2b87064388bb188d8678f68289"},{"file":"sfx\/bo_lead_vo_01.ogg","sha":"e0b6fbcab8de7bc961ce34955d78840ba842f7d3"},{"file":"sfx\/bo_lead_vo_02.ogg","sha":"519694c1b210b06855e44afa37a188d3cd387b44"},{"file":"sfx\/bo_lead_vo_03.ogg","sha":"1016a680399ffa6df50595777be1c3449cf6c100"},{"file":"sfx\/bo_lead_vo_04.ogg","sha":"48d6aea50317bfa85cb910228c0677ec073752d9"},{"file":"sfx\/bo_mine_spawn_01.ogg","sha":"979cc466d68cecff33c1da5881005f155537ee3c"},{"file":"sfx\/bo_start_vo_01.ogg","sha":"1b6da6f039088aebc4c4ae612b90480f467c7690"},{"file":"sfx\/bo_start_vo_02.ogg","sha":"f3bcc31c55c0edcbf3f1d89932eeaa3967bb0888"},{"file":"sfx\/bo_start_vo_03.ogg","sha":"774d113a672369d5f71c83c003a1d1dd0f0fd7a4"},{"file":"sfx\/bo_start_vo_04.ogg","sha":"7d955607ba45815b11757d628609dfd659f8f6fa"},{"file":"sfx\/bo_start_vo_05.ogg","sha":"e7bc8946d96f2b5d636e9d04a3c928e3803e7f6e"},{"file":"sfx\/bo_ulti_vo_01.ogg","sha":"74ce40045ba659d0298b444bbf26ecceb3ae9380"},{"file":"sfx\/bo_ulti_vo_02.ogg","sha":"38ed612442dba16bc8c9cdf0c3d24cb2309b940b"},{"file":"sfx\/bo_ulti_vo_03.ogg","sha":"afc3e58b0b7e3c6ac4e286dfe0836c7427a8f5af"},{"file":"sfx\/bo_ulti_vo_04.ogg","sha":"5092f34a879ffc309733125b6b5f96f2b09f2f99"},{"file":"sfx\/bomb_bleeps_01.ogg","sha":"33144deaabcdb1be18748fc9f9204873cc4ccfa5"},{"file":"sfx\/boss_spawn_seq_01.ogg","sha":"1ad0c68000345367d3ade246a7a76a51aec375f5"},{"file":"sfx\/bounce_fire_01.ogg","sha":"7b999e8669698a2b053eea1e2cd5f4742b03ba11"},{"file":"sfx\/bow_dryfire_01.ogg","sha":"96f5c5155b098219791185e680f319380aa9ff77"},{"file":"sfx\/bow_fire_01.ogg","sha":"dfed27d8391a9cbe0d6ebf03b2b80de446c058b6"},{"file":"sfx\/bow_reload_01.ogg","sha":"b38d6e6f3e4b015208c8e7aaea7e56ec3e07d675"},{"file":"sfx\/brawl_ball_kick_02.ogg","sha":"199a0e64cf7e82bb4af0f7745b6fbb17792615de"},{"file":"sfx\/brawl_button_01.ogg","sha":"9be0c962a2bf445f62f259ecd874e1941071fbc2"},{"file":"sfx\/brawl_go_01.ogg","sha":"4a3916051cfeb1adb20363d14029f5f7ca50de9c"},{"file":"sfx\/brawl_intro_01.ogg","sha":"1cf176718f847ce38bafa9c1586fd009af799534"},{"file":"sfx\/brawl_unlock_01.ogg","sha":"d646d5fe1fa187697c546e8db897228c86f9af68"},{"file":"sfx\/brawl_unlock_02.ogg","sha":"b6ca998d6287bf535bd351325621620b033979a7"},{"file":"sfx\/brawlbuy_01.ogg","sha":"9804734e123294ca05f52224d3041ecdcb92e28e"},{"file":"sfx\/brawlerintro_01.ogg","sha":"f2c9dccfc386806ffc72906d309c101ca5ef783b"},{"file":"sfx\/brock_death_01.ogg","sha":"08a6e826b11ccac715f27ae54bf3ae6ec9cc7b09"},{"file":"sfx\/brock_death_02.ogg","sha":"c273f54922025903b698b5f2eaa066b242bae7ea"},{"file":"sfx\/brock_death_03.ogg","sha":"cf9b83c5b3ea0c3f75de6e2feeedf534d3a214fa"},{"file":"sfx\/brock_death_04.ogg","sha":"c56aec7aee230ee96e3b46fcdeec9ed84af594ca"},{"file":"sfx\/brock_dryfire_01.ogg","sha":"4f72f3b3481a60ff7b3deaf5389b666278761569"},{"file":"sfx\/brock_hurt_01.ogg","sha":"071d1e3aa42a4795b8b9d66aea489e5b0672a289"},{"file":"sfx\/brock_hurt_02.ogg","sha":"065c7bcae55dcc78ea8256636124fa77a1bbbdb1"},{"file":"sfx\/brock_hurt_03.ogg","sha":"addf039a044813fb97ce29bc7abfc7e5c50e5b4b"},{"file":"sfx\/brock_hurt_04.ogg","sha":"7ffe858ca39f2b65b3d93b6b746bc10c75bc5345"},{"file":"sfx\/brock_hurt_05.ogg","sha":"218b34a251f9b30d9b58c8e965610231f655504c"},{"file":"sfx\/brock_kill_vo_01.ogg","sha":"934de5c0b7632fca2b57366f30ae627d137c12ba"},{"file":"sfx\/brock_kill_vo_02.ogg","sha":"82967c2f4d113f19aafc68d16579ea64c895c1e8"},{"file":"sfx\/brock_kill_vo_03.ogg","sha":"d3a19724b9fd6644c4677122b4895931d5db827c"},{"file":"sfx\/brock_kill_vo_04.ogg","sha":"aea5313d74d50e8a8c933023c5bb0be93dab7c99"},{"file":"sfx\/brock_lead_vo_01.ogg","sha":"f72678330d9da164b7db897004115d127e56887d"},{"file":"sfx\/brock_lead_vo_02.ogg","sha":"f8661daf12c089cebe51cd39e83671012c0fcfa6"},{"file":"sfx\/brock_lead_vo_03.ogg","sha":"6a0c21664dfac9d631c5a571cdb808b83e0276c5"},{"file":"sfx\/brock_lead_vo_04.ogg","sha":"ce26ac6ed65d19c20ac30952598087f979db02fa"},{"file":"sfx\/brock_lead_vo_05.ogg","sha":"5e2c7b5e5761feed8b29dba6f007f1d3c46f47fd"},{"file":"sfx\/brock_lead_vo_06.ogg","sha":"74914f6db9c3df490b8219337fd983111fa9c3f6"},{"file":"sfx\/brock_reload_01.ogg","sha":"8dcbf802a6e4c5e2dec1a920f52aeacef71230fe"},{"file":"sfx\/brock_start_vo_01.ogg","sha":"fd8018f66e7a748a2113967e49fee6a3862d7c8a"},{"file":"sfx\/brock_start_vo_02.ogg","sha":"afb6d7c00eefdc7849179b54984129a12a627b5f"},{"file":"sfx\/brock_start_vo_03.ogg","sha":"af59d060d79b6a264009f0a3358d873cfe9193c0"},{"file":"sfx\/brock_start_vo_04.ogg","sha":"2860123e79592daeb38e992c6435d57a6147a10f"},{"file":"sfx\/brock_start_vo_05.ogg","sha":"b0c6acd6cc572e288028ad7fcc59a5dc31a74b5b"},{"file":"sfx\/brock_start_vo_06.ogg","sha":"94e47bddd930fed439d616948c10251cc5613b4f"},{"file":"sfx\/brock_start_vo_07.ogg","sha":"4040d3de72d1ee9356a456935f2e8ee71eaad9f5"},{"file":"sfx\/brock_ulti_vo_01.ogg","sha":"4046d03240feee4783627339fbe3686f3b4943a7"},{"file":"sfx\/brock_ulti_vo_02.ogg","sha":"e99430be3b155efec9eba77a11889d2a5074ea3e"},{"file":"sfx\/brock_ulti_vo_03.ogg","sha":"5631ebd033622ad207b0b564cd876127393aa63c"},{"file":"sfx\/brock_ulti_vo_04.ogg","sha":"74881285e52b5e71c43416ca8002004d9823379d"},{"file":"sfx\/brock_ulti_vo_05.ogg","sha":"e3f1bcb9587f23170e08a895609f99ebf4348d5e"},{"file":"sfx\/bull_berserk_01.ogg","sha":"3d124a98375caac1b575a3512f19de7b4328e2f6"},{"file":"sfx\/bull_die_vo_01.ogg","sha":"ae3e4203161976f62045550cede2dfb600566ced"},{"file":"sfx\/bull_die_vo_02.ogg","sha":"8f64c0e3ff281c8f60daa33d41ce1e90861d5917"},{"file":"sfx\/bull_die_vo_03.ogg","sha":"57d2803a960b54791afa464c01e84d3e17364375"},{"file":"sfx\/bull_die_vo_04.ogg","sha":"d6b8e8cf283d605a492d83ee42639439ec327b6b"},{"file":"sfx\/bull_hurt_vo_01.ogg","sha":"f6446dd1bda4f2ac1ae5b38042b2301dddbc09c0"},{"file":"sfx\/bull_hurt_vo_02.ogg","sha":"ffb46ef94d1028a59255a1a21f93888e2d0d9139"},{"file":"sfx\/bull_hurt_vo_03.ogg","sha":"781e424413cc2f390f5cdb82e8d117f5cc6678a8"},{"file":"sfx\/bull_hurt_vo_04.ogg","sha":"4aa9982e3db4abed342e5d9e9531ddb0383d5a30"},{"file":"sfx\/bull_hurt_vo_05.ogg","sha":"8f73fd849ca3a2a78a72197650c5b5ed7a486bb0"},{"file":"sfx\/bull_kill_vo_01.ogg","sha":"7e8ef88cb2e3afcc9b83bc96297da8feee32dae8"},{"file":"sfx\/bull_kill_vo_02.ogg","sha":"3517b1c5d7531c39de9e2e755b93c936eb1ed4ce"},{"file":"sfx\/bull_kill_vo_03.ogg","sha":"1418715ad1eb8acb4cbcf25e78ac3bf1ff7cdd61"},{"file":"sfx\/bull_kill_vo_04.ogg","sha":"eb1e903efeb1d4d0a28334cf4d8de6e50c3369d1"},{"file":"sfx\/bull_lead_vo_01.ogg","sha":"4c48cdc133e39d17c999f1d7ea9373fd6c0df3ae"},{"file":"sfx\/bull_lead_vo_02.ogg","sha":"67cf5c18c2acbb80f1e2ecc2fe1f96c2a3f6ac2f"},{"file":"sfx\/bull_lead_vo_03.ogg","sha":"cf6e91d1f9702b413a4dbd86427d7ae8c1a1fa5e"},{"file":"sfx\/bull_lead_vo_04.ogg","sha":"2c4cba8d9a0ba5df0da37724b3d7cf7f8f265e5b"},{"file":"sfx\/bull_start_vo_01.ogg","sha":"d016a12a11127a3f547d7f03b519787b4cffc3a7"},{"file":"sfx\/bull_start_vo_02.ogg","sha":"0079ab2d107a018df3a60b732bb40d067ee6c7c4"},{"file":"sfx\/bull_start_vo_03.ogg","sha":"53ad72423ab004d64e10be171a68a86de5b52b3d"},{"file":"sfx\/bull_ulti_vo_01.ogg","sha":"28421a46d26f8576b3152286ca973a6802e2787f"},{"file":"sfx\/bull_ulti_vo_02.ogg","sha":"976fb5f7997446e7437b4e523e537f52341626ee"},{"file":"sfx\/bull_ulti_vo_03.ogg","sha":"331bec996755426acd5393f5921a0fc32a528b9b"},{"file":"sfx\/bull_ulti_vo_04.ogg","sha":"b213f32fcacea6cc6377b69d38a2d545724558f7"},{"file":"sfx\/bullet_rico_grass_02.ogg","sha":"e917b9f2c7f4f9ac7f41970f6d52b7656e648170"},{"file":"sfx\/bullet_rico_metal_01.ogg","sha":"6c0040c09dfa272a6f9d2b9804145fcb42d7f5bf"},{"file":"sfx\/bullet_rico_rock_01.ogg","sha":"b30b155f982aa6d136fdff678a2df8a6afd495ef"},{"file":"sfx\/bullet_rico_wood_01.ogg","sha":"eaa0136db9dbb9b71df83676b3bdc3dd27ead780"},{"file":"sfx\/buy_gems_01.ogg","sha":"1b4aa5ec7778c0ac3bd0e8caa767ce5534801f68"},{"file":"sfx\/carl_atk_01v2.ogg","sha":"ed5a4edcb6d4bf5185bfd0ef32089b2665854308"},{"file":"sfx\/carl_atk_hit_return_01.ogg","sha":"e1b2456c314fee2be9666e90e1f312197772578a"},{"file":"sfx\/carl_atk_return_03.ogg","sha":"d425c8c43e7b623dc9c32d5118ec3644d668f64e"},{"file":"sfx\/carl_atk_vo_01.ogg","sha":"cbe169845f7f9327527a7279b90bb9f46b2ea38d"},{"file":"sfx\/carl_atk_vo_02.ogg","sha":"89dcc7d19e16fd031d2842b9aec73d8056b59d53"},{"file":"sfx\/carl_atk_vo_03.ogg","sha":"d2813436387a547a8912ac09156ab2c7d6903956"},{"file":"sfx\/carl_death_vo_01.ogg","sha":"be42c11c32389f54c3e63efbf66b392d987b82b9"},{"file":"sfx\/carl_death_vo_02.ogg","sha":"485b736c03e09be52d31b3489a7bdc77b02ea088"},{"file":"sfx\/carl_death_vo_03.ogg","sha":"9814d936fbeda4f1b93741490f908ed36c53d6de"},{"file":"sfx\/carl_death_vo_04.ogg","sha":"a756f78343bc9a48dbd26feb38de47981e8c4025"},{"file":"sfx\/carl_hurt_vo_01.ogg","sha":"4748fff958ba312a947a15d9ae28643e11340833"},{"file":"sfx\/carl_hurt_vo_02.ogg","sha":"740d698e24d5e86c88c7e909f36f9db78b20fd01"},{"file":"sfx\/carl_hurt_vo_03.ogg","sha":"1b648a8c09a9ca38cb3784ff22d43b3e82fd28cd"},{"file":"sfx\/carl_hurt_vo_04.ogg","sha":"29371c137c70376fd077084a36a3a4c31d28c5b1"},{"file":"sfx\/carl_hurt_vo_05.ogg","sha":"429d8626a495943ea4ed500027064af83b59f1a9"},{"file":"sfx\/carl_kill_vo_01.ogg","sha":"6a8e28199f5f573246091418a3ded4fa4f8ec7c2"},{"file":"sfx\/carl_kill_vo_02.ogg","sha":"e370d0a1b226ae00853a8f1188ac19c9c44b42b3"},{"file":"sfx\/carl_kill_vo_03.ogg","sha":"db23f8c830510a647539b316a72dfb344db24d1d"},{"file":"sfx\/carl_kill_vo_04.ogg","sha":"ea1c5fd2fdd2ffb1b70ace25f92e9097f4461dfe"},{"file":"sfx\/carl_kill_vo_05.ogg","sha":"990fdc62f409c176a3022bc83d5944fa387ae0e6"},{"file":"sfx\/carl_lead_vo_01.ogg","sha":"717f925aa93bb5b7299462a39cc6da06808bac24"},{"file":"sfx\/carl_lead_vo_02.ogg","sha":"ab3f5e938702b036677cecfeedfc4b26e0dc9c74"},{"file":"sfx\/carl_lead_vo_03.ogg","sha":"8cc47ce53e28048462d184f200aba25ab739e6ee"},{"file":"sfx\/carl_lead_vo_04.ogg","sha":"7a21f7e9d1c18a5c592bae4a2b65c0016dd02490"},{"file":"sfx\/carl_no_ammo.ogg","sha":"6ecfc96fbe22d0c6266995068febaa7ef9f9a0c9"},{"file":"sfx\/carl_reload_01.ogg","sha":"7458c32b543644e5341331592060590ae203b989"},{"file":"sfx\/carl_start_vo_01.ogg","sha":"ec8c950581c9dceb060e09c81797e38c1cf8abe9"},{"file":"sfx\/carl_start_vo_02.ogg","sha":"37b2b14c68580f53758d2cacaa4249732a5f0a46"},{"file":"sfx\/carl_start_vo_03.ogg","sha":"78b42cb2edd6509cd41ce62d195452057f57d72a"},{"file":"sfx\/carl_start_vo_04.ogg","sha":"6eba1850038636be35d9ea25d4e1dfb7eadaa30d"},{"file":"sfx\/carl_start_vo_05.ogg","sha":"74fe495ac4f99e77c58c950c92880bf2d84b923e"},{"file":"sfx\/carl_start_vo_06.ogg","sha":"bf3b343f83232bb74a09e3ced2cbc6aaa74d6d41"},{"file":"sfx\/carl_start_vo_07.ogg","sha":"06045fa68294fc40ddc88893f2b4ae18726ad91b"},{"file":"sfx\/carl_twirl_02.ogg","sha":"c31f1520a63111aa156af03375ac234d1d5580fa"},{"file":"sfx\/carl_ulti_vo_01.ogg","sha":"a3ec8eaa5353d93b8b188df47f0b34782f806663"},{"file":"sfx\/carl_ulti_vo_02.ogg","sha":"2f1e3bb76dbfe024e3019471053dd4f51e2602d9"},{"file":"sfx\/catch_bawl_01.ogg","sha":"e0f2e09f3b9cb51ae74358fe8b7952efda730764"},{"file":"sfx\/char_respawn_01.ogg","sha":"1499669b3d764c1b4311f5cc9759edb8c0586cff"},{"file":"sfx\/char_roll_out_02.ogg","sha":"463cd5fe5f39d166195a58966bf6477e61b9987a"},{"file":"sfx\/coin_count_02.ogg","sha":"d7ca38a63fe2d64a97aa980d4ab1d0e15721518b"},{"file":"sfx\/coin_hit_01.ogg","sha":"1270c21546a6452e4abc26cc912cb8f504bc2ac1"},{"file":"sfx\/collect_coins_01.ogg","sha":"c7db690c363854bff3d82162396774f89ec97d7c"},{"file":"sfx\/count_gems_01.ogg","sha":"75f297d719e4456535d5c1df9dabdc9043460035"},{"file":"sfx\/count_keys_01.ogg","sha":"0f68ac529f3c8a893797c49ec307b6d1715a526e"},{"file":"sfx\/count_powerpoints_01.ogg","sha":"3366851b21041cbf8f5027bcf03eeb676ce228b3"},{"file":"sfx\/count_starkeys_01.ogg","sha":"d8344b876a5b9a5448ea2d10de7fcdad27edba3c"},{"file":"sfx\/count_tickets_01.ogg","sha":"8394eb98b530891e1151b76a5f0df26a91816cf3"},{"file":"sfx\/count_trophies_01.ogg","sha":"6b7dc7dbb8a551bd5b28216dbae63580a7dbdd2a"},{"file":"sfx\/countdown_01.ogg","sha":"472cab6986ace9fe13078909959d08e851313233"},{"file":"sfx\/craft_rarity_01.ogg","sha":"a746da547f4f714a45fe024d6365b08faaba0f33"},{"file":"sfx\/craft_rarity_02.ogg","sha":"bd314e7597f2fae1466631067405c89b1d584e76"},{"file":"sfx\/craft_rarity_03v2.ogg","sha":"d6cdbd475e5d4ce926ea408f4aed63a76748a104"},{"file":"sfx\/craft_rarity_04v2.ogg","sha":"1a3ad12e1e47a136d5b0d06b04f48d353710bd4b"},{"file":"sfx\/craft_rarity_05.ogg","sha":"d65e8da83b27787bcb07c2a6b7c100b3038da488"},{"file":"sfx\/crow_dies_01.ogg","sha":"2499018032b211bac3ec3be67fe292b3869bab2b"},{"file":"sfx\/crow_dryfire_01.ogg","sha":"78b91a2f1ff7d3239a1766ff638839007c7d8e5d"},{"file":"sfx\/crow_get_hit_01.ogg","sha":"c7be89c9412241c846de66988f8e58b51d9f328c"},{"file":"sfx\/crow_get_hit_02.ogg","sha":"72e0489ba4abf557c5a9f3f21d9ce866cd623df8"},{"file":"sfx\/crow_get_hit_03.ogg","sha":"4766514074b0b8f7b6a52ba3199e89e55d50d47f"},{"file":"sfx\/crow_get_hit_04.ogg","sha":"c5366eb809bf746a762606ffa222f5cab19a3c7b"},{"file":"sfx\/crow_get_hit_05.ogg","sha":"f73f3dfa3b949f357e6d9ebe97b9aaca3e993649"},{"file":"sfx\/crow_get_hit_06.ogg","sha":"8e13ab89e1fa6acefad07039cc0fd05d06920cb7"},{"file":"sfx\/crow_kills_01.ogg","sha":"bec13346dd20673372d0860d53775bf81b9743e7"},{"file":"sfx\/crow_kills_02.ogg","sha":"8f518bb4cac52a01e04a21aae4950d82873a89c9"},{"file":"sfx\/crow_kills_03.ogg","sha":"1d7b25b04038671559b07a2aaba176198224c260"},{"file":"sfx\/crow_lead_01.ogg","sha":"2bf988c71f59b91164ed41c6767237c8c6952a3e"},{"file":"sfx\/crow_lead_02.ogg","sha":"088f69f5cb7550933306e11255282d6adf226e32"},{"file":"sfx\/crow_reload_01.ogg","sha":"143b6056a546b0ddf8f065fa41ad91428c426865"},{"file":"sfx\/crow_start_01.ogg","sha":"7ffcc5d14201834a6d4371d491c737173da46941"},{"file":"sfx\/crow_start_02.ogg","sha":"6583e52cb5deef9eded991089377ac7f45fecccd"},{"file":"sfx\/crow_start_03.ogg","sha":"08df7ac43c8185dd00549b0476b1c99856e7a431"},{"file":"sfx\/crow_throw_01.ogg","sha":"ad78c1b1e3ff03bf8af01ebe94d39d360ff8ea62"},{"file":"sfx\/crow_ulti_01.ogg","sha":"71d37626945ca3b01ff09883cdb2cbaf2c5a09db"},{"file":"sfx\/dash_gadget_01.ogg","sha":"9c12b41489e018cffc37f49d48be9a6c72f8a59a"},{"file":"sfx\/deadyey_shot_01.ogg","sha":"aedfea76b8ac21f1d6c1790047b36f4b6271a87c"},{"file":"sfx\/death_plop_01.ogg","sha":"abfc6e34cda790167e26cccb23a37639facace34"},{"file":"sfx\/drink_powerup_01.ogg","sha":"7411ac0a9916a0a8702ce90ec5094caa476e3a35"},{"file":"sfx\/dummy.ogg","sha":"f2b272e3cf735198c0dd043599bb502222887bf5"},{"file":"sfx\/dynamike_gadget_01.ogg","sha":"4dc34ca1b09e6f65b163b883873616306168a4f3"},{"file":"sfx\/dynamike_throw_01.ogg","sha":"a352bc77a7c8224fb9e6941423c6dddbd83f654a"},{"file":"sfx\/dynamike_throw_02.ogg","sha":"ae0740fcae263e7069ceebbb79a6442a708d2b0f"},{"file":"sfx\/earth_atk_01.ogg","sha":"72b4c455f4baf2ecc20f233d3fe6c2053f200e27"},{"file":"sfx\/el_primo_atk_01.ogg","sha":"96d093b50946456b68857860fae8841f63aa8f08"},{"file":"sfx\/el_primo_atk_02.ogg","sha":"51bc0f52545ee1c1ec7c9cbbdb94bc225ecee457"},{"file":"sfx\/el_primo_atk_03.ogg","sha":"7b44059425550ddbfeb71183e98c3e5237ac9099"},{"file":"sfx\/el_primo_atk_04.ogg","sha":"b27022c259d77c38cc9ade7023418d0c18d31796"},{"file":"sfx\/el_primo_atk_05.ogg","sha":"efec73f44c688df6d4cc48b35b26504140196b11"},{"file":"sfx\/el_primo_death_01.ogg","sha":"2990c77ceb3e83506fca708339513dc125871865"},{"file":"sfx\/el_primo_death_02.ogg","sha":"ff0c946f6ec62bccdf68c634f2ba15c714af25dc"},{"file":"sfx\/el_primo_death_03.ogg","sha":"3a1d8679068f1b0ba202bfc59f0a21eac3265fd7"},{"file":"sfx\/el_primo_death_04.ogg","sha":"f161e0de07c6871b7e2d8eed7db683143213dd67"},{"file":"sfx\/el_primo_hurt_01.ogg","sha":"5e7e01623389212b45979b8c7b2dcfa62b593be0"},{"file":"sfx\/el_primo_hurt_02.ogg","sha":"eef055b5c36952ab89da6a763d5f0a478ce65e21"},{"file":"sfx\/el_primo_hurt_03.ogg","sha":"78c9bf4aa6a32bf9c2a36dce15f187525e6c7ce5"},{"file":"sfx\/el_primo_hurt_04.ogg","sha":"ebb9b874b39d25550c5f4d97c17d0ab06528199f"},{"file":"sfx\/el_primo_kill_01.ogg","sha":"b9f19ffc43afc6a83791af50ed4a18fc5669063a"},{"file":"sfx\/el_primo_kill_02.ogg","sha":"4d51ce3f568036748cd699c5013087f15383e63a"},{"file":"sfx\/el_primo_kill_03.ogg","sha":"630348f8cd370e4ff94aa965d6a5afa9b1f6a361"},{"file":"sfx\/el_primo_lead_01.ogg","sha":"08e1724112b39b16ad8d766ccb2c9b4d6aef4f9e"},{"file":"sfx\/el_primo_lead_02.ogg","sha":"bfa37d3959da6cce459915c8078fcc2292b0de64"},{"file":"sfx\/el_primo_lead_03.ogg","sha":"28a273cc5a339cc5ff5219af83f94ca190097309"},{"file":"sfx\/el_primo_start_vo_01.ogg","sha":"5d763fa671067356d1f069c54eb1135a63a415a8"},{"file":"sfx\/el_primo_start_vo_02.ogg","sha":"f94c784b720acafe2c9ae4ba414c3a1b1d4beee7"},{"file":"sfx\/el_primo_start_vo_03.ogg","sha":"e78442e1fe087f817d0f257892060c33ae98a7c9"},{"file":"sfx\/el_primo_start_vo_04.ogg","sha":"2a6a9d2ee8dcadd6574d69a7802f77e20bc42087"},{"file":"sfx\/el_primo_start_vo_05.ogg","sha":"792453a3f0dea09f151ab237eb9906216e8a1d86"},{"file":"sfx\/el_primo_start_vo_06.ogg","sha":"1cb6df6d0d2eeb0f0169bfe80972661b1daa1226"},{"file":"sfx\/el_primo_start_vo_07.ogg","sha":"2ca28adc52f1facd933b76c24352d06339ddf2e1"},{"file":"sfx\/el_primo_ulti_01.ogg","sha":"79c026c98cc203807e490744fdafe0b0d1408efb"},{"file":"sfx\/el_primo_ulti_02.ogg","sha":"cdc00f6f261623938b7510c21fa005f318efd43f"},{"file":"sfx\/emit_coins_01.ogg","sha":"3271683ea7677f12945415ebee947efb4a8c4f3a"},{"file":"sfx\/emit_gems_01.ogg","sha":"86b6befcb5097e10c4f276fa634215e7aa02836a"},{"file":"sfx\/emit_keys_01.ogg","sha":"8868aba0ee5fd839459c2c21fef865e27353f987"},{"file":"sfx\/emit_powerpoints_01.ogg","sha":"22154966b61c199e14b9110b212b962d5f94e315"},{"file":"sfx\/emit_starkeys_01.ogg","sha":"b803e3970b8e7492148edda371bb9da264ed5bc8"},{"file":"sfx\/emit_tickets_01.ogg","sha":"c94f87b11a84d833d83b57e9036a68ae4bf5c2ed"},{"file":"sfx\/emit_trophies_01.ogg","sha":"1895b2ae414e969bb90d7ad731eeab8f045ead37"},{"file":"sfx\/emz_atk_01.ogg","sha":"65deb8750bba25049ceab0786751c411553fb5cd"},{"file":"sfx\/emz_atk_vo_01.ogg","sha":"f249f6858155c5b484e658e4355ad1bb4ce662a1"},{"file":"sfx\/emz_atk_vo_02.ogg","sha":"f0efb8a97e53c1480447446d6a1949def5df907e"},{"file":"sfx\/emz_atk_vo_03.ogg","sha":"0860f1d740b4969df0381faf703cf06c7e7de221"},{"file":"sfx\/emz_atk_vo_04.ogg","sha":"0c123a8a3db6aea5d16fe45439886cc36b782ce6"},{"file":"sfx\/emz_atk_vo_05.ogg","sha":"2ea6097a7ca32f79f60306a1388606bb11efcc96"},{"file":"sfx\/emz_die_vo_02.ogg","sha":"66607f41c764e3fc00b24927c1d6d16007d7680c"},{"file":"sfx\/emz_die_vo_03.ogg","sha":"751cc315e2fe89105c02d9b02b92ed92652240c0"},{"file":"sfx\/emz_die_vo_04.ogg","sha":"de46974452738f17a28cb8138a6a73ea00e64d6e"},{"file":"sfx\/emz_dryfire_01.ogg","sha":"e6f3147ded4f460520ff36ff613f31a053bfaef3"},{"file":"sfx\/emz_gadget_01.ogg","sha":"83ae0ad1e586a9dbd548a8b9b919c679ed6911ed"},{"file":"sfx\/emz_hurt_vo_01.ogg","sha":"09418c6547cc1e8f43ec74e9866702c547acd8d8"},{"file":"sfx\/emz_hurt_vo_02.ogg","sha":"0955defc2ffdd78cb442230d105af5aa9115d26d"},{"file":"sfx\/emz_hurt_vo_03.ogg","sha":"810402085be536491fde548db336f553b5c69e37"},{"file":"sfx\/emz_hurt_vo_04.ogg","sha":"06880d0d32c79724637cc9e30b0ecae0161d784d"},{"file":"sfx\/emz_hurt_vo_05.ogg","sha":"992f837ec1de33d6c239e56668d0298ef52a1a4e"},{"file":"sfx\/emz_hurt_vo_06.ogg","sha":"b8fb20d954901adbd097399221a26beab128a5f2"},{"file":"sfx\/emz_hurt_vo_07.ogg","sha":"b8cc51af30715d59a4867c99952cdf2bd732d96b"},{"file":"sfx\/emz_kill_vo_02.ogg","sha":"1d25aa4b730df6e6625acf97ab41b38952cc65b2"},{"file":"sfx\/emz_kill_vo_03.ogg","sha":"1223d96e9d6742bffc173e98052872032d60fb67"},{"file":"sfx\/emz_kill_vo_04.ogg","sha":"a044a28f1587e52b2b7abbb49ec657628d6b731a"},{"file":"sfx\/emz_kill_vo_05.ogg","sha":"9b57f0f9c112b3114d6448a2a0107bd74c238086"},{"file":"sfx\/emz_kill_vo_06.ogg","sha":"5a7536efab9258b55f9d41f9995da9af5f8918f8"},{"file":"sfx\/emz_kill_vo_07.ogg","sha":"a617ab5d39a6bd230dd7a5728410521aad691ee8"},{"file":"sfx\/emz_lead_vo_02.ogg","sha":"269e0a62c7f7afa578a740aac3eef5065c13ff44"},{"file":"sfx\/emz_lead_vo_03.ogg","sha":"5e9ab873b5bceb1a8e12fbecc0039a519c99f7ef"},{"file":"sfx\/emz_lead_vo_04.ogg","sha":"3548d56c561bab55f8c0b8147d0c7376c39ac6a1"},{"file":"sfx\/emz_reload_01.ogg","sha":"750e6b1e63da6ba8a9ab028818d4831288f56b7e"},{"file":"sfx\/emz_start_vo_01.ogg","sha":"613d6863136663e317d5af164d9a76fc08034e05"},{"file":"sfx\/emz_start_vo_02.ogg","sha":"d2af0c366cc74248fd5105d7d982a4bf04753da4"},{"file":"sfx\/emz_start_vo_03.ogg","sha":"a88292efb3f389bc182765cb9b43cf6d949c6b8c"},{"file":"sfx\/emz_start_vo_04.ogg","sha":"5dc56888b17b4bcc9be7134350c7688d42f0b286"},{"file":"sfx\/emz_start_vo_05.ogg","sha":"75f4bd3451c0ac3bb4762faa95730231dcd26c35"},{"file":"sfx\/emz_ulti_01.ogg","sha":"12a856657723449f8df2fb8c3ab8a27772c16935"},{"file":"sfx\/emz_ulti_vo_01.ogg","sha":"8143a305676c23067c1f6a6954f3a05b7e2f20a0"},{"file":"sfx\/emz_ulti_vo_02.ogg","sha":"6b49aa2fcfa7492b448973f62b995fb1370072c0"},{"file":"sfx\/enemy_char_respawn_01.ogg","sha":"af61b7414b91343a0917015d2ca1875d66b2b3d3"},{"file":"sfx\/enemy_gadget_button_01.ogg","sha":"140a1b6d539d8448d5763913bdb769667c646726"},{"file":"sfx\/flowerrocket_01.ogg","sha":"45c27cd67f860e92e44b894c53cb60aadfeb805f"},{"file":"sfx\/footbrawl_load_01.ogg","sha":"b4e20f809da31e42c7eb1184f617c0976f31bb5a"},{"file":"sfx\/frank_gadget_01.ogg","sha":"00e8341c1e40403c672639461d85341554a8ed0d"},{"file":"sfx\/frank_hit_01.ogg","sha":"88b88376165fa8b42b4a31bb34351814cfb6b619"},{"file":"sfx\/frank_swing_01.ogg","sha":"ff12006164b71b9399ba2235eea6b80ef1e5d44c"},{"file":"sfx\/frank_ulti_hit_01.ogg","sha":"278dbb1bef07d903364ed293cb6cc5f78db8849d"},{"file":"sfx\/frank_ulti_swing_01.ogg","sha":"22575bb44154df8bb48493e68aa691d92688a07f"},{"file":"sfx\/frank_vo_01.ogg","sha":"75d8c03f0ab3a3a43edf7a43bf55c52dcf6a15b1"},{"file":"sfx\/frank_vo_02.ogg","sha":"aea5952068e3b6bf877d1a3cb76d4bc26fd300fa"},{"file":"sfx\/frank_vo_03.ogg","sha":"860be5704919b274873272c6e13cfa5289f3c497"},{"file":"sfx\/frank_vo_04.ogg","sha":"447794ebabf3f9b7f4235c1c2cce29222161d300"},{"file":"sfx\/frank_vo_05.ogg","sha":"0d3f534c848217f9a70909a0e8c860444d3189d6"},{"file":"sfx\/frank_vo_06.ogg","sha":"f68fce34c25914a43bad927706fd8e1710c011c4"},{"file":"sfx\/friend_online_01.ogg","sha":"4fb8d51160c8a4b7ae29a6430f1655812aa27807"},{"file":"sfx\/gatcha_summary_01.ogg","sha":"0bb494aa7511faeb74dd1e9633fee1bfdf4e5aba"},{"file":"sfx\/gems_gatcha_01.ogg","sha":"f9f2eff61c8b842d4841fb77ca7ab2c99d108f4a"},{"file":"sfx\/gen_small_explo_02.ogg","sha":"c25608e389f81c3831f3d919dc7337ebe83cb4df"},{"file":"sfx\/gene_atk_02.ogg","sha":"ca2ba674ebac1eacda8fc1e0a5da9f5dbb5f67ed"},{"file":"sfx\/gene_atk_dry_01.ogg","sha":"dfe4fa3876b8cc803fc1987c347d1bd648251835"},{"file":"sfx\/gene_atk_hit_01.ogg","sha":"3ab8fea80a5d67e0b0211aa6c241e4cacbffbd95"},{"file":"sfx\/gene_atk_hit_02.ogg","sha":"62ee8cbbfaf403e8e0afa37781b6b9016b39d450"},{"file":"sfx\/gene_atk_reload_01.ogg","sha":"9675906fb5f9207994fdba309fc0906a48539048"},{"file":"sfx\/gene_atk_split_01.ogg","sha":"1137fdad71a8f637bd3db7ed3d25042e83050ed2"},{"file":"sfx\/gene_atk_ulti_01.ogg","sha":"f45e3c3fc562789d93eb1e273b132569051df984"},{"file":"sfx\/gene_gadget_01.ogg","sha":"45c285453dd15f24d417372e94b492a7457418f5"},{"file":"sfx\/gene_hit_01.ogg","sha":"7a06db3f920f5fbc092a896e7ff9cb78114857a3"},{"file":"sfx\/gene_vo_01.ogg","sha":"e85dae39f54dc799ddff0f3e0059498f1984d260"},{"file":"sfx\/gene_vo_02.ogg","sha":"a0d399106a918c2a0bbda46b45060f39d077e505"},{"file":"sfx\/gene_vo_03.ogg","sha":"f659626e45910bc359864a46d93e562dd650036d"},{"file":"sfx\/gene_vo_04.ogg","sha":"200a53dd2073019ac7e5538c274c5d4698923e82"},{"file":"sfx\/gene_vo_05.ogg","sha":"2ec8983ca605d96f0333a0edc159d8f91aa710df"},{"file":"sfx\/gene_vo_06.ogg","sha":"2d3854b2e423b765d4d97c5c470d58199fcab3d7"},{"file":"sfx\/gene_vo_07.ogg","sha":"d998fbf1186b76a94416c58c33cf949c45be9980"},{"file":"sfx\/gene_vo_08.ogg","sha":"8e500ede9bcf3e700133cb3e7b532a7451967972"},{"file":"sfx\/gene_vo_09.ogg","sha":"05b75becc513ee2b5172dae6e5a86b04a895a140"},{"file":"sfx\/gene_vo_10.ogg","sha":"afb6b64f02fd034ff592904391074e874c8ecc06"},{"file":"sfx\/gene_vo_11.ogg","sha":"f1f6086ad2ed55b3eac5143974e9ac609f882f99"},{"file":"sfx\/gene_vo_12.ogg","sha":"ab256098e6b96737cb0b4ca07a011efb3e454464"},{"file":"sfx\/gene_vo_13.ogg","sha":"2b90210bf5f8a5aab26b9aa8c023ed4305e47382"},{"file":"sfx\/gene_vo_14.ogg","sha":"e29b25ec31da1c5e885c2b9511d240f0151a8ff7"},{"file":"sfx\/get_coins_01.ogg","sha":"148f04741943c66588ab70af0b8219a4d6d0fb4a"},{"file":"sfx\/get_pickup_02.ogg","sha":"e31b29b5bb025b322fd29f7c5f65d0d66ddcedb2"},{"file":"sfx\/get_pickup_06.ogg","sha":"69e1fafb0cbb227cf6257ab47b5496c66f36edb7"},{"file":"sfx\/get_powerpoints_01v2.ogg","sha":"e4629a5155516755a3b71697a9e274799893973d"},{"file":"sfx\/get_powerpoints_02v2.ogg","sha":"a757fccf7e9fc72dccea730d413b63bdd188a2a1"},{"file":"sfx\/get_powerpoints_03v2.ogg","sha":"e8c74224a55a1c7fb0547563a537c5307e075274"},{"file":"sfx\/get_pp_2_accent_01.ogg","sha":"19e48b89b555d51047588d1f65cacc44982b80e1"},{"file":"sfx\/get_pp_accent_01.ogg","sha":"17589193e55f414d537bfbbadf293cb6a6dbf51c"},{"file":"sfx\/get_star_points_01.ogg","sha":"b3ab4ba958c03a1fa451d480e4fc9de2588d456d"},{"file":"sfx\/get_tickets_01.ogg","sha":"882b0d6628185b7816824fe99e808e7b1c48826c"},{"file":"sfx\/get_trophies_01.ogg","sha":"c43f7a34da78f6b45f5513a12f0bbc793bdfe213"},{"file":"sfx\/get_xp_01.ogg","sha":"2fcee6182bf2056cc1bfb715857fd2bb2fadcd9f"},{"file":"sfx\/gr_launch02.ogg","sha":"f352299626e9aeea3b9dfbc93669a651d8392927"},{"file":"sfx\/guntown_select_char_01.ogg","sha":"d5fd8878e591ad65927a3fd0604d133e867b5eb6"},{"file":"sfx\/heal01.ogg","sha":"08c5deea7be785039afce51790f70add3c75431c"},{"file":"sfx\/heal_loop_01.ogg","sha":"4492ee8efd05418c39ad06fbfc2be8ba0c766509"},{"file":"sfx\/hotshot_die_01.ogg","sha":"a98a093761c7144ae995a14ac7d9f8947369d786"},{"file":"sfx\/hotshot_die_02.ogg","sha":"35e2afdb7fbb1349ab1b135e284333173e689092"},{"file":"sfx\/hotshot_die_03.ogg","sha":"171473df0264151c95bbaf851151808e07a022fb"},{"file":"sfx\/hotshot_die_04.ogg","sha":"b1257bcda54816e967831b3195485fac5c7b2148"},{"file":"sfx\/hotshot_hurt_01.ogg","sha":"2bab9f4e19d9f3d08d9a34f3a507b17fb19dca99"},{"file":"sfx\/hotshot_hurt_02.ogg","sha":"fa1d18704b975aa18318860bd7e833ba9ddc366f"},{"file":"sfx\/hotshot_hurt_03.ogg","sha":"1bdae712078b77033f981403a0b6df862185bba7"},{"file":"sfx\/hotshot_hurt_04.ogg","sha":"092211a4218e055ca2d371def882bf8b9e42e4e0"},{"file":"sfx\/hotshot_hurt_05.ogg","sha":"2b1797a54cc0414383aefc0626efc6ed561e7e22"},{"file":"sfx\/hotshot_hurt_06.ogg","sha":"b152778d574613a86f5afe7ebf905cb94b95265c"},{"file":"sfx\/hotshot_hurt_07.ogg","sha":"6dbd8571a8df16698099520ee534db848c25e4b4"},{"file":"sfx\/hotshot_hurt_08.ogg","sha":"7620d5369cc91ac385e1fa1f40db9c131d695a66"},{"file":"sfx\/hotshot_kill_01.ogg","sha":"80b86b6e0f3a8a0eae378944dfcdd98ff2c7cb6e"},{"file":"sfx\/hotshot_kill_02.ogg","sha":"e8f86fc77b325013988ed7c52b64e3795c946941"},{"file":"sfx\/hotshot_kill_03.ogg","sha":"b7f15507779d1be49f1b3df88b41f2a056a9b108"},{"file":"sfx\/hotshot_kill_04.ogg","sha":"e99af5b4bee225617bc4ed2ab8a900e26eaf5b3b"},{"file":"sfx\/hotshot_kill_05.ogg","sha":"83c0b5bbc6780d856bb64482321125c220e223c2"},{"file":"sfx\/hotshot_kill_06.ogg","sha":"c719aec18f5bd4ccfb69684f0c57391b7ca1b144"},{"file":"sfx\/hotshot_kill_07.ogg","sha":"77d6a5161de040be1f81264a74fe6d92830624ac"},{"file":"sfx\/hotshot_lead_01.ogg","sha":"cc932e98ea8cf66a86a3ed34bfb011cacf975d3a"},{"file":"sfx\/hotshot_lead_02.ogg","sha":"4a4c1b9f0790204423c9b6b4817470fd8ec4bd17"},{"file":"sfx\/hotshot_lead_03.ogg","sha":"a48e2258c30b7d0b146697e49d6d3081564473e5"},{"file":"sfx\/hotshot_lead_04.ogg","sha":"2989e77457504b47ea3f874728ede9b9e4f3304d"},{"file":"sfx\/hotshot_lead_05.ogg","sha":"d3d60a25f30b16997e05bbcbe8af04656bc82f69"},{"file":"sfx\/hotshot_start_01.ogg","sha":"0eba7c66599caedf54fcc834be11c5a3e6c318da"},{"file":"sfx\/hotshot_start_02.ogg","sha":"b967bb16f19581cc1d791dfafba4d16560a8bd9e"},{"file":"sfx\/hotshot_start_03.ogg","sha":"130a1c83af85d67a546bca7707b4b7a8a1c38f5b"},{"file":"sfx\/hotshot_start_04.ogg","sha":"7640749b4e97e5aec89bbd159d1d9f4f39dd553c"},{"file":"sfx\/hotshot_ulti_01.ogg","sha":"bc8c6cab0713407f02be42df0ab6016864bc1ca7"},{"file":"sfx\/hotshot_ulti_02.ogg","sha":"a11a9f95e61f60c3331c6cc23f55d07e0715eb00"},{"file":"sfx\/hotshot_ulti_03.ogg","sha":"b9cb578d6d5f4ee6e66f400d1d3cd835bafcc099"},{"file":"sfx\/hotshot_ulti_04.ogg","sha":"cd06ed91b03d13554bbb21bbae4daee3c99578c2"},{"file":"sfx\/item_swirl_01.ogg","sha":"d6441c32a83b5a821bb40a5178e7af6bafb3499a"},{"file":"sfx\/jackie_atk_01.ogg","sha":"932f48fc6fbc1de4cb5498b88651fc4967628d68"},{"file":"sfx\/jackie_atk_02.ogg","sha":"b93d446e1e3b9c57b57408474f206de787a03295"},{"file":"sfx\/jackie_atk_ulti_01.ogg","sha":"9f1958cf934f5dd651b68046f22f6576d8cc81e4"},{"file":"sfx\/jackie_atk_ulti_02.ogg","sha":"1474f538491406545e23359ebc2a7385d30839ee"},{"file":"sfx\/jackie_atk_ulti_03.ogg","sha":"cb3e486825706e1bc004159245018bafb4cbaf89"},{"file":"sfx\/jackie_die_vo_01.ogg","sha":"ff2535b7571d47caa150bca260f76563cc1655a8"},{"file":"sfx\/jackie_die_vo_02.ogg","sha":"6b9f3f5ef56bc150eec0c5b790bf2969a40b4896"},{"file":"sfx\/jackie_die_vo_03.ogg","sha":"e93c958adae80f3c7062aeb7412851984af927d9"},{"file":"sfx\/jackie_die_vo_04.ogg","sha":"91dd9e303040e78841feeb3f7d2f452a39a50545"},{"file":"sfx\/jackie_dryfire_01.ogg","sha":"2e75de281ae23be4ecdab67b854d5aa4d1a71999"},{"file":"sfx\/jackie_hurt_vo_01.ogg","sha":"392f10e4a62215e250de95da52f1689373e9e64c"},{"file":"sfx\/jackie_hurt_vo_02.ogg","sha":"69cb8257f89731824dfc3529451068becd6fb302"},{"file":"sfx\/jackie_hurt_vo_03.ogg","sha":"82a7d038b0871d53c43ccd2e126fcb07c23527b4"},{"file":"sfx\/jackie_hurt_vo_04.ogg","sha":"8e3d1e9085674fda1a92aed239ea10dbf6023792"},{"file":"sfx\/jackie_hurt_vo_05.ogg","sha":"7902a0cc4d1d80085c9dc402d6cd7f007b8d7e7c"},{"file":"sfx\/jackie_hurt_vo_06.ogg","sha":"abe19becadb221d21746c305d4d4c9fbabe560bb"},{"file":"sfx\/jackie_kill_vo_01.ogg","sha":"bc95ceebfaf0cc6cd213d818a6cef5542b2a18fa"},{"file":"sfx\/jackie_kill_vo_02.ogg","sha":"d021196ba18d6cb21c0e897ad054ca0c1057561d"},{"file":"sfx\/jackie_kill_vo_03.ogg","sha":"b53fcbc880312dd6da5d0f26e56b367403be4838"},{"file":"sfx\/jackie_kill_vo_04.ogg","sha":"627ba75e28f3b4a5c1ad66ad426628dc4274dabb"},{"file":"sfx\/jackie_kill_vo_05.ogg","sha":"ef37b6d61d38f59ae51c66b3f192c5c6f10cb8dc"},{"file":"sfx\/jackie_lead_vo_01.ogg","sha":"1a3cd657396ec02f5598419e13ee3b14dc8e5b1c"},{"file":"sfx\/jackie_lead_vo_02.ogg","sha":"c103a91d77452fead3da6dd22bbd939f278e1582"},{"file":"sfx\/jackie_lead_vo_03.ogg","sha":"02898adec2a2d23d1c74175d4ab9e840c0b7f5a2"},{"file":"sfx\/jackie_lead_vo_04.ogg","sha":"2a8f8bbda19d2a180c5058cee6ae4c9ad22b2f17"},{"file":"sfx\/jackie_reload_01.ogg","sha":"8ccaa58d7e13fde357a2d89bafffbab6a7e50c59"},{"file":"sfx\/jackie_start_vo_01.ogg","sha":"ceac52a57e3dcc46b112672a9ebae8ba452a2009"},{"file":"sfx\/jackie_start_vo_02.ogg","sha":"533e495a2bd18c60167440fa92f3c4fb5b9674fb"},{"file":"sfx\/jackie_start_vo_03.ogg","sha":"5ab586ccb3ffad39707a335608943627d1018592"},{"file":"sfx\/jackie_start_vo_04.ogg","sha":"cbc89a7cf535c688eae3d99999b9c3cf6f450bd6"},{"file":"sfx\/jackie_ulti_vo_01.ogg","sha":"6aa7f4788df7ff8cdab24e8f35be350e4ca8f170"},{"file":"sfx\/jackie_ulti_vo_02.ogg","sha":"7fdcfc023cd3fca8b0beef4fa95df53d66bb7323"},{"file":"sfx\/jackie_ulti_vo_03.ogg","sha":"ca867110a690484bfb1f9643cecdef55a1d38ad3"},{"file":"sfx\/jackie_ulti_vo_04.ogg","sha":"79e6fb26dad58a96dca7e8a7b9ab5aa8537855d5"},{"file":"sfx\/jackie_ulti_vo_05.ogg","sha":"32981a401c298ab4fc1db5b2d8c598fb06fc1ba3"},{"file":"sfx\/jackie_ulti_vo_06.ogg","sha":"071ca3b5d8a2c3f8473c22e25738f435063acdd6"},{"file":"sfx\/jess_die_01.ogg","sha":"83906d5e00324f812d981724d2e61f490509474b"},{"file":"sfx\/jess_die_02.ogg","sha":"13a94fc1d4150b51540b5a5b7635ac89a279d4a2"},{"file":"sfx\/jess_die_03.ogg","sha":"81732733d5dd8cb44ea2a11c153f96f8b3c4eaa6"},{"file":"sfx\/jess_die_04.ogg","sha":"ed9edc4bf470cdccc8ed3af7c7ac87d7ef57bec3"},{"file":"sfx\/jess_dry_fire_01.ogg","sha":"e73ca02985e7c5b13ca3c91a0a2c7122af516bb5"},{"file":"sfx\/jess_gadget_01.ogg","sha":"64bcfdd8babf65e2a68bb0dffbf0aa01031cba44"},{"file":"sfx\/jess_hit_01.ogg","sha":"115f2d176e29b6c75c6771672f0658f9bacc710a"},{"file":"sfx\/jess_hurt_01.ogg","sha":"faee7dcd8895fe2daaff82830e8131658a519986"},{"file":"sfx\/jess_hurt_02.ogg","sha":"b1c5f39be7f4ba1f7c28c14dd51cdc6d19316f4e"},{"file":"sfx\/jess_hurt_03.ogg","sha":"b6df83f22a29741519a8b095e34b32cb88f8c4c4"},{"file":"sfx\/jess_hurt_04.ogg","sha":"ac4179c302b695af043560efb08543f66ea802e3"},{"file":"sfx\/jess_hurt_05.ogg","sha":"35959926d1b0ba99c4e4e98f8440bf3bf4c964a9"},{"file":"sfx\/jess_hurt_06.ogg","sha":"df4a84a5df34d4c0e1ae0c26e433db231c631a19"},{"file":"sfx\/jess_kill_01.ogg","sha":"0a007cc98a0cc1b8b7b932a3cf0bc38de153c192"},{"file":"sfx\/jess_kill_02.ogg","sha":"c0db173978ace1c9f407ec0890e040c022622fd0"},{"file":"sfx\/jess_kill_03.ogg","sha":"b089968b24cd46a2b77b20bf5664c0f4a5087fb0"},{"file":"sfx\/jess_kill_04.ogg","sha":"77be36d1b5486ae46cec9ad0e9a644e7efeade81"},{"file":"sfx\/jess_kill_05.ogg","sha":"aff84c8c54c1855d23c361bfbf4ae5f59006f08f"},{"file":"sfx\/jess_kill_06.ogg","sha":"c5fc55b2729c33d63f55da7598b0c6d39cf26eb1"},{"file":"sfx\/jess_kill_07.ogg","sha":"a7803b9b7dbb54ca9695db568a3d66459236af7b"},{"file":"sfx\/jess_lead_01.ogg","sha":"84df096ea4fce5b156db706a80b68684578bb6d1"},{"file":"sfx\/jess_lead_02.ogg","sha":"8107210b19bee3bf35bfc112a0a5b8e88b2d3408"},{"file":"sfx\/jess_lead_03.ogg","sha":"df8c109ea73b411b05d4020ad065b4d1e126dac0"},{"file":"sfx\/jess_lead_04.ogg","sha":"feb36dd6ab092dcb6dd3e60ea41b5669c48908f7"},{"file":"sfx\/jess_lead_05.ogg","sha":"0b52c963489a435a15e58b829ef4c385fcd808b7"},{"file":"sfx\/jess_reload_02.ogg","sha":"0ba7db2b27098c4145da5381e3939a6905437a60"},{"file":"sfx\/jess_shoot_01.ogg","sha":"378f70b27cf4c10fa8ae8c3a5e02410567c43d85"},{"file":"sfx\/jess_start_vo_01.ogg","sha":"5a0f62a0ee035b3e9a176361eadbee358fe27955"},{"file":"sfx\/jess_start_vo_02.ogg","sha":"5ff7a79b021ea8ef2c0c351dc2ddfd1ecbe5fa89"},{"file":"sfx\/jess_start_vo_03.ogg","sha":"2b89fdd3b906706cbc17b5880f3b849fcca3d830"},{"file":"sfx\/jess_start_vo_04.ogg","sha":"4ae84a576426aafd6b56e8fbc6f9590f417a99a5"},{"file":"sfx\/jess_start_vo_05.ogg","sha":"dcfa91c1fef5a9e61cdd6c433ae1ab7a19ab8c45"},{"file":"sfx\/jess_throw_01.ogg","sha":"56eea49674a87aac9fa2aca7ebc089fe314db027"},{"file":"sfx\/jess_ulti_01.ogg","sha":"27d95e671efc052e03c352d5f7473f3545ce5604"},{"file":"sfx\/jess_ulti_02.ogg","sha":"096e4e4dbd0255dc685ec4dcdf2119b511a50fba"},{"file":"sfx\/jess_ulti_03.ogg","sha":"e85a4ca240bc093a93c799c78ac3cae667de8fb1"},{"file":"sfx\/jess_ulti_04.ogg","sha":"6c38616f07fdc7f4040c0ca1b08dc08ae00c93ff"},{"file":"sfx\/jess_ulti_05.ogg","sha":"634d8c1d3a1feeac7513c727b7b5438f57ee2385"},{"file":"sfx\/jess_ulti_06.ogg","sha":"5ded241e5de5a84c56f6766f90ffb4b3d881af49"},{"file":"sfx\/join_game_room_01.ogg","sha":"9fd0d21cc8a2c2a17ea6daf36f3501a120c82dd4"},{"file":"sfx\/laser_04.ogg","sha":"4189978114aacb5558feb8291962b2c7e374ea9a"},{"file":"sfx\/laser_explo_01.ogg","sha":"8586a32ac2b947c0cc98471bf37c2c0ac7f96d18"},{"file":"sfx\/laser_load_01.ogg","sha":"c36246a78ea7fd6dd2788a197483da18db7b1636"},{"file":"sfx\/laser_panic_01.ogg","sha":"5d034774472831ed7e5e435bedf27bf62ae1a856"},{"file":"sfx\/laser_panic_bad_01.ogg","sha":"443934e3932d4539742a77aab39a0cbccca7731e"},{"file":"sfx\/laser_upgrade_char_01.ogg","sha":"da4dfaff25956e1e4cd976b94e124b136a8e1c05"},{"file":"sfx\/leave_game_room_01.ogg","sha":"6b65cd1ab7204b5d6363d5b64963d08bfe366d69"},{"file":"sfx\/leon_die_vo_01.ogg","sha":"fb636919138486ebfe102951d7436c9b68735603"},{"file":"sfx\/leon_die_vo_02.ogg","sha":"a5d23f6c406666ee965d12ee7e4980cf9a76d613"},{"file":"sfx\/leon_die_vo_03.ogg","sha":"4c4f15d4720bd84128027b2bfecf06bb35dc3e0d"},{"file":"sfx\/leon_die_vo_04.ogg","sha":"b4fdc42148da140b347b8419cbc0da81ffd0f07b"},{"file":"sfx\/leon_hurt_vo_01.ogg","sha":"0c3eb0e7251c6e5d8f09bf5b7915e5b6ec7dc68b"},{"file":"sfx\/leon_hurt_vo_02.ogg","sha":"3410d3502000d0ea17bc701cb6b733b25babab71"},{"file":"sfx\/leon_hurt_vo_03.ogg","sha":"87c6ff3d79b59ba60a2b9eec81a7db8c61ffb190"},{"file":"sfx\/leon_hurt_vo_04.ogg","sha":"4ae6b367e8cdb9a63eb25ae158a5a5dd73a05404"},{"file":"sfx\/leon_hurt_vo_05.ogg","sha":"f119d3b779e7449a314aed9b7b7e8bc213593eec"},{"file":"sfx\/leon_kill_vo_01.ogg","sha":"d2720e0eff1a89c87c967a1c804bea2c1b7166f6"},{"file":"sfx\/leon_kill_vo_02.ogg","sha":"02d503a5ed69945d2285c5659e09eef97a09ca59"},{"file":"sfx\/leon_kill_vo_03.ogg","sha":"6b326531b94386a96562d4bf0c1f7d7118236df3"},{"file":"sfx\/leon_kill_vo_04.ogg","sha":"a256b97cf23600b9387fa344045ca7d35a4bd812"},{"file":"sfx\/leon_kill_vo_05.ogg","sha":"ac4d7b426d10d953d783649a08fec7c1b9decb62"},{"file":"sfx\/leon_kill_vo_06.ogg","sha":"4cad6787a4494127ee4d07972930a1886c5776a7"},{"file":"sfx\/leon_lead_vo_01.ogg","sha":"33d7350b2de78704121157c0803b03cdceb0e353"},{"file":"sfx\/leon_lead_vo_02.ogg","sha":"db121fcead6fb3e4d150e222f91ef00aea6b3ae3"},{"file":"sfx\/leon_lead_vo_03.ogg","sha":"bf1fd31a94023de76d0b9dc525b7e5028567e03b"},{"file":"sfx\/leon_lead_vo_04.ogg","sha":"b55be2fc5eee7aa29fbdb1b6c4c3ec12de5c3417"},{"file":"sfx\/leon_lead_vo_05.ogg","sha":"def49df85888741d17f92736d47dbf4e7a5bf81f"},{"file":"sfx\/leon_reload_01.ogg","sha":"bb02ea6c4ac87120f4b0e95bae997e84fb050da0"},{"file":"sfx\/leon_start_vo_01.ogg","sha":"454a18ec953aa7109b2e941a1ab24a17a3fe8f21"},{"file":"sfx\/leon_start_vo_02.ogg","sha":"0f55109f9534aa969a74556e1abd657b37bdd6ec"},{"file":"sfx\/leon_start_vo_03.ogg","sha":"15dc0eb1713ca880484cedb3fddbe6a9d51d70b9"},{"file":"sfx\/leon_start_vo_04.ogg","sha":"19bfb39e8db894ccd6e60fb1fd856db607224055"},{"file":"sfx\/leon_start_vo_05.ogg","sha":"7d7b1434b2f4fab3ce78b8394ce5f596efb7472d"},{"file":"sfx\/leon_ulti_vo_01.ogg","sha":"285a83133868f2308589f102029a8ab75e42edf7"},{"file":"sfx\/leon_ulti_vo_02.ogg","sha":"12b1afa89dd2601f0b7d8ff8b1aa6759b1152697"},{"file":"sfx\/leon_ulti_vo_04.ogg","sha":"ab06faa82a270ca020c2bb3b3beef061bd9a7c04"},{"file":"sfx\/leon_ulti_vo_05.ogg","sha":"02b0097fecdcb4891c0801c66f08b3314e21f626"},{"file":"sfx\/leon_wolf_ulti_vo_01.ogg","sha":"1076399d1db3e1b9d78909b2ae6aaaf0d8948e78"},{"file":"sfx\/leon_wolf_ulti_vo_02.ogg","sha":"d3bc379acf8e446c78a0dc1b043b8899a0a23c09"},{"file":"sfx\/level_up_01.ogg","sha":"5e1108d3f86d818310311c42681542e3c8c6745d"},{"file":"sfx\/ll_atk_01.ogg","sha":"55c765070b5f7b73e730132b484be23cd9e4981c"},{"file":"sfx\/ll_die_01.ogg","sha":"980406c4ed078c90bef86401673ed5ea9d218e59"},{"file":"sfx\/ll_hurt_01.ogg","sha":"53d9a545655d85ffa03eabb880c8b30da3cae165"},{"file":"sfx\/ll_kill_01.ogg","sha":"9d37b34a1021ab716ae8a0e4c4c93c9bb8dd4b2b"},{"file":"sfx\/ll_start_01.ogg","sha":"f0b0af0c5ee50ad8662c96fb93a4d144be57681d"},{"file":"sfx\/ll_ulti_01.ogg","sha":"85cfa7d10a0f8f894f835ab24339885e8eea4346"},{"file":"sfx\/ll_ulti_hit_01.ogg","sha":"f84603e21c6f1fcf3ca312e433dce72c41f37c20"},{"file":"sfx\/lose_trophies_01.ogg","sha":"4acb1ca6c8fa868485d5abd926d0ab23549094ad"},{"file":"sfx\/low_health_beep_03.ogg","sha":"a1f8d9c41778f119ec70fe8d620d74fb1cdce730"},{"file":"sfx\/lucha_punch_01.ogg","sha":"7226941572dd8cf12fd18b960eeedd8a2bb1994f"},{"file":"sfx\/lucha_ulti_01.ogg","sha":"d6a275d4eb9501bc4dcf56624d5347a46a956b7d"},{"file":"sfx\/marig_fire_01.ogg","sha":"d5c41c1bbd114cdd5f76f6cde82dca0f18cb707f"},{"file":"sfx\/marig_hit_01.ogg","sha":"0098b0f6b079ce5866d657c811c983e7f2370013"},{"file":"sfx\/marig_miss_01.ogg","sha":"c73b8ec6772bb6e9c4722be0c433a51bf46bee92"},{"file":"sfx\/marig_turret_02.ogg","sha":"4fbbb4ffe5a2009fb8935153713e9025d4770af8"},{"file":"sfx\/marig_turret_spawn_01.ogg","sha":"8f0e4df94c4aeaa700e6893dae4314572e018098"},{"file":"sfx\/max_atk_01.ogg","sha":"51f92b576de80e39e098b257e5a1b58d59f767de"},{"file":"sfx\/max_atk_impact_01.ogg","sha":"610fa3fba656b18b317ca80cb686ecda5fa15203"},{"file":"sfx\/max_die_vo_01.ogg","sha":"b91949a273a2c9d7967385d15b788a175dbfaab9"},{"file":"sfx\/max_die_vo_02.ogg","sha":"ade356be7935c45f3d514c6981c3a3103385c7cb"},{"file":"sfx\/max_die_vo_03.ogg","sha":"30669f92313d5cc28267d5930e134998bbbc68cd"},{"file":"sfx\/max_die_vo_04.ogg","sha":"16c28fd72322bbaea7d11e520f3899d752f38fb8"},{"file":"sfx\/max_die_vo_05.ogg","sha":"b1de6243e346540548464f81f9c8eba5f94e0664"},{"file":"sfx\/max_dryfire_01.ogg","sha":"a2422a140de7178d16757a2512fffda2abe47b10"},{"file":"sfx\/max_hurt_vo_01.ogg","sha":"924e0a98b081b9b21f84af79b3a2511e113925b8"},{"file":"sfx\/max_hurt_vo_02.ogg","sha":"b6b223b9d7ff8bda4a25b77e6268ca557c9fc35b"},{"file":"sfx\/max_hurt_vo_03.ogg","sha":"da2226068151b22f1a6082d273161c006ea9bc41"},{"file":"sfx\/max_hurt_vo_04.ogg","sha":"e5e06cc22f361e0f2e72eab589fd217ae5f5b967"},{"file":"sfx\/max_kill_vo_01.ogg","sha":"8638a145177746c5e3ff5664fb6ef8fb8171ffcb"},{"file":"sfx\/max_kill_vo_02.ogg","sha":"4ab170da533c7e41da923b7f42635f2ff7ef3524"},{"file":"sfx\/max_kill_vo_03.ogg","sha":"d9a29fa673ee50286cb3b1d6235b316752ffe3a1"},{"file":"sfx\/max_kill_vo_04.ogg","sha":"ff8ca4503e1365f1545f941f070ac7eff731dcee"},{"file":"sfx\/max_kill_vo_05.ogg","sha":"f9014fe3997edc550044a56080fd6d32c47b22c5"},{"file":"sfx\/max_lead_vo_01.ogg","sha":"9613b3361fdd3fabee8616e9fbe47e438a2860fc"},{"file":"sfx\/max_lead_vo_02.ogg","sha":"3e419149928921c4d2ac632fcf7af54eaa17a0d0"},{"file":"sfx\/max_lead_vo_03.ogg","sha":"a1faee5a7b043a27ee9a66066c1c9e9ab6eec4cd"},{"file":"sfx\/max_lead_vo_04.ogg","sha":"3013e66317b88e47cd270ab78686798f0120e33d"},{"file":"sfx\/max_lead_vo_05.ogg","sha":"d668ad0f704baa425dda0d631845dc17dc4ca895"},{"file":"sfx\/max_reload_01.ogg","sha":"26613a2683027cb704b432c55fb52a5dea4ff639"},{"file":"sfx\/max_start_vo_01.ogg","sha":"478e39a6aec7948b759cdf86cce60bbd0a40cd4c"},{"file":"sfx\/max_start_vo_02.ogg","sha":"ca2715ad2a72d336fe28c7b7503a6a71cf6337c5"},{"file":"sfx\/max_start_vo_03.ogg","sha":"412ec330ad799e27f47b22c9ead4b32eb46bf73c"},{"file":"sfx\/max_start_vo_04.ogg","sha":"eed1f361cf503ad6d2f2832c2d1e0b11cef867f8"},{"file":"sfx\/max_start_vo_05.ogg","sha":"cc0218849b97f0d7a2c35ffc94135e7b6cdff796"},{"file":"sfx\/max_ulti_01.ogg","sha":"45132115be234b8dcf3c349dc0ceb8f249f1f572"},{"file":"sfx\/max_ulti_vo_01.ogg","sha":"e20dc069275c6cdf05d8f32627a346e809a5ecfd"},{"file":"sfx\/max_ulti_vo_02.ogg","sha":"627886f70121c8d8ffd52b3fcffcd3f62c060a5e"},{"file":"sfx\/max_ulti_vo_03.ogg","sha":"7f2edc5f09aefe16444dae6bacb9167600fc5b9f"},{"file":"sfx\/max_ulti_vo_04.ogg","sha":"dbdc1b156cc3877f3a515bd877a96eff8885ba67"},{"file":"sfx\/mech_bo_fire_01.ogg","sha":"50259bc0a22a6b9402f1f94e58ea154934e9a0f7"},{"file":"sfx\/mech_bo_reload_01.ogg","sha":"22ef4034cde7d649598e1906b0a5f7fa54f318df"},{"file":"sfx\/mech_bo_ulti_01.ogg","sha":"9b63ce8d4ded44eee156767d43eae5a997e12cf2"},{"file":"sfx\/mech_crow_atk_01.ogg","sha":"889777639cda90d9dce18e647a865e319463fee4"},{"file":"sfx\/mech_crow_dies_01.ogg","sha":"8debbe5903b3fe5dcb917bf01d9abcfd2e48f51a"},{"file":"sfx\/mech_crow_get_hit_01.ogg","sha":"8af6222bad99d6f30da689bd5c261036bab9b6c1"},{"file":"sfx\/mech_crow_get_hit_02.ogg","sha":"925f094b85144d1303643cadc6677637971f1976"},{"file":"sfx\/mech_crow_get_hit_03.ogg","sha":"f0e8249c8c184fa30c16dca3bac1a04856f0bdf9"},{"file":"sfx\/mech_crow_get_hit_04.ogg","sha":"b9b5873a2660bc1e8c615a26259e67dd3035322a"},{"file":"sfx\/mech_crow_get_hit_05.ogg","sha":"afbbde3178d95703b950fc143f3e3e2c3e4aaef4"},{"file":"sfx\/mech_crow_get_hit_06.ogg","sha":"aa34899a602efea86b3b96c06bdc8e1ad2619fbe"},{"file":"sfx\/mech_crow_kills_01.ogg","sha":"c208ba8d7365db58f09dfd72c5b62fffaa814b6e"},{"file":"sfx\/mech_crow_kills_02.ogg","sha":"8f0b24e8b30f9c89957ee645ebaaae0477346039"},{"file":"sfx\/mech_crow_kills_03.ogg","sha":"ce5ca4e04bf2a32052e16360cdb4384a86e8dd84"},{"file":"sfx\/mech_crow_lead_01.ogg","sha":"e27514b30c160203b7b984e43f781b0f92a67546"},{"file":"sfx\/mech_crow_lead_02.ogg","sha":"107116631c677bdc90b0d912a49ebcc646ab63c0"},{"file":"sfx\/mech_crow_start_01.ogg","sha":"d9eb5f155cd2b486ab7e65908d79fbe356c77370"},{"file":"sfx\/mech_crow_start_02.ogg","sha":"d00d2518fd4ca516b8105286a110066042868f7e"},{"file":"sfx\/mech_crow_start_03.ogg","sha":"3082ae1c9f09d4c5431bcf390743a3fa08e72f4c"},{"file":"sfx\/mech_crow_ulti_01.ogg","sha":"3c3281eb5362ed85b73931bf73be342497188d9a"},{"file":"sfx\/mech_crow_ulti_vo_01.ogg","sha":"9a1809b59cf8896f9d1047bd285d1ea86647bc44"},{"file":"sfx\/mech_mike_atk_01.ogg","sha":"b888090c804d1f973df067b22e23a8062fea3f82"},{"file":"sfx\/mech_mike_die_vo_01.ogg","sha":"c166a0bb4f947456a0c77d6307301b17fde9fc2b"},{"file":"sfx\/mech_mike_die_vo_02.ogg","sha":"9e77b257bf7e5c648fa66d16d0780eacb63e5d09"},{"file":"sfx\/mech_mike_die_vo_03.ogg","sha":"6c415d6793e551b33132763d1d4f9bd1875c6c90"},{"file":"sfx\/mech_mike_die_vo_04.ogg","sha":"f8bbd5ccb57ca078f4f26aaf7a1b608286aa16f1"},{"file":"sfx\/mech_mike_die_vo_05.ogg","sha":"5e32bd3992820ea62f6f1cc1dc01432ab28f7b1d"},{"file":"sfx\/mech_mike_hurt_vo_01.ogg","sha":"9573b5cd62f523c1861308c69fbf80eb2978f5bf"},{"file":"sfx\/mech_mike_hurt_vo_02.ogg","sha":"7b1607090385d67c41d1eb03225357f616df92cf"},{"file":"sfx\/mech_mike_hurt_vo_03.ogg","sha":"ed9c643876705ec47edf4ee4af108ec4ef46f2f2"},{"file":"sfx\/mech_mike_hurt_vo_04.ogg","sha":"6485e15de085f0d62f9b59386bac07f224225859"},{"file":"sfx\/mech_mike_hurt_vo_05.ogg","sha":"47e07ac1265ec5e4ca0acd358f9662bd6eff192b"},{"file":"sfx\/mech_mike_kill_vo_01.ogg","sha":"4efed04783d09a8aed49621765e9b8781046f329"},{"file":"sfx\/mech_mike_kill_vo_02.ogg","sha":"894c247bbe6b3b49e9b06f5c5c398cdf2402ce05"},{"file":"sfx\/mech_mike_kill_vo_03.ogg","sha":"090b054272150424735b98f0322b1a96873db45d"},{"file":"sfx\/mech_mike_kill_vo_04.ogg","sha":"fe3b8c7046c16488784e4aa1abcb5277137a5335"},{"file":"sfx\/mech_mike_lead_vo_01.ogg","sha":"230a1a8a372179160e754c17d92125bb8894f8ae"},{"file":"sfx\/mech_mike_lead_vo_02.ogg","sha":"d77978f05e85c31d0787029568a82899fdb39dad"},{"file":"sfx\/mech_mike_start_vo_01.ogg","sha":"ad06a0f0d797dcd1eca10c273b2fdd369cdac2a6"},{"file":"sfx\/mech_mike_start_vo_02.ogg","sha":"78b7b73f6c36a84bca0d04d729337a32607ac886"},{"file":"sfx\/mech_mike_start_vo_03.ogg","sha":"b1540a71feb5a9ab06bc35e95ff67ea1b8f24ef6"},{"file":"sfx\/mech_mike_start_vo_04.ogg","sha":"3da0a625b594b53dad1db56752141971d76ed020"},{"file":"sfx\/mech_mike_ulti_01.ogg","sha":"7c6fb1ba7e342ae79577ad9483f3b00b3bb3a1db"},{"file":"sfx\/mech_mike_ulti_vo_01.ogg","sha":"34d06780fa3d8551bee9d439a964b2f5577d43e3"},{"file":"sfx\/mech_mike_ulti_vo_02.ogg","sha":"02ea1c1ae23305840568aa52dc31d51841e63c59"},{"file":"sfx\/mech_spike_atk_01.ogg","sha":"70b14e32d0ca32f6785d6c79206decbb3d31c129"},{"file":"sfx\/mech_spike_ulti_01.ogg","sha":"369d6dd90b963ea2e4030b10037a29618dbe1b47"},{"file":"sfx\/menu_click_08.ogg","sha":"ac9d8a6108f95aabad7c0c7e924aaea4022caba1"},{"file":"sfx\/menu_dismiss_01.ogg","sha":"536414a202f14099a3c19770c8ff0e31d71250a9"},{"file":"sfx\/menu_go_back_01.ogg","sha":"996dc6037f4d2b1251fc585170de80f6f478d00f"},{"file":"sfx\/meteor_01.ogg","sha":"de0a00312aa03f726ebe63941f330ca7d33a7381"},{"file":"sfx\/meteor_02.ogg","sha":"213cfe7be91b9f095940e9a60ade32dacc399de0"},{"file":"sfx\/meteor_03.ogg","sha":"7ee53c85348fadbbd11e7da184db6d2d041d6795"},{"file":"sfx\/minig_dryfire_01.ogg","sha":"6d6d56d7df50a599e331275357ba6160417e1cc2"},{"file":"sfx\/minig_fire_01.ogg","sha":"94ddfaa44eb2cdbb8f94b2440786eeb4b542b0c6"},{"file":"sfx\/minig_reload_01.ogg","sha":"5ce09a6c71f113423b33345ef13fdddb1cbaab2c"},{"file":"sfx\/minig_ulti_01.ogg","sha":"ec856f063d86fc5935e7588dca329a9ac5ff603e"},{"file":"sfx\/mortis_atk_01.ogg","sha":"aef5480536f04b1e9544a6f3a304d4e579f64597"},{"file":"sfx\/mortis_atk_vo_01.ogg","sha":"8ed71415ea3cd9d2f986e5bea5d3df1b53de660a"},{"file":"sfx\/mortis_atk_vo_02.ogg","sha":"749fab07c2f5be73f8958e4abed909a773f6cb42"},{"file":"sfx\/mortis_atk_vo_03.ogg","sha":"76f41aeb4a87878271b7f7f7316586162760f833"},{"file":"sfx\/mortis_atk_vo_04.ogg","sha":"4a69bd1440f14bbc3ba2f30c05dcbb514067a1a6"},{"file":"sfx\/mortis_die_01.ogg","sha":"6fea2c82c13c5d06cb89dd539b37ffc6d766ab71"},{"file":"sfx\/mortis_die_02.ogg","sha":"a6613477820be8dd367f8007b399b927499bddf4"},{"file":"sfx\/mortis_die_03.ogg","sha":"e1f63a1ce7b07a7afcbe1a98cf6cc10a2b75e023"},{"file":"sfx\/mortis_die_04.ogg","sha":"62beb7ebe71a9009522b53025d2560789d593f4b"},{"file":"sfx\/mortis_die_05.ogg","sha":"9307971a00c795440647cd786ef658237bbec76e"},{"file":"sfx\/mortis_gadget_01.ogg","sha":"6942dd6796293d248852c0876705cd2f39ec25f7"},{"file":"sfx\/mortis_hurt_01.ogg","sha":"73a9cb0cac94144e462236d8a03520d408e0431e"},{"file":"sfx\/mortis_hurt_02.ogg","sha":"b0d1941afcec4979a40062310a9a358a6df51738"},{"file":"sfx\/mortis_hurt_03.ogg","sha":"3ecc7729b55fffcfb1d3578d8a7b40ebbd2e20ba"},{"file":"sfx\/mortis_hurt_04.ogg","sha":"6a869373fc11fdc066c3cfd6ad4f3ff81de52407"},{"file":"sfx\/mortis_kill_01.ogg","sha":"c177436e5027e35e2be9daf252bf93f438ee99f8"},{"file":"sfx\/mortis_kill_02.ogg","sha":"7537751efa97132bec29f05bac61126952e94e8a"},{"file":"sfx\/mortis_kill_03.ogg","sha":"039e2a9d402265e110bc084b979e7a8fa64ea1c7"},{"file":"sfx\/mortis_kill_04.ogg","sha":"163e98b1412cb8cf81ff49a1614dee353b45ab4d"},{"file":"sfx\/mortis_lead_01.ogg","sha":"3ff7759aae9b62cf07f1457f429f7a9f19a26130"},{"file":"sfx\/mortis_lead_02.ogg","sha":"0969c9477f685210b3e1799df5533e6a1fa1c771"},{"file":"sfx\/mortis_lead_03.ogg","sha":"3a057d1822a3cc1a466cff13e009086f37246d39"},{"file":"sfx\/mortis_lead_04.ogg","sha":"ea564002cabf115f176e685cbd969aee2291cef1"},{"file":"sfx\/mortis_lead_05.ogg","sha":"b4970b47e2047c587a2463b41f1fa00740a833f9"},{"file":"sfx\/mortis_reload_02.ogg","sha":"825a64b80e3c74c6db6a430aacf9bc818786df77"},{"file":"sfx\/mortis_start_01.ogg","sha":"16c5438b309794ee9a48b0a0653cdab7703f6dc6"},{"file":"sfx\/mortis_start_02.ogg","sha":"218abc046b7a4de49b4b921055bfc32c70a5b792"},{"file":"sfx\/mortis_start_03.ogg","sha":"d75ee3b03086d4eeb0e9454ff00852a76fe051d0"},{"file":"sfx\/mortis_start_04.ogg","sha":"3c5a51510049cb5fe0993ff39f81ac1679cea620"},{"file":"sfx\/mortis_ulti_01.ogg","sha":"56183cc745b211152939f0ddedd8d4d588a03866"},{"file":"sfx\/mortis_ulti_vo_01.ogg","sha":"bdda18e925b542978ce057c76500adfdf485c02d"},{"file":"sfx\/mortis_ulti_vo_02.ogg","sha":"9938494fc376beb9df850b8170f649d12016b612"},{"file":"sfx\/mortis_ulti_vo_03.ogg","sha":"4a01dd34ca92367ae0872b599aab4052466330fb"},{"file":"sfx\/mortis_ulti_vo_04.ogg","sha":"b4484137b0d9c46cb18847ca21f8885c41b4fe09"},{"file":"sfx\/mortis_ulti_vo_05.ogg","sha":"520f48597136994197304d35300a1a258965db5c"},{"file":"sfx\/mrp_atk_01.ogg","sha":"5a49e8948fc46528b32c5b0eb1aef0fc278b7602"},{"file":"sfx\/mrp_atk_vo_01.ogg","sha":"753370fc8043abe9989cc27d2804d13a21c054e2"},{"file":"sfx\/mrp_atk_vo_02.ogg","sha":"a9eb8258ba4809cd783921d3e8d85c21777b7f52"},{"file":"sfx\/mrp_atk_vo_03.ogg","sha":"280fc0820936458734df68561b0bfa53eef1d65e"},{"file":"sfx\/mrp_atk_vo_04.ogg","sha":"2ea8b75fc785492e8c7c427cf02938fc582730ae"},{"file":"sfx\/mrp_die_vo_01.ogg","sha":"1ea4341a974c7b7725487779ce6a1227670bd311"},{"file":"sfx\/mrp_die_vo_02.ogg","sha":"87cc94000380ae1c8da82d171db81f174c34ced7"},{"file":"sfx\/mrp_die_vo_03.ogg","sha":"21cca72a0a277f4894a55b55cfd12d740c4b4e33"},{"file":"sfx\/mrp_dryfire_01.ogg","sha":"b728ecd22b805e17cbb6348430c9a4374f4c70f9"},{"file":"sfx\/mrp_get_hurt_vo_01.ogg","sha":"99d55db31f320b7e2bf290f20d83f4e4ee0f5da4"},{"file":"sfx\/mrp_get_hurt_vo_02.ogg","sha":"c2d5674dee18f17c0c946ef52db02a34f3c09ff6"},{"file":"sfx\/mrp_get_hurt_vo_03.ogg","sha":"2272d408828ce67e139efeed8d310726e810f8e8"},{"file":"sfx\/mrp_get_hurt_vo_04.ogg","sha":"8ed301c062cc748c07a53b1f0cea8e2dbb6812dd"},{"file":"sfx\/mrp_kill_vo_01.ogg","sha":"4b120a4719827b5450feca089d3efcf06345a2c5"},{"file":"sfx\/mrp_kill_vo_02.ogg","sha":"c297ebd1f0e137bc62cbb8d561720bbd0d9e0665"},{"file":"sfx\/mrp_kill_vo_03.ogg","sha":"386fedd90de1a743b4c94e3a92897b91bcb1b7cb"},{"file":"sfx\/mrp_kill_vo_04.ogg","sha":"558637c320f73c4f56407341ec7f68f6f623ac5a"},{"file":"sfx\/mrp_kill_vo_05.ogg","sha":"0e01466d6fc18c6a05e714192eaa8a62abcafc66"},{"file":"sfx\/mrp_lead_vo_01.ogg","sha":"02fad02c934629329af63812a0484837a2d24f9b"},{"file":"sfx\/mrp_lead_vo_02.ogg","sha":"a596336f13486c13ad908f9af586b3a3d3bf5afa"},{"file":"sfx\/mrp_lead_vo_03.ogg","sha":"7dee5b5cee19452054635f344095b77cd9db80c8"},{"file":"sfx\/mrp_minip_atk_01.ogg","sha":"cf193112955d719c23c431f0b56fab30c4f9745e"},{"file":"sfx\/mrp_minip_atk_02.ogg","sha":"ca295a059713969851c7c191879d3a8279341b90"},{"file":"sfx\/mrp_minip_bell_01.ogg","sha":"5f4681481ea234db6d7a99a39958a141be6bb9a0"},{"file":"sfx\/mrp_minip_die_01.ogg","sha":"6904d6e0836231e8f0d8f79bc36c598fd84d0177"},{"file":"sfx\/mrp_minip_die_02.ogg","sha":"bb851a2b187f4c323c35f37a489773e3808bd3a8"},{"file":"sfx\/mrp_minip_die_03.ogg","sha":"f814619d519b443134e9df52f5ee3816a262f01d"},{"file":"sfx\/mrp_minip_spawn_01.ogg","sha":"5753907c73f7b49dce3e914e0e0315400ca7509d"},{"file":"sfx\/mrp_minip_spawn_02.ogg","sha":"d29be0fe7d017f051b42804698819483d62350eb"},{"file":"sfx\/mrp_minip_spawn_03.ogg","sha":"a2e62d0349cef0b2efb3c35d9ec11965ab9c9ed7"},{"file":"sfx\/mrp_reload_01.ogg","sha":"19dab272723784de360536f262154a14304dfed4"},{"file":"sfx\/mrp_start_vo_01.ogg","sha":"5ec0a87114507cbde231920004c59f4bbcd04b33"},{"file":"sfx\/mrp_start_vo_02.ogg","sha":"9b635737ee7ebc9c5f1b9d19ae1880eda742d312"},{"file":"sfx\/mrp_start_vo_03.ogg","sha":"8b344dea057bfdf7d77a6f528b06b37842fcd980"},{"file":"sfx\/mrp_start_vo_04.ogg","sha":"bbcfce67d0610c193413c17584a9cfbbb7f9bea6"},{"file":"sfx\/mrp_start_vo_05.ogg","sha":"bbc6722d622dd73ee5789b3874a8e7dd53fbb021"},{"file":"sfx\/mrp_ulti_vo_01.ogg","sha":"14eb5786a2e45a0dd44c51b55f50e125e2ac09cd"},{"file":"sfx\/mrp_ulti_vo_02.ogg","sha":"2b85acfd14a9aee3655d8590729c4a09f57132e8"},{"file":"sfx\/mrp_ulti_vo_03.ogg","sha":"9e5f591d94234c73a2996eeea53a73d038710157"},{"file":"sfx\/mrp_ulti_vo_04.ogg","sha":"3d21fba62b333fa27704fe6eb95923a440d9b4c3"},{"file":"sfx\/mvp_jingle_01.ogg","sha":"c1983e5042cce7ea7650b4c1f539405bc223d850"},{"file":"sfx\/mystic_atk_01.ogg","sha":"c91d06312e5439587337057ef31f2b1860653725"},{"file":"sfx\/mystic_dryfire_01.ogg","sha":"d010300e4db99acd4ced218fea63988a66eee5da"},{"file":"sfx\/mystic_hole_01.ogg","sha":"a12d5c634d50ef6e8e7eabf98b9448e9041f4fd7"},{"file":"sfx\/mystic_reload_01.ogg","sha":"467f2379667501963fdb36b4a94c9a27cfa3e115"},{"file":"sfx\/mystic_ulti_deploy_01.ogg","sha":"138dad1aebe3955deaa73ee0e1a0ed1d59e4e7b3"},{"file":"sfx\/ninja_invis_01.ogg","sha":"b7576c11af9ef4ac34e2872ad5df00d299b8b84e"},{"file":"sfx\/ninja_invis_end_01.ogg","sha":"7ca535baafb7b9edcb806fba37f7b15556c021ce"},{"file":"sfx\/ninja_star_01.ogg","sha":"9774a4421766b2fd2e8a148a1481c836e1ec6cbb"},{"file":"sfx\/ninja_star_dry_01.ogg","sha":"c24ed981f2162058cb7dfb6cd9e20d884930abe1"},{"file":"sfx\/nita_atk_01.ogg","sha":"d4fde066779177e22b67accc86c5453636b1b8f9"},{"file":"sfx\/nita_atk_02.ogg","sha":"436ff334189499f71ad98ef4cb7339ec5c790e7f"},{"file":"sfx\/nita_atk_03.ogg","sha":"9bbbbea41f6fb02d577d571edfe3698a0c42d299"},{"file":"sfx\/nita_atk_04.ogg","sha":"0d576fb97f1af31cb63eb2d8cb5aea8390963a2e"},{"file":"sfx\/nita_atk_05.ogg","sha":"8b3c3c15054573d864632e79707368cf28ee1103"},{"file":"sfx\/nita_die_01.ogg","sha":"57b5d1b5d60183c84938d29c39545783537472ea"},{"file":"sfx\/nita_die_02.ogg","sha":"149ca06123db642b1862b380732cd5111846a031"},{"file":"sfx\/nita_gadget_01.ogg","sha":"71a344e16fe4c7d35b9e4930b82c16f9e350af6a"},{"file":"sfx\/nita_hurt_01.ogg","sha":"af884b1ca64b386d79ceec1ef24c901d426d2e28"},{"file":"sfx\/nita_hurt_02.ogg","sha":"1d922a529a8118ecb9af0763159209332098bfbe"},{"file":"sfx\/nita_hurt_03.ogg","sha":"f9962e1949ec8e1f1c1e627f31328f9e695a33a2"},{"file":"sfx\/nita_hurt_04.ogg","sha":"6d415b8dc727b8ed49515fa47ea6b71b16dcd39d"},{"file":"sfx\/nita_hurt_05.ogg","sha":"908972b93021986c4ef3d5a8771cb75b7d74b190"},{"file":"sfx\/nita_kill_vo_01.ogg","sha":"2dbc38b1a52d96425847853ce4491f8c5a38b9f2"},{"file":"sfx\/nita_kill_vo_02.ogg","sha":"9fdebd6a760c78dd9e813f411c28fc1f3ad99f7e"},{"file":"sfx\/nita_kill_vo_03.ogg","sha":"e41085bc11fe91458fb72bf0b29d08ed44bca524"},{"file":"sfx\/nita_lead_01.ogg","sha":"e94d5e7ed54bf9833dde6d402bf4725a0f7286e9"},{"file":"sfx\/nita_lead_02.ogg","sha":"f4a7a880ad238ab6af5428c008c330f45a48af1b"},{"file":"sfx\/nita_lead_03.ogg","sha":"689a92cb784579c5f8f5176a11b1ba9a2bafd2cd"},{"file":"sfx\/nita_start_vo_01.ogg","sha":"3d6bfc6058edbbf20db3a7043bc470e33fe78de0"},{"file":"sfx\/nita_start_vo_02.ogg","sha":"064ac733376b57dcbf42cbca3501592138c32594"},{"file":"sfx\/nita_start_vo_03.ogg","sha":"1b33d6e53734921a7aeb0cfec5701ed15c3be918"},{"file":"sfx\/nita_ulti_01.ogg","sha":"45c308387d0bd245520b13a2f17de18ad475bc93"},{"file":"sfx\/nita_ulti_vo_01.ogg","sha":"078857280aa02bc974fdadde0d4d0cfe600ec156"},{"file":"sfx\/nita_ulti_vo_02.ogg","sha":"ca2f00f7c2ba42569efcaba540433dc2d2163fa9"},{"file":"sfx\/nita_ulti_vo_03.ogg","sha":"30cb6ce2f2093f9b60810d8d6ae2486b8b6068e6"},{"file":"sfx\/orb_glow_03.ogg","sha":"a6f09618ce7e6e15db6ead97a509c276c9737ab7"},{"file":"sfx\/overtime_02.ogg","sha":"8b763d1fc20a4a2c30e7c6377ecf71836d3ef980"},{"file":"sfx\/pam_die_vo_01.ogg","sha":"f1b6c9cb0eefb05c180d3120d2c072482d82e0ef"},{"file":"sfx\/pam_die_vo_02.ogg","sha":"d23a26aff6a0110502cd976c4564cf442f3f9331"},{"file":"sfx\/pam_die_vo_03.ogg","sha":"c32728d3621b37311e51f21a2fb50f12e298c338"},{"file":"sfx\/pam_die_vo_04.ogg","sha":"204546ecbfa822a695ee98ca5c79dd94e430e896"},{"file":"sfx\/pam_hurt_vo_01.ogg","sha":"9f2963d447fd31d5d80313861652a538eb2b0313"},{"file":"sfx\/pam_hurt_vo_02.ogg","sha":"d253d3663bf7b941185b47a53c1b64e19b4f6b67"},{"file":"sfx\/pam_hurt_vo_03.ogg","sha":"919336bfa6cdee8875eda486b64eb405b4a1ff44"},{"file":"sfx\/pam_hurt_vo_04.ogg","sha":"c4377206275a561b5a19dd0c1e9de5e60fb6c679"},{"file":"sfx\/pam_hurt_vo_05.ogg","sha":"9f90505807848ddb4afb43097b9dd9db33facaee"},{"file":"sfx\/pam_kill_vo_01.ogg","sha":"00fbe1853cde4faffb18a5576d732ff9c47c8020"},{"file":"sfx\/pam_kill_vo_02.ogg","sha":"d8ff75cba3d4b8180cf7ec77cfd6e2ecb474f7c0"},{"file":"sfx\/pam_kill_vo_03.ogg","sha":"1edbbcbb77f17706c1fd5e4ebfae0ab1a0f1288c"},{"file":"sfx\/pam_kill_vo_04.ogg","sha":"3eb4af7c6a3df87d5d675dc6e6fb09402db76117"},{"file":"sfx\/pam_lead_vo_01.ogg","sha":"408235fba2e637a0927697794ae368e4e18ca564"},{"file":"sfx\/pam_lead_vo_02.ogg","sha":"6d5ff8bffd9eb8d8dafe77b256104b1093b264de"},{"file":"sfx\/pam_lead_vo_03.ogg","sha":"c3ad5694878db839f0854c1285ab9c85b7034ca4"},{"file":"sfx\/pam_lead_vo_04.ogg","sha":"83ca51665a98930be74ee32476d616efc1f1b025"},{"file":"sfx\/pam_start_vo_01.ogg","sha":"97734b9cac1e11714ca20d969c7bbf6ca5d4ba86"},{"file":"sfx\/pam_start_vo_02.ogg","sha":"72d3209dc8cd36645db60f25742f369b325febac"},{"file":"sfx\/pam_start_vo_03.ogg","sha":"fd5e2aa441c8d78978e68d68403900cd6ddc78d3"},{"file":"sfx\/pam_start_vo_04.ogg","sha":"4fcffd798e69d1c5b67bb310dc259559f0f1aca0"},{"file":"sfx\/pam_ulti_vo_01.ogg","sha":"ce541f4d3bfdfbd54eddc754855427e7244269e5"},{"file":"sfx\/pam_ulti_vo_02.ogg","sha":"7bb0116b411ea50d8544189768ffdfa8acdee4c7"},{"file":"sfx\/pam_ulti_vo_03.ogg","sha":"53000a7b3b88603e835d2533266df7d826dc6a4f"},{"file":"sfx\/pam_ulti_vo_04.ogg","sha":"ebef58b5615e52ebfb660b2570c23cbffe646ab2"},{"file":"sfx\/penny_die_vo_01.ogg","sha":"13487367380a832ba83b189a28754fff801e7a29"},{"file":"sfx\/penny_die_vo_02.ogg","sha":"67c8b38bea8caf4945e7189a5909e757b2ddceb5"},{"file":"sfx\/penny_die_vo_03.ogg","sha":"7cec2c92eff4794581ab17cc3c2dcfb5074fd06c"},{"file":"sfx\/penny_hurt_vo_01.ogg","sha":"0a9c30846a8810b3f4cad915532a08f48184fd83"},{"file":"sfx\/penny_hurt_vo_02.ogg","sha":"dbe589b19c75b781650bcba98798b5b65ccb9832"},{"file":"sfx\/penny_hurt_vo_03.ogg","sha":"94bc7b1399d173dcd76b1b6ba215ad1560e5adcd"},{"file":"sfx\/penny_kill_vo_01.ogg","sha":"8af72fc659dd88807abe730e4b1003fdd480bc2d"},{"file":"sfx\/penny_kill_vo_02.ogg","sha":"28ed78b29163e62cf1cc555b5b37553be079a9ec"},{"file":"sfx\/penny_kill_vo_03.ogg","sha":"7b16b1034a5a6144c66a542b5e47f183ad62be46"},{"file":"sfx\/penny_kill_vo_04.ogg","sha":"ec98454dc062f23302cb8581f4cbfae0d1b6a48c"},{"file":"sfx\/penny_kill_vo_05.ogg","sha":"ecd81cae910bac2195c9715ee443e1b48980323c"},{"file":"sfx\/penny_lead_vo_01.ogg","sha":"ee8da27d2a4b5ec3f4fc01c3d056bf77f989b497"},{"file":"sfx\/penny_lead_vo_02.ogg","sha":"ca6ba43a1bd5f46b5be15747fa5d17a01b213543"},{"file":"sfx\/penny_lead_vo_03.ogg","sha":"1de6b0402eef39ecba150e379f727c785d82959f"},{"file":"sfx\/penny_start_vo_01.ogg","sha":"1d14237be2f65f2b5a2f8efe488039037fcfdfa2"},{"file":"sfx\/penny_start_vo_02.ogg","sha":"f6dc8179764769c9a1261a14324fd9186b728590"},{"file":"sfx\/penny_start_vo_03.ogg","sha":"ae3954d5fe89c9848f75a52df8916090eb836339"},{"file":"sfx\/penny_ulti_vo_01.ogg","sha":"6dbacdbc104a59d6aeee3143dc11c49543dbca48"},{"file":"sfx\/penny_ulti_vo_02.ogg","sha":"bdd69655fea9eb5fffcdce3397c4c657005bbe2c"},{"file":"sfx\/penny_ulti_vo_03.ogg","sha":"12544317d698053c4d753aa612666eb06baee39e"},{"file":"sfx\/pickup_spawn_03.ogg","sha":"233af5c2c78210d0ac82c2baf671529c3a955ed1"},{"file":"sfx\/piper_die_01.ogg","sha":"5284a646fde698cf9f87130fba64f161bf57263e"},{"file":"sfx\/piper_die_02.ogg","sha":"3fcbe58499a234c9969927ff0b74c0543608230f"},{"file":"sfx\/piper_die_03.ogg","sha":"b480a1e1a97c01b6fd5b2fdd6b52d85964d314fd"},{"file":"sfx\/piper_gadget_01.ogg","sha":"1e9d2cb140811e1ec8f5d189a51c03171ff4f678"},{"file":"sfx\/piper_hurt_01.ogg","sha":"ac3c1bdcbc2285efdaea358dacdc4242806f78c0"},{"file":"sfx\/piper_hurt_02.ogg","sha":"18327dd1e5e3f051eabcb3e2fec021d4c5d8ff77"},{"file":"sfx\/piper_hurt_03.ogg","sha":"2b29fd5dcdd92ea08ac1a18c0e069334d54e48fd"},{"file":"sfx\/piper_hurt_04.ogg","sha":"ee6b8fbe11ba38e1b4048bec1fabcf2bd519f3f5"},{"file":"sfx\/piper_hurt_05.ogg","sha":"5a43f0f4b99ac10afffc1cd00466104ea079843d"},{"file":"sfx\/piper_hurt_06.ogg","sha":"59ec9817dbe5f4072bd768186bc7a632ced3fc1b"},{"file":"sfx\/piper_kill_01.ogg","sha":"be782e89e90d5a7a7b7f59f0a2147bdd9a6ffddd"},{"file":"sfx\/piper_kill_02.ogg","sha":"8e61e5d3758a6ee5b76dae3ac3737075b9940518"},{"file":"sfx\/piper_kill_03.ogg","sha":"b58b2a07a9308a0c27b179ad91a7dc688b888e6b"},{"file":"sfx\/piper_kill_04.ogg","sha":"dff8d9ebf3d37811782a131786ff563b7dfdb58f"},{"file":"sfx\/piper_lead_01.ogg","sha":"c05a1ba5b5cd44ed6f62ddeee31248c9b3062d1d"},{"file":"sfx\/piper_lead_02.ogg","sha":"f4b5394f25e638c3f7c7ac5dd18b1c3c5d9167b1"},{"file":"sfx\/piper_lead_03.ogg","sha":"23f36bf4b53e397de82ffe20498fbb51251ea2b5"},{"file":"sfx\/piper_mine_drop_02.ogg","sha":"cc35b4f35bf452d0def312500007c668ce314628"},{"file":"sfx\/piper_start_01.ogg","sha":"6c0cc8cf062e195c43ed870c01a29765167e07de"},{"file":"sfx\/piper_start_02.ogg","sha":"679df62e42658c2e1785fd8a5e4152ca4a376084"},{"file":"sfx\/piper_start_03.ogg","sha":"4bf11a7fc64707f26869909725565bd181392983"},{"file":"sfx\/piper_start_04.ogg","sha":"b1e595958ce740860cf64caa13460beafb0233cb"},{"file":"sfx\/piper_ulti_01.ogg","sha":"6dc1d7e984e2935be38d1322584315e464284be1"},{"file":"sfx\/piper_ulti_02.ogg","sha":"6d81ba8eec4b32f7c04a1e3ce63863ef4c07532c"},{"file":"sfx\/pistol_fire_01.ogg","sha":"c07db786f9e52e4a44763156bda352356499695a"},{"file":"sfx\/pistol_fire_ulti_01.ogg","sha":"508d393a61100d29ac052d30f6c0efbd9b5a3e34"},{"file":"sfx\/planet_whoosh_03.ogg","sha":"e9554ae99c58000d0667470f4b085f7ba0fc3ebb"},{"file":"sfx\/player_gadget_button_01.ogg","sha":"e59427f3c63fe9c4cba353cc5805d26337db5d89"},{"file":"sfx\/poco_die_01.ogg","sha":"53ddfa51dbf287efc1cd16a39a5ccaba90e6be4e"},{"file":"sfx\/poco_die_02.ogg","sha":"a715eb126c9f84bf2f4d91b333f55231a8f6d0e8"},{"file":"sfx\/poco_die_03.ogg","sha":"19a4a1fcc1929e3c48acb05981916dbc27dd9679"},{"file":"sfx\/poco_gadget_01.ogg","sha":"0db15f5892626257a5606063e89513a6d47518d4"},{"file":"sfx\/poco_hurt_01.ogg","sha":"20685455546254f820d8fac8261dba873e5bdd55"},{"file":"sfx\/poco_hurt_02.ogg","sha":"fcfa50827daf493a557ac530a58faf94847be17b"},{"file":"sfx\/poco_hurt_03.ogg","sha":"d9516d18dfbe33a381ff11210682ecb478d4965d"},{"file":"sfx\/poco_hurt_04.ogg","sha":"98971883794f38b51cb79e359e1e2f382846a09f"},{"file":"sfx\/poco_kill_01.ogg","sha":"57eccfd8d7c21926e71e7b0f78f83d9b2699e4ef"},{"file":"sfx\/poco_kill_02.ogg","sha":"1e8ec29f58a0d8066d636076f58fe658fc644dd9"},{"file":"sfx\/poco_kill_03.ogg","sha":"ffb590c14fd87d05b1bcf4580dc831499f61fe42"},{"file":"sfx\/poco_lead_01.ogg","sha":"3f3b339963b5777f71dc29ad29c0f2af5ec636fe"},{"file":"sfx\/poco_lead_02.ogg","sha":"cb24f12650119a187818981aa69f0baeff70353c"},{"file":"sfx\/poco_lead_03.ogg","sha":"69e067c9d8069a14a91383e6a2af7d44d0e841f2"},{"file":"sfx\/poco_new_atk_01.ogg","sha":"9091c2e3582f3d5260d53fcfadf1ca49f9674e93"},{"file":"sfx\/poco_new_reload_02.ogg","sha":"014a94fb496c814e4eb826de07474ae8cacfe868"},{"file":"sfx\/poco_start_01.ogg","sha":"3490f59fb9ddb5b61a30015bdf0d9df74bbd714f"},{"file":"sfx\/poco_start_02.ogg","sha":"725ac07ab023343a5a6a055df0ab6e8500a4f80d"},{"file":"sfx\/poco_start_03.ogg","sha":"7a45beb2a434c86f58f39d1852edd111369da31d"},{"file":"sfx\/poco_start_04.ogg","sha":"80c91f3027ae7b95c68e0d891be2567a43ca0040"},{"file":"sfx\/poco_ulti_01.ogg","sha":"5b03489d9f68c4b5fc0e8a9be70ae1883fdbb779"},{"file":"sfx\/poco_ulti_02.ogg","sha":"e235fd581b11a4dcb9ed87993860a35927abbc52"},{"file":"sfx\/poco_ulti_03.ogg","sha":"7f91dcc30c123cef00e17e7c7ed684226c709f9c"},{"file":"sfx\/poco_ulti_04.ogg","sha":"4bb128de2e598d45979bff7096a4aab4e5a79ef2"},{"file":"sfx\/poco_ulti_sfx.ogg","sha":"67aecbbd0e2582dac1a465debbb6f4beac64398f"},{"file":"sfx\/post_match_draw_cheer_02.ogg","sha":"0a7686f5b30eb10386119bc727de040c7b5cbe5a"},{"file":"sfx\/post_match_lose_cheer_01.ogg","sha":"615f23585e855b1540a01b4fa893dfaa94006434"},{"file":"sfx\/post_match_win_cheer_01.ogg","sha":"f34e4058907592ca9ce7e4c526178c60db125690"},{"file":"sfx\/power_up_spawn_01.ogg","sha":"4898a25f8611120f71f1184caad313cce7ef2600"},{"file":"sfx\/princess_land_01.ogg","sha":"9389363c7c2a95985338cdef962b996eb5c25e62"},{"file":"sfx\/princess_shoot_01.ogg","sha":"aee8f54088de59187fabaeca107eee631dd9cb7f"},{"file":"sfx\/punch_impact_01.ogg","sha":"d3115f435e9e40f9ac734550eae6bcdd63cdf8fc"},{"file":"sfx\/punch_impact_02.ogg","sha":"5e961e24bf6ebf9491fcf9452433e61efc832b68"},{"file":"sfx\/rank_up_01.ogg","sha":"679908e9e7ac96bf6e207abdefa4d40b8179ab1a"},{"file":"sfx\/respawn_count_01.ogg","sha":"7c6de5988b917026d1f93e779a0506a4c80dfe6f"},{"file":"sfx\/reveal_common_card_01.ogg","sha":"67758a9c4dc48bd10280dfc0d3cc36e347fdc34d"},{"file":"sfx\/reveal_epic_card_01.ogg","sha":"8019ec8ea53e7ea8bbbd704ffcbd7c3851ad2687"},{"file":"sfx\/reveal_legendary_card_01.ogg","sha":"4c87e8621d63ea8dfc6ad6db0b8cb47915517b2b"},{"file":"sfx\/reveal_rare_card_01.ogg","sha":"9da7345ea2d35954eae9ce204dba666f51dc2d04"},{"file":"sfx\/rhino_fire_01.ogg","sha":"825822edc092322f54e498ab6a384c00d37033da"},{"file":"sfx\/rhinostep_01.ogg","sha":"d1c7caf085fc79054e0b30f8217acf2b1cc0fc33"},{"file":"sfx\/rick_bullet_01.ogg","sha":"b461689bde6fa83d086213668fe81bf5f12bc853"},{"file":"sfx\/rick_die_01.ogg","sha":"91e6c19943cfedcd5dca622498e28525ab538598"},{"file":"sfx\/rick_die_02.ogg","sha":"e3c58ef246eb2800a8254888ff00a82fe69abc5d"},{"file":"sfx\/rick_die_03.ogg","sha":"c790f5cea2fece5399ee3e44cf6e1a4dfb307492"},{"file":"sfx\/rick_die_04.ogg","sha":"21502e77d25b3fe2187c3530ef15e81d420270c9"},{"file":"sfx\/rick_die_05.ogg","sha":"575543d93752db9d0a20596d8f312269ba45921f"},{"file":"sfx\/rick_hurt_01.ogg","sha":"aea13d6286c696d6ec85b20befe33d72f99ad54e"},{"file":"sfx\/rick_hurt_02.ogg","sha":"a25e329ad322dcc91ac6618826abc453064094de"},{"file":"sfx\/rick_hurt_03.ogg","sha":"ffc0ee000eb60f5920b93ffe3c5f431c74cebe48"},{"file":"sfx\/rick_hurt_04.ogg","sha":"c0bf6a635d6ba6ff905dffc5cf8899a6e865e1be"},{"file":"sfx\/rick_hurt_05.ogg","sha":"e1526e62cc55d131cc319aaf2e5963f3834a418e"},{"file":"sfx\/rick_kill_vo_01.ogg","sha":"2e385b4159b8de2513c6d493183466af17867b58"},{"file":"sfx\/rick_kill_vo_02.ogg","sha":"a807e712ad5b69d1e06b0c4f6ad1be4e3c30e1ba"},{"file":"sfx\/rick_kill_vo_03.ogg","sha":"238e4c76096c53995c2f29842737e02a02c04ef5"},{"file":"sfx\/rick_kill_vo_04.ogg","sha":"3073252f22230bd8b9f4271e172671159e173117"},{"file":"sfx\/rick_kill_vo_05.ogg","sha":"11a3a74c5d903899303da7804d8bb8428bec1f97"},{"file":"sfx\/rick_kill_vo_06.ogg","sha":"8247408409f508da42c9a5c8a99aea104191111c"},{"file":"sfx\/rick_kill_vo_07.ogg","sha":"1960f3e9c1a2ac0ab5ddb8eacdf7f24ffde2274e"},{"file":"sfx\/rick_lead_01.ogg","sha":"a86ca2567284f1619de604599128ac86541caf37"},{"file":"sfx\/rick_lead_02.ogg","sha":"68555c002a8db86212194bbadde9aec136be3cc6"},{"file":"sfx\/rick_lead_03.ogg","sha":"32c74ca2e84eb7b0ea40bbedf5197a90497a4676"},{"file":"sfx\/rick_lead_04.ogg","sha":"4f26f406cd0e5b4301ad102a0b778e6cd45bb5d6"},{"file":"sfx\/rick_lead_05.ogg","sha":"d44412c682eef30a6a13ab81d57a8e70c1fdc430"},{"file":"sfx\/rick_start_vo_01.ogg","sha":"69046f47145982957ec72e35a2d26299b06f6b32"},{"file":"sfx\/rick_start_vo_02.ogg","sha":"d49a0fb72c17a24c362c564e0028d6c97a3d97cc"},{"file":"sfx\/rick_start_vo_03.ogg","sha":"5ee8c6cf539117328ed551a7edf28f07ef65865a"},{"file":"sfx\/rick_start_vo_04.ogg","sha":"7e4f811487de6550f639fdb1734867d1019f4ff5"},{"file":"sfx\/rick_start_vo_05.ogg","sha":"344ad7f75ee763ef30b648710f3bcc5f521854cd"},{"file":"sfx\/rick_start_vo_06.ogg","sha":"18219e6048f9666f7406d9bb07ccb20512896b2c"},{"file":"sfx\/rick_ulti_01.ogg","sha":"3f74cf55168d95d43670be31cf772c0c7edfb560"},{"file":"sfx\/rick_ulti_02.ogg","sha":"10a59368d9f2bb9a60da2a1602980e61867c690f"},{"file":"sfx\/rick_ulti_03.ogg","sha":"2ed365d18c931e984628a5e9ab50ce1d7b620366"},{"file":"sfx\/rick_ulti_04.ogg","sha":"309f4a5ee70c6a2da4662eb6a66fdeaa0f6babf6"},{"file":"sfx\/rick_ulti_05.ogg","sha":"ba0f2d514ae0acb109bdf18d56acfd1571ef9477"},{"file":"sfx\/rick_ulti_06.ogg","sha":"7e7bf6420ebdf34b4569a9013fe37d2c6996f88f"},{"file":"sfx\/robo_bo_die_01.ogg","sha":"34e11fe2415102099ab33cf3e2e7e1b67a4f3b6f"},{"file":"sfx\/robo_bo_die_02.ogg","sha":"bedfc4d1cedc95e037e163d5863f832461ed50a8"},{"file":"sfx\/robo_bo_die_03.ogg","sha":"b5fbd752379e0f09ef17489846fe3df17f51db37"},{"file":"sfx\/robo_bo_die_04.ogg","sha":"5893bf0d35d61812d87d3ced856ab81b1cb59967"},{"file":"sfx\/robo_bo_die_05.ogg","sha":"6e9b031ead0fc4cd916a2408e909683d470b84ab"},{"file":"sfx\/robo_bo_fire_vo_01.ogg","sha":"cdaf709dc647987b393b5669eb813d2c0501bc3c"},{"file":"sfx\/robo_bo_fire_vo_02.ogg","sha":"d586dc619f4424369e52a61535f812057669881d"},{"file":"sfx\/robo_bo_fire_vo_03.ogg","sha":"7ed9859973514ee682750978ed1e9bd0ee7cd48a"},{"file":"sfx\/robo_bo_fire_vo_04.ogg","sha":"52dfa02f08d716e2f33bd5d1a18c9df93d86348f"},{"file":"sfx\/robo_bo_hurt_01.ogg","sha":"1b215261e764880ee2a988eeb04aa4231cbc7122"},{"file":"sfx\/robo_bo_hurt_02.ogg","sha":"cb2a4084a898122683a8199d85685a6b5ce400cd"},{"file":"sfx\/robo_bo_hurt_03.ogg","sha":"ed6d024699869c06f246fa490573902acc142d7f"},{"file":"sfx\/robo_bo_hurt_04.ogg","sha":"b574baccf4590cb9e2d94e0f88afb18a71352e7e"},{"file":"sfx\/robo_bo_kill_01.ogg","sha":"2e666075bb7bab0d3b976c36fcaef2d7d9db081e"},{"file":"sfx\/robo_bo_kill_02.ogg","sha":"aa2111d1e42ceb6cd180198a9536527881978e60"},{"file":"sfx\/robo_bo_kill_03.ogg","sha":"7172994b76ee7141e48f5f251a1a1b2ff7c80ac9"},{"file":"sfx\/robo_bo_kill_04.ogg","sha":"02bd3a68fd30d055a3c16fac0d19e3c6a50317ee"},{"file":"sfx\/robo_bo_lead_vo_01.ogg","sha":"dc6bba72554bca4bc6355ee308c6fc14f25c1b7b"},{"file":"sfx\/robo_bo_lead_vo_02.ogg","sha":"a6bc0181357c78f43f20c395c5b470acf0d72fbc"},{"file":"sfx\/robo_bo_lead_vo_03.ogg","sha":"097f30a01768c6fcb516a53f62322e124d2f274f"},{"file":"sfx\/robo_bo_lead_vo_04.ogg","sha":"b3e3f30dcf050236c22468ab789e298ac7edc984"},{"file":"sfx\/robo_bo_start_vo_01.ogg","sha":"899f8a9b978e748ab091df79e905d7dcf5fc3647"},{"file":"sfx\/robo_bo_start_vo_02.ogg","sha":"011cc2d08e54500f1ac53122b5328e0e12ea56b0"},{"file":"sfx\/robo_bo_start_vo_03.ogg","sha":"c162e1636fec4de522ce0651107e99521d739dfc"},{"file":"sfx\/robo_bo_start_vo_04.ogg","sha":"2ac54be3df0c1ff031aa468003c3e51376657f5a"},{"file":"sfx\/robo_bo_start_vo_05.ogg","sha":"a864f848bbf3e71177a95547c68887671bd027d7"},{"file":"sfx\/robo_bo_ulti_vo_01.ogg","sha":"c9da37b701fefad356cbc0083e0f504fbd29a731"},{"file":"sfx\/robo_bo_ulti_vo_02.ogg","sha":"c20e3a3d40112f83eb317392fc38e7f2616d3821"},{"file":"sfx\/robo_bo_ulti_vo_03.ogg","sha":"bc8c9d5fd58a326ac7586690b306b955aadc2b04"},{"file":"sfx\/robo_bo_ulti_vo_04.ogg","sha":"e45980f5b99d427dd47d77bc5f9c2386aa6f83c3"},{"file":"sfx\/robo_death_01.ogg","sha":"b952b89d9efd0d15308252fd44a27c8d7634bc80"},{"file":"sfx\/robo_death_02.ogg","sha":"5c089652b790373e0432e84f5af7a9c705b50e5c"},{"file":"sfx\/robocon_01.ogg","sha":"b241d9f0ed6a82d9a6bef88da8e9a176b9c48d97"},{"file":"sfx\/roborocket01.ogg","sha":"be515d3f99ad2ea30cc7ed30eb4281ddb5a0ed74"},{"file":"sfx\/robotshoot_01.ogg","sha":"9c0d98af51affd6e6e3300048d8d8928ea97a2de"},{"file":"sfx\/roboturret01.ogg","sha":"86b06e223495b8286fce7fd2ccbd471546259fa7"},{"file":"sfx\/rocket_rose_atk_02.ogg","sha":"94d33fb18bff6a95cf9f03cbb5c17b219d20f00d"},{"file":"sfx\/rosa_death_01.ogg","sha":"48c354fbf01e62dc37dd74b2622715eb522b3d1f"},{"file":"sfx\/rosa_death_02.ogg","sha":"0dbd4e28e1a77206d84d69b5e70c7c18eec75b79"},{"file":"sfx\/rosa_death_03.ogg","sha":"19ce86073a8421ec8b7093c33d9493134242e069"},{"file":"sfx\/rosa_death_04.ogg","sha":"88869bce431cf494840c0abc211afd8629bfdc75"},{"file":"sfx\/rosa_gadget_01.ogg","sha":"a4105e956890d25dc53e16e935527b819735893c"},{"file":"sfx\/rosa_hit_01.ogg","sha":"31ac9a7dacd44f1e178d0e15f594af7d96e41665"},{"file":"sfx\/rosa_hit_02.ogg","sha":"a174c76adac1038b6d579d14ed0d6ee908cdc24d"},{"file":"sfx\/rosa_hit_03.ogg","sha":"4ac354ce3aa666618aaca9bc237a8a653a8ba154"},{"file":"sfx\/rosa_hit_04.ogg","sha":"37fdc54262d53fc8c2a9db9370fdeb19f6f14f59"},{"file":"sfx\/rosa_hit_05.ogg","sha":"4dd04bad8265f2bfbe8d1098ed98fdac0adf60f8"},{"file":"sfx\/rosa_hit_06.ogg","sha":"54aa113d97e6fb901fdb7a9f74835adb6976307e"},{"file":"sfx\/rosa_hit_07.ogg","sha":"7da7d162fea9db794e65a42e9b3a0df4c9cb8f87"},{"file":"sfx\/rosa_kill_01.ogg","sha":"e767979301c80936b7cc7193733d72d3fbfa6e35"},{"file":"sfx\/rosa_kill_02.ogg","sha":"51b5e6945925fbce5d26ee0686e42d5543fa155b"},{"file":"sfx\/rosa_kill_03.ogg","sha":"e8c496f1fd33cf67f29efbd308a28513387e6e48"},{"file":"sfx\/rosa_kill_04.ogg","sha":"a664f4de9e23e2de5d91c2946582ab692f019ba1"},{"file":"sfx\/rosa_kill_05.ogg","sha":"53adaa2aeb133b6261c1faa29873f7b6fbbed172"},{"file":"sfx\/rosa_lead_01.ogg","sha":"92994e1a118fd484873fecf983349b9fa103176c"},{"file":"sfx\/rosa_lead_02.ogg","sha":"af5b51059697f6225196e7478b52f6944cb0ee0c"},{"file":"sfx\/rosa_lead_03.ogg","sha":"a8ec28343f348e974b0dd97881de8a8a37bfc76d"},{"file":"sfx\/rosa_start_01.ogg","sha":"e88870fb8ec8423d06a1e0a01e48c10679926970"},{"file":"sfx\/rosa_start_02.ogg","sha":"501246e776d09775d4d955b078af7f9454f7f0fd"},{"file":"sfx\/rosa_start_03.ogg","sha":"6e4df12d56ab0525f96f9d1258dd8a7bde12a6b4"},{"file":"sfx\/rosa_start_04.ogg","sha":"011e8648224351a0ff4702818c8504e69a901d7c"},{"file":"sfx\/rosa_ulti_vo_01.ogg","sha":"309237abf0f3da6ebe7339a53fe41834cfa7bba3"},{"file":"sfx\/rosa_ulti_vo_02.ogg","sha":"6169bf1b45eb22117b259d62558e751df36f5907"},{"file":"sfx\/rosa_ulti_vo_03.ogg","sha":"63916c4c5d95d410b33717c43c8ceb429fa6b572"},{"file":"sfx\/rosa_ulti_vo_04.ogg","sha":"10db87593f293de35ac366bad9dec3298109997a"},{"file":"sfx\/rose_rocket_explo_01.ogg","sha":"e5cd00c40d9b3b71ee2064add19c8afb7060eb12"},{"file":"sfx\/rose_rocket_ulti_explo_01.ogg","sha":"3332df1b4bfc52abb85fa12623b4ea266d32ddb2"},{"file":"sfx\/safe_drop_01.ogg","sha":"35f7f1b630b1da6e1e7615b9155fd7932391e22d"},{"file":"sfx\/safe_open_char_01.ogg","sha":"ebc86498592f9b227d45a7cb38f42185cbf4b595"},{"file":"sfx\/sandy_atk_01.ogg","sha":"d14bd7ad86930c40f317c09553dde59888a97e30"},{"file":"sfx\/sandy_die_vo_01.ogg","sha":"ad5e660b06caa0b3c0c04a8d685b528df9f55758"},{"file":"sfx\/sandy_die_vo_02.ogg","sha":"69989ccf4d5f8c24439e4e01ac5721fbf251b7b8"},{"file":"sfx\/sandy_die_vo_03.ogg","sha":"b3dfe828eee2ae7f0a3c8b534704eeb71c054417"},{"file":"sfx\/sandy_die_vo_04.ogg","sha":"17e7eb51a92f2faf410264f61f4d49500fc2233f"},{"file":"sfx\/sandy_hurt_vo_01.ogg","sha":"dfd571db46ff2219b2b9c56220958e29d1af2271"},{"file":"sfx\/sandy_hurt_vo_02.ogg","sha":"e676e3c066bff0716216e64d612c62fe3294ce91"},{"file":"sfx\/sandy_hurt_vo_03.ogg","sha":"a4c32dd7132f4d3e009b40cc97176a7b7e3ae41e"},{"file":"sfx\/sandy_hurt_vo_04.ogg","sha":"85ca36495121f708a360dbfc16b9edbb200bb942"},{"file":"sfx\/sandy_hurt_vo_05.ogg","sha":"d9891b0444c7f71c7b516a8a02c41c77fb314099"},{"file":"sfx\/sandy_hurt_vo_06.ogg","sha":"416afd2e9bcb2f08fe103da7f5e3acdef8b13e1d"},{"file":"sfx\/sandy_kill_vo_01.ogg","sha":"46a13c47ff6348faaedf0bf865b81c6067e89f33"},{"file":"sfx\/sandy_kill_vo_02.ogg","sha":"cb20e80f8bd7c24c2960b9f72ca3c0ebdd6f548b"},{"file":"sfx\/sandy_kill_vo_03.ogg","sha":"020ae1616a5d03e6b938cff77fddb90793013bde"},{"file":"sfx\/sandy_kill_vo_04.ogg","sha":"ff9e2957a505147b0e63c0939fd9181a8b4951dc"},{"file":"sfx\/sandy_kill_vo_05.ogg","sha":"d8116733afe4e1fc7f6877324108f578ca8cda7b"},{"file":"sfx\/sandy_lead_vo_01.ogg","sha":"050e904395607eacc04f560944c8a22ac3f13fec"},{"file":"sfx\/sandy_lead_vo_02.ogg","sha":"f6c236d7a847e03f56ca1a2ea0e2daa481c8c294"},{"file":"sfx\/sandy_lead_vo_03.ogg","sha":"13c84b6af31167b8efa509241c38b022256ebfd5"},{"file":"sfx\/sandy_lead_vo_04.ogg","sha":"9b025a2ab80af3441c0d69f0fcd88add9f044b03"},{"file":"sfx\/sandy_lead_vo_05.ogg","sha":"ba9b35872dc6b96ae24dceae2eefaf37f56e30c7"},{"file":"sfx\/sandy_no_ammo_01.ogg","sha":"b83c25ea91b95c11dbb49fa6fd09e4e0dc385554"},{"file":"sfx\/sandy_reload_01.ogg","sha":"ce8ac176d2746cf041c7b8d09fc79154dd24a91b"},{"file":"sfx\/sandy_start_vo_01.ogg","sha":"9d09de2789002fc55af34cbbcc96cf289f3a565e"},{"file":"sfx\/sandy_start_vo_02.ogg","sha":"a8b4c134095fbe5639af947d61ed09ac4961db85"},{"file":"sfx\/sandy_start_vo_03.ogg","sha":"78ad8cbf8348ebb96bf8341a228a1d0679fb8ec4"},{"file":"sfx\/sandy_start_vo_04.ogg","sha":"d7057754ae59b0c5753c123b1a8e6be7e214d773"},{"file":"sfx\/sandy_start_vo_05.ogg","sha":"394b2411d4478aea14c428efb00d259166d0e1e3"},{"file":"sfx\/sandy_start_vo_06.ogg","sha":"c21477d0ea07a60de854ec0fa9c1b2575199d34f"},{"file":"sfx\/sandy_ulti_01.ogg","sha":"3315245d2cac234941727c695000a0ad52903dae"},{"file":"sfx\/sandy_ulti_vo_01.ogg","sha":"cf92aa729a11b8ea000cadaf2f9594a7f367d9fb"},{"file":"sfx\/sandy_ulti_vo_02.ogg","sha":"dbabc175e09c8c4f76e8a96e357a38c2ea72ea3d"},{"file":"sfx\/select_brawler_01.ogg","sha":"16511d104e8c2121459d58e616c8c0e8959b87b6"},{"file":"sfx\/sgg_dryfire_01.ogg","sha":"9ec0e616eeb600a1f6427000b42739906da0b992"},{"file":"sfx\/sgg_out_of_ammo_02.ogg","sha":"80b6ca2e781f132f66c8304c42a172815c748560"},{"file":"sfx\/shelly_die_01.ogg","sha":"0a5011177a93e74cbcc1ecbf03f173eb2fec0ec4"},{"file":"sfx\/shelly_die_02.ogg","sha":"1fd0d9ec5535a40cd57a1c1da31f4e116a78ef99"},{"file":"sfx\/shelly_die_03.ogg","sha":"0a91f5c2e9ff0732105b137f41c7fae5ac287aa3"},{"file":"sfx\/shelly_die_04.ogg","sha":"1ed70949ffdb339562dac2bb911e1eaef7049a6d"},{"file":"sfx\/shelly_hurt_01.ogg","sha":"a4db4470185cbdbe36aad2735d5ee555b8c66bd2"},{"file":"sfx\/shelly_hurt_02.ogg","sha":"f388022bb8f99b89607d118e08bd9bedf9d74789"},{"file":"sfx\/shelly_hurt_03.ogg","sha":"2c71910f18152b71bccf4e50c69e6782c2b9cea3"},{"file":"sfx\/shelly_hurt_04.ogg","sha":"857efaf860e9294ada0896901e63b4ce5d89e23e"},{"file":"sfx\/shelly_hurt_05.ogg","sha":"91b430f267ac6842584593da48040d1399708cb7"},{"file":"sfx\/shelly_kill_01.ogg","sha":"01649ddc2ae8e147ec1bb10b2895f7418d96a1b4"},{"file":"sfx\/shelly_kill_02.ogg","sha":"b0dd39533aaf20a84d39d544af7877bb2085f0ea"},{"file":"sfx\/shelly_kill_03.ogg","sha":"e2af115e57859e65f137d8125ea12ec64483fcf9"},{"file":"sfx\/shelly_kill_04.ogg","sha":"b8a9b87e7245c1f249e57acdca74faf91a01224f"},{"file":"sfx\/shelly_kill_05.ogg","sha":"86cff3d39074a86bee04f3eb8dab429fc14aafeb"},{"file":"sfx\/shelly_lead_01.ogg","sha":"e82e5bf9d63bde1f669532c23200487205531c9b"},{"file":"sfx\/shelly_lead_02.ogg","sha":"1b813cdec39a2764a610fe838d7b31312f60d620"},{"file":"sfx\/shelly_lead_03.ogg","sha":"7ca23febb33dc1532c153b06f8c263e029d8e688"},{"file":"sfx\/shelly_lead_04.ogg","sha":"3b86dab85f6a06c237eb39b2ff2b80d9824bd178"},{"file":"sfx\/shelly_start_01.ogg","sha":"85cbaa55a6904b147871572c8904b20b41096b16"},{"file":"sfx\/shelly_start_02.ogg","sha":"0701cb9b59ee094561c85389494ae85df1f0424b"},{"file":"sfx\/shelly_start_03.ogg","sha":"ecc44fda6fdeb4cae365c28a93b8b732aae500e9"},{"file":"sfx\/shelly_start_04.ogg","sha":"101013b5c67f2e759e0b0d46ac869b924e9e06cb"},{"file":"sfx\/shelly_ulti_01.ogg","sha":"509cb1f21ed7f694d051b71a49b718a42479ea98"},{"file":"sfx\/shelly_ulti_02.ogg","sha":"92cc1126d2d7703feb21aaa2377b6d41c708282a"},{"file":"sfx\/shelly_ulti_03.ogg","sha":"6a46a37687b8edc06944f1289f703bd809fa88e1"},{"file":"sfx\/shelly_ulti_04.ogg","sha":"ad504d8a582f8c4a833b548a7f685aa2230dccb4"},{"file":"sfx\/shield_03.ogg","sha":"630186425958779c0749a8ea03d2da745d70da7c"},{"file":"sfx\/shotgun_fire_01.ogg","sha":"7ab6b8a4bc57189ec49bd2c9f758427466e741f8"},{"file":"sfx\/shroomz.ogg","sha":"0297f50e99f6cb3c2e8078bedfc0b82ce91124af"},{"file":"sfx\/skill_used_03.ogg","sha":"ba37c239847c33ecffdcdfd04ace2f408646c222"},{"file":"sfx\/slider_tick_01.ogg","sha":"141dc928e3453aea5ffa0d6fc207db12a417f9e8"},{"file":"sfx\/slimey_shotgun_01.ogg","sha":"60d9976a5e87366249b7b5ce8fe66dc9e555a2b7"},{"file":"sfx\/slimey_shotgun_ulti_01.ogg","sha":"181138ac38a360b84a6e0d6ec5ae2f69b0879c80"},{"file":"sfx\/slug_bad_kill_01.ogg","sha":"82cc1c0883864a95d6c417f557985fb52d4c7cfb"},{"file":"sfx\/slug_good_kill_01.ogg","sha":"f3828d0a77ebfd224bdf22ef70e4a5f1ec634bf4"},{"file":"sfx\/slugfest_clock_01.ogg","sha":"6549d12e4c4ea62648b86e26ffea80705b92d227"},{"file":"sfx\/sniper_reload_01.ogg","sha":"a1464481765e0b1722058b1902053735422308fa"},{"file":"sfx\/sniper_trail_02.ogg","sha":"558115f832f168ed8fb7ce4e783b360fda3bd2e6"},{"file":"sfx\/sniper_ulti_01.ogg","sha":"a940357d4eaffdd27140ee456ff639d0eb5d290e"},{"file":"sfx\/solgrenade01.ogg","sha":"ce15ab0fe6cbd7949a741a63a9205b2a30bb9fc8"},{"file":"sfx\/spike_atk_01.ogg","sha":"6b3ec159a3b9e6843b43739147e46cb4aedbb33a"},{"file":"sfx\/spike_reload_03.ogg","sha":"6c5b8307d553f5fb1f11f781a01921eb1b3f2ec4"},{"file":"sfx\/spike_ulti_explo_01.ogg","sha":"b827597a2fc7530137b374d48e80dfa4ce25c247"},{"file":"sfx\/springboard_charge_01.ogg","sha":"95dcc001b1628e818d8187422df5fc43fe6622a3"},{"file":"sfx\/springboard_jump_01.ogg","sha":"6f02696572e19c735829f85d64d03ff0420b9159"},{"file":"sfx\/sprout_atk_01.ogg","sha":"9cf7e103e7998e9affb4ba0ecc54d908cb125534"},{"file":"sfx\/sprout_atk_explo_01.ogg","sha":"829a176a8a15aac6a1230daab2922ffd32bdf17d"},{"file":"sfx\/sprout_atk_ulti_01.ogg","sha":"63e78d5bf0c35741246067d0a1222dbb6aa680ed"},{"file":"sfx\/sprout_atk_ulti_explo_01.ogg","sha":"f3099e30bc68e7225ec660b507bb9aa1887dc58d"},{"file":"sfx\/sprout_atk_ulti_explo_02.ogg","sha":"04d9877c869cb94df5c6a73b294273a4606b6f62"},{"file":"sfx\/sprout_die_vo_01.ogg","sha":"544e1c4c34bb71ed21b22678771afcedd5f3a7b6"},{"file":"sfx\/sprout_die_vo_02.ogg","sha":"1bca05884207418c139a20ecac57a9edf25dc7d3"},{"file":"sfx\/sprout_die_vo_03.ogg","sha":"e288b01b92d70e5f6006a10550cca992604cb6c3"},{"file":"sfx\/sprout_die_vo_04.ogg","sha":"841ed5e59c868b5c17a9b2880507ed2ae1f400f3"},{"file":"sfx\/sprout_die_vo_05.ogg","sha":"be2b1d8e546550ddf9867dcc312b137d503a3b9d"},{"file":"sfx\/sprout_dryfire_01.ogg","sha":"30fecee3d6ad201b46ce7c9ac8c7cff71bb22752"},{"file":"sfx\/sprout_hurt_vo_01.ogg","sha":"0dd231aa07a84011af8e42b2d7b4a3c288814a2c"},{"file":"sfx\/sprout_hurt_vo_02.ogg","sha":"db5cc344042d79165e7414b10142eb63c1de6c01"},{"file":"sfx\/sprout_hurt_vo_03.ogg","sha":"49e90e3b6e5b5b827d2a409dd010d7a624d82c3d"},{"file":"sfx\/sprout_hurt_vo_04.ogg","sha":"f613f23acd9231b2e3b32bb0c34ff6269c183e7d"},{"file":"sfx\/sprout_kill_vo_01.ogg","sha":"a971574332de705b4735edca6028b3c9d26f2faa"},{"file":"sfx\/sprout_kill_vo_02.ogg","sha":"9b808ca195f828b430d105b55561de2993e5a103"},{"file":"sfx\/sprout_kill_vo_03.ogg","sha":"c63817c83563b0d11253df17103c9debdbcc32e4"},{"file":"sfx\/sprout_kill_vo_04.ogg","sha":"50717e0b62e9511ac56b48ecb32c877c9639a801"},{"file":"sfx\/sprout_kill_vo_05.ogg","sha":"43be79ca137c86c60351a7dadab61067030b0455"},{"file":"sfx\/sprout_lead_vo_01.ogg","sha":"ae9f91c52c0c3a519f5815a7153ab285a8e8d50b"},{"file":"sfx\/sprout_lead_vo_02.ogg","sha":"3aa7c4b880b15019cf7d411a9965f03021cf3591"},{"file":"sfx\/sprout_lead_vo_03.ogg","sha":"d5fe825c9a815ff3d72e65ae3589566517d9b5ce"},{"file":"sfx\/sprout_lead_vo_04.ogg","sha":"d164f63d05412549f0ef01b1142018be6d566d27"},{"file":"sfx\/sprout_reload_01.ogg","sha":"d9645497feb10ee2adfad3f806c6becae17064f0"},{"file":"sfx\/sprout_start_vo_01.ogg","sha":"7121911c26d602dd86c4bc10665ade25f35b6ade"},{"file":"sfx\/sprout_start_vo_02.ogg","sha":"02bb68a4c9cded3e7acf3e9511025302df4634d4"},{"file":"sfx\/sprout_start_vo_03.ogg","sha":"5dcc5a7941c4c1ee5af2716e33bde8f80f658295"},{"file":"sfx\/sprout_start_vo_04.ogg","sha":"de0b45a7452fc63354d6907a7e7210839620590c"},{"file":"sfx\/sprout_ulti_vo_01.ogg","sha":"71166d0a9bb6b09dd8387e4a355f5bb0553f3378"},{"file":"sfx\/sprout_ulti_vo_02.ogg","sha":"deaafbfdab9f860230330824e198efb27f98732e"},{"file":"sfx\/sprout_ulti_vo_03.ogg","sha":"07a04b1598eb23a8b4d4645d5f91ce61abeabc7d"},{"file":"sfx\/sprout_ulti_vo_04.ogg","sha":"059f66df254c83ba9372f38eb59b92bd4c550573"},{"file":"sfx\/star_power_equip_01.ogg","sha":"a62fcdff19ea21c882afe2c98f9c53ec5b2cefeb"},{"file":"sfx\/starpower_shield_01.ogg","sha":"481cc775efbc368b3f0690cf165c4e5d90edfa93"},{"file":"sfx\/starpower_speed_01.ogg","sha":"b3a7ad29e690ef37f12be2f4833e507476f068eb"},{"file":"sfx\/startwirl_01.ogg","sha":"5bea3b25102cfe0f0b3e47ff62798a06c280f9d7"},{"file":"sfx\/supercell_jingle.ogg","sha":"030b22dec66f329e04fcc428232cc2a22d91e339"},{"file":"sfx\/tanuki_jess_fire_01.ogg","sha":"7765ebd571b4195324f02dbaa334944d17c25a59"},{"file":"sfx\/tanuki_turret_fire_01.ogg","sha":"d1dea0ceba14d8c8aad38a04a804b4941d11151a"},{"file":"sfx\/tap_guns_02.ogg","sha":"08131fd3c18ef09999714b3728647741c7c642cb"},{"file":"sfx\/tap_normal_02.ogg","sha":"b7a25e6f1ff348d9c778c7c9508f76772cd742c2"},{"file":"sfx\/tara_die_vo_01.ogg","sha":"91a9ae5986199c508cdeb6a03307f11bd65c90a2"},{"file":"sfx\/tara_die_vo_02.ogg","sha":"2a87f9140250772fdbe8736e12a020692478a61c"},{"file":"sfx\/tara_die_vo_03.ogg","sha":"6362e77f4046479e08e819ce89431844891e498a"},{"file":"sfx\/tara_die_vo_04.ogg","sha":"6b150703b0be885a90bb78a0f030eda6c877d51a"},{"file":"sfx\/tara_gagdet_01.ogg","sha":"5264fe0012baab8bf47ad90ef42fff1f9931e689"},{"file":"sfx\/tara_hurt_vo_01.ogg","sha":"6a67eb05c0560743fa3d926274f358fb2f8cefb9"},{"file":"sfx\/tara_hurt_vo_02.ogg","sha":"ed4524401f9481e20a5dd7268bcf2aa83367328e"},{"file":"sfx\/tara_hurt_vo_03.ogg","sha":"9504aa712560d809125d0a27638db8ff217910c9"},{"file":"sfx\/tara_kill_vo_01.ogg","sha":"b0136e90023e09009dc7f25741319bc4916ee517"},{"file":"sfx\/tara_kill_vo_02.ogg","sha":"06a05840f34007015628d994dca52f872ba7bffc"},{"file":"sfx\/tara_kill_vo_03.ogg","sha":"037dcad60f3b0a71db7e2a7328b6657ee0d0fd96"},{"file":"sfx\/tara_kill_vo_04.ogg","sha":"69f1cfab3b918c5c9884688371992b7f55ec425d"},{"file":"sfx\/tara_lead_vo_01.ogg","sha":"a506b7ed911b30cea7dc1d241a75e71de2d9c1f5"},{"file":"sfx\/tara_lead_vo_02.ogg","sha":"1ae6376c9b583c84f4d5c220ea593c9e41a6401b"},{"file":"sfx\/tara_lead_vo_03.ogg","sha":"bd3e9c73eba8c833dce5f3ebd87a1ec0c4126c8d"},{"file":"sfx\/tara_start_vo_01.ogg","sha":"5f535443bb017abb0f29b11d43975dd6d5e76570"},{"file":"sfx\/tara_start_vo_02.ogg","sha":"27e53ea295801ec1fd3cd43a68afe3520a58b205"},{"file":"sfx\/tara_start_vo_03.ogg","sha":"a0f268bb6ef5542103491e90296a85dfa1852776"},{"file":"sfx\/throw_bawl_ulti_01.ogg","sha":"370a0d3b18dce04019daeebeb7fc0d9953aeacec"},{"file":"sfx\/tick_atk_01.ogg","sha":"fe24e87c16672315650220564210e3a650b9c134"},{"file":"sfx\/tick_atk_split_02.ogg","sha":"da7c956a2558e571ffe75b7a86f38921dad70572"},{"file":"sfx\/tick_reload_01.ogg","sha":"3741fa1b37a060aedcebfb98fb73a9c8fb7b6c42"},{"file":"sfx\/tick_ulti_01.ogg","sha":"b6e7c155d816addad69fe0ad0d2055fff9440c6b"},{"file":"sfx\/tick_vo_01v2.ogg","sha":"daf7c88cee1cfca52588b0041804444159221f02"},{"file":"sfx\/tick_vo_02v2.ogg","sha":"823f4502d6a5fafb6a9b76d6be407393b89498fe"},{"file":"sfx\/tick_vo_03v2.ogg","sha":"2aa88dd06600610c9522ad0a56c6dca2dc507edd"},{"file":"sfx\/tick_vo_04v2.ogg","sha":"c34ad40737f96a0b206c533fbd7e667daecd787a"},{"file":"sfx\/tick_vo_05hurt.ogg","sha":"e1518de841200990da8c2a9a945263e38c086cc2"},{"file":"sfx\/tick_vo_05v2.ogg","sha":"1e86fc7ca5726ef964d95b0d1c9e8e92aa36ea7f"},{"file":"sfx\/tick_vo_06hurt.ogg","sha":"674b8ba61199ec5e06dc3abd2629502fb15656c4"},{"file":"sfx\/tick_vo_06v2.ogg","sha":"26aeac5faed4cdf697298fe48929d836903b4c6d"},{"file":"sfx\/tick_vo_07hurt.ogg","sha":"07ece5fb5b2d4ed3f4719026ae715cfce2cf06ca"},{"file":"sfx\/tick_vo_08die.ogg","sha":"5921c3bb6d51747eb6255f8b9b0e87a5dfc87d8b"},{"file":"sfx\/tnt_guy_die_01.ogg","sha":"ec3c8b98cc1a1eb3fc1861723aac2421ca9bd541"},{"file":"sfx\/tnt_guy_die_02.ogg","sha":"ec04a55d4b4f35f1c5fab0d41b4f6fdb7d867708"},{"file":"sfx\/tnt_guy_die_03.ogg","sha":"7a37322bc75282c5a9848df025c84b2f8237d78b"},{"file":"sfx\/tnt_guy_die_04.ogg","sha":"5249f5825b6b392056dfe50116280da6fc6faea2"},{"file":"sfx\/tnt_guy_die_05.ogg","sha":"d8a068da13d15bbffc06b7d33bab5de9602d5c8c"},{"file":"sfx\/tnt_guy_hurt_01.ogg","sha":"ca7aaa6584ff001a934a637a7a14017549bfd6c9"},{"file":"sfx\/tnt_guy_hurt_02.ogg","sha":"5c0e32440dae0217b92a292295fb79b68556382c"},{"file":"sfx\/tnt_guy_hurt_03.ogg","sha":"058d11e6d35eebd0103d184461ef1a2303e33c45"},{"file":"sfx\/tnt_guy_hurt_04.ogg","sha":"4a03b700941abebb0e87653d1db3c6f7a1a23c15"},{"file":"sfx\/tnt_guy_hurt_05.ogg","sha":"f45ee3f0efe81a7ea69f7ed9f9fcb0e316ad6a6a"},{"file":"sfx\/tnt_guy_kill_01.ogg","sha":"43580a4a4d084fb4d4990793864dba63092c152a"},{"file":"sfx\/tnt_guy_kill_02.ogg","sha":"3cd3c2ffd5b1117544c5cbdf7f461d78883b15b3"},{"file":"sfx\/tnt_guy_kill_03.ogg","sha":"9db959c77881d5c8a8fa60c81d948aebb892a34f"},{"file":"sfx\/tnt_guy_kill_04.ogg","sha":"cbb9fec905be047e4dc038821dc78c276d96e186"},{"file":"sfx\/tnt_guy_lead_01.ogg","sha":"4196e294e6b5f475bf2d2adb5b797f73ad1b1371"},{"file":"sfx\/tnt_guy_lead_02.ogg","sha":"2855ab2e16a8e2e9665c901b8954b162f2bd6961"},{"file":"sfx\/tnt_guy_start_vo_01.ogg","sha":"1befb093d3f87cc0893da8b5ecc8a058797002ce"},{"file":"sfx\/tnt_guy_start_vo_02.ogg","sha":"0cd1f61a216b0ff84fa2a70267aabcb1eb913a02"},{"file":"sfx\/tnt_guy_start_vo_03.ogg","sha":"745b16ba345c069354514851eb11b1a4d3b412e2"},{"file":"sfx\/tnt_guy_start_vo_04.ogg","sha":"0791467e349b4ae057a9a3c47b3ccbc4fb4af07c"},{"file":"sfx\/tnt_guy_ulti_01.ogg","sha":"4ebff8e1ac81a4f883dc67b99a9b32e9cdad6c7a"},{"file":"sfx\/tnt_guy_ulti_02.ogg","sha":"55caa9d12afb4b89490cef14bd51db9f4179674e"},{"file":"sfx\/tnt_reload_03.ogg","sha":"27ebb9415893239f7aa159221b9492c8f0b18928"},{"file":"sfx\/tnt_ulti_01.ogg","sha":"5a20d30a57891de53d2cc01692df8d5a796b720b"},{"file":"sfx\/troll_train_warn_01.ogg","sha":"26e92e6b35703909fa1e08be3ee639248242e32c"},{"file":"sfx\/trophy_rank_up_01v2.ogg","sha":"1a1b6c0b4e2b29388ba83f6294305eab7fc41377"},{"file":"sfx\/tut_speech_01.ogg","sha":"1c16dff0a00ab3e5e6be03e7fec021351481697f"},{"file":"sfx\/tutorial_enter_circle_01.ogg","sha":"a9fb3f4b1d73038d057013d321070d07ac2ea4eb"},{"file":"sfx\/ulti_button_cancel_01.ogg","sha":"473eba865ed1b5a389ad362ef221695f7dbb729c"},{"file":"sfx\/ulti_button_press_01.ogg","sha":"beab9e495cf4956d343b41fe113fc136270a51ac"},{"file":"sfx\/ulti_gain_03.ogg","sha":"a721af4312f479b99e2a7e45fee20629d3654ae6"},{"file":"sfx\/ulti_ready_01.ogg","sha":"fa47902196aedd208834dd0ce67654f261321a4a"},{"file":"sfx\/unlock_new_power_lvl_01.ogg","sha":"d5c6032b5ccc4b199189fae3f606b2a410ec3ae0"},{"file":"sfx\/upgrade_count_01.ogg","sha":"e97f481fb825f2f90a0ea8e6c53bdcf217c88934"},{"file":"sfx\/water_brock_atk_01.ogg","sha":"978bd8fb0b863d9014ebd46e99d017349b0f3312"},{"file":"sfx\/water_jess_atk_01.ogg","sha":"54f28419dadab421819482a8f0b893f92512e000"},{"file":"sfx\/water_jess_hit_01.ogg","sha":"107f302f4625047232266e424edbfd09a31308b7"},{"file":"sfx\/water_jess_turret_atk_01.ogg","sha":"db5ffd55a4fffbadf3dfb78324b7d381d7dd960c"},{"file":"sfx\/water_jess_ulti_01.ogg","sha":"ff8ad1af9360eee8efa934a80964a3a546274c23"},{"file":"sfx\/wave_boss_fight_01.ogg","sha":"0c7aaf012bf760fb9ebb84527b33c995d7179e70"},{"file":"sfx\/wave_fight_01v2.ogg","sha":"22646ed71f2078a39a1a52cc459b5add003588d3"},{"file":"sfx\/wind_gust_01.ogg","sha":"d143ad934cfa88db6a58f0f757e87ff2d741b32f"},{"file":"shader\/badge.fsh","sha":"36a6cdeb710a4637c55739abbfe06606e03619b4"},{"file":"shader\/badge.vsh","sha":"3b17fe627fafcbb9095ac3065e5c248904025694"},{"file":"shader\/ghost.fsh","sha":"dfa263bd2a88509c82707cb0c314f1688d716b01"},{"file":"shader\/ghost.vsh","sha":"1c075f951d70b1eb8ff06590978891cab0b1c322"},{"file":"shader\/hologram.fsh","sha":"813618fdf152a1c7fc323e296f581c77819891ab"},{"file":"shader\/hologram.vsh","sha":"eb3856d82380a9724df8a4d049331cef7e975c66"},{"file":"shader\/impostor.fsh","sha":"0f2f959cb0ece052799310549b0644b4dd393703"},{"file":"shader\/impostor.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline.fsh","sha":"c41ff174995908ba8824eb2e0a23f186ca05eea6"},{"file":"shader\/impostor_outline.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline_mask.fsh","sha":"f77099206e2be541156b8eca21f84466f7605838"},{"file":"shader\/impostor_outline_mask.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/impostor_outline_opaque.fsh","sha":"86c2a7b68970f154f475ca170641fe92800a94fc"},{"file":"shader\/impostor_outline_opaque.vsh","sha":"5f7c4cdf09a080e048162452f2a5e74fe36612e5"},{"file":"shader\/mask.fsh","sha":"604401258c83a9e88c66c4c325d7a1bf905485ce"},{"file":"shader\/mask.vsh","sha":"d24e0bbdb372eb8a4d73f17e95e6c09c8243047f"},{"file":"shader\/seaweed.fsh","sha":"5160f70a5b764e82c9e3174e6df6de907fa84160"},{"file":"shader\/seaweed.vsh","sha":"49922f8284a10cfd5eee3464643e5579e4c97c5c"},{"file":"shader\/shadow.fsh","sha":"d2fa6e6ac2190ea9b5bea00cdf5c04acfd87349b"},{"file":"shader\/shadow.vsh","sha":"428963e8e8b323fb153ba931385d46b716dadef3"},{"file":"shader\/uber.fsh","sha":"5160f70a5b764e82c9e3174e6df6de907fa84160"},{"file":"shader\/uber.vsh","sha":"51d83297dee2f17c2e02193d4682aab0748387ab"},{"file":"supercell_id_config.json","sha":"89be9c166ec1eb810ae3511c72f3f574f1ff8d62"}],"sha":"1660a966daa31a498bee59a78670c89ef4364b05","version":"26.165.1"}
================================================
FILE: Source/BrawlStars/Logger.cs
================================================
using System;
using System.IO;
using NLog;
namespace BrawlStars
{
public class Logger
{
public enum ErrorLevel
{
Info = 1,
Warning = 2,
Error = 3,
Debug = 4
}
#if DEBUG
private static readonly object ConsoleSync = new object();
#endif
private static NLog.Logger _logger;
public Logger()
{
Directory.CreateDirectory("Logs");
_logger = LogManager.GetCurrentClassLogger();
}
public static void Log(object message, Type type, ErrorLevel logType = ErrorLevel.Info)
{
switch (logType)
{
case ErrorLevel.Info:
{
_logger.Info(message);
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.Write($"[{logType.ToString()}] ");
Console.ResetColor();
Console.WriteLine(message);
break;
}
case ErrorLevel.Warning:
{
_logger.Warn(message);
#if DEBUG
lock (ConsoleSync)
{
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.Write($"[{logType.ToString()}] ");
Console.ResetColor();
Console.WriteLine(message);
}
#endif
break;
}
case ErrorLevel.Error:
{
_logger.Error(message);
#if DEBUG
lock (ConsoleSync)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write($"[{logType.ToString()}] ");
Console.ResetColor();
Console.WriteLine(message);
}
#endif
break;
}
case ErrorLevel.Debug:
{
#if DEBUG
_logger.Debug(message);
lock (ConsoleSync)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Write($"[{logType.ToString()}] ");
Console.ResetColor();
Console.WriteLine(message);
}
#endif
break;
}
}
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Brawler.cs
================================================
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BrawlStars.Logic
{
internal class Brawler
{
[JsonProperty("name", DefaultValueHandling = DefaultValueHandling.Ignore)] internal string name = string.Empty;
[JsonProperty("skin", DefaultValueHandling = DefaultValueHandling.Ignore)] internal string Skin = string.Empty;
[JsonProperty("hassSkin")] internal bool HassSkin;
[JsonProperty("trophies")] internal int Trophies;
[JsonProperty("highestTrophies")] internal int HighestTrophies;
[JsonProperty("power")] internal int Power;
[JsonProperty("rank")] internal int rank;
}
}
================================================
FILE: Source/BrawlStars/Logic/Calendar.cs
================================================
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BrawlStars.Logic
{
internal class Calendar
{
[JsonProperty("events")] internal List Events = new List();
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/Alliance.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using BrawlStars.Logic.Clan.StreamEntry;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan
{
public class Alliance
{
public enum Role
{
Member = 1,
Leader = 2,
Elder = 3,
CoLeader = 4
}
[JsonProperty("members")] public List Members = new List(50);
[JsonProperty("stream")] public List Stream = new List(40);
public Alliance(long id)
{
Id = id;
Name = "RetroClash";
}
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("description")] public string Description { get; set; }
[JsonProperty("highId")] public int HighId { get; set; }
[JsonProperty("lowId")] public int LowId { get; set; }
[JsonProperty("badge")] public int Badge { get; set; }
[JsonProperty("region")] public int Region { get; set; }
[JsonProperty("type")] public int Type { get; set; }
[JsonProperty("requiredScore")] public int RequiredScore { get; set; }
[JsonIgnore] public int Score => Members.Sum(m => m.Score) / 2;
[JsonIgnore] public int Online => Members.Count(m => m.IsOnline);
[JsonIgnore]
public long Id
{
get => ((long) HighId << 32) | (LowId & 0xFFFFFFFFL);
set
{
HighId = Convert.ToInt32(value >> 32);
LowId = (int) value;
}
}
public void AllianceRankingEntry(IByteBuffer packet)
{
// TODO
}
public void AllianceFullEntry(IByteBuffer packet)
{
AllianceHeaderEntry(packet);
// TODO
}
public void AllianceHeaderEntry(IByteBuffer packet)
{
// TODO
}
public AllianceInfo GetAllianceInfo(long userId)
{
return new AllianceInfo
{
Id = Id,
Name = Name,
Badge = Badge,
Role = GetRole(userId)
};
}
public void Add(AllianceMember member)
{
lock (Members)
{
var index = Members.FindIndex(x => x.Id == member.Id);
if (index == -1) Members.Add(member);
}
}
public async void Remove(long id)
{
var index = Members.FindIndex(x => x.Id == id);
if (index > -1)
{
var member = Members[index];
// If the leader leaves the clan and it's not empty, we choose a new leader
if (member.Role == (int) Role.Leader)
{
var newLeader = Members.FirstOrDefault(m => m.Id != member.Id);
if (newLeader != null)
{
var player = await newLeader.GetPlayerAsync();
newLeader.Role = (int) Role.Leader;
player.Home.AllianceInfo.Role = (int) Role.Leader;
player.Save();
}
}
lock (Members)
{
Members.RemoveAt(index);
}
}
}
public async void AddEntry(AllianceStreamEntry entry)
{
lock (Stream)
{
while (Stream.Count >= 40)
Stream.RemoveAt(0);
var max = Stream.Count == 0 ? 1 : Stream.Max(x => x.Id);
entry.Id = max == int.MaxValue ? 1 : max + 1; // If we ever reach that value... but who knows...
Stream.Add(entry);
}
foreach (var member in Members.Where(m => m.IsOnline).ToList())
{
var player = await member.GetPlayerAsync(true);
/*if (player != null)
await new AllianceStreamEntryMessage(player.Device)
{
Entry = entry
}.SendAsync();*/
}
}
/*public async void RemoveEntry(AllianceStreamEntry entry)
{
lock (Stream)
{
Stream.RemoveAll(e => e.Id == entry.Id);
}
foreach (var member in Members.Where(m => m.IsOnline).ToList())
{
var player = await member.GetPlayerAsync(true);
if (player != null)
await new AllianceStreamEntryRemovedMessage(player.Device)
{
EntryId = entry.Id
}.SendAsync();
}
}*/
public int GetRole(long id)
{
lock (Members)
{
var index = Members.FindIndex(x => x.Id == id);
return index > -1 ? Members[index].Role : 1;
}
}
public AllianceMember GetMember(long id)
{
lock (Members)
{
var index = Members.FindIndex(x => x.Id == id);
return index > -1 ? Members[index] : null;
}
}
/*public async void UpdateOnlineCount()
{
var count = Online;
foreach (var member in Members.Where(m => m.IsOnline).ToList())
{
var player = await Resources.Players.GetPlayerAsync(member.Id, true);
if (player != null)
await new AllianceOnlineStatusUpdatedMessage(player.Device)
{
Count = count
}.SendAsync();
}
}*/
public async void Save()
{
#if DEBUG
var st = new Stopwatch();
st.Start();
//await Redis.CacheAsync(this);
st.Stop();
Logger.Log($"Alliance {Id} saved in {st.ElapsedMilliseconds}ms.", GetType(), Logger.ErrorLevel.Debug);
#else
//await Redis.CacheAsync(this);
//await AllianceDb.SaveAsync(this);
#endif
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/AllianceInfo.cs
================================================
using System;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan
{
public class AllianceInfo
{
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("highId")] public int HighId { get; set; }
[JsonProperty("lowId")] public int LowId { get; set; }
[JsonProperty("badge")] public int Badge { get; set; }
[JsonProperty("role")] public int Role { get; set; }
[JsonIgnore] public bool HasAlliance => Id > 0;
[JsonIgnore]
public long Id
{
get => ((long) HighId << 32) | (LowId & 0xFFFFFFFFL);
set
{
HighId = Convert.ToInt32(value >> 32);
LowId = (int) value;
}
}
public void Reset()
{
Id = 0;
Name = string.Empty;
Badge = 0;
Role = 0;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/AllianceMember.cs
================================================
using System;
using System.Threading.Tasks;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan
{
public class AllianceMember
{
public AllianceMember(Player player, Alliance.Role role)
{
Id = player.Home.Id;
Role = (int) role;
Score = player.Home.Trophies;
Name = player.Home.Name;
}
public AllianceMember()
{
// ...
}
[JsonProperty("highId")] public int HighId { get; set; }
[JsonProperty("lowId")] public int LowId { get; set; }
[JsonProperty("role")] public int Role { get; set; }
[JsonProperty("score")] public int Score { get; set; }
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("donations")] public int Donations { get; set; }
[JsonProperty("donationsReceived")] public int DonationsReceived { get; set; }
[JsonIgnore]
public long Id
{
get => ((long) HighId << 32) | (LowId & 0xFFFFFFFFL);
set
{
HighId = Convert.ToInt32(value >> 32);
LowId = (int) value;
}
}
[JsonIgnore] public bool IsOnline => Resources.Players.ContainsKey(Id);
public void AllianceMemberEntry(IByteBuffer packet)
{
// TODO
}
public async Task GetPlayerAsync(bool onlineOnly = false)
{
return await Resources.Players.GetPlayerAsync(Id, onlineOnly);
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/AllianceStreamEntry.cs
================================================
using System;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry
{
public class AllianceStreamEntry
{
[JsonProperty("creation")] public DateTime CreationDateTime = DateTime.UtcNow;
[JsonProperty("id")] public int Id { get; set; }
[JsonProperty("type")] public int StreamEntryType { get; set; }
[JsonProperty("highId")] public int SenderHighId { get; set; }
[JsonProperty("lowId")] public int SenderLowId { get; set; }
[JsonProperty("sender_name")] public string SenderName { get; set; }
[JsonProperty("sender_role")] public int SenderRole { get; set; }
[JsonProperty("removed")] public bool IsRemoved { get; set; }
[JsonIgnore] public int AgeSeconds => (int) (DateTime.UtcNow - CreationDateTime).TotalSeconds;
[JsonIgnore]
public long SenderId
{
get => ((long) SenderHighId << 32) | (SenderLowId & 0xFFFFFFFFL);
set
{
SenderHighId = Convert.ToInt32(value >> 32);
SenderLowId = (int) value;
}
}
public virtual void Encode(IByteBuffer packet)
{
// TODO
}
public virtual void SetSender(Player player)
{
SenderName = player.Home.Name;
SenderId = player.Home.Id;
SenderRole = player.Home.AllianceInfo.Role;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/Entries/AllianceEventStreamEntry.cs
================================================
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry.Entries
{
public class AllianceEventStreamEntry : AllianceStreamEntry
{
public enum Type
{
Kick = 1,
Accepted = 2,
Join = 3,
Leave = 4,
Promote = 5,
Demote = 6
}
public AllianceEventStreamEntry()
{
StreamEntryType = 4;
}
[JsonProperty("eventType")] public Type EventType { get; set; }
[JsonProperty("targetHighId")] public int TargetHighId { get; set; }
[JsonProperty("targetLowId")] public int TargetLowId { get; set; }
[JsonProperty("targetName")] public string TargetName { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
// TODO
}
public void SetTarget(Player target)
{
TargetHighId = target.Home.HighId;
TargetLowId = target.Home.LowId;
TargetName = target.Home.Name;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/Entries/ChallengeStreamEntry.cs
================================================
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry.Entries
{
public class ChallengeStreamEntry : AllianceStreamEntry
{
public ChallengeStreamEntry()
{
StreamEntryType = 10;
}
[JsonProperty("msg")] public string Message { get; set; }
[JsonProperty("sender_score")] public int SenderScore { get; set; }
[JsonProperty("arena")] public int Arena { get; set; }
[JsonProperty("closed")] public bool Closed { get; set; }
[JsonProperty("active")] public bool Active { get; set; }
[JsonProperty("target_name")] public string TargetName { get; set; }
[JsonIgnore] public int Spectators { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
// TODO
}
public void SetTarget(Player target)
{
TargetName = target.Home.Name;
}
public override void SetSender(Player player)
{
base.SetSender(player);
SenderScore = player.Home.Trophies;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/Entries/ChatStreamEntry.cs
================================================
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry.Entries
{
public class ChatStreamEntry : AllianceStreamEntry
{
public ChatStreamEntry()
{
StreamEntryType = 2;
}
[JsonProperty("msg")] public string Message { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
packet.WriteScString(Message);
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/Entries/DonateStreamEntry.cs
================================================
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry.Entries
{
public class DonateStreamEntry : AllianceStreamEntry
{
public DonateStreamEntry()
{
StreamEntryType = 1;
}
[JsonProperty("msg")] public string Message { get; set; }
[JsonProperty("totalCapacity")] public int TotalCapacity { get; set; }
[JsonProperty("usedCapacity")] public int UsedCapacity { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
// TODO
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Clan/StreamEntry/Entries/JoinRequestAllianceStreamEntry.cs
================================================
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Clan.StreamEntry.Entries
{
public class JoinRequestAllianceStreamEntry : AllianceStreamEntry
{
public JoinRequestAllianceStreamEntry()
{
StreamEntryType = 3;
}
[JsonProperty("msg")] public string Message { get; set; }
[JsonProperty("responder_name")] public string ResponderName { get; set; }
[JsonProperty("state")] public int State { get; set; }
public override void Encode(IByteBuffer packet)
{
base.Encode(packet);
// TODO
}
public void SetTarget(Player target)
{
ResponderName = target.Home.Name;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Device.cs
================================================
using System;
using System.Diagnostics;
using System.Net;
using BrawlStars.Core.Network.Handlers;
using BrawlStars.Logic.Sessions;
using BrawlStars.Protocol;
using BrawlStars.Protocol.Messages.Server;
using DotNetty.Buffers;
namespace BrawlStars.Logic
{
public class Device
{
public Device(PacketHandler handler)
{
Handler = handler;
CurrentState = State.Disconnected;
}
public bool IsConnected => Handler.Channel.Registered;
///
/// Process a message
///
///
///
public void Process(IByteBuffer buffer)
{
var id = buffer.ReadUnsignedShort();
var length = buffer.ReadMedium();
var version = buffer.ReadUnsignedShort();
if (id < 10000 || id >= 20000) return;
if (!LogicMagicMessageFactory.Messages.ContainsKey(id))
{
Logger.Log($"Message ID: {id}, V: {version}, L: {length} is not known.", GetType(),
Logger.ErrorLevel.Warning);
//Disconnect($"Message ID: {id}, V: {version}, L: {length} is not known.");
return;
}
if (!(Activator.CreateInstance(LogicMagicMessageFactory.Messages[id], this, buffer) is PiranhaMessage
message)) return;
try
{
if (message.RequiredState != CurrentState && message.RequiredState != State.NotDefinied)
{
Logger.Log($"Message {id} is not allowed in state {CurrentState.ToString()}!", GetType(),
Logger.ErrorLevel.Warning);
Disconnect("Not allowed.");
return;
}
message.Id = id;
message.Length = length;
message.Version = version;
#if DEBUG
var st = new Stopwatch();
st.Start();
#endif
message.Decode();
message.Process();
#if DEBUG
st.Stop();
Logger.Log($"Message {id}:{length} ({message.GetType().Name}) - ({st.ElapsedMilliseconds}ms)",
GetType(),
Logger.ErrorLevel.Debug);
#endif
if (message.Save && CurrentState == State.Home) Player.Save();
}
catch (Exception exception)
{
Logger.Log($"Failed to process {id}, L: {length}: " + exception, GetType(), Logger.ErrorLevel.Error);
}
}
///
/// Returns the Ipv4 Address of the client
///
///
public string GetIp()
{
return ((IPEndPoint) Handler.Channel.RemoteAddress).Address.MapToIPv4().ToString();
}
///
/// Disconnect a client by sending OutOfSyncMessage
///
///
public async void Disconnect(string reason = null)
{
if (reason != null)
{
await new LoginFailedMessage(this)
{
Reason = reason
}.SendAsync();
}
else
{
//await new OutOfSyncMessage(this).SendAsync();
try
{
await Handler.Channel.CloseAsync();
}
catch (Exception)
{
Logger.Log("Failed to close channel", GetType(), Logger.ErrorLevel.Error);
}
}
}
#region Objects
public Session Session = new Session();
public PacketHandler Handler { get; set; }
public Player Player { get; set; }
public DateTime LastVisitHome { get; set; }
public DateTime LastSectorCommand { get; set; }
public State CurrentState { get; set; }
public enum State
{
Disconnected = 0,
Login = 1,
Battle = 2,
Home = 3,
Visit = 4,
NotDefinied = 5
}
#endregion Objects
}
}
================================================
FILE: Source/BrawlStars/Logic/Events.cs
================================================
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace BrawlStars.Logic
{
internal class Event
{
[JsonProperty("boomboxEntry")] internal string BoomBoxEntry = string.Empty;
[JsonProperty("endTime")] internal string EndTime = DateTime.UtcNow.ToString();
[JsonProperty("eventEntryName")] internal string EventEntryName = string.Empty;
[JsonProperty("functions")] internal List Functions = new List();
[JsonProperty("id")] internal int ID;
[JsonProperty("image", DefaultValueHandling = DefaultValueHandling.Ignore)]
internal string Image = string.Empty;
[JsonProperty("inboxEntryId")] internal int InboxEntryID;
[JsonProperty("localization", DefaultValueHandling = DefaultValueHandling.Ignore)]
internal string Localization = string.Empty;
[JsonProperty("name")] internal string Name = string.Empty;
[JsonProperty("notification", DefaultValueHandling = DefaultValueHandling.Ignore)]
internal string Notification = string.Empty;
[JsonProperty("sc", DefaultValueHandling = DefaultValueHandling.Ignore)]
internal string SCFile = string.Empty;
[JsonProperty("showUpcoming")] internal int ShowUpcoming = 1;
[JsonProperty("startTime")] internal string StarTime = DateTime.UtcNow.ToString();
[JsonProperty("visibleTime")] internal string VisibleTime = DateTime.UtcNow.ToString();
}
}
================================================
FILE: Source/BrawlStars/Logic/Functions.cs
================================================
using Newtonsoft.Json;
namespace BrawlStars.Logic
{
internal class Functions
{
[JsonProperty("name")] internal string Name = string.Empty;
[JsonProperty("parameters")] internal string[] Parameters;
}
}
================================================
FILE: Source/BrawlStars/Logic/Home/Home.cs
================================================
using System;
using System.Collections.Generic;
using BrawlStars.Files;
using BrawlStars.Files.Logic;
using BrawlStars.Logic.Clan;
using BrawlStars.Logic.Home.Slots;
using BrawlStars.Logic.Home.StreamEntry;
using BrawlStars.Logic.Sessions;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Home
{
public class Home
{
[JsonProperty("clanInfo")] public AllianceInfo AllianceInfo = new AllianceInfo();
/*[JsonIgnore] public ComponentManager ComponentManager = new ComponentManager();*/
/* [JsonIgnore] public GameObjectManager GameObjectManager = new GameObjectManager();*/
[JsonProperty("resources")] public ResourceSlots Resources = new ResourceSlots();
[JsonIgnore] public List Sessions = new List(50);
[JsonProperty("stream")] public List Stream = new List(40);
[JsonIgnore] public Time Time = new Time();
public Home()
{
}
public Home(long id, string token)
{
Id = id;
UserToken = token;
PreferredDeviceLanguage = "EN";
Name = "NoName";
ExpLevel = 1;
Diamonds = 10000000;
Resources.Initialize();
/* GameObjectManager.Home = this;
ComponentManager.Home = this;
GameObjectManager.LoadJson(Levels.StartingHome);*/
}
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("token")] public string UserToken { get; set; }
[JsonProperty("nameSet")] public int NameSet { get; set; }
[JsonProperty("createdIp")] public string CreatedIpAddress { get; set; }
[JsonProperty("highId")] public int HighId { get; set; }
[JsonProperty("lowId")] public int LowId { get; set; }
[JsonProperty("diamonds")] public int Diamonds { get; set; }
[JsonProperty("heroes_king")] public int HeroesKing { get; set; }
[JsonProperty("sleep_king")] public int SleepKing { get; set; }
[JsonProperty("heroes_queen")] public int HeroesQueen { get; set; }
[JsonProperty("sleep_queen")] public int SleepQueen { get; set; }
[JsonProperty("warden_heroes_lvl")] public int WardenHerolvl { get; set; }
[JsonProperty("battle_machine_heroes_lvl")] public int BattleMachineHerolvl { get; set; }
[JsonProperty("sleep_warden")] public int SleepWarden { get; set; }
[JsonProperty("champion_heroes_lvl")] public int ChampionHerolvl { get; set; }
[JsonProperty("king_skin")] public int KingSkin { get; set; }
[JsonProperty("queen_skin")] public int QueenSkin { get; set; }
[JsonProperty("warder_skin")] public int WardenSkin { get; set; }
[JsonProperty("champion_skin")] public int ChampionSkin { get; set; }
[JsonProperty("sleep_champion")] public int SleepChampion { get; set; }
[JsonProperty("warder_fly")] public int WardenFly { get; set; }
[JsonProperty("language")] public string PreferredDeviceLanguage { get; set; }
[JsonProperty("fcbId")] public string FacebookId { get; set; }
[JsonProperty("totalSessions")] public int TotalSessions { get; set; }
[JsonProperty("totalPlayTimeSeconds")] public int TotalPlayTimeSeconds { get; set; }
[JsonProperty("lastSave")] public DateTime LastSaveTime { get; set; }
///
/// 1 = Builderbase, 0 = Home Village
///
[JsonProperty("state")]
public int State { get; set; }
// Player Stats
[JsonProperty("expLevel")] public int ExpLevel { get; set; }
[JsonProperty("expPoints")] public int ExpPoints { get; set; }
[JsonProperty("trophies")] public int Trophies { get; set; }
[JsonProperty("builder_trophies")] public int BTrophies { get; set; }
[JsonIgnore]
public long Id
{
get => ((long) HighId << 32) | (LowId & 0xFFFFFFFFL);
set
{
HighId = Convert.ToInt32(value >> 32);
LowId = (int) value;
}
}
/* public void AddExpPoints(int expPoints)
{
ExpPoints += expPoints;
while (true)
{
var data = Csv.Tables.Get(Csv.Files.ExperienceLevels).GetDataWithId(ExpLevel - 1);
if (data == null) return;
if (ExpPoints < data.ExpPoints) return;
ExpLevel++;
ExpPoints -= data.ExpPoints;
if (ExpPoints >= data.ExpPoints)
continue;
break;
}
}*/
/*public void Tick()
{
GameObjectManager.Tick();
}*/
/* public void FastForward(int seconds)
{
GameObjectManager.FastForward(seconds);
}*/
public void Reset(bool notResetGameObjects = false)
{
Diamonds = 10000000;
Resources.Initialize();
Name = "NoName";
NameSet = 0;
ExpLevel = 1;
ExpPoints = 0;
Trophies = 0;
State = 0;
/* if (!notResetGameObjects)
GameObjectManager.LoadJson(Levels.StartingHome);*/
}
#region Resources
public bool UseGold(int amount)
{
var gold = Resources.GetById(5000001).Count;
if (gold - amount < 0) return false;
Resources.Remove(5000001, amount);
return true;
}
public bool UseOwcAny(int amount)
{
var owcAny = Resources.GetById(5000002).Count;
if (owcAny - amount < 0) return false;
Resources.Remove(5000002, amount);
return true;
}
public bool UseOwcRareOrBetter(int amount)
{
var owcRare = Resources.GetById(5000003).Count;
if (owcRare - amount < 0) return false;
Resources.Remove(5000003, amount);
return true;
}
public bool UseowcEpicOrBetter(int amount)
{
var owcEpic = Resources.GetById(5000004).Count;
if (owcEpic - amount < 0) return false;
Resources.Remove(5000004, amount);
return true;
}
public bool UseDust(int amount)
{
var dust = Resources.GetById(5000005).Count;
if (dust - amount < 0) return false;
Resources.Remove(5000005, amount);
return true;
}
public bool UseUpgradium(int amount)
{
var upgrdium = Resources.GetById(5000006).Count;
if (upgrdium - amount < 0) return false;
Resources.Remove(5000006, amount);
return true;
}
public bool UseBolts(int amount)
{
var bolts = Resources.GetById(5000007).Count;
if (bolts - amount < 0) return false;
Resources.Remove(5000007, amount);
return true;
}
public bool UseHeroLvlUpMaterial(int amount)
{
var heroUpMate = Resources.GetById(5000008).Count;
if (heroUpMate - amount < 0) return false;
Resources.Remove(5000008, amount);
return true;
}
public bool UseFirstWins(int amount)
{
var firstWins = Resources.GetById(5000009).Count;
if (firstWins - amount < 0) return false;
Resources.Remove(5000009, amount);
return true;
}
public bool UseDiamonds(int amount)
{
if (Diamonds - amount < 0) return false;
Diamonds -= amount;
return true;
}
#endregion
}
}
================================================
FILE: Source/BrawlStars/Logic/Home/Slots/DataSlots.cs
================================================
using System.Collections.Generic;
using BrawlStars.Logic.Home.Slots.Items;
using DotNetty.Buffers;
namespace BrawlStars.Logic.Home.Slots
{
public class DataSlots : List
{
///
/// Add a new dataslot or replace it
///
///
///
public void Set(int id, int count)
{
var index = FindIndex(x => x.Id == id);
if (index > -1)
{
var dataslot = this[index];
dataslot.Count = count;
}
else
{
Add(new DataSlot
{
Id = id,
Count = count
});
}
}
///
/// Add or create a new dataslot
///
///
///
public void Add(int id, int count)
{
var index = FindIndex(x => x.Id == id);
if (index > -1)
{
var dataslot = this[index];
dataslot.Count += count;
}
else
{
Add(new DataSlot
{
Id = id,
Count = count
});
}
}
///
/// Remove from a dataslot
///
///
///
public void Remove(int id, int count)
{
var index = FindIndex(x => x.Id == id);
if (index > -1)
{
var dataslot = this[index];
dataslot.Count -= count;
}
}
///
/// Get the count of a dataslot by it's id
///
///
///
public int GetCount(int id)
{
var index = FindIndex(x => x.Id == id);
return index > -1 ? this[index].Count : 0;
}
///
/// Get a dataslot by it's id
///
///
///
public DataSlot GetById(int id)
{
var index = FindIndex(x => x.Id == id);
return index > -1 ? this[index] : null;
}
///
/// Encodes all dataslots
///
///
public void Encode(IByteBuffer buffer)
{
buffer.WriteInt(Count);
ForEach(x => x.Encode(buffer));
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Home/Slots/Items/DataSlot.cs
================================================
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Home.Slots.Items
{
public class DataSlot
{
[JsonProperty("id")] public int Id { get; set; }
[JsonProperty("cnt")] public int Count { get; set; }
///
/// Encodes this dataslot
///
///
public virtual void Encode(IByteBuffer buffer)
{
buffer.WriteInt(Id);
buffer.WriteInt(Count);
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Home/Slots/ResourceSlots.cs
================================================
namespace BrawlStars.Logic.Home.Slots
{
public class ResourceSlots : DataSlots
{
///
/// Sets the default resources to this dataslots
///
public void InitializeDefault()
{
Set(5000001, 100); // Gold
Set(5000002, 0); // owcAny
Set(5000003, 0); // DarkElixir
Set(5000007, 1000); // Dust
Set(5000008, 1000); // Upgradium
}
///
/// Sets the max resources to this dataslots
///
public void Initialize()
{
Set(5000001, 1000000000);
Set(5000002, 1000000000);
Set(5000003, 10000000);
Set(5000007, 1000000000);
Set(5000008, 1000000000);
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Home/StreamEntry/AvatarStreamEntry.cs
================================================
using System;
using DotNetty.Buffers;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Home.StreamEntry
{
public class AvatarStreamEntry
{
[JsonProperty("creation")] public DateTime CreationDateTime = DateTime.UtcNow;
[JsonProperty("id")] public int Id { get; set; }
[JsonProperty("type")] public int StreamEntryType { get; set; }
[JsonProperty("highId")] public int SenderHighId { get; set; }
[JsonProperty("lowId")] public int SenderLowId { get; set; }
[JsonProperty("sender_name")] public string SenderName { get; set; }
[JsonProperty("removed")] public bool IsRemoved { get; set; }
[JsonProperty("new")] public bool IsNew { get; set; }
[JsonIgnore] public int AgeSeconds => (int) (DateTime.UtcNow - CreationDateTime).TotalSeconds;
[JsonIgnore]
public long SenderId
{
get => ((long) SenderHighId << 32) | (SenderLowId & 0xFFFFFFFFL);
set
{
SenderHighId = Convert.ToInt32(value >> 32);
SenderLowId = (int) value;
}
}
public virtual void Encode(IByteBuffer packet)
{
// TODO
}
public virtual void SetSender(Player player)
{
SenderName = player.Home.Name;
SenderId = player.Home.Id;
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Player.cs
================================================
using System;
using BrawlStars.Database;
using BrawlStars.Files.Logic;
using BrawlStars.Utilities.Netty;
using BrawlStars.Utilities.Utils;
using DotNetty.Buffers;
using Newtonsoft.Json;
using BrawlStars.Files;
namespace BrawlStars.Logic
{
public class Player
{
public Player(long id)
{
Home = new Home.Home(id, GameUtils.GenerateToken);
}
public Player()
{
// Player.
}
public Home.Home Home { get; set; }
[JsonIgnore] public Device Device { get; set; }
public void RankingEntry(IByteBuffer packet)
{
// TODO
}
public void LogicClientHome(IByteBuffer packet)
{
}
public void LogicClientAvatar(IByteBuffer packet)
{
}
/*public async void AddEntry(AvatarStreamEntry entry)
{
lock (Home.Stream)
{
while (Home.Stream.Count >= 40)
Home.Stream.RemoveAt(0);
var max = Home.Stream.Count == 0 ? 1 : Home.Stream.Max(x => x.Id);
entry.Id = max == int.MaxValue ? 1 : max + 1; // If we ever reach that value... but who knows...
Home.Stream.Add(entry);
}
await new AvatarStreamEntryMessage(Device)
{
Entry = entry
}.SendAsync();
}*/
///
/// Validates this session
///
public void ValidateSession()
{
var session = Device.Session;
session.Duration = (int) DateTime.UtcNow.Subtract(session.SessionStart).TotalSeconds;
Home.TotalPlayTimeSeconds += session.Duration;
while (Home.Sessions.Count >= 50) Home.Sessions.RemoveAt(0);
Home.Sessions.Add(session);
}
public async void Save()
{
Home.LastSaveTime = DateTime.UtcNow;
/*#if DEBUG
var st = new Stopwatch();
st.Start();
Resources.ObjectCache.CachePlayer(this);
await PlayerDb.SaveAsync(this);
st.Stop();
Logger.Log($"Player {Home.Id} saved in {st.ElapsedMilliseconds}ms.", GetType(), ErrorLevel.Debug);
#else*/
Resources.ObjectCache.CachePlayer(this);
await PlayerDb.SaveAsync(this);
//#endif
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Sessions/Location.cs
================================================
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Sessions
{
public class Location
{
[JsonProperty("country")] public string CountryName { get; set; }
[JsonProperty("countryCode")] public string CountryCode { get; set; }
[JsonProperty("city")] public string City { get; set; }
public static async Task GetByIpAsync(string ip)
{
try
{
//TODO: should check any local ip
if (ip == "127.0.0.1" || ip.StartsWith("192")) return null;
using (var client = new HttpClient())
{
var json = await client.GetStringAsync("http://ip-api.com/json/" + ip);
return JsonConvert.DeserializeObject(json);
}
}
catch (Exception)
{
Logger.Log($"Couldn't track location of {ip}", null, Logger.ErrorLevel.Error);
return null;
}
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Sessions/Session.cs
================================================
using System;
using Newtonsoft.Json;
namespace BrawlStars.Logic.Sessions
{
public class Session
{
[JsonProperty("location")] public Location Location = new Location();
[JsonIgnore] public DateTime SessionStart = DateTime.UtcNow;
[JsonProperty("ip")] public string Ip { get; set; }
[JsonProperty("duration")] public int Duration { get; set; }
[JsonProperty("startDate")] public string StartDate { get; set; }
[JsonProperty("deviceCode")] public string DeviceCode { get; set; }
[JsonProperty("gameVersion")] public string GameVersion { get; set; }
[JsonProperty("sessionId")] public string SessionId { get; set; }
}
}
================================================
FILE: Source/BrawlStars/Logic/Time.cs
================================================
using System;
namespace BrawlStars.Logic
{
public class Time
{
public int SubTick { get; set; }
public int TotalMilliseconds => 16 * SubTick;
public int TotalSeconds => SubTick > 0 ? Math.Max((int) (ulong) (16L * SubTick / 1000) + 1, 1) : 0;
public static long GetSecondsInTicks(int seconds)
{
return (long) (seconds * 62.5);
}
}
}
================================================
FILE: Source/BrawlStars/Logic/Timer.cs
================================================
using System;
namespace BrawlStars.Logic
{
public class Timer
{
public int EndSubTick;
public void StartTimer(Time time, int seconds)
{
EndSubTick = time.SubTick + (int) Time.GetSecondsInTicks(seconds);
}
public void IncreaseTimer(int seconds)
{
EndSubTick += (int) Time.GetSecondsInTicks(seconds);
}
public void StopTimer()
{
EndSubTick = -1;
}
public void FastForward(int seconds)
{
EndSubTick -= (int) Time.GetSecondsInTicks(seconds);
}
public void FastForwardSubTicks(int subTick)
{
if (EndSubTick > 0) EndSubTick -= subTick;
}
public int GetRemainingSeconds(Time time)
{
var subTicks = EndSubTick - time.SubTick;
return subTicks > 0 ? Math.Max((int) (16L * subTicks / 1000) + 1, 1) : 0;
}
public int GetRemainingMilliseconds(Time time)
{
var subTicks = EndSubTick - time.SubTick;
return subTicks > 0 ? 16 * subTicks : 0;
}
public void AdjustSubTick(Time time)
{
EndSubTick -= time.SubTick;
if (EndSubTick < 0) EndSubTick = 0;
}
}
}
================================================
FILE: Source/BrawlStars/NLog.config
================================================
================================================
FILE: Source/BrawlStars/Program.cs
================================================
using System;
using System.Drawing;
using System.Threading;
using BrawlStars.Utilities.Utils;
namespace BrawlStars
{
public static class Program
{
public static int Version { get; set; }
private static void Main()
{
Console.Title = $"By Mr Vitalik & PhoenixFire - {DateTime.Now.Year} ©";
Resources.Initialize();
if (ServerUtils.IsLinux())
{
Thread.Sleep(Timeout.Infinite);
}
else
{
Logger.Log("Press any key to shutdown the server.", null);
Console.Read();
}
Shutdown();
}
public static async void Shutdown()
{
Console.WriteLine("Shutting down...");
await Resources.Netty.Shutdown();
try
{
Console.WriteLine("Saving players...");
lock (Resources.Players.SyncObject)
{
foreach (var player in Resources.Players.Values) player.Save();
}
Console.WriteLine("All players saved.");
}
catch (Exception)
{
Console.WriteLine("Couldn't save all players.");
}
await Resources.Netty.ShutdownWorkers();
}
public static void Exit()
{
Environment.Exit(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Commands/Server/LogicChangeAvatarName.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Commands.Server
{
public class LogicChangeAvatarName : LogicCommand
{
public LogicChangeAvatarName(Device device) : base(device)
{
Type = 3;
}
public string Name { get; set; }
public override void Encode()
{
Data.WriteScString(Name);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Commands/Server/LogicDiamondsAddedCommand.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Commands.Server
{
public class LogicDiamondsAddedCommand : LogicCommand
{
public LogicDiamondsAddedCommand(Device device) : base(device)
{
Type = 7;
}
public int Diamonds { get; set; }
public override void Encode()
{
Data.WriteBoolean(false); // AllianceGift
Data.WriteInt(Diamonds);
Data.WriteInt(0);
Data.WriteInt(0);
Data.WriteInt(0);
Data.WriteScString("GPA.0000-0000-0000-00000"); // Transaction Id
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/LogicCommand.cs
================================================
using BrawlStars.Logic;
using DotNetty.Buffers;
namespace BrawlStars.Protocol
{
public class LogicCommand
{
public LogicCommand(Device device)
{
Device = device;
Data = Unpooled.Buffer();
}
public LogicCommand(Device device, IByteBuffer buffer)
{
Device = device;
Reader = buffer;
Data = Unpooled.Buffer();
}
public IByteBuffer Data { get; set; }
public Device Device { get; set; }
public int Type { get; set; }
public int Tick { get; set; }
public IByteBuffer Reader { get; set; }
public virtual void Decode()
{
Tick = Reader.ReadInt();
}
public virtual void Encode()
{
}
public virtual void Process()
{
}
public LogicCommand Handle()
{
Encode();
return this;
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/LogicCommandManager.cs
================================================
using System;
using System.Collections.Generic;
namespace BrawlStars.Protocol
{
public class LogicCommandManager
{
public static Dictionary Commands;
static LogicCommandManager()
{
Commands = new Dictionary
{
};
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/LogicMagicMessageFactory.cs
================================================
using System;
using System.Collections.Generic;
using BrawlStars.Protocol.Messages.Client;
using BrawlStars.Protocol.Messages.Client.Alliance;
using BrawlStars.Protocol.Messages.Client.Home;
using BrawlStars.Protocol.Messages.Client.Login;
using BrawlStars.Protocol.Messages.Server;
namespace BrawlStars.Protocol
{
public class LogicMagicMessageFactory
{
public static Dictionary Messages;
static LogicMagicMessageFactory()
{
Messages = new Dictionary
{
{10100, typeof(ClientHelloMessage)},
{10101, typeof(LoginMessage)},
{10108, typeof(KeepAliveMessage)},
{10110, typeof(AnalyticsEventMessage)},
{10212, typeof(SetNameMessage)},
{10309, typeof(ClanInviteLinkMessage)},
{14102, typeof(EndClientTurnMessage)},
{14109, typeof(ExitMessage)},
{14110, typeof(BattleEndMessage)},
{14113, typeof(ProfileMessage)},
{14302, typeof(OpenClubMessage)},
{14315, typeof(ChatToClubMessage)},
{14350, typeof(CreateGameroomMessage)},
{14353, typeof(QuitRoomMessage)},
{14354, typeof(ChangeBrawlerInRoomMessage)},
{14363, typeof(ChangeMapMessage)},
{14366, typeof(ClientActionMessage)},
{14372, typeof(UseGadgetInRoomMessage)},
{14600, typeof(ChangeNameMessage)},
{14777, typeof(DoNotDistrubMessage)}
};
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Alliance/ChatToClubMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using System;
using System.Linq;
using BrawlStars.Utilities;
using System.Runtime.InteropServices;
using Google.Protobuf.WellKnownTypes;
namespace BrawlStars.Protocol.Messages.Client.Alliance
{
class ChatToClubMessage : PiranhaMessage
{
public ChatToClubMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public string Messages { get; set; }
private ChatServerMessage Chat { get; set; }
public override void Decode()
{
Messages = Reader.ReadScString();
}
public override async void Process()
{
string Botmsg = string.Empty;
if (Messages.StartsWith("/"))
{
var cmd = Messages.Split(' ');
var cmdType = cmd[0];
var cmdValue = 0;
if (cmd.Length > 1)
if (Messages.Split(' ')[1].Any(char.IsDigit))
int.TryParse(Messages.Split(' ')[1], out cmdValue);
switch (cmdType)
{
case "/status":
Resources.MessageTick++;
Botmsg = $"Server status:\nBuild version: 1.2(for 26.165)\nFingerprint SHA:\n{ Resources.Fingerprint.Sha}\nUsed Ram: " +
$"{System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / (1024 * 1024) + " MB"}";
Resources.ChatMessage = Messages;
await new ChatServerMessage(Device)
{
Message = Resources.ChatMessage
}.SendAsync();
Resources.MessageTick++;
await new ChatBotServerMessage(Device)
{
Message =
Botmsg
}.SendAsync();
break;
case "/about":
Resources.MessageTick++;
Botmsg = "By VitalikObject and PhoenixFire";
Resources.ChatMessage = Messages;
await new ChatServerMessage(Device)
{
Message = Resources.ChatMessage
}.SendAsync();
Resources.MessageTick++;
await new ChatBotServerMessage(Device)
{
Message =
Botmsg
}.SendAsync();
break;
case "/reset":
Resources.Gems = 99999;
Resources.Gold = 99999;
Resources.Tickets = 99999;
await new LoginFailedMessage(Device)
{
Reason =
"You should re-enter the game to apply changes"
}.SendAsync();
break;
case "/help":
Resources.MessageTick++;
Resources.ChatMessage = Messages;
await new ChatServerMessage(Device)
{
Message = Resources.ChatMessage
}.SendAsync();
Resources.MessageTick++;
Botmsg = "/status - shows server status\n/about - authors\n/reset - set resources by default";
await new ChatBotServerMessage(Device)
{
Message =
Botmsg
}.SendAsync();
break;
}
}
else
{
Resources.ChatMessage = Messages;
Resources.MessageTick++;
await new ChatServerMessage(Device)
{
Message = Resources.ChatMessage
}.SendAsync();
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Alliance/ClanInviteLinkMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server.Alliance;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client.Alliance
{
class ClanInviteLinkMessage : PiranhaMessage
{
public ClanInviteLinkMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override async void Process()
{
await new GenrateClanInviteLinkMessage(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/AnalyticsEventMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class AnalyticsEventMessage : PiranhaMessage
{
public AnalyticsEventMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public string EventName { get; set; }
public string Event { get; set; }
public override void Decode()
{
EventName = Reader.ReadScString();
Event = Reader.ReadScString();
}
public override void Process()
{
Logger.Log($"Name: {EventName}, Event: {Event}", GetType(), Logger.ErrorLevel.Debug);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/BattleEndMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using Colorful;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class BattleEndMessage : PiranhaMessage
{
public BattleEndMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public int Rank { get; set; }
private int Bot1 { get; set; }
private int Bot2 { get; set; }
private int Bot3 { get; set; }
private int Bot4 { get; set; }
private int Bot5 { get; set; }
private string Bot1N { get; set; }
private string Bot2N { get; set; }
private string Bot3N { get; set; }
private string Bot4N { get; set; }
private string Bot5N { get; set; }
private int GameType { get; set; }
private int Team { get; set; }
public override void Decode()
{
GameType = Reader.ReadVInt();
Reader.ReadVInt();
Rank = Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Team = Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Reader.ReadScString(); //Your Name
Reader.ReadVInt();
Bot1 = Reader.ReadVInt(); //bot brawer
Reader.ReadVInt();
Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Bot1N = Reader.ReadScString();
Reader.ReadVInt();
Bot2 = Reader.ReadVInt(); //bot brawer
Reader.ReadVInt();
Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Bot2N = Reader.ReadScString();
Reader.ReadVInt();
Bot3 = Reader.ReadVInt(); //bot brawer
Reader.ReadVInt();
Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Bot3N = Reader.ReadScString();
Reader.ReadVInt();
Bot4 = Reader.ReadVInt(); //bot brawer
Reader.ReadVInt();
Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Bot4N = Reader.ReadScString();
Reader.ReadVInt();
Bot5 = Reader.ReadVInt(); //bot brawer
Reader.ReadVInt();
Reader.ReadVInt(); //red or blue
Reader.ReadVInt();
Bot5N = Reader.ReadScString();
}
public override async void Process()
{
if (Rank != 0)
{
await new Battle_Result(Device)
{
Rank = Rank
}.SendAsync();
}
else
{
if (Team == 0)
{
await new Battle2_Result(Device)
{
Result = GameType,
Bot1Brawler = Bot1,
Bot2Brawler = Bot2,
Bot3Brawler = Bot3,
Bot4Brawler = Bot4,
Bot5Brawler = Bot5,
Bot1Name = Bot1N,
Bot2Name = Bot2N,
Bot3Name = Bot3N,
Bot4Name = Bot4N,
Bot5Name = Bot5N
}.SendAsync();
}
else
{
await new Battle2_Result(Device)
{
Result = GameType,
Bot1Brawler = Bot4,
Bot2Brawler = Bot5,
Bot3Brawler = Bot3,
Bot4Brawler = Bot1,
Bot5Brawler = Bot2,
Bot1Name = Bot4N,
Bot2Name = Bot5N,
Bot3Name = Bot3N,
Bot4Name = Bot1N,
Bot5Name = Bot2N
}.SendAsync();
}
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/ChangeBrawlerInRoomMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using System;
namespace BrawlStars.Protocol.Messages.Client
{
class ChangeBrawlerInRoomMessage : PiranhaMessage
{
public ChangeBrawlerInRoomMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
private int BrawlerSkinId { get; set; }
private int Unk { get; set; }
public override void Decode()
{
Unk = Reader.ReadVInt();
Reader.ReadVInt();
BrawlerSkinId = Reader.ReadVInt();
}
public override async void Process()
{
if(Unk != 23)
{
Resources.Skin = BrawlerSkinId;
switch (BrawlerSkinId)
{
case 0:
Resources.Brawler = 0;
break;
case 29:
Resources.Brawler = 0;
break;
case 52:
Resources.Brawler = 0;
break;
case 122:
Resources.Brawler = 0;
break;
case 159:
Resources.Brawler = 0;
break;
case 14:
Resources.Brawler = 8;
break;
case 15:
Resources.Brawler = 8;
break;
case 60:
Resources.Brawler = 8;
break;
case 79:
Resources.Brawler = 8;
break;
case 148:
Resources.Brawler = 8;
break;
case 1:
Resources.Brawler = 1;
break;
case 2:
Resources.Brawler = 1;
break;
case 69:
Resources.Brawler = 1;
break;
case 103:
Resources.Brawler = 1;
break;
case 135:
Resources.Brawler = 1;
break;
case 3:
Resources.Brawler = 2;
break;
case 25:
Resources.Brawler = 2;
break;
case 64:
Resources.Brawler = 2;
break;
case 102:
Resources.Brawler = 2;
break;
case 178:
Resources.Brawler = 2;
break;
case 13:
Resources.Brawler = 7;
break;
case 44:
Resources.Brawler = 7;
break;
case 47:
Resources.Brawler = 7;
break;
case 123:
Resources.Brawler = 7;
break;
case 162:
Resources.Brawler = 7;
break;
case 174:
Resources.Brawler = 7;
break;
case 4:
Resources.Brawler = 3;
break;
case 5:
Resources.Brawler = 3;
break;
case 58:
Resources.Brawler = 3;
break;
case 72:
Resources.Brawler = 3;
break;
case 91:
Resources.Brawler = 3;
break;
case 6:
Resources.Brawler = 9;
break;
case 56:
Resources.Brawler = 9;
break;
case 57:
Resources.Brawler = 9;
break;
case 97:
Resources.Brawler = 9;
break;
case 160:
Resources.Brawler = 9;
break;
case 22:
Resources.Brawler = 14;
break;
case 94:
Resources.Brawler = 14;
break;
case 98:
Resources.Brawler = 14;
break;
case 99:
Resources.Brawler = 14;
break;
case 163:
Resources.Brawler = 14;
break;
case 86:
Resources.Brawler = 22;
break;
case 106:
Resources.Brawler = 27;
break;
case 109:
Resources.Brawler = 27;
break;
case 143:
Resources.Brawler = 27;
break;
case 119:
Resources.Brawler = 30;
break;
case 167:
Resources.Brawler = 30;
break;
case 7:
Resources.Brawler = 10;
break;
case 28:
Resources.Brawler = 10;
break;
case 30:
Resources.Brawler = 10;
break;
case 128:
Resources.Brawler = 10;
break;
case 12:
Resources.Brawler = 6;
break;
case 27:
Resources.Brawler = 6;
break;
case 59:
Resources.Brawler = 6;
break;
case 90:
Resources.Brawler = 6;
break;
case 92:
Resources.Brawler = 6;
break;
case 116:
Resources.Brawler = 6;
break;
case 21:
Resources.Brawler = 13;
break;
case 71:
Resources.Brawler = 13;
break;
case 140:
Resources.Brawler = 13;
break;
case 77:
Resources.Brawler = 24;
break;
case 9:
Resources.Brawler = 4;
break;
case 26:
Resources.Brawler = 4;
break;
case 68:
Resources.Brawler = 4;
break;
case 130:
Resources.Brawler = 4;
break;
case 171:
Resources.Brawler = 4;
break;
case 34:
Resources.Brawler = 18;
break;
case 70:
Resources.Brawler = 18;
break;
case 158:
Resources.Brawler = 18;
break;
case 41:
Resources.Brawler = 19;
break;
case 61:
Resources.Brawler = 19;
break;
case 88:
Resources.Brawler = 19;
break;
case 165:
Resources.Brawler = 19;
break;
case 73:
Resources.Brawler = 25;
break;
case 93:
Resources.Brawler = 25;
break;
case 104:
Resources.Brawler = 25;
break;
case 132:
Resources.Brawler = 25;
break;
case 134:
Resources.Brawler = 25;
break;
case 142:
Resources.Brawler = 34;
break;
case 176:
Resources.Brawler = 34;
break;
case 23:
Resources.Brawler = 15;
break;
case 108:
Resources.Brawler = 15;
break;
case 120:
Resources.Brawler = 15;
break;
case 147:
Resources.Brawler = 15;
break;
case 24:
Resources.Brawler = 16;
break;
case 179:
Resources.Brawler = 16;
break;
case 42:
Resources.Brawler = 20;
break;
case 45:
Resources.Brawler = 20;
break;
case 125:
Resources.Brawler = 20;
break;
case 81:
Resources.Brawler = 26;
break;
case 146:
Resources.Brawler = 26;
break;
case 114:
Resources.Brawler = 29;
break;
case 139:
Resources.Brawler = 29;
break;
case 156:
Resources.Brawler = 36;
break;
case 18:
Resources.Brawler = 11;
break;
case 50:
Resources.Brawler = 11;
break;
case 63:
Resources.Brawler = 11;
break;
case 75:
Resources.Brawler = 11;
break;
case 173:
Resources.Brawler = 11;
break;
case 32:
Resources.Brawler = 17;
break;
case 111:
Resources.Brawler = 17;
break;
case 145:
Resources.Brawler = 17;
break;
case 67:
Resources.Brawler = 21;
break;
case 117:
Resources.Brawler = 21;
break;
case 172:
Resources.Brawler = 21;
break;
case 127:
Resources.Brawler = 32;
break;
case 137:
Resources.Brawler = 32;
break;
case 121:
Resources.Brawler = 31;
break;
case 152:
Resources.Brawler = 31;
break;
case 157:
Resources.Brawler = 37;
break;
case 177:
Resources.Brawler = 37;
break;
case 10:
Resources.Brawler = 5;
break;
case 11:
Resources.Brawler = 5;
break;
case 96:
Resources.Brawler = 5;
break;
case 19:
Resources.Brawler = 12;
break;
case 20:
Resources.Brawler = 12;
break;
case 49:
Resources.Brawler = 12;
break;
case 95:
Resources.Brawler = 12;
break;
case 100:
Resources.Brawler = 12;
break;
case 101:
Resources.Brawler = 12;
break;
case 62:
Resources.Brawler = 23;
break;
case 110:
Resources.Brawler = 23;
break;
case 126:
Resources.Brawler = 23;
break;
case 131:
Resources.Brawler = 23;
break;
case 113:
Resources.Brawler = 28;
break;
case 118:
Resources.Brawler = 28;
break;
case 155:
Resources.Brawler = 35;
break;
case 180:
Resources.Brawler = 35;
break;
}
switch (Resources.Brawler)
{
case 0: //Shelly
Resources.StarPower = 76;
Resources.Gadget = 255;
break;
case 1: //Colt
Resources.StarPower = 77;
Resources.Gadget = 273;
break;
case 2: //Bull
Resources.StarPower = 78;
Resources.Gadget = 272;
break;
case 3: //Brock
Resources.StarPower = 79;
Resources.Gadget = 245;
break;
case 4: //Rico
Resources.StarPower = 80;
Resources.Gadget = 246;
break;
case 5: //Spike
Resources.StarPower = 81;
Resources.Gadget = 247;
break;
case 6: //Barley
Resources.StarPower = 82;
Resources.Gadget = 273;
break;
case 7: //Jessie
Resources.StarPower = 83;
Resources.Gadget = 251;
break;
case 8: //Nita
Resources.StarPower = 84;
Resources.Gadget = 249;
break;
case 9: //Dynamike
Resources.StarPower = 85;
Resources.Gadget = 258;
break;
case 10: //El Primo
Resources.StarPower = 86;
Resources.Gadget = 264;
break;
case 11: //Mortis
Resources.StarPower = 87;
Resources.Gadget = 265;
break;
case 12: //Crow
Resources.StarPower = 88;
Resources.Gadget = 243;
break;
case 13: //Poco
Resources.StarPower = 89;
Resources.Gadget = 267;
break;
case 14: //Bo
Resources.StarPower = 90;
Resources.Gadget = 263;
break;
case 15: //Piper
Resources.StarPower = 91;
Resources.Gadget = 268;
break;
case 16: //PAM
Resources.StarPower = 92;
Resources.Gadget = 257;
break;
case 17: //Tara
Resources.StarPower = 93;
Resources.Gadget = 266;
break;
case 18: //Darryl
Resources.StarPower = 94;
Resources.Gadget = 260;
break;
case 19: //Penny
Resources.StarPower = 99;
Resources.Gadget = 248;
break;
case 20: //Frank
Resources.StarPower = 104;
Resources.Gadget = 261;
break;
case 21: //Gene
Resources.StarPower = 109;
Resources.Gadget = 252;
break;
case 22: //Tick
Resources.StarPower = 114;
Resources.Gadget = 253;
break;
case 23: //Leon
Resources.StarPower = 119;
Resources.Gadget = 276;
break;
case 24: //Rosa
Resources.StarPower = 124;
Resources.Gadget = 242;
break;
case 25: //Carl
Resources.StarPower = 129;
Resources.Gadget = 262;
break;
case 26: //Bibi
Resources.StarPower = 134;
Resources.Gadget = 275;
break;
case 27: //8-Bit
Resources.StarPower = 168;
Resources.Gadget = 259;
break;
case 28: //Sandy
Resources.StarPower = 186;
Resources.Gadget = 270;
break;
case 29: //Bea
Resources.StarPower = 192;
Resources.Gadget = 271;
break;
case 30: //EMZ
Resources.StarPower = 198;
Resources.Gadget = 274;
break;
case 31: //Mr. P
Resources.StarPower = 204;
Resources.Gadget = 269;
break;
case 32: //Max
Resources.StarPower = 210;
Resources.Gadget = 254;
break;
case 34: //Jacky
Resources.StarPower = 222;
Resources.Gadget = 256;
break;
case 37: //Sprout
Resources.StarPower = 240;
Resources.Gadget = 244;
break;
}
await new Gameroom_Data(Device).SendAsync();
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/ChangeMapMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using System;
namespace BrawlStars.Protocol.Messages.Client
{
class ChangeMapMessage : PiranhaMessage
{
public ChangeMapMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public int MapId { get; set; }
public override void Decode()
{
Reader.ReadVInt();
MapId = Reader.ReadVInt();
}
public override async void Process()
{
Resources.Map = MapId;
await new Gameroom_Data(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/ChangeNameMessage.cs
================================================
using BrawlStars.Core;
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using System;
using System.Threading.Tasks;
namespace BrawlStars.Protocol.Messages.Client
{
class ChangeNameMessage : PiranhaMessage
{
public ChangeNameMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public static string Name { get; set; }
public override void Decode()
{
Name = Reader.ReadScString();
}
public override async void Process()
{
await new LoginFailedMessage(Device)
{
Reason =
"Not implemented yet"
}.SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/ClientActionMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using Colorful;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class ClientActionMessage : PiranhaMessage
{
public ClientActionMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
private int Unk { get; set; }
public override void Decode()
{
Unk = Reader.ReadVInt();
}
public override async void Process()
{
if(Unk == 4)
{
await new LoginFailedMessage(Device)
{
Reason =
"Not implemented yet"
}.SendAsync();
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/CreateGameroomMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using Colorful;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class CreateGameroomMessage : PiranhaMessage
{
public CreateGameroomMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public int MapId { get; set; }
public override void Decode()
{
Reader.ReadVInt();
MapId = Reader.ReadVInt();
}
public override async void Process()
{
switch(MapId)
{
case 1:
Resources.Map = 7;
break;
case 2:
Resources.Map = 32;
break;
case 3:
Resources.Map = 17;
break;
case 4:
Resources.Map = 0;
break;
case 5:
Resources.Map = 38;
break;
case 6:
Resources.Map = 24;
break;
case 7:
Resources.Map = 202;
break;
case 8:
Resources.Map = 97;
break;
case 9:
Resources.Map = 167;
break;
}
Resources.Room = 1;
await new Gameroom_Data(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/DoNotDistrubMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class DoNotDistrubMessage : PiranhaMessage
{
public DoNotDistrubMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
private bool NotDistrub { get; set; }
public override void Decode()
{
NotDistrub = Reader.ReadBoolean();
}
public override async void Process()
{
await new DoNotDistrubServer(Device)
{
Distrub = NotDistrub
}.SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/EndClientTurnMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using Renci.SshNet;
using System;
using System.Reflection;
namespace BrawlStars.Protocol.Messages.Client
{
public class EndClientTurnMessage : PiranhaMessage
{
public EndClientTurnMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
private int CommandId { get; set; }
private int BoxId { get; set; }
private int BoxType { get; set; }
private int Command { get; set; }
public override void Decode()
{
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Command = Reader.ReadVInt();
if (Command != 0)
{
CommandId = Reader.ReadVInt();
}
else
{
CommandId = 0;
}
}
public override async void Process()
{
switch (CommandId)
{
case 0:
break;
case 203:
break;
case 500:
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //-1
BoxId = Reader.ReadVInt();
switch (BoxId)
{
case 1:
Resources.Box = 12;
break;
case 3:
Resources.Box = 11;
break;
case 4:
Resources.Box = 12;
break;
case 5:
Resources.Box = 10;
break;
}
await new ServerBox(Device).SendAsync();
break;
case 505:
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //28
Resources.ProfileIcon = Reader.ReadVInt();
break;
case 506:
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //29
Resources.Skin = Reader.ReadVInt(); //SkinId
Reader.ReadVInt(); //525
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //16
Resources.Brawler = Reader.ReadVInt();
switch (Resources.Brawler)
{
case 0: //Shelly
Resources.StarPower = 76;
Resources.Gadget = 255;
break;
case 1: //Colt
Resources.StarPower = 77;
Resources.Gadget = 273;
break;
case 2: //Bull
Resources.StarPower = 78;
Resources.Gadget = 272;
break;
case 3: //Brock
Resources.StarPower = 79;
Resources.Gadget = 245;
break;
case 4: //Rico
Resources.StarPower = 80;
Resources.Gadget = 246;
break;
case 5: //Spike
Resources.StarPower = 81;
Resources.Gadget = 247;
break;
case 6: //Barley
Resources.StarPower = 82;
Resources.Gadget = 273;
break;
case 7: //Jessie
Resources.StarPower = 83;
Resources.Gadget = 251;
break;
case 8: //Nita
Resources.StarPower = 84;
Resources.Gadget = 249;
break;
case 9: //Dynamike
Resources.StarPower = 85;
Resources.Gadget = 258;
break;
case 10: //El Primo
Resources.StarPower = 86;
Resources.Gadget = 264;
break;
case 11: //Mortis
Resources.StarPower = 87;
Resources.Gadget = 265;
break;
case 12: //Crow
Resources.StarPower = 88;
Resources.Gadget = 243;
break;
case 13: //Poco
Resources.StarPower = 89;
Resources.Gadget = 267;
break;
case 14: //Bo
Resources.StarPower = 90;
Resources.Gadget = 263;
break;
case 15: //Piper
Resources.StarPower = 91;
Resources.Gadget = 268;
break;
case 16: //PAM
Resources.StarPower = 92;
Resources.Gadget = 257;
break;
case 17: //Tara
Resources.StarPower = 93;
Resources.Gadget = 266;
break;
case 18: //Darryl
Resources.StarPower = 94;
Resources.Gadget = 260;
break;
case 19: //Penny
Resources.StarPower = 99;
Resources.Gadget = 248;
break;
case 20: //Frank
Resources.StarPower = 104;
Resources.Gadget = 261;
break;
case 21: //Gene
Resources.StarPower = 109;
Resources.Gadget = 252;
break;
case 22: //Tick
Resources.StarPower = 114;
Resources.Gadget = 253;
break;
case 23: //Leon
Resources.StarPower = 119;
Resources.Gadget = 276;
break;
case 24: //Rosa
Resources.StarPower = 124;
Resources.Gadget = 242;
break;
case 25: //Carl
Resources.StarPower = 129;
Resources.Gadget = 262;
break;
case 26: //Bibi
Resources.StarPower = 134;
Resources.Gadget = 275;
break;
case 27: //8-Bit
Resources.StarPower = 168;
Resources.Gadget = 259;
break;
case 28: //Sandy
Resources.StarPower = 186;
Resources.Gadget = 270;
break;
case 29: //Bea
Resources.StarPower = 192;
Resources.Gadget = 271;
break;
case 30: //EMZ
Resources.StarPower = 198;
Resources.Gadget = 274;
break;
case 31: //Mr. P
Resources.StarPower = 204;
Resources.Gadget = 269;
break;
case 32: //Max
Resources.StarPower = 210;
Resources.Gadget = 254;
break;
case 34: //Jacky
Resources.StarPower = 222;
Resources.Gadget = 256;
break;
case 37: //Sprout
Resources.StarPower = 240;
Resources.Gadget = 244;
break;
}
break;
case 515:
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
BoxType = Reader.ReadVInt();
break;
case 527:
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
Resources.NameColor = Reader.ReadVInt();
break;
case 529:
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //Unk
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //-1
Reader.ReadVInt(); //23
Resources.StarPower = Reader.ReadVInt();
if (Resources.Room == 1)
await new Gameroom_Data(Device).SendAsync();
break;
case 535:
Resources.Box = 12;
await new ServerBox(Device).SendAsync();
break;
default:
Logger.Log(
$"Command {CommandId} is unhandled. Content: {ToString()}",
GetType(), Logger.ErrorLevel.Warning);
break;
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Home/ProfileMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using Colorful;
using DotNetty.Buffers;
using System.Net.Http.Headers;
namespace BrawlStars.Protocol.Messages.Client.Home
{
class ProfileMessage : PiranhaMessage
{
public ProfileMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public int HighId { get; set; }
public override void Decode()
{
Reader.ReadVInt();
Reader.ReadVInt();
Reader.ReadVInt();
HighId = Reader.ReadVInt();
}
public override async void Process()
{
if (HighId == 0)
{
await new ProfileServerMessage(Device).SendAsync();
}
else
{
await new BotProfileMessage(Device).SendAsync();
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Home/SetNameMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using DotNetty.Buffers;
using BrawlStars.Protocol.Messages.Server.Home;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Client.Home
{
class SetNameMessage : PiranhaMessage
{
public SetNameMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override void Decode()
{
Resources.Name = Reader.ReadScString();
}
public override async void Process()
{
await new SetNameServer(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Login/ClientHelloMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client.Login
{
public class ClientHelloMessage : PiranhaMessage
{
public ClientHelloMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.Disconnected;
}
public int Protocol { get; set; }
public int KeyVersion { get; set; }
public int MajorVersion { get; set; }
public int MinorVersion { get; set; }
public int Build { get; set; }
public string FingerprintSha { get; set; }
public int DeviceType { get; set; }
public int AppStore { get; set; }
public override void Decode()
{
Protocol = Reader.ReadInt();
KeyVersion = Reader.ReadInt();
MajorVersion = Reader.ReadInt();
MinorVersion = Reader.ReadInt();
Build = Reader.ReadInt();
FingerprintSha = Reader.ReadScString();
DeviceType = Reader.ReadInt();
AppStore = Reader.ReadInt();
}
public override async void Process()
{
await new LoginFailedMessage(Device)
{
ErrorCode = 8
}.SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Login/ExitMessage.cs
================================================
using System;
using System.Globalization;
using BrawlStars.Logic;
using BrawlStars.Logic.Sessions;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
using BrawlStars;
namespace BrawlStars.Protocol.Messages.Client.Login
{
class ExitMessage : PiranhaMessage
{
public ExitMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override async void Process()
{
await new OwnHomeDataMessage(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Login/KeepAliveMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client.Login
{
public class KeepAliveMessage : PiranhaMessage
{
public KeepAliveMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override async void Process()
{
await new KeepAliveOkMessage(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/Login/LoginMessage.cs
================================================
using System;
using System.Globalization;
using BrawlStars.Logic;
using BrawlStars.Logic.Sessions;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Protocol.Messages.Server.Login;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client.Login
{
public class LoginMessage : PiranhaMessage
{
public LoginMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
device.CurrentState = Device.State.Login;
RequiredState = Device.State.Login;
}
public long UserId { get; set; }
public string UserToken { get; set; }
public int ClientMajorVersion { get; set; }
public int ClientBuild { get; set; }
public int ClientMinorVersion { get; set; }
public string FingerprintSha { get; set; }
public string PreferredDeviceLanguage { get; set; }
public uint Seed { get; set; }
public override void Decode()
{
UserId = Reader.ReadLong();
UserToken = Reader.ReadScString();
ClientMajorVersion = Reader.ReadInt();
ClientMinorVersion = Reader.ReadInt();
ClientBuild = Reader.ReadInt();
FingerprintSha = Reader.ReadScString();
/*Reader.ReadScString(); // empty
Reader.ReadScString();
Reader.ReadScString(); // empty
Reader.ReadScString(); // Device
Reader.ReadInt();
PreferredDeviceLanguage = Reader.ReadScString().Substring(3, 2); // Language
Reader.ReadScString();
Reader.ReadScString(); // 10
Reader.ReadByte();
Reader.ReadScString();
Reader.ReadScString();
Reader.ReadScString();
Reader.ReadByte();
Reader.ReadScString();
Seed = Reader.ReadUnsignedInt();*/
}
public override async void Process()
{
if (Resources.Configuration.UseContentPatch)
if (FingerprintSha != Resources.Fingerprint.Sha)
{
await new LoginFailedMessage(Device)
{
ErrorCode = 7,
ContentUrl = Resources.Configuration.PatchUrl,
ResourceFingerprintData = Resources.Fingerprint.Json
}.SendAsync();
return;
}
//var player = await Resources.Players.Login(UserId, UserToken);
var player = 1;
if (player != null)
{
Program.Version = 1;
/*Device.Player = player;
player.Device = Device;*/
await new Copyright(Device).SendAsync();
await new LoginOkMessage(Device).SendAsync();
var ip = Device.GetIp();
//if (UserId <= 0) player.Home.CreatedIpAddress = ip;
//Device.Player.Home.PreferredDeviceLanguage = PreferredDeviceLanguage;
var session = Device.Session;
session.Ip = ip;
session.GameVersion = $"{ClientMajorVersion}.{ClientMinorVersion}";
session.Location = await Location.GetByIpAsync(ip);
session.SessionId = Guid.NewGuid().ToString();
session.StartDate = session.SessionStart.ToString(CultureInfo.InvariantCulture);
/*if(ClientMajorVersion != 27)
{
await new LoginFailedMessage(Device)
{
Reason =
"Update avaible!"
}.SendAsync();
}*/
//player.Home.TotalSessions++;
// TESTING:
//player.Home.FastForward((int) DateTime.UtcNow.Subtract(player.Home.LastSaveTime).TotalSeconds);
await new OwnHomeDataMessage(Device).SendAsync();
await new ClubOHD(Device).SendAsync();
//await new AvatarStreamMessage(Device).SendAsync();
}
else
{
await new LoginFailedMessage(Device)
{
Reason = "Account not found. Please clear app data."
}.SendAsync();
}
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/OpenClubMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class OpenClubMessage : PiranhaMessage
{
public OpenClubMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override void Decode()
{
}
public override async void Process()
{
await new ClubServerMessage(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/QuitRoomMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class QuitRoomMessage : PiranhaMessage
{
public QuitRoomMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override void Decode()
{
}
public override async void Process()
{
Resources.Room = 0;
Resources.RoomID = 0;
await new RoomDisconnect(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Client/UseGadgetInRoomMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Protocol.Messages.Server;
using BrawlStars.Utilities.Netty;
using Colorful;
using DotNetty.Buffers;
namespace BrawlStars.Protocol.Messages.Client
{
class UseGadgetInRoomMessage : PiranhaMessage
{
public UseGadgetInRoomMessage(Device device, IByteBuffer buffer) : base(device, buffer)
{
RequiredState = Device.State.NotDefinied;
}
public override void Decode()
{
Resources.UseGadget = Reader.ReadBoolean();
}
public override async void Process()
{
await new Gameroom_Data(Device).SendAsync();
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Alliance/GenrateClanInviteLinkMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server.Alliance
{
class GenrateClanInviteLinkMessage : PiranhaMessage
{
public GenrateClanInviteLinkMessage(Device device) : base(device)
{
Id = 23302;
}
public override async void Encode()
{
Random rnd = new Random();
int itoken = rnd.Next(1, 2147483647);
string token = itoken.ToString();
Writer.WriteVInt(1);
Writer.WriteScString(token);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Battle2_Result.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class Battle2_Result : PiranhaMessage
{
public Battle2_Result(Device device) : base(device)
{
Id = 23456;
}
public int Rank { get; set; }
public int Result { get; set; }
public int Bot1Brawler { get; set; }
public int Bot2Brawler { get; set; }
public int Bot3Brawler { get; set; }
public int Bot4Brawler { get; set; }
public int Bot5Brawler { get; set; }
public string Bot1Name { get; set; }
public string Bot2Name { get; set; }
public string Bot3Name { get; set; }
public string Bot4Name { get; set; }
public string Bot5Name { get; set; }
public override async void Encode()
{
Writer.WriteVInt(1);
Writer.WriteVInt(Result);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(32);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(6);
Writer.WriteVInt(1);
Writer.WriteVInt(16);
Writer.WriteVInt(Resources.Brawler);
Writer.WriteVInt(29);
Writer.WriteVInt(Resources.Skin);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(0);
Writer.WriteVInt(16);
Writer.WriteVInt(Bot1Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Bot1Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(0);
Writer.WriteVInt(16);
Writer.WriteVInt(Bot2Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Bot2Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(Bot3Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Bot3Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(Bot4Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Bot4Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(Bot5Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Bot5Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(28);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Battle_Result.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class Battle_Result : PiranhaMessage
{
public Battle_Result(Device device) : base(device)
{
Id = 23456;
}
public int Rank { get; set; }
public override async void Encode()
{
Writer.WriteVInt(2);
Writer.WriteVInt(Rank);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(32);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(1);
Writer.WriteVInt(16);
Writer.WriteVInt(Resources.Brawler);
Writer.WriteVInt(29);
Writer.WriteVInt(Resources.Skin);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(11);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(49);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(35);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(50);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(31);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(51);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(52);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(26);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(53);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(34);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(54);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(25);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(55);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(8);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(56);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(30);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(57);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(28);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/ChatBotServerMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class ChatBotServerMessage : PiranhaMessage
{
public string Message { get; set; }
public ChatBotServerMessage(Device device) : base(device)
{
Id = 24312;
}
public override async void Encode()
{
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(Resources.MessageTick);
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteScString("ObjectBrawlBot");
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Message);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/ChatServerMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class ChatServerMessage : PiranhaMessage
{
public string Message { get; set; }
public ChatServerMessage(Device device) : base(device)
{
Id = 24312;
}
Random rnd = new Random();
public override async void Encode()
{
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(Resources.MessageTick);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Message);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/ClubOHD.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class ClubOHD : PiranhaMessage
{
public ClubOHD(Device device) : base(device)
{
Id = 24399;
}
public override void Encode()
{
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(25);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(9);
Writer.WriteVInt(-29);
Writer.WriteVInt(-20);
Writer.WriteVInt(-11);
Writer.WriteVInt(-30);
Writer.WriteVInt(32);
Writer.WriteVInt(-18);
Writer.WriteVInt(-31);
Writer.WriteVInt(-19);
Writer.WriteVInt(-27);
Writer.WriteVInt(8);
Writer.WriteVInt(5);
Writer.WriteVInt(3);
Writer.WriteVInt(1);
Writer.WriteVInt(Resources.Trophies);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Region);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-34);
Writer.WriteVInt(-8147);
Writer.WriteVInt(0);
Writer.WriteVInt(-35);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-39);
Writer.WriteVInt(17);
Writer.WriteVInt(-3450);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(9);
Writer.WriteVInt(-29);
Writer.WriteVInt(-20);
Writer.WriteVInt(-11);
Writer.WriteVInt(-30);
Writer.WriteVInt(32);
Writer.WriteVInt(-18);
Writer.WriteVInt(-31);
Writer.WriteVInt(-19);
Writer.WriteVInt(-27);
Writer.WriteVInt(8);
Writer.WriteVInt(5);
Writer.WriteVInt(3);
Writer.WriteVInt(1);
Writer.WriteVInt(Resources.Trophies);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Region);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(11);
Writer.WriteVInt(-28);
Writer.WriteVInt(-27);
Writer.WriteVInt(-13);
Writer.WriteVInt(-29);
Writer.WriteVInt(-14);
Writer.WriteVInt(-23);
Writer.WriteVInt(-16);
Writer.WriteVInt(-12);
Writer.WriteVInt(-23);
Writer.WriteVInt(-17);
Writer.WriteVInt(-18);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-3);
Writer.WriteVInt(-472);
Writer.WriteVInt(135);
Writer.WriteVInt(9887);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-39);
Writer.WriteVInt(17);
Writer.WriteVInt(-3450);
Writer.WriteScString("Brawl Private Server");
Writer.WriteVInt(8);
Writer.WriteVInt(5);
Writer.WriteVInt(3);
Writer.WriteVInt(1);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Region);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString("Server created by PhoenixFire and VitalikObject");
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteInt(1);
Writer.WriteVInt(2);
Writer.WriteVInt(99999);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(-1);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(12);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(-1);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-34);
Writer.WriteVInt(-8137);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-33);
Writer.WriteVInt(44);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-50);
Writer.WriteVInt(-8145);
Writer.WriteVInt(0);
Writer.WriteVInt(11);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-3);
Writer.WriteVInt(-472);
Writer.WriteVInt(135);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/ClubServerMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class ClubServerMessage : PiranhaMessage
{
public ClubServerMessage(Device device) : base(device)
{
Id = 24301;
}
public override void Encode()
{
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteInt(1);
Writer.WriteScString("Brawl Private Server");
Writer.WriteVInt(8);
Writer.WriteVInt(5);
Writer.WriteVInt(3);
Writer.WriteVInt(1);
Writer.WriteVInt(Resources.Trophies);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Region);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString("Server created by PhoenixFire and VitalikObject");
Writer.WriteVInt(1);
Writer.WriteInt(0);
Writer.WriteInt(1); //Low Id
Writer.WriteVInt(2);
Writer.WriteVInt(Resources.Trophies);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000 + Resources.ProfileIcon);
Writer.WriteVInt(43000000 + Resources.NameColor);
Writer.WriteVInt(-1);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/DoNotDistrubServer.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
using System.Text;
namespace BrawlStars.Protocol.Messages.Server
{
class DoNotDistrubServer : PiranhaMessage
{
public DoNotDistrubServer(Device device) : base(device)
{
Id = 24111;
}
public bool Distrub { get; set; }
public override async void Encode()
{
Writer.WriteVInt(213);
Writer.WriteBoolean(Distrub);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Gameroom_Data.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
using System.Text;
namespace BrawlStars.Protocol.Messages.Server
{
class Gameroom_Data : PiranhaMessage
{
public Gameroom_Data(Device device) : base(device)
{
Id = 24124;
}
public override void Encode()
{
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Random rnd = new Random();
if (Resources.RoomID == 0)
{
int i = rnd.Next(0, 2147483647);
Resources.RoomID = i;
Writer.WriteInt(i);
}
else
{
Writer.WriteInt(Resources.RoomID);
}
Writer.WriteVInt(1557129593);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(15);
Writer.WriteVInt(Resources.Map);
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0); //High id
Writer.WriteInt(1); //Low Id
Writer.WriteVInt(16);
Writer.WriteVInt(Resources.Brawler);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(1);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(23);
Writer.WriteVInt(Resources.StarPower); //star power
if (Resources.UseGadget == true)
{
Writer.WriteVInt(23);
Writer.WriteVInt(Resources.Gadget); //gadget
}
else
{
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(6);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Home/BotProfileMessage.cs
================================================
using System;
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server
{
public class BotProfileMessage : PiranhaMessage
{
public BotProfileMessage(Device device) : base(device)
{
Id = 24113;
}
public override void Encode()
{
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(35);
Writer.WriteVInt(16);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(4);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(5);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(6);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(8);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(9);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(10);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(11);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(12);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(13);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(14);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(15);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(16);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(17);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(18);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(19);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(20);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(21);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(22);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(23);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(24);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(25);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(26);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(27);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(28);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(29);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(30);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(31);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(32);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(34);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(16);
Writer.WriteVInt(37);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(1);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(1262470);
Writer.WriteVInt(3);
Writer.WriteVInt(99999);
Writer.WriteVInt(4);
Writer.WriteVInt(99999);
Writer.WriteVInt(5);
Writer.WriteVInt(35);
Writer.WriteVInt(7);
Writer.WriteVInt(99999);
Writer.WriteVInt(8);
Writer.WriteVInt(99999);
Writer.WriteVInt(9);
Writer.WriteVInt(99999);
Writer.WriteVInt(10);
Writer.WriteVInt(99999);
Writer.WriteVInt(11);
Writer.WriteVInt(99999);
Writer.WriteVInt(12);
Writer.WriteVInt(21);
Writer.WriteVInt(13);
Writer.WriteVInt(99999);
Writer.WriteVInt(14);
Writer.WriteVInt(1);
Writer.WriteVInt(15);
Writer.WriteVInt(99999);
Writer.WriteVInt(16);
Writer.WriteVInt(21);
Writer.WriteScString("ObjectBrawlBot");
Writer.WriteVInt(100);
Writer.WriteVInt(28000015);
Writer.WriteVInt(43000010);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteInt(1);
Writer.WriteScString("Bot by Mr Vitalik");
Writer.WriteVInt(8);
Writer.WriteVInt(20);
Writer.WriteVInt(1);
Writer.WriteVInt(3);
Writer.WriteVInt(299997);
Writer.WriteVInt(25000);
Writer.WriteVInt(0);
Writer.WriteScString("IL");
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(25);
Writer.WriteVInt(2);
Writer.WriteScString(null);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Home/OwnHomeDataMessage.cs
================================================
using System;
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using DotNetty.Transport.Channels;
namespace BrawlStars.Protocol.Messages.Server
{
public class OwnHomeDataMessage : PiranhaMessage
{
public OwnHomeDataMessage(Device device) : base(device)
{
Id = 24101;
device.CurrentState = Device.State.Home;
Device.LastVisitHome = DateTime.UtcNow;
}
public override void Encode()
{
Writer.WriteVInt(2020007);
Writer.WriteVInt(75158);
Writer.WriteVInt(Resources.Trophies);
Writer.WriteVInt(99999);
Writer.WriteVInt(122);
Writer.WriteVInt(100); //reward for trophy road
Writer.WriteVInt(1262469); // starting level (exp points)
Writer.WriteVInt(28);
Writer.WriteVInt(Resources.ProfileIcon); // player icon ID
Writer.WriteVInt(43);
Writer.WriteVInt(Resources.NameColor); // player name color ID
Writer.WriteVInt(9);
Writer.WriteVInt(0);
Writer.WriteVInt(2);
Writer.WriteVInt(3);
Writer.WriteVInt(5);
Writer.WriteVInt(6);
Writer.WriteVInt(7);
Writer.WriteVInt(8);
Writer.WriteVInt(9);
Writer.WriteVInt(10);
Writer.WriteVInt(3);
Writer.WriteVInt(29);
Writer.WriteVInt(14);
Writer.WriteVInt(29);
Writer.WriteVInt(Resources.Skin);
Writer.WriteVInt(29);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteBoolean(false); // "token limit reached message" if value is 1
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(248791);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(200);
Writer.WriteVInt(200);
Writer.WriteVInt(5);
Writer.WriteVInt(93);
Writer.WriteVInt(206);
Writer.WriteVInt(456);
Writer.WriteVInt(1001);
Writer.WriteVInt(2264);
Writer.WriteVInt(8);
Writer.WriteVInt(2);
Writer.WriteVInt(2);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(200); //tokens in menu
Writer.WriteVInt(1140);
Writer.WriteBoolean(true); // tickets enabled
Writer.WriteVInt(0);
Writer.WriteVInt(Resources.Tickets); // tickets number
Writer.WriteVInt(-21);
Writer.WriteVInt(16);
Writer.WriteVInt(Resources.Brawler);
Writer.WriteScString(Resources.Region);
Writer.WriteVInt(-1);
Writer.WriteVInt(-133169153);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(2019053);
Writer.WriteVInt(100);
Writer.WriteVInt(10);
Writer.WriteVInt(30); // shop big box price
Writer.WriteVInt(3);
Writer.WriteVInt(80); // shop mega box price
Writer.WriteVInt(10);
Writer.WriteVInt(50); // shop token doubler price
Writer.WriteVInt(1000); // shop token doubler amount
Writer.WriteVInt(500);
Writer.WriteVInt(50);
Writer.WriteVInt(999900);
Writer.WriteVInt(6);
Writer.WriteVInt(0);
Writer.WriteVInt(30);
Writer.WriteVInt(80);
Writer.WriteVInt(170);
Writer.WriteVInt(350);
Writer.WriteVInt(0);
Writer.WriteVInt(15);
Writer.WriteVInt(1);
Writer.WriteVInt(2);
Writer.WriteVInt(3);
Writer.WriteVInt(4);
Writer.WriteVInt(5);
Writer.WriteVInt(6);
Writer.WriteVInt(7);
Writer.WriteVInt(8);
Writer.WriteVInt(9);
Writer.WriteVInt(10);
Writer.WriteVInt(20);
Writer.WriteVInt(21);
Writer.WriteVInt(22);
Writer.WriteVInt(23);
Writer.WriteVInt(24);
Writer.WriteVInt(9); // slots count
Writer.WriteVInt(-133000102); // map slot starts here (i think)
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(7); // game mode slot map id
Writer.WriteVInt(3); //0 or 1 = new event, 2 = Star Token, 3 = Default
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0); // // map slot ends here
Writer.WriteVInt(-133000102);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(32); //Showdown Solo
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(17);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(4);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(0);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(5);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(38); //Showdown Duo
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(6);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(24);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(202);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(8);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(97);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-133000102);
Writer.WriteVInt(9);
Writer.WriteVInt(0);
Writer.WriteVInt(75992);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(167);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(3);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(8);
Writer.WriteVInt(20);
Writer.WriteVInt(35);
Writer.WriteVInt(75);
Writer.WriteVInt(140);
Writer.WriteVInt(290);
Writer.WriteVInt(480);
Writer.WriteVInt(800);
Writer.WriteVInt(1250);
Writer.WriteVInt(8);
Writer.WriteVInt(1);
Writer.WriteVInt(2);
Writer.WriteVInt(3);
Writer.WriteVInt(4);
Writer.WriteVInt(5);
Writer.WriteVInt(10);
Writer.WriteVInt(15);
Writer.WriteVInt(20);
Writer.WriteVInt(3);
Writer.WriteVInt(10);
Writer.WriteVInt(30);
Writer.WriteVInt(80);
Writer.WriteVInt(3);
Writer.WriteVInt(6);
Writer.WriteVInt(20);
Writer.WriteVInt(60);
Writer.WriteVInt(4);
Writer.WriteVInt(20); // first coin pack price
Writer.WriteVInt(50); // second coin pack price
Writer.WriteVInt(140); // third coin pack price
Writer.WriteVInt(280); // fourth coin pack price
Writer.WriteVInt(4);
Writer.WriteVInt(150); // first coin pack amount
Writer.WriteVInt(400); // second coin pack amount
Writer.WriteVInt(1200); // third coin pack amount
Writer.WriteVInt(2600); // fourth coin pack amount
Writer.WriteVInt(2);
Writer.WriteVInt(200);
Writer.WriteVInt(20);
Writer.WriteVInt(8640);
Writer.WriteVInt(10);
Writer.WriteVInt(5);
Writer.WriteVInt(6);
Writer.WriteVInt(50);
Writer.WriteVInt(604800);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(14);
Writer.WriteVInt(0);
Writer.WriteVInt(3193);
Writer.WriteVInt(-8);
Writer.WriteInt(0);
Writer.WriteInt(1); //Low Id
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString(Resources.Name);
Writer.WriteBoolean(true); // enter name skipped
Writer.WriteScString(null);
Writer.WriteScString(null);
Writer.WriteVInt(8);
Writer.WriteVInt(39);
Writer.WriteScId(23, 0);
Writer.WriteVInt(1);
Writer.WriteScId(23, 4);
Writer.WriteVInt(1);
Writer.WriteScId(23, 8);
Writer.WriteVInt(1);
Writer.WriteScId(23, 12);
Writer.WriteVInt(1);
Writer.WriteScId(23, 16);
Writer.WriteVInt(1);
Writer.WriteScId(23, 20);
Writer.WriteVInt(1);
Writer.WriteScId(23, 24);
Writer.WriteVInt(1);
Writer.WriteScId(23, 28);
Writer.WriteVInt(1);
Writer.WriteScId(23, 32);
Writer.WriteVInt(1);
Writer.WriteScId(23, 36);
Writer.WriteVInt(1);
Writer.WriteScId(23, 40);
Writer.WriteVInt(1);
Writer.WriteScId(23, 44);
Writer.WriteVInt(1);
Writer.WriteScId(23, 48);
Writer.WriteVInt(1);
Writer.WriteScId(23, 52);
Writer.WriteVInt(1);
Writer.WriteScId(23, 56);
Writer.WriteVInt(1);
Writer.WriteScId(23, 60);
Writer.WriteVInt(1);
Writer.WriteScId(23, 64);
Writer.WriteVInt(1);
Writer.WriteScId(23, 68);
Writer.WriteVInt(1);
Writer.WriteScId(23, 72);
Writer.WriteVInt(1);
Writer.WriteScId(23, 95);
Writer.WriteVInt(1);
Writer.WriteScId(23, 100);
Writer.WriteVInt(1);
Writer.WriteScId(23, 105);
Writer.WriteVInt(1);
Writer.WriteScId(23, 110);
Writer.WriteVInt(1);
Writer.WriteScId(23, 115);
Writer.WriteVInt(1);
Writer.WriteScId(23, 120);
Writer.WriteVInt(1);
Writer.WriteScId(23, 125);
Writer.WriteVInt(1);
Writer.WriteScId(23, 130);
Writer.WriteVInt(1);
Writer.WriteScId(23, 177);
Writer.WriteVInt(1);
Writer.WriteScId(23, 182);
Writer.WriteVInt(1);
Writer.WriteScId(23, 188);
Writer.WriteVInt(1);
Writer.WriteScId(23, 194);
Writer.WriteVInt(1);
Writer.WriteScId(23, 200);
Writer.WriteVInt(1);
Writer.WriteScId(23, 206);
Writer.WriteVInt(1);
Writer.WriteScId(23, 218);
Writer.WriteVInt(1);
Writer.WriteScId(23, 236);
Writer.WriteVInt(1);
Writer.WriteScId(5, 1);
Writer.WriteVInt(99999); // brawl box tokens (100 tokens = 1 brawl box)
Writer.WriteScId(5, 8);
Writer.WriteVInt(Resources.Gold); // gold
Writer.WriteScId(5, 9);
Writer.WriteVInt(99999); // big box tokens (10 tokens = 1 big box)
Writer.WriteScId(5, 10);
Writer.WriteVInt(99999); // star tokens
Writer.WriteVInt(35); // brawlers count
Writer.WriteScId(16, 0);
Writer.WriteVInt(99999); // shelly trophies
Writer.WriteScId(16, 1);
Writer.WriteVInt(99999); // colt trophies
Writer.WriteScId(16, 2);
Writer.WriteVInt(99999); // bull trophies
Writer.WriteScId(16, 3);
Writer.WriteVInt(99999); // brock trophies
Writer.WriteScId(16, 4);
Writer.WriteVInt(99999); // rico trophies
Writer.WriteScId(16, 5);
Writer.WriteVInt(99999); // spike trophies
Writer.WriteScId(16, 6);
Writer.WriteVInt(99999); // barley trophies
Writer.WriteScId(16, 7);
Writer.WriteVInt(99999); // jessie trophies
Writer.WriteScId(16, 8);
Writer.WriteVInt(99999); // nita trophies
Writer.WriteScId(16, 9);
Writer.WriteVInt(99999); // dynamike trophies
Writer.WriteScId(16, 10);
Writer.WriteVInt(99999); // primo trophies
Writer.WriteScId(16, 11);
Writer.WriteVInt(99999); // mortis trophies
Writer.WriteScId(16, 12);
Writer.WriteVInt(99999); // crow trophies
Writer.WriteScId(16, 13);
Writer.WriteVInt(99999); // poco trophies
Writer.WriteScId(16, 14);
Writer.WriteVInt(99999); // bo trophies
Writer.WriteScId(16, 15);
Writer.WriteVInt(99999); // piper trophies
Writer.WriteScId(16, 16);
Writer.WriteVInt(99999); // pam trophies
Writer.WriteScId(16, 17);
Writer.WriteVInt(99999); // tara trophies
Writer.WriteScId(16, 18);
Writer.WriteVInt(99999); // darryl trophies
Writer.WriteScId(16, 19);
Writer.WriteVInt(99999); // penny trophies
Writer.WriteScId(16, 20);
Writer.WriteVInt(99999); // frank trophies
Writer.WriteScId(16, 21);
Writer.WriteVInt(99999); // gene trophies
Writer.WriteScId(16, 22);
Writer.WriteVInt(99999); // tick trophies
Writer.WriteScId(16, 23);
Writer.WriteVInt(99999); // leon trophies
Writer.WriteScId(16, 24);
Writer.WriteVInt(99999); // rosa trophies
Writer.WriteScId(16, 25);
Writer.WriteVInt(99999); // carl trophies
Writer.WriteScId(16, 26);
Writer.WriteVInt(99999); // bibi trophies
Writer.WriteScId(16, 27);
Writer.WriteVInt(99999); // 8bit trophies
Writer.WriteScId(16, 28);
Writer.WriteVInt(99999); // sandy trophies
Writer.WriteScId(16, 29);
Writer.WriteVInt(99999); // bea trophies
Writer.WriteScId(16, 30);
Writer.WriteVInt(99999); // emz trophies
Writer.WriteScId(16, 31);
Writer.WriteVInt(99999); // mr p trophies
Writer.WriteScId(16, 32);
Writer.WriteVInt(99999); // max trophies
Writer.WriteScId(16, 34);
Writer.WriteVInt(99999); // jacky trophies
Writer.WriteScId(16, 37);
Writer.WriteVInt(99999); // sprout trophies
Writer.WriteVInt(35); // brawlers count
Writer.WriteScId(16, 0);
Writer.WriteVInt(99999); // shelly trophies for rank
Writer.WriteScId(16, 1);
Writer.WriteVInt(99999); // colt trophies for rank
Writer.WriteScId(16, 2);
Writer.WriteVInt(99999); // bull trophies for rank
Writer.WriteScId(16, 3);
Writer.WriteVInt(99999); // brock trophies for rank
Writer.WriteScId(16, 4);
Writer.WriteVInt(99999); // rico trophies for rank
Writer.WriteScId(16, 5);
Writer.WriteVInt(99999); // spike trophies for rank
Writer.WriteScId(16, 6);
Writer.WriteVInt(99999); // barley trophies for rank
Writer.WriteScId(16, 7);
Writer.WriteVInt(99999); // jessie trophies for rank
Writer.WriteScId(16, 8);
Writer.WriteVInt(99999); // nita trophies for rank
Writer.WriteScId(16, 9);
Writer.WriteVInt(99999); // dynamike trophies for rank
Writer.WriteScId(16, 10);
Writer.WriteVInt(99999); // primo trophies for rank
Writer.WriteScId(16, 11);
Writer.WriteVInt(99999); // mortis trophies for rank
Writer.WriteScId(16, 12);
Writer.WriteVInt(99999); // crow trophies for rank
Writer.WriteScId(16, 13);
Writer.WriteVInt(99999); // poco trophies for rank
Writer.WriteScId(16, 14);
Writer.WriteVInt(99999); // bo trophies for rank
Writer.WriteScId(16, 15);
Writer.WriteVInt(99999); // piper trophies for rank
Writer.WriteScId(16, 16);
Writer.WriteVInt(99999); // pam trophies for rank
Writer.WriteScId(16, 17);
Writer.WriteVInt(99999); // tara trophies for rank
Writer.WriteScId(16, 18);
Writer.WriteVInt(99999); // darryl trophies for rank
Writer.WriteScId(16, 19);
Writer.WriteVInt(99999); // penny trophies for rank
Writer.WriteScId(16, 20);
Writer.WriteVInt(99999); // frank trophies for rank
Writer.WriteScId(16, 21);
Writer.WriteVInt(99999); // gene trophies for rank
Writer.WriteScId(16, 22);
Writer.WriteVInt(99999); // tick trophies for rank
Writer.WriteScId(16, 23);
Writer.WriteVInt(99999); // leon trophies for rank
Writer.WriteScId(16, 24);
Writer.WriteVInt(99999); // rosa trophies for rank
Writer.WriteScId(16, 25);
Writer.WriteVInt(99999); // carl trophies for rank
Writer.WriteScId(16, 26);
Writer.WriteVInt(99999); // bibi trophies for rank
Writer.WriteScId(16, 27);
Writer.WriteVInt(99999); // 8bit trophies for rank
Writer.WriteScId(16, 28);
Writer.WriteVInt(99999); // sandy trophies for rank
Writer.WriteScId(16, 29);
Writer.WriteVInt(99999); // bea trophies for rank
Writer.WriteScId(16, 30);
Writer.WriteVInt(99999); // emz trophies for rank
Writer.WriteScId(16, 31);
Writer.WriteVInt(99999); // mr p trophies for rank
Writer.WriteScId(16, 32);
Writer.WriteVInt(99999); // max trophies for rank
Writer.WriteScId(16, 34);
Writer.WriteVInt(99999); // jacky trophies for rank
Writer.WriteScId(16, 37);
Writer.WriteVInt(99999); // sprout trophies for rank
Writer.WriteVInt(0);
Writer.WriteVInt(35); // brawlers count
Writer.WriteScId(16, 0);
Writer.WriteVInt(1440); // hmm what could this be?
Writer.WriteScId(16, 1);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 2);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 3);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 4);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 5);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 6);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 7);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 8);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 9);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 10);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 11);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 12);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 13);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 14);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 15);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 16);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 17);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 18);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 19);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 20);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 21);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 22);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 23);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 24);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 25);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 26);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 27);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 28);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 29);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 30);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 31);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 32);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 34);
Writer.WriteVInt(1440);
Writer.WriteScId(16, 37);
Writer.WriteVInt(1440);
Writer.WriteVInt(35); // brawlers count
Writer.WriteScId(16, 0);
Writer.WriteVInt(8); // shelly power level (value shows in game +1, so value 8 = power 9)
Writer.WriteScId(16, 1);
Writer.WriteVInt(8); // colt power level
Writer.WriteScId(16, 2);
Writer.WriteVInt(8); // bull power level
Writer.WriteScId(16, 3);
Writer.WriteVInt(8); // brock power level
Writer.WriteScId(16, 4);
Writer.WriteVInt(8); // rico power level
Writer.WriteScId(16, 5);
Writer.WriteVInt(8); // spike power level
Writer.WriteScId(16, 6);
Writer.WriteVInt(8); // barley power level
Writer.WriteScId(16, 7);
Writer.WriteVInt(8); // jessie power level
Writer.WriteScId(16, 8);
Writer.WriteVInt(8); // nita power level
Writer.WriteScId(16, 9);
Writer.WriteVInt(8); // dynamike power level
Writer.WriteScId(16, 10);
Writer.WriteVInt(8); // primo power level
Writer.WriteScId(16, 11);
Writer.WriteVInt(8); // mortis power level
Writer.WriteScId(16, 12);
Writer.WriteVInt(8); // crow power level
Writer.WriteScId(16, 13);
Writer.WriteVInt(8); // poco power level
Writer.WriteScId(16, 14);
Writer.WriteVInt(8); // bo power level
Writer.WriteScId(16, 15);
Writer.WriteVInt(8); // piper power level
Writer.WriteScId(16, 16);
Writer.WriteVInt(8); // pam power level
Writer.WriteScId(16, 17);
Writer.WriteVInt(8); // tara power level
Writer.WriteScId(16, 18);
Writer.WriteVInt(8); // darryl power level
Writer.WriteScId(16, 19);
Writer.WriteVInt(8); // peny power level
Writer.WriteScId(16, 20);
Writer.WriteVInt(8); // frank power level
Writer.WriteScId(16, 21);
Writer.WriteVInt(8); // gene power level
Writer.WriteScId(16, 22);
Writer.WriteVInt(8); // tick power level
Writer.WriteScId(16, 23);
Writer.WriteVInt(8); // leon power level
Writer.WriteScId(16, 24);
Writer.WriteVInt(8); // rosa power level
Writer.WriteScId(16, 25);
Writer.WriteVInt(8); // carl power level
Writer.WriteScId(16, 26);
Writer.WriteVInt(8); // bibi power level
Writer.WriteScId(16, 27);
Writer.WriteVInt(8); // 8bit power level
Writer.WriteScId(16, 28);
Writer.WriteVInt(8); // sandy power level
Writer.WriteScId(16, 29);
Writer.WriteVInt(8); // bea power level
Writer.WriteScId(16, 30);
Writer.WriteVInt(8); // emz power level
Writer.WriteScId(16, 31);
Writer.WriteVInt(8); // mr p power level
Writer.WriteScId(16, 32);
Writer.WriteVInt(8); // max power level
Writer.WriteScId(16, 34);
Writer.WriteVInt(8); // jacky power level
Writer.WriteScId(16, 37);
Writer.WriteVInt(8); // sprout power level
Writer.WriteVInt(119); //gadgets and star powers
Writer.WriteVInt(23);
Writer.WriteVInt(76);
Writer.WriteScId(1, 23);
Writer.WriteVInt(77);
Writer.WriteScId(1, 23);
Writer.WriteVInt(78);
Writer.WriteScId(1, 23);
Writer.WriteVInt(79);
Writer.WriteScId(1, 23);
Writer.WriteVInt(80);
Writer.WriteScId(1, 23);
Writer.WriteVInt(81);
Writer.WriteScId(1, 23);
Writer.WriteVInt(82);
Writer.WriteScId(1, 23);
Writer.WriteVInt(83);
Writer.WriteScId(1, 23);
Writer.WriteVInt(84);
Writer.WriteScId(1, 23);
Writer.WriteVInt(85);
Writer.WriteScId(1, 23);
Writer.WriteVInt(86);
Writer.WriteScId(1, 23);
Writer.WriteVInt(87);
Writer.WriteScId(1, 23);
Writer.WriteVInt(88);
Writer.WriteScId(1, 23);
Writer.WriteVInt(89);
Writer.WriteScId(1, 23);
Writer.WriteVInt(90);
Writer.WriteScId(1, 23);
Writer.WriteVInt(91);
Writer.WriteScId(1, 23);
Writer.WriteVInt(92);
Writer.WriteScId(1, 23);
Writer.WriteVInt(93);
Writer.WriteScId(1, 23);
Writer.WriteVInt(94);
Writer.WriteScId(1, 23);
Writer.WriteVInt(99);
Writer.WriteScId(1, 23);
Writer.WriteVInt(104);
Writer.WriteScId(1, 23);
Writer.WriteVInt(109);
Writer.WriteScId(1, 23);
Writer.WriteVInt(114);
Writer.WriteScId(1, 23);
Writer.WriteVInt(119);
Writer.WriteScId(1, 23);
Writer.WriteVInt(124);
Writer.WriteScId(1, 23);
Writer.WriteVInt(129);
Writer.WriteScId(1, 23);
Writer.WriteVInt(134);
Writer.WriteScId(1, 23);
Writer.WriteVInt(135);
Writer.WriteScId(1, 23);
Writer.WriteVInt(136);
Writer.WriteScId(1, 23);
Writer.WriteVInt(137);
Writer.WriteScId(1, 23);
Writer.WriteVInt(138);
Writer.WriteScId(1, 23);
Writer.WriteVInt(139);
Writer.WriteScId(1, 23);
Writer.WriteVInt(140);
Writer.WriteScId(1, 23);
Writer.WriteVInt(141);
Writer.WriteScId(1, 23);
Writer.WriteVInt(142);
Writer.WriteScId(1, 23);
Writer.WriteVInt(143);
Writer.WriteScId(1, 23);
Writer.WriteVInt(144);
Writer.WriteScId(1, 23);
Writer.WriteVInt(145);
Writer.WriteScId(1, 23);
Writer.WriteVInt(146);
Writer.WriteScId(1, 23);
Writer.WriteVInt(147);
Writer.WriteScId(1, 23);
Writer.WriteVInt(148);
Writer.WriteScId(1, 23);
Writer.WriteVInt(149);
Writer.WriteScId(1, 23);
Writer.WriteVInt(150);
Writer.WriteScId(1, 23);
Writer.WriteVInt(151);
Writer.WriteScId(1, 23);
Writer.WriteVInt(152);
Writer.WriteScId(1, 23);
Writer.WriteVInt(153);
Writer.WriteScId(1, 23);
Writer.WriteVInt(154);
Writer.WriteScId(1, 23);
Writer.WriteVInt(155);
Writer.WriteScId(1, 23);
Writer.WriteVInt(156);
Writer.WriteScId(1, 23);
Writer.WriteVInt(157);
Writer.WriteScId(1, 23);
Writer.WriteVInt(158);
Writer.WriteScId(1, 23);
Writer.WriteVInt(159);
Writer.WriteScId(1, 23);
Writer.WriteVInt(160);
Writer.WriteScId(1, 23);
Writer.WriteVInt(161);
Writer.WriteScId(1, 23);
Writer.WriteVInt(162);
Writer.WriteScId(1, 23);
Writer.WriteVInt(163);
Writer.WriteScId(1, 23);
Writer.WriteVInt(164);
Writer.WriteScId(1, 23);
Writer.WriteVInt(165);
Writer.WriteScId(1, 23);
Writer.WriteVInt(166);
Writer.WriteScId(1, 23);
Writer.WriteVInt(167);
Writer.WriteScId(1, 23);
Writer.WriteVInt(168);
Writer.WriteScId(1, 23);
Writer.WriteVInt(169);
Writer.WriteScId(1, 23);
Writer.WriteVInt(170);
Writer.WriteScId(1, 23);
Writer.WriteVInt(172);
Writer.WriteScId(1, 23);
Writer.WriteVInt(174);
Writer.WriteScId(1, 23);
Writer.WriteVInt(175);
Writer.WriteScId(1, 23);
Writer.WriteVInt(176);
Writer.WriteScId(1, 23);
Writer.WriteVInt(181);
Writer.WriteScId(1, 23);
Writer.WriteVInt(186);
Writer.WriteScId(1, 23);
Writer.WriteVInt(187);
Writer.WriteScId(1, 23);
Writer.WriteVInt(192);
Writer.WriteScId(1, 23);
Writer.WriteVInt(193);
Writer.WriteScId(1, 23);
Writer.WriteVInt(198);
Writer.WriteScId(1, 23);
Writer.WriteVInt(199);
Writer.WriteScId(1, 23);
Writer.WriteVInt(204);
Writer.WriteScId(1, 23);
Writer.WriteVInt(205);
Writer.WriteScId(1, 23);
Writer.WriteVInt(210);
Writer.WriteScId(1, 23);
Writer.WriteVInt(211);
Writer.WriteScId(1, 23);
Writer.WriteVInt(216);
Writer.WriteScId(1, 23);
Writer.WriteVInt(217);
Writer.WriteScId(1, 23);
Writer.WriteVInt(222);
Writer.WriteScId(1, 23);
Writer.WriteVInt(223);
Writer.WriteScId(1, 23);
Writer.WriteVInt(240);
Writer.WriteScId(1, 23);
Writer.WriteVInt(241);
Writer.WriteScId(1, 23);
Writer.WriteVInt(242);
Writer.WriteScId(1, 23);
Writer.WriteVInt(243);
Writer.WriteScId(1, 23);
Writer.WriteVInt(244);
Writer.WriteScId(1, 23);
Writer.WriteVInt(245);
Writer.WriteScId(1, 23);
Writer.WriteVInt(246);
Writer.WriteScId(1, 23);
Writer.WriteVInt(247);
Writer.WriteScId(1, 23);
Writer.WriteVInt(248);
Writer.WriteScId(1, 23);
Writer.WriteVInt(249);
Writer.WriteScId(1, 23);
Writer.WriteVInt(250);
Writer.WriteScId(1, 23);
Writer.WriteVInt(251);
Writer.WriteScId(1, 23);
Writer.WriteVInt(252);
Writer.WriteScId(1, 23);
Writer.WriteVInt(253);
Writer.WriteScId(1, 23);
Writer.WriteVInt(254);
Writer.WriteScId(1, 23);
Writer.WriteVInt(255);
Writer.WriteScId(1, 23);
Writer.WriteVInt(256);
Writer.WriteScId(1, 23);
Writer.WriteVInt(257);
Writer.WriteScId(1, 23);
Writer.WriteVInt(258);
Writer.WriteScId(1, 23);
Writer.WriteVInt(259);
Writer.WriteScId(1, 23);
Writer.WriteVInt(260);
Writer.WriteScId(1, 23);
Writer.WriteVInt(261);
Writer.WriteScId(1, 23);
Writer.WriteVInt(262);
Writer.WriteScId(1, 23);
Writer.WriteVInt(263);
Writer.WriteScId(1, 23);
Writer.WriteVInt(264);
Writer.WriteScId(1, 23);
Writer.WriteVInt(265);
Writer.WriteScId(1, 23);
Writer.WriteVInt(266);
Writer.WriteScId(1, 23);
Writer.WriteVInt(267);
Writer.WriteScId(1, 23);
Writer.WriteVInt(268);
Writer.WriteScId(1, 23);
Writer.WriteVInt(269);
Writer.WriteScId(1, 23);
Writer.WriteVInt(270);
Writer.WriteScId(1, 23);
Writer.WriteVInt(271);
Writer.WriteScId(1, 23);
Writer.WriteVInt(272);
Writer.WriteScId(1, 23);
Writer.WriteVInt(273);
Writer.WriteScId(1, 23);
Writer.WriteVInt(274);
Writer.WriteScId(1, 23);
Writer.WriteVInt(275);
Writer.WriteScId(1, 23);
Writer.WriteVInt(276);
Writer.WriteVInt(1);
Writer.WriteVInt(35); // brawlers count
Writer.WriteScId(16, 0);
Writer.WriteVInt(2); // shelly "new" tag (value shows in game +1, so value 2 = power 9)
Writer.WriteScId(16, 1);
Writer.WriteVInt(2); // colt "new" tag
Writer.WriteScId(16, 2);
Writer.WriteVInt(2); // bull "new" tag
Writer.WriteScId(16, 3);
Writer.WriteVInt(2); // brock "new" tag
Writer.WriteScId(16, 4);
Writer.WriteVInt(2); // rico "new" tag
Writer.WriteScId(16, 5);
Writer.WriteVInt(2); // spike "new" tag
Writer.WriteScId(16, 6);
Writer.WriteVInt(2); // barley "new" tag
Writer.WriteScId(16, 0);
Writer.WriteVInt(2); // jessie "new" tag
Writer.WriteScId(16, 8);
Writer.WriteVInt(2); // nita "new" tag
Writer.WriteScId(16, 9);
Writer.WriteVInt(2); // dynamike "new" tag
Writer.WriteScId(16, 10);
Writer.WriteVInt(2); // primo "new" tag
Writer.WriteScId(16, 11);
Writer.WriteVInt(2); // mortis "new" tag
Writer.WriteScId(16, 12);
Writer.WriteVInt(2); // crow "new" tag
Writer.WriteScId(16, 13);
Writer.WriteVInt(2); // poco "new" tag
Writer.WriteScId(16, 14);
Writer.WriteVInt(2); // bo "new" tag
Writer.WriteScId(16, 15);
Writer.WriteVInt(2); // piper "new" tag
Writer.WriteScId(16, 16);
Writer.WriteVInt(2); // pam "new" tag
Writer.WriteScId(16, 17);
Writer.WriteVInt(2); // tara "new" tag
Writer.WriteScId(16, 18);
Writer.WriteVInt(2); // darryl "new" tag
Writer.WriteScId(16, 19);
Writer.WriteVInt(2); // peny "new" tag
Writer.WriteScId(16, 20);
Writer.WriteVInt(2); // frank "new" tag
Writer.WriteScId(16, 21);
Writer.WriteVInt(2); // gene "new" tag
Writer.WriteScId(16, 22);
Writer.WriteVInt(2); // tick "new" tag
Writer.WriteScId(16, 23);
Writer.WriteVInt(2); // leon "new" tag
Writer.WriteScId(16, 24);
Writer.WriteVInt(2); // rosa "new" tag
Writer.WriteScId(16, 25);
Writer.WriteVInt(2); // carl "new" tag
Writer.WriteScId(16, 26);
Writer.WriteVInt(2); // bibi "new" tag
Writer.WriteScId(16, 27);
Writer.WriteVInt(2); // 8bit "new" tag
Writer.WriteScId(16, 28);
Writer.WriteVInt(2); // sandy "new" tag
Writer.WriteScId(16, 29);
Writer.WriteVInt(2); // bea "new" tag
Writer.WriteScId(16, 30);
Writer.WriteVInt(2); // emz "new" tag
Writer.WriteScId(16, 31);
Writer.WriteVInt(2); // mr p "new" tag
Writer.WriteScId(16, 32);
Writer.WriteVInt(2); // max "new" tag
Writer.WriteScId(16, 34);
Writer.WriteVInt(2); // jacky "new" tag
Writer.WriteScId(16, 37);
Writer.WriteVInt(2);
Writer.WriteVInt(Resources.Gems);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(100);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(2);
Writer.WriteVInt(1550832808);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Home/ProfileServerMessage.cs
================================================
using System;
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server
{
public class ProfileServerMessage : PiranhaMessage
{
public ProfileServerMessage(Device device) : base(device)
{
Id = 24113;
}
public override void Encode()
{
Writer.WriteVInt(0); //High Id
Writer.WriteVInt(1); //Low Id
Writer.WriteVInt(0);
Writer.WriteVInt(7);
Writer.WriteVInt(16);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(9);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(22);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(14);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(16);
Writer.WriteVInt(8);
Writer.WriteVInt(0);
Writer.WriteVInt(99999);
Writer.WriteVInt(99999);
Writer.WriteVInt(2);
Writer.WriteVInt(14);
Writer.WriteVInt(1);
Writer.WriteVInt(99999); //3v3 victories
Writer.WriteVInt(2);
Writer.WriteVInt(1262469); //exp
Writer.WriteVInt(3);
Writer.WriteVInt(99999);
Writer.WriteVInt(4);
Writer.WriteVInt(Resources.Trophies); //highest trophies
Writer.WriteVInt(5);
Writer.WriteVInt(7);
Writer.WriteVInt(7);
Writer.WriteVInt(28000000);
Writer.WriteVInt(8);
Writer.WriteVInt(99999); //solo victories
Writer.WriteVInt(9);
Writer.WriteVInt(21);
Writer.WriteVInt(10);
Writer.WriteVInt(99999);
Writer.WriteVInt(11);
Writer.WriteVInt(99999); //duo victories
Writer.WriteVInt(12);
Writer.WriteVInt(21);
Writer.WriteVInt(13);
Writer.WriteVInt(99999);
Writer.WriteVInt(14);
Writer.WriteVInt(1);
Writer.WriteVInt(15);
Writer.WriteVInt(99999); //most challenge wins
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(100);
Writer.WriteVInt(28000000);
Writer.WriteVInt(43000000);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Home/SetNameServer.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server.Home
{
class SetNameServer : PiranhaMessage
{
public SetNameServer(Device device) : base(device)
{
Id = 24111;
}
public override async void Encode()
{
Writer.WriteVInt(201);
Writer.WriteScString(Resources.Name);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Login/Copyright.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System.Text;
namespace BrawlStars.Protocol.Messages.Server.Login
{
class Copyright : PiranhaMessage
{
public Copyright(Device device) : base(device)
{
Id = 9999;
}
public override void Encode()
{
Writer.WriteScString("Do not go there! It's dangerous there! Go away!\n");
Writer.WriteScString("(c) Mr Vitalik & PhoenixFire\n");
Writer.WriteScString("2020");
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Login/KeepAliveOkMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server
{
public class KeepAliveOkMessage : PiranhaMessage
{
public KeepAliveOkMessage(Device device) : base(device)
{
Id = 20108;
}
public override void Encode()
{
Writer.WriteHex("FFFF0000000000");
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Login/LoginFailedMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server
{
public class LoginFailedMessage : PiranhaMessage
{
public LoginFailedMessage(Device device) : base(device)
{
Id = 20103;
Version = 4;
}
public byte ErrorCode { get; set; }
public int SecondsUntilMaintenanceEnds { get; set; }
public string Reason { get; set; }
public string ResourceFingerprintData { get; set; }
public string ContentUrl { get; set; }
public string UpdateUrl { get; set; }
// 1 = Custom Message
// 7 = Patch
// 8 = Update Available
// 9 = Failed to Connect
// 10 = Maintenance
// 11 = Banned
// 13 = Acc Locked PopUp
// 16 = Updating Cr/Maintenance
// 18 = Chinese Text?
public override void Encode()
{
Writer.WriteInt(ErrorCode); // ErrorCode
Writer.WriteScString(ResourceFingerprintData);
Writer.WriteScString(null);
Writer.WriteScString(ContentUrl);
Writer.WriteScString(UpdateUrl); // Update URL
Writer.WriteScString(Reason);
Writer.WriteHex("2E0000012C000000000000000000");
Writer.WriteScString(null);
Writer.WriteScString(null);
Writer.WriteScString(null);
Writer.WriteScString(null);
Writer.WriteHex("00FFFF0000000000");
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/Login/LoginOkMessage.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
namespace BrawlStars.Protocol.Messages.Server
{
public class LoginOkMessage : PiranhaMessage
{
public LoginOkMessage(Device device) : base(device)
{
Id = 20104;
Version = 1;
}
public override void Encode()
{
Writer.WriteLong(1);
Writer.WriteLong(1);
Writer.WriteScString("jcdyo6zcyjuo1dch9jkpc14meft4siwmfq7iktss");
Writer.WriteVInt(1);
Writer.WriteVInt(-8165);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteScString("prod");
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(2);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(44);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteScString("1589977040459");
Writer.WriteScString("1578395063000");
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteHex("ffffffff");
Writer.WriteScString("EN");
Writer.WriteHex("ffffffff");
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteHex("ffffffff");
Writer.WriteScString("https://game-assets.brawlstarsgame.com");
Writer.WriteScString("http://a678dbc1c015a893c9fd-4e8cc3b1ad3a3c940c504815caefa967.r87.cf2.rackcdn.com");
Writer.WriteScString("https://event-assets.brawlstars.com");
Writer.WriteScString("https://24b999e6da07674e22b0-8209975788a0f2469e68e84405ae4fcf.ssl.cf2.rackcdn.com/event-assets"); }
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/RoomDisconnect.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class RoomDisconnect : PiranhaMessage
{
public RoomDisconnect(Device device) : base(device)
{
Id = 24125;
}
public override async void Encode()
{
Writer.WriteHex("00000000");
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/Messages/Server/ServerBox.cs
================================================
using BrawlStars.Logic;
using BrawlStars.Utilities.Netty;
using Org.BouncyCastle.Asn1.X509.Qualified;
using System;
namespace BrawlStars.Protocol.Messages.Server
{
class ServerBox : PiranhaMessage
{
public ServerBox(Device device) : base(device)
{
Id = 24111;
}
private static int Gold { get; set; }
private static int Gems { get; set; }
public override void Encode()
{
int reward;
Random rnd = new Random();
Writer.WriteVInt(203);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(Resources.Box);
switch (Resources.Box)
{
case 10: //BrawlBox
Writer.WriteVInt(2);
Gold = rnd.Next(1, 1001);
Resources.Gold += Gold;
Writer.WriteVInt(Gold); //gold
Writer.WriteVInt(0);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Gems = rnd.Next(1, 21);
Writer.WriteVInt(Gems); //gems
Writer.WriteVInt(1);
Writer.WriteVInt(0);
reward = rnd.Next(1,4);
switch (reward)
{
case 1:
Writer.WriteVInt(8); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Gems += Gems;
break;
case 2:
Writer.WriteVInt(2); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Tickets += Gems;
break;
case 3:
Writer.WriteVInt(3); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
break;
}
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
break;
case 11: //MegaBox
Writer.WriteVInt(2);
Gold = rnd.Next(1, 5001);
Resources.Gold += Gold;
Writer.WriteVInt(Gold); //gold
Writer.WriteVInt(0);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Gems = rnd.Next(1, 101);
Writer.WriteVInt(Gems); //gems
Writer.WriteVInt(1);
Writer.WriteVInt(0);
reward = rnd.Next(1, 4);
switch (reward)
{
case 1:
Writer.WriteVInt(8); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Gems += Gems;
break;
case 2:
Writer.WriteVInt(2); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Tickets += Gems;
break;
case 3:
Writer.WriteVInt(3); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
break;
}
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
break;
case 12: //BigBox
Writer.WriteVInt(2);
Gold = rnd.Next(1, 2501);
Resources.Gold += Gold;
Writer.WriteVInt(Gold); //gold
Writer.WriteVInt(0);
Writer.WriteVInt(7);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Gems = rnd.Next(1, 51);
Writer.WriteVInt(Gems); //gems
Writer.WriteVInt(1);
Writer.WriteVInt(0);
reward = rnd.Next(1, 4);
switch (reward)
{
case 1:
Writer.WriteVInt(8); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Gems += Gems;
break;
case 2:
Writer.WriteVInt(2); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
Resources.Tickets += Gems;
break;
case 3:
Writer.WriteVInt(3); //bonus reward type (gems = 8, token doubler = 2, tickets = 3)
break;
}
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(-1040385);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
break;
}
/*Writer.WriteVInt(203);
Writer.WriteVInt(0);
Writer.WriteVInt(1);
Writer.WriteVInt(Resources.Box); //box ID (10 = mega box, 11 = brawl box, 12 = big box)
Writer.WriteVInt(1);
Writer.WriteVInt(1);
Writer.WriteVInt(16);
Writer.WriteVInt(7);
Writer.WriteVInt(1);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteVInt(0);
Writer.WriteHex("0000000000ffff0000000000");*/
}
}
}
================================================
FILE: Source/BrawlStars/Protocol/PiranhaMessage.cs
================================================
using System;
using System.Text;
using System.Threading.Tasks;
using BrawlStars.Logic;
using DotNetty.Buffers;
namespace BrawlStars.Protocol
{
public class PiranhaMessage
{
public Device.State RequiredState = Device.State.Home;
public PiranhaMessage(Device device)
{
Device = device;
Writer = Unpooled.Buffer();
}
public PiranhaMessage(Device device, IByteBuffer buffer)
{
Device = device;
Reader = buffer;
}
public IByteBuffer Writer { get; set; }
public IByteBuffer Reader { get; set; }
public Device Device { get; set; }
public ushort Id { get; set; }
public int Length { get; set; }
public ushort Version { get; set; }
public bool Save { get; set; }
public virtual void Decode()
{
}
public virtual void Encode()
{
}
public virtual void Process()
{
}
public void EncodeCryptoBytes()
{
Writer.WriteShort(-1);
Writer.WriteByte(0);
Writer.WriteInt(0);
}
///
/// Writes this message to the clients channel
///
///
public async Task SendAsync()
{
try
{
await Device.Handler.Channel.WriteAndFlushAsync(this);
Logger.Log($"[S] Message {Id} ({GetType().Name}) sent.", GetType(), Logger.ErrorLevel.Debug);
}
catch (Exception)
{
//Logger.Log($"Failed to send {Id}.", GetType(), Logger.ErrorLevel.Debug);
}
}
public override string ToString()
{
Reader.SetReaderIndex(7);
return ByteBufferUtil.HexDump(Reader.ReadBytes(Length));
}
}
}
================================================
FILE: Source/BrawlStars/Resources.cs
================================================
using System;
using System.Threading.Tasks;
using BrawlStars.Core;
using BrawlStars.Core.Network;
using BrawlStars.Database;
using BrawlStars.Database.Cache;
using BrawlStars.Files;
using BrawlStars.Utilities.Utils;
namespace BrawlStars
{
public static class Resources
{
public static Logger Logger { get; set; }
public static Configuration Configuration { get; set; }
public static PlayerDb PlayerDb { get; set; }
//public static AllianceDb AllianceDb { get; set; }
public static ObjectCache ObjectCache { get; set; }
//public static Leaderboard Leaderboard { get; set; }
public static NettyService Netty { get; set; }
public static Fingerprint Fingerprint { get; set; }
public static Csv Csv { get; set; }
public static Players Players { get; set; }
//public static Alliances Alliances { get; set; }
public static DateTime StartTime { get; set; }
public static string Name { get; set; }
public static string Region { get; set; }
public static int RoomID { get; set; }
public static int Map { get; set; }
public static int Brawler { get; set; }
public static int Room { get; set; }
public static int Trophies { get; set; }
public static int Skin { get; set; }
public static int SkinId { get; set; }
public static int Box { get; set; }
public static int Gold { get; set; }
public static int Gems { get; set; }
public static int ProfileIcon { get; set; }
public static int NameColor { get; set; }
public static int MessageTick { get; set; }
public static string ChatMessage { get; set; }
public static int Tickets { get; set; }
public static int StarPower { get; set; }
public static int Gadget { get; set; }
public static bool UseGadget { get; set; }
public static async void Initialize()
{
Logger = new Logger();
Logger.Log(
$"Starting [{DateTime.Now.ToLongTimeString()} - {ServerUtils.GetOsName()}]...",
null);
Configuration = new Configuration();
Configuration.Initialize();
Fingerprint = new Fingerprint();
//Levels = new Levels();
Csv = new Csv();
//PlayerDb = new PlayerDb();
//AllianceDb = new AllianceDb();
/*for (int i = 0; i <= await PlayerDb.CountAsync() + 1; i++)
{
await PlayerDb.DeleteAsync(i);
}*/
//PlayerDb = new PlayerDb();
/*Logger.Log(
$"Successfully loaded MySql with {await PlayerDb.CountAsync()} player(s)",
null);*/
ObjectCache = new ObjectCache();
//Players = new Players();
//Alliances = new Alliances();
//Leaderboard = new Leaderboard();
StartTime = DateTime.UtcNow;
Netty = new NettyService();
if (Configuration.Name == "")
{
Logger.Log("The name must not be empty.", null, Logger.ErrorLevel.Warning);
Program.Shutdown();
}
else
{
Name = Configuration.Name;
}
Map = 7;
Brawler = 0;
Room = 0;
Trophies = Configuration.Trophies;
Skin = 0;
Region = Configuration.Region;
RoomID = 0;
Box = 3;
Tickets = 99999;
Gold = 99999;
Gems = 99999;
Skin = 0;
ProfileIcon = 0;
NameColor = 0;
ChatMessage = string.Empty;
MessageTick = 0;
StarPower = 76;
Gadget = 255;
UseGadget = true;
await Task.Run(Netty.RunServerAsync);
}
}
}
================================================
FILE: Source/BrawlStars/obj/BrawlStars.csproj.nuget.cache
================================================
{
"version": 1,
"dgSpecHash": "f9aaRwQlhSijjpL3CnZ32bh1g8s2645/bs6xGJVpEJwFQPqNbxsAuaVSr5+nnXEFKMH8DWIj9i+VRtWnck8k5g==",
"success": true
}
================================================
FILE: Source/BrawlStars/obj/BrawlStars.csproj.nuget.dgspec.json
================================================
{
"format": 1,
"restore": {
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars\\BrawlStars.csproj": {}
},
"projects": {
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"projectName": "BrawlStars.Utilities",
"projectPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"packagesPath": "C:\\Users\\Vitalik\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\Vitalik\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netstandard2.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netstandard2.0": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netstandard2.0": {
"dependencies": {
"DotNetty.Buffers": {
"target": "Package",
"version": "[0.6.0, )"
},
"MySql.Data": {
"target": "Package",
"version": "[8.0.19, )"
},
"NETStandard.Library": {
"suppressParent": "All",
"target": "Package",
"version": "[2.0.3, )",
"autoReferenced": true
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[12.0.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
}
}
},
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars\\BrawlStars.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars\\BrawlStars.csproj",
"projectName": "BrawlStars",
"projectPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars\\BrawlStars.csproj",
"packagesPath": "C:\\Users\\Vitalik\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\Vitalik\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netcoreapp3.1"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netcoreapp3.1": {
"projectReferences": {
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj": {
"projectPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netcoreapp3.1": {
"dependencies": {
"Colorful.Console": {
"target": "Package",
"version": "[1.2.10, )"
},
"DotNetty.Buffers": {
"target": "Package",
"version": "[0.6.0, )"
},
"DotNetty.Common": {
"target": "Package",
"version": "[0.6.0, )"
},
"DotNetty.Handlers": {
"target": "Package",
"version": "[0.6.0, )"
},
"Microsoft.Extensions.Caching.Memory": {
"target": "Package",
"version": "[3.1.2, )"
},
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets": {
"target": "Package",
"version": "[1.9.10, )"
},
"MySql.Data": {
"target": "Package",
"version": "[8.0.19, )"
},
"NLog": {
"target": "Package",
"version": "[4.6.8, )"
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[12.0.3, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
}
}
}
}
}
================================================
FILE: Source/BrawlStars/obj/BrawlStars.csproj.nuget.g.props
================================================
True
NuGet
$(MSBuildThisFileDirectory)project.assets.json
$(UserProfile)\.nuget\packages\
C:\Users\Vitalik\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder
PackageReference
5.5.0
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
C:\Users\Vitalik\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.9.10
================================================
FILE: Source/BrawlStars/obj/BrawlStars.csproj.nuget.g.targets
================================================
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
================================================
FILE: Source/BrawlStars/obj/Debug/netcoreapp3.1/BrawlStars.AssemblyInfo.cs
================================================
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("BrawlStars")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("BrawlStars")]
[assembly: System.Reflection.AssemblyTitleAttribute("BrawlStars")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
================================================
FILE: Source/BrawlStars/obj/Debug/netcoreapp3.1/BrawlStars.AssemblyInfoInputs.cache
================================================
870a87f929b82a7305ba02eeec43f2b74bb237f2
================================================
FILE: Source/BrawlStars.Utilities/BrawlStars.Utilities.csproj
================================================
netstandard2.0
..\..\..\..\..\.nuget\packages\dotnetty.transport\0.6.0\lib\netstandard1.3\DotNetty.Transport.dll
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/CRC32.cs
================================================
using System;
using System.IO;
using Interop = System.Runtime.InteropServices;
namespace BrawlStars.Utilities.Compression.ZLib
{
[Interop.Guid("ebc25cf6-9120-4283-b972-0e5520d0000C")]
[Interop.ComVisible(true)]
#if !NETCF
[Interop.ClassInterface(Interop.ClassInterfaceType.AutoDispatch)]
#endif
public class Crc32
{
private const int BufferSize = 8192;
private readonly uint _dwPolynomial;
private readonly bool _reverseBits;
private uint[] _crc32Table;
private uint _register = 0xFFFFFFFFU;
public Crc32() : this(false)
{
}
public Crc32(bool reverseBits) :
this(unchecked((int) 0xEDB88320), reverseBits)
{
}
public Crc32(int polynomial, bool reverseBits)
{
_reverseBits = reverseBits;
_dwPolynomial = (uint) polynomial;
GenerateLookupTable();
}
public long TotalBytesRead { get; private set; }
public int Crc32Result => unchecked((int) ~_register);
public int GetCrc32(Stream input)
{
return GetCrc32AndCopy(input, null);
}
public int GetCrc32AndCopy(Stream input, Stream output)
{
if (input == null)
throw new Exception("The input stream must not be null.");
unchecked
{
var buffer = new byte[BufferSize];
TotalBytesRead = 0;
var count = input.Read(buffer, 0, BufferSize);
output?.Write(buffer, 0, count);
TotalBytesRead += count;
while (count > 0)
{
SlurpBlock(buffer, 0, count);
count = input.Read(buffer, 0, BufferSize);
output?.Write(buffer, 0, count);
TotalBytesRead += count;
}
return (int) ~_register;
}
}
public int ComputeCrc32(int w, byte b)
{
return InternalComputeCrc32((uint) w, b);
}
public int InternalComputeCrc32(uint w, byte b)
{
return (int) (_crc32Table[(w ^ b) & 0xFF] ^ (w >> 8));
}
public void SlurpBlock(byte[] block, int offset, int count)
{
if (block == null)
throw new Exception("The data buffer must not be null.");
for (var i = 0; i < count; i++)
{
var x = offset + i;
var b = block[x];
if (_reverseBits)
{
var temp = (_register >> 24) ^ b;
_register = (_register << 8) ^ _crc32Table[temp];
}
else
{
var temp = (_register & 0x000000FF) ^ b;
_register = (_register >> 8) ^ _crc32Table[temp];
}
}
TotalBytesRead += count;
}
public void UpdateCrc(byte b)
{
if (_reverseBits)
{
var temp = (_register >> 24) ^ b;
_register = (_register << 8) ^ _crc32Table[temp];
}
else
{
var temp = (_register & 0x000000FF) ^ b;
_register = (_register >> 8) ^ _crc32Table[temp];
}
}
public void UpdateCrc(byte b, int n)
{
while (n-- > 0)
if (_reverseBits)
{
var temp = (_register >> 24) ^ b;
_register = (_register << 8) ^ _crc32Table[temp];
}
else
{
var temp = (_register & 0x000000FF) ^ b;
_register = (_register >> 8) ^ _crc32Table[temp];
}
}
private static uint ReverseBits(uint data)
{
unchecked
{
var ret = data;
ret = ((ret & 0x55555555) << 1) | ((ret >> 1) & 0x55555555);
ret = ((ret & 0x33333333) << 2) | ((ret >> 2) & 0x33333333);
ret = ((ret & 0x0F0F0F0F) << 4) | ((ret >> 4) & 0x0F0F0F0F);
ret = (ret << 24) | ((ret & 0xFF00) << 8) | ((ret >> 8) & 0xFF00) | (ret >> 24);
return ret;
}
}
private static byte ReverseBits(byte data)
{
unchecked
{
var u = (uint) data * 0x00020202;
uint m = 0x01044010;
var s = u & m;
var t = (u << 2) & (m << 1);
return (byte) ((0x01001001 * (s + t)) >> 24);
}
}
private void GenerateLookupTable()
{
_crc32Table = new uint[256];
unchecked
{
byte i = 0;
do
{
uint dwCrc = i;
for (byte j = 8; j > 0; j--)
if ((dwCrc & 1) == 1) dwCrc = (dwCrc >> 1) ^ _dwPolynomial;
else dwCrc >>= 1;
if (_reverseBits) _crc32Table[ReverseBits(i)] = ReverseBits(dwCrc);
else _crc32Table[i] = dwCrc;
i++;
} while (i != 0);
}
}
private uint Gf2_matrix_times(uint[] matrix, uint vec)
{
uint sum = 0;
var i = 0;
while (vec != 0)
{
if ((vec & 0x01) == 0x01)
sum ^= matrix[i];
vec >>= 1;
i++;
}
return sum;
}
private void Gf2_matrix_square(uint[] square, uint[] mat)
{
for (var i = 0; i < 32; i++)
square[i] = Gf2_matrix_times(mat, mat[i]);
}
public void Combine(int crc, int length)
{
var even = new uint[32];
var odd = new uint[32];
if (length == 0)
return;
var crc1 = ~_register;
var crc2 = (uint) crc;
odd[0] = _dwPolynomial;
uint row = 1;
for (var i = 1; i < 32; i++)
{
odd[i] = row;
row <<= 1;
}
Gf2_matrix_square(even, odd);
Gf2_matrix_square(odd, even);
var len2 = (uint) length;
do
{
Gf2_matrix_square(even, odd);
if ((len2 & 1) == 1)
crc1 = Gf2_matrix_times(even, crc1);
len2 >>= 1;
if (len2 == 0)
break;
Gf2_matrix_square(odd, even);
if ((len2 & 1) == 1)
crc1 = Gf2_matrix_times(odd, crc1);
len2 >>= 1;
} while (len2 != 0);
crc1 ^= crc2;
_register = ~crc1;
}
public void Reset()
{
_register = 0xFFFFFFFFU;
}
}
public class CrcCalculatorStream : Stream, IDisposable
{
public static readonly long UnsetLengthLimit = -99;
private readonly Crc32 _crc32;
private readonly long _lengthLimit;
public Stream InnerStream;
public CrcCalculatorStream(Stream stream)
: this(true, UnsetLengthLimit, stream, null)
{
}
public CrcCalculatorStream(Stream stream, bool leaveOpen)
: this(leaveOpen, UnsetLengthLimit, stream, null)
{
}
public CrcCalculatorStream(Stream stream, long length)
: this(true, length, stream, null)
{
if (length < 0)
throw new ArgumentException("length");
}
public CrcCalculatorStream(Stream stream, long length, bool leaveOpen)
: this(leaveOpen, length, stream, null)
{
if (length < 0)
throw new ArgumentException("length");
}
public CrcCalculatorStream(Stream stream, long length, bool leaveOpen,
Crc32 crc32)
: this(leaveOpen, length, stream, crc32)
{
if (length < 0)
throw new ArgumentException("length");
}
private CrcCalculatorStream
(bool leaveOpen, long length, Stream stream, Crc32 crc32)
{
InnerStream = stream;
_crc32 = crc32 ?? new Crc32();
_lengthLimit = length;
LeaveOpen = leaveOpen;
}
public long TotalBytesSlurped => _crc32.TotalBytesRead;
public int Crc => _crc32.Crc32Result;
public bool LeaveOpen { get; set; }
public override bool CanRead => InnerStream.CanRead;
public override bool CanSeek => false;
public override bool CanWrite => InnerStream.CanWrite;
public override long Length => _lengthLimit == UnsetLengthLimit ? InnerStream.Length : _lengthLimit;
public override long Position
{
get => _crc32.TotalBytesRead;
set => throw new NotSupportedException();
}
void IDisposable.Dispose()
{
Close();
}
public override int Read(byte[] buffer, int offset, int count)
{
var bytesToRead = count;
if (_lengthLimit != UnsetLengthLimit)
{
if (_crc32.TotalBytesRead >= _lengthLimit)
return 0;
var bytesRemaining = _lengthLimit - _crc32.TotalBytesRead;
if (bytesRemaining < count)
bytesToRead = (int) bytesRemaining;
}
var n = InnerStream.Read(buffer, offset, bytesToRead);
if (n > 0)
_crc32.SlurpBlock(buffer, offset, n);
return n;
}
public override void Write(byte[] buffer, int offset, int count)
{
if (count > 0)
_crc32.SlurpBlock(buffer, offset, count);
InnerStream.Write(buffer, offset, count);
}
public override void Flush()
{
InnerStream.Flush();
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
throw new NotSupportedException();
}
public override void Close()
{
base.Close();
if (!LeaveOpen)
InnerStream.Close();
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/Deflate.cs
================================================
using System;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal enum BlockState
{
NeedMore = 0,
BlockDone,
FinishStarted,
FinishDone
}
internal enum DeflateFlavor
{
Store,
Fast,
Slow
}
internal sealed class DeflateManager
{
private const int MemLevelMax = 9;
private const int MemLevelDefault = 8;
private const int PresetDict = 0x20;
private const int InitState = 42;
private const int BusyState = 113;
private const int ZDeflated = 8;
private const int StoredBlock = 0;
private const int StaticTrees = 1;
private const int DynTrees = 2;
private const int ZAscii = 1;
private const int ZUnknown = 2;
private const int BufSize = 8 * 2;
private const int MinMatch = 3;
private const int MaxMatch = 258;
private const int MinLookahead = MaxMatch + MinMatch + 1;
private const int EndBlock = 256;
private static readonly string[] ErrorMessage =
{
"need dictionary",
"stream end",
"",
"file error",
"stream error",
"data error",
"insufficient memory",
"buffer error",
"incompatible version",
""
};
public static readonly int FinishState = 666;
public static readonly int ZBinary = 0;
private static readonly int HeapSize = 2 * InternalConstants.L_CODES + 1;
private Config _config;
private CompressFunc _deflateFunction;
private bool _rfc1950BytesEmitted;
internal short BiBuf;
internal int BiValid;
internal short[] BlCount = new short[InternalConstants.MAX_BITS + 1];
internal int BlockStart;
internal short[] BlTree;
internal ZlibCodec Codec;
internal CompressionLevel CompressionLevel;
internal CompressionStrategy CompressionStrategy;
internal sbyte DataType;
internal sbyte[] Depth = new sbyte[2 * InternalConstants.L_CODES + 1];
internal int DistanceOffset;
internal short[] DynDtree;
internal short[] DynLtree;
internal int HashBits;
public int HashMask;
internal int HashShift;
internal int HashSize;
internal short[] Head;
internal int[] Heap = new int[2 * InternalConstants.L_CODES + 1];
internal int HeapLen;
internal int HeapMax;
internal int InsH;
internal int LastEobLen;
internal int LastFlush;
internal int LastLit;
internal int LengthOffset;
internal int LitBufsize;
internal int Lookahead;
internal int MatchAvailable;
internal int Matches;
internal int MatchLength;
internal int MatchStart;
internal int NextPending;
internal int OptLen;
internal byte[] Pending;
internal int PendingCount;
internal short[] Prev;
internal int PrevLength;
internal int PrevMatch;
internal int StaticLen;
internal int Status;
internal int Strstart;
internal Tree TreeBitLengths = new Tree();
internal Tree TreeDistances = new Tree();
internal Tree TreeLiterals = new Tree();
internal int WBits;
internal byte[] Window;
internal int WindowSize;
internal int WMask;
internal int WSize;
internal DeflateManager()
{
DynLtree = new short[HeapSize * 2];
DynDtree = new short[(2 * InternalConstants.D_CODES + 1) * 2];
BlTree = new short[(2 * InternalConstants.BL_CODES + 1) * 2];
}
internal bool WantRfc1950HeaderBytes { get; set; } = true;
private void InitializeLazyMatch()
{
WindowSize = 2 * WSize;
Array.Clear(Head, 0, HashSize);
_config = Config.Lookup(CompressionLevel);
SetDeflater();
Strstart = 0;
BlockStart = 0;
Lookahead = 0;
MatchLength = PrevLength = MinMatch - 1;
MatchAvailable = 0;
InsH = 0;
}
private void InitializeTreeData()
{
TreeLiterals.DynTree = DynLtree;
TreeLiterals.StaticTree = StaticTree.Literals;
TreeDistances.DynTree = DynDtree;
TreeDistances.StaticTree = StaticTree.Distances;
TreeBitLengths.DynTree = BlTree;
TreeBitLengths.StaticTree = StaticTree.BitLengths;
BiBuf = 0;
BiValid = 0;
LastEobLen = 8;
InitializeBlocks();
}
internal void InitializeBlocks()
{
for (var i = 0; i < InternalConstants.L_CODES; i++)
DynLtree[i * 2] = 0;
for (var i = 0; i < InternalConstants.D_CODES; i++)
DynDtree[i * 2] = 0;
for (var i = 0; i < InternalConstants.BL_CODES; i++)
BlTree[i * 2] = 0;
DynLtree[EndBlock * 2] = 1;
OptLen = StaticLen = 0;
LastLit = Matches = 0;
}
internal void Pqdownheap(short[] tree, int k)
{
var v = Heap[k];
var j = k << 1;
while (j <= HeapLen)
{
if (j < HeapLen && IsSmaller(tree, Heap[j + 1], Heap[j], Depth)) j++;
if (IsSmaller(tree, v, Heap[j], Depth))
break;
Heap[k] = Heap[j];
k = j;
j <<= 1;
}
Heap[k] = v;
}
internal static bool IsSmaller(short[] tree, int n, int m, sbyte[] depth)
{
var tn2 = tree[n * 2];
var tm2 = tree[m * 2];
return tn2 < tm2 || tn2 == tm2 && depth[n] <= depth[m];
}
internal void Scan_tree(short[] tree, int maxCode)
{
int n;
var prevlen = -1;
int nextlen = tree[0 * 2 + 1];
var count = 0;
var maxCount = 7;
var minCount = 4;
if (nextlen == 0)
{
maxCount = 138;
minCount = 3;
}
tree[(maxCode + 1) * 2 + 1] = 0x7fff;
for (n = 0; n <= maxCode; n++)
{
var curlen = nextlen;
nextlen = tree[(n + 1) * 2 + 1];
if (++count < maxCount && curlen == nextlen) continue;
if (count < minCount)
{
BlTree[curlen * 2] = (short) (BlTree[curlen * 2] + count);
}
else if (curlen != 0)
{
if (curlen != prevlen)
BlTree[curlen * 2]++;
BlTree[InternalConstants.REP_3_6 * 2]++;
}
else if (count <= 10)
{
BlTree[InternalConstants.REPZ_3_10 * 2]++;
}
else
{
BlTree[InternalConstants.REPZ_11_138 * 2]++;
}
count = 0;
prevlen = curlen;
if (nextlen == 0)
{
maxCount = 138;
minCount = 3;
}
else if (curlen == nextlen)
{
maxCount = 6;
minCount = 3;
}
else
{
maxCount = 7;
minCount = 4;
}
}
}
internal int Build_bl_tree()
{
Scan_tree(DynLtree, TreeLiterals.MaxCode);
Scan_tree(DynDtree, TreeDistances.MaxCode);
TreeBitLengths.Build_tree(this);
int maxBlindex;
for (maxBlindex = InternalConstants.BL_CODES - 1; maxBlindex >= 3; maxBlindex--)
if (BlTree[Tree.BlOrder[maxBlindex] * 2 + 1] != 0)
break;
OptLen += 3 * (maxBlindex + 1) + 5 + 5 + 4;
return maxBlindex;
}
internal void Send_all_trees(int lcodes, int dcodes, int blcodes)
{
int rank;
Send_bits(lcodes - 257, 5);
Send_bits(dcodes - 1, 5);
Send_bits(blcodes - 4, 4);
for (rank = 0; rank < blcodes; rank++) Send_bits(BlTree[Tree.BlOrder[rank] * 2 + 1], 3);
Send_tree(DynLtree, lcodes - 1);
Send_tree(DynDtree, dcodes - 1);
}
internal void Send_tree(short[] tree, int maxCode)
{
int n;
var prevlen = -1;
int nextlen = tree[0 * 2 + 1];
var count = 0;
var maxCount = 7;
var minCount = 4;
if (nextlen == 0)
{
maxCount = 138;
minCount = 3;
}
for (n = 0; n <= maxCode; n++)
{
var curlen = nextlen;
nextlen = tree[(n + 1) * 2 + 1];
if (++count < maxCount && curlen == nextlen) continue;
if (count < minCount)
{
do
{
Send_code(curlen, BlTree);
} while (--count != 0);
}
else if (curlen != 0)
{
if (curlen != prevlen)
{
Send_code(curlen, BlTree);
count--;
}
Send_code(InternalConstants.REP_3_6, BlTree);
Send_bits(count - 3, 2);
}
else if (count <= 10)
{
Send_code(InternalConstants.REPZ_3_10, BlTree);
Send_bits(count - 3, 3);
}
else
{
Send_code(InternalConstants.REPZ_11_138, BlTree);
Send_bits(count - 11, 7);
}
count = 0;
prevlen = curlen;
if (nextlen == 0)
{
maxCount = 138;
minCount = 3;
}
else if (curlen == nextlen)
{
maxCount = 6;
minCount = 3;
}
else
{
maxCount = 7;
minCount = 4;
}
}
}
private void Put_bytes(byte[] p, int start, int len)
{
Array.Copy(p, start, Pending, PendingCount, len);
PendingCount += len;
}
internal void Send_code(int c, short[] tree)
{
var c2 = c * 2;
Send_bits(tree[c2] & 0xffff, tree[c2 + 1] & 0xffff);
}
internal void Send_bits(int value, int length)
{
var len = length;
unchecked
{
if (BiValid > BufSize - len)
{
BiBuf |= (short) ((value << BiValid) & 0xffff);
Pending[PendingCount++] = (byte) BiBuf;
Pending[PendingCount++] = (byte) (BiBuf >> 8);
BiBuf = (short) ((uint) value >> (BufSize - BiValid));
BiValid += len - BufSize;
}
else
{
BiBuf |= (short) ((value << BiValid) & 0xffff);
BiValid += len;
}
}
}
internal void Tr_align()
{
Send_bits(StaticTrees << 1, 3);
Send_code(EndBlock, StaticTree.lengthAndLiteralsTreeCodes);
Bi_flush();
if (1 + LastEobLen + 10 - BiValid < 9)
{
Send_bits(StaticTrees << 1, 3);
Send_code(EndBlock, StaticTree.lengthAndLiteralsTreeCodes);
Bi_flush();
}
LastEobLen = 7;
}
internal bool Tr_tally(int dist, int lc)
{
Pending[DistanceOffset + LastLit * 2] = unchecked((byte) ((uint) dist >> 8));
Pending[DistanceOffset + LastLit * 2 + 1] = unchecked((byte) dist);
Pending[LengthOffset + LastLit] = unchecked((byte) lc);
LastLit++;
if (dist == 0)
{
DynLtree[lc * 2]++;
}
else
{
Matches++;
dist--;
DynLtree[(Tree.LengthCode[lc] + InternalConstants.LITERALS + 1) * 2]++;
DynDtree[Tree.DistanceCode(dist) * 2]++;
}
if ((LastLit & 0x1fff) != 0 || (int) CompressionLevel <= 2)
return LastLit == LitBufsize - 1 || LastLit == LitBufsize;
var outLength = LastLit << 3;
var inLength = Strstart - BlockStart;
int dcode;
for (dcode = 0; dcode < InternalConstants.D_CODES; dcode++)
outLength = (int) (outLength + DynDtree[dcode * 2] * (5L + Tree.ExtraDistanceBits[dcode]));
outLength >>= 3;
if (Matches < LastLit / 2 && outLength < inLength / 2)
return true;
return LastLit == LitBufsize - 1 || LastLit == LitBufsize;
}
internal void send_compressed_block(short[] ltree, short[] dtree)
{
var lx = 0;
if (LastLit != 0)
do
{
var ix = DistanceOffset + lx * 2;
var distance = ((Pending[ix] << 8) & 0xff00) |
(Pending[ix + 1] & 0xff);
var lc = Pending[LengthOffset + lx] & 0xff;
lx++;
if (distance == 0)
{
Send_code(lc, ltree);
}
else
{
int code = Tree.LengthCode[lc];
Send_code(code + InternalConstants.LITERALS + 1, ltree);
var extra = Tree.ExtraLengthBits[code];
if (extra != 0)
{
lc -= Tree.LengthBase[code];
Send_bits(lc, extra);
}
distance--;
code = Tree.DistanceCode(distance);
Send_code(code, dtree);
extra = Tree.ExtraDistanceBits[code];
if (extra == 0) continue;
distance -= Tree.DistanceBase[code];
Send_bits(distance, extra);
}
} while (lx < LastLit);
Send_code(EndBlock, ltree);
LastEobLen = ltree[EndBlock * 2 + 1];
}
internal void Set_data_type()
{
var n = 0;
var asciiFreq = 0;
var binFreq = 0;
while (n < 7)
{
binFreq += DynLtree[n * 2];
n++;
}
while (n < 128)
{
asciiFreq += DynLtree[n * 2];
n++;
}
while (n < InternalConstants.LITERALS)
{
binFreq += DynLtree[n * 2];
n++;
}
DataType = (sbyte) (binFreq > asciiFreq >> 2 ? ZBinary : ZAscii);
}
internal void Bi_flush()
{
if (BiValid == 16)
{
Pending[PendingCount++] = (byte) BiBuf;
Pending[PendingCount++] = (byte) (BiBuf >> 8);
BiBuf = 0;
BiValid = 0;
}
else if (BiValid >= 8)
{
Pending[PendingCount++] = (byte) BiBuf;
BiBuf >>= 8;
BiValid -= 8;
}
}
internal void Bi_windup()
{
if (BiValid > 8)
{
Pending[PendingCount++] = (byte) BiBuf;
Pending[PendingCount++] = (byte) (BiBuf >> 8);
}
else if (BiValid > 0)
{
Pending[PendingCount++] = (byte) BiBuf;
}
BiBuf = 0;
BiValid = 0;
}
internal void Copy_block(int buf, int len, bool header)
{
Bi_windup();
LastEobLen = 8;
if (header)
unchecked
{
Pending[PendingCount++] = (byte) len;
Pending[PendingCount++] = (byte) (len >> 8);
Pending[PendingCount++] = (byte) ~len;
Pending[PendingCount++] = (byte) (~len >> 8);
}
Put_bytes(Window, buf, len);
}
internal void Flush_block_only(bool eof)
{
Tr_flush_block(BlockStart >= 0 ? BlockStart : -1, Strstart - BlockStart, eof);
BlockStart = Strstart;
Codec.Flush_pending();
}
internal BlockState DeflateNone(FlushType flush)
{
var maxBlockSize = 0xffff;
if (maxBlockSize > Pending.Length - 5) maxBlockSize = Pending.Length - 5;
while (true)
{
if (Lookahead <= 1)
{
FillWindow();
if (Lookahead == 0 && flush == FlushType.None)
return BlockState.NeedMore;
if (Lookahead == 0)
break;
}
Strstart += Lookahead;
Lookahead = 0;
var maxStart = BlockStart + maxBlockSize;
if (Strstart == 0 || Strstart >= maxStart)
{
Lookahead = Strstart - maxStart;
Strstart = maxStart;
Flush_block_only(false);
if (Codec.AvailableBytesOut == 0)
return BlockState.NeedMore;
}
if (Strstart - BlockStart < WSize - MinLookahead) continue;
Flush_block_only(false);
if (Codec.AvailableBytesOut == 0)
return BlockState.NeedMore;
}
Flush_block_only(flush == FlushType.Finish);
if (Codec.AvailableBytesOut == 0)
return flush == FlushType.Finish ? BlockState.FinishStarted : BlockState.NeedMore;
return flush == FlushType.Finish ? BlockState.FinishDone : BlockState.BlockDone;
}
internal void Tr_stored_block(int buf, int storedLen, bool eof)
{
Send_bits((StoredBlock << 1) + (eof ? 1 : 0), 3);
Copy_block(buf, storedLen, true);
}
internal void Tr_flush_block(int buf, int storedLen, bool eof)
{
int optLenb, staticLenb;
var maxBlindex = 0;
if (CompressionLevel > 0)
{
if (DataType == ZUnknown)
Set_data_type();
TreeLiterals.Build_tree(this);
TreeDistances.Build_tree(this);
maxBlindex = Build_bl_tree();
optLenb = (OptLen + 3 + 7) >> 3;
staticLenb = (StaticLen + 3 + 7) >> 3;
if (staticLenb <= optLenb)
optLenb = staticLenb;
}
else
{
optLenb = staticLenb = storedLen + 5;
}
if (storedLen + 4 <= optLenb && buf != -1)
{
Tr_stored_block(buf, storedLen, eof);
}
else if (staticLenb == optLenb)
{
Send_bits((StaticTrees << 1) + (eof ? 1 : 0), 3);
send_compressed_block(StaticTree.lengthAndLiteralsTreeCodes, StaticTree.distTreeCodes);
}
else
{
Send_bits((DynTrees << 1) + (eof ? 1 : 0), 3);
Send_all_trees(TreeLiterals.MaxCode + 1, TreeDistances.MaxCode + 1, maxBlindex + 1);
send_compressed_block(DynLtree, DynDtree);
}
InitializeBlocks();
if (eof) Bi_windup();
}
private void FillWindow()
{
do
{
var more = WindowSize - Lookahead - Strstart;
int n;
switch (more)
{
case 0 when Strstart == 0 && Lookahead == 0:
more = WSize;
break;
case -1:
more--;
break;
default:
{
if (Strstart >= WSize + WSize - MinLookahead)
{
Array.Copy(Window, WSize, Window, 0, WSize);
MatchStart -= WSize;
Strstart -= WSize;
BlockStart -= WSize;
n = HashSize;
var p = n;
int m;
do
{
m = Head[--p] & 0xffff;
Head[p] = (short) (m >= WSize ? m - WSize : 0);
} while (--n != 0);
n = WSize;
p = n;
do
{
m = Prev[--p] & 0xffff;
Prev[p] = (short) (m >= WSize ? m - WSize : 0);
} while (--n != 0);
more += WSize;
}
break;
}
}
if (Codec.AvailableBytesIn == 0)
return;
n = Codec.Read_buf(Window, Strstart + Lookahead, more);
Lookahead += n;
if (Lookahead < MinMatch) continue;
InsH = Window[Strstart] & 0xff;
InsH = ((InsH << HashShift) ^ (Window[Strstart + 1] & 0xff)) & HashMask;
} while (Lookahead < MinLookahead && Codec.AvailableBytesIn != 0);
}
internal BlockState DeflateFast(FlushType flush)
{
var hashHead = 0;
while (true)
{
if (Lookahead < MinLookahead)
{
FillWindow();
if (Lookahead < MinLookahead && flush == FlushType.None) return BlockState.NeedMore;
if (Lookahead == 0)
break;
}
if (Lookahead >= MinMatch)
{
InsH = ((InsH << HashShift) ^ (Window[Strstart + (MinMatch - 1)] & 0xff)) & HashMask;
hashHead = Head[InsH] & 0xffff;
Prev[Strstart & WMask] = Head[InsH];
Head[InsH] = unchecked((short) Strstart);
}
if (hashHead != 0L && ((Strstart - hashHead) & 0xffff) <= WSize - MinLookahead)
if (CompressionStrategy != CompressionStrategy.HuffmanOnly)
MatchLength = Longest_match(hashHead);
bool bflush;
if (MatchLength >= MinMatch)
{
bflush = Tr_tally(Strstart - MatchStart, MatchLength - MinMatch);
Lookahead -= MatchLength;
if (MatchLength <= _config.MaxLazy && Lookahead >= MinMatch)
{
MatchLength--;
do
{
Strstart++;
InsH = ((InsH << HashShift) ^ (Window[Strstart + (MinMatch - 1)] & 0xff)) & HashMask;
hashHead = Head[InsH] & 0xffff;
Prev[Strstart & WMask] = Head[InsH];
Head[InsH] = unchecked((short) Strstart);
} while (--MatchLength != 0);
Strstart++;
}
else
{
Strstart += MatchLength;
MatchLength = 0;
InsH = Window[Strstart] & 0xff;
InsH = ((InsH << HashShift) ^ (Window[Strstart + 1] & 0xff)) & HashMask;
}
}
else
{
bflush = Tr_tally(0, Window[Strstart] & 0xff);
Lookahead--;
Strstart++;
}
if (!bflush) continue;
Flush_block_only(false);
if (Codec.AvailableBytesOut == 0)
return BlockState.NeedMore;
}
Flush_block_only(flush == FlushType.Finish);
if (Codec.AvailableBytesOut != 0)
return flush == FlushType.Finish ? BlockState.FinishDone : BlockState.BlockDone;
return flush == FlushType.Finish ? BlockState.FinishStarted : BlockState.NeedMore;
}
internal BlockState DeflateSlow(FlushType flush)
{
var hashHead = 0;
while (true)
{
if (Lookahead < MinLookahead)
{
FillWindow();
if (Lookahead < MinLookahead && flush == FlushType.None)
return BlockState.NeedMore;
if (Lookahead == 0)
break;
}
if (Lookahead >= MinMatch)
{
InsH = ((InsH << HashShift) ^ (Window[Strstart + (MinMatch - 1)] & 0xff)) & HashMask;
hashHead = Head[InsH] & 0xffff;
Prev[Strstart & WMask] = Head[InsH];
Head[InsH] = unchecked((short) Strstart);
}
PrevLength = MatchLength;
PrevMatch = MatchStart;
MatchLength = MinMatch - 1;
if (hashHead != 0 && PrevLength < _config.MaxLazy &&
((Strstart - hashHead) & 0xffff) <= WSize - MinLookahead)
{
if (CompressionStrategy != CompressionStrategy.HuffmanOnly) MatchLength = Longest_match(hashHead);
if (MatchLength <= 5 && (CompressionStrategy == CompressionStrategy.Filtered ||
MatchLength == MinMatch && Strstart - MatchStart > 4096))
MatchLength = MinMatch - 1;
}
bool bflush;
if (PrevLength >= MinMatch && MatchLength <= PrevLength)
{
var maxInsert = Strstart + Lookahead - MinMatch;
bflush = Tr_tally(Strstart - 1 - PrevMatch, PrevLength - MinMatch);
Lookahead -= PrevLength - 1;
PrevLength -= 2;
do
{
if (++Strstart > maxInsert) continue;
InsH = ((InsH << HashShift) ^ (Window[Strstart + (MinMatch - 1)] & 0xff)) & HashMask;
hashHead = Head[InsH] & 0xffff;
Prev[Strstart & WMask] = Head[InsH];
Head[InsH] = unchecked((short) Strstart);
} while (--PrevLength != 0);
MatchAvailable = 0;
MatchLength = MinMatch - 1;
Strstart++;
if (!bflush) continue;
Flush_block_only(false);
if (Codec.AvailableBytesOut == 0)
return BlockState.NeedMore;
}
else if (MatchAvailable != 0)
{
bflush = Tr_tally(0, Window[Strstart - 1] & 0xff);
if (bflush) Flush_block_only(false);
Strstart++;
Lookahead--;
if (Codec.AvailableBytesOut == 0)
return BlockState.NeedMore;
}
else
{
MatchAvailable = 1;
Strstart++;
Lookahead--;
}
}
if (MatchAvailable != 0)
{
Tr_tally(0, Window[Strstart - 1] & 0xff);
MatchAvailable = 0;
}
Flush_block_only(flush == FlushType.Finish);
if (Codec.AvailableBytesOut != 0)
return flush == FlushType.Finish ? BlockState.FinishDone : BlockState.BlockDone;
return flush == FlushType.Finish ? BlockState.FinishStarted : BlockState.NeedMore;
}
internal int Longest_match(int curMatch)
{
var chainLength = _config.MaxChainLength;
var scan = Strstart;
var bestLen = PrevLength;
var limit = Strstart > WSize - MinLookahead ? Strstart - (WSize - MinLookahead) : 0;
var niceLength = _config.NiceLength;
var wmask = WMask;
var strend = Strstart + MaxMatch;
var scanEnd1 = Window[scan + bestLen - 1];
var scanEnd = Window[scan + bestLen];
if (PrevLength >= _config.GoodLength) chainLength >>= 2;
if (niceLength > Lookahead)
niceLength = Lookahead;
do
{
var match = curMatch;
if (Window[match + bestLen] != scanEnd ||
Window[match + bestLen - 1] != scanEnd1 ||
Window[match] != Window[scan] ||
Window[++match] != Window[scan + 1])
continue;
scan += 2;
match++;
do
{
} while (Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] &&
Window[++scan] == Window[++match] && scan < strend);
var len = MaxMatch - (strend - scan);
scan = strend - MaxMatch;
if (len <= bestLen) continue;
MatchStart = curMatch;
bestLen = len;
if (len >= niceLength)
break;
scanEnd1 = Window[scan + bestLen - 1];
scanEnd = Window[scan + bestLen];
} while ((curMatch = Prev[curMatch & wmask] & 0xffff) > limit && --chainLength != 0);
return bestLen <= Lookahead ? bestLen : Lookahead;
}
internal int Initialize(ZlibCodec codec, CompressionLevel level)
{
return Initialize(codec, level, ZlibConstants.WindowBitsMax);
}
internal int Initialize(ZlibCodec codec, CompressionLevel level, int bits)
{
return Initialize(codec, level, bits, MemLevelDefault, CompressionStrategy.Default);
}
internal int Initialize(ZlibCodec codec, CompressionLevel level, int bits,
CompressionStrategy compressionStrategy)
{
return Initialize(codec, level, bits, MemLevelDefault, compressionStrategy);
}
internal int Initialize(ZlibCodec codec, CompressionLevel level, int windowBits, int memLevel,
CompressionStrategy strategy)
{
Codec = codec;
Codec.Message = null;
if (windowBits < 9 || windowBits > 15)
throw new ZlibException("windowBits must be in the range 9..15.");
if (memLevel < 1 || memLevel > MemLevelMax)
throw new ZlibException($"memLevel must be in the range 1.. {MemLevelMax}");
Codec.Dstate = this;
WBits = windowBits;
WSize = 1 << WBits;
WMask = WSize - 1;
HashBits = memLevel + 7;
HashSize = 1 << HashBits;
HashMask = HashSize - 1;
HashShift = (HashBits + MinMatch - 1) / MinMatch;
Window = new byte[WSize * 2];
Prev = new short[WSize];
Head = new short[HashSize];
LitBufsize = 1 << (memLevel + 6);
Pending = new byte[LitBufsize * 4];
DistanceOffset = LitBufsize;
LengthOffset = (1 + 2) * LitBufsize;
CompressionLevel = level;
CompressionStrategy = strategy;
Reset();
return ZlibConstants.ZOk;
}
internal void Reset()
{
Codec.TotalBytesIn = Codec.TotalBytesOut = 0;
Codec.Message = null;
PendingCount = 0;
NextPending = 0;
_rfc1950BytesEmitted = false;
Status = WantRfc1950HeaderBytes ? InitState : BusyState;
Codec._Adler32 = Adler.Adler32(0, null, 0, 0);
LastFlush = (int) FlushType.None;
InitializeTreeData();
InitializeLazyMatch();
}
internal int End()
{
if (Status != InitState && Status != BusyState && Status != FinishState)
return ZlibConstants.ZStreamError;
Pending = null;
Head = null;
Prev = null;
Window = null;
return Status == BusyState ? ZlibConstants.ZDataError : ZlibConstants.ZOk;
}
private void SetDeflater()
{
switch (_config.Flavor)
{
case DeflateFlavor.Store:
_deflateFunction = DeflateNone;
break;
case DeflateFlavor.Fast:
_deflateFunction = DeflateFast;
break;
case DeflateFlavor.Slow:
_deflateFunction = DeflateSlow;
break;
}
}
internal int SetParams(CompressionLevel level, CompressionStrategy strategy)
{
var result = ZlibConstants.ZOk;
if (CompressionLevel != level)
{
var newConfig = Config.Lookup(level);
if (newConfig.Flavor != _config.Flavor && Codec.TotalBytesIn != 0)
result = Codec.Deflate(FlushType.Partial);
CompressionLevel = level;
_config = newConfig;
SetDeflater();
}
CompressionStrategy = strategy;
return result;
}
internal int SetDictionary(byte[] dictionary)
{
var length = dictionary.Length;
var index = 0;
if (dictionary == null || Status != InitState)
throw new ZlibException("Stream error.");
Codec._Adler32 = Adler.Adler32(Codec._Adler32, dictionary, 0, dictionary.Length);
if (length < MinMatch)
return ZlibConstants.ZOk;
if (length > WSize - MinLookahead)
{
length = WSize - MinLookahead;
index = dictionary.Length - length;
}
Array.Copy(dictionary, index, Window, 0, length);
Strstart = length;
BlockStart = length;
InsH = Window[0] & 0xff;
InsH = ((InsH << HashShift) ^ (Window[1] & 0xff)) & HashMask;
for (var n = 0; n <= length - MinMatch; n++)
{
InsH = ((InsH << HashShift) ^ (Window[n + (MinMatch - 1)] & 0xff)) & HashMask;
Prev[n & WMask] = Head[InsH];
Head[InsH] = (short) n;
}
return ZlibConstants.ZOk;
}
internal int Deflate(FlushType flush)
{
if (Codec.OutputBuffer == null ||
Codec.InputBuffer == null && Codec.AvailableBytesIn != 0 ||
Status == FinishState && flush != FlushType.Finish)
{
Codec.Message = ErrorMessage[ZlibConstants.ZNeedDict - ZlibConstants.ZStreamError];
throw new ZlibException($"Something is fishy. [{Codec.Message}]");
}
if (Codec.AvailableBytesOut == 0)
{
Codec.Message = ErrorMessage[ZlibConstants.ZNeedDict - ZlibConstants.ZBufError];
throw new ZlibException("OutputBuffer is full (AvailableBytesOut == 0)");
}
var oldFlush = LastFlush;
LastFlush = (int) flush;
if (Status == InitState)
{
var header = (ZDeflated + ((WBits - 8) << 4)) << 8;
var levelFlags = (((int) CompressionLevel - 1) & 0xff) >> 1;
if (levelFlags > 3)
levelFlags = 3;
header |= levelFlags << 6;
if (Strstart != 0)
header |= PresetDict;
header += 31 - header % 31;
Status = BusyState;
unchecked
{
Pending[PendingCount++] = (byte) (header >> 8);
Pending[PendingCount++] = (byte) header;
}
if (Strstart != 0)
{
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0xFF000000) >> 24);
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0x00FF0000) >> 16);
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0x0000FF00) >> 8);
Pending[PendingCount++] = (byte) (Codec._Adler32 & 0x000000FF);
}
Codec._Adler32 = Adler.Adler32(0, null, 0, 0);
}
if (PendingCount != 0)
{
Codec.Flush_pending();
if (Codec.AvailableBytesOut == 0)
{
LastFlush = -1;
return ZlibConstants.ZOk;
}
}
else if (Codec.AvailableBytesIn == 0 &&
(int) flush <= oldFlush &&
flush != FlushType.Finish)
{
return ZlibConstants.ZOk;
}
if (Status == FinishState && Codec.AvailableBytesIn != 0)
{
Codec.Message = ErrorMessage[ZlibConstants.ZNeedDict - ZlibConstants.ZBufError];
throw new ZlibException("status == FINISH_STATE && _codec.AvailableBytesIn != 0");
}
if (Codec.AvailableBytesIn != 0 || Lookahead != 0 || flush != FlushType.None && Status != FinishState)
{
var bstate = _deflateFunction(flush);
if (bstate == BlockState.FinishStarted || bstate == BlockState.FinishDone) Status = FinishState;
switch (bstate)
{
case BlockState.NeedMore:
case BlockState.FinishStarted:
{
if (Codec.AvailableBytesOut == 0) LastFlush = -1;
return ZlibConstants.ZOk;
}
case BlockState.BlockDone:
{
if (flush == FlushType.Partial)
{
Tr_align();
}
else
{
Tr_stored_block(0, 0, false);
if (flush == FlushType.Full)
for (var i = 0; i < HashSize; i++)
Head[i] = 0;
}
Codec.Flush_pending();
if (Codec.AvailableBytesOut == 0)
{
LastFlush = -1;
return ZlibConstants.ZOk;
}
break;
}
}
}
if (flush != FlushType.Finish)
return ZlibConstants.ZOk;
if (!WantRfc1950HeaderBytes || _rfc1950BytesEmitted)
return ZlibConstants.ZStreamEnd;
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0xFF000000) >> 24);
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0x00FF0000) >> 16);
Pending[PendingCount++] = (byte) ((Codec._Adler32 & 0x0000FF00) >> 8);
Pending[PendingCount++] = (byte) (Codec._Adler32 & 0x000000FF);
Codec.Flush_pending();
_rfc1950BytesEmitted = true;
return PendingCount != 0 ? ZlibConstants.ZOk : ZlibConstants.ZStreamEnd;
}
internal delegate BlockState CompressFunc(FlushType flush);
internal class Config
{
private static readonly Config[] Table;
internal DeflateFlavor Flavor;
internal int GoodLength;
internal int MaxChainLength;
internal int MaxLazy;
internal int NiceLength;
static Config()
{
Table = new[]
{
new Config(0, 0, 0, 0, DeflateFlavor.Store),
new Config(4, 4, 8, 4, DeflateFlavor.Fast),
new Config(4, 5, 16, 8, DeflateFlavor.Fast),
new Config(4, 6, 32, 32, DeflateFlavor.Fast),
new Config(4, 4, 16, 16, DeflateFlavor.Slow),
new Config(8, 16, 32, 32, DeflateFlavor.Slow),
new Config(8, 16, 128, 128, DeflateFlavor.Slow),
new Config(8, 32, 128, 256, DeflateFlavor.Slow),
new Config(32, 128, 258, 1024, DeflateFlavor.Slow),
new Config(32, 258, 258, 4096, DeflateFlavor.Slow)
};
}
private Config(int goodLength, int maxLazy, int niceLength, int maxChainLength, DeflateFlavor flavor)
{
GoodLength = goodLength;
MaxLazy = maxLazy;
NiceLength = niceLength;
MaxChainLength = maxChainLength;
Flavor = flavor;
}
public static Config Lookup(CompressionLevel level)
{
return Table[(int) level];
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/DeflateStream.cs
================================================
using System;
using System.IO;
namespace BrawlStars.Utilities.Compression.ZLib
{
public class DeflateStream : Stream
{
private bool _disposed;
internal ZlibBaseStream BaseStream;
internal Stream InnerStream;
public DeflateStream(Stream stream, CompressionMode mode)
: this(stream, mode, CompressionLevel.Default, false)
{
}
public DeflateStream(Stream stream, CompressionMode mode, CompressionLevel level)
: this(stream, mode, level, false)
{
}
public DeflateStream(Stream stream, CompressionMode mode, bool leaveOpen)
: this(stream, mode, CompressionLevel.Default, leaveOpen)
{
}
public DeflateStream(Stream stream, CompressionMode mode, CompressionLevel level, bool leaveOpen)
{
InnerStream = stream;
BaseStream = new ZlibBaseStream(stream, mode, level, ZlibStreamFlavor.Deflate, leaveOpen);
}
public int BufferSize
{
get => BaseStream.BufferSize;
set
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
if (BaseStream._workingBuffer != null)
throw new ZlibException("The working buffer is already set.");
if (value < ZlibConstants.WorkingBufferSizeMin)
throw new ZlibException(
$"Don't be silly. {value} bytes?? Use a bigger buffer, at least {ZlibConstants.WorkingBufferSizeMin}.");
BaseStream.BufferSize = value;
}
}
public override bool CanRead
{
get
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
return BaseStream.Stream.CanRead;
}
}
public override bool CanSeek => false;
public override bool CanWrite
{
get
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
return BaseStream.Stream.CanWrite;
}
}
public virtual FlushType FlushMode
{
get => BaseStream.FlushMode;
set
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
BaseStream.FlushMode = value;
}
}
public override long Length => throw new NotImplementedException();
public override long Position
{
get
{
switch (BaseStream._streamMode)
{
case ZlibBaseStream.StreamMode.Writer:
return BaseStream.Z.TotalBytesOut;
case ZlibBaseStream.StreamMode.Reader:
return BaseStream.Z.TotalBytesIn;
default:
return 0;
}
}
set => throw new NotImplementedException();
}
public CompressionStrategy Strategy
{
get => BaseStream.Strategy;
set
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
BaseStream.Strategy = value;
}
}
public virtual long TotalIn => BaseStream.Z.TotalBytesIn;
public virtual long TotalOut => BaseStream.Z.TotalBytesOut;
protected override void Dispose(bool disposing)
{
try
{
if (_disposed) return;
if (disposing)
BaseStream?.Close();
_disposed = true;
}
finally
{
base.Dispose(disposing);
}
}
public static byte[] CompressBuffer(byte[] b)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new DeflateStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression);
ZlibBaseStream.CompressBuffer(b, compressor);
return ms.ToArray();
}
}
public static byte[] CompressString(string s)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new DeflateStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression);
ZlibBaseStream.CompressString(s, compressor);
return ms.ToArray();
}
}
public static byte[] UncompressBuffer(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor =
new DeflateStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressBuffer(decompressor);
}
}
public static string UncompressString(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor =
new DeflateStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressString(decompressor);
}
}
public override void Flush()
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
BaseStream.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
return BaseStream.Read(buffer, offset, count);
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
throw new NotImplementedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("DeflateStream");
BaseStream.Write(buffer, offset, count);
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/GZipStream.cs
================================================
using System;
using System.IO;
using System.Text;
namespace BrawlStars.Utilities.Compression.ZLib
{
public class GZipStream : Stream
{
internal static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
internal static readonly Encoding Iso8859dash1 = Encoding.GetEncoding("iso-8859-1");
private string _comment;
private bool _disposed;
private string _fileName;
private bool _firstReadDone;
private int _headerByteCount;
internal ZlibBaseStream BaseStream;
public DateTime? LastModified;
public GZipStream(Stream stream, CompressionMode mode)
: this(stream, mode, CompressionLevel.Default, false)
{
}
public GZipStream(Stream stream, CompressionMode mode, CompressionLevel level)
: this(stream, mode, level, false)
{
}
public GZipStream(Stream stream, CompressionMode mode, bool leaveOpen)
: this(stream, mode, CompressionLevel.Default, leaveOpen)
{
}
public GZipStream(Stream stream, CompressionMode mode, CompressionLevel level, bool leaveOpen)
{
BaseStream = new ZlibBaseStream(stream, mode, level, ZlibStreamFlavor.Gzip, leaveOpen);
}
public string Comment
{
get => _comment;
set
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
_comment = value;
}
}
public string FileName
{
get => _fileName;
set
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
_fileName = value;
if (_fileName == null)
return;
if (_fileName.IndexOf("/", StringComparison.Ordinal) != -1) _fileName = _fileName.Replace("/", "\\");
if (_fileName.EndsWith("\\"))
throw new Exception("Illegal filename");
if (_fileName.IndexOf("\\", StringComparison.Ordinal) != -1)
_fileName = Path.GetFileName(_fileName);
}
}
public int Crc32 { get; private set; }
public virtual FlushType FlushMode
{
get => BaseStream.FlushMode;
set
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
BaseStream.FlushMode = value;
}
}
public int BufferSize
{
get => BaseStream.BufferSize;
set
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
if (BaseStream._workingBuffer != null)
throw new ZlibException("The working buffer is already set.");
if (value < ZlibConstants.WorkingBufferSizeMin)
throw new ZlibException(
$"Don't be silly. {value} bytes?? Use a bigger buffer, at least {ZlibConstants.WorkingBufferSizeMin}.");
BaseStream.BufferSize = value;
}
}
public virtual long TotalIn => BaseStream.Z.TotalBytesIn;
public virtual long TotalOut => BaseStream.Z.TotalBytesOut;
public override bool CanRead
{
get
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
return BaseStream.Stream.CanRead;
}
}
public override bool CanSeek => false;
public override bool CanWrite
{
get
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
return BaseStream.Stream.CanWrite;
}
}
public override long Length => throw new NotImplementedException();
public override long Position
{
get
{
switch (BaseStream._streamMode)
{
case ZlibBaseStream.StreamMode.Writer:
return BaseStream.Z.TotalBytesOut + _headerByteCount;
case ZlibBaseStream.StreamMode.Reader:
return BaseStream.Z.TotalBytesIn + BaseStream.GzipHeaderByteCount;
default:
return 0;
}
}
set => throw new NotImplementedException();
}
protected override void Dispose(bool disposing)
{
try
{
if (_disposed) return;
if (disposing && BaseStream != null)
{
BaseStream.Close();
Crc32 = BaseStream.Crc32;
}
_disposed = true;
}
finally
{
base.Dispose(disposing);
}
}
public override void Flush()
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
BaseStream.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
var n = BaseStream.Read(buffer, offset, count);
if (_firstReadDone) return n;
_firstReadDone = true;
FileName = BaseStream.GzipFileName;
Comment = BaseStream.GzipComment;
return n;
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
throw new NotImplementedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("GZipStream");
if (BaseStream._streamMode == ZlibBaseStream.StreamMode.Undefined)
{
if (BaseStream.WantCompress)
_headerByteCount = EmitHeader();
else throw new InvalidOperationException();
}
BaseStream.Write(buffer, offset, count);
}
private int EmitHeader()
{
var commentBytes = Comment == null ? null : Iso8859dash1.GetBytes(Comment);
var filenameBytes = FileName == null ? null : Iso8859dash1.GetBytes(FileName);
if (commentBytes != null)
{
var cbLength = Comment == null ? 0 : commentBytes.Length + 1;
if (filenameBytes != null)
{
var fnLength = FileName == null ? 0 : filenameBytes.Length + 1;
var bufferLength = 10 + cbLength + fnLength;
var header = new byte[bufferLength];
var i = 0;
header[i++] = 0x1F;
header[i++] = 0x8B;
header[i++] = 8;
byte flag = 0;
if (Comment != null)
flag ^= 0x10;
if (FileName != null)
flag ^= 0x8;
header[i++] = flag;
if (!LastModified.HasValue)
LastModified = DateTime.Now;
var delta = LastModified.Value - UnixEpoch;
var timet = (int) delta.TotalSeconds;
Array.Copy(BitConverter.GetBytes(timet), 0, header, i, 4);
i += 4;
header[i++] = 0;
header[i++] = 0xFF;
if (fnLength != 0)
{
Array.Copy(filenameBytes, 0, header, i, fnLength - 1);
i += fnLength - 1;
header[i++] = 0;
}
if (cbLength != 0)
{
Array.Copy(commentBytes, 0, header, i, cbLength - 1);
i += cbLength - 1;
header[i++] = 0;
}
BaseStream.Stream.Write(header, 0, header.Length);
return header.Length;
}
}
return 0;
}
public static byte[] CompressString(string s)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new GZipStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression);
ZlibBaseStream.CompressString(s, compressor);
return ms.ToArray();
}
}
public static byte[] CompressBuffer(byte[] b)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new GZipStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression);
ZlibBaseStream.CompressBuffer(b, compressor);
return ms.ToArray();
}
}
public static string UncompressString(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor = new GZipStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressString(decompressor);
}
}
public static byte[] UncompressBuffer(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor =
new GZipStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressBuffer(decompressor);
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/InfTree.cs
================================================
using System;
using System.Collections.Generic;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal sealed class InfTree
{
internal const int Bmax = 15;
internal const int FixedBd = 5;
internal const int FixedBl = 9;
private const int Many = 1440;
private const int ZBufError = -5;
private const int ZDataError = -3;
private const int ZMemError = -4;
private const int ZOk = 0;
internal static readonly int[] Cpdext =
{
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10,
10, 11, 11, 12, 12, 13, 13
};
internal static readonly int[] Cpdist =
{
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385,
513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577
};
internal static readonly int[] Cplens =
{
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59,
67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
};
internal static readonly int[] Cplext =
{
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,
5, 5, 5, 5, 0, 112, 112
};
internal static readonly int[] FixedTd =
{
80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025,
85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129,
192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577,
80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577
};
internal static readonly int[] FixedTl =
{
96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96,
0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83,
7,
59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72,
0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13,
0,
8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9,
152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8,
140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9,
196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90,
0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180,
0,
8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8,
54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9,
0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0,
9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0,
8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9,
226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8,
105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258,
83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0,
8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7,
23, 0, 8, 109, 0, 8, 45, 0, 9, 186,
0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0,
8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7,
7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43,
0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0,
8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9,
238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8,
111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8,
115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8,
128,
0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81,
7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8,
20,
85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4,
0,
8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9,
217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8,
82,
0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165,
0,
8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8,
58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7,
5,
0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0,
9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8,
126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8,
14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8,
49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6,
0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0,
9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8,
117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9,
235,
80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0,
8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7,
35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67,
0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0,
8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8,
0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135,
0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82,
7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255
};
internal int[] C;
internal int[] Hn;
internal int[] R;
internal int[] U;
internal int[] V;
internal int[] X;
internal static int Inflate_trees_fixed(int[] bl, int[] bd, int[][] tl, int[][] td, ZlibCodec z)
{
bl[0] = FixedBl;
bd[0] = FixedBd;
tl[0] = FixedTl;
td[0] = FixedTd;
return ZOk;
}
internal int Inflate_trees_bits(int[] c, int[] bb, int[] tb, int[] hp, ZlibCodec z)
{
InitWorkArea(19);
Hn[0] = 0;
var result = Huft_build(c, 0, 19, 19, null, null, tb, bb, hp, Hn, V);
if (result == ZDataError)
{
z.Message = "oversubscribed dynamic bit lengths tree";
}
else if (result == ZBufError || bb[0] == 0)
{
z.Message = "incomplete dynamic bit lengths tree";
result = ZDataError;
}
return result;
}
internal int Inflate_trees_dynamic(int nl, int nd, int[] c, int[] bl, int[] bd, int[] tl, int[] td, int[] hp,
ZlibCodec z)
{
InitWorkArea(288);
Hn[0] = 0;
var result = Huft_build(c, 0, nl, 257, Cplens, Cplext, tl, bl, hp, Hn, V);
if (result != ZOk || bl[0] == 0)
{
if (result == ZDataError)
{
z.Message = "oversubscribed literal/length tree";
}
else if (result != ZMemError)
{
z.Message = "incomplete literal/length tree";
result = ZDataError;
}
return result;
}
InitWorkArea(288);
result = Huft_build(c, nl, nd, 0, Cpdist, Cpdext, td, bd, hp, Hn, V);
switch (result)
{
case ZOk when bd[0] != 0 || nl <= 257:
return ZOk;
case ZDataError:
z.Message = "oversubscribed distance tree";
break;
case ZBufError:
z.Message = "incomplete distance tree";
result = ZDataError;
break;
default:
{
if (result != ZMemError)
{
z.Message = "empty distance tree with lengths";
result = ZDataError;
}
break;
}
}
return result;
}
private int Huft_build(IReadOnlyList b, int bindex, int n, int s, IReadOnlyList d,
IReadOnlyList e, IList t, IList m, int[] hp,
IList hn,
IList v)
{
int j;
int y;
var p = 0;
var i = n;
do
{
C[b[bindex + p]]++;
p++;
i--;
} while (i != 0);
if (C[0] == n)
{
t[0] = -1;
m[0] = 0;
return ZOk;
}
var l = m[0];
for (j = 1; j <= Bmax; j++)
if (C[j] != 0)
break;
var k = j;
if (l < j) l = j;
for (i = Bmax; i != 0; i--)
if (C[i] != 0)
break;
var g = i;
if (l > i) l = i;
m[0] = l;
for (y = 1 << j; j < i; j++, y <<= 1)
if ((y -= C[j]) < 0)
return ZDataError;
if ((y -= C[i]) < 0) return ZDataError;
C[i] += y;
X[1] = j = 0;
p = 1;
var xp = 2;
while (--i != 0)
{
X[xp] = j += C[p];
xp++;
p++;
}
i = 0;
p = 0;
do
{
if ((j = b[bindex + p]) != 0) v[X[j]++] = i;
p++;
} while (++i < n);
n = X[g];
X[0] = i = 0;
p = 0;
var h = -1;
var w = -l;
U[0] = 0;
var q = 0;
var z = 0;
for (; k <= g; k++)
{
var a = C[k];
while (a-- != 0)
{
int f;
while (k > w + l)
{
h++;
w += l;
z = g - w;
z = z > l ? l : z;
if ((f = 1 << (j = k - w)) > a + 1)
{
f -= a + 1;
xp = k;
if (j < z)
while (++j < z)
{
if ((f <<= 1) <= C[++xp])
break;
f -= C[xp];
}
}
z = 1 << j;
if (hn[0] + z > Many)
return ZDataError;
U[h] = q = hn[0];
hn[0] += z;
if (h != 0)
{
X[h] = i;
R[0] = (sbyte) j;
R[1] = (sbyte) l;
j = SharedUtils.UrShift(i, w - l);
R[2] = q - U[h - 1] - j;
Array.Copy(R, 0, hp, (U[h - 1] + j) * 3, 3);
}
else
{
t[0] = q;
}
}
R[1] = (sbyte) (k - w);
if (p >= n)
{
R[0] = 128 + 64;
}
else if (v[p] < s)
{
R[0] = (sbyte) (v[p] < 256 ? 0 : 32 + 64);
R[2] = v[p++];
}
else
{
R[0] = (sbyte) (e[v[p] - s] + 16 + 64);
R[2] = d[v[p++] - s];
}
f = 1 << (k - w);
for (j = SharedUtils.UrShift(i, w); j < z; j += f) Array.Copy(R, 0, hp, (q + j) * 3, 3);
for (j = 1 << (k - 1); (i & j) != 0; j = SharedUtils.UrShift(j, 1)) i ^= j;
i ^= j;
var mask = (1 << w) - 1;
while ((i & mask) != X[h])
{
h--;
w -= l;
mask = (1 << w) - 1;
}
}
}
return y != 0 && g != 1 ? ZBufError : ZOk;
}
private void InitWorkArea(int vsize)
{
if (Hn == null)
{
Hn = new int[1];
V = new int[vsize];
C = new int[Bmax + 1];
R = new int[3];
U = new int[Bmax];
X = new int[Bmax + 1];
}
else
{
if (V.Length < vsize) V = new int[vsize];
Array.Clear(V, 0, vsize);
Array.Clear(C, 0, Bmax + 1);
R[0] = 0;
R[1] = 0;
R[2] = 0;
Array.Clear(U, 0, Bmax);
Array.Clear(X, 0, Bmax + 1);
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/Inflate.cs
================================================
using System;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal static class InternalInflateConstants
{
internal static readonly int[] InflateMask =
{
0x00000000, 0x00000001, 0x00000003, 0x00000007,
0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff
};
}
internal sealed class InflateBlocks
{
private const int Many = 1440;
internal static readonly int[] Border = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
private InflateBlockMode _mode;
internal int[] Bb = new int[1];
internal int Bitb;
internal int Bitk;
internal int[] Blens;
internal uint Check;
internal object Checkfn;
internal ZlibCodec Codec;
internal InflateCodes Codes = new InflateCodes();
internal int End;
internal int[] Hufts;
internal int Index;
internal InfTree Inftree = new InfTree();
internal int Last;
internal int Left;
internal int ReadAt;
internal int Table;
internal int[] Tb = new int[1];
internal byte[] Window;
internal int WriteAt;
internal InflateBlocks(ZlibCodec codec, object checkfn, int w)
{
Codec = codec;
Hufts = new int[Many * 3];
Window = new byte[w];
End = w;
Checkfn = checkfn;
_mode = InflateBlockMode.TYPE;
Reset();
}
internal int Flush(int r)
{
for (var pass = 0; pass < 2; pass++)
{
int nBytes;
if (pass == 0)
nBytes = (ReadAt <= WriteAt ? WriteAt : End) - ReadAt;
else
nBytes = WriteAt - ReadAt;
if (nBytes == 0)
{
if (r == ZlibConstants.ZBufError)
r = ZlibConstants.ZOk;
return r;
}
if (nBytes > Codec.AvailableBytesOut)
nBytes = Codec.AvailableBytesOut;
if (nBytes != 0 && r == ZlibConstants.ZBufError)
r = ZlibConstants.ZOk;
Codec.AvailableBytesOut -= nBytes;
Codec.TotalBytesOut += nBytes;
if (Checkfn != null)
Codec._Adler32 = Check = Adler.Adler32(Check, Window, ReadAt, nBytes);
Array.Copy(Window, ReadAt, Codec.OutputBuffer, Codec.NextOut, nBytes);
Codec.NextOut += nBytes;
ReadAt += nBytes;
if (ReadAt == End && pass == 0)
{
ReadAt = 0;
if (WriteAt == End)
WriteAt = 0;
}
else
{
pass++;
}
}
return r;
}
internal void Free()
{
Reset();
Window = null;
Hufts = null;
}
internal int Process(int r)
{
int t;
var p = Codec.NextIn;
var n = Codec.AvailableBytesIn;
var b = Bitb;
var k = Bitk;
var q = WriteAt;
var m = q < ReadAt ? ReadAt - q - 1 : End - q;
while (true)
switch (_mode)
{
case InflateBlockMode.TYPE:
while (k < 3)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
t = b & 7;
Last = t & 1;
switch ((uint) t >> 1)
{
case 0:
b >>= 3;
k -= 3;
t = k & 7;
b >>= t;
k -= t;
_mode = InflateBlockMode.LENS;
break;
case 1:
var bl = new int[1];
var bd = new int[1];
var tl = new int[1][];
var td = new int[1][];
InfTree.Inflate_trees_fixed(bl, bd, tl, td, Codec);
Codes.Init(bl[0], bd[0], tl[0], 0, td[0], 0);
b >>= 3;
k -= 3;
_mode = InflateBlockMode.CODES;
break;
case 2:
b >>= 3;
k -= 3;
_mode = InflateBlockMode.TABLE;
break;
case 3:
b >>= 3;
k -= 3;
_mode = InflateBlockMode.BAD;
Codec.Message = "invalid block type";
r = ZlibConstants.ZDataError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
break;
case InflateBlockMode.LENS:
while (k < 32)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
;
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
if (((~b >> 16) & 0xffff) != (b & 0xffff))
{
_mode = InflateBlockMode.BAD;
Codec.Message = "invalid stored block lengths";
r = ZlibConstants.ZDataError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
Left = b & 0xffff;
b = k = 0;
_mode = Left != 0
? InflateBlockMode.STORED
: Last != 0
? InflateBlockMode.DRY
: InflateBlockMode.TYPE;
break;
case InflateBlockMode.STORED:
if (n == 0)
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
if (m == 0)
{
if (q == End && ReadAt != 0)
{
q = 0;
m = q < ReadAt ? ReadAt - q - 1 : End - q;
}
if (m == 0)
{
WriteAt = q;
r = Flush(r);
q = WriteAt;
m = q < ReadAt ? ReadAt - q - 1 : End - q;
if (q == End && ReadAt != 0)
{
q = 0;
m = q < ReadAt ? ReadAt - q - 1 : End - q;
}
if (m == 0)
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
}
}
r = ZlibConstants.ZOk;
t = Left;
if (t > n)
t = n;
if (t > m)
t = m;
Array.Copy(Codec.InputBuffer, p, Window, q, t);
p += t;
n -= t;
q += t;
m -= t;
if ((Left -= t) != 0)
break;
_mode = Last != 0 ? InflateBlockMode.DRY : InflateBlockMode.TYPE;
break;
case InflateBlockMode.TABLE:
while (k < 14)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
Table = t = b & 0x3fff;
if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
{
_mode = InflateBlockMode.BAD;
Codec.Message = "too many length or distance symbols";
r = ZlibConstants.ZDataError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
if (Blens == null || Blens.Length < t) Blens = new int[t];
else
Array.Clear(Blens, 0, t);
b >>= 14;
k -= 14;
Index = 0;
_mode = InflateBlockMode.BTREE;
goto case InflateBlockMode.BTREE;
case InflateBlockMode.BTREE:
while (Index < 4 + (Table >> 10))
{
while (k < 3)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
Blens[Border[Index++]] = b & 7;
b >>= 3;
k -= 3;
}
while (Index < 19) Blens[Border[Index++]] = 0;
Bb[0] = 7;
t = Inftree.Inflate_trees_bits(Blens, Bb, Tb, Hufts, Codec);
if (t != ZlibConstants.ZOk)
{
r = t;
if (r == ZlibConstants.ZDataError)
{
Blens = null;
_mode = InflateBlockMode.BAD;
}
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
Index = 0;
_mode = InflateBlockMode.DTREE;
goto case InflateBlockMode.DTREE;
case InflateBlockMode.DTREE:
while (true)
{
t = Table;
if (!(Index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) break;
t = Bb[0];
while (k < t)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
t = Hufts[(Tb[0] + (b & InternalInflateConstants.InflateMask[t])) * 3 + 1];
var c = Hufts[(Tb[0] + (b & InternalInflateConstants.InflateMask[t])) * 3 + 2];
if (c < 16)
{
b >>= t;
k -= t;
Blens[Index++] = c;
}
else
{
var i = c == 18 ? 7 : c - 14;
var j = c == 18 ? 11 : 3;
while (k < t + i)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
n--;
b |= (Codec.InputBuffer[p++] & 0xff) << k;
k += 8;
}
b >>= t;
k -= t;
j += b & InternalInflateConstants.InflateMask[i];
b >>= i;
k -= i;
i = Index;
t = Table;
if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || c == 16 && i < 1)
{
Blens = null;
_mode = InflateBlockMode.BAD;
Codec.Message = "invalid bit length repeat";
r = ZlibConstants.ZDataError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
c = c == 16 ? Blens[i - 1] : 0;
do
{
Blens[i++] = c;
} while (--j != 0);
Index = i;
}
}
Tb[0] = -1;
{
int[] bl = {9};
int[] bd = {6};
var tl = new int[1];
var td = new int[1];
t = Table;
t = Inftree.Inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), Blens, bl, bd, tl,
td,
Hufts, Codec);
if (t != ZlibConstants.ZOk)
{
if (t == ZlibConstants.ZDataError)
{
Blens = null;
_mode = InflateBlockMode.BAD;
}
r = t;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
Codes.Init(bl[0], bd[0], Hufts, tl[0], Hufts, td[0]);
}
_mode = InflateBlockMode.CODES;
goto case InflateBlockMode.CODES;
case InflateBlockMode.CODES:
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
r = Codes.Process(this, r);
if (r != ZlibConstants.ZStreamEnd) return Flush(r);
r = ZlibConstants.ZOk;
p = Codec.NextIn;
n = Codec.AvailableBytesIn;
b = Bitb;
k = Bitk;
q = WriteAt;
m = q < ReadAt ? ReadAt - q - 1 : End - q;
if (Last == 0)
{
_mode = InflateBlockMode.TYPE;
break;
}
_mode = InflateBlockMode.DRY;
goto case InflateBlockMode.DRY;
case InflateBlockMode.DRY:
WriteAt = q;
r = Flush(r);
q = WriteAt;
if (ReadAt != WriteAt)
{
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
_mode = InflateBlockMode.DONE;
goto case InflateBlockMode.DONE;
case InflateBlockMode.DONE:
r = ZlibConstants.ZStreamEnd;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
case InflateBlockMode.BAD:
r = ZlibConstants.ZDataError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
default:
r = ZlibConstants.ZStreamError;
Bitb = b;
Bitk = k;
Codec.AvailableBytesIn = n;
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
WriteAt = q;
return Flush(r);
}
}
internal uint Reset()
{
var oldCheck = Check;
_mode = InflateBlockMode.TYPE;
Bitk = 0;
Bitb = 0;
ReadAt = WriteAt = 0;
if (Checkfn != null)
Codec._Adler32 = Check = Adler.Adler32(0, null, 0, 0);
return oldCheck;
}
internal void SetDictionary(byte[] d, int start, int n)
{
Array.Copy(d, start, Window, 0, n);
ReadAt = WriteAt = n;
}
internal int SyncPoint()
{
return _mode == InflateBlockMode.LENS ? 1 : 0;
}
private enum InflateBlockMode
{
TYPE = 0, // get type bits (3, including end bit)
LENS = 1, // get lengths for stored
STORED = 2, // processing stored block
TABLE = 3, // get table lengths
BTREE = 4, // get bit lengths tree for a dynamic block
DTREE = 5, // get length, distance trees for a dynamic block
CODES = 6, // processing fixed or dynamic block
DRY = 7, // output remaining window bytes
DONE = 8, // finished last block, done
BAD = 9 // ot a data error--stuck here
}
}
internal sealed class InflateCodes
{
private const int BADCODE = 9;
private const int COPY = 5;
private const int DIST = 3;
private const int DISTEXT = 4;
private const int END = 8;
private const int LEN = 1;
private const int LENEXT = 2;
private const int LIT = 6;
private const int START = 0;
private const int WASH = 7;
internal int bitsToGet;
internal byte dbits;
internal int dist;
internal int[] dtree;
internal int dtree_index;
internal byte lbits;
internal int len;
internal int lit;
internal int[] ltree;
internal int ltree_index;
internal int mode;
internal int need;
internal int[] tree;
internal int tree_index;
internal int InflateFast(int bl, int bd, int[] tl, int tlIndex, int[] td, int tdIndex, InflateBlocks s,
ZlibCodec z)
{
int c;
var p = z.NextIn;
var n = z.AvailableBytesIn;
var b = s.Bitb;
var k = s.Bitk;
var q = s.WriteAt;
var m = q < s.ReadAt ? s.ReadAt - q - 1 : s.End - q;
var ml = InternalInflateConstants.InflateMask[bl];
var md = InternalInflateConstants.InflateMask[bd];
do
{
while (k < 20)
{
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
var t = b & ml;
var tp = tl;
var tpIndex = tlIndex;
var tpIndexT3 = (tpIndex + t) * 3;
int e;
if ((e = tp[tpIndexT3]) == 0)
{
b >>= tp[tpIndexT3 + 1];
k -= tp[tpIndexT3 + 1];
s.Window[q++] = (byte) tp[tpIndexT3 + 2];
m--;
continue;
}
do
{
b >>= tp[tpIndexT3 + 1];
k -= tp[tpIndexT3 + 1];
if ((e & 16) != 0)
{
e &= 15;
c = tp[tpIndexT3 + 2] + (b & InternalInflateConstants.InflateMask[e]);
b >>= e;
k -= e;
while (k < 15)
{
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
t = b & md;
tp = td;
tpIndex = tdIndex;
tpIndexT3 = (tpIndex + t) * 3;
e = tp[tpIndexT3];
do
{
b >>= tp[tpIndexT3 + 1];
k -= tp[tpIndexT3 + 1];
if ((e & 16) != 0)
{
e &= 15;
while (k < e)
{
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
var d = tp[tpIndexT3 + 2] + (b & InternalInflateConstants.InflateMask[e]);
b >>= e;
k -= e;
m -= c;
int r;
if (q >= d)
{
r = q - d;
if (q - r > 0 && 2 > q - r)
{
s.Window[q++] = s.Window[r++];
s.Window[q++] = s.Window[r++];
c -= 2;
}
else
{
Array.Copy(s.Window, r, s.Window, q, 2);
q += 2;
r += 2;
c -= 2;
}
}
else
{
r = q - d;
do
{
r += s.End;
} while (r < 0);
e = s.End - r;
if (c > e)
{
c -= e;
if (q - r > 0 && e > q - r)
{
do
{
s.Window[q++] = s.Window[r++];
} while (--e != 0);
}
else
{
Array.Copy(s.Window, r, s.Window, q, e);
q += e;
}
r = 0;
}
}
if (q - r > 0 && c > q - r)
{
do
{
s.Window[q++] = s.Window[r++];
} while (--c != 0);
}
else
{
Array.Copy(s.Window, r, s.Window, q, c);
q += c;
}
break;
}
if ((e & 64) == 0)
{
t += tp[tpIndexT3 + 2];
t += b & InternalInflateConstants.InflateMask[e];
tpIndexT3 = (tpIndex + t) * 3;
e = tp[tpIndexT3];
}
else
{
z.Message = "invalid distance code";
c = z.AvailableBytesIn - n;
c = k >> 3 < c ? k >> 3 : c;
n += c;
p -= c;
k -= c << 3;
s.Bitb = b;
s.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
s.WriteAt = q;
return ZlibConstants.ZDataError;
}
} while (true);
break;
}
if ((e & 64) == 0)
{
t += tp[tpIndexT3 + 2];
t += b & InternalInflateConstants.InflateMask[e];
tpIndexT3 = (tpIndex + t) * 3;
if ((e = tp[tpIndexT3]) != 0) continue;
b >>= tp[tpIndexT3 + 1];
k -= tp[tpIndexT3 + 1];
s.Window[q++] = (byte) tp[tpIndexT3 + 2];
m--;
break;
}
if ((e & 32) != 0)
{
c = z.AvailableBytesIn - n;
c = k >> 3 < c ? k >> 3 : c;
n += c;
p -= c;
k -= c << 3;
s.Bitb = b;
s.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
s.WriteAt = q;
return ZlibConstants.ZStreamEnd;
}
z.Message = "invalid literal/length code";
c = z.AvailableBytesIn - n;
c = k >> 3 < c ? k >> 3 : c;
n += c;
p -= c;
k -= c << 3;
s.Bitb = b;
s.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
s.WriteAt = q;
return ZlibConstants.ZDataError;
} while (true);
} while (m >= 258 && n >= 10);
c = z.AvailableBytesIn - n;
c = k >> 3 < c ? k >> 3 : c;
n += c;
p -= c;
k -= c << 3;
s.Bitb = b;
s.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
s.WriteAt = q;
return ZlibConstants.ZOk;
}
internal void Init(int bl, int bd, int[] tl, int tlIndex, int[] td, int tdIndex)
{
mode = START;
lbits = (byte) bl;
dbits = (byte) bd;
ltree = tl;
ltree_index = tlIndex;
dtree = td;
dtree_index = tdIndex;
tree = null;
}
internal int Process(InflateBlocks blocks, int r)
{
int j;
int tindex;
int e;
var z = blocks.Codec;
var p = z.NextIn;
var n = z.AvailableBytesIn;
var b = blocks.Bitb;
var k = blocks.Bitk;
var q = blocks.WriteAt;
var m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
while (true)
switch (mode)
{
case START:
if (m >= 258 && n >= 10)
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
r = InflateFast(lbits, dbits, ltree, ltree_index, dtree, dtree_index, blocks, z);
p = z.NextIn;
n = z.AvailableBytesIn;
b = blocks.Bitb;
k = blocks.Bitk;
q = blocks.WriteAt;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
if (r != ZlibConstants.ZOk)
{
mode = r == ZlibConstants.ZStreamEnd ? WASH : BADCODE;
break;
}
}
need = lbits;
tree = ltree;
tree_index = ltree_index;
mode = LEN;
goto case LEN;
case LEN:
j = need;
while (k < j)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
tindex = (tree_index + (b & InternalInflateConstants.InflateMask[j])) * 3;
b >>= tree[tindex + 1];
k -= tree[tindex + 1];
e = tree[tindex];
if (e == 0)
{
lit = tree[tindex + 2];
mode = LIT;
break;
}
if ((e & 16) != 0)
{
bitsToGet = e & 15;
len = tree[tindex + 2];
mode = LENEXT;
break;
}
if ((e & 64) == 0)
{
need = e;
tree_index = tindex / 3 + tree[tindex + 2];
break;
}
if ((e & 32) != 0)
{
mode = WASH;
break;
}
mode = BADCODE;
z.Message = "invalid literal/length code";
r = ZlibConstants.ZDataError;
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
case LENEXT:
j = bitsToGet;
while (k < j)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
len += b & InternalInflateConstants.InflateMask[j];
b >>= j;
k -= j;
need = dbits;
tree = dtree;
tree_index = dtree_index;
mode = DIST;
goto case DIST;
case DIST:
j = need;
while (k < j)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
tindex = (tree_index + (b & InternalInflateConstants.InflateMask[j])) * 3;
b >>= tree[tindex + 1];
k -= tree[tindex + 1];
e = tree[tindex];
if ((e & 0x10) != 0)
{
bitsToGet = e & 15;
dist = tree[tindex + 2];
mode = DISTEXT;
break;
}
if ((e & 64) == 0)
{
need = e;
tree_index = tindex / 3 + tree[tindex + 2];
break;
}
mode = BADCODE;
z.Message = "invalid distance code";
r = ZlibConstants.ZDataError;
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
case DISTEXT:
j = bitsToGet;
while (k < j)
{
if (n != 0)
{
r = ZlibConstants.ZOk;
}
else
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
n--;
b |= (z.InputBuffer[p++] & 0xff) << k;
k += 8;
}
dist += b & InternalInflateConstants.InflateMask[j];
b >>= j;
k -= j;
mode = COPY;
goto case COPY;
case COPY:
var f = q - dist;
while (f < 0)
f += blocks.End;
while (len != 0)
{
if (m == 0)
{
if (q == blocks.End && blocks.ReadAt != 0)
{
q = 0;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
}
if (m == 0)
{
blocks.WriteAt = q;
r = blocks.Flush(r);
q = blocks.WriteAt;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
if (q == blocks.End && blocks.ReadAt != 0)
{
q = 0;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
}
if (m == 0)
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
}
}
blocks.Window[q++] = blocks.Window[f++];
m--;
if (f == blocks.End)
f = 0;
len--;
}
mode = START;
break;
case LIT:
if (m == 0)
{
if (q == blocks.End && blocks.ReadAt != 0)
{
q = 0;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
}
if (m == 0)
{
blocks.WriteAt = q;
r = blocks.Flush(r);
q = blocks.WriteAt;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
if (q == blocks.End && blocks.ReadAt != 0)
{
q = 0;
m = q < blocks.ReadAt ? blocks.ReadAt - q - 1 : blocks.End - q;
}
if (m == 0)
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
}
}
r = ZlibConstants.ZOk;
blocks.Window[q++] = (byte) lit;
m--;
mode = START;
break;
case WASH:
if (k > 7)
{
k -= 8;
n++;
p--;
}
blocks.WriteAt = q;
r = blocks.Flush(r);
q = blocks.WriteAt;
if (blocks.ReadAt != blocks.WriteAt)
{
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
mode = END;
goto case END;
case END:
r = ZlibConstants.ZStreamEnd;
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
case BADCODE:
r = ZlibConstants.ZDataError;
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
default:
r = ZlibConstants.ZStreamError;
blocks.Bitb = b;
blocks.Bitk = k;
z.AvailableBytesIn = n;
z.TotalBytesIn += p - z.NextIn;
z.NextIn = p;
blocks.WriteAt = q;
return blocks.Flush(r);
}
}
}
internal sealed class InflateManager
{
private const int PresetDict = 0x20;
private const int ZDeflated = 8;
private static readonly byte[] Mark = {0, 0, 0xff, 0xff};
private InflateManagerMode _mode;
internal InflateBlocks Blocks;
internal ZlibCodec Codec;
internal uint ComputedCheck;
internal uint ExpectedCheck;
internal int Marker;
internal int Method;
internal int Wbits;
public InflateManager()
{
}
public InflateManager(bool expectRfc1950HeaderBytes)
{
HandleRfc1950HeaderBytes = expectRfc1950HeaderBytes;
}
internal bool HandleRfc1950HeaderBytes { get; set; } = true;
internal int End()
{
Blocks?.Free();
Blocks = null;
return ZlibConstants.ZOk;
}
internal int Inflate()
{
if (Codec.InputBuffer == null)
throw new ZlibException("InputBuffer is null. ");
const int f = ZlibConstants.ZOk;
var r = ZlibConstants.ZBufError;
while (true)
switch (_mode)
{
case InflateManagerMode.Method:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
if (((Method = Codec.InputBuffer[Codec.NextIn++]) & 0xf) != ZDeflated)
{
_mode = InflateManagerMode.Bad;
Codec.Message = $"unknown compression method (0x{Method:X2})";
Marker = 5;
break;
}
if ((Method >> 4) + 8 > Wbits)
{
_mode = InflateManagerMode.Bad;
Codec.Message = $"invalid window size ({(Method >> 4) + 8})";
Marker = 5;
break;
}
_mode = InflateManagerMode.Flag;
break;
case InflateManagerMode.Flag:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
var b = Codec.InputBuffer[Codec.NextIn++] & 0xff;
if (((Method << 8) + b) % 31 != 0)
{
_mode = InflateManagerMode.Bad;
Codec.Message = "incorrect header check";
Marker = 5;
break;
}
_mode = (b & PresetDict) == 0
? InflateManagerMode.Blocks
: InflateManagerMode.Dict4;
break;
case InflateManagerMode.Dict4:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck = (uint) ((Codec.InputBuffer[Codec.NextIn++] << 24) & 0xff000000);
_mode = InflateManagerMode.Dict3;
break;
case InflateManagerMode.Dict3:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) ((Codec.InputBuffer[Codec.NextIn++] << 16) & 0x00ff0000);
_mode = InflateManagerMode.Dict2;
break;
case InflateManagerMode.Dict2:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) ((Codec.InputBuffer[Codec.NextIn++] << 8) & 0x0000ff00);
_mode = InflateManagerMode.Dict1;
break;
case InflateManagerMode.Dict1:
if (Codec.AvailableBytesIn == 0)
return r;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) (Codec.InputBuffer[Codec.NextIn++] & 0x000000ff);
Codec._Adler32 = ExpectedCheck;
_mode = InflateManagerMode.Dict0;
return ZlibConstants.ZNeedDict;
case InflateManagerMode.Dict0:
_mode = InflateManagerMode.Bad;
Codec.Message = "need dictionary";
Marker = 0;
return ZlibConstants.ZStreamError;
case InflateManagerMode.Blocks:
r = Blocks.Process(r);
if (r == ZlibConstants.ZDataError)
{
_mode = InflateManagerMode.Bad;
Marker = 0;
break;
}
if (r == ZlibConstants.ZOk)
r = f;
if (r != ZlibConstants.ZStreamEnd)
return r;
r = f;
ComputedCheck = Blocks.Reset();
if (!HandleRfc1950HeaderBytes)
{
_mode = InflateManagerMode.Done;
return ZlibConstants.ZStreamEnd;
}
_mode = InflateManagerMode.Check4;
break;
case InflateManagerMode.Check4:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck = (uint) ((Codec.InputBuffer[Codec.NextIn++] << 24) & 0xff000000);
_mode = InflateManagerMode.Check3;
break;
case InflateManagerMode.Check3:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) ((Codec.InputBuffer[Codec.NextIn++] << 16) & 0x00ff0000);
_mode = InflateManagerMode.Check2;
break;
case InflateManagerMode.Check2:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) ((Codec.InputBuffer[Codec.NextIn++] << 8) & 0x0000ff00);
_mode = InflateManagerMode.Check1;
break;
case InflateManagerMode.Check1:
if (Codec.AvailableBytesIn == 0)
return r;
r = f;
Codec.AvailableBytesIn--;
Codec.TotalBytesIn++;
ExpectedCheck += (uint) (Codec.InputBuffer[Codec.NextIn++] & 0x000000ff);
if (ComputedCheck != ExpectedCheck)
{
_mode = InflateManagerMode.Bad;
Codec.Message = "incorrect data check";
Marker = 5;
break;
}
_mode = InflateManagerMode.Done;
return ZlibConstants.ZStreamEnd;
case InflateManagerMode.Done:
return ZlibConstants.ZStreamEnd;
case InflateManagerMode.Bad:
throw new ZlibException($"Bad state ({Codec.Message})");
default:
throw new ZlibException("Stream error.");
}
}
internal int Initialize(ZlibCodec codec, int w)
{
Codec = codec;
Codec.Message = null;
Blocks = null;
if (w < 8 || w > 15)
{
End();
throw new ZlibException("Bad window size.");
}
Wbits = w;
Blocks = new InflateBlocks(codec,
HandleRfc1950HeaderBytes ? this : null,
1 << w);
Reset();
return ZlibConstants.ZOk;
}
internal int Reset()
{
Codec.TotalBytesIn = Codec.TotalBytesOut = 0;
Codec.Message = null;
_mode = HandleRfc1950HeaderBytes ? InflateManagerMode.Method : InflateManagerMode.Blocks;
Blocks.Reset();
return ZlibConstants.ZOk;
}
internal int SetDictionary(byte[] dictionary)
{
var index = 0;
var length = dictionary.Length;
if (_mode != InflateManagerMode.Dict0)
throw new ZlibException("Stream error.");
if (Adler.Adler32(1, dictionary, 0, dictionary.Length) != Codec._Adler32)
return ZlibConstants.ZDataError;
Codec._Adler32 = Adler.Adler32(0, null, 0, 0);
if (length >= 1 << Wbits)
{
length = (1 << Wbits) - 1;
index = dictionary.Length - length;
}
Blocks.SetDictionary(dictionary, index, length);
_mode = InflateManagerMode.Blocks;
return ZlibConstants.ZOk;
}
internal int Sync()
{
int n;
if (_mode != InflateManagerMode.Bad)
{
_mode = InflateManagerMode.Bad;
Marker = 0;
}
if ((n = Codec.AvailableBytesIn) == 0)
return ZlibConstants.ZBufError;
var p = Codec.NextIn;
var m = Marker;
while (n != 0 && m < 4)
{
if (Codec.InputBuffer[p] == Mark[m]) m++;
else if (Codec.InputBuffer[p] != 0) m = 0;
else m = 4 - m;
p++;
n--;
}
Codec.TotalBytesIn += p - Codec.NextIn;
Codec.NextIn = p;
Codec.AvailableBytesIn = n;
Marker = m;
if (m != 4) return ZlibConstants.ZDataError;
var r = Codec.TotalBytesIn;
var w = Codec.TotalBytesOut;
Reset();
Codec.TotalBytesIn = r;
Codec.TotalBytesOut = w;
_mode = InflateManagerMode.Blocks;
return ZlibConstants.ZOk;
}
internal int SyncPoint()
{
return Blocks.SyncPoint();
}
private enum InflateManagerMode
{
Method = 0,
Flag = 1,
Dict4 = 2,
Dict3 = 3,
Dict2 = 4,
Dict1 = 5,
Dict0 = 6,
Blocks = 7,
Check4 = 8,
Check3 = 9,
Check2 = 10,
Check1 = 11,
Done = 12,
Bad = 13
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/Iso8859Dash1Encoding.cs
================================================
using System;
using System.Text;
namespace BrawlStars.Utilities.Compression.ZLib
{
public class Iso8859Dash1Encoding : Encoding
{
public static int CharacterCount => 256;
public override string WebName => "iso-8859-1";
public override int GetByteCount(char[] chars, int index, int count)
{
return count;
}
public override int GetBytes(char[] chars, int start, int count, byte[] bytes, int byteIndex)
{
if (chars == null)
throw new ArgumentNullException(nameof(chars), "null array");
if (bytes == null)
throw new ArgumentNullException(nameof(bytes), "null array");
if (start < 0)
throw new ArgumentOutOfRangeException(nameof(start));
if (count < 0)
throw new ArgumentOutOfRangeException(nameof(count));
if (chars.Length - start < count)
throw new ArgumentOutOfRangeException(nameof(chars));
if (byteIndex < 0 || byteIndex > bytes.Length)
throw new ArgumentOutOfRangeException(nameof(byteIndex));
for (var i = 0; i < count; i++)
{
var c = chars[start + i];
if (c >= '\x00FF')
bytes[byteIndex + i] = (byte) '?';
else
bytes[byteIndex + i] = (byte) c;
}
return count;
}
public override int GetCharCount(byte[] bytes, int index, int count)
{
return count;
}
public override int GetChars(byte[] bytes, int start, int count, char[] chars, int charIndex)
{
if (chars == null)
throw new ArgumentNullException(nameof(chars), "null array");
if (bytes == null)
throw new ArgumentNullException(nameof(bytes), "null array");
if (start < 0)
throw new ArgumentOutOfRangeException(nameof(start));
if (count < 0)
throw new ArgumentOutOfRangeException(nameof(count));
if (bytes.Length - start < count)
throw new ArgumentOutOfRangeException(nameof(bytes));
if (charIndex < 0 || charIndex > chars.Length)
throw new ArgumentOutOfRangeException(nameof(charIndex));
for (var i = 0; i < count; i++)
chars[charIndex + i] = (char) bytes[i + start];
return count;
}
public override int GetMaxByteCount(int charCount)
{
return charCount;
}
public override int GetMaxCharCount(int byteCount)
{
return byteCount;
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/ParallelDeflateOutputStream.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal class WorkItem
{
public byte[] Buffer;
public byte[] Compressed;
public int CompressedBytesAvailable;
public ZlibCodec Compressor;
public int Crc;
public int Index;
public int InputBytesAvailable;
public int Ordinal;
public WorkItem(int size,
CompressionLevel compressLevel,
int ix)
{
Buffer = new byte[size];
var n = size + (size / 32768 + 1) * 5 * 2;
Compressed = new byte[n];
Compressor = new ZlibCodec();
Compressor.InitializeDeflate(compressLevel, false);
Compressor.OutputBuffer = Compressed;
Compressor.InputBuffer = Buffer;
Index = ix;
}
}
public class ParallelDeflateOutputStream : Stream
{
private const int IoBufferSizeDefault = 64 * 1024;
private const int BufferPairsPerCore = 4;
private readonly CompressionLevel _compressLevel;
private readonly object _eLock = new object();
private readonly object _latestLock = new object();
private readonly bool _leaveOpen;
private int _bufferSize = IoBufferSizeDefault;
private int _currentlyFilling;
private bool _emitting;
private bool _firstWriteDone;
private bool _handlingException;
private bool _isClosed;
private int _lastFilled;
private int _lastWritten;
private int _latestCompressed;
private int _maxBufferPairs;
private AutoResetEvent _newlyCompressedBlob;
private Stream _outStream;
private volatile Exception _pendingException;
private List _pool;
private Crc32 _runningCrc;
private Queue _toFill;
private Queue _toWrite;
public ParallelDeflateOutputStream(Stream stream)
: this(stream, CompressionLevel.Default, CompressionStrategy.Default, false)
{
}
public ParallelDeflateOutputStream(Stream stream, CompressionLevel level)
: this(stream, level, CompressionStrategy.Default, false)
{
}
public ParallelDeflateOutputStream(Stream stream, bool leaveOpen)
: this(stream, CompressionLevel.Default, CompressionStrategy.Default, leaveOpen)
{
}
public ParallelDeflateOutputStream(Stream stream,
CompressionLevel level,
CompressionStrategy strategy,
bool leaveOpen)
{
_outStream = stream;
_compressLevel = level;
Strategy = strategy;
_leaveOpen = leaveOpen;
MaxBufferPairs = 16;
}
public CompressionStrategy Strategy { get; }
public int MaxBufferPairs
{
get => _maxBufferPairs;
set
{
if (value < 4)
throw new ArgumentException("MaxBufferPairs",
"Value must be 4 or greater.");
_maxBufferPairs = value;
}
}
public int BufferSize
{
get => _bufferSize;
set
{
if (value < 1024)
throw new ArgumentOutOfRangeException("BufferSize",
"BufferSize must be greater than 1024 bytes");
_bufferSize = value;
}
}
public int Crc32 { get; private set; }
public long BytesProcessed { get; private set; }
public override bool CanSeek => false;
public override bool CanRead => false;
public override bool CanWrite => _outStream.CanWrite;
public override long Length => throw new NotSupportedException();
public override long Position
{
get => _outStream.Position;
set => throw new NotSupportedException();
}
private void InitializePoolOfWorkItems()
{
_toWrite = new Queue();
_toFill = new Queue();
_pool = new List();
var nTasks = BufferPairsPerCore * Environment.ProcessorCount;
nTasks = Math.Min(nTasks, _maxBufferPairs);
for (var i = 0; i < nTasks; i++)
{
_pool.Add(new WorkItem(_bufferSize, _compressLevel, i));
_toFill.Enqueue(i);
}
_newlyCompressedBlob = new AutoResetEvent(false);
_runningCrc = new Crc32();
_currentlyFilling = -1;
_lastFilled = -1;
_lastWritten = -1;
_latestCompressed = -1;
}
public override void Write(byte[] buffer, int offset, int count)
{
var mustWait = false;
if (_isClosed)
throw new InvalidOperationException();
if (_pendingException != null)
{
_handlingException = true;
var pe = _pendingException;
_pendingException = null;
throw pe;
}
if (count == 0)
return;
if (!_firstWriteDone)
{
InitializePoolOfWorkItems();
_firstWriteDone = true;
}
do
{
EmitPendingBuffers(false, mustWait);
mustWait = false;
int ix;
if (_currentlyFilling >= 0)
{
ix = _currentlyFilling;
}
else
{
if (_toFill.Count == 0)
{
mustWait = true;
continue;
}
ix = _toFill.Dequeue();
++_lastFilled;
}
var workitem = _pool[ix];
var limit = workitem.Buffer.Length - workitem.InputBytesAvailable > count
? count
: workitem.Buffer.Length - workitem.InputBytesAvailable;
workitem.Ordinal = _lastFilled;
Buffer.BlockCopy(buffer,
offset,
workitem.Buffer,
workitem.InputBytesAvailable,
limit);
count -= limit;
offset += limit;
workitem.InputBytesAvailable += limit;
if (workitem.InputBytesAvailable == workitem.Buffer.Length)
{
if (!ThreadPool.QueueUserWorkItem(DeflateOne, workitem))
throw new Exception("Cannot enqueue workitem");
_currentlyFilling = -1;
}
else
{
_currentlyFilling = ix;
}
} while (count > 0);
}
private void FlushFinish()
{
var buffer = new byte[128];
var compressor = new ZlibCodec
{
InputBuffer = null,
NextIn = 0,
AvailableBytesIn = 0,
OutputBuffer = buffer,
NextOut = 0,
AvailableBytesOut = buffer.Length
};
var rc = compressor.Deflate(FlushType.Finish);
if (rc != ZlibConstants.ZStreamEnd && rc != ZlibConstants.ZOk)
throw new Exception("deflating: " + compressor.Message);
if (buffer.Length - compressor.AvailableBytesOut > 0)
_outStream.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut);
compressor.EndDeflate();
Crc32 = _runningCrc.Crc32Result;
}
private void Flush(bool lastInput)
{
if (_isClosed)
throw new InvalidOperationException();
if (_emitting)
return;
if (_currentlyFilling >= 0)
{
var workitem = _pool[_currentlyFilling];
DeflateOne(workitem);
_currentlyFilling = -1;
}
if (lastInput)
{
EmitPendingBuffers(true, false);
FlushFinish();
}
else
{
EmitPendingBuffers(false, false);
}
}
public override void Flush()
{
if (_pendingException != null)
{
_handlingException = true;
var pe = _pendingException;
_pendingException = null;
throw pe;
}
if (_handlingException)
return;
Flush(false);
}
public override void Close()
{
if (_pendingException != null)
{
_handlingException = true;
var pe = _pendingException;
_pendingException = null;
throw pe;
}
if (_handlingException)
return;
if (_isClosed)
return;
Flush(true);
if (!_leaveOpen)
_outStream.Close();
_isClosed = true;
}
public new void Dispose()
{
Close();
_pool = null;
Dispose(true);
}
public void Reset(Stream stream)
{
if (!_firstWriteDone)
return;
_toWrite.Clear();
_toFill.Clear();
foreach (var workitem in _pool)
{
_toFill.Enqueue(workitem.Index);
workitem.Ordinal = -1;
}
_firstWriteDone = false;
BytesProcessed = 0L;
_runningCrc = new Crc32();
_isClosed = false;
_currentlyFilling = -1;
_lastFilled = -1;
_lastWritten = -1;
_latestCompressed = -1;
_outStream = stream;
}
private void EmitPendingBuffers(bool doAll, bool mustWait)
{
if (_emitting)
return;
_emitting = true;
if (doAll || mustWait)
_newlyCompressedBlob.WaitOne();
do
{
var firstSkip = -1;
var millisecondsToWait = doAll ? 200 : mustWait ? -1 : 0;
int nextToWrite;
do
{
if (Monitor.TryEnter(_toWrite, millisecondsToWait))
{
nextToWrite = -1;
try
{
if (_toWrite.Count > 0)
nextToWrite = _toWrite.Dequeue();
}
finally
{
Monitor.Exit(_toWrite);
}
if (nextToWrite < 0) continue;
var workitem = _pool[nextToWrite];
if (workitem.Ordinal != _lastWritten + 1)
{
lock (_toWrite)
{
_toWrite.Enqueue(nextToWrite);
}
if (firstSkip == nextToWrite)
{
_newlyCompressedBlob.WaitOne();
firstSkip = -1;
}
else if (firstSkip == -1)
{
firstSkip = nextToWrite;
}
continue;
}
firstSkip = -1;
_outStream.Write(workitem.Compressed, 0, workitem.CompressedBytesAvailable);
_runningCrc.Combine(workitem.Crc, workitem.InputBytesAvailable);
BytesProcessed += workitem.InputBytesAvailable;
workitem.InputBytesAvailable = 0;
_lastWritten = workitem.Ordinal;
_toFill.Enqueue(workitem.Index);
if (millisecondsToWait == -1)
millisecondsToWait = 0;
}
else
{
nextToWrite = -1;
}
} while (nextToWrite >= 0);
} while (doAll && _lastWritten != _latestCompressed);
_emitting = false;
}
private void DeflateOne(object wi)
{
var workitem = (WorkItem) wi;
try
{
var crc = new Crc32();
crc.SlurpBlock(workitem.Buffer, 0, workitem.InputBytesAvailable);
DeflateOneSegment(workitem);
workitem.Crc = crc.Crc32Result;
lock (_latestLock)
{
if (workitem.Ordinal > _latestCompressed)
_latestCompressed = workitem.Ordinal;
}
lock (_toWrite)
{
_toWrite.Enqueue(workitem.Index);
}
_newlyCompressedBlob.Set();
}
catch (Exception exc1)
{
lock (_eLock)
{
if (_pendingException != null)
_pendingException = exc1;
}
}
}
private bool DeflateOneSegment(WorkItem workitem)
{
var compressor = workitem.Compressor;
compressor.ResetDeflate();
compressor.NextIn = 0;
compressor.AvailableBytesIn = workitem.InputBytesAvailable;
compressor.NextOut = 0;
compressor.AvailableBytesOut = workitem.Compressed.Length;
do
{
compressor.Deflate(FlushType.None);
} while (compressor.AvailableBytesIn > 0 || compressor.AvailableBytesOut == 0);
compressor.Deflate(FlushType.Sync);
workitem.CompressedBytesAvailable = (int) compressor.TotalBytesOut;
return true;
}
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotSupportedException();
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
throw new NotSupportedException();
}
[Flags]
private enum TraceBits : uint
{
None = 0,
NotUsed1 = 1,
EmitLock = 2,
EmitEnter = 4,
EmitBegin = 8,
EmitDone = 16,
EmitSkip = 32,
EmitAll = 58,
Flush = 64,
Lifecycle = 128,
Session = 256,
Synch = 512,
Instance = 1024,
Compress = 2048,
Write = 4096,
WriteEnter = 8192,
WriteTake = 16384,
All = 0xffffffff
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/Tree.cs
================================================
using System;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal sealed class Tree
{
internal static readonly sbyte[] BlOrder = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
internal static readonly int[] DistanceBase =
{
0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192,
256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
};
internal static readonly int[] ExtraBlbits = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7};
internal static readonly int[] ExtraDistanceBits =
{
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
};
internal static readonly int[] ExtraLengthBits =
{
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
};
internal static readonly int[] LengthBase =
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28,
32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0
};
internal static readonly sbyte[] LengthCode =
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11,
12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17,
18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
};
private static readonly sbyte[] DistCode =
{
0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21,
22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
};
private static readonly int HeapSize = 2 * InternalConstants.L_CODES + 1;
internal short[] DynTree;
internal int MaxCode;
internal StaticTree StaticTree;
internal static int Bi_reverse(int code, int len)
{
var res = 0;
do
{
res |= code & 1;
code >>= 1;
res <<= 1;
} while (--len > 0);
return res >> 1;
}
internal static int DistanceCode(int dist)
{
return dist < 256
? DistCode[dist]
: DistCode[256 + SharedUtils.UrShift(dist, 7)];
}
internal static void Gen_codes(short[] tree, int maxCode, short[] blCount)
{
var nextCode = new short[InternalConstants.MAX_BITS + 1];
short code = 0;
int bits;
int n;
for (bits = 1; bits <= InternalConstants.MAX_BITS; bits++)
unchecked
{
nextCode[bits] = code = (short) ((code + blCount[bits - 1]) << 1);
}
for (n = 0; n <= maxCode; n++)
{
int len = tree[n * 2 + 1];
if (len == 0)
continue;
tree[n * 2] = unchecked((short) Bi_reverse(nextCode[len]++, len));
}
}
internal void Build_tree(DeflateManager s)
{
var tree = DynTree;
var stree = StaticTree.treeCodes;
var elems = StaticTree.elems;
int n;
var maxCode = -1;
int node;
s.HeapLen = 0;
s.HeapMax = HeapSize;
for (n = 0; n < elems; n++)
if (tree[n * 2] != 0)
{
s.Heap[++s.HeapLen] = maxCode = n;
s.Depth[n] = 0;
}
else
{
tree[n * 2 + 1] = 0;
}
while (s.HeapLen < 2)
{
node = s.Heap[++s.HeapLen] = maxCode < 2 ? ++maxCode : 0;
tree[node * 2] = 1;
s.Depth[node] = 0;
s.OptLen--;
if (stree != null)
s.StaticLen -= stree[node * 2 + 1];
}
MaxCode = maxCode;
for (n = s.HeapLen / 2; n >= 1; n--)
s.Pqdownheap(tree, n);
node = elems;
do
{
n = s.Heap[1];
s.Heap[1] = s.Heap[s.HeapLen--];
s.Pqdownheap(tree, 1);
var m = s.Heap[1];
s.Heap[--s.HeapMax] = n;
s.Heap[--s.HeapMax] = m;
tree[node * 2] = unchecked((short) (tree[n * 2] + tree[m * 2]));
s.Depth[node] = (sbyte) (Math.Max((byte) s.Depth[n], (byte) s.Depth[m]) + 1);
tree[n * 2 + 1] = tree[m * 2 + 1] = (short) node;
s.Heap[1] = node++;
s.Pqdownheap(tree, 1);
} while (s.HeapLen >= 2);
s.Heap[--s.HeapMax] = s.Heap[1];
Gen_bitlen(s);
Gen_codes(tree, maxCode, s.BlCount);
}
internal void Gen_bitlen(DeflateManager s)
{
var tree = DynTree;
var stree = StaticTree.treeCodes;
var extra = StaticTree.extraBits;
var baseRenamed = StaticTree.extraBase;
var maxLength = StaticTree.maxLength;
int h;
int n;
int bits;
var overflow = 0;
for (bits = 0; bits <= InternalConstants.MAX_BITS; bits++)
s.BlCount[bits] = 0;
tree[s.Heap[s.HeapMax] * 2 + 1] = 0;
for (h = s.HeapMax + 1; h < HeapSize; h++)
{
n = s.Heap[h];
bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
if (bits > maxLength)
{
bits = maxLength;
overflow++;
}
tree[n * 2 + 1] = (short) bits;
if (n > MaxCode)
continue;
s.BlCount[bits]++;
var xbits = 0;
if (n >= baseRenamed)
xbits = extra[n - baseRenamed];
var f = tree[n * 2];
s.OptLen += f * (bits + xbits);
if (stree != null)
s.StaticLen += f * (stree[n * 2 + 1] + xbits);
}
if (overflow == 0)
return;
do
{
bits = maxLength - 1;
while (s.BlCount[bits] == 0)
bits--;
s.BlCount[bits]--;
s.BlCount[bits + 1] = (short) (s.BlCount[bits + 1] + 2);
s.BlCount[maxLength]--;
overflow -= 2;
} while (overflow > 0);
for (bits = maxLength; bits != 0; bits--)
{
n = s.BlCount[bits];
while (n != 0)
{
var m = s.Heap[--h];
if (m > MaxCode)
continue;
if (tree[m * 2 + 1] != bits)
{
s.OptLen = (int) (s.OptLen + (bits - (long) tree[m * 2 + 1]) * tree[m * 2]);
tree[m * 2 + 1] = (short) bits;
}
n--;
}
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/Zlib.cs
================================================
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace BrawlStars.Utilities.Compression.ZLib
{
public enum FlushType
{
None = 0,
Partial,
Sync,
Full,
Finish
}
public enum CompressionLevel
{
None = 0,
Level0 = 0,
BestSpeed = 1,
Level1 = 1,
Level2 = 2,
Level3 = 3,
Level4 = 4,
Level5 = 5,
Default = 6,
Level6 = 6,
Level7 = 7,
Level8 = 8,
BestCompression = 9,
Level9 = 9
}
public enum CompressionStrategy
{
Default = 0,
Filtered = 1,
HuffmanOnly = 2
}
public enum CompressionMode
{
Compress = 0,
Decompress = 1
}
[Guid("ebc25cf6-9120-4283-b972-0e5520d0000E")]
public class ZlibException : Exception
{
public ZlibException()
{
}
public ZlibException(string s)
: base(s)
{
}
}
internal class SharedUtils
{
public static int UrShift(int number, int bits)
{
return (int) ((uint) number >> bits);
}
#if NOT
///
/// Performs an unsigned bitwise right shift with the specified number
///
/// Number to operate on
/// Ammount of bits to shift
/// The resulting number from the shift operation
public static long URShift(long number, int bits)
{
return (long) ((UInt64)number >> bits);
}
#endif
///
/// Reads a number of characters from the current source TextReader and writes the data to
/// the target array at the specified index.
///
/// The source TextReader to read from
/// Contains the array of characteres read from the source TextReader.
/// The starting index of the target array.
/// The maximum number of characters to read from the source TextReader.
///
/// The number of characters read. The number will be less than or equal to count depending
/// on the data available in the source TextReader. Returns -1 if the end of the stream is reached.
///
public static int ReadInput(TextReader sourceTextReader, byte[] target, int start, int count)
{
// Returns 0 bytes if not enough space in target
if (target.Length == 0)
return 0;
var charArray = new char[target.Length];
var bytesRead = sourceTextReader.Read(charArray, start, count);
// Returns -1 if EOF
if (bytesRead == 0)
return -1;
for (var index = start; index < start + bytesRead; index++)
target[index] = (byte) charArray[index];
return bytesRead;
}
internal static byte[] ToByteArray(string sourceString)
{
return Encoding.UTF8.GetBytes(sourceString);
}
internal static char[] ToCharArray(byte[] byteArray)
{
return Encoding.UTF8.GetChars(byteArray);
}
}
internal static class InternalConstants
{
internal static readonly int MAX_BITS = 15;
internal static readonly int BL_CODES = 19;
internal static readonly int D_CODES = 30;
internal static readonly int LITERALS = 256;
internal static readonly int LENGTH_CODES = 29;
internal static readonly int L_CODES = LITERALS + 1 + LENGTH_CODES;
// Bit length codes must not exceed MAX_BL_BITS bits
internal static readonly int MAX_BL_BITS = 7;
// repeat previous bit length 3-6 times (2 bits of repeat count)
internal static readonly int REP_3_6 = 16;
// repeat a zero length 3-10 times (3 bits of repeat count)
internal static readonly int REPZ_3_10 = 17;
// repeat a zero length 11-138 times (7 bits of repeat count)
internal static readonly int REPZ_11_138 = 18;
}
internal sealed class StaticTree
{
internal static readonly short[] lengthAndLiteralsTreeCodes =
{
12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8,
28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8,
2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8,
18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8,
10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8,
26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8,
6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8,
22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8,
14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8,
30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8,
1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8,
17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8,
9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8,
25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8,
5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8,
21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8,
13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8,
29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8,
19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9,
51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9,
11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9,
43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9,
27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9,
59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9,
7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9,
39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9,
23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9,
55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9,
15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9,
47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9,
31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9,
63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9,
0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7,
8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7,
4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7,
3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8
};
internal static readonly short[] distTreeCodes =
{
0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5,
2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5,
1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5,
3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5
};
internal static readonly StaticTree Literals;
internal static readonly StaticTree Distances;
internal static readonly StaticTree BitLengths;
internal int elems; // max number of elements in the tree
internal int extraBase; // base index for extra_bits
internal int[] extraBits; // extra bits for each code or null
internal int maxLength; // max bit length for the codes
internal short[] treeCodes; // static tree or null
static StaticTree()
{
Literals = new StaticTree(lengthAndLiteralsTreeCodes, Tree.ExtraLengthBits, InternalConstants.LITERALS + 1,
InternalConstants.L_CODES, InternalConstants.MAX_BITS);
Distances = new StaticTree(distTreeCodes, Tree.ExtraDistanceBits, 0, InternalConstants.D_CODES,
InternalConstants.MAX_BITS);
BitLengths = new StaticTree(null, Tree.ExtraBlbits, 0, InternalConstants.BL_CODES,
InternalConstants.MAX_BL_BITS);
}
private StaticTree(short[] treeCodes, int[] extraBits, int extraBase, int elems, int maxLength)
{
this.treeCodes = treeCodes;
this.extraBits = extraBits;
this.extraBase = extraBase;
this.elems = elems;
this.maxLength = maxLength;
}
}
///
/// Computes an Adler-32 checksum.
///
///
/// The Adler checksum is similar to a CRC checksum, but faster to compute, though less reliable.
/// It is used in producing RFC1950 compressed streams. The Adler checksum is a required part of
/// the "ZLIB" standard. Applications will almost never need to use this class directly.
///
///
public sealed class Adler
{
// largest prime smaller than 65536
private static readonly uint BASE = 65521;
// NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
private static readonly int NMAX = 5552;
#pragma warning disable 3001
#pragma warning disable 3002
///
/// Calculates the Adler32 checksum.
///
///
/// This is used within ZLIB. You probably don't need to use this directly.
///
///
/// To compute an Adler32 checksum on a byte array:
///
/// var adler = Adler.Adler32(0, null, 0, 0);
/// adler = Adler.Adler32(adler, buffer, index, length);
///
///
public static uint Adler32(uint adler, byte[] buf, int index, int len)
{
if (buf == null)
return 1;
var s1 = adler & 0xffff;
var s2 = (adler >> 16) & 0xffff;
while (len > 0)
{
var k = len < NMAX ? len : NMAX;
len -= k;
while (k >= 16)
{
//s1 += (buf[index++] & 0xff); s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
s1 += buf[index++];
s2 += s1;
k -= 16;
}
if (k != 0)
do
{
s1 += buf[index++];
s2 += s1;
} while (--k != 0);
s1 %= BASE;
s2 %= BASE;
}
return (s2 << 16) | s1;
}
#pragma warning restore 3001
#pragma warning restore 3002
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/ZlibBaseStream.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace BrawlStars.Utilities.Compression.ZLib
{
internal enum ZlibStreamFlavor
{
Zlib = 1950,
Deflate = 1951,
Gzip = 1952
}
internal class ZlibBaseStream : Stream
{
private readonly Crc32 _crc;
private bool _nomoreinput;
protected internal StreamMode _streamMode = StreamMode.Undefined;
protected internal byte[] _workingBuffer;
protected internal byte[] Buf1 = new byte[1];
protected internal int BufferSize = ZlibConstants.WorkingBufferSizeDefault;
protected internal CompressionMode CompressionMode;
protected internal ZlibStreamFlavor Flavor;
protected internal FlushType FlushMode;
protected internal string GzipComment;
protected internal string GzipFileName;
protected internal int GzipHeaderByteCount;
protected internal DateTime GzipMtime;
protected internal bool LeaveOpen;
protected internal CompressionLevel Level;
protected internal CompressionStrategy Strategy = CompressionStrategy.Default;
protected internal Stream Stream;
protected internal ZlibCodec Z;
public ZlibBaseStream(Stream stream,
CompressionMode compressionMode,
CompressionLevel level,
ZlibStreamFlavor flavor,
bool leaveOpen)
{
FlushMode = FlushType.None;
Stream = stream;
LeaveOpen = leaveOpen;
CompressionMode = compressionMode;
Flavor = flavor;
Level = level;
if (flavor == ZlibStreamFlavor.Gzip) _crc = new Crc32();
}
internal int Crc32 => _crc?.Crc32Result ?? 0;
protected internal bool WantCompress => CompressionMode == CompressionMode.Compress;
private ZlibCodec z
{
get
{
if (Z != null) return Z;
var wantRfc1950Header = Flavor == ZlibStreamFlavor.Zlib;
Z = new ZlibCodec();
if (CompressionMode == CompressionMode.Decompress)
{
Z.InitializeInflate(wantRfc1950Header);
}
else
{
Z.Strategy = Strategy;
Z.InitializeDeflate(Level, wantRfc1950Header);
}
return Z;
}
}
private byte[] WorkingBuffer => _workingBuffer ?? (_workingBuffer = new byte[BufferSize]);
public override bool CanRead => Stream.CanRead;
public override bool CanSeek => Stream.CanSeek;
public override bool CanWrite => Stream.CanWrite;
public override long Length => Stream.Length;
public override long Position
{
get => throw new NotImplementedException();
set => throw new NotImplementedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
_crc?.SlurpBlock(buffer, offset, count);
if (_streamMode == StreamMode.Undefined)
_streamMode = StreamMode.Writer;
else if (_streamMode != StreamMode.Writer)
throw new ZlibException("Cannot Write after Reading.");
if (count == 0)
return;
z.InputBuffer = buffer;
Z.NextIn = offset;
Z.AvailableBytesIn = count;
bool done;
do
{
Z.OutputBuffer = WorkingBuffer;
Z.NextOut = 0;
Z.AvailableBytesOut = _workingBuffer.Length;
var rc = WantCompress
? Z.Deflate(FlushMode)
: Z.Inflate();
if (rc != ZlibConstants.ZOk && rc != ZlibConstants.ZStreamEnd)
throw new ZlibException((WantCompress ? "de" : "in") + "flating: " + Z.Message);
Stream.Write(_workingBuffer, 0, _workingBuffer.Length - Z.AvailableBytesOut);
done = Z.AvailableBytesIn == 0 && Z.AvailableBytesOut != 0;
if (Flavor == ZlibStreamFlavor.Gzip && !WantCompress)
done = Z.AvailableBytesIn == 8 && Z.AvailableBytesOut != 0;
} while (!done);
}
private void Finish()
{
if (Z == null)
return;
switch (_streamMode)
{
case StreamMode.Writer:
{
bool done;
do
{
Z.OutputBuffer = WorkingBuffer;
Z.NextOut = 0;
Z.AvailableBytesOut = _workingBuffer.Length;
var rc = WantCompress
? Z.Deflate(FlushType.Finish)
: Z.Inflate();
if (rc != ZlibConstants.ZStreamEnd && rc != ZlibConstants.ZOk)
{
var verb = (WantCompress ? "de" : "in") + "flating";
if (Z.Message == null)
throw new ZlibException($"{verb}: (rc = {rc})");
throw new ZlibException(verb + ": " + Z.Message);
}
if (_workingBuffer.Length - Z.AvailableBytesOut > 0)
Stream.Write(_workingBuffer, 0, _workingBuffer.Length - Z.AvailableBytesOut);
done = Z.AvailableBytesIn == 0 && Z.AvailableBytesOut != 0;
if (Flavor == ZlibStreamFlavor.Gzip && !WantCompress)
done = Z.AvailableBytesIn == 8 && Z.AvailableBytesOut != 0;
} while (!done);
Flush();
if (Flavor == ZlibStreamFlavor.Gzip)
{
if (WantCompress)
{
var c1 = _crc.Crc32Result;
Stream.Write(BitConverter.GetBytes(c1), 0, 4);
var c2 = (int) (_crc.TotalBytesRead & 0x00000000FFFFFFFF);
Stream.Write(BitConverter.GetBytes(c2), 0, 4);
}
else
{
throw new ZlibException("Writing with decompression is not supported.");
}
}
break;
}
case StreamMode.Reader:
{
if (Flavor == ZlibStreamFlavor.Gzip)
{
if (!WantCompress)
{
if (Z.TotalBytesOut == 0L)
return;
var trailer = new byte[8];
if (Z.AvailableBytesIn < 8)
{
Array.Copy(Z.InputBuffer, Z.NextIn, trailer, 0, Z.AvailableBytesIn);
var bytesNeeded = 8 - Z.AvailableBytesIn;
var bytesRead = Stream.Read(trailer,
Z.AvailableBytesIn,
bytesNeeded);
if (bytesNeeded != bytesRead)
throw new ZlibException(
$"Missing or incomplete GZIP trailer. Expected 8 bytes, got {Z.AvailableBytesIn + bytesRead}.");
}
else
{
Array.Copy(Z.InputBuffer, Z.NextIn, trailer, 0, trailer.Length);
}
var crc32Expected = BitConverter.ToInt32(trailer, 0);
var crc32Actual = _crc.Crc32Result;
var isizeExpected = BitConverter.ToInt32(trailer, 4);
var isizeActual = (int) (Z.TotalBytesOut & 0x00000000FFFFFFFF);
if (crc32Actual != crc32Expected)
throw new ZlibException(
$"Bad CRC32 in GZIP trailer. (actual({crc32Actual:X8})!=expected({crc32Expected:X8}))");
if (isizeActual != isizeExpected)
throw new ZlibException(
$"Bad size in GZIP trailer. (actual({isizeActual})!=expected({isizeExpected}))");
}
else
{
throw new ZlibException("Reading with compression is not supported.");
}
}
break;
}
}
}
private void End()
{
if (z == null)
return;
if (WantCompress) Z.EndDeflate();
else Z.EndInflate();
Z = null;
}
public override void Close()
{
if (Stream == null)
return;
try
{
Finish();
}
finally
{
End();
if (!LeaveOpen)
Stream.Close();
Stream = null;
}
}
public override void Flush()
{
Stream.Flush();
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotImplementedException();
}
public override void SetLength(long value)
{
Stream.SetLength(value);
}
private string ReadZeroTerminatedString()
{
var list = new List();
var done = false;
do
{
var n = Stream.Read(Buf1, 0, 1);
if (n != 1)
throw new ZlibException("Unexpected EOF reading GZIP header.");
if (Buf1[0] == 0)
done = true;
else
list.Add(Buf1[0]);
} while (!done);
var a = list.ToArray();
return GZipStream.Iso8859dash1.GetString(a, 0, a.Length);
}
private int ReadAndValidateGzipHeader()
{
var totalBytesRead = 0;
var header = new byte[10];
var n = Stream.Read(header, 0, header.Length);
if (n == 0)
return 0;
if (n != 10)
throw new ZlibException("Not a valid GZIP stream.");
if (header[0] != 0x1F || header[1] != 0x8B || header[2] != 8)
throw new ZlibException("Bad GZIP header.");
var timet = BitConverter.ToInt32(header, 4);
GzipMtime = GZipStream.UnixEpoch.AddSeconds(timet);
totalBytesRead += n;
if ((header[3] & 0x04) == 0x04)
{
n = Stream.Read(header, 0, 2);
totalBytesRead += n;
var extraLength = (short) (header[0] + header[1] * 256);
var extra = new byte[extraLength];
n = Stream.Read(extra, 0, extra.Length);
if (n != extraLength)
throw new ZlibException("Unexpected end-of-file reading GZIP header.");
totalBytesRead += n;
}
if ((header[3] & 0x08) == 0x08)
GzipFileName = ReadZeroTerminatedString();
if ((header[3] & 0x10) == 0x010)
GzipComment = ReadZeroTerminatedString();
if ((header[3] & 0x02) == 0x02)
Read(Buf1, 0, 1);
return totalBytesRead;
}
public override int Read(byte[] buffer, int offset, int count)
{
if (_streamMode == StreamMode.Undefined)
{
if (!Stream.CanRead)
throw new ZlibException("The stream is not readable.");
_streamMode = StreamMode.Reader;
z.AvailableBytesIn = 0;
if (Flavor == ZlibStreamFlavor.Gzip)
{
GzipHeaderByteCount = ReadAndValidateGzipHeader();
if (GzipHeaderByteCount == 0)
return 0;
}
}
if (_streamMode != StreamMode.Reader)
throw new ZlibException("Cannot Read after Writing.");
if (count == 0)
return 0;
if (_nomoreinput && WantCompress)
return 0;
if (buffer == null)
throw new ArgumentNullException(nameof(buffer));
if (count < 0)
throw new ArgumentOutOfRangeException(nameof(count));
if (offset < buffer.GetLowerBound(0))
throw new ArgumentOutOfRangeException(nameof(offset));
if (offset + count > buffer.GetLength(0))
throw new ArgumentOutOfRangeException(nameof(count));
int rc;
Z.OutputBuffer = buffer;
Z.NextOut = offset;
Z.AvailableBytesOut = count;
Z.InputBuffer = WorkingBuffer;
do
{
if (Z.AvailableBytesIn == 0 && !_nomoreinput)
{
Z.NextIn = 0;
Z.AvailableBytesIn = Stream.Read(_workingBuffer, 0, _workingBuffer.Length);
if (Z.AvailableBytesIn == 0)
_nomoreinput = true;
}
rc = WantCompress
? Z.Deflate(FlushMode)
: Z.Inflate();
if (_nomoreinput && rc == ZlibConstants.ZBufError)
return 0;
if (rc != ZlibConstants.ZOk && rc != ZlibConstants.ZStreamEnd)
throw new ZlibException($"{(WantCompress ? "de" : "in")}flating: rc={rc} msg={Z.Message}");
if ((_nomoreinput || rc == ZlibConstants.ZStreamEnd) && Z.AvailableBytesOut == count)
break;
} while (Z.AvailableBytesOut > 0 && !_nomoreinput && rc == ZlibConstants.ZOk);
if (Z.AvailableBytesOut > 0)
if (_nomoreinput)
if (WantCompress)
{
rc = Z.Deflate(FlushType.Finish);
if (rc != ZlibConstants.ZOk && rc != ZlibConstants.ZStreamEnd)
throw new ZlibException($"Deflating: rc={rc} msg={Z.Message}");
}
rc = count - Z.AvailableBytesOut;
_crc?.SlurpBlock(buffer, offset, rc);
return rc;
}
public static void CompressString(string s, Stream compressor)
{
var uncompressed = Encoding.UTF8.GetBytes(s);
using (compressor)
{
compressor.Write(uncompressed, 0, uncompressed.Length);
}
}
public static void CompressBuffer(byte[] b, Stream compressor)
{
using (compressor)
{
compressor.Write(b, 0, b.Length);
}
}
public static string UncompressString(Stream decompressor)
{
var working = new byte[1024];
var encoding = Encoding.UTF8;
using (var output = new MemoryStream())
{
using (decompressor)
{
int n;
while ((n = decompressor.Read(working, 0, working.Length)) != 0) output.Write(working, 0, n);
}
output.Seek(0, SeekOrigin.Begin);
var sr = new StreamReader(output, encoding);
return sr.ReadToEnd();
}
}
public static byte[] UncompressBuffer(Stream decompressor)
{
var working = new byte[1024];
using (var output = new MemoryStream())
{
using (decompressor)
{
int n;
while ((n = decompressor.Read(working, 0, working.Length)) != 0) output.Write(working, 0, n);
}
return output.ToArray();
}
}
internal enum StreamMode
{
Writer,
Reader,
Undefined
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/ZlibCodec.cs
================================================
using System;
using Interop = System.Runtime.InteropServices;
namespace BrawlStars.Utilities.Compression.ZLib
{
[Interop.GuidAttribute("ebc25cf6-9120-4283-b972-0e5520d0000D")]
[Interop.ComVisibleAttribute(true)]
#if !NETCF
[Interop.ClassInterfaceAttribute(Interop.ClassInterfaceType.AutoDispatch)]
#endif
public sealed class ZlibCodec
{
public uint _Adler32;
public int AvailableBytesIn;
public int AvailableBytesOut;
public CompressionLevel CompressLevel = CompressionLevel.Default;
internal DeflateManager Dstate;
public byte[] InputBuffer;
internal InflateManager Istate;
public string Message;
public int NextIn;
public int NextOut;
public byte[] OutputBuffer;
public CompressionStrategy Strategy = CompressionStrategy.Default;
public long TotalBytesIn;
public long TotalBytesOut;
public int WindowBits = ZlibConstants.WindowBitsDefault;
public ZlibCodec()
{
}
public ZlibCodec(CompressionMode mode)
{
switch (mode)
{
case CompressionMode.Compress:
{
var rc = InitializeDeflate();
if (rc != ZlibConstants.ZOk)
throw new ZlibException("Cannot initialize for deflate.");
break;
}
case CompressionMode.Decompress:
{
var rc = InitializeInflate();
if (rc != ZlibConstants.ZOk)
throw new ZlibException("Cannot initialize for inflate.");
break;
}
default:
throw new ZlibException("Invalid ZlibStreamFlavor.");
}
}
public int Adler32 => (int) _Adler32;
public int InitializeInflate()
{
return InitializeInflate(WindowBits);
}
public int InitializeInflate(bool expectRfc1950Header)
{
return InitializeInflate(WindowBits, expectRfc1950Header);
}
public int InitializeInflate(int windowBits)
{
WindowBits = windowBits;
return InitializeInflate(windowBits, true);
}
public int InitializeInflate(int windowBits, bool expectRfc1950Header)
{
WindowBits = windowBits;
if (Dstate != null)
throw new ZlibException("You may not call InitializeInflate() after calling InitializeDeflate().");
Istate = new InflateManager(expectRfc1950Header);
return Istate.Initialize(this, windowBits);
}
public int Inflate()
{
if (Istate == null)
throw new ZlibException("No Inflate State!");
return Istate.Inflate();
}
public int EndInflate()
{
if (Istate == null)
throw new ZlibException("No Inflate State!");
var ret = Istate.End();
Istate = null;
return ret;
}
public int SyncInflate()
{
if (Istate == null)
throw new ZlibException("No Inflate State!");
return Istate.Sync();
}
public int InitializeDeflate()
{
return InternalInitializeDeflate(true);
}
public int InitializeDeflate(CompressionLevel level)
{
CompressLevel = level;
return InternalInitializeDeflate(true);
}
public int InitializeDeflate(CompressionLevel level, bool wantRfc1950Header)
{
CompressLevel = level;
return InternalInitializeDeflate(wantRfc1950Header);
}
public int InitializeDeflate(CompressionLevel level, int bits)
{
CompressLevel = level;
WindowBits = bits;
return InternalInitializeDeflate(true);
}
public int InitializeDeflate(CompressionLevel level, int bits, bool wantRfc1950Header)
{
CompressLevel = level;
WindowBits = bits;
return InternalInitializeDeflate(wantRfc1950Header);
}
private int InternalInitializeDeflate(bool wantRfc1950Header)
{
if (Istate != null)
throw new ZlibException("You may not call InitializeDeflate() after calling InitializeInflate().");
Dstate = new DeflateManager {WantRfc1950HeaderBytes = wantRfc1950Header};
return Dstate.Initialize(this, CompressLevel, WindowBits, Strategy);
}
public int Deflate(FlushType flush)
{
if (Dstate == null)
throw new ZlibException("No Deflate State!");
return Dstate.Deflate(flush);
}
public int EndDeflate()
{
if (Dstate == null)
throw new ZlibException("No Deflate State!");
Dstate = null;
return ZlibConstants.ZOk;
;
}
public void ResetDeflate()
{
if (Dstate == null)
throw new ZlibException("No Deflate State!");
Dstate.Reset();
}
public int SetDeflateParams(CompressionLevel level, CompressionStrategy strategy)
{
if (Dstate == null)
throw new ZlibException("No Deflate State!");
return Dstate.SetParams(level, strategy);
}
public int SetDictionary(byte[] dictionary)
{
if (Istate != null)
return Istate.SetDictionary(dictionary);
if (Dstate != null)
return Dstate.SetDictionary(dictionary);
throw new ZlibException("No Inflate or Deflate state!");
}
internal void Flush_pending()
{
var len = Dstate.PendingCount;
if (len > AvailableBytesOut)
len = AvailableBytesOut;
if (len == 0)
return;
if (Dstate.Pending.Length <= Dstate.NextPending ||
OutputBuffer.Length <= NextOut ||
Dstate.Pending.Length < Dstate.NextPending + len ||
OutputBuffer.Length < NextOut + len)
throw new ZlibException(
$"Invalid State. (pending.Length={Dstate.Pending.Length}, pendingCount={Dstate.PendingCount})");
Array.Copy(Dstate.Pending, Dstate.NextPending, OutputBuffer, NextOut, len);
NextOut += len;
Dstate.NextPending += len;
TotalBytesOut += len;
AvailableBytesOut -= len;
Dstate.PendingCount -= len;
if (Dstate.PendingCount == 0) Dstate.NextPending = 0;
}
internal int Read_buf(byte[] buf, int start, int size)
{
var len = AvailableBytesIn;
if (len > size)
len = size;
if (len == 0)
return 0;
AvailableBytesIn -= len;
if (Dstate.WantRfc1950HeaderBytes) _Adler32 = Adler.Adler32(_Adler32, InputBuffer, NextIn, len);
Array.Copy(InputBuffer, NextIn, buf, start, len);
NextIn += len;
TotalBytesIn += len;
return len;
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/ZlibConstants.cs
================================================
namespace BrawlStars.Utilities.Compression.ZLib
{
public static class ZlibConstants
{
public const int WindowBitsMax = 15;
public const int WindowBitsDefault = WindowBitsMax;
public const int ZOk = 0;
public const int ZStreamEnd = 1;
public const int ZNeedDict = 2;
public const int ZStreamError = -2;
public const int ZDataError = -3;
public const int ZBufError = -5;
public const int WorkingBufferSizeDefault = 16384;
public const int WorkingBufferSizeMin = 1024;
}
}
================================================
FILE: Source/BrawlStars.Utilities/Compression/ZLib/ZlibStream.cs
================================================
using System;
using System.IO;
namespace BrawlStars.Utilities.Compression.ZLib
{
public class ZlibStream : Stream
{
internal ZlibBaseStream BaseStream;
private bool _disposed;
public ZlibStream(Stream stream, CompressionMode mode)
: this(stream, mode, CompressionLevel.Default, false)
{
}
public ZlibStream(Stream stream, CompressionMode mode, CompressionLevel level)
: this(stream, mode, level, false)
{
}
public ZlibStream(Stream stream, CompressionMode mode, bool leaveOpen)
: this(stream, mode, CompressionLevel.Default, leaveOpen)
{
}
public ZlibStream(Stream stream, CompressionMode mode, CompressionLevel level, bool leaveOpen)
{
BaseStream = new ZlibBaseStream(stream, mode, level, ZlibStreamFlavor.Zlib, leaveOpen);
}
public int BufferSize
{
get => BaseStream.BufferSize;
set
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
if (BaseStream._workingBuffer != null)
throw new ZlibException("The working buffer is already set.");
if (value < ZlibConstants.WorkingBufferSizeMin)
throw new ZlibException(
$"Don't be silly. {value} bytes?? Use a bigger buffer, at least {ZlibConstants.WorkingBufferSizeMin}.");
BaseStream.BufferSize = value;
}
}
public override bool CanRead
{
get
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
return BaseStream.Stream.CanRead;
}
}
public override bool CanSeek => false;
public override bool CanWrite
{
get
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
return BaseStream.Stream.CanWrite;
}
}
public virtual FlushType FlushMode
{
get => BaseStream.FlushMode;
set
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
BaseStream.FlushMode = value;
}
}
public override long Length => throw new NotSupportedException();
public override long Position
{
get
{
switch (BaseStream._streamMode)
{
case ZlibBaseStream.StreamMode.Writer:
return BaseStream.Z.TotalBytesOut;
case ZlibBaseStream.StreamMode.Reader:
return BaseStream.Z.TotalBytesIn;
default:
return 0;
}
}
set => throw new NotSupportedException();
}
public virtual long TotalIn => BaseStream.Z.TotalBytesIn;
public virtual long TotalOut => BaseStream.Z.TotalBytesOut;
protected override void Dispose(bool disposing)
{
try
{
if (_disposed) return;
if (disposing)
BaseStream?.Close();
_disposed = true;
}
finally
{
base.Dispose(disposing);
}
}
public static byte[] CompressBuffer(byte[] b, CompressionLevel compressionLevel)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new ZlibStream(ms, CompressionMode.Compress, compressionLevel);
ZlibBaseStream.CompressBuffer(b, compressor);
return ms.ToArray();
}
}
public static byte[] CompressString(string s, CompressionLevel compressionLevel)
{
using (var ms = new MemoryStream())
{
Stream compressor =
new ZlibStream(ms, CompressionMode.Compress, compressionLevel);
ZlibBaseStream.CompressString(s, compressor);
return ms.ToArray();
}
}
public static byte[] UncompressBuffer(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor =
new ZlibStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressBuffer(decompressor);
}
}
public static string UncompressString(byte[] compressed)
{
using (var input = new MemoryStream(compressed))
{
Stream decompressor =
new ZlibStream(input, CompressionMode.Decompress);
return ZlibBaseStream.UncompressString(decompressor);
}
}
public override void Flush()
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
BaseStream.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
return BaseStream.Read(buffer, offset, count);
}
public override long Seek(long offset, SeekOrigin origin)
{
throw new NotSupportedException();
}
public override void SetLength(long value)
{
throw new NotSupportedException();
}
public override void Write(byte[] buffer, int offset, int count)
{
if (_disposed)
throw new ObjectDisposedException("ZlibStream");
BaseStream.Write(buffer, offset, count);
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Extensions.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
namespace BrawlStars.Utilities
{
public static class ExtensionMethods
{
public static void UpdateOrInsert(this List list, int index, T item)
{
if (list.ElementAtOrDefault(index) != null)
list[index] = item;
else
list.Insert(index, item);
}
public static string ToReadableString(this TimeSpan span)
{
var formatted =
$"{(span.Duration().Days > 0 ? $"{span.Days:0}d, " : string.Empty)}{(span.Duration().Hours > 0 ? $"{span.Hours:0}h, " : string.Empty)}{(span.Duration().Minutes > 0 ? $"{span.Minutes:0}m, " : string.Empty)}{(span.Duration().Seconds > 0 ? $"{span.Seconds:0}s" : string.Empty)}";
if (formatted.EndsWith(", ")) formatted = formatted.Substring(0, formatted.Length - 2);
if (string.IsNullOrEmpty(formatted)) formatted = "0s";
return formatted;
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Netty/Reader.cs
================================================
using System.Text;
using BrawlStars.Utilities.Compression.ZLib;
using DotNetty.Buffers;
namespace BrawlStars.Utilities.Netty
{
///
/// This implements a few extensions for games from Supercell
///
public static class Reader
{
///
/// Decodes a string based on the length
///
///
///
public static string ReadScString(this IByteBuffer byteBuffer)
{
var length = byteBuffer.ReadInt();
if (length <= 0 || length > 900000)
return string.Empty;
return byteBuffer.ReadString(length, Encoding.UTF8);
}
///
/// Decodes a compressed string
///
///
///
///
public static string ReadCompressedString(this IByteBuffer byteBuffer, bool indicator = true)
{
if(indicator)
byteBuffer.ReadByte();
var compressedLength = byteBuffer.ReadInt() - 4;
byteBuffer.ReadIntLE();
var compressedBytes = byteBuffer.ReadBytes(compressedLength);
return ZlibStream.UncompressString(compressedBytes.Array);
}
public static int ReadVInt(this IByteBuffer byteBuffer)
{
int b, sign = ((b = byteBuffer.ReadByte()) >> 6) & 1, i = b & 0x3F, offset = 6;
for (var j = 0; j < 4 && (b & 0x80) != 0; j++, offset += 7)
i |= ((b = byteBuffer.ReadByte()) & 0x7F) << offset;
return (b & 0x80) != 0 ? -1 : i | (sign == 1 && offset < 32 ? i | (int)(0xFFFFFFFF << offset) : i);
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Netty/Writer.cs
================================================
using System;
using System.Linq;
using System.Text;
using BrawlStars.Utilities.Compression.ZLib;
using DotNetty.Buffers;
namespace BrawlStars.Utilities.Netty
{
///
/// This implements a few extensions for games from Supercell
///
public static class Writer
{
///
/// Encodes a string based on the length
///
///
///
public static void WriteScString(this IByteBuffer buffer, string value)
{
if (value == null)
{
buffer.WriteInt(-1);
}
else if (value.Length == 0)
{
buffer.WriteInt(0);
}
else
{
var bytes = Encoding.UTF8.GetBytes(value);
buffer.WriteInt(bytes.Length);
buffer.WriteString(value, Encoding.UTF8);
}
}
///
/// Encodes a VInt
///
///
///
public static void WriteVInt(this IByteBuffer buffer, int value)
{
var temp = (value >> 25) & 0x40;
var flipped = value ^ (value >> 31);
temp |= value & 0x3F;
value >>= 6;
if ((flipped >>= 6) == 0)
{
buffer.WriteByte(temp);
return;
}
buffer.WriteByte(temp | 0x80);
do
{
buffer.WriteByte((value & 0x7F) | ((flipped >>= 7) != 0 ? 0x80 : 0));
value >>= 7;
} while (flipped != 0);
}
///
/// Encode a ScId
///
///
///
///
public static void WriteScId(this IByteBuffer buffer, int high, int low)
{
Writer.WriteVInt(buffer, high);
Writer.WriteVInt(buffer, low);
}
///
/// Encode a compressed string
///
///
///
///
public static void WriteCompressedString(this IByteBuffer buffer, string value, bool indicate = true)
{
var data = Encoding.UTF8.GetBytes(value);
var compressed = ZlibStream.CompressBuffer(data, CompressionLevel.BestCompression);
if (indicate)
buffer.WriteByte(1);
buffer.WriteInt(compressed.Length + 4);
buffer.WriteIntLE(value.Length);
buffer.WriteBytes(compressed);
}
///
/// This method should be only used for testing.
///
///
///
public static void WriteHex(this IByteBuffer buffer, string value)
{
var tmp = value.Replace("-", string.Empty).Replace("-", string.Empty);
buffer.WriteBytes(Enumerable.Range(0, tmp.Length).Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(tmp.Substring(x, 2), 16)).ToArray());
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Utils/GameUtils.cs
================================================
using System;
namespace BrawlStars.Utilities.Utils
{
public class GameUtils
{
public static string GenerateToken
{
get
{
var random = new Random();
var token = string.Empty;
for (var i = 0; i < 40; i++)
token += "abcdefghijklmnopqrstuvwxyz0123456789"[random.Next(36)];
return token;
}
}
public static bool IsHigherRoleThan(int role, int roleToCompare)
{
var table = new[] {1, 1, 4, 2, 3};
return role >= 5 || roleToCompare >= 5 || table[roleToCompare] < table[role];
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Utils/ServerUtils.cs
================================================
using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
namespace BrawlStars.Utilities.Utils
{
public class ServerUtils
{
public static string GetOsName()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return "Windows";
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return "MacOS";
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
return "Linux";
return "Unknown-" + Environment.OSVersion;
}
public static bool IsLinux()
{
return RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
}
public static string GetChecksum(string text)
{
using (var hasher = new SHA1CryptoServiceProvider())
{
return hasher.ComputeHash(Encoding.UTF8.GetBytes(text)).Aggregate(string.Empty,
(current, num) => current + num.ToString("x2"));
}
}
public static string GetChecksum(byte[] data)
{
using (var hasher = new SHA1CryptoServiceProvider())
{
return hasher.ComputeHash(data).Aggregate(string.Empty,
(current, num) => current + num.ToString("x2"));
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/Utils/TimeUtils.cs
================================================
using System;
namespace BrawlStars.Utilities.Utils
{
public class TimeUtils
{
public static int GetSecondsUntilNextMonth
{
get
{
var now = DateTime.UtcNow;
if (now.Month != 12)
return (int) (new DateTime(now.Year, now.Month + 1, 1, now.Hour,
now.Minute, now.Second) - now).TotalSeconds;
return (int) (new DateTime(now.Year + 1, 1, 1, now.Hour,
now.Minute, now.Second) - now).TotalSeconds;
}
}
public static int GetSecondsUntilTomorrow
{
get
{
var now = DateTime.UtcNow;
var tomorrow = now.AddDays(1).Date;
return (int) (tomorrow - now).TotalSeconds;
}
}
public static int CurrentUnixTimestamp => (int) DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
}
}
================================================
FILE: Source/BrawlStars.Utilities/obj/BrawlStars.Utilities.csproj.nuget.cache
================================================
{
"version": 1,
"dgSpecHash": "OJ2to3cVLIFHRq4RQUlEeQKmvPEygU8QU6Ykj5XdPDAxp5Y1A20SI45bhU/s1zKtPvUibjiseZbEm0W+oHxGLw==",
"success": true
}
================================================
FILE: Source/BrawlStars.Utilities/obj/BrawlStars.Utilities.csproj.nuget.dgspec.json
================================================
{
"format": 1,
"restore": {
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj": {}
},
"projects": {
"C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"projectName": "BrawlStars.Utilities",
"projectPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"packagesPath": "C:\\Users\\Vitalik\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\Vitalik\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netstandard2.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netstandard2.0": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netstandard2.0": {
"dependencies": {
"DotNetty.Buffers": {
"target": "Package",
"version": "[0.6.0, )"
},
"MySql.Data": {
"target": "Package",
"version": "[8.0.19, )"
},
"NETStandard.Library": {
"suppressParent": "All",
"target": "Package",
"version": "[2.0.3, )",
"autoReferenced": true
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[12.0.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
}
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/obj/BrawlStars.Utilities.csproj.nuget.g.props
================================================
True
NuGet
$(MSBuildThisFileDirectory)project.assets.json
$(UserProfile)\.nuget\packages\
C:\Users\Vitalik\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder
PackageReference
5.5.0
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
================================================
FILE: Source/BrawlStars.Utilities/obj/BrawlStars.Utilities.csproj.nuget.g.targets
================================================
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
================================================
FILE: Source/BrawlStars.Utilities/obj/ClashofClans.Utilities.csproj.nuget.dgspec.json
================================================
{
"format": 1,
"restore": {
"E:\\BrawlStars\\src\\ClashofClans.Utilities\\ClashofClans.Utilities.csproj": {}
},
"projects": {
"E:\\BrawlStars\\src\\ClashofClans.Utilities\\ClashofClans.Utilities.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "E:\\BrawlStars\\src\\ClashofClans.Utilities\\ClashofClans.Utilities.csproj",
"projectName": "ClashofClans.Utilities",
"projectPath": "E:\\BrawlStars\\src\\ClashofClans.Utilities\\ClashofClans.Utilities.csproj",
"packagesPath": "C:\\Users\\Vitalik\\.nuget\\packages\\",
"outputPath": "E:\\BrawlStars\\src\\ClashofClans.Utilities\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\Vitalik\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netstandard2.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netstandard2.0": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netstandard2.0": {
"dependencies": {
"DotNetty.Buffers": {
"target": "Package",
"version": "[0.6.0, )"
},
"NETStandard.Library": {
"suppressParent": "All",
"target": "Package",
"version": "[2.0.3, )",
"autoReferenced": true
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[12.0.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
}
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/obj/ClashofClans.Utilities.csproj.nuget.g.props
================================================
True
NuGet
$(MSBuildThisFileDirectory)project.assets.json
$(UserProfile)\.nuget\packages\
C:\Users\Vitalik\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder
PackageReference
5.5.0
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
================================================
FILE: Source/BrawlStars.Utilities/obj/ClashofClans.Utilities.csproj.nuget.g.targets
================================================
$(MSBuildAllProjects);$(MSBuildThisFileFullPath)
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/BrawlStars.Utilities.AssemblyInfo.cs
================================================
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("BrawlStars.Utilities")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("BrawlStars.Utilities")]
[assembly: System.Reflection.AssemblyTitleAttribute("BrawlStars.Utilities")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/BrawlStars.Utilities.AssemblyInfoInputs.cache
================================================
2d4c545f4d00364a2bbd2bd34286ac391cde2c09
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/BrawlStars.Utilities.csproj.CoreCompileInputs.cache
================================================
76d97a11d5a2c8c4e6f23244b78539384a361e6e
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/BrawlStars.Utilities.csproj.FileListAbsolute.txt
================================================
E:\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.deps.json
E:\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.dll
E:\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.pdb
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csprojAssemblyReference.cache
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csproj.CoreCompileInputs.cache
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfoInputs.cache
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfo.cs
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.dll
E:\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.pdb
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.deps.json
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.dll
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.pdb
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csprojAssemblyReference.cache
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csproj.CoreCompileInputs.cache
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfoInputs.cache
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfo.cs
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.dll
C:\Users\Vitalik\Desktop\BS\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.pdb
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.deps.json
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.dll
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\bin\Debug\netstandard2.0\BrawlStars.Utilities.pdb
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csprojAssemblyReference.cache
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.csproj.CoreCompileInputs.cache
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfoInputs.cache
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.AssemblyInfo.cs
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.dll
C:\Users\Vitalik\Desktop\Source\BrawlStars.Utilities\obj\Debug\netstandard2.0\BrawlStars.Utilities.pdb
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/ClashofClans.Utilities.AssemblyInfo.cs
================================================
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyTitleAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/ClashofClans.Utilities.AssemblyInfoInputs.cache
================================================
ea4cb677b4af8d35d92b27ec4a341331ac655b91
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/ClashofClans.Utilities.csproj.CoreCompileInputs.cache
================================================
7403864cafaed2a728f00ceee3c1398419914ee6
================================================
FILE: Source/BrawlStars.Utilities/obj/Debug/netstandard2.0/ClashofClans.Utilities.csproj.FileListAbsolute.txt
================================================
E:\20Clash-master\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.deps.json
E:\20Clash-master\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.dll
E:\20Clash-master\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.pdb
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.csprojAssemblyReference.cache
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.AssemblyInfoInputs.cache
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.AssemblyInfo.cs
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.dll
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.pdb
E:\20Clash-master\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.csproj.CoreCompileInputs.cache
E:\BrawlStars\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.deps.json
E:\BrawlStars\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.dll
E:\BrawlStars\src\ClashofClans.Utilities\bin\Debug\netstandard2.0\ClashofClans.Utilities.pdb
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.csprojAssemblyReference.cache
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.csproj.CoreCompileInputs.cache
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.AssemblyInfoInputs.cache
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.AssemblyInfo.cs
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.dll
E:\BrawlStars\src\ClashofClans.Utilities\obj\Debug\netstandard2.0\ClashofClans.Utilities.pdb
================================================
FILE: Source/BrawlStars.Utilities/obj/Release/netstandard2.0/ClashofClans.Utilities.AssemblyInfo.cs
================================================
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyTitleAttribute("ClashofClans.Utilities")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.
================================================
FILE: Source/BrawlStars.Utilities/obj/Release/netstandard2.0/ClashofClans.Utilities.AssemblyInfoInputs.cache
================================================
6afc444d22c58c07108dccaca99e4e84c99bfe69
================================================
FILE: Source/BrawlStars.Utilities/obj/Release/netstandard2.0/ClashofClans.Utilities.csproj.CoreCompileInputs.cache
================================================
c6e616abff42b709139c0e95fa4890c27b76eec2
================================================
FILE: Source/BrawlStars.Utilities/obj/Release/netstandard2.0/ClashofClans.Utilities.csproj.FileListAbsolute.txt
================================================
E:\20Clash-master\src\ClashofClans.Utilities\bin\Release\netstandard2.0\ClashofClans.Utilities.deps.json
E:\20Clash-master\src\ClashofClans.Utilities\bin\Release\netstandard2.0\ClashofClans.Utilities.dll
E:\20Clash-master\src\ClashofClans.Utilities\bin\Release\netstandard2.0\ClashofClans.Utilities.pdb
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.csprojAssemblyReference.cache
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.csproj.CoreCompileInputs.cache
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.AssemblyInfoInputs.cache
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.AssemblyInfo.cs
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.dll
E:\20Clash-master\src\ClashofClans.Utilities\obj\Release\netstandard2.0\ClashofClans.Utilities.pdb
================================================
FILE: Source/BrawlStars.Utilities/obj/project.assets.json
================================================
{
"version": 3,
"targets": {
".NETStandard,Version=v2.0": {
"BouncyCastle.NetCore/1.8.3": {
"type": "package",
"dependencies": {
"NETStandard.Library": "1.6.0",
"System.Reflection": "4.3.0",
"System.Reflection.TypeExtensions": "4.1.0"
},
"compile": {
"lib/netstandard2.0/BouncyCastle.Crypto.dll": {}
},
"runtime": {
"lib/netstandard2.0/BouncyCastle.Crypto.dll": {}
}
},
"DotNetty.Buffers/0.6.0": {
"type": "package",
"dependencies": {
"DotNetty.Common": "0.6.0",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.2"
},
"compile": {
"lib/netstandard1.3/DotNetty.Buffers.dll": {}
},
"runtime": {
"lib/netstandard1.3/DotNetty.Buffers.dll": {}
}
},
"DotNetty.Common/0.6.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Logging": "1.1.1",
"NETStandard.Library": "1.6.1",
"System.Diagnostics.Contracts": "4.3.0",
"System.Net.NetworkInformation": "4.3.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.2"
},
"compile": {
"lib/netstandard1.3/DotNetty.Common.dll": {}
},
"runtime": {
"lib/netstandard1.3/DotNetty.Common.dll": {}
}
},
"Google.Protobuf/3.6.1": {
"type": "package",
"dependencies": {
"NETStandard.Library": "1.6.1"
},
"compile": {
"lib/netstandard1.0/Google.Protobuf.dll": {}
},
"runtime": {
"lib/netstandard1.0/Google.Protobuf.dll": {}
}
},
"Microsoft.CSharp/4.0.1": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Dynamic.Runtime": "4.0.11",
"System.Globalization": "4.0.11",
"System.Linq": "4.1.0",
"System.Linq.Expressions": "4.1.0",
"System.ObjectModel": "4.0.12",
"System.Reflection": "4.1.0",
"System.Reflection.Extensions": "4.0.1",
"System.Reflection.Primitives": "4.0.1",
"System.Reflection.TypeExtensions": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.InteropServices": "4.1.0",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.0/Microsoft.CSharp.dll": {}
},
"runtime": {
"lib/netstandard1.3/Microsoft.CSharp.dll": {}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/1.1.0": {
"type": "package",
"dependencies": {
"NETStandard.Library": "1.6.1",
"System.ComponentModel": "4.3.0"
},
"compile": {
"lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {}
},
"runtime": {
"lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {}
}
},
"Microsoft.Extensions.Logging/1.1.1": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.1.0",
"Microsoft.Extensions.Logging.Abstractions": "1.1.1",
"NETStandard.Library": "1.6.1"
},
"compile": {
"lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {}
},
"runtime": {
"lib/netstandard1.1/Microsoft.Extensions.Logging.dll": {}
}
},
"Microsoft.Extensions.Logging.Abstractions/1.1.1": {
"type": "package",
"dependencies": {
"NETStandard.Library": "1.6.1"
},
"compile": {
"lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {}
},
"runtime": {
"lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll": {}
}
},
"Microsoft.NETCore.Platforms/1.1.0": {
"type": "package",
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/_._": {}
}
},
"Microsoft.NETCore.Targets/1.1.0": {
"type": "package",
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/_._": {}
}
},
"Microsoft.Win32.Primitives/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/_._": {}
}
},
"MySql.Data/8.0.19": {
"type": "package",
"dependencies": {
"BouncyCastle.NetCore": "1.8.3",
"Google.Protobuf": "3.6.1",
"SSH.NET": "2016.1.0",
"System.Configuration.ConfigurationManager": "4.4.1",
"System.Security.Permissions": "4.6.0",
"System.Text.Encoding.CodePages": "4.4.0"
},
"compile": {
"lib/netstandard2.0/MySql.Data.dll": {},
"lib/netstandard2.0/Ubiety.Dns.Core.dll": {}
},
"runtime": {
"lib/netstandard2.0/MySql.Data.dll": {},
"lib/netstandard2.0/Ubiety.Dns.Core.dll": {}
}
},
"NETStandard.Library/2.0.3": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0"
},
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/_._": {}
},
"build": {
"build/netstandard2.0/NETStandard.Library.targets": {}
}
},
"Newtonsoft.Json/12.0.2": {
"type": "package",
"compile": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {}
},
"runtime": {
"lib/netstandard2.0/Newtonsoft.Json.dll": {}
}
},
"runtime.native.System/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
},
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/_._": {}
}
},
"runtime.native.System.Security.Cryptography/4.0.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"Microsoft.NETCore.Targets": "1.0.1"
},
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/_._": {}
}
},
"SSH.NET/2016.1.0": {
"type": "package",
"dependencies": {
"Microsoft.CSharp": "4.0.1",
"SshNet.Security.Cryptography": "[1.2.0]",
"System.Diagnostics.Debug": "4.0.11",
"System.Diagnostics.Tools": "4.0.1",
"System.Diagnostics.TraceSource": "4.0.0",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.IO.FileSystem": "4.0.1",
"System.IO.FileSystem.Primitives": "4.0.1",
"System.Linq": "4.1.0",
"System.Net.NameResolution": "4.0.0",
"System.Net.Sockets": "4.1.0",
"System.Reflection.Extensions": "4.0.1",
"System.Runtime.Extensions": "4.1.0",
"System.Security.Cryptography.Algorithms": "4.2.0",
"System.Text.RegularExpressions": "4.1.0",
"System.Threading": "4.0.11",
"System.Threading.Thread": "4.0.0",
"System.Threading.ThreadPool": "4.0.10",
"System.Threading.Timer": "4.0.1",
"System.Xml.XPath.XmlDocument": "4.0.1",
"System.Xml.XmlDocument": "4.0.1"
},
"compile": {
"lib/netstandard1.3/Renci.SshNet.dll": {}
},
"runtime": {
"lib/netstandard1.3/Renci.SshNet.dll": {}
}
},
"SshNet.Security.Cryptography/1.2.0": {
"type": "package",
"dependencies": {
"System.IO": "4.1.0",
"System.Security.Cryptography.Primitives": "4.0.0"
},
"compile": {
"lib/netstandard1.3/SshNet.Security.Cryptography.dll": {}
},
"runtime": {
"lib/netstandard1.3/SshNet.Security.Cryptography.dll": {}
}
},
"System.Collections/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Collections.dll": {}
}
},
"System.Collections.Concurrent/4.0.12": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Diagnostics.Tracing": "4.1.0",
"System.Globalization": "4.0.11",
"System.Reflection": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11",
"System.Threading.Tasks": "4.0.11"
},
"compile": {
"ref/netstandard1.3/_._": {}
},
"runtime": {
"lib/netstandard1.3/System.Collections.Concurrent.dll": {}
}
},
"System.ComponentModel/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.0/System.ComponentModel.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.ComponentModel.dll": {}
}
},
"System.Configuration.ConfigurationManager/4.4.1": {
"type": "package",
"dependencies": {
"System.Security.Cryptography.ProtectedData": "4.4.0"
},
"compile": {
"ref/netstandard2.0/System.Configuration.ConfigurationManager.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {}
}
},
"System.Diagnostics.Contracts/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.0/System.Diagnostics.Contracts.dll": {}
},
"runtime": {
"lib/netstandard1.0/System.Diagnostics.Contracts.dll": {}
}
},
"System.Diagnostics.Debug/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Diagnostics.Debug.dll": {}
}
},
"System.Diagnostics.Tools/4.0.1": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"Microsoft.NETCore.Targets": "1.0.1",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.0/System.Diagnostics.Tools.dll": {}
}
},
"System.Diagnostics.TraceSource/4.0.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11",
"runtime.native.System": "4.0.0"
},
"compile": {
"ref/netstandard1.3/System.Diagnostics.TraceSource.dll": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Diagnostics.Tracing/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.5/_._": {}
}
},
"System.Dynamic.Runtime/4.0.11": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.Linq": "4.1.0",
"System.Linq.Expressions": "4.1.0",
"System.ObjectModel": "4.0.12",
"System.Reflection": "4.1.0",
"System.Reflection.Emit": "4.0.1",
"System.Reflection.Emit.ILGeneration": "4.0.1",
"System.Reflection.Primitives": "4.0.1",
"System.Reflection.TypeExtensions": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.Dynamic.Runtime.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Dynamic.Runtime.dll": {}
}
},
"System.Globalization/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Globalization.dll": {}
}
},
"System.IO/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"compile": {
"ref/netstandard1.5/System.IO.dll": {}
}
},
"System.IO.FileSystem/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.IO.FileSystem.dll": {}
}
},
"System.IO.FileSystem.Primitives/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {}
}
},
"System.Linq/4.3.0": {
"type": "package",
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0"
},
"compile": {
"ref/netstandard1.6/System.Linq.dll": {}
},
"runtime": {
"lib/netstandard1.6/System.Linq.dll": {}
}
},
"System.Linq.Expressions/4.1.0": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Linq": "4.1.0",
"System.ObjectModel": "4.0.12",
"System.Reflection": "4.1.0",
"System.Reflection.Emit": "4.0.1",
"System.Reflection.Emit.ILGeneration": "4.0.1",
"System.Reflection.Emit.Lightweight": "4.0.1",
"System.Reflection.Extensions": "4.0.1",
"System.Reflection.Primitives": "4.0.1",
"System.Reflection.TypeExtensions": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.6/System.Linq.Expressions.dll": {}
},
"runtime": {
"lib/netstandard1.6/System.Linq.Expressions.dll": {}
}
},
"System.Net.NameResolution/4.0.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"System.Collections": "4.0.11",
"System.Diagnostics.Tracing": "4.1.0",
"System.Globalization": "4.0.11",
"System.Net.Primitives": "4.0.11",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.Handles": "4.0.1",
"System.Runtime.InteropServices": "4.1.0",
"System.Security.Principal.Windows": "4.0.0",
"System.Threading": "4.0.11",
"System.Threading.Tasks": "4.0.11",
"runtime.native.System": "4.0.0"
},
"compile": {
"ref/netstandard1.3/System.Net.NameResolution.dll": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Net.NetworkInformation/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.Win32.Primitives": "4.3.0",
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Linq": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Net.Sockets": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Principal.Windows": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Overlapped": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"System.Threading.Thread": "4.3.0",
"System.Threading.ThreadPool": "4.3.0",
"runtime.native.System": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Net.NetworkInformation.dll": {}
},
"runtimeTargets": {
"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll": {
"assetType": "runtime",
"rid": "linux"
},
"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll": {
"assetType": "runtime",
"rid": "osx"
},
"runtimes/win/lib/netstandard1.3/System.Net.NetworkInformation.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Net.Primitives/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Net.Primitives.dll": {}
}
},
"System.Net.Sockets/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Net.Sockets.dll": {}
}
},
"System.ObjectModel/4.0.12": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.ObjectModel.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.ObjectModel.dll": {}
}
},
"System.Reflection/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.5/System.Reflection.dll": {}
}
},
"System.Reflection.Emit/4.0.1": {
"type": "package",
"dependencies": {
"System.IO": "4.1.0",
"System.Reflection": "4.1.0",
"System.Reflection.Emit.ILGeneration": "4.0.1",
"System.Reflection.Primitives": "4.0.1",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.1/_._": {}
},
"runtime": {
"lib/netstandard1.3/System.Reflection.Emit.dll": {}
}
},
"System.Reflection.Emit.ILGeneration/4.0.1": {
"type": "package",
"dependencies": {
"System.Reflection": "4.1.0",
"System.Reflection.Primitives": "4.0.1",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {}
}
},
"System.Reflection.Emit.Lightweight/4.0.1": {
"type": "package",
"dependencies": {
"System.Reflection": "4.1.0",
"System.Reflection.Emit.ILGeneration": "4.0.1",
"System.Reflection.Primitives": "4.0.1",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {}
}
},
"System.Reflection.Extensions/4.0.1": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"Microsoft.NETCore.Targets": "1.0.1",
"System.Reflection": "4.1.0",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.0/System.Reflection.Extensions.dll": {}
}
},
"System.Reflection.Primitives/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.0/System.Reflection.Primitives.dll": {}
}
},
"System.Reflection.TypeExtensions/4.1.0": {
"type": "package",
"dependencies": {
"System.Reflection": "4.1.0",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.5/System.Reflection.TypeExtensions.dll": {}
},
"runtime": {
"lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {}
}
},
"System.Resources.ResourceManager/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.0/_._": {}
}
},
"System.Runtime/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0"
},
"compile": {
"ref/netstandard1.5/System.Runtime.dll": {}
}
},
"System.Runtime.CompilerServices.Unsafe/4.5.2": {
"type": "package",
"compile": {
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {}
}
},
"System.Runtime.Extensions/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.5/System.Runtime.Extensions.dll": {}
}
},
"System.Runtime.Handles/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Runtime.Handles.dll": {}
}
},
"System.Runtime.InteropServices/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
},
"compile": {
"ref/netstandard1.5/_._": {}
}
},
"System.Runtime.Numerics/4.0.1": {
"type": "package",
"dependencies": {
"System.Globalization": "4.0.11",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0"
},
"compile": {
"ref/netstandard1.1/_._": {}
},
"runtime": {
"lib/netstandard1.3/System.Runtime.Numerics.dll": {}
}
},
"System.Security.AccessControl/4.6.0": {
"type": "package",
"dependencies": {
"System.Security.Principal.Windows": "4.6.0"
},
"compile": {
"ref/netstandard2.0/System.Security.AccessControl.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Security.AccessControl.dll": {}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Security.Cryptography.Algorithms/4.2.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"System.Collections": "4.0.11",
"System.IO": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.Handles": "4.0.1",
"System.Runtime.InteropServices": "4.1.0",
"System.Runtime.Numerics": "4.0.1",
"System.Security.Cryptography.Encoding": "4.0.0",
"System.Security.Cryptography.Primitives": "4.0.0",
"System.Text.Encoding": "4.0.11",
"runtime.native.System.Security.Cryptography": "4.0.0"
},
"compile": {
"ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Security.Cryptography.Encoding/4.0.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"System.Collections": "4.0.11",
"System.Collections.Concurrent": "4.0.12",
"System.Linq": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.Handles": "4.0.1",
"System.Runtime.InteropServices": "4.1.0",
"System.Security.Cryptography.Primitives": "4.0.0",
"System.Text.Encoding": "4.0.11",
"runtime.native.System.Security.Cryptography": "4.0.0"
},
"compile": {
"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Security.Cryptography.Primitives/4.0.0": {
"type": "package",
"dependencies": {
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Threading": "4.0.11",
"System.Threading.Tasks": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {}
}
},
"System.Security.Cryptography.ProtectedData/4.4.0": {
"type": "package",
"compile": {
"ref/netstandard2.0/_._": {}
},
"runtime": {
"lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Security.Permissions/4.6.0": {
"type": "package",
"dependencies": {
"System.Security.AccessControl": "4.6.0"
},
"compile": {
"ref/netstandard2.0/System.Security.Permissions.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Security.Permissions.dll": {}
}
},
"System.Security.Principal.Windows/4.6.0": {
"type": "package",
"compile": {
"ref/netstandard2.0/System.Security.Principal.Windows.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Security.Principal.Windows.dll": {}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Text.Encoding/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Text.Encoding.dll": {}
}
},
"System.Text.Encoding.CodePages/4.4.0": {
"type": "package",
"compile": {
"ref/netstandard2.0/System.Text.Encoding.CodePages.dll": {}
},
"runtime": {
"lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {}
},
"runtimeTargets": {
"runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Text.Encoding.Extensions/4.0.11": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"Microsoft.NETCore.Targets": "1.0.1",
"System.Runtime": "4.1.0",
"System.Text.Encoding": "4.0.11"
},
"compile": {
"ref/netstandard1.3/_._": {}
}
},
"System.Text.RegularExpressions/4.1.0": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Globalization": "4.0.11",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11"
},
"compile": {
"ref/netstandard1.6/System.Text.RegularExpressions.dll": {}
},
"runtime": {
"lib/netstandard1.6/System.Text.RegularExpressions.dll": {}
}
},
"System.Threading/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0",
"System.Threading.Tasks": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Threading.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Threading.dll": {}
}
},
"System.Threading.Overlapped/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
},
"compile": {
"ref/netstandard1.3/_._": {}
},
"runtimeTargets": {
"runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll": {
"assetType": "runtime",
"rid": "unix"
},
"runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll": {
"assetType": "runtime",
"rid": "win"
}
}
},
"System.Threading.Tasks/4.3.0": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0",
"Microsoft.NETCore.Targets": "1.1.0",
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Threading.Tasks.dll": {}
}
},
"System.Threading.Tasks.Extensions/4.0.0": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Runtime": "4.1.0",
"System.Threading.Tasks": "4.0.11"
},
"compile": {
"lib/netstandard1.0/_._": {}
},
"runtime": {
"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": {}
}
},
"System.Threading.Thread/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Threading.Thread.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Threading.Thread.dll": {}
}
},
"System.Threading.ThreadPool/4.3.0": {
"type": "package",
"dependencies": {
"System.Runtime": "4.3.0",
"System.Runtime.Handles": "4.3.0"
},
"compile": {
"ref/netstandard1.3/System.Threading.ThreadPool.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Threading.ThreadPool.dll": {}
}
},
"System.Threading.Timer/4.0.1": {
"type": "package",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1",
"Microsoft.NETCore.Targets": "1.0.1",
"System.Runtime": "4.1.0"
},
"compile": {
"ref/netstandard1.2/System.Threading.Timer.dll": {}
}
},
"System.Xml.ReaderWriter/4.0.11": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.IO.FileSystem": "4.0.1",
"System.IO.FileSystem.Primitives": "4.0.1",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Runtime.InteropServices": "4.1.0",
"System.Text.Encoding": "4.0.11",
"System.Text.Encoding.Extensions": "4.0.11",
"System.Text.RegularExpressions": "4.1.0",
"System.Threading.Tasks": "4.0.11",
"System.Threading.Tasks.Extensions": "4.0.0"
},
"compile": {
"ref/netstandard1.3/System.Xml.ReaderWriter.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Xml.ReaderWriter.dll": {}
}
},
"System.Xml.XmlDocument/4.0.1": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Text.Encoding": "4.0.11",
"System.Threading": "4.0.11",
"System.Xml.ReaderWriter": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.Xml.XmlDocument.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Xml.XmlDocument.dll": {}
}
},
"System.Xml.XPath/4.0.1": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Diagnostics.Debug": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11",
"System.Xml.ReaderWriter": "4.0.11"
},
"compile": {
"ref/netstandard1.3/System.Xml.XPath.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Xml.XPath.dll": {}
}
},
"System.Xml.XPath.XmlDocument/4.0.1": {
"type": "package",
"dependencies": {
"System.Collections": "4.0.11",
"System.Globalization": "4.0.11",
"System.IO": "4.1.0",
"System.Resources.ResourceManager": "4.0.1",
"System.Runtime": "4.1.0",
"System.Runtime.Extensions": "4.1.0",
"System.Threading": "4.0.11",
"System.Xml.ReaderWriter": "4.0.11",
"System.Xml.XPath": "4.0.1",
"System.Xml.XmlDocument": "4.0.1"
},
"compile": {
"ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {}
},
"runtime": {
"lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {}
}
}
}
},
"libraries": {
"BouncyCastle.NetCore/1.8.3": {
"sha512": "jAy3uHN1U9DpoT/TgLqDTEhlccn/4doOVxhSmmNsnoSsGfHT9Lwr634ac9D0YFujAhNw61nWF4UIpHyzv0aQww==",
"type": "package",
"path": "bouncycastle.netcore/1.8.3",
"files": [
".nupkg.metadata",
".signature.p7s",
"bouncycastle.netcore.1.8.3.nupkg.sha512",
"bouncycastle.netcore.nuspec",
"lib/Mono/BouncyCastle.Crypto.dll",
"lib/Mono/BouncyCastle.Crypto.xml",
"lib/MonoAndroid/BouncyCastle.Crypto.dll",
"lib/MonoAndroid/BouncyCastle.Crypto.xml",
"lib/MonoMac/BouncyCastle.Crypto.dll",
"lib/MonoMac/BouncyCastle.Crypto.xml",
"lib/MonoTouch/BouncyCastle.Crypto.dll",
"lib/MonoTouch/BouncyCastle.Crypto.xml",
"lib/net20/BouncyCastle.Crypto.dll",
"lib/net20/BouncyCastle.Crypto.xml",
"lib/netstandard1.3/BouncyCastle.Crypto.dll",
"lib/netstandard1.3/BouncyCastle.Crypto.xml",
"lib/netstandard2.0/BouncyCastle.Crypto.dll",
"lib/netstandard2.0/BouncyCastle.Crypto.xml",
"lib/xamarinios/BouncyCastle.Crypto.dll",
"lib/xamarinios/BouncyCastle.Crypto.xml"
]
},
"DotNetty.Buffers/0.6.0": {
"sha512": "MjxoFMdKsSJ5CLKTFHTKYoFUZUvC6VHGx71vPLSflmR/X4dSm57/hVxhsQY3YU6aASeRjqgNiCHn4II+UNOIWQ==",
"type": "package",
"path": "dotnetty.buffers/0.6.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"dotnetty.buffers.0.6.0.nupkg.sha512",
"dotnetty.buffers.nuspec",
"lib/net45/DotNetty.Buffers.dll",
"lib/net45/DotNetty.Buffers.xml",
"lib/netstandard1.3/DotNetty.Buffers.dll",
"lib/netstandard1.3/DotNetty.Buffers.xml"
]
},
"DotNetty.Common/0.6.0": {
"sha512": "aVD0bWoaH+Ou0wOTFzYEs3hrzsckUEkbdweVgwHsk7q0OTPgmPD/QkGxjNqjZ9diUyeGvHzYn7mFQGG5cgbYUA==",
"type": "package",
"path": "dotnetty.common/0.6.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"dotnetty.common.0.6.0.nupkg.sha512",
"dotnetty.common.nuspec",
"lib/net45/DotNetty.Common.dll",
"lib/net45/DotNetty.Common.xml",
"lib/netstandard1.3/DotNetty.Common.dll",
"lib/netstandard1.3/DotNetty.Common.xml"
]
},
"Google.Protobuf/3.6.1": {
"sha512": "741fGeDQjixBJaU2j+0CbrmZXsNJkTn/hWbOh4fLVXndHsCclJmWznCPWrJmPoZKvajBvAz3e8ECJOUvRtwjNQ==",
"type": "package",
"path": "google.protobuf/3.6.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"google.protobuf.3.6.1.nupkg.sha512",
"google.protobuf.nuspec",
"lib/net45/Google.Protobuf.dll",
"lib/net45/Google.Protobuf.xml",
"lib/netstandard1.0/Google.Protobuf.dll",
"lib/netstandard1.0/Google.Protobuf.xml"
]
},
"Microsoft.CSharp/4.0.1": {
"sha512": "17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==",
"type": "package",
"path": "microsoft.csharp/4.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/Microsoft.CSharp.dll",
"lib/netstandard1.3/Microsoft.CSharp.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"microsoft.csharp.4.0.1.nupkg.sha512",
"microsoft.csharp.nuspec",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/Microsoft.CSharp.dll",
"ref/netcore50/Microsoft.CSharp.xml",
"ref/netcore50/de/Microsoft.CSharp.xml",
"ref/netcore50/es/Microsoft.CSharp.xml",
"ref/netcore50/fr/Microsoft.CSharp.xml",
"ref/netcore50/it/Microsoft.CSharp.xml",
"ref/netcore50/ja/Microsoft.CSharp.xml",
"ref/netcore50/ko/Microsoft.CSharp.xml",
"ref/netcore50/ru/Microsoft.CSharp.xml",
"ref/netcore50/zh-hans/Microsoft.CSharp.xml",
"ref/netcore50/zh-hant/Microsoft.CSharp.xml",
"ref/netstandard1.0/Microsoft.CSharp.dll",
"ref/netstandard1.0/Microsoft.CSharp.xml",
"ref/netstandard1.0/de/Microsoft.CSharp.xml",
"ref/netstandard1.0/es/Microsoft.CSharp.xml",
"ref/netstandard1.0/fr/Microsoft.CSharp.xml",
"ref/netstandard1.0/it/Microsoft.CSharp.xml",
"ref/netstandard1.0/ja/Microsoft.CSharp.xml",
"ref/netstandard1.0/ko/Microsoft.CSharp.xml",
"ref/netstandard1.0/ru/Microsoft.CSharp.xml",
"ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml",
"ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._"
]
},
"Microsoft.Extensions.DependencyInjection.Abstractions/1.1.0": {
"sha512": "2luhjVaWZd8Wmr2KUJcLNAN+iZgezTyfamLG6Lo5FVYY1LYaS7UFOmNtApHGVIytWWtuXSk4ea0t2Vx0HgF5fg==",
"type": "package",
"path": "microsoft.extensions.dependencyinjection.abstractions/1.1.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"microsoft.extensions.dependencyinjection.abstractions.1.1.0.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec"
]
},
"Microsoft.Extensions.Logging/1.1.1": {
"sha512": "cxLG416uOEFmnv7w4/rsVKD4dRYFuUY+G5WXpLVLMNIL6VYcQkDe67cx2IWBrtUieA08w9eCuxrd2pxIrJ7Wtg==",
"type": "package",
"path": "microsoft.extensions.logging/1.1.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/netstandard1.1/Microsoft.Extensions.Logging.dll",
"lib/netstandard1.1/Microsoft.Extensions.Logging.xml",
"microsoft.extensions.logging.1.1.1.nupkg.sha512",
"microsoft.extensions.logging.nuspec"
]
},
"Microsoft.Extensions.Logging.Abstractions/1.1.1": {
"sha512": "MMWQNrwQKrSigIaGpPWIK9ZZCNd9aaCHaLgwfPiJNdOfU3UE+RA093YZ7B879MdZ1qSFPcS1QLLNjD+dxXX7Aw==",
"type": "package",
"path": "microsoft.extensions.logging.abstractions/1.1.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard1.1/Microsoft.Extensions.Logging.Abstractions.xml",
"microsoft.extensions.logging.abstractions.1.1.1.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec"
]
},
"Microsoft.NETCore.Platforms/1.1.0": {
"sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
"type": "package",
"path": "microsoft.netcore.platforms/1.1.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/netstandard1.0/_._",
"microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"microsoft.netcore.platforms.nuspec",
"runtime.json"
]
},
"Microsoft.NETCore.Targets/1.1.0": {
"sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
"type": "package",
"path": "microsoft.netcore.targets/1.1.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/netstandard1.0/_._",
"microsoft.netcore.targets.1.1.0.nupkg.sha512",
"microsoft.netcore.targets.nuspec",
"runtime.json"
]
},
"Microsoft.Win32.Primitives/4.3.0": {
"sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
"type": "package",
"path": "microsoft.win32.primitives/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/Microsoft.Win32.Primitives.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"microsoft.win32.primitives.4.3.0.nupkg.sha512",
"microsoft.win32.primitives.nuspec",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/Microsoft.Win32.Primitives.dll",
"ref/netstandard1.3/Microsoft.Win32.Primitives.dll",
"ref/netstandard1.3/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml",
"ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._"
]
},
"MySql.Data/8.0.19": {
"sha512": "zPFSg8rW3PcFIn27d0lEHQ/XWQhBzGIgKYQYFZN8aHLlpen5D6nz3/wb54V9ZRH3zkWlIWQ7FfxqbQdl3vizjQ==",
"type": "package",
"path": "mysql.data/8.0.19",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net452/MySql.Data.dll",
"lib/net452/MySql.Data.xml",
"lib/net452/Ubiety.Dns.Core.dll",
"lib/net48/MySql.Data.dll",
"lib/net48/MySql.Data.xml",
"lib/net48/Ubiety.Dns.Core.dll",
"lib/netstandard2.0/MySql.Data.dll",
"lib/netstandard2.0/MySql.Data.xml",
"lib/netstandard2.0/Ubiety.Dns.Core.dll",
"lib/netstandard2.1/MySql.Data.dll",
"lib/netstandard2.1/MySql.Data.xml",
"lib/netstandard2.1/Ubiety.Dns.Core.dll",
"mysql.data.8.0.19.nupkg.sha512",
"mysql.data.nuspec"
]
},
"NETStandard.Library/2.0.3": {
"sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
"type": "package",
"path": "netstandard.library/2.0.3",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"build/netstandard2.0/NETStandard.Library.targets",
"build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll",
"build/netstandard2.0/ref/System.AppContext.dll",
"build/netstandard2.0/ref/System.Collections.Concurrent.dll",
"build/netstandard2.0/ref/System.Collections.NonGeneric.dll",
"build/netstandard2.0/ref/System.Collections.Specialized.dll",
"build/netstandard2.0/ref/System.Collections.dll",
"build/netstandard2.0/ref/System.ComponentModel.Composition.dll",
"build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll",
"build/netstandard2.0/ref/System.ComponentModel.Primitives.dll",
"build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll",
"build/netstandard2.0/ref/System.ComponentModel.dll",
"build/netstandard2.0/ref/System.Console.dll",
"build/netstandard2.0/ref/System.Core.dll",
"build/netstandard2.0/ref/System.Data.Common.dll",
"build/netstandard2.0/ref/System.Data.dll",
"build/netstandard2.0/ref/System.Diagnostics.Contracts.dll",
"build/netstandard2.0/ref/System.Diagnostics.Debug.dll",
"build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll",
"build/netstandard2.0/ref/System.Diagnostics.Process.dll",
"build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll",
"build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll",
"build/netstandard2.0/ref/System.Diagnostics.Tools.dll",
"build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll",
"build/netstandard2.0/ref/System.Diagnostics.Tracing.dll",
"build/netstandard2.0/ref/System.Drawing.Primitives.dll",
"build/netstandard2.0/ref/System.Drawing.dll",
"build/netstandard2.0/ref/System.Dynamic.Runtime.dll",
"build/netstandard2.0/ref/System.Globalization.Calendars.dll",
"build/netstandard2.0/ref/System.Globalization.Extensions.dll",
"build/netstandard2.0/ref/System.Globalization.dll",
"build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll",
"build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll",
"build/netstandard2.0/ref/System.IO.Compression.dll",
"build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll",
"build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll",
"build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll",
"build/netstandard2.0/ref/System.IO.FileSystem.dll",
"build/netstandard2.0/ref/System.IO.IsolatedStorage.dll",
"build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll",
"build/netstandard2.0/ref/System.IO.Pipes.dll",
"build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll",
"build/netstandard2.0/ref/System.IO.dll",
"build/netstandard2.0/ref/System.Linq.Expressions.dll",
"build/netstandard2.0/ref/System.Linq.Parallel.dll",
"build/netstandard2.0/ref/System.Linq.Queryable.dll",
"build/netstandard2.0/ref/System.Linq.dll",
"build/netstandard2.0/ref/System.Net.Http.dll",
"build/netstandard2.0/ref/System.Net.NameResolution.dll",
"build/netstandard2.0/ref/System.Net.NetworkInformation.dll",
"build/netstandard2.0/ref/System.Net.Ping.dll",
"build/netstandard2.0/ref/System.Net.Primitives.dll",
"build/netstandard2.0/ref/System.Net.Requests.dll",
"build/netstandard2.0/ref/System.Net.Security.dll",
"build/netstandard2.0/ref/System.Net.Sockets.dll",
"build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll",
"build/netstandard2.0/ref/System.Net.WebSockets.Client.dll",
"build/netstandard2.0/ref/System.Net.WebSockets.dll",
"build/netstandard2.0/ref/System.Net.dll",
"build/netstandard2.0/ref/System.Numerics.dll",
"build/netstandard2.0/ref/System.ObjectModel.dll",
"build/netstandard2.0/ref/System.Reflection.Extensions.dll",
"build/netstandard2.0/ref/System.Reflection.Primitives.dll",
"build/netstandard2.0/ref/System.Reflection.dll",
"build/netstandard2.0/ref/System.Resources.Reader.dll",
"build/netstandard2.0/ref/System.Resources.ResourceManager.dll",
"build/netstandard2.0/ref/System.Resources.Writer.dll",
"build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll",
"build/netstandard2.0/ref/System.Runtime.Extensions.dll",
"build/netstandard2.0/ref/System.Runtime.Handles.dll",
"build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll",
"build/netstandard2.0/ref/System.Runtime.InteropServices.dll",
"build/netstandard2.0/ref/System.Runtime.Numerics.dll",
"build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll",
"build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll",
"build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll",
"build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll",
"build/netstandard2.0/ref/System.Runtime.Serialization.dll",
"build/netstandard2.0/ref/System.Runtime.dll",
"build/netstandard2.0/ref/System.Security.Claims.dll",
"build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll",
"build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll",
"build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll",
"build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll",
"build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll",
"build/netstandard2.0/ref/System.Security.Principal.dll",
"build/netstandard2.0/ref/System.Security.SecureString.dll",
"build/netstandard2.0/ref/System.ServiceModel.Web.dll",
"build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll",
"build/netstandard2.0/ref/System.Text.Encoding.dll",
"build/netstandard2.0/ref/System.Text.RegularExpressions.dll",
"build/netstandard2.0/ref/System.Threading.Overlapped.dll",
"build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll",
"build/netstandard2.0/ref/System.Threading.Tasks.dll",
"build/netstandard2.0/ref/System.Threading.Thread.dll",
"build/netstandard2.0/ref/System.Threading.ThreadPool.dll",
"build/netstandard2.0/ref/System.Threading.Timer.dll",
"build/netstandard2.0/ref/System.Threading.dll",
"build/netstandard2.0/ref/System.Transactions.dll",
"build/netstandard2.0/ref/System.ValueTuple.dll",
"build/netstandard2.0/ref/System.Web.dll",
"build/netstandard2.0/ref/System.Windows.dll",
"build/netstandard2.0/ref/System.Xml.Linq.dll",
"build/netstandard2.0/ref/System.Xml.ReaderWriter.dll",
"build/netstandard2.0/ref/System.Xml.Serialization.dll",
"build/netstandard2.0/ref/System.Xml.XDocument.dll",
"build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll",
"build/netstandard2.0/ref/System.Xml.XPath.dll",
"build/netstandard2.0/ref/System.Xml.XmlDocument.dll",
"build/netstandard2.0/ref/System.Xml.XmlSerializer.dll",
"build/netstandard2.0/ref/System.Xml.dll",
"build/netstandard2.0/ref/System.dll",
"build/netstandard2.0/ref/mscorlib.dll",
"build/netstandard2.0/ref/netstandard.dll",
"build/netstandard2.0/ref/netstandard.xml",
"lib/netstandard1.0/_._",
"netstandard.library.2.0.3.nupkg.sha512",
"netstandard.library.nuspec"
]
},
"Newtonsoft.Json/12.0.2": {
"sha512": "rTK0s2EKlfHsQsH6Yx2smvcTCeyoDNgCW7FEYyV01drPlh2T243PR2DiDXqtC5N4GDm4Ma/lkxfW5a/4793vbA==",
"type": "package",
"path": "newtonsoft.json/12.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.md",
"lib/net20/Newtonsoft.Json.dll",
"lib/net20/Newtonsoft.Json.xml",
"lib/net35/Newtonsoft.Json.dll",
"lib/net35/Newtonsoft.Json.xml",
"lib/net40/Newtonsoft.Json.dll",
"lib/net40/Newtonsoft.Json.xml",
"lib/net45/Newtonsoft.Json.dll",
"lib/net45/Newtonsoft.Json.xml",
"lib/netstandard1.0/Newtonsoft.Json.dll",
"lib/netstandard1.0/Newtonsoft.Json.xml",
"lib/netstandard1.3/Newtonsoft.Json.dll",
"lib/netstandard1.3/Newtonsoft.Json.xml",
"lib/netstandard2.0/Newtonsoft.Json.dll",
"lib/netstandard2.0/Newtonsoft.Json.xml",
"lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll",
"lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml",
"lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll",
"lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml",
"newtonsoft.json.12.0.2.nupkg.sha512",
"newtonsoft.json.nuspec"
]
},
"runtime.native.System/4.3.0": {
"sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"type": "package",
"path": "runtime.native.system/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/netstandard1.0/_._",
"runtime.native.system.4.3.0.nupkg.sha512",
"runtime.native.system.nuspec"
]
},
"runtime.native.System.Security.Cryptography/4.0.0": {
"sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==",
"type": "package",
"path": "runtime.native.system.security.cryptography/4.0.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/netstandard1.0/_._",
"runtime.native.system.security.cryptography.4.0.0.nupkg.sha512",
"runtime.native.system.security.cryptography.nuspec"
]
},
"SSH.NET/2016.1.0": {
"sha512": "b0fcFFOE044KNRhq1uGujmK04ab+OzA9xARdeVCoZrY6I4D1IIaR6dn6qBIa+er4bJapGBhznDitwcRQpSRC0w==",
"type": "package",
"path": "ssh.net/2016.1.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net35/Renci.SshNet.dll",
"lib/net35/Renci.SshNet.xml",
"lib/net40/Renci.SshNet.dll",
"lib/net40/Renci.SshNet.xml",
"lib/netstandard1.3/Renci.SshNet.dll",
"lib/netstandard1.3/Renci.SshNet.xml",
"lib/sl4/Renci.SshNet.dll",
"lib/sl4/Renci.SshNet.xml",
"lib/sl5/Renci.SshNet.dll",
"lib/sl5/Renci.SshNet.xml",
"lib/uap10/Renci.SshNet.dll",
"lib/uap10/Renci.SshNet.xml",
"lib/wp71/Renci.SshNet.dll",
"lib/wp71/Renci.SshNet.xml",
"lib/wp8/Renci.SshNet.dll",
"lib/wp8/Renci.SshNet.xml",
"ssh.net.2016.1.0.nupkg.sha512",
"ssh.net.nuspec"
]
},
"SshNet.Security.Cryptography/1.2.0": {
"sha512": "EeFsirrrkIK+cdlYsxukNjBN98cbU7eHfTYZEwxsbOa3dvgR/OhOD06C0sTxvNPhe4UQ6yM0p1sKcT69jqgjTw==",
"type": "package",
"path": "sshnet.security.cryptography/1.2.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net20/SshNet.Security.Cryptography.dll",
"lib/net20/SshNet.Security.Cryptography.xml",
"lib/net40/SshNet.Security.Cryptography.dll",
"lib/net40/SshNet.Security.Cryptography.xml",
"lib/net45/SshNet.Security.Cryptography.dll",
"lib/net45/SshNet.Security.Cryptography.xml",
"lib/netstandard1.0/SshNet.Security.Cryptography.dll",
"lib/netstandard1.0/SshNet.Security.Cryptography.xml",
"lib/netstandard1.3/SshNet.Security.Cryptography.dll",
"lib/netstandard1.3/SshNet.Security.Cryptography.xml",
"lib/portable-net45+win8+wpa81/SshNet.Security.Cryptography.dll",
"lib/portable-net45+win8+wpa81/SshNet.Security.Cryptography.xml",
"lib/sl4/SshNet.Security.Cryptography.dll",
"lib/sl4/SshNet.Security.Cryptography.xml",
"lib/sl5/SshNet.Security.Cryptography.dll",
"lib/sl5/SshNet.Security.Cryptography.xml",
"lib/uap10.0/SshNet.Security.Cryptography.dll",
"lib/uap10.0/SshNet.Security.Cryptography.xml",
"lib/wp71/SshNet.Security.Cryptography.dll",
"lib/wp71/SshNet.Security.Cryptography.xml",
"lib/wp8/SshNet.Security.Cryptography.dll",
"lib/wp8/SshNet.Security.Cryptography.xml",
"sshnet.security.cryptography.1.2.0.nupkg.sha512",
"sshnet.security.cryptography.nuspec"
]
},
"System.Collections/4.3.0": {
"sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"type": "package",
"path": "system.collections/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Collections.dll",
"ref/netcore50/System.Collections.xml",
"ref/netcore50/de/System.Collections.xml",
"ref/netcore50/es/System.Collections.xml",
"ref/netcore50/fr/System.Collections.xml",
"ref/netcore50/it/System.Collections.xml",
"ref/netcore50/ja/System.Collections.xml",
"ref/netcore50/ko/System.Collections.xml",
"ref/netcore50/ru/System.Collections.xml",
"ref/netcore50/zh-hans/System.Collections.xml",
"ref/netcore50/zh-hant/System.Collections.xml",
"ref/netstandard1.0/System.Collections.dll",
"ref/netstandard1.0/System.Collections.xml",
"ref/netstandard1.0/de/System.Collections.xml",
"ref/netstandard1.0/es/System.Collections.xml",
"ref/netstandard1.0/fr/System.Collections.xml",
"ref/netstandard1.0/it/System.Collections.xml",
"ref/netstandard1.0/ja/System.Collections.xml",
"ref/netstandard1.0/ko/System.Collections.xml",
"ref/netstandard1.0/ru/System.Collections.xml",
"ref/netstandard1.0/zh-hans/System.Collections.xml",
"ref/netstandard1.0/zh-hant/System.Collections.xml",
"ref/netstandard1.3/System.Collections.dll",
"ref/netstandard1.3/System.Collections.xml",
"ref/netstandard1.3/de/System.Collections.xml",
"ref/netstandard1.3/es/System.Collections.xml",
"ref/netstandard1.3/fr/System.Collections.xml",
"ref/netstandard1.3/it/System.Collections.xml",
"ref/netstandard1.3/ja/System.Collections.xml",
"ref/netstandard1.3/ko/System.Collections.xml",
"ref/netstandard1.3/ru/System.Collections.xml",
"ref/netstandard1.3/zh-hans/System.Collections.xml",
"ref/netstandard1.3/zh-hant/System.Collections.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.collections.4.3.0.nupkg.sha512",
"system.collections.nuspec"
]
},
"System.Collections.Concurrent/4.0.12": {
"sha512": "2gBcbb3drMLgxlI0fBfxMA31ec6AEyYCHygGse4vxceJan8mRIWeKJ24BFzN7+bi/NFTgdIgufzb94LWO5EERQ==",
"type": "package",
"path": "system.collections.concurrent/4.0.12",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Collections.Concurrent.dll",
"lib/netstandard1.3/System.Collections.Concurrent.dll",
"lib/portable-net45+win8+wpa81/_._",
"lib/win8/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Collections.Concurrent.dll",
"ref/netcore50/System.Collections.Concurrent.xml",
"ref/netcore50/de/System.Collections.Concurrent.xml",
"ref/netcore50/es/System.Collections.Concurrent.xml",
"ref/netcore50/fr/System.Collections.Concurrent.xml",
"ref/netcore50/it/System.Collections.Concurrent.xml",
"ref/netcore50/ja/System.Collections.Concurrent.xml",
"ref/netcore50/ko/System.Collections.Concurrent.xml",
"ref/netcore50/ru/System.Collections.Concurrent.xml",
"ref/netcore50/zh-hans/System.Collections.Concurrent.xml",
"ref/netcore50/zh-hant/System.Collections.Concurrent.xml",
"ref/netstandard1.1/System.Collections.Concurrent.dll",
"ref/netstandard1.1/System.Collections.Concurrent.xml",
"ref/netstandard1.1/de/System.Collections.Concurrent.xml",
"ref/netstandard1.1/es/System.Collections.Concurrent.xml",
"ref/netstandard1.1/fr/System.Collections.Concurrent.xml",
"ref/netstandard1.1/it/System.Collections.Concurrent.xml",
"ref/netstandard1.1/ja/System.Collections.Concurrent.xml",
"ref/netstandard1.1/ko/System.Collections.Concurrent.xml",
"ref/netstandard1.1/ru/System.Collections.Concurrent.xml",
"ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml",
"ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml",
"ref/netstandard1.3/System.Collections.Concurrent.dll",
"ref/netstandard1.3/System.Collections.Concurrent.xml",
"ref/netstandard1.3/de/System.Collections.Concurrent.xml",
"ref/netstandard1.3/es/System.Collections.Concurrent.xml",
"ref/netstandard1.3/fr/System.Collections.Concurrent.xml",
"ref/netstandard1.3/it/System.Collections.Concurrent.xml",
"ref/netstandard1.3/ja/System.Collections.Concurrent.xml",
"ref/netstandard1.3/ko/System.Collections.Concurrent.xml",
"ref/netstandard1.3/ru/System.Collections.Concurrent.xml",
"ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml",
"ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml",
"ref/portable-net45+win8+wpa81/_._",
"ref/win8/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.collections.concurrent.4.0.12.nupkg.sha512",
"system.collections.concurrent.nuspec"
]
},
"System.ComponentModel/4.3.0": {
"sha512": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==",
"type": "package",
"path": "system.componentmodel/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.ComponentModel.dll",
"lib/netstandard1.3/System.ComponentModel.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.ComponentModel.dll",
"ref/netcore50/System.ComponentModel.xml",
"ref/netcore50/de/System.ComponentModel.xml",
"ref/netcore50/es/System.ComponentModel.xml",
"ref/netcore50/fr/System.ComponentModel.xml",
"ref/netcore50/it/System.ComponentModel.xml",
"ref/netcore50/ja/System.ComponentModel.xml",
"ref/netcore50/ko/System.ComponentModel.xml",
"ref/netcore50/ru/System.ComponentModel.xml",
"ref/netcore50/zh-hans/System.ComponentModel.xml",
"ref/netcore50/zh-hant/System.ComponentModel.xml",
"ref/netstandard1.0/System.ComponentModel.dll",
"ref/netstandard1.0/System.ComponentModel.xml",
"ref/netstandard1.0/de/System.ComponentModel.xml",
"ref/netstandard1.0/es/System.ComponentModel.xml",
"ref/netstandard1.0/fr/System.ComponentModel.xml",
"ref/netstandard1.0/it/System.ComponentModel.xml",
"ref/netstandard1.0/ja/System.ComponentModel.xml",
"ref/netstandard1.0/ko/System.ComponentModel.xml",
"ref/netstandard1.0/ru/System.ComponentModel.xml",
"ref/netstandard1.0/zh-hans/System.ComponentModel.xml",
"ref/netstandard1.0/zh-hant/System.ComponentModel.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.componentmodel.4.3.0.nupkg.sha512",
"system.componentmodel.nuspec"
]
},
"System.Configuration.ConfigurationManager/4.4.1": {
"sha512": "jz3TWKMAeuDEyrPCK5Jyt4bzQcmzUIMcY9Ud6PkElFxTfnsihV+9N/UCqvxe1z5gc7jMYAnj7V1COMS9QKIuHQ==",
"type": "package",
"path": "system.configuration.configurationmanager/4.4.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/System.Configuration.ConfigurationManager.dll",
"lib/netstandard2.0/System.Configuration.ConfigurationManager.dll",
"ref/net461/System.Configuration.ConfigurationManager.dll",
"ref/net461/System.Configuration.ConfigurationManager.xml",
"ref/netstandard2.0/System.Configuration.ConfigurationManager.dll",
"ref/netstandard2.0/System.Configuration.ConfigurationManager.xml",
"system.configuration.configurationmanager.4.4.1.nupkg.sha512",
"system.configuration.configurationmanager.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Diagnostics.Contracts/4.3.0": {
"sha512": "eelRRbnm+OloiQvp9CXS0ixjNQldjjkHO4iIkR5XH2VIP8sUB/SIpa1TdUW6/+HDcQ+MlhP3pNa1u5SbzYuWGA==",
"type": "package",
"path": "system.diagnostics.contracts/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Diagnostics.Contracts.dll",
"lib/netstandard1.0/System.Diagnostics.Contracts.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Diagnostics.Contracts.dll",
"ref/netcore50/System.Diagnostics.Contracts.xml",
"ref/netcore50/de/System.Diagnostics.Contracts.xml",
"ref/netcore50/es/System.Diagnostics.Contracts.xml",
"ref/netcore50/fr/System.Diagnostics.Contracts.xml",
"ref/netcore50/it/System.Diagnostics.Contracts.xml",
"ref/netcore50/ja/System.Diagnostics.Contracts.xml",
"ref/netcore50/ko/System.Diagnostics.Contracts.xml",
"ref/netcore50/ru/System.Diagnostics.Contracts.xml",
"ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml",
"ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/System.Diagnostics.Contracts.dll",
"ref/netstandard1.0/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/de/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/es/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/it/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml",
"ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll",
"system.diagnostics.contracts.4.3.0.nupkg.sha512",
"system.diagnostics.contracts.nuspec"
]
},
"System.Diagnostics.Debug/4.3.0": {
"sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
"type": "package",
"path": "system.diagnostics.debug/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Diagnostics.Debug.dll",
"ref/netcore50/System.Diagnostics.Debug.xml",
"ref/netcore50/de/System.Diagnostics.Debug.xml",
"ref/netcore50/es/System.Diagnostics.Debug.xml",
"ref/netcore50/fr/System.Diagnostics.Debug.xml",
"ref/netcore50/it/System.Diagnostics.Debug.xml",
"ref/netcore50/ja/System.Diagnostics.Debug.xml",
"ref/netcore50/ko/System.Diagnostics.Debug.xml",
"ref/netcore50/ru/System.Diagnostics.Debug.xml",
"ref/netcore50/zh-hans/System.Diagnostics.Debug.xml",
"ref/netcore50/zh-hant/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/System.Diagnostics.Debug.dll",
"ref/netstandard1.0/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/de/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/es/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/fr/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/it/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/ja/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/ko/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/ru/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml",
"ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/System.Diagnostics.Debug.dll",
"ref/netstandard1.3/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/de/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/es/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/fr/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/it/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/ja/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/ko/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/ru/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml",
"ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.diagnostics.debug.4.3.0.nupkg.sha512",
"system.diagnostics.debug.nuspec"
]
},
"System.Diagnostics.Tools/4.0.1": {
"sha512": "xBfJ8pnd4C17dWaC9FM6aShzbJcRNMChUMD42I6772KGGrqaFdumwhn9OdM68erj1ueNo3xdQ1EwiFjK5k8p0g==",
"type": "package",
"path": "system.diagnostics.tools/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Diagnostics.Tools.dll",
"ref/netcore50/System.Diagnostics.Tools.xml",
"ref/netcore50/de/System.Diagnostics.Tools.xml",
"ref/netcore50/es/System.Diagnostics.Tools.xml",
"ref/netcore50/fr/System.Diagnostics.Tools.xml",
"ref/netcore50/it/System.Diagnostics.Tools.xml",
"ref/netcore50/ja/System.Diagnostics.Tools.xml",
"ref/netcore50/ko/System.Diagnostics.Tools.xml",
"ref/netcore50/ru/System.Diagnostics.Tools.xml",
"ref/netcore50/zh-hans/System.Diagnostics.Tools.xml",
"ref/netcore50/zh-hant/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/System.Diagnostics.Tools.dll",
"ref/netstandard1.0/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/de/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/es/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/fr/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/it/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/ja/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/ko/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/ru/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml",
"ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.diagnostics.tools.4.0.1.nupkg.sha512",
"system.diagnostics.tools.nuspec"
]
},
"System.Diagnostics.TraceSource/4.0.0": {
"sha512": "6WVCczFZKXwpWpzd/iJkYnsmWTSFFiU24Xx/YdHXBcu+nFI/ehTgeqdJQFbtRPzbrO3KtRNjvkhtj4t5/WwWsA==",
"type": "package",
"path": "system.diagnostics.tracesource/4.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Diagnostics.TraceSource.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Diagnostics.TraceSource.dll",
"ref/netstandard1.3/System.Diagnostics.TraceSource.dll",
"ref/netstandard1.3/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/de/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/es/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/fr/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/it/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/ja/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/ko/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/ru/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/zh-hans/System.Diagnostics.TraceSource.xml",
"ref/netstandard1.3/zh-hant/System.Diagnostics.TraceSource.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/unix/lib/netstandard1.3/System.Diagnostics.TraceSource.dll",
"runtimes/win/lib/net46/System.Diagnostics.TraceSource.dll",
"runtimes/win/lib/netstandard1.3/System.Diagnostics.TraceSource.dll",
"system.diagnostics.tracesource.4.0.0.nupkg.sha512",
"system.diagnostics.tracesource.nuspec"
]
},
"System.Diagnostics.Tracing/4.3.0": {
"sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"type": "package",
"path": "system.diagnostics.tracing/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.Diagnostics.Tracing.dll",
"lib/portable-net45+win8+wpa81/_._",
"lib/win8/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.Diagnostics.Tracing.dll",
"ref/netcore50/System.Diagnostics.Tracing.dll",
"ref/netcore50/System.Diagnostics.Tracing.xml",
"ref/netcore50/de/System.Diagnostics.Tracing.xml",
"ref/netcore50/es/System.Diagnostics.Tracing.xml",
"ref/netcore50/fr/System.Diagnostics.Tracing.xml",
"ref/netcore50/it/System.Diagnostics.Tracing.xml",
"ref/netcore50/ja/System.Diagnostics.Tracing.xml",
"ref/netcore50/ko/System.Diagnostics.Tracing.xml",
"ref/netcore50/ru/System.Diagnostics.Tracing.xml",
"ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml",
"ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/System.Diagnostics.Tracing.dll",
"ref/netstandard1.1/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/de/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/es/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/it/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml",
"ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/System.Diagnostics.Tracing.dll",
"ref/netstandard1.2/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/de/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/es/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/it/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml",
"ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/System.Diagnostics.Tracing.dll",
"ref/netstandard1.3/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/de/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/es/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/it/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml",
"ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/System.Diagnostics.Tracing.dll",
"ref/netstandard1.5/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/de/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/es/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/it/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml",
"ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml",
"ref/portable-net45+win8+wpa81/_._",
"ref/win8/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.diagnostics.tracing.4.3.0.nupkg.sha512",
"system.diagnostics.tracing.nuspec"
]
},
"System.Dynamic.Runtime/4.0.11": {
"sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
"type": "package",
"path": "system.dynamic.runtime/4.0.11",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Dynamic.Runtime.dll",
"lib/netstandard1.3/System.Dynamic.Runtime.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Dynamic.Runtime.dll",
"ref/netcore50/System.Dynamic.Runtime.xml",
"ref/netcore50/de/System.Dynamic.Runtime.xml",
"ref/netcore50/es/System.Dynamic.Runtime.xml",
"ref/netcore50/fr/System.Dynamic.Runtime.xml",
"ref/netcore50/it/System.Dynamic.Runtime.xml",
"ref/netcore50/ja/System.Dynamic.Runtime.xml",
"ref/netcore50/ko/System.Dynamic.Runtime.xml",
"ref/netcore50/ru/System.Dynamic.Runtime.xml",
"ref/netcore50/zh-hans/System.Dynamic.Runtime.xml",
"ref/netcore50/zh-hant/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/System.Dynamic.Runtime.dll",
"ref/netstandard1.0/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/de/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/es/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/fr/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/it/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/ja/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/ko/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/ru/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml",
"ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/System.Dynamic.Runtime.dll",
"ref/netstandard1.3/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/de/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/es/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/fr/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/it/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/ja/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/ko/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/ru/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml",
"ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll",
"system.dynamic.runtime.4.0.11.nupkg.sha512",
"system.dynamic.runtime.nuspec"
]
},
"System.Globalization/4.3.0": {
"sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"type": "package",
"path": "system.globalization/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Globalization.dll",
"ref/netcore50/System.Globalization.xml",
"ref/netcore50/de/System.Globalization.xml",
"ref/netcore50/es/System.Globalization.xml",
"ref/netcore50/fr/System.Globalization.xml",
"ref/netcore50/it/System.Globalization.xml",
"ref/netcore50/ja/System.Globalization.xml",
"ref/netcore50/ko/System.Globalization.xml",
"ref/netcore50/ru/System.Globalization.xml",
"ref/netcore50/zh-hans/System.Globalization.xml",
"ref/netcore50/zh-hant/System.Globalization.xml",
"ref/netstandard1.0/System.Globalization.dll",
"ref/netstandard1.0/System.Globalization.xml",
"ref/netstandard1.0/de/System.Globalization.xml",
"ref/netstandard1.0/es/System.Globalization.xml",
"ref/netstandard1.0/fr/System.Globalization.xml",
"ref/netstandard1.0/it/System.Globalization.xml",
"ref/netstandard1.0/ja/System.Globalization.xml",
"ref/netstandard1.0/ko/System.Globalization.xml",
"ref/netstandard1.0/ru/System.Globalization.xml",
"ref/netstandard1.0/zh-hans/System.Globalization.xml",
"ref/netstandard1.0/zh-hant/System.Globalization.xml",
"ref/netstandard1.3/System.Globalization.dll",
"ref/netstandard1.3/System.Globalization.xml",
"ref/netstandard1.3/de/System.Globalization.xml",
"ref/netstandard1.3/es/System.Globalization.xml",
"ref/netstandard1.3/fr/System.Globalization.xml",
"ref/netstandard1.3/it/System.Globalization.xml",
"ref/netstandard1.3/ja/System.Globalization.xml",
"ref/netstandard1.3/ko/System.Globalization.xml",
"ref/netstandard1.3/ru/System.Globalization.xml",
"ref/netstandard1.3/zh-hans/System.Globalization.xml",
"ref/netstandard1.3/zh-hant/System.Globalization.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.globalization.4.3.0.nupkg.sha512",
"system.globalization.nuspec"
]
},
"System.IO/4.3.0": {
"sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"type": "package",
"path": "system.io/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.IO.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.IO.dll",
"ref/netcore50/System.IO.dll",
"ref/netcore50/System.IO.xml",
"ref/netcore50/de/System.IO.xml",
"ref/netcore50/es/System.IO.xml",
"ref/netcore50/fr/System.IO.xml",
"ref/netcore50/it/System.IO.xml",
"ref/netcore50/ja/System.IO.xml",
"ref/netcore50/ko/System.IO.xml",
"ref/netcore50/ru/System.IO.xml",
"ref/netcore50/zh-hans/System.IO.xml",
"ref/netcore50/zh-hant/System.IO.xml",
"ref/netstandard1.0/System.IO.dll",
"ref/netstandard1.0/System.IO.xml",
"ref/netstandard1.0/de/System.IO.xml",
"ref/netstandard1.0/es/System.IO.xml",
"ref/netstandard1.0/fr/System.IO.xml",
"ref/netstandard1.0/it/System.IO.xml",
"ref/netstandard1.0/ja/System.IO.xml",
"ref/netstandard1.0/ko/System.IO.xml",
"ref/netstandard1.0/ru/System.IO.xml",
"ref/netstandard1.0/zh-hans/System.IO.xml",
"ref/netstandard1.0/zh-hant/System.IO.xml",
"ref/netstandard1.3/System.IO.dll",
"ref/netstandard1.3/System.IO.xml",
"ref/netstandard1.3/de/System.IO.xml",
"ref/netstandard1.3/es/System.IO.xml",
"ref/netstandard1.3/fr/System.IO.xml",
"ref/netstandard1.3/it/System.IO.xml",
"ref/netstandard1.3/ja/System.IO.xml",
"ref/netstandard1.3/ko/System.IO.xml",
"ref/netstandard1.3/ru/System.IO.xml",
"ref/netstandard1.3/zh-hans/System.IO.xml",
"ref/netstandard1.3/zh-hant/System.IO.xml",
"ref/netstandard1.5/System.IO.dll",
"ref/netstandard1.5/System.IO.xml",
"ref/netstandard1.5/de/System.IO.xml",
"ref/netstandard1.5/es/System.IO.xml",
"ref/netstandard1.5/fr/System.IO.xml",
"ref/netstandard1.5/it/System.IO.xml",
"ref/netstandard1.5/ja/System.IO.xml",
"ref/netstandard1.5/ko/System.IO.xml",
"ref/netstandard1.5/ru/System.IO.xml",
"ref/netstandard1.5/zh-hans/System.IO.xml",
"ref/netstandard1.5/zh-hant/System.IO.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.io.4.3.0.nupkg.sha512",
"system.io.nuspec"
]
},
"System.IO.FileSystem/4.3.0": {
"sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"type": "package",
"path": "system.io.filesystem/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.IO.FileSystem.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.IO.FileSystem.dll",
"ref/netstandard1.3/System.IO.FileSystem.dll",
"ref/netstandard1.3/System.IO.FileSystem.xml",
"ref/netstandard1.3/de/System.IO.FileSystem.xml",
"ref/netstandard1.3/es/System.IO.FileSystem.xml",
"ref/netstandard1.3/fr/System.IO.FileSystem.xml",
"ref/netstandard1.3/it/System.IO.FileSystem.xml",
"ref/netstandard1.3/ja/System.IO.FileSystem.xml",
"ref/netstandard1.3/ko/System.IO.FileSystem.xml",
"ref/netstandard1.3/ru/System.IO.FileSystem.xml",
"ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml",
"ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.io.filesystem.4.3.0.nupkg.sha512",
"system.io.filesystem.nuspec"
]
},
"System.IO.FileSystem.Primitives/4.3.0": {
"sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"type": "package",
"path": "system.io.filesystem.primitives/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.IO.FileSystem.Primitives.dll",
"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.IO.FileSystem.Primitives.dll",
"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll",
"ref/netstandard1.3/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml",
"ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.io.filesystem.primitives.4.3.0.nupkg.sha512",
"system.io.filesystem.primitives.nuspec"
]
},
"System.Linq/4.3.0": {
"sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
"type": "package",
"path": "system.linq/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net463/System.Linq.dll",
"lib/netcore50/System.Linq.dll",
"lib/netstandard1.6/System.Linq.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net463/System.Linq.dll",
"ref/netcore50/System.Linq.dll",
"ref/netcore50/System.Linq.xml",
"ref/netcore50/de/System.Linq.xml",
"ref/netcore50/es/System.Linq.xml",
"ref/netcore50/fr/System.Linq.xml",
"ref/netcore50/it/System.Linq.xml",
"ref/netcore50/ja/System.Linq.xml",
"ref/netcore50/ko/System.Linq.xml",
"ref/netcore50/ru/System.Linq.xml",
"ref/netcore50/zh-hans/System.Linq.xml",
"ref/netcore50/zh-hant/System.Linq.xml",
"ref/netstandard1.0/System.Linq.dll",
"ref/netstandard1.0/System.Linq.xml",
"ref/netstandard1.0/de/System.Linq.xml",
"ref/netstandard1.0/es/System.Linq.xml",
"ref/netstandard1.0/fr/System.Linq.xml",
"ref/netstandard1.0/it/System.Linq.xml",
"ref/netstandard1.0/ja/System.Linq.xml",
"ref/netstandard1.0/ko/System.Linq.xml",
"ref/netstandard1.0/ru/System.Linq.xml",
"ref/netstandard1.0/zh-hans/System.Linq.xml",
"ref/netstandard1.0/zh-hant/System.Linq.xml",
"ref/netstandard1.6/System.Linq.dll",
"ref/netstandard1.6/System.Linq.xml",
"ref/netstandard1.6/de/System.Linq.xml",
"ref/netstandard1.6/es/System.Linq.xml",
"ref/netstandard1.6/fr/System.Linq.xml",
"ref/netstandard1.6/it/System.Linq.xml",
"ref/netstandard1.6/ja/System.Linq.xml",
"ref/netstandard1.6/ko/System.Linq.xml",
"ref/netstandard1.6/ru/System.Linq.xml",
"ref/netstandard1.6/zh-hans/System.Linq.xml",
"ref/netstandard1.6/zh-hant/System.Linq.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.linq.4.3.0.nupkg.sha512",
"system.linq.nuspec"
]
},
"System.Linq.Expressions/4.1.0": {
"sha512": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
"type": "package",
"path": "system.linq.expressions/4.1.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net463/System.Linq.Expressions.dll",
"lib/netcore50/System.Linq.Expressions.dll",
"lib/netstandard1.6/System.Linq.Expressions.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net463/System.Linq.Expressions.dll",
"ref/netcore50/System.Linq.Expressions.dll",
"ref/netcore50/System.Linq.Expressions.xml",
"ref/netcore50/de/System.Linq.Expressions.xml",
"ref/netcore50/es/System.Linq.Expressions.xml",
"ref/netcore50/fr/System.Linq.Expressions.xml",
"ref/netcore50/it/System.Linq.Expressions.xml",
"ref/netcore50/ja/System.Linq.Expressions.xml",
"ref/netcore50/ko/System.Linq.Expressions.xml",
"ref/netcore50/ru/System.Linq.Expressions.xml",
"ref/netcore50/zh-hans/System.Linq.Expressions.xml",
"ref/netcore50/zh-hant/System.Linq.Expressions.xml",
"ref/netstandard1.0/System.Linq.Expressions.dll",
"ref/netstandard1.0/System.Linq.Expressions.xml",
"ref/netstandard1.0/de/System.Linq.Expressions.xml",
"ref/netstandard1.0/es/System.Linq.Expressions.xml",
"ref/netstandard1.0/fr/System.Linq.Expressions.xml",
"ref/netstandard1.0/it/System.Linq.Expressions.xml",
"ref/netstandard1.0/ja/System.Linq.Expressions.xml",
"ref/netstandard1.0/ko/System.Linq.Expressions.xml",
"ref/netstandard1.0/ru/System.Linq.Expressions.xml",
"ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml",
"ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml",
"ref/netstandard1.3/System.Linq.Expressions.dll",
"ref/netstandard1.3/System.Linq.Expressions.xml",
"ref/netstandard1.3/de/System.Linq.Expressions.xml",
"ref/netstandard1.3/es/System.Linq.Expressions.xml",
"ref/netstandard1.3/fr/System.Linq.Expressions.xml",
"ref/netstandard1.3/it/System.Linq.Expressions.xml",
"ref/netstandard1.3/ja/System.Linq.Expressions.xml",
"ref/netstandard1.3/ko/System.Linq.Expressions.xml",
"ref/netstandard1.3/ru/System.Linq.Expressions.xml",
"ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml",
"ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml",
"ref/netstandard1.6/System.Linq.Expressions.dll",
"ref/netstandard1.6/System.Linq.Expressions.xml",
"ref/netstandard1.6/de/System.Linq.Expressions.xml",
"ref/netstandard1.6/es/System.Linq.Expressions.xml",
"ref/netstandard1.6/fr/System.Linq.Expressions.xml",
"ref/netstandard1.6/it/System.Linq.Expressions.xml",
"ref/netstandard1.6/ja/System.Linq.Expressions.xml",
"ref/netstandard1.6/ko/System.Linq.Expressions.xml",
"ref/netstandard1.6/ru/System.Linq.Expressions.xml",
"ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml",
"ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll",
"system.linq.expressions.4.1.0.nupkg.sha512",
"system.linq.expressions.nuspec"
]
},
"System.Net.NameResolution/4.0.0": {
"sha512": "JdqRdM1Qym3YehqdKIi5LHrpypP4JMfxKQSNCJ2z4WawkG0il+N3XfNeJOxll2XrTnG7WgYYPoeiu/KOwg0DQw==",
"type": "package",
"path": "system.net.nameresolution/4.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Net.NameResolution.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Net.NameResolution.dll",
"ref/netstandard1.3/System.Net.NameResolution.dll",
"ref/netstandard1.3/System.Net.NameResolution.xml",
"ref/netstandard1.3/de/System.Net.NameResolution.xml",
"ref/netstandard1.3/es/System.Net.NameResolution.xml",
"ref/netstandard1.3/fr/System.Net.NameResolution.xml",
"ref/netstandard1.3/it/System.Net.NameResolution.xml",
"ref/netstandard1.3/ja/System.Net.NameResolution.xml",
"ref/netstandard1.3/ko/System.Net.NameResolution.xml",
"ref/netstandard1.3/ru/System.Net.NameResolution.xml",
"ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml",
"ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll",
"runtimes/win/lib/net46/System.Net.NameResolution.dll",
"runtimes/win/lib/netcore50/System.Net.NameResolution.dll",
"runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll",
"system.net.nameresolution.4.0.0.nupkg.sha512",
"system.net.nameresolution.nuspec"
]
},
"System.Net.NetworkInformation/4.3.0": {
"sha512": "zNVmWVry0pAu7lcrRBhwwU96WUdbsrGL3azyzsbXmVNptae1+Za+UgOe9Z6s8iaWhPn7/l4wQqhC56HZWq7tkg==",
"type": "package",
"path": "system.net.networkinformation/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net46/System.Net.NetworkInformation.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net46/System.Net.NetworkInformation.dll",
"ref/netcore50/System.Net.NetworkInformation.dll",
"ref/netcore50/System.Net.NetworkInformation.xml",
"ref/netcore50/de/System.Net.NetworkInformation.xml",
"ref/netcore50/es/System.Net.NetworkInformation.xml",
"ref/netcore50/fr/System.Net.NetworkInformation.xml",
"ref/netcore50/it/System.Net.NetworkInformation.xml",
"ref/netcore50/ja/System.Net.NetworkInformation.xml",
"ref/netcore50/ko/System.Net.NetworkInformation.xml",
"ref/netcore50/ru/System.Net.NetworkInformation.xml",
"ref/netcore50/zh-hans/System.Net.NetworkInformation.xml",
"ref/netcore50/zh-hant/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/System.Net.NetworkInformation.dll",
"ref/netstandard1.0/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/de/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/es/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/fr/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/it/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/ja/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/ko/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/ru/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/zh-hans/System.Net.NetworkInformation.xml",
"ref/netstandard1.0/zh-hant/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/System.Net.NetworkInformation.dll",
"ref/netstandard1.3/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/de/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/es/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/fr/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/it/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/ja/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/ko/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/ru/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/zh-hans/System.Net.NetworkInformation.xml",
"ref/netstandard1.3/zh-hant/System.Net.NetworkInformation.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll",
"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll",
"runtimes/win/lib/net46/System.Net.NetworkInformation.dll",
"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll",
"runtimes/win/lib/netstandard1.3/System.Net.NetworkInformation.dll",
"system.net.networkinformation.4.3.0.nupkg.sha512",
"system.net.networkinformation.nuspec"
]
},
"System.Net.Primitives/4.3.0": {
"sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"type": "package",
"path": "system.net.primitives/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Net.Primitives.dll",
"ref/netcore50/System.Net.Primitives.xml",
"ref/netcore50/de/System.Net.Primitives.xml",
"ref/netcore50/es/System.Net.Primitives.xml",
"ref/netcore50/fr/System.Net.Primitives.xml",
"ref/netcore50/it/System.Net.Primitives.xml",
"ref/netcore50/ja/System.Net.Primitives.xml",
"ref/netcore50/ko/System.Net.Primitives.xml",
"ref/netcore50/ru/System.Net.Primitives.xml",
"ref/netcore50/zh-hans/System.Net.Primitives.xml",
"ref/netcore50/zh-hant/System.Net.Primitives.xml",
"ref/netstandard1.0/System.Net.Primitives.dll",
"ref/netstandard1.0/System.Net.Primitives.xml",
"ref/netstandard1.0/de/System.Net.Primitives.xml",
"ref/netstandard1.0/es/System.Net.Primitives.xml",
"ref/netstandard1.0/fr/System.Net.Primitives.xml",
"ref/netstandard1.0/it/System.Net.Primitives.xml",
"ref/netstandard1.0/ja/System.Net.Primitives.xml",
"ref/netstandard1.0/ko/System.Net.Primitives.xml",
"ref/netstandard1.0/ru/System.Net.Primitives.xml",
"ref/netstandard1.0/zh-hans/System.Net.Primitives.xml",
"ref/netstandard1.0/zh-hant/System.Net.Primitives.xml",
"ref/netstandard1.1/System.Net.Primitives.dll",
"ref/netstandard1.1/System.Net.Primitives.xml",
"ref/netstandard1.1/de/System.Net.Primitives.xml",
"ref/netstandard1.1/es/System.Net.Primitives.xml",
"ref/netstandard1.1/fr/System.Net.Primitives.xml",
"ref/netstandard1.1/it/System.Net.Primitives.xml",
"ref/netstandard1.1/ja/System.Net.Primitives.xml",
"ref/netstandard1.1/ko/System.Net.Primitives.xml",
"ref/netstandard1.1/ru/System.Net.Primitives.xml",
"ref/netstandard1.1/zh-hans/System.Net.Primitives.xml",
"ref/netstandard1.1/zh-hant/System.Net.Primitives.xml",
"ref/netstandard1.3/System.Net.Primitives.dll",
"ref/netstandard1.3/System.Net.Primitives.xml",
"ref/netstandard1.3/de/System.Net.Primitives.xml",
"ref/netstandard1.3/es/System.Net.Primitives.xml",
"ref/netstandard1.3/fr/System.Net.Primitives.xml",
"ref/netstandard1.3/it/System.Net.Primitives.xml",
"ref/netstandard1.3/ja/System.Net.Primitives.xml",
"ref/netstandard1.3/ko/System.Net.Primitives.xml",
"ref/netstandard1.3/ru/System.Net.Primitives.xml",
"ref/netstandard1.3/zh-hans/System.Net.Primitives.xml",
"ref/netstandard1.3/zh-hant/System.Net.Primitives.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.net.primitives.4.3.0.nupkg.sha512",
"system.net.primitives.nuspec"
]
},
"System.Net.Sockets/4.3.0": {
"sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
"type": "package",
"path": "system.net.sockets/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Net.Sockets.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Net.Sockets.dll",
"ref/netstandard1.3/System.Net.Sockets.dll",
"ref/netstandard1.3/System.Net.Sockets.xml",
"ref/netstandard1.3/de/System.Net.Sockets.xml",
"ref/netstandard1.3/es/System.Net.Sockets.xml",
"ref/netstandard1.3/fr/System.Net.Sockets.xml",
"ref/netstandard1.3/it/System.Net.Sockets.xml",
"ref/netstandard1.3/ja/System.Net.Sockets.xml",
"ref/netstandard1.3/ko/System.Net.Sockets.xml",
"ref/netstandard1.3/ru/System.Net.Sockets.xml",
"ref/netstandard1.3/zh-hans/System.Net.Sockets.xml",
"ref/netstandard1.3/zh-hant/System.Net.Sockets.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.net.sockets.4.3.0.nupkg.sha512",
"system.net.sockets.nuspec"
]
},
"System.ObjectModel/4.0.12": {
"sha512": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
"type": "package",
"path": "system.objectmodel/4.0.12",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.ObjectModel.dll",
"lib/netstandard1.3/System.ObjectModel.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.ObjectModel.dll",
"ref/netcore50/System.ObjectModel.xml",
"ref/netcore50/de/System.ObjectModel.xml",
"ref/netcore50/es/System.ObjectModel.xml",
"ref/netcore50/fr/System.ObjectModel.xml",
"ref/netcore50/it/System.ObjectModel.xml",
"ref/netcore50/ja/System.ObjectModel.xml",
"ref/netcore50/ko/System.ObjectModel.xml",
"ref/netcore50/ru/System.ObjectModel.xml",
"ref/netcore50/zh-hans/System.ObjectModel.xml",
"ref/netcore50/zh-hant/System.ObjectModel.xml",
"ref/netstandard1.0/System.ObjectModel.dll",
"ref/netstandard1.0/System.ObjectModel.xml",
"ref/netstandard1.0/de/System.ObjectModel.xml",
"ref/netstandard1.0/es/System.ObjectModel.xml",
"ref/netstandard1.0/fr/System.ObjectModel.xml",
"ref/netstandard1.0/it/System.ObjectModel.xml",
"ref/netstandard1.0/ja/System.ObjectModel.xml",
"ref/netstandard1.0/ko/System.ObjectModel.xml",
"ref/netstandard1.0/ru/System.ObjectModel.xml",
"ref/netstandard1.0/zh-hans/System.ObjectModel.xml",
"ref/netstandard1.0/zh-hant/System.ObjectModel.xml",
"ref/netstandard1.3/System.ObjectModel.dll",
"ref/netstandard1.3/System.ObjectModel.xml",
"ref/netstandard1.3/de/System.ObjectModel.xml",
"ref/netstandard1.3/es/System.ObjectModel.xml",
"ref/netstandard1.3/fr/System.ObjectModel.xml",
"ref/netstandard1.3/it/System.ObjectModel.xml",
"ref/netstandard1.3/ja/System.ObjectModel.xml",
"ref/netstandard1.3/ko/System.ObjectModel.xml",
"ref/netstandard1.3/ru/System.ObjectModel.xml",
"ref/netstandard1.3/zh-hans/System.ObjectModel.xml",
"ref/netstandard1.3/zh-hant/System.ObjectModel.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.objectmodel.4.0.12.nupkg.sha512",
"system.objectmodel.nuspec"
]
},
"System.Reflection/4.3.0": {
"sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"type": "package",
"path": "system.reflection/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.Reflection.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.Reflection.dll",
"ref/netcore50/System.Reflection.dll",
"ref/netcore50/System.Reflection.xml",
"ref/netcore50/de/System.Reflection.xml",
"ref/netcore50/es/System.Reflection.xml",
"ref/netcore50/fr/System.Reflection.xml",
"ref/netcore50/it/System.Reflection.xml",
"ref/netcore50/ja/System.Reflection.xml",
"ref/netcore50/ko/System.Reflection.xml",
"ref/netcore50/ru/System.Reflection.xml",
"ref/netcore50/zh-hans/System.Reflection.xml",
"ref/netcore50/zh-hant/System.Reflection.xml",
"ref/netstandard1.0/System.Reflection.dll",
"ref/netstandard1.0/System.Reflection.xml",
"ref/netstandard1.0/de/System.Reflection.xml",
"ref/netstandard1.0/es/System.Reflection.xml",
"ref/netstandard1.0/fr/System.Reflection.xml",
"ref/netstandard1.0/it/System.Reflection.xml",
"ref/netstandard1.0/ja/System.Reflection.xml",
"ref/netstandard1.0/ko/System.Reflection.xml",
"ref/netstandard1.0/ru/System.Reflection.xml",
"ref/netstandard1.0/zh-hans/System.Reflection.xml",
"ref/netstandard1.0/zh-hant/System.Reflection.xml",
"ref/netstandard1.3/System.Reflection.dll",
"ref/netstandard1.3/System.Reflection.xml",
"ref/netstandard1.3/de/System.Reflection.xml",
"ref/netstandard1.3/es/System.Reflection.xml",
"ref/netstandard1.3/fr/System.Reflection.xml",
"ref/netstandard1.3/it/System.Reflection.xml",
"ref/netstandard1.3/ja/System.Reflection.xml",
"ref/netstandard1.3/ko/System.Reflection.xml",
"ref/netstandard1.3/ru/System.Reflection.xml",
"ref/netstandard1.3/zh-hans/System.Reflection.xml",
"ref/netstandard1.3/zh-hant/System.Reflection.xml",
"ref/netstandard1.5/System.Reflection.dll",
"ref/netstandard1.5/System.Reflection.xml",
"ref/netstandard1.5/de/System.Reflection.xml",
"ref/netstandard1.5/es/System.Reflection.xml",
"ref/netstandard1.5/fr/System.Reflection.xml",
"ref/netstandard1.5/it/System.Reflection.xml",
"ref/netstandard1.5/ja/System.Reflection.xml",
"ref/netstandard1.5/ko/System.Reflection.xml",
"ref/netstandard1.5/ru/System.Reflection.xml",
"ref/netstandard1.5/zh-hans/System.Reflection.xml",
"ref/netstandard1.5/zh-hant/System.Reflection.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.reflection.4.3.0.nupkg.sha512",
"system.reflection.nuspec"
]
},
"System.Reflection.Emit/4.0.1": {
"sha512": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==",
"type": "package",
"path": "system.reflection.emit/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/net45/_._",
"lib/netcore50/System.Reflection.Emit.dll",
"lib/netstandard1.3/System.Reflection.Emit.dll",
"lib/xamarinmac20/_._",
"ref/MonoAndroid10/_._",
"ref/net45/_._",
"ref/netstandard1.1/System.Reflection.Emit.dll",
"ref/netstandard1.1/System.Reflection.Emit.xml",
"ref/netstandard1.1/de/System.Reflection.Emit.xml",
"ref/netstandard1.1/es/System.Reflection.Emit.xml",
"ref/netstandard1.1/fr/System.Reflection.Emit.xml",
"ref/netstandard1.1/it/System.Reflection.Emit.xml",
"ref/netstandard1.1/ja/System.Reflection.Emit.xml",
"ref/netstandard1.1/ko/System.Reflection.Emit.xml",
"ref/netstandard1.1/ru/System.Reflection.Emit.xml",
"ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml",
"ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml",
"ref/xamarinmac20/_._",
"system.reflection.emit.4.0.1.nupkg.sha512",
"system.reflection.emit.nuspec"
]
},
"System.Reflection.Emit.ILGeneration/4.0.1": {
"sha512": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==",
"type": "package",
"path": "system.reflection.emit.ilgeneration/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/net45/_._",
"lib/netcore50/System.Reflection.Emit.ILGeneration.dll",
"lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll",
"lib/portable-net45+wp8/_._",
"lib/wp80/_._",
"ref/net45/_._",
"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll",
"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml",
"ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml",
"ref/portable-net45+wp8/_._",
"ref/wp80/_._",
"runtimes/aot/lib/netcore50/_._",
"system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512",
"system.reflection.emit.ilgeneration.nuspec"
]
},
"System.Reflection.Emit.Lightweight/4.0.1": {
"sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
"type": "package",
"path": "system.reflection.emit.lightweight/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/net45/_._",
"lib/netcore50/System.Reflection.Emit.Lightweight.dll",
"lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll",
"lib/portable-net45+wp8/_._",
"lib/wp80/_._",
"ref/net45/_._",
"ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll",
"ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml",
"ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml",
"ref/portable-net45+wp8/_._",
"ref/wp80/_._",
"runtimes/aot/lib/netcore50/_._",
"system.reflection.emit.lightweight.4.0.1.nupkg.sha512",
"system.reflection.emit.lightweight.nuspec"
]
},
"System.Reflection.Extensions/4.0.1": {
"sha512": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==",
"type": "package",
"path": "system.reflection.extensions/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Reflection.Extensions.dll",
"ref/netcore50/System.Reflection.Extensions.xml",
"ref/netcore50/de/System.Reflection.Extensions.xml",
"ref/netcore50/es/System.Reflection.Extensions.xml",
"ref/netcore50/fr/System.Reflection.Extensions.xml",
"ref/netcore50/it/System.Reflection.Extensions.xml",
"ref/netcore50/ja/System.Reflection.Extensions.xml",
"ref/netcore50/ko/System.Reflection.Extensions.xml",
"ref/netcore50/ru/System.Reflection.Extensions.xml",
"ref/netcore50/zh-hans/System.Reflection.Extensions.xml",
"ref/netcore50/zh-hant/System.Reflection.Extensions.xml",
"ref/netstandard1.0/System.Reflection.Extensions.dll",
"ref/netstandard1.0/System.Reflection.Extensions.xml",
"ref/netstandard1.0/de/System.Reflection.Extensions.xml",
"ref/netstandard1.0/es/System.Reflection.Extensions.xml",
"ref/netstandard1.0/fr/System.Reflection.Extensions.xml",
"ref/netstandard1.0/it/System.Reflection.Extensions.xml",
"ref/netstandard1.0/ja/System.Reflection.Extensions.xml",
"ref/netstandard1.0/ko/System.Reflection.Extensions.xml",
"ref/netstandard1.0/ru/System.Reflection.Extensions.xml",
"ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml",
"ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.reflection.extensions.4.0.1.nupkg.sha512",
"system.reflection.extensions.nuspec"
]
},
"System.Reflection.Primitives/4.3.0": {
"sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"type": "package",
"path": "system.reflection.primitives/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Reflection.Primitives.dll",
"ref/netcore50/System.Reflection.Primitives.xml",
"ref/netcore50/de/System.Reflection.Primitives.xml",
"ref/netcore50/es/System.Reflection.Primitives.xml",
"ref/netcore50/fr/System.Reflection.Primitives.xml",
"ref/netcore50/it/System.Reflection.Primitives.xml",
"ref/netcore50/ja/System.Reflection.Primitives.xml",
"ref/netcore50/ko/System.Reflection.Primitives.xml",
"ref/netcore50/ru/System.Reflection.Primitives.xml",
"ref/netcore50/zh-hans/System.Reflection.Primitives.xml",
"ref/netcore50/zh-hant/System.Reflection.Primitives.xml",
"ref/netstandard1.0/System.Reflection.Primitives.dll",
"ref/netstandard1.0/System.Reflection.Primitives.xml",
"ref/netstandard1.0/de/System.Reflection.Primitives.xml",
"ref/netstandard1.0/es/System.Reflection.Primitives.xml",
"ref/netstandard1.0/fr/System.Reflection.Primitives.xml",
"ref/netstandard1.0/it/System.Reflection.Primitives.xml",
"ref/netstandard1.0/ja/System.Reflection.Primitives.xml",
"ref/netstandard1.0/ko/System.Reflection.Primitives.xml",
"ref/netstandard1.0/ru/System.Reflection.Primitives.xml",
"ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml",
"ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.reflection.primitives.4.3.0.nupkg.sha512",
"system.reflection.primitives.nuspec"
]
},
"System.Reflection.TypeExtensions/4.1.0": {
"sha512": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==",
"type": "package",
"path": "system.reflection.typeextensions/4.1.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Reflection.TypeExtensions.dll",
"lib/net462/System.Reflection.TypeExtensions.dll",
"lib/netcore50/System.Reflection.TypeExtensions.dll",
"lib/netstandard1.5/System.Reflection.TypeExtensions.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Reflection.TypeExtensions.dll",
"ref/net462/System.Reflection.TypeExtensions.dll",
"ref/netstandard1.3/System.Reflection.TypeExtensions.dll",
"ref/netstandard1.3/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/System.Reflection.TypeExtensions.dll",
"ref/netstandard1.5/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml",
"ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll",
"system.reflection.typeextensions.4.1.0.nupkg.sha512",
"system.reflection.typeextensions.nuspec"
]
},
"System.Resources.ResourceManager/4.3.0": {
"sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"type": "package",
"path": "system.resources.resourcemanager/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Resources.ResourceManager.dll",
"ref/netcore50/System.Resources.ResourceManager.xml",
"ref/netcore50/de/System.Resources.ResourceManager.xml",
"ref/netcore50/es/System.Resources.ResourceManager.xml",
"ref/netcore50/fr/System.Resources.ResourceManager.xml",
"ref/netcore50/it/System.Resources.ResourceManager.xml",
"ref/netcore50/ja/System.Resources.ResourceManager.xml",
"ref/netcore50/ko/System.Resources.ResourceManager.xml",
"ref/netcore50/ru/System.Resources.ResourceManager.xml",
"ref/netcore50/zh-hans/System.Resources.ResourceManager.xml",
"ref/netcore50/zh-hant/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/System.Resources.ResourceManager.dll",
"ref/netstandard1.0/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/de/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/es/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/fr/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/it/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/ja/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/ko/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/ru/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml",
"ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.resources.resourcemanager.4.3.0.nupkg.sha512",
"system.resources.resourcemanager.nuspec"
]
},
"System.Runtime/4.3.0": {
"sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
"type": "package",
"path": "system.runtime/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.Runtime.dll",
"lib/portable-net45+win8+wp80+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.Runtime.dll",
"ref/netcore50/System.Runtime.dll",
"ref/netcore50/System.Runtime.xml",
"ref/netcore50/de/System.Runtime.xml",
"ref/netcore50/es/System.Runtime.xml",
"ref/netcore50/fr/System.Runtime.xml",
"ref/netcore50/it/System.Runtime.xml",
"ref/netcore50/ja/System.Runtime.xml",
"ref/netcore50/ko/System.Runtime.xml",
"ref/netcore50/ru/System.Runtime.xml",
"ref/netcore50/zh-hans/System.Runtime.xml",
"ref/netcore50/zh-hant/System.Runtime.xml",
"ref/netstandard1.0/System.Runtime.dll",
"ref/netstandard1.0/System.Runtime.xml",
"ref/netstandard1.0/de/System.Runtime.xml",
"ref/netstandard1.0/es/System.Runtime.xml",
"ref/netstandard1.0/fr/System.Runtime.xml",
"ref/netstandard1.0/it/System.Runtime.xml",
"ref/netstandard1.0/ja/System.Runtime.xml",
"ref/netstandard1.0/ko/System.Runtime.xml",
"ref/netstandard1.0/ru/System.Runtime.xml",
"ref/netstandard1.0/zh-hans/System.Runtime.xml",
"ref/netstandard1.0/zh-hant/System.Runtime.xml",
"ref/netstandard1.2/System.Runtime.dll",
"ref/netstandard1.2/System.Runtime.xml",
"ref/netstandard1.2/de/System.Runtime.xml",
"ref/netstandard1.2/es/System.Runtime.xml",
"ref/netstandard1.2/fr/System.Runtime.xml",
"ref/netstandard1.2/it/System.Runtime.xml",
"ref/netstandard1.2/ja/System.Runtime.xml",
"ref/netstandard1.2/ko/System.Runtime.xml",
"ref/netstandard1.2/ru/System.Runtime.xml",
"ref/netstandard1.2/zh-hans/System.Runtime.xml",
"ref/netstandard1.2/zh-hant/System.Runtime.xml",
"ref/netstandard1.3/System.Runtime.dll",
"ref/netstandard1.3/System.Runtime.xml",
"ref/netstandard1.3/de/System.Runtime.xml",
"ref/netstandard1.3/es/System.Runtime.xml",
"ref/netstandard1.3/fr/System.Runtime.xml",
"ref/netstandard1.3/it/System.Runtime.xml",
"ref/netstandard1.3/ja/System.Runtime.xml",
"ref/netstandard1.3/ko/System.Runtime.xml",
"ref/netstandard1.3/ru/System.Runtime.xml",
"ref/netstandard1.3/zh-hans/System.Runtime.xml",
"ref/netstandard1.3/zh-hant/System.Runtime.xml",
"ref/netstandard1.5/System.Runtime.dll",
"ref/netstandard1.5/System.Runtime.xml",
"ref/netstandard1.5/de/System.Runtime.xml",
"ref/netstandard1.5/es/System.Runtime.xml",
"ref/netstandard1.5/fr/System.Runtime.xml",
"ref/netstandard1.5/it/System.Runtime.xml",
"ref/netstandard1.5/ja/System.Runtime.xml",
"ref/netstandard1.5/ko/System.Runtime.xml",
"ref/netstandard1.5/ru/System.Runtime.xml",
"ref/netstandard1.5/zh-hans/System.Runtime.xml",
"ref/netstandard1.5/zh-hant/System.Runtime.xml",
"ref/portable-net45+win8+wp80+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.runtime.4.3.0.nupkg.sha512",
"system.runtime.nuspec"
]
},
"System.Runtime.CompilerServices.Unsafe/4.5.2": {
"sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==",
"type": "package",
"path": "system.runtime.compilerservices.unsafe/4.5.2",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll",
"ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml",
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
"ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
"system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512",
"system.runtime.compilerservices.unsafe.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Runtime.Extensions/4.3.0": {
"sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"type": "package",
"path": "system.runtime.extensions/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.Runtime.Extensions.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.Runtime.Extensions.dll",
"ref/netcore50/System.Runtime.Extensions.dll",
"ref/netcore50/System.Runtime.Extensions.xml",
"ref/netcore50/de/System.Runtime.Extensions.xml",
"ref/netcore50/es/System.Runtime.Extensions.xml",
"ref/netcore50/fr/System.Runtime.Extensions.xml",
"ref/netcore50/it/System.Runtime.Extensions.xml",
"ref/netcore50/ja/System.Runtime.Extensions.xml",
"ref/netcore50/ko/System.Runtime.Extensions.xml",
"ref/netcore50/ru/System.Runtime.Extensions.xml",
"ref/netcore50/zh-hans/System.Runtime.Extensions.xml",
"ref/netcore50/zh-hant/System.Runtime.Extensions.xml",
"ref/netstandard1.0/System.Runtime.Extensions.dll",
"ref/netstandard1.0/System.Runtime.Extensions.xml",
"ref/netstandard1.0/de/System.Runtime.Extensions.xml",
"ref/netstandard1.0/es/System.Runtime.Extensions.xml",
"ref/netstandard1.0/fr/System.Runtime.Extensions.xml",
"ref/netstandard1.0/it/System.Runtime.Extensions.xml",
"ref/netstandard1.0/ja/System.Runtime.Extensions.xml",
"ref/netstandard1.0/ko/System.Runtime.Extensions.xml",
"ref/netstandard1.0/ru/System.Runtime.Extensions.xml",
"ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml",
"ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml",
"ref/netstandard1.3/System.Runtime.Extensions.dll",
"ref/netstandard1.3/System.Runtime.Extensions.xml",
"ref/netstandard1.3/de/System.Runtime.Extensions.xml",
"ref/netstandard1.3/es/System.Runtime.Extensions.xml",
"ref/netstandard1.3/fr/System.Runtime.Extensions.xml",
"ref/netstandard1.3/it/System.Runtime.Extensions.xml",
"ref/netstandard1.3/ja/System.Runtime.Extensions.xml",
"ref/netstandard1.3/ko/System.Runtime.Extensions.xml",
"ref/netstandard1.3/ru/System.Runtime.Extensions.xml",
"ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml",
"ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml",
"ref/netstandard1.5/System.Runtime.Extensions.dll",
"ref/netstandard1.5/System.Runtime.Extensions.xml",
"ref/netstandard1.5/de/System.Runtime.Extensions.xml",
"ref/netstandard1.5/es/System.Runtime.Extensions.xml",
"ref/netstandard1.5/fr/System.Runtime.Extensions.xml",
"ref/netstandard1.5/it/System.Runtime.Extensions.xml",
"ref/netstandard1.5/ja/System.Runtime.Extensions.xml",
"ref/netstandard1.5/ko/System.Runtime.Extensions.xml",
"ref/netstandard1.5/ru/System.Runtime.Extensions.xml",
"ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml",
"ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.runtime.extensions.4.3.0.nupkg.sha512",
"system.runtime.extensions.nuspec"
]
},
"System.Runtime.Handles/4.3.0": {
"sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"type": "package",
"path": "system.runtime.handles/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/_._",
"ref/netstandard1.3/System.Runtime.Handles.dll",
"ref/netstandard1.3/System.Runtime.Handles.xml",
"ref/netstandard1.3/de/System.Runtime.Handles.xml",
"ref/netstandard1.3/es/System.Runtime.Handles.xml",
"ref/netstandard1.3/fr/System.Runtime.Handles.xml",
"ref/netstandard1.3/it/System.Runtime.Handles.xml",
"ref/netstandard1.3/ja/System.Runtime.Handles.xml",
"ref/netstandard1.3/ko/System.Runtime.Handles.xml",
"ref/netstandard1.3/ru/System.Runtime.Handles.xml",
"ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml",
"ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.runtime.handles.4.3.0.nupkg.sha512",
"system.runtime.handles.nuspec"
]
},
"System.Runtime.InteropServices/4.3.0": {
"sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"type": "package",
"path": "system.runtime.interopservices/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net462/System.Runtime.InteropServices.dll",
"lib/net463/System.Runtime.InteropServices.dll",
"lib/portable-net45+win8+wpa81/_._",
"lib/win8/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net462/System.Runtime.InteropServices.dll",
"ref/net463/System.Runtime.InteropServices.dll",
"ref/netcore50/System.Runtime.InteropServices.dll",
"ref/netcore50/System.Runtime.InteropServices.xml",
"ref/netcore50/de/System.Runtime.InteropServices.xml",
"ref/netcore50/es/System.Runtime.InteropServices.xml",
"ref/netcore50/fr/System.Runtime.InteropServices.xml",
"ref/netcore50/it/System.Runtime.InteropServices.xml",
"ref/netcore50/ja/System.Runtime.InteropServices.xml",
"ref/netcore50/ko/System.Runtime.InteropServices.xml",
"ref/netcore50/ru/System.Runtime.InteropServices.xml",
"ref/netcore50/zh-hans/System.Runtime.InteropServices.xml",
"ref/netcore50/zh-hant/System.Runtime.InteropServices.xml",
"ref/netcoreapp1.1/System.Runtime.InteropServices.dll",
"ref/netstandard1.1/System.Runtime.InteropServices.dll",
"ref/netstandard1.1/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/de/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/es/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/fr/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/it/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/ja/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/ko/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/ru/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml",
"ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/System.Runtime.InteropServices.dll",
"ref/netstandard1.2/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/de/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/es/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/fr/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/it/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/ja/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/ko/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/ru/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml",
"ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/System.Runtime.InteropServices.dll",
"ref/netstandard1.3/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/de/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/es/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/fr/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/it/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/ja/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/ko/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/ru/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml",
"ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/System.Runtime.InteropServices.dll",
"ref/netstandard1.5/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/de/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/es/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/fr/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/it/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/ja/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/ko/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/ru/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml",
"ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml",
"ref/portable-net45+win8+wpa81/_._",
"ref/win8/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.runtime.interopservices.4.3.0.nupkg.sha512",
"system.runtime.interopservices.nuspec"
]
},
"System.Runtime.Numerics/4.0.1": {
"sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==",
"type": "package",
"path": "system.runtime.numerics/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Runtime.Numerics.dll",
"lib/netstandard1.3/System.Runtime.Numerics.dll",
"lib/portable-net45+win8+wpa81/_._",
"lib/win8/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Runtime.Numerics.dll",
"ref/netcore50/System.Runtime.Numerics.xml",
"ref/netcore50/de/System.Runtime.Numerics.xml",
"ref/netcore50/es/System.Runtime.Numerics.xml",
"ref/netcore50/fr/System.Runtime.Numerics.xml",
"ref/netcore50/it/System.Runtime.Numerics.xml",
"ref/netcore50/ja/System.Runtime.Numerics.xml",
"ref/netcore50/ko/System.Runtime.Numerics.xml",
"ref/netcore50/ru/System.Runtime.Numerics.xml",
"ref/netcore50/zh-hans/System.Runtime.Numerics.xml",
"ref/netcore50/zh-hant/System.Runtime.Numerics.xml",
"ref/netstandard1.1/System.Runtime.Numerics.dll",
"ref/netstandard1.1/System.Runtime.Numerics.xml",
"ref/netstandard1.1/de/System.Runtime.Numerics.xml",
"ref/netstandard1.1/es/System.Runtime.Numerics.xml",
"ref/netstandard1.1/fr/System.Runtime.Numerics.xml",
"ref/netstandard1.1/it/System.Runtime.Numerics.xml",
"ref/netstandard1.1/ja/System.Runtime.Numerics.xml",
"ref/netstandard1.1/ko/System.Runtime.Numerics.xml",
"ref/netstandard1.1/ru/System.Runtime.Numerics.xml",
"ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml",
"ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml",
"ref/portable-net45+win8+wpa81/_._",
"ref/win8/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.runtime.numerics.4.0.1.nupkg.sha512",
"system.runtime.numerics.nuspec"
]
},
"System.Security.AccessControl/4.6.0": {
"sha512": "gmlk6khICtVhiUnVBBtlsH0H/5QFDqhTZgtpp3AX14wWE6OIE+BX95NLD+X4AolXnIy/oXpNNmXYnsNfW1KuDQ==",
"type": "package",
"path": "system.security.accesscontrol/4.6.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net46/System.Security.AccessControl.dll",
"lib/net461/System.Security.AccessControl.dll",
"lib/net461/System.Security.AccessControl.xml",
"lib/netstandard1.3/System.Security.AccessControl.dll",
"lib/netstandard2.0/System.Security.AccessControl.dll",
"lib/netstandard2.0/System.Security.AccessControl.xml",
"lib/uap10.0.16299/_._",
"ref/net46/System.Security.AccessControl.dll",
"ref/net461/System.Security.AccessControl.dll",
"ref/net461/System.Security.AccessControl.xml",
"ref/netstandard1.3/System.Security.AccessControl.dll",
"ref/netstandard1.3/System.Security.AccessControl.xml",
"ref/netstandard1.3/de/System.Security.AccessControl.xml",
"ref/netstandard1.3/es/System.Security.AccessControl.xml",
"ref/netstandard1.3/fr/System.Security.AccessControl.xml",
"ref/netstandard1.3/it/System.Security.AccessControl.xml",
"ref/netstandard1.3/ja/System.Security.AccessControl.xml",
"ref/netstandard1.3/ko/System.Security.AccessControl.xml",
"ref/netstandard1.3/ru/System.Security.AccessControl.xml",
"ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
"ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
"ref/netstandard2.0/System.Security.AccessControl.dll",
"ref/netstandard2.0/System.Security.AccessControl.xml",
"ref/uap10.0.16299/_._",
"runtimes/win/lib/net46/System.Security.AccessControl.dll",
"runtimes/win/lib/net461/System.Security.AccessControl.dll",
"runtimes/win/lib/net461/System.Security.AccessControl.xml",
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
"runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
"runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
"runtimes/win/lib/uap10.0.16299/_._",
"system.security.accesscontrol.4.6.0.nupkg.sha512",
"system.security.accesscontrol.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Security.Cryptography.Algorithms/4.2.0": {
"sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==",
"type": "package",
"path": "system.security.cryptography.algorithms/4.2.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Security.Cryptography.Algorithms.dll",
"lib/net461/System.Security.Cryptography.Algorithms.dll",
"lib/net463/System.Security.Cryptography.Algorithms.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Security.Cryptography.Algorithms.dll",
"ref/net461/System.Security.Cryptography.Algorithms.dll",
"ref/net463/System.Security.Cryptography.Algorithms.dll",
"ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll",
"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll",
"ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll",
"runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll",
"runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll",
"runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll",
"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll",
"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll",
"system.security.cryptography.algorithms.4.2.0.nupkg.sha512",
"system.security.cryptography.algorithms.nuspec"
]
},
"System.Security.Cryptography.Encoding/4.0.0": {
"sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==",
"type": "package",
"path": "system.security.cryptography.encoding/4.0.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Security.Cryptography.Encoding.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Security.Cryptography.Encoding.dll",
"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll",
"ref/netstandard1.3/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml",
"ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll",
"runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll",
"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll",
"system.security.cryptography.encoding.4.0.0.nupkg.sha512",
"system.security.cryptography.encoding.nuspec"
]
},
"System.Security.Cryptography.Primitives/4.0.0": {
"sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==",
"type": "package",
"path": "system.security.cryptography.primitives/4.0.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Security.Cryptography.Primitives.dll",
"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Security.Cryptography.Primitives.dll",
"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.security.cryptography.primitives.4.0.0.nupkg.sha512",
"system.security.cryptography.primitives.nuspec"
]
},
"System.Security.Cryptography.ProtectedData/4.4.0": {
"sha512": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==",
"type": "package",
"path": "system.security.cryptography.protecteddata/4.4.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Security.Cryptography.ProtectedData.dll",
"lib/net461/System.Security.Cryptography.ProtectedData.dll",
"lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
"lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Security.Cryptography.ProtectedData.dll",
"ref/net461/System.Security.Cryptography.ProtectedData.dll",
"ref/net461/System.Security.Cryptography.ProtectedData.xml",
"ref/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
"ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
"ref/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/win/lib/net46/System.Security.Cryptography.ProtectedData.dll",
"runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll",
"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll",
"runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
"system.security.cryptography.protecteddata.4.4.0.nupkg.sha512",
"system.security.cryptography.protecteddata.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Security.Permissions/4.6.0": {
"sha512": "W3Uxog9KCZAmGYsOFHgJnb7L2q+SDbxS3vGnFHmErUnXuIjWYpIh1KVTlua7qmPdrlRCkAcTF9dImv+jciBPOQ==",
"type": "package",
"path": "system.security.permissions/4.6.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/System.Security.Permissions.dll",
"lib/net461/System.Security.Permissions.xml",
"lib/netcoreapp3.0/System.Security.Permissions.dll",
"lib/netcoreapp3.0/System.Security.Permissions.xml",
"lib/netstandard2.0/System.Security.Permissions.dll",
"lib/netstandard2.0/System.Security.Permissions.xml",
"ref/net461/System.Security.Permissions.dll",
"ref/net461/System.Security.Permissions.xml",
"ref/netcoreapp3.0/System.Security.Permissions.dll",
"ref/netcoreapp3.0/System.Security.Permissions.xml",
"ref/netstandard2.0/System.Security.Permissions.dll",
"ref/netstandard2.0/System.Security.Permissions.xml",
"system.security.permissions.4.6.0.nupkg.sha512",
"system.security.permissions.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Security.Principal.Windows/4.6.0": {
"sha512": "Mdukseovp0YIGaz16FMH6nbfgZkrCFOJbtXQptv0aeBO9h775Ilb9+TDwLVTKikoW7y7CY7lpoXl9zmZ5G3ndA==",
"type": "package",
"path": "system.security.principal.windows/4.6.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net46/System.Security.Principal.Windows.dll",
"lib/net461/System.Security.Principal.Windows.dll",
"lib/net461/System.Security.Principal.Windows.xml",
"lib/netstandard1.3/System.Security.Principal.Windows.dll",
"lib/netstandard2.0/System.Security.Principal.Windows.dll",
"lib/netstandard2.0/System.Security.Principal.Windows.xml",
"lib/uap10.0.16299/_._",
"ref/net46/System.Security.Principal.Windows.dll",
"ref/net461/System.Security.Principal.Windows.dll",
"ref/net461/System.Security.Principal.Windows.xml",
"ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
"ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/System.Security.Principal.Windows.dll",
"ref/netstandard1.3/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
"ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
"ref/netstandard2.0/System.Security.Principal.Windows.dll",
"ref/netstandard2.0/System.Security.Principal.Windows.xml",
"ref/uap10.0.16299/_._",
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
"runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
"runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
"runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
"runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
"runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
"runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
"runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
"runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
"runtimes/win/lib/uap10.0.16299/_._",
"system.security.principal.windows.4.6.0.nupkg.sha512",
"system.security.principal.windows.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Text.Encoding/4.3.0": {
"sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"type": "package",
"path": "system.text.encoding/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Text.Encoding.dll",
"ref/netcore50/System.Text.Encoding.xml",
"ref/netcore50/de/System.Text.Encoding.xml",
"ref/netcore50/es/System.Text.Encoding.xml",
"ref/netcore50/fr/System.Text.Encoding.xml",
"ref/netcore50/it/System.Text.Encoding.xml",
"ref/netcore50/ja/System.Text.Encoding.xml",
"ref/netcore50/ko/System.Text.Encoding.xml",
"ref/netcore50/ru/System.Text.Encoding.xml",
"ref/netcore50/zh-hans/System.Text.Encoding.xml",
"ref/netcore50/zh-hant/System.Text.Encoding.xml",
"ref/netstandard1.0/System.Text.Encoding.dll",
"ref/netstandard1.0/System.Text.Encoding.xml",
"ref/netstandard1.0/de/System.Text.Encoding.xml",
"ref/netstandard1.0/es/System.Text.Encoding.xml",
"ref/netstandard1.0/fr/System.Text.Encoding.xml",
"ref/netstandard1.0/it/System.Text.Encoding.xml",
"ref/netstandard1.0/ja/System.Text.Encoding.xml",
"ref/netstandard1.0/ko/System.Text.Encoding.xml",
"ref/netstandard1.0/ru/System.Text.Encoding.xml",
"ref/netstandard1.0/zh-hans/System.Text.Encoding.xml",
"ref/netstandard1.0/zh-hant/System.Text.Encoding.xml",
"ref/netstandard1.3/System.Text.Encoding.dll",
"ref/netstandard1.3/System.Text.Encoding.xml",
"ref/netstandard1.3/de/System.Text.Encoding.xml",
"ref/netstandard1.3/es/System.Text.Encoding.xml",
"ref/netstandard1.3/fr/System.Text.Encoding.xml",
"ref/netstandard1.3/it/System.Text.Encoding.xml",
"ref/netstandard1.3/ja/System.Text.Encoding.xml",
"ref/netstandard1.3/ko/System.Text.Encoding.xml",
"ref/netstandard1.3/ru/System.Text.Encoding.xml",
"ref/netstandard1.3/zh-hans/System.Text.Encoding.xml",
"ref/netstandard1.3/zh-hant/System.Text.Encoding.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.text.encoding.4.3.0.nupkg.sha512",
"system.text.encoding.nuspec"
]
},
"System.Text.Encoding.CodePages/4.4.0": {
"sha512": "6JX7ZdaceBiLKLkYt8zJcp4xTJd1uYyXXEkPw6mnlUIjh1gZPIVKPtRXPmY5kLf6DwZmf5YLwR3QUrRonl7l0A==",
"type": "package",
"path": "system.text.encoding.codepages/4.4.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Text.Encoding.CodePages.dll",
"lib/net461/System.Text.Encoding.CodePages.dll",
"lib/netstandard1.3/System.Text.Encoding.CodePages.dll",
"lib/netstandard2.0/System.Text.Encoding.CodePages.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/netstandard1.3/System.Text.Encoding.CodePages.dll",
"ref/netstandard1.3/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml",
"ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml",
"ref/netstandard2.0/System.Text.Encoding.CodePages.dll",
"ref/netstandard2.0/System.Text.Encoding.CodePages.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll",
"runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll",
"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll",
"runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll",
"system.text.encoding.codepages.4.4.0.nupkg.sha512",
"system.text.encoding.codepages.nuspec",
"useSharedDesignerContext.txt",
"version.txt"
]
},
"System.Text.Encoding.Extensions/4.0.11": {
"sha512": "jtbiTDtvfLYgXn8PTfWI+SiBs51rrmO4AAckx4KR6vFK9Wzf6tI8kcRdsYQNwriUeQ1+CtQbM1W4cMbLXnj/OQ==",
"type": "package",
"path": "system.text.encoding.extensions/4.0.11",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Text.Encoding.Extensions.dll",
"ref/netcore50/System.Text.Encoding.Extensions.xml",
"ref/netcore50/de/System.Text.Encoding.Extensions.xml",
"ref/netcore50/es/System.Text.Encoding.Extensions.xml",
"ref/netcore50/fr/System.Text.Encoding.Extensions.xml",
"ref/netcore50/it/System.Text.Encoding.Extensions.xml",
"ref/netcore50/ja/System.Text.Encoding.Extensions.xml",
"ref/netcore50/ko/System.Text.Encoding.Extensions.xml",
"ref/netcore50/ru/System.Text.Encoding.Extensions.xml",
"ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml",
"ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/System.Text.Encoding.Extensions.dll",
"ref/netstandard1.0/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/System.Text.Encoding.Extensions.dll",
"ref/netstandard1.3/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml",
"ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.text.encoding.extensions.4.0.11.nupkg.sha512",
"system.text.encoding.extensions.nuspec"
]
},
"System.Text.RegularExpressions/4.1.0": {
"sha512": "i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==",
"type": "package",
"path": "system.text.regularexpressions/4.1.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/net463/System.Text.RegularExpressions.dll",
"lib/netcore50/System.Text.RegularExpressions.dll",
"lib/netstandard1.6/System.Text.RegularExpressions.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/net463/System.Text.RegularExpressions.dll",
"ref/netcore50/System.Text.RegularExpressions.dll",
"ref/netcore50/System.Text.RegularExpressions.xml",
"ref/netcore50/de/System.Text.RegularExpressions.xml",
"ref/netcore50/es/System.Text.RegularExpressions.xml",
"ref/netcore50/fr/System.Text.RegularExpressions.xml",
"ref/netcore50/it/System.Text.RegularExpressions.xml",
"ref/netcore50/ja/System.Text.RegularExpressions.xml",
"ref/netcore50/ko/System.Text.RegularExpressions.xml",
"ref/netcore50/ru/System.Text.RegularExpressions.xml",
"ref/netcore50/zh-hans/System.Text.RegularExpressions.xml",
"ref/netcore50/zh-hant/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/System.Text.RegularExpressions.dll",
"ref/netstandard1.0/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/de/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/es/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/fr/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/it/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/ja/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/ko/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/ru/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml",
"ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/System.Text.RegularExpressions.dll",
"ref/netstandard1.3/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/de/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/es/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/fr/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/it/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/ja/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/ko/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/ru/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml",
"ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/System.Text.RegularExpressions.dll",
"ref/netstandard1.6/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/de/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/es/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/fr/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/it/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/ja/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/ko/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/ru/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml",
"ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.text.regularexpressions.4.1.0.nupkg.sha512",
"system.text.regularexpressions.nuspec"
]
},
"System.Threading/4.3.0": {
"sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
"type": "package",
"path": "system.threading/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Threading.dll",
"lib/netstandard1.3/System.Threading.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Threading.dll",
"ref/netcore50/System.Threading.xml",
"ref/netcore50/de/System.Threading.xml",
"ref/netcore50/es/System.Threading.xml",
"ref/netcore50/fr/System.Threading.xml",
"ref/netcore50/it/System.Threading.xml",
"ref/netcore50/ja/System.Threading.xml",
"ref/netcore50/ko/System.Threading.xml",
"ref/netcore50/ru/System.Threading.xml",
"ref/netcore50/zh-hans/System.Threading.xml",
"ref/netcore50/zh-hant/System.Threading.xml",
"ref/netstandard1.0/System.Threading.dll",
"ref/netstandard1.0/System.Threading.xml",
"ref/netstandard1.0/de/System.Threading.xml",
"ref/netstandard1.0/es/System.Threading.xml",
"ref/netstandard1.0/fr/System.Threading.xml",
"ref/netstandard1.0/it/System.Threading.xml",
"ref/netstandard1.0/ja/System.Threading.xml",
"ref/netstandard1.0/ko/System.Threading.xml",
"ref/netstandard1.0/ru/System.Threading.xml",
"ref/netstandard1.0/zh-hans/System.Threading.xml",
"ref/netstandard1.0/zh-hant/System.Threading.xml",
"ref/netstandard1.3/System.Threading.dll",
"ref/netstandard1.3/System.Threading.xml",
"ref/netstandard1.3/de/System.Threading.xml",
"ref/netstandard1.3/es/System.Threading.xml",
"ref/netstandard1.3/fr/System.Threading.xml",
"ref/netstandard1.3/it/System.Threading.xml",
"ref/netstandard1.3/ja/System.Threading.xml",
"ref/netstandard1.3/ko/System.Threading.xml",
"ref/netstandard1.3/ru/System.Threading.xml",
"ref/netstandard1.3/zh-hans/System.Threading.xml",
"ref/netstandard1.3/zh-hant/System.Threading.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"runtimes/aot/lib/netcore50/System.Threading.dll",
"system.threading.4.3.0.nupkg.sha512",
"system.threading.nuspec"
]
},
"System.Threading.Overlapped/4.3.0": {
"sha512": "m3HQ2dPiX/DSTpf+yJt8B0c+SRvzfqAJKx+QDWi+VLhz8svLT23MVjEOHPF/KiSLeArKU/iHescrbLd3yVgyNg==",
"type": "package",
"path": "system.threading.overlapped/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/net46/System.Threading.Overlapped.dll",
"ref/net46/System.Threading.Overlapped.dll",
"ref/netstandard1.3/System.Threading.Overlapped.dll",
"ref/netstandard1.3/System.Threading.Overlapped.xml",
"ref/netstandard1.3/de/System.Threading.Overlapped.xml",
"ref/netstandard1.3/es/System.Threading.Overlapped.xml",
"ref/netstandard1.3/fr/System.Threading.Overlapped.xml",
"ref/netstandard1.3/it/System.Threading.Overlapped.xml",
"ref/netstandard1.3/ja/System.Threading.Overlapped.xml",
"ref/netstandard1.3/ko/System.Threading.Overlapped.xml",
"ref/netstandard1.3/ru/System.Threading.Overlapped.xml",
"ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml",
"ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml",
"runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll",
"runtimes/win/lib/net46/System.Threading.Overlapped.dll",
"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll",
"runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll",
"system.threading.overlapped.4.3.0.nupkg.sha512",
"system.threading.overlapped.nuspec"
]
},
"System.Threading.Tasks/4.3.0": {
"sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"type": "package",
"path": "system.threading.tasks/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Threading.Tasks.dll",
"ref/netcore50/System.Threading.Tasks.xml",
"ref/netcore50/de/System.Threading.Tasks.xml",
"ref/netcore50/es/System.Threading.Tasks.xml",
"ref/netcore50/fr/System.Threading.Tasks.xml",
"ref/netcore50/it/System.Threading.Tasks.xml",
"ref/netcore50/ja/System.Threading.Tasks.xml",
"ref/netcore50/ko/System.Threading.Tasks.xml",
"ref/netcore50/ru/System.Threading.Tasks.xml",
"ref/netcore50/zh-hans/System.Threading.Tasks.xml",
"ref/netcore50/zh-hant/System.Threading.Tasks.xml",
"ref/netstandard1.0/System.Threading.Tasks.dll",
"ref/netstandard1.0/System.Threading.Tasks.xml",
"ref/netstandard1.0/de/System.Threading.Tasks.xml",
"ref/netstandard1.0/es/System.Threading.Tasks.xml",
"ref/netstandard1.0/fr/System.Threading.Tasks.xml",
"ref/netstandard1.0/it/System.Threading.Tasks.xml",
"ref/netstandard1.0/ja/System.Threading.Tasks.xml",
"ref/netstandard1.0/ko/System.Threading.Tasks.xml",
"ref/netstandard1.0/ru/System.Threading.Tasks.xml",
"ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml",
"ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml",
"ref/netstandard1.3/System.Threading.Tasks.dll",
"ref/netstandard1.3/System.Threading.Tasks.xml",
"ref/netstandard1.3/de/System.Threading.Tasks.xml",
"ref/netstandard1.3/es/System.Threading.Tasks.xml",
"ref/netstandard1.3/fr/System.Threading.Tasks.xml",
"ref/netstandard1.3/it/System.Threading.Tasks.xml",
"ref/netstandard1.3/ja/System.Threading.Tasks.xml",
"ref/netstandard1.3/ko/System.Threading.Tasks.xml",
"ref/netstandard1.3/ru/System.Threading.Tasks.xml",
"ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml",
"ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.threading.tasks.4.3.0.nupkg.sha512",
"system.threading.tasks.nuspec"
]
},
"System.Threading.Tasks.Extensions/4.0.0": {
"sha512": "pH4FZDsZQ/WmgJtN4LWYmRdJAEeVkyriSwrv2Teoe5FOU0Yxlb6II6GL8dBPOfRmutHGATduj3ooMt7dJ2+i+w==",
"type": "package",
"path": "system.threading.tasks.extensions/4.0.0",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll",
"lib/netstandard1.0/System.Threading.Tasks.Extensions.xml",
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll",
"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml",
"system.threading.tasks.extensions.4.0.0.nupkg.sha512",
"system.threading.tasks.extensions.nuspec"
]
},
"System.Threading.Thread/4.3.0": {
"sha512": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==",
"type": "package",
"path": "system.threading.thread/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Threading.Thread.dll",
"lib/netcore50/_._",
"lib/netstandard1.3/System.Threading.Thread.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Threading.Thread.dll",
"ref/netstandard1.3/System.Threading.Thread.dll",
"ref/netstandard1.3/System.Threading.Thread.xml",
"ref/netstandard1.3/de/System.Threading.Thread.xml",
"ref/netstandard1.3/es/System.Threading.Thread.xml",
"ref/netstandard1.3/fr/System.Threading.Thread.xml",
"ref/netstandard1.3/it/System.Threading.Thread.xml",
"ref/netstandard1.3/ja/System.Threading.Thread.xml",
"ref/netstandard1.3/ko/System.Threading.Thread.xml",
"ref/netstandard1.3/ru/System.Threading.Thread.xml",
"ref/netstandard1.3/zh-hans/System.Threading.Thread.xml",
"ref/netstandard1.3/zh-hant/System.Threading.Thread.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.threading.thread.4.3.0.nupkg.sha512",
"system.threading.thread.nuspec"
]
},
"System.Threading.ThreadPool/4.3.0": {
"sha512": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==",
"type": "package",
"path": "system.threading.threadpool/4.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Threading.ThreadPool.dll",
"lib/netcore50/_._",
"lib/netstandard1.3/System.Threading.ThreadPool.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Threading.ThreadPool.dll",
"ref/netstandard1.3/System.Threading.ThreadPool.dll",
"ref/netstandard1.3/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/de/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/es/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/fr/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/it/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/ja/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/ko/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/ru/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/zh-hans/System.Threading.ThreadPool.xml",
"ref/netstandard1.3/zh-hant/System.Threading.ThreadPool.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.threading.threadpool.4.3.0.nupkg.sha512",
"system.threading.threadpool.nuspec"
]
},
"System.Threading.Timer/4.0.1": {
"sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
"type": "package",
"path": "system.threading.timer/4.0.1",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net451/_._",
"lib/portable-net451+win81+wpa81/_._",
"lib/win81/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net451/_._",
"ref/netcore50/System.Threading.Timer.dll",
"ref/netcore50/System.Threading.Timer.xml",
"ref/netcore50/de/System.Threading.Timer.xml",
"ref/netcore50/es/System.Threading.Timer.xml",
"ref/netcore50/fr/System.Threading.Timer.xml",
"ref/netcore50/it/System.Threading.Timer.xml",
"ref/netcore50/ja/System.Threading.Timer.xml",
"ref/netcore50/ko/System.Threading.Timer.xml",
"ref/netcore50/ru/System.Threading.Timer.xml",
"ref/netcore50/zh-hans/System.Threading.Timer.xml",
"ref/netcore50/zh-hant/System.Threading.Timer.xml",
"ref/netstandard1.2/System.Threading.Timer.dll",
"ref/netstandard1.2/System.Threading.Timer.xml",
"ref/netstandard1.2/de/System.Threading.Timer.xml",
"ref/netstandard1.2/es/System.Threading.Timer.xml",
"ref/netstandard1.2/fr/System.Threading.Timer.xml",
"ref/netstandard1.2/it/System.Threading.Timer.xml",
"ref/netstandard1.2/ja/System.Threading.Timer.xml",
"ref/netstandard1.2/ko/System.Threading.Timer.xml",
"ref/netstandard1.2/ru/System.Threading.Timer.xml",
"ref/netstandard1.2/zh-hans/System.Threading.Timer.xml",
"ref/netstandard1.2/zh-hant/System.Threading.Timer.xml",
"ref/portable-net451+win81+wpa81/_._",
"ref/win81/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.threading.timer.4.0.1.nupkg.sha512",
"system.threading.timer.nuspec"
]
},
"System.Xml.ReaderWriter/4.0.11": {
"sha512": "ZIiLPsf67YZ9zgr31vzrFaYQqxRPX9cVHjtPSnmx4eN6lbS/yEyYNr2vs1doGDEscF0tjCZFsk9yUg1sC9e8tg==",
"type": "package",
"path": "system.xml.readerwriter/4.0.11",
"files": [
".nupkg.metadata",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net45/_._",
"lib/netcore50/System.Xml.ReaderWriter.dll",
"lib/netstandard1.3/System.Xml.ReaderWriter.dll",
"lib/portable-net45+win8+wp8+wpa81/_._",
"lib/win8/_._",
"lib/wp80/_._",
"lib/wpa81/_._",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net45/_._",
"ref/netcore50/System.Xml.ReaderWriter.dll",
"ref/netcore50/System.Xml.ReaderWriter.xml",
"ref/netcore50/de/System.Xml.ReaderWriter.xml",
"ref/netcore50/es/System.Xml.ReaderWriter.xml",
"ref/netcore50/fr/System.Xml.ReaderWriter.xml",
"ref/netcore50/it/System.Xml.ReaderWriter.xml",
"ref/netcore50/ja/System.Xml.ReaderWriter.xml",
"ref/netcore50/ko/System.Xml.ReaderWriter.xml",
"ref/netcore50/ru/System.Xml.ReaderWriter.xml",
"ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml",
"ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/System.Xml.ReaderWriter.dll",
"ref/netstandard1.0/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/de/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/es/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/it/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml",
"ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/System.Xml.ReaderWriter.dll",
"ref/netstandard1.3/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/de/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/es/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/it/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml",
"ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml",
"ref/portable-net45+win8+wp8+wpa81/_._",
"ref/win8/_._",
"ref/wp80/_._",
"ref/wpa81/_._",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.xml.readerwriter.4.0.11.nupkg.sha512",
"system.xml.readerwriter.nuspec"
]
},
"System.Xml.XmlDocument/4.0.1": {
"sha512": "2eZu6IP+etFVBBFUFzw2w6J21DqIN5eL9Y8r8JfJWUmV28Z5P0SNU01oCisVHQgHsDhHPnmq2s1hJrJCFZWloQ==",
"type": "package",
"path": "system.xml.xmldocument/4.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Xml.XmlDocument.dll",
"lib/netstandard1.3/System.Xml.XmlDocument.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Xml.XmlDocument.dll",
"ref/netstandard1.3/System.Xml.XmlDocument.dll",
"ref/netstandard1.3/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/de/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/es/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/fr/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/it/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/ja/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/ko/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/ru/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml",
"ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.xml.xmldocument.4.0.1.nupkg.sha512",
"system.xml.xmldocument.nuspec"
]
},
"System.Xml.XPath/4.0.1": {
"sha512": "UWd1H+1IJ9Wlq5nognZ/XJdyj8qPE4XufBUkAW59ijsCPjZkZe0MUzKKJFBr+ZWBe5Wq1u1d5f2CYgE93uH7DA==",
"type": "package",
"path": "system.xml.xpath/4.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/net46/System.Xml.XPath.dll",
"lib/netstandard1.3/System.Xml.XPath.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/net46/System.Xml.XPath.dll",
"ref/netstandard1.3/System.Xml.XPath.dll",
"ref/netstandard1.3/System.Xml.XPath.xml",
"ref/netstandard1.3/de/System.Xml.XPath.xml",
"ref/netstandard1.3/es/System.Xml.XPath.xml",
"ref/netstandard1.3/fr/System.Xml.XPath.xml",
"ref/netstandard1.3/it/System.Xml.XPath.xml",
"ref/netstandard1.3/ja/System.Xml.XPath.xml",
"ref/netstandard1.3/ko/System.Xml.XPath.xml",
"ref/netstandard1.3/ru/System.Xml.XPath.xml",
"ref/netstandard1.3/zh-hans/System.Xml.XPath.xml",
"ref/netstandard1.3/zh-hant/System.Xml.XPath.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.xml.xpath.4.0.1.nupkg.sha512",
"system.xml.xpath.nuspec"
]
},
"System.Xml.XPath.XmlDocument/4.0.1": {
"sha512": "Zm2BdeanuncYs3NhCj4c9e1x3EXFzFBVv2wPEc/Dj4ZbI9R8ecLSR5frAsx4zJCPBtKQreQ7Q/KxJEohJZbfzA==",
"type": "package",
"path": "system.xml.xpath.xmldocument/4.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
"lib/MonoAndroid10/_._",
"lib/MonoTouch10/_._",
"lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll",
"lib/xamarinios10/_._",
"lib/xamarinmac20/_._",
"lib/xamarintvos10/_._",
"lib/xamarinwatchos10/_._",
"ref/MonoAndroid10/_._",
"ref/MonoTouch10/_._",
"ref/netstandard1.3/System.Xml.XPath.XmlDocument.dll",
"ref/netstandard1.3/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/de/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/es/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/fr/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/it/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/ja/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/ko/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/ru/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/zh-hans/System.Xml.XPath.XmlDocument.xml",
"ref/netstandard1.3/zh-hant/System.Xml.XPath.XmlDocument.xml",
"ref/xamarinios10/_._",
"ref/xamarinmac20/_._",
"ref/xamarintvos10/_._",
"ref/xamarinwatchos10/_._",
"system.xml.xpath.xmldocument.4.0.1.nupkg.sha512",
"system.xml.xpath.xmldocument.nuspec"
]
}
},
"projectFileDependencyGroups": {
".NETStandard,Version=v2.0": [
"DotNetty.Buffers >= 0.6.0",
"MySql.Data >= 8.0.19",
"NETStandard.Library >= 2.0.3",
"Newtonsoft.Json >= 12.0.2"
]
},
"packageFolders": {
"C:\\Users\\Vitalik\\.nuget\\packages\\": {},
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"projectName": "BrawlStars.Utilities",
"projectPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"packagesPath": "C:\\Users\\Vitalik\\.nuget\\packages\\",
"outputPath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\Vitalik\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netstandard2.0"
],
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netstandard2.0": {
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netstandard2.0": {
"dependencies": {
"DotNetty.Buffers": {
"target": "Package",
"version": "[0.6.0, )"
},
"MySql.Data": {
"target": "Package",
"version": "[8.0.19, )"
},
"NETStandard.Library": {
"suppressParent": "All",
"target": "Package",
"version": "[2.0.3, )",
"autoReferenced": true
},
"Newtonsoft.Json": {
"target": "Package",
"version": "[12.0.2, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.201\\RuntimeIdentifierGraph.json"
}
}
}
}
================================================
FILE: Source/BrawlStars.Utilities/obj/project.nuget.cache
================================================
{
"version": 2,
"dgSpecHash": "DZonxFF3ibTHeCXQ8CghfnD3w0he6BK8Chrk8rDVWgEnUeK/EIZLIpnLkP6xnhGi/CMx3jl2oTfNM6M3us8U9g==",
"success": true,
"projectFilePath": "C:\\Users\\Vitalik\\Desktop\\Source\\BrawlStars.Utilities\\BrawlStars.Utilities.csproj",
"expectedPackageFiles": [
"C:\\Users\\Vitalik\\.nuget\\packages\\bouncycastle.netcore\\1.8.3\\bouncycastle.netcore.1.8.3.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\dotnetty.buffers\\0.6.0\\dotnetty.buffers.0.6.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\dotnetty.common\\0.6.0\\dotnetty.common.0.6.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\google.protobuf\\3.6.1\\google.protobuf.3.6.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.csharp\\4.0.1\\microsoft.csharp.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\1.1.0\\microsoft.extensions.dependencyinjection.abstractions.1.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.extensions.logging\\1.1.1\\microsoft.extensions.logging.1.1.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\1.1.1\\microsoft.extensions.logging.abstractions.1.1.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\mysql.data\\8.0.19\\mysql.data.8.0.19.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\netstandard.library\\2.0.3\\netstandard.library.2.0.3.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\newtonsoft.json\\12.0.2\\newtonsoft.json.12.0.2.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\runtime.native.system.security.cryptography\\4.0.0\\runtime.native.system.security.cryptography.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\ssh.net\\2016.1.0\\ssh.net.2016.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\sshnet.security.cryptography\\1.2.0\\sshnet.security.cryptography.1.2.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.collections.concurrent\\4.0.12\\system.collections.concurrent.4.0.12.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.componentmodel\\4.3.0\\system.componentmodel.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.configuration.configurationmanager\\4.4.1\\system.configuration.configurationmanager.4.4.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.diagnostics.contracts\\4.3.0\\system.diagnostics.contracts.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.diagnostics.tools\\4.0.1\\system.diagnostics.tools.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.diagnostics.tracesource\\4.0.0\\system.diagnostics.tracesource.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.dynamic.runtime\\4.0.11\\system.dynamic.runtime.4.0.11.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.linq.expressions\\4.1.0\\system.linq.expressions.4.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.net.nameresolution\\4.0.0\\system.net.nameresolution.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.net.networkinformation\\4.3.0\\system.net.networkinformation.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.objectmodel\\4.0.12\\system.objectmodel.4.0.12.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.emit\\4.0.1\\system.reflection.emit.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.0.1\\system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.emit.lightweight\\4.0.1\\system.reflection.emit.lightweight.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.extensions\\4.0.1\\system.reflection.extensions.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.reflection.typeextensions\\4.1.0\\system.reflection.typeextensions.4.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\4.5.2\\system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.runtime.numerics\\4.0.1\\system.runtime.numerics.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.accesscontrol\\4.6.0\\system.security.accesscontrol.4.6.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.cryptography.algorithms\\4.2.0\\system.security.cryptography.algorithms.4.2.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.cryptography.encoding\\4.0.0\\system.security.cryptography.encoding.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.cryptography.primitives\\4.0.0\\system.security.cryptography.primitives.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.4.0\\system.security.cryptography.protecteddata.4.4.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.permissions\\4.6.0\\system.security.permissions.4.6.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.security.principal.windows\\4.6.0\\system.security.principal.windows.4.6.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.text.encoding.codepages\\4.4.0\\system.text.encoding.codepages.4.4.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.text.encoding.extensions\\4.0.11\\system.text.encoding.extensions.4.0.11.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.text.regularexpressions\\4.1.0\\system.text.regularexpressions.4.1.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.overlapped\\4.3.0\\system.threading.overlapped.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.tasks.extensions\\4.0.0\\system.threading.tasks.extensions.4.0.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.thread\\4.3.0\\system.threading.thread.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.threadpool\\4.3.0\\system.threading.threadpool.4.3.0.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.threading.timer\\4.0.1\\system.threading.timer.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.xml.readerwriter\\4.0.11\\system.xml.readerwriter.4.0.11.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.xml.xmldocument\\4.0.1\\system.xml.xmldocument.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.xml.xpath\\4.0.1\\system.xml.xpath.4.0.1.nupkg.sha512",
"C:\\Users\\Vitalik\\.nuget\\packages\\system.xml.xpath.xmldocument\\4.0.1\\system.xml.xpath.xmldocument.4.0.1.nupkg.sha512"
],
"logs": []
}
================================================
FILE: Source/BrawlStars.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28809.33
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BrawlStars", "BrawlStars\BrawlStars.csproj", "{9D0CA4C8-4661-4D51-AE5D-5EDB16C9C796}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BrawlStars.Utilities", "BrawlStars.Utilities\BrawlStars.Utilities.csproj", "{7F835EF1-3FC7-40A5-81C4-502071DBEB1F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9D0CA4C8-4661-4D51-AE5D-5EDB16C9C796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9D0CA4C8-4661-4D51-AE5D-5EDB16C9C796}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D0CA4C8-4661-4D51-AE5D-5EDB16C9C796}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D0CA4C8-4661-4D51-AE5D-5EDB16C9C796}.Release|Any CPU.Build.0 = Release|Any CPU
{7F835EF1-3FC7-40A5-81C4-502071DBEB1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F835EF1-3FC7-40A5-81C4-502071DBEB1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F835EF1-3FC7-40A5-81C4-502071DBEB1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F835EF1-3FC7-40A5-81C4-502071DBEB1F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EAFDB0A5-529C-498E-8A90-5389E2B0CF3B}
EndGlobalSection
EndGlobal