+++ /dev/null
-This is a Subversion working copy administrative directory.
-Visit http://subversion.tigris.org/ for more information.
+++ /dev/null
-K 25
-svn:wc:ra_dav:version-url
-V 36
-/sdlperl/!svn/ver/1/lib/SDL/Tutorial
-END
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<wc-entries
- xmlns="svn:">
-<entry
- committed-rev="1"
- name=""
- committed-date="2006-03-02T00:09:24.247311Z"
- url="http://sdlperl.nexttolast.com/sdlperl/lib/SDL/Tutorial"
- kind="dir"
- uuid="6e26d18a-f70d-0410-a0fd-8c28a9da13a5"
- revision="2"/>
-<entry
- committed-rev="1"
- name="Images.pm"
- text-time="2006-07-08T17:51:11.000000Z"
- committed-date="2006-03-02T00:09:24.247311Z"
- checksum="947cdb472983352bf543cc3b94c28402"
- kind="file"
- prop-time="2006-07-08T17:51:10.000000Z"/>
-<entry
- committed-rev="1"
- name="Drawing.pm"
- text-time="2006-07-08T17:51:11.000000Z"
- committed-date="2006-03-02T00:09:24.247311Z"
- checksum="7c16c8c7758e9a5d417c4393e2190e1f"
- kind="file"
- prop-time="2006-07-08T17:51:11.000000Z"/>
-<entry
- committed-rev="1"
- name="Animation.pm"
- text-time="2006-07-08T17:51:11.000000Z"
- committed-date="2006-03-02T00:09:24.247311Z"
- checksum="bd141ab697587677c8225bcf307bbe80"
- kind="file"
- prop-time="2006-07-08T17:51:11.000000Z"/>
-</wc-entries>
+++ /dev/null
-#!/usr/bin/env perl
-#
-# Animation.pm
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-package SDL::Tutorial::Animation;
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Rect;
-use SDL::Color;
-
-# change these values as necessary
-my $title = 'My SDL Animation';
-my ($width, $height, $depth) = ( 640, 480, 16 );
-my ($bg_r, $bg_g, $bg_b) = ( 0x00, 0x00, 0x00 );
-my ($rect_r, $rect_g, $rect_b) = ( 0x00, 0x00, 0xff );
-my ($rect_width, $rect_height, $rect_y) = ( 100, 100, 190 );
-
-my $app = SDL::App->new(
- -width => $width,
- -height => $height,
- -depth => $depth,
-);
-
-my $color = SDL::Color->new(
- -r => $rect_r,
- -g => $rect_g,
- -b => $rect_b,
-);
-
-my $bg_color = SDL::Color->new(
- -r => $bg_r,
- -g => $bg_g,
- -b => $bg_b,
-);
-
-my $background = SDL::Rect->new(
- -width => $width,
- -height => $height,
-);
-
-my $rect = create_rect();
-
-# your code here, perhaps
-for my $x (0 .. 640)
-{
- $rect->x( $x );
- draw_frame( $app,
- bg => $background, bg_color => $bg_color,
- rect => $rect, rect_color => $color,
- );
-}
-
-# remove this line
-sleep 2;
-
-# XXX - if you know why I need to create a new rect here, please tell me!
-$rect = create_rect();
-my $old_rect = create_rect();
-
-# your code also here, perhaps
-for my $x (0 .. 640)
-{
- $rect->x( $x );
- draw_undraw_rect( $app,
- rect => $rect, old_rect => $old_rect,
- rect_color => $color, bg_color => $bg_color,
- );
- $old_rect->x( $x );
-}
-
-# your code almost certainly follows; remove this line
-sleep 2;
-
-sub create_rect
-{
- return SDL::Rect->new(
- -height => $rect_height,
- -width => $rect_width,
- -x => 0,
- -y => $rect_y,
- );
-}
-
-sub draw_frame
-{
- my ($app, %args) = @_;
-
- $app->fill( $args{bg}, $args{bg_color} );
- $app->fill( $args{rect}, $args{rect_color} );
- $app->update( $args{bg} );
-}
-
-sub draw_undraw_rect
-{
- my ($app, %args) = @_;
-
- $app->fill( $args{old_rect}, $args{bg_color} );
- $app->fill( $args{rect}, $args{rect_color} );
- $app->update( $args{old_rect} );
- $app->update( $args{rect} );
-}
-END_HERE
-
-1;
-__END__
-
-=head1 NAME
-
-SDL::Tutorial::Animation
-
-=head1 SYNOPSIS
-
- # to read this tutorial
- $ perldoc SDL::Tutorial::Animation
-
- # to create a demo animation program based on this tutorial
- $ perl -MSDL::Tutorial::Animation=sdl_anim.pl -e 1
-
-=head1 ANIMATING A RECTANGLE
-
-Now that you can display a rectangle on the screen, the next step is to animate
-that rectangle. As with movies, there's no actual motion. Computer animations are just very very fast slideshows. The hard work is creating nearly identical images in every slide (or frame, in graphics terms).
-
-Okay, it's not that difficult.
-
-There is one small difficulty to address, however. Once you blit one surface
-onto another, the destination is changed permanently. There's no concept of
-layers here unless you write it yourself. If you fail to take this into
-account (and just about everyone does at first), you'll end up with blurry
-graphics moving around on the screen.
-
-There are two approaches to solve this problem, redrawing the screen on every
-frame and saving and restoring the background for every object drawn.
-
-=head2 Redrawing the Screen
-
-Since you have to draw the screen in the right order once to start with it's
-pretty easy to make this into a loop and redraw things in the right order for
-every frame. Given a L<SDL::App> object C<$app>, a L<SDL::Rect> C<$rect>, and
-a L<SDL::Color> C<$color>, you only have to create a new SDL::Rect C<$bg>,
-representing the whole of the background surface and a new SDL::Color
-C<$bg_color>, representing the background color. You can write a
-C<draw_frame()> function as follows:
-
- sub draw_frame
- {
- my ($app, %args) = @_;
-
- $app->fill( $args{ bg }, $args{ bg_color } );
- $app->fill( $args{rect}, $args{rect_color} );
- $app->update( $args{bg} );
- }
-
-Since you can change the C<x> and C<y> coordinates of a rect with the C<x()>
-and C<y()> methods, you can move a rectangle across the screen with a loop like
-this:
-
- for my $x (0 .. 640)
- {
- $rect->x( $x );
- draw_frame( $app,
- bg => $bg, bg_color => $bg_color,
- rect => $rect, rect_color => $color,
- );
- }
-
-If C<$rect>'s starting y position is 190 and its height and width are 100, the
-rectangle (er, square) will move across the middle of the screen.
-
-Provided you can keep track of the proper order in which to redraw rectangles
-and provided you don't need the optimal speed necessary (since blitting every
-object takes more work than just blitting the portions you need), this works
-quite well.
-
-=head2 Undrawing the Updated Rectangle
-
-If you need more speed or want to make a different complexity tradeoff, you can
-take a snapshot of the destination rectangle I<before> you blit onto it. That
-way, when you need to redraw, you can blit the old snapshot back before
-blitting to the new position.
-
-B<Note:> I have no idea how this will work in the face of alpha blending,
-which, admittedly, I haven't even mentioned yet. If you don't know what this
-means, forget it. If you do know what this means and know why I'm waving my
-hands here, feel free to explain what should and what does happen and why. :)
-
-With this technique, the frame-drawing subroutine has to be a little more
-complicated. Instead of the background rect, it needs a rect for the previous
-position. It also needs to do two updates (or must perform some scary math to
-figure out the rectangle of the correct size to C<update()>. No thanks!).
-
- sub undraw_redraw_rect
- {
- my ($app, %args) = @_;
-
- $app->fill( $args{old_rect}, $args{bg_color} );
- $app->fill( $args{rect], $args{rect_color} );
- $app->update( $args{old_rect}, $args{rect} );
- }
-
-We'll need to create a new SDL::Rect, C<$old_rect>, that is a duplicate of
-C<$rect>, at the same position at first. You should already know how to do
-this.
-
-As before, the loop to call C<undraw_redraw_rect()> would look something like:
-
- for my $x (0 .. 640)
- {
- $rect->x( $x );
-
- undraw_redraw_rect( $app,
- rect => $rect, old_rect => $old_rect,
- rect_color => $color, bg_color => $bgcolor,
- );
-
- $old_rect->x( $x );
- }
-
-If you run this code, you'll probably notice that it's tremendously faster than
-the previous version. It may be too fast, where the alternate technique was
-just fast enough. There are a couple of good ways to set a fixed animation
-speed regardless of the speed of the processor and graphics hardware (provided
-they're good enough, which is increasingly often the case), and we'll get to
-them soon.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item L<SDL::Tutorial::Drawing>
-
-basic drawing with SDL Perl
-
-=item L<SDL::Tutorial::Images>
-
-animating images
-
-=back
-
-=head1 AUTHOR
-
-chromatic, E<lt>chromatic@wgz.orgE<gt>
-
-Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>.
-
-=head1 BUGS
-
-No known bugs.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2003 - 2004, chromatic. All rights reserved. This module is
-distributed under the same terms as Perl itself, in the hope that it is useful
-but certainly under no guarantee.
+++ /dev/null
-#!/usr/bin/env perl
-#
-# Drawing.pm
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-package SDL::Tutorial:Drawing;
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Rect;
-use SDL::Color;
-
-# change these values as necessary
-my $title = 'My SDL Rectangle-Drawing App';
-my ($width, $height, $depth) = ( 640, 480, 16 );
-my ($red, $green, $blue) = ( 0x00, 0x00, 0xff );
-my ($rect_width, $rect_height) = ( 100, 100 );
-my ($rect_x, $rect_y) = ( 270, 190 );
-
-my $app = SDL::App->new(
- -width => $width,
- -height => $height,
- -depth => $depth,
-);
-
-my $rect = SDL::Rect->new(
- -height => $rect_height,
- -width => $rect_width,
- -x => $rect_x,
- -y => $rect_y,
-);
-
-my $color = SDL::Color->new(
- -r => $red,
- -g => $green,
- -b => $blue,
-);
-
-$app->fill( $rect, $color );
-$app->update( $rect );
-
-# your code here; remove the next line
-sleep 2;
-END_HERE
-
-1;
-__END__
-
-=head1 NAME
-
-SDL::Tutorial::Drawing - basic drawing with Perl SDL
-
-=head1 SYNOPSIS
-
- # to read this tutorial
- $ perldoc SDL::Tutorial::Drawing
-
- # to create a bare-bones SDL app based on this tutorial
- $ perl -MSDL::Tutorial::Drawing=basic_app.pl -e 1
-
-=head1 DRAWING BASICS
-
-As explained in L<SDL::Tutorial>, all graphics in SDL live on a surface.
-Consequently, all drawing operations operate on a surface, whether drawing on
-it directly or blitting from another surface. The important modules for this
-exercise are L<SDL::Rect> and L<SDL::Color>.
-
-As usual, we'll start by creating a L<SDL::App> object:
-
- use SDL::App;
-
- my $app = SDL::App->new(
- -width => 640,
- -height => 480,
- -depth => 16,
- );
-
-=head2 Creating a New Surface with SDL::Rect
-
-A SDL::Rect object is an SDL surface, just as an SDL::App object is. As you'd
-expect, you need to specify the size of this object as you create it. You can
-also specify its coordinates relative to the origin.
-
-B<Note:> The origin, or coordinates 0, 0, is at the upper left of the screen.
-
-Here's how to create a square 100 pixels by 100 pixels centered in the window:
-
- use SDL::Rect;
-
- my $rect = SDL::Rect->new(
- -height => 100,
- -width => 100,
- -x => 270,
- -y => 390,
- );
-
-This won't actually display anything yet, it just creates a rectangular
-surface. Of course, even if it did display, you wouldn't see anything, as it
-defaults to the background color just as C<$app> does. That's where SDL::Color
-comes in.
-
-=head2 A Bit About Color
-
-SDL::Color objects represent colors in the SDL world. These colors are
-additive, so they're represented as mixtures of Red, Green, and Blue
-components. The color values are traditionally given in hexadecimal numbers.
-If you're exceedingly clever or really like the math, you can figure out which
-values are possible by comparing them to your current bit depth. SDL does a
-lot of autoconversion for you, though, so unless extreme speed or pedantic
-detail are important, you can get by without worrying too much.
-
-Creating a color object is reasonably easy. As the color scheme is additive,
-the lower the number for a color component, the less of that color. The higher
-the number, the higher the component. Experimentation may be your best bet, as
-these aren't exactly the primary colors you learned as a child (since that's a
-subtractive scheme).
-
-Let's create a nice, full blue:
-
- use SDL::Color;
-
- my $color = SDL::Color->new(
- -r => 0x00,
- -g => 0x00,
- -b => 0xff,
- );
-
-B<Note:> The numbers are in hex; if you've never used hex notation in Perl
-before, the leading C<0x> just signifies that the rest of the number is in
-base-16. In this case, the blue component has a value of 255 and the red and
-green are both zero.
-
-=head2 Filling Part of a Surface
-
-The C<fill()> method of SDL::Surface fills a given rectangular section of the
-surface with the given color. Since we already have a rect and a color, it's
-as easy as saying:
-
- $app->fill( $rect, $color );
-
-That's a little subtle; it turns out that the SDL::Rect created earlier
-represents a destination within the surface of the main window. It's not
-attached to anything else. We could re-use it later, as necessary.
-
-=head2 Updating the Surface
-
-If you try the code so far, you'll notice that it still doesn't display. Don't
-fret. All that's left to do is to call C<update()> on the appropriate surface.
-As usual, C<update()> takes a Rect to control which part of the surface to
-update. In this case, that's:
-
- $app->update( $rect );
-
-This may seem like a useless extra step, but it can be quite handy. While
-drawing to the screen directly seems like the fastest way to go, the
-intricacies of working with hardware with the appropriate timings is tricky.
-
-=head2 Working With The App
-
-You can, of course, create all sorts of Rects with different sizes and
-coordinates as well as varied colors and experiment to your heart's content
-drawing them to the window. It's more fun when you can animate them smoothly,
-though.
-
-That, as usual, is another tutorial.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item L<SDL::Tutorial>
-
-the basics of Perl SDL.
-
-=item L<SDL::Tutorial::Animation>
-
-basic animation techniques
-
-=back
-
-=head1 AUTHOR
-
-chromatic, E<lt>chromatic@wgz.orgE<gt>
-
-Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>.
-
-=head1 BUGS
-
-No known bugs.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2003 - 2004, chromatic. All rights reserved. This module is
-distributed under the same terms as Perl itself, in the hope that it is useful
-but certainly under no guarantee.
+++ /dev/null
-#!/usr/bin/env perl
-#
-# Images.pm
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-package SDL::Tutorial::Images;
-
-use strict;
-use SDL;
-use warnings;
-
-my %images;
-BEGIN
-{
- %images = (
- left => [qw(
- 47 49 46 38 37 61 10 00 10 00 E7 00 00 00 00 00 01 01 01 02 02 02 03 03
- 03 04 04 04 05 05 05 06 06 06 07 07 07 08 08 08 09 09 09 0A 0A 0A 0B 0B
- 0B 0C 0C 0C 0D 0D 0D 0E 0E 0E 0F 0F 0F 10 10 10 11 11 11 12 12 12 13 13
- 13 14 14 14 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 1A 1A 1A 1B 1B
- 1B 1C 1C 1C 1D 1D 1D 1E 1E 1E 1F 1F 1F 20 20 20 21 21 21 22 22 22 23 23
- 23 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 2A 2A 2A 2B 2B
- 2B 2C 2C 2C 2D 2D 2D 2E 2E 2E 2F 2F 2F 30 30 30 31 31 31 32 32 32 33 33
- 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 3A 3A 3A 3B 3B
- 3B 3C 3C 3C 3D 3D 3D 3E 3E 3E 3F 3F 3F 40 40 40 41 41 41 42 42 42 43 43
- 43 44 44 44 45 45 45 46 46 46 47 47 47 48 48 48 49 49 49 4A 4A 4A 4B 4B
- 4B 4C 4C 4C 4D 4D 4D 4E 4E 4E 4F 4F 4F 50 50 50 51 51 51 52 52 52 53 53
- 53 54 54 54 55 55 55 56 56 56 57 57 57 58 58 58 59 59 59 5A 5A 5A 5B 5B
- 5B 5C 5C 5C 5D 5D 5D 5E 5E 5E 5F 5F 5F 60 60 60 61 61 61 62 62 62 63 63
- 63 64 64 64 65 65 65 66 66 66 67 67 67 68 68 68 69 69 69 6A 6A 6A 6B 6B
- 6B 6C 6C 6C 6D 6D 6D 6E 6E 6E 6F 6F 6F 70 70 70 71 71 71 72 72 72 73 73
- 73 74 74 74 75 75 75 76 76 76 77 77 77 78 78 78 79 79 79 7A 7A 7A 7B 7B
- 7B 7C 7C 7C 7D 7D 7D 7E 7E 7E 7F 7F 7F 80 80 80 81 81 81 82 82 82 83 83
- 83 84 84 84 85 85 85 86 86 86 87 87 87 88 88 88 89 89 89 8A 8A 8A 8B 8B
- 8B 8C 8C 8C 8D 8D 8D 8E 8E 8E 8F 8F 8F 90 90 90 91 91 91 92 92 92 93 93
- 93 94 94 94 95 95 95 96 96 96 97 97 97 98 98 98 99 99 99 9A 9A 9A 9B 9B
- 9B 9C 9C 9C 9D 9D 9D 9E 9E 9E 9F 9F 9F A0 A0 A0 A1 A1 A1 A2 A2 A2 A3 A3
- A3 A4 A4 A4 A5 A5 A5 A6 A6 A6 A7 A7 A7 A8 A8 A8 A9 A9 A9 AA AA AA AB AB
- AB AC AC AC AD AD AD AE AE AE AF AF AF B0 B0 B0 B1 B1 B1 B2 B2 B2 B3 B3
- B3 B4 B4 B4 B5 B5 B5 B6 B6 B6 B7 B7 B7 B8 B8 B8 B9 B9 B9 BA BA BA BB BB
- BB BC BC BC BD BD BD BE BE BE BF BF BF C0 C0 C0 C1 C1 C1 C2 C2 C2 C3 C3
- C3 C4 C4 C4 C5 C5 C5 C6 C6 C6 C7 C7 C7 C8 C8 C8 C9 C9 C9 CA CA CA CB CB
- CB CC CC CC CD CD CD CE CE CE CF CF CF D0 D0 D0 D1 D1 D1 D2 D2 D2 D3 D3
- D3 D4 D4 D4 D5 D5 D5 D6 D6 D6 D7 D7 D7 D8 D8 D8 D9 D9 D9 DA DA DA DB DB
- DB DC DC DC DD DD DD DE DE DE DF DF DF E0 E0 E0 E1 E1 E1 E2 E2 E2 E3 E3
- E3 E4 E4 E4 E5 E5 E5 E6 E6 E6 E7 E7 E7 E8 E8 E8 E9 E9 E9 EA EA EA EB EB
- EB EC EC EC ED ED ED EE EE EE EF EF EF F0 F0 F0 F1 F1 F1 F2 F2 F2 F3 F3
- F3 F4 F4 F4 F5 F5 F5 F6 F6 F6 F7 F7 F7 F8 F8 F8 F9 F9 F9 FA FA FA FB FB
- FB FC FC FC FD FD FD FE FE FE FF FF FF 2C 00 00 00 00 10 00 10 00 00 08
- 36 00 FF 09 1C 48 B0 A0 C1 83 08 13 22 04 C0 10 80 C2 7F 0C 05 46 4C E8
- 70 60 C5 85 15 27 52 6C A8 30 E3 45 8C 0D 39 76 FC 38 F2 A1 44 91 1B 4F
- 82 24 88 D2 64 C1 80 00 3B
- )],
- center => [qw(
- 47 49 46 38 37 61 10 00 10 00 E7 00 00 00 00 00 01 01 01 02 02 02 03 03
- 03 04 04 04 05 05 05 06 06 06 07 07 07 08 08 08 09 09 09 0A 0A 0A 0B 0B
- 0B 0C 0C 0C 0D 0D 0D 0E 0E 0E 0F 0F 0F 10 10 10 11 11 11 12 12 12 13 13
- 13 14 14 14 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 1A 1A 1A 1B 1B
- 1B 1C 1C 1C 1D 1D 1D 1E 1E 1E 1F 1F 1F 20 20 20 21 21 21 22 22 22 23 23
- 23 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 2A 2A 2A 2B 2B
- 2B 2C 2C 2C 2D 2D 2D 2E 2E 2E 2F 2F 2F 30 30 30 31 31 31 32 32 32 33 33
- 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 3A 3A 3A 3B 3B
- 3B 3C 3C 3C 3D 3D 3D 3E 3E 3E 3F 3F 3F 40 40 40 41 41 41 42 42 42 43 43
- 43 44 44 44 45 45 45 46 46 46 47 47 47 48 48 48 49 49 49 4A 4A 4A 4B 4B
- 4B 4C 4C 4C 4D 4D 4D 4E 4E 4E 4F 4F 4F 50 50 50 51 51 51 52 52 52 53 53
- 53 54 54 54 55 55 55 56 56 56 57 57 57 58 58 58 59 59 59 5A 5A 5A 5B 5B
- 5B 5C 5C 5C 5D 5D 5D 5E 5E 5E 5F 5F 5F 60 60 60 61 61 61 62 62 62 63 63
- 63 64 64 64 65 65 65 66 66 66 67 67 67 68 68 68 69 69 69 6A 6A 6A 6B 6B
- 6B 6C 6C 6C 6D 6D 6D 6E 6E 6E 6F 6F 6F 70 70 70 71 71 71 72 72 72 73 73
- 73 74 74 74 75 75 75 76 76 76 77 77 77 78 78 78 79 79 79 7A 7A 7A 7B 7B
- 7B 7C 7C 7C 7D 7D 7D 7E 7E 7E 7F 7F 7F 80 80 80 81 81 81 82 82 82 83 83
- 83 84 84 84 85 85 85 86 86 86 87 87 87 88 88 88 89 89 89 8A 8A 8A 8B 8B
- 8B 8C 8C 8C 8D 8D 8D 8E 8E 8E 8F 8F 8F 90 90 90 91 91 91 92 92 92 93 93
- 93 94 94 94 95 95 95 96 96 96 97 97 97 98 98 98 99 99 99 9A 9A 9A 9B 9B
- 9B 9C 9C 9C 9D 9D 9D 9E 9E 9E 9F 9F 9F A0 A0 A0 A1 A1 A1 A2 A2 A2 A3 A3
- A3 A4 A4 A4 A5 A5 A5 A6 A6 A6 A7 A7 A7 A8 A8 A8 A9 A9 A9 AA AA AA AB AB
- AB AC AC AC AD AD AD AE AE AE AF AF AF B0 B0 B0 B1 B1 B1 B2 B2 B2 B3 B3
- B3 B4 B4 B4 B5 B5 B5 B6 B6 B6 B7 B7 B7 B8 B8 B8 B9 B9 B9 BA BA BA BB BB
- BB BC BC BC BD BD BD BE BE BE BF BF BF C0 C0 C0 C1 C1 C1 C2 C2 C2 C3 C3
- C3 C4 C4 C4 C5 C5 C5 C6 C6 C6 C7 C7 C7 C8 C8 C8 C9 C9 C9 CA CA CA CB CB
- CB CC CC CC CD CD CD CE CE CE CF CF CF D0 D0 D0 D1 D1 D1 D2 D2 D2 D3 D3
- D3 D4 D4 D4 D5 D5 D5 D6 D6 D6 D7 D7 D7 D8 D8 D8 D9 D9 D9 DA DA DA DB DB
- DB DC DC DC DD DD DD DE DE DE DF DF DF E0 E0 E0 E1 E1 E1 E2 E2 E2 E3 E3
- E3 E4 E4 E4 E5 E5 E5 E6 E6 E6 E7 E7 E7 E8 E8 E8 E9 E9 E9 EA EA EA EB EB
- EB EC EC EC ED ED ED EE EE EE EF EF EF F0 F0 F0 F1 F1 F1 F2 F2 F2 F3 F3
- F3 F4 F4 F4 F5 F5 F5 F6 F6 F6 F7 F7 F7 F8 F8 F8 F9 F9 F9 FA FA FA FB FB
- FB FC FC FC FD FD FD FE FE FE FF FF FF 2C 00 00 00 00 10 00 10 00 00 08
- 36 00 FF 09 1C 48 B0 A0 C1 83 08 13 26 04 C0 10 80 C2 7F 0C 05 46 5C 48
- D0 E1 42 8B 13 2F 66 54 B8 F1 60 C3 8F 16 2F 3E 1C D8 11 E1 C7 87 13 4B
- 4A DC D8 70 E4 C1 80 00 3B
- )],
- right => [qw(
- 47 49 46 38 37 61 10 00 10 00 E7 00 00 00 00 00 01 01 01 02 02 02 03 03
- 03 04 04 04 05 05 05 06 06 06 07 07 07 08 08 08 09 09 09 0A 0A 0A 0B 0B
- 0B 0C 0C 0C 0D 0D 0D 0E 0E 0E 0F 0F 0F 10 10 10 11 11 11 12 12 12 13 13
- 13 14 14 14 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 1A 1A 1A 1B 1B
- 1B 1C 1C 1C 1D 1D 1D 1E 1E 1E 1F 1F 1F 20 20 20 21 21 21 22 22 22 23 23
- 23 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 2A 2A 2A 2B 2B
- 2B 2C 2C 2C 2D 2D 2D 2E 2E 2E 2F 2F 2F 30 30 30 31 31 31 32 32 32 33 33
- 33 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 3A 3A 3A 3B 3B
- 3B 3C 3C 3C 3D 3D 3D 3E 3E 3E 3F 3F 3F 40 40 40 41 41 41 42 42 42 43 43
- 43 44 44 44 45 45 45 46 46 46 47 47 47 48 48 48 49 49 49 4A 4A 4A 4B 4B
- 4B 4C 4C 4C 4D 4D 4D 4E 4E 4E 4F 4F 4F 50 50 50 51 51 51 52 52 52 53 53
- 53 54 54 54 55 55 55 56 56 56 57 57 57 58 58 58 59 59 59 5A 5A 5A 5B 5B
- 5B 5C 5C 5C 5D 5D 5D 5E 5E 5E 5F 5F 5F 60 60 60 61 61 61 62 62 62 63 63
- 63 64 64 64 65 65 65 66 66 66 67 67 67 68 68 68 69 69 69 6A 6A 6A 6B 6B
- 6B 6C 6C 6C 6D 6D 6D 6E 6E 6E 6F 6F 6F 70 70 70 71 71 71 72 72 72 73 73
- 73 74 74 74 75 75 75 76 76 76 77 77 77 78 78 78 79 79 79 7A 7A 7A 7B 7B
- 7B 7C 7C 7C 7D 7D 7D 7E 7E 7E 7F 7F 7F 80 80 80 81 81 81 82 82 82 83 83
- 83 84 84 84 85 85 85 86 86 86 87 87 87 88 88 88 89 89 89 8A 8A 8A 8B 8B
- 8B 8C 8C 8C 8D 8D 8D 8E 8E 8E 8F 8F 8F 90 90 90 91 91 91 92 92 92 93 93
- 93 94 94 94 95 95 95 96 96 96 97 97 97 98 98 98 99 99 99 9A 9A 9A 9B 9B
- 9B 9C 9C 9C 9D 9D 9D 9E 9E 9E 9F 9F 9F A0 A0 A0 A1 A1 A1 A2 A2 A2 A3 A3
- A3 A4 A4 A4 A5 A5 A5 A6 A6 A6 A7 A7 A7 A8 A8 A8 A9 A9 A9 AA AA AA AB AB
- AB AC AC AC AD AD AD AE AE AE AF AF AF B0 B0 B0 B1 B1 B1 B2 B2 B2 B3 B3
- B3 B4 B4 B4 B5 B5 B5 B6 B6 B6 B7 B7 B7 B8 B8 B8 B9 B9 B9 BA BA BA BB BB
- BB BC BC BC BD BD BD BE BE BE BF BF BF C0 C0 C0 C1 C1 C1 C2 C2 C2 C3 C3
- C3 C4 C4 C4 C5 C5 C5 C6 C6 C6 C7 C7 C7 C8 C8 C8 C9 C9 C9 CA CA CA CB CB
- CB CC CC CC CD CD CD CE CE CE CF CF CF D0 D0 D0 D1 D1 D1 D2 D2 D2 D3 D3
- D3 D4 D4 D4 D5 D5 D5 D6 D6 D6 D7 D7 D7 D8 D8 D8 D9 D9 D9 DA DA DA DB DB
- DB DC DC DC DD DD DD DE DE DE DF DF DF E0 E0 E0 E1 E1 E1 E2 E2 E2 E3 E3
- E3 E4 E4 E4 E5 E5 E5 E6 E6 E6 E7 E7 E7 E8 E8 E8 E9 E9 E9 EA EA EA EB EB
- EB EC EC EC ED ED ED EE EE EE EF EF EF F0 F0 F0 F1 F1 F1 F2 F2 F2 F3 F3
- F3 F4 F4 F4 F5 F5 F5 F6 F6 F6 F7 F7 F7 F8 F8 F8 F9 F9 F9 FA FA FA FB FB
- FB FC FC FC FD FD FD FE FE FE FF FF FF 2C 00 00 00 00 10 00 10 00 00 08
- 3A 00 FF 09 1C 48 B0 A0 C1 83 08 13 2A 04 C0 10 80 C2 7F 0C 05 46 4C E8
- 70 60 45 84 13 27 52 6C F8 50 62 C5 8B 05 1B 8A 04 79 50 E3 43 93 1B 51
- 1A CC 48 D2 A2 49 8E 1D 0B 06 04 00 3B
- )],
-);
-}
-
-use Pod::ToDemo sub
-{
- (undef, my $filename) = @_;
- (my $imagebase = $filename) =~ s/\.\w+$//;
- my @img_files = map { $imagebase . "_$_.gif" }
- qw( left center right );
- my $demo_source = <<'END_HERE';
-package Walker;
-
-sub new
-{
- my ($class, @images) = @_;
- my @frames = map { SDL::Surface->new( -name => $_ ) } @images;
- my $frame_rect = SDL::Rect->new(
- -height => $frames[0]->height(),
- -width => $frames[0]->width(),
- -x => 0,
- -y => 0,
- );
- my $self =
- {
- frames => \@frames,
- frame_rect => $frame_rect,
- };
- bless $self, $class;
-}
-
-sub frames
-{
- my $self = shift;
- $self->{frames} = shift if @_;
- $self->{frames};
-}
-
-sub frame_rect
-{
- my $self = shift;
- $self->{frame_rect} = shift if @_;
- $self->{frame_rect};
-}
-
-sub next_frame
-{
- my $self = shift;
- my $frames = $self->frames();
- my $frame = shift @$frames;
-
- push @$frames, $frame;
- $self->frames( $frames );
-
- return $frame;
-}
-
-package main;
-
-use strict;
-
-use SDL;
-use SDL::App;
-use SDL::Surface;
-use SDL::Color;
-
-# change these values as necessary
-my $title = 'My SDL Animation';
-my ($width, $height, $depth) = ( 640, 480, 16 );
-my ($bg_r, $bg_g, $bg_b) = ( 0xff, 0xff, 0xff );
-my ($start_x, $end_x) = ( 20, 600 );
-my $sleep_msec = 0.05;
-
-my $app = SDL::App->new(
- -width => $width,
- -height => $height,
- -depth => $depth,
-);
-
-my $bg_color = SDL::Color->new(
- -r => $bg_r,
- -g => $bg_g,
- -b => $bg_b,
-);
-
-my $background = SDL::Rect->new(
- -width => $width,
- -height => $height,
-);
-
-my $pos = SDL::Rect->new(
- -width => 16,
- -height => 16,
- -x => 0,
- -y => 240,
-);
-
-my $walker = Walker->new(qw(
-END_HERE
-
-$demo_source .= join( ' ', @img_files ) . "));" . <<'END_HERE';
-
-for my $x ( $start_x .. $end_x )
-{
- draw_background( $app, $background, $bg_color );
- $pos->x( $x );
- draw_walker( $walker, $app, $pos );
- $app->update( $background );
- select( undef, undef, undef, $sleep_msec );
-}
-
-# you'll want to remove this
-sleep 2;
-
-sub draw_background
-{
- my ($app, $background, $bg_color) = @_;
- $app->fill( $background, $bg_color );
-}
-
-sub draw_walker
-{
- my ($walker, $app, $pos) = @_;
- my $frame = $walker->next_frame();
- my $frame_rect = $walker->frame_rect();
- $frame->blit( $frame_rect, $app, $pos );
-}
-END_HERE
-
- Pod::ToDemo::write_demo( $filename, "#$^X\n$demo_source" );
- write_files( $imagebase );
-};
-
-sub write_files
-{
- my $imagebase = shift;
-
- for my $image (qw( left center right ))
- {
- my $file = join('', map { chr( hex( $_ ) ) } @{ $images{ $image } });
- write_file( $imagebase . "_$image" . '.gif', $file );
- }
-}
-
-sub write_file
-{
- my ($file, $contents) = @_;
-
- die "Cowardly refusing to overwrite '$file'\n" if -e $file;
- open my $out, '>', $file or die "Cannot write '$file': $!\n";
- binmode $out;
- print $out $contents;
-}
-
-__END__
-
-=head1 NAME
-
-SDL::Tutorial::Images
-
-=head1 SYNOPSIS
-
- # to read this tutorial
- $ perldoc SDL::Tutorial::Images
-
- # to create a demo animation program based on this tutorial
- $ perl -MSDL::Tutorial::Images=sdl_images.pl -e 1
-
-=head1 ANIMATING IMAGES
-
-Since you're already familiar with the concepts behind animation, it's time to
-learn how to work with images. As usual, the important point is that computer animation is just I<simulating> motion by painting several slightly different frames to the screen every second.
-
-There are two ways to vary an image on screen. One is to change its
-coordinates so it's at a slightly different position. This is very easy to do;
-it's just like animating a rectangle. The other way is to change the image
-itself so it's slightly different. This is a little more difficult, as you'll
-need to draw the alternate image beforehand somehow.
-
-=head2 Loading Images
-
-As usual, start with an L<SDL::App> object representing the image window. Then
-preload the image file. This is easy; just pass the C<name> parameter to the
-L<SDL::Surface> constructor:
-
- use SDL::Surface;
-
- my $frame = SDL::Surface->new( -name => 'frame1.png' );
-
-B<Note:> you'll need to have compiled SDL Perl (and probably SDL) to support
-JPEG and PNG files for this to work.
-
-That's it; now you have an SDL::Surface object containing the image. You can
-use the C<height()>, C<width()>, and C<bpp()> methods to retrieve its height,
-width, and bits per pixel, if you need them.
-
-=head2 Displaying Images
-
-Drawing an image onto the screen requires blitting it from one surface to
-another. (Remember, "blitting" means copying bits in memory.) The C<blit()>
-method of SDL::Surface objects comes in handy. Its arguments are a little odd,
-though. Assuming C<$app> is the SDL::App object, as usual:
-
- use SDL::Rect;
-
- my $frame_rect = SDL::Rect->new(
- -height => $frame->height(),
- -width => $frame->width(),
- -x => 0,
- -y => 0,
- );
-
- my $dest_rect = SDL::Rect->new(
- -height => $frame->height(),
- -width => $frame->width(),
- -x => 0,
- -y => 0,
- );
-
- $frame->blit( $frame_rect, $app, $dest_rect );
- $app->update( $dest_rect );
-
-Here we have two L<SDL::Rect> objects which represent rectangular regions of a
-Surface. C<$frame_rect> represents the entire area of C<$frame>, while
-C<$dest_rect> represents the area of the main window in which to blit the
-frame. This may be clearer with more descriptive variable names:
-
- $source_surface->blit(
- $area_of_source_to_blit,
- $destination_surface,
- $destination_area
- );
-
-As usual, call C<update()> on C<$app> to see the change.
-
-Requiring the source and destination Rect objects may seem tedious in this
-simple example, but it's highly useful for copying only part of surface to part
-of another. For example, animating this image is a matter of changing the C<x>
-and C<y> coordinates of C<$dest_rect>:
-
- for my $x ( 1 .. 100 )
- {
- $dest_rect->x( $x );
- $frame->blit( $frame_rect, $app, $dest_rect );
- $app->update( $dest_rect );
- }
-
-Of course, you'll have to redraw all or part of the screen to avoid artifacts,
-as discussed in the previous tutorial.
-
-=head2 Multi-Image Animation
-
-That covers moving a single image around the screen. What if you want
-something more? For example, what if you want to animate a stick figure
-walking?
-
-You'll need several frames, just as in a flip-book. Each frame should be slightly different than the one before it. It's probably handy to encapsulate all of this in a C<Walker> class:
-
- package Walker;
-
- use SDL::Surface;
-
- sub new
- {
- my ($class, @images) = @_;
- my $self = [ map { SDL::Surface->new( -name => $_ ) } @images ];
-
- bless $self, $class;
- }
-
- sub next_frame
- {
- my $self = shift;
- my $frame = shift @$self;
-
- push @$self, $frame;
- return $frame;
- }
-
-To use this class, instantiate an object:
-
- my $walker = Walker->new( 'frame1.png', 'frame2.png', 'frame3.png' );
-
-Then call C<next_frame()> within the loop:
-
- for my $x ( 1 .. 100 )
- {
- my $frame = $walker->next_frame();
-
- $dest_rect->x( $x );
- $frame->blit( $frame_rect, $app, $dest_rect );
- $app->update( $dest_rect );
- }
-
-Again, the rest of the frame drawing is missing from this example so as not to
-distract from this technique. You'll probably want to abstract the undrawing
-and redrawing into a separate subroutine so you don't have to worry about it
-every time.
-
-It'd be easy to make C<next_frame()> much smarter, selecting an image
-appropriate to the direction of travel, using a bored animation when the
-character is no longer moving, or adding other characteristics to the
-character. As you can see, the hard part of this technique is generating the
-images beforehand. That can add up to a tremendous amount of art and that's
-one reason for the popularity of 3D models... but that's another tutorial much
-further down the road.
-
-More importantly, it's time to discuss how to make these animations run more
-smoothly. More on that next time.
-
-=head1 SEE ALSO
-
-=over 4
-
-=item L<SDL::Tutorial>
-
-basic SDL tutorial
-
-=item L<SDL::Tutorial::Animation>
-
-non-image animation
-
-=back
-
-=head1 AUTHOR
-
-chromatic, E<lt>chromatic@wgz.orgE<gt>
-
-Written for and maintained by the Perl SDL project, L<http://sdl.perl.org/>.
-
-=head1 BUGS
-
-No known bugs.
-
-=head1 COPYRIGHT
-
-Copyright (c) 2004, chromatic. All rights reserved. This module is
-distributed under the same terms as Perl itself, in the hope that it is useful
-but certainly under no guarantee.
+++ /dev/null
-K 25
-svn:wc:ra_dav:version-url
-V 49
-/sdlperl/!svn/ver/1/lib/SDL/Tutorial/Animation.pm
-END
+++ /dev/null
-K 25
-svn:wc:ra_dav:version-url
-V 47
-/sdlperl/!svn/ver/1/lib/SDL/Tutorial/Drawing.pm
-END
+++ /dev/null
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/sdlperl/!svn/ver/1/lib/SDL/Tutorial/Images.pm
-END
+++ /dev/null
-/*
- * This file was generated automatically by xsubpp version 1.9508 from the
- * contents of OpenGL.xs. Do not edit this file, edit OpenGL.xs instead.
- *
- * ANY CHANGES MADE HERE WILL BE LOST!
- *
- */
-
-#line 1 "OpenGL.xs"
-//
-// OpenGL.xs
-//
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-
-#include <gl.h>
-#include <glu.h>
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#ifndef GL_ALL_CLIENT_ATTRIB_BITS
-#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFF
-#endif /* GL_ALL_CLIENT_BITS */
-
-#include "../defines.h"
-
-SV* sdl_perl_nurbs_error_hook;
-void
-sdl_perl_nurbs_error_callback ( GLenum errorCode )
-{
- ENTER_TLS_CONTEXT
- dSP;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(errorCode)));
- PUTBACK;
-
- call_sv(sdl_perl_nurbs_error_hook,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_being_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_multi_callback ( GLfloat *vec, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(PTR2IV(vec))));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_end_callback ( void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_end_callback ( void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_BEGIN)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_begin_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_BEGIN)));
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_error_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_ERROR)));
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_edge_flag_callback ( GLenum flag, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_EDGE_FLAG)));
- XPUSHs(sv_2mortal(newSViv(flag)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_vertex_callback ( double *vd, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_VERTEX)));
- XPUSHs(sv_2mortal(newSVnv(vd[0])));
- XPUSHs(sv_2mortal(newSVnv(vd[1])));
- XPUSHs(sv_2mortal(newSVnv(vd[2])));
- XPUSHs(sv_2mortal(newSVnv(vd[3])));
- XPUSHs(sv_2mortal(newSVnv(vd[4])));
- XPUSHs(sv_2mortal(newSVnv(vd[5])));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_combine_callback ( GLdouble coords[3], double *vd[4], GLfloat weight[4],
- GLdouble **out, void *cb )
-{
- SV *cmd;
- double *data;
- int width;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_COMBINE)));
- XPUSHs(sv_2mortal(newSVpvn((char*)coords,sizeof(GLdouble)*3)));
- XPUSHs(sv_2mortal(newSVpvn((char*)vd,sizeof(GLdouble*)*4)));
- XPUSHs(sv_2mortal(newSVpvn((char*)weight,sizeof(GLfloat)*4)));
- PUTBACK;
-
- if ( 1 != call_sv(cmd,G_SCALAR) ) {
- Perl_croak(aTHX_ "sdl_perl_tess_combine_callback failed");
- }
-
- data = (double*)POPp;
- width = (int)POPi;
- *out = (double*)malloc(sizeof(double)*width);
- memcpy(*out,data,sizeof(double)*width);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-#line 299 "OpenGL.c"
-#ifdef HAVE_GL
-#define XSubPPtmpAAAA 1
-
-XS(XS_SDL__OpenGL_glClearColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClearColor)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClearColor(r, g, b, a)");
- {
- double r = (double)SvNV(ST(0));
- double g = (double)SvNV(ST(1));
- double b = (double)SvNV(ST(2));
- double a = (double)SvNV(ST(3));
-#line 301 "OpenGL.xs"
- glClearColor((GLfloat)r,(GLfloat)g,(GLfloat)b,(GLfloat)a);
-#line 316 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClearIndex); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClearIndex)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClearIndex(index)");
- {
- double index = (double)SvNV(ST(0));
-#line 307 "OpenGL.xs"
- glClearIndex(index);
-#line 331 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClearDepth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClearDepth)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClearDepth(depth)");
- {
- double depth = (double)SvNV(ST(0));
-#line 313 "OpenGL.xs"
- glClearDepth(depth);
-#line 346 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClearStencil); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClearStencil)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClearStencil(s)");
- {
- int s = (int)SvIV(ST(0));
-#line 319 "OpenGL.xs"
- glClearStencil(s);
-#line 361 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClearAccum); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClearAccum)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClearAccum(r, g, b, a)");
- {
- double r = (double)SvNV(ST(0));
- double g = (double)SvNV(ST(1));
- double b = (double)SvNV(ST(2));
- double a = (double)SvNV(ST(3));
-#line 328 "OpenGL.xs"
- glClearAccum((GLfloat)r,(GLfloat)g,(GLfloat)b,(GLfloat)a);
-#line 379 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClear); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClear)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClear(m)");
- {
- GLbitfield m = (GLbitfield)SvIV(ST(0));
-#line 334 "OpenGL.xs"
- glClear(m);
-#line 394 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFlush); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFlush)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFlush()");
- {
-#line 339 "OpenGL.xs"
- glFlush();
-#line 408 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFinish); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFinish)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFinish()");
- {
-#line 344 "OpenGL.xs"
- glFinish();
-#line 422 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glRect)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glRect(r)");
- {
- SDL_Rect* r = INT2PTR(SDL_Rect *,SvIV(ST(0)));
-#line 350 "OpenGL.xs"
- glRecti(r->x,r->y,r->x+r->w,r->y+r->h);
-#line 437 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glVertex); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glVertex)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glVertex(x, y, ...)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
-#line 357 "OpenGL.xs"
- double z,w;
- if ( items == 4 ) {
- w = SvNV(ST(3));
- z = SvNV(ST(2));
- glVertex4d(x,y,z,w);
- } else if ( items == 3 ) {
- z = SvNV(ST(2));
- glVertex3d(x,y,z);
- } else {
- glVertex2d(x,y);
- }
-#line 463 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glBegin); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glBegin)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glBegin(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 373 "OpenGL.xs"
- glBegin(mode);
-#line 478 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEnd); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEnd)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEnd()");
- {
-#line 378 "OpenGL.xs"
- glEnd();
-#line 492 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEnable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEnable)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEnable(cap)");
- {
- GLenum cap = (GLenum)SvIV(ST(0));
-#line 384 "OpenGL.xs"
- glEnable(cap);
-#line 507 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDisable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDisable)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDisable(cap)");
- {
- GLenum cap = (GLenum)SvIV(ST(0));
-#line 390 "OpenGL.xs"
- glDisable(cap);
-#line 522 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glGet); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGet)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGet(param)");
- SP -= items;
- {
- GLenum param = (GLenum)SvIV(ST(0));
-#line 396 "OpenGL.xs"
- switch (param) {
- case GL_EDGE_FLAG_ARRAY:
- case GL_MAP1_TEXTURE_COORD_1:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_INDEX_LOGIC_OP:
- case GL_PACK_ALIGNMENT:
- case GL_CLIP_PLANE4:
- case GL_TEXTURE_GEN_S:
- case GL_MAP1_VERTEX_3:
- case GL_LIGHT6:
- case GL_LIGHT0:
- case GL_NORMAL_ARRAY:
- case GL_EDGE_FLAG:
- case GL_INDEX_ARRAY:
- case GL_AUTO_NORMAL:
- case GL_POLYGON_OFFSET_FILL:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_FOG:
- case GL_LIGHT2:
- case GL_UNPACK_SWAP_BYTES:
- case GL_RGBA_MODE:
- case GL_POLYGON_OFFSET_POINT:
- case GL_POINT_SMOOTH:
- case GL_ALPHA_TEST:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_COLOR_ARRAY:
- case GL_POLYGON_OFFSET_LINE:
- case GL_MAP2_NORMAL:
- case GL_MAP1_INDEX:
- case GL_PACK_LSB_FIRST:
- case GL_MAP1_TEXTURE_COORD_2:
- case GL_MAP2_VERTEX_3:
- case GL_MAP2_TEXTURE_COORD_2:
- case GL_CULL_FACE:
- case GL_DOUBLEBUFFER:
- case GL_UNPACK_LSB_FIRST:
- case GL_TEXTURE_COORD_ARRAY:
- case GL_LIGHT1:
- case GL_TEXTURE_GEN_Q:
- case GL_MAP_STENCIL:
- case GL_TEXTURE_1D:
- case GL_LIGHT4:
- case GL_LIGHTING:
- case GL_LIGHT7:
- case GL_MAP1_NORMAL:
- case GL_CLIP_PLANE0:
- case GL_TEXTURE_GEN_R:
- case GL_PACK_SWAP_BYTES:
- case GL_DEPTH_WRITEMASK:
- case GL_COLOR_LOGIC_OP:
- case GL_CLIP_PLANE5:
- case GL_NORMALIZE:
- case GL_TEXTURE_2D:
- case GL_CLIP_PLANE3:
- case GL_COLOR_MATERIAL:
- case GL_BLEND:
- case GL_CLIP_PLANE2:
- case GL_MAP1_VERTEX_4:
- case GL_DITHER:
- case GL_CLIP_PLANE1:
- case GL_MAP2_INDEX:
- case GL_POLYGON_SMOOTH:
- case GL_STEREO:
- case GL_MAP2_COLOR_4:
- case GL_LIGHT3:
- case GL_VERTEX_ARRAY:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_STENCIL_TEST:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_TEXTURE_GEN_T:
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LINE_SMOOTH:
- case GL_MAP1_COLOR_4:
- case GL_MAP2_TEXTURE_COORD_1:
- case GL_CURRENT_RASTER_POSITION_VALID:
- case GL_INDEX_MODE:
- case GL_SCISSOR_TEST:
- case GL_MAP_COLOR:
- case GL_POLYGON_STIPPLE:
- case GL_LIGHT5:
- case GL_DEPTH_TEST:
- case GL_LINE_STIPPLE:
- case GL_MAP2_VERTEX_4:
- {
- GLboolean ret[1];
- int i;
- glGetBooleanv(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_COLOR_WRITEMASK:
- {
- GLboolean ret[4];
- int i;
- glGetBooleanv(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_ZOOM_Y:
- case GL_ALPHA_TEST_REF:
- case GL_POINT_SIZE_GRANULARITY:
- case GL_CURRENT_RASTER_DISTANCE:
- case GL_ALPHA_SCALE:
- case GL_RED_BIAS:
- case GL_DEPTH_BIAS:
- case GL_FOG_DENSITY:
- case GL_GREEN_BIAS:
- case GL_DEPTH_CLEAR_VALUE:
- case GL_ALPHA_BIAS:
- case GL_FOG_END:
- case GL_GREEN_SCALE:
- case GL_BLUE_BIAS:
- case GL_DEPTH_SCALE:
- case GL_POINT_SIZE:
- case GL_POLYGON_OFFSET_FACTOR:
- case GL_ZOOM_X:
- case GL_FOG_START:
- case GL_POLYGON_OFFSET_UNITS:
- case GL_LINE_WIDTH:
- case GL_LINE_WIDTH_GRANULARITY:
- case GL_BLUE_SCALE:
- case GL_RED_SCALE:
- {
- GLdouble ret[1];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_MODELVIEW_MATRIX:
- case GL_TEXTURE_MATRIX:
- case GL_PROJECTION_MATRIX:
- {
- GLdouble ret[16];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 16; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_POINT_SIZE_RANGE:
- case GL_LINE_WIDTH_RANGE:
- case GL_MAP1_GRID_DOMAIN:
- case GL_DEPTH_RANGE:
- {
- GLdouble ret[2];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 2; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_CURRENT_NORMAL:
- {
- GLdouble ret[3];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 3; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_FOG_COLOR:
- case GL_MAP2_GRID_DOMAIN:
- case GL_CURRENT_RASTER_POSITION:
- case GL_CURRENT_COLOR:
- case GL_LIGHT_MODEL_AMBIENT:
- case GL_CURRENT_RASTER_TEXTURE_COORDS:
- case GL_TEXTURE_ENV_COLOR:
- case GL_CURRENT_RASTER_COLOR:
- case GL_CURRENT_TEXTURE_COORDS:
- case GL_COLOR_CLEAR_VALUE:
- case GL_ACCUM_CLEAR_VALUE:
- {
- GLdouble ret[4];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_CULL_FACE_MODE:
- case GL_PIXEL_MAP_I_TO_A_SIZE:
- case GL_PIXEL_MAP_A_TO_A_SIZE:
- case GL_BLUE_BITS:
- case GL_EDGE_FLAG_ARRAY_STRIDE:
- case GL_RENDER_MODE:
- case GL_FOG_MODE:
- case GL_DEPTH_FUNC:
- case GL_READ_BUFFER:
- case GL_POINT_SMOOTH_HINT:
- case GL_PACK_SKIP_PIXELS:
- case GL_STENCIL_REF:
- case GL_STENCIL_CLEAR_VALUE:
- case GL_AUX_BUFFERS:
- case GL_COLOR_MATERIAL_PARAMETER:
- case GL_ACCUM_BLUE_BITS:
- case GL_INDEX_SHIFT:
- case GL_VERTEX_ARRAY_STRIDE:
- case GL_STENCIL_PASS_DEPTH_PASS:
- case GL_CLIENT_ATTRIB_STACK_DEPTH:
- case GL_DRAW_BUFFER:
- case GL_LINE_STIPPLE_REPEAT:
- case GL_BLEND_SRC:
- case GL_PIXEL_MAP_B_TO_B_SIZE:
- case GL_MAX_PIXEL_MAP_TABLE:
- case GL_MAX_TEXTURE_SIZE:
- case GL_PIXEL_MAP_S_TO_S_SIZE:
- case GL_LOGIC_OP_MODE:
- case GL_DEPTH_BITS:
- case GL_GREEN_BITS:
- case GL_LINE_SMOOTH_HINT:
- case GL_ALPHA_TEST_FUNC:
- case GL_MAX_LIGHTS:
- case GL_FOG_HINT:
- case GL_MAX_NAME_STACK_DEPTH:
- case GL_INDEX_ARRAY_TYPE:
- case GL_TEXTURE_COORD_ARRAY_TYPE:
- case GL_COLOR_ARRAY_TYPE:
- case GL_MAX_LIST_NESTING:
- case GL_STENCIL_WRITEMASK:
- case GL_LIST_BASE:
- case GL_ACCUM_ALPHA_BITS:
- case GL_INDEX_ARRAY_STRIDE:
- case GL_PIXEL_MAP_I_TO_B_SIZE:
- case GL_INDEX_BITS:
- case GL_STENCIL_FAIL:
- case GL_UNPACK_ALIGNMENT:
- case GL_STENCIL_PASS_DEPTH_FAIL:
- case GL_ATTRIB_STACK_DEPTH:
- case GL_PACK_SKIP_ROWS:
- case GL_TEXTURE_STACK_DEPTH:
- case GL_MATRIX_MODE:
- case GL_COLOR_ARRAY_STRIDE:
- case GL_LIST_MODE:
- case GL_UNPACK_SKIP_PIXELS:
- case GL_PIXEL_MAP_G_TO_G_SIZE:
- case GL_VERTEX_ARRAY_TYPE:
- case GL_RED_BITS:
- case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
- case GL_INDEX_CLEAR_VALUE:
- case GL_PIXEL_MAP_I_TO_G_SIZE:
- case GL_ALPHA_BITS:
- case GL_PIXEL_MAP_I_TO_R_SIZE:
- case GL_COLOR_ARRAY_SIZE:
- case GL_TEXTURE_COORD_ARRAY_SIZE:
- case GL_MAP1_GRID_SEGMENTS:
- case GL_VERTEX_ARRAY_SIZE:
- case GL_PIXEL_MAP_R_TO_R_SIZE:
- case GL_TEXTURE_COORD_ARRAY_STRIDE:
- case GL_MODELVIEW_STACK_DEPTH:
- case GL_MAX_TEXTURE_STACK_DEPTH:
- case GL_PIXEL_MAP_I_TO_I_SIZE:
- case GL_FOG_INDEX:
- case GL_INDEX_WRITEMASK:
- case GL_PACK_ROW_LENGTH:
- case GL_CURRENT_INDEX:
- case GL_STENCIL_VALUE_MASK:
- case GL_UNPACK_SKIP_ROWS:
- case GL_MAX_PROJECTION_STACK_DEPTH:
- case GL_LIST_INDEX:
- case GL_STENCIL_FUNC:
- case GL_INDEX_OFFSET:
- case GL_UNPACK_ROW_LENGTH:
- case GL_COLOR_MATERIAL_FACE:
- case GL_NORMAL_ARRAY_TYPE:
- case GL_STENCIL_BITS:
- case GL_PROJECTION_STACK_DEPTH:
- case GL_CURRENT_RASTER_INDEX:
- case GL_SHADE_MODEL:
- case GL_TEXTURE_ENV_MODE:
- case GL_NORMAL_ARRAY_STRIDE:
- case GL_PERSPECTIVE_CORRECTION_HINT:
- case GL_MAX_CLIP_PLANES:
- case GL_MAX_MODELVIEW_STACK_DEPTH:
- case GL_SUBPIXEL_BITS:
- case GL_ACCUM_RED_BITS:
- case GL_BLEND_DST:
- case GL_FRONT_FACE:
- case GL_MAX_EVAL_ORDER:
- case GL_LINE_STIPPLE_PATTERN:
- case GL_NAME_STACK_DEPTH:
- case GL_MAX_ATTRIB_STACK_DEPTH:
- case GL_POLYGON_SMOOTH_HINT:
- case GL_ACCUM_GREEN_BITS:
- {
- GLint ret[1];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_POLYGON_MODE:
- case GL_MAX_VIEWPORT_DIMS:
- case GL_MAP2_GRID_SEGMENTS:
- {
- GLint ret[2];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 2; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_SCISSOR_BOX:
- case GL_VIEWPORT:
- {
- GLint ret[4];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- default:
- croak("Unknown glGet parameter!");
- }
-#line 876 "OpenGL.c"
- PUTBACK;
- return;
- }
-}
-
-XS(XS_SDL__OpenGL_glIsEnabled); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glIsEnabled)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glIsEnabled(cap)");
- {
- Uint32 cap = (Uint32)SvUV(ST(0));
- Uint32 RETVAL;
- dXSTARG;
-#line 741 "OpenGL.xs"
- RETVAL = glIsEnabled(cap);
-#line 894 "OpenGL.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glPointSize); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPointSize)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPointSize(size)");
- {
- double size = (double)SvNV(ST(0));
-#line 749 "OpenGL.xs"
- glPointSize((GLfloat)size);
-#line 910 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLineWidth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLineWidth)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLineWidth(size)");
- {
- double size = (double)SvNV(ST(0));
-#line 755 "OpenGL.xs"
- glLineWidth((GLfloat)size);
-#line 925 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLineStipple); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLineStipple)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLineStipple(factor, pattern)");
- {
- Sint32 factor = (Sint32)SvIV(ST(0));
- Uint16 pattern = (Uint16)SvUV(ST(1));
-#line 762 "OpenGL.xs"
- glLineStipple(factor,pattern);
-#line 941 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPolygonMode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPolygonMode)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPolygonMode(face, mode)");
- {
- GLenum face = (GLenum)SvIV(ST(0));
- GLenum mode = (GLenum)SvIV(ST(1));
-#line 769 "OpenGL.xs"
- glPolygonMode(face,mode);
-#line 957 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFrontFace); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFrontFace)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFrontFace(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 775 "OpenGL.xs"
- glFrontFace(mode);
-#line 972 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCullFace); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCullFace)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCullFace(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 781 "OpenGL.xs"
- glCullFace(mode);
-#line 987 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPolygonStipple); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPolygonStipple)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPolygonStipple(mask)");
- {
- char * mask = (char *)SvPV_nolen(ST(0));
-#line 787 "OpenGL.xs"
- glPolygonStipple(mask);
-#line 1002 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEdgeFlag); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEdgeFlag)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEdgeFlag(flag)");
- {
- GLenum flag = (GLenum)SvIV(ST(0));
-#line 793 "OpenGL.xs"
- glEdgeFlag(flag);
-#line 1017 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glNormal); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glNormal)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glNormal(x, y, z)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
- double z = (double)SvNV(ST(2));
-#line 801 "OpenGL.xs"
- glNormal3d(x,y,z);
-#line 1034 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEnableClientState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEnableClientState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEnableClientState(array)");
- {
- GLenum array = (GLenum)SvIV(ST(0));
-#line 807 "OpenGL.xs"
- glEnableClientState(array);
-#line 1049 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDisableClientState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDisableClientState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDisableClientState(array)");
- {
- GLenum array = (GLenum)SvIV(ST(0));
-#line 813 "OpenGL.xs"
- glDisableClientState(array);
-#line 1064 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glVertexPointer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glVertexPointer)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glVertexPointer(size, type, stride, pointer)");
- {
- int size = (int)SvIV(ST(0));
- GLenum type = (GLenum)SvIV(ST(1));
- Uint32 stride = (Uint32)SvUV(ST(2));
- char * pointer = (char *)SvPV_nolen(ST(3));
-#line 822 "OpenGL.xs"
- glVertexPointer(size,type,stride,pointer);
-#line 1082 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColorPointer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorPointer)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorPointer(size, type, stride, pointer)");
- {
- Sint32 size = (Sint32)SvIV(ST(0));
- GLenum type = (GLenum)SvIV(ST(1));
- Uint32 stride = (Uint32)SvUV(ST(2));
- char * pointer = (char *)SvPV_nolen(ST(3));
-#line 831 "OpenGL.xs"
- glColorPointer(size,type,stride,pointer);
-#line 1100 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glNormalPointer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glNormalPointer)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glNormalPointer(type, stride, pointer)");
- {
- GLenum type = (GLenum)SvIV(ST(0));
- Uint32 stride = (Uint32)SvUV(ST(1));
- char * pointer = (char *)SvPV_nolen(ST(2));
-#line 839 "OpenGL.xs"
- glNormalPointer(type,stride,pointer);
-#line 1117 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexCoordPointer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexCoordPointer)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexCoordPointer(size, type, stride, pointer)");
- {
- Sint32 size = (Sint32)SvIV(ST(0));
- GLenum type = (GLenum)SvIV(ST(1));
- Uint32 stride = (Uint32)SvUV(ST(2));
- char * pointer = (char *)SvPV_nolen(ST(3));
-#line 848 "OpenGL.xs"
- glTexCoordPointer(size,type,stride,pointer);
-#line 1135 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEdgeFlagPointer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEdgeFlagPointer)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEdgeFlagPointer(stride, pointer)");
- {
- Uint32 stride = (Uint32)SvUV(ST(0));
- char * pointer = (char *)SvPV_nolen(ST(1));
-#line 855 "OpenGL.xs"
- glEdgeFlagPointer(stride,pointer);
-#line 1151 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glArrayElement); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glArrayElement)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glArrayElement(ith)");
- {
- Uint32 ith = (Uint32)SvUV(ST(0));
-#line 861 "OpenGL.xs"
- glArrayElement(ith);
-#line 1166 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDrawElements); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDrawElements)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDrawElements(mode, count, type, indices)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- Uint32 count = (Uint32)SvUV(ST(1));
- GLenum type = (GLenum)SvIV(ST(2));
- char * indices = (char *)SvPV_nolen(ST(3));
-#line 870 "OpenGL.xs"
- glDrawElements( mode, count, type, indices);
-#line 1184 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDrawRangeElements); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDrawRangeElements)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDrawRangeElements(mode, start, end, count, type, indices)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- Uint32 start = (Uint32)SvUV(ST(1));
- Uint32 end = (Uint32)SvUV(ST(2));
- Uint32 count = (Uint32)SvUV(ST(3));
- GLenum type = (GLenum)SvIV(ST(4));
- char * indices = (char *)SvPV_nolen(ST(5));
-#line 881 "OpenGL.xs"
- glDrawRangeElements(mode,start,end,count,type,indices);
-#line 1204 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDrawArrays); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDrawArrays)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDrawArrays(mode, first, count)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- Uint32 first = (Uint32)SvUV(ST(1));
- Uint32 count = (Uint32)SvUV(ST(2));
-#line 889 "OpenGL.xs"
- glDrawArrays(mode,first,count);
-#line 1221 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glInterleavedArrays); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glInterleavedArrays)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glInterleavedArrays(format, stride, pointer)");
- {
- GLenum format = (GLenum)SvIV(ST(0));
- Uint32 stride = (Uint32)SvUV(ST(1));
- char * pointer = (char *)SvPV_nolen(ST(2));
-#line 897 "OpenGL.xs"
- glInterleavedArrays(format,stride,pointer);
-#line 1238 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPushAttrib); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPushAttrib)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPushAttrib(mask)");
- {
- GLbitfield mask = (GLbitfield)SvIV(ST(0));
-#line 903 "OpenGL.xs"
- glPushAttrib(mask);
-#line 1253 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPopAttrib); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPopAttrib)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPopAttrib()");
- {
-#line 908 "OpenGL.xs"
- glPopAttrib();
-#line 1267 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPushClientAttrib); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPushClientAttrib)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPushClientAttrib(mask)");
- {
- GLbitfield mask = (GLbitfield)SvIV(ST(0));
-#line 914 "OpenGL.xs"
- glPushClientAttrib(mask);
-#line 1282 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPopClientAttrib); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPopClientAttrib)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPopClientAttrib()");
- {
-#line 919 "OpenGL.xs"
- glPopClientAttrib();
-#line 1296 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMatrixMode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMatrixMode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMatrixMode(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 925 "OpenGL.xs"
- glMatrixMode(mode);
-#line 1311 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLoadIdentity); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLoadIdentity)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLoadIdentity()");
- {
-#line 930 "OpenGL.xs"
- glLoadIdentity();
-#line 1325 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLoadMatrix); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLoadMatrix)
-{
- dXSARGS;
- {
-#line 935 "OpenGL.xs"
- int i;
- double mat[16];
- for ( i = 0; i < 16; i++ ) {
- mat[i] = (i < items && SvNOK(ST(i)) ? SvNV(ST(i)) : 0.0 );
- }
- glLoadMatrixd(mat);
-#line 1342 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMultMatrix); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMultMatrix)
-{
- dXSARGS;
- {
-#line 945 "OpenGL.xs"
- int i;
- double mat[16];
- for ( i = 0; i < 16; i++ ) {
- mat[i] = (i < items && SvNOK(ST(i)) ? SvNV(ST(i)) : 0.0 );
- }
- glMultMatrixd(mat);
-#line 1359 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTranslate); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTranslate)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTranslate(x, y, z)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
- double z = (double)SvNV(ST(2));
-#line 958 "OpenGL.xs"
- glTranslated(x,y,z);
-#line 1376 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glRotate); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glRotate)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glRotate(angle, x, y, z)");
- {
- double angle = (double)SvNV(ST(0));
- double x = (double)SvNV(ST(1));
- double y = (double)SvNV(ST(2));
- double z = (double)SvNV(ST(3));
-#line 967 "OpenGL.xs"
- glRotated(angle,x,y,z);
-#line 1394 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glScale); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glScale)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glScale(x, y, z)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
- double z = (double)SvNV(ST(2));
-#line 975 "OpenGL.xs"
- glScaled(x,y,z);
-#line 1411 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFrustum); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFrustum)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFrustum(left, right, bottom, top, n, f)");
- {
- double left = (double)SvNV(ST(0));
- double right = (double)SvNV(ST(1));
- double bottom = (double)SvNV(ST(2));
- double top = (double)SvNV(ST(3));
- double n = (double)SvNV(ST(4));
- double f = (double)SvNV(ST(5));
-#line 986 "OpenGL.xs"
- glFrustum(left,right,bottom,top,n,f);
-#line 1431 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glOrtho); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glOrtho)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glOrtho(left, right, bottom, top, n, f)");
- {
- double left = (double)SvNV(ST(0));
- double right = (double)SvNV(ST(1));
- double bottom = (double)SvNV(ST(2));
- double top = (double)SvNV(ST(3));
- double n = (double)SvNV(ST(4));
- double f = (double)SvNV(ST(5));
-#line 997 "OpenGL.xs"
- glOrtho(left,right,bottom,top,n,f);
-#line 1451 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glViewport); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glViewport)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glViewport(x, y, width, height)");
- {
- Sint32 x = (Sint32)SvIV(ST(0));
- Sint32 y = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
-#line 1006 "OpenGL.xs"
- glViewport(x,y,width,height);
-#line 1469 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDepthRange); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDepthRange)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDepthRange(n, f)");
- {
- double n = (double)SvNV(ST(0));
- double f = (double)SvNV(ST(1));
-#line 1013 "OpenGL.xs"
- glDepthRange(n,f);
-#line 1485 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPushMatrix); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPushMatrix)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPushMatrix()");
- {
-#line 1018 "OpenGL.xs"
- glPushMatrix();
-#line 1499 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPopMatrix); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPopMatrix)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPopMatrix()");
- {
-#line 1023 "OpenGL.xs"
- glPopMatrix();
-#line 1513 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glClipPlane); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glClipPlane)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glClipPlane(plane, ...)");
- {
- GLenum plane = (GLenum)SvIV(ST(0));
-#line 1029 "OpenGL.xs"
- double v[4];
- int i;
- for (i = 0; i < 4; i++ ) {
- v[i] = (i+1 < items && SvNOK(ST(i+1))) ? SvNV(ST(i+1)) : 0.0;
- }
- glClipPlane(plane,v);
-#line 1533 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColor)
-{
- dXSARGS;
- if (items < 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColor(r, g, b, ...)");
- {
- double r = (double)SvNV(ST(0));
- double g = (double)SvNV(ST(1));
- double b = (double)SvNV(ST(2));
-#line 1042 "OpenGL.xs"
- if ( items == 4 ) {
- double a;
- a = SvNV(ST(3));
- glColor4d(r,g,b,a);
- } else {
- glColor3d(r,g,b);
- }
-#line 1556 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glIndex); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glIndex)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glIndex(c)");
- {
- Uint32 c = (Uint32)SvUV(ST(0));
-#line 1054 "OpenGL.xs"
- glIndexi(c);
-#line 1571 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glShadeModel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glShadeModel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glShadeModel(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 1060 "OpenGL.xs"
- glShadeModel(mode);
-#line 1586 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLight); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLight)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLight(light, name, ...)");
- {
- GLenum light = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
-#line 1067 "OpenGL.xs"
- int i;
- if ( items == 6 ) {
- float v[4];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glLightfv(light,name,v);
- } else if ( items == 5 ) {
- float v[3];
- for ( i = 0; i < 3; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glLightfv(light,name,v);
- } else if ( items == 3 ) {
- float v;
- v = SvNV(ST(2));
- glLightf(light,name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Light invalid arguments");
- }
-#line 1621 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLightModel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLightModel)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLightModel(pname, ...)");
- {
- GLenum pname = (GLenum)SvIV(ST(0));
-#line 1092 "OpenGL.xs"
- GLfloat vec[4];
- if ( pname == GL_LIGHT_MODEL_LOCAL_VIEWER ||
- pname == GL_LIGHT_MODEL_TWO_SIDE ||
- pname == GL_LIGHT_MODEL_COLOR_CONTROL ) {
- glLightModelf(pname,SvNV(ST(1)));
- } else if ( pname == GL_LIGHT_MODEL_AMBIENT) {
- vec[0] = SvNV(ST(1));
- vec[1] = SvNV(ST(2));
- vec[2] = SvNV(ST(3));
- vec[3] = SvNV(ST(4));
- glLightModelfv(pname,vec);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::glLightModel unknown model %d",pname);
- }
-#line 1649 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMaterial); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMaterial)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMaterial(face, name, ...)");
- {
- GLenum face = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
-#line 1112 "OpenGL.xs"
- int i;
- if ( items == 6 ) {
- float v[4];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glMaterialfv(face,name,v);
- } else if ( items == 5 ) {
- float v[3];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glMaterialfv(face,name,v);
- } else if ( items == 3 ) {
- float v;
- v = SvNV(ST(2));
- glMaterialf(face,name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Material invalid arguments");
- }
-#line 1684 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColorMaterial); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorMaterial)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorMaterial(face, mode)");
- {
- GLenum face = (GLenum)SvIV(ST(0));
- GLenum mode = (GLenum)SvIV(ST(1));
-#line 1138 "OpenGL.xs"
- glColorMaterial(face,mode);
-#line 1700 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glBlendFunc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glBlendFunc)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glBlendFunc(sfactor, dfactor)");
- {
- GLenum sfactor = (GLenum)SvIV(ST(0));
- GLenum dfactor = (GLenum)SvIV(ST(1));
-#line 1145 "OpenGL.xs"
- glBlendFunc(sfactor,dfactor);
-#line 1716 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glHint); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glHint)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glHint(target, hint)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum hint = (GLenum)SvIV(ST(1));
-#line 1153 "OpenGL.xs"
- glHint(target,hint);
-#line 1732 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFog); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFog)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFog(name, ...)");
- {
- GLenum name = (GLenum)SvIV(ST(0));
-#line 1159 "OpenGL.xs"
- if ( items == 5 ) {
- float v[4];
- v[0] = SvNV(ST(1));
- v[1] = SvNV(ST(2));
- v[2] = SvNV(ST(3));
- v[3] = SvNV(ST(4));
- glFogfv(name,v);
- } else if ( items == 2 ) {
- float v;
- v = SvNV(ST(1));
- glFogf(name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Material invalid arguments");
- }
-#line 1760 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPolygonOffset); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPolygonOffset)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPolygonOffset(factor, units)");
- {
- double factor = (double)SvNV(ST(0));
- double units = (double)SvNV(ST(1));
-#line 1179 "OpenGL.xs"
- glPolygonOffset(factor,units);
-#line 1776 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glGenLists); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGenLists)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGenLists(range)");
- {
- Uint32 range = (Uint32)SvUV(ST(0));
- Uint32 RETVAL;
- dXSTARG;
-#line 1185 "OpenGL.xs"
- RETVAL = glGenLists(range);
-#line 1793 "OpenGL.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glNewList); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glNewList)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glNewList(list, mode)");
- {
- Uint32 list = (Uint32)SvUV(ST(0));
- GLenum mode = (GLenum)SvIV(ST(1));
-#line 1194 "OpenGL.xs"
- glNewList(list,mode);
-#line 1810 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEndList); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEndList)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEndList()");
- {
-#line 1199 "OpenGL.xs"
- glEndList();
-#line 1824 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDeleteLists); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDeleteLists)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDeleteLists(base, count)");
- {
- Uint32 base = (Uint32)SvUV(ST(0));
- Uint32 count = (Uint32)SvUV(ST(1));
-#line 1206 "OpenGL.xs"
- glDeleteLists(base, count);
-#line 1840 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCallList); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCallList)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCallList(list)");
- {
- Uint32 list = (Uint32)SvUV(ST(0));
-#line 1212 "OpenGL.xs"
- glCallList(list);
-#line 1855 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glIsList); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glIsList)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glIsList(list)");
- {
- Uint32 list = (Uint32)SvUV(ST(0));
- Uint32 RETVAL;
- dXSTARG;
-#line 1218 "OpenGL.xs"
- RETVAL = glIsList(list);
-#line 1872 "OpenGL.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glListBase); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glListBase)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glListBase(base)");
- {
- Uint32 base = (Uint32)SvUV(ST(0));
-#line 1226 "OpenGL.xs"
- glListBase(base);
-#line 1888 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCallLists); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCallLists)
-{
- dXSARGS;
- {
-#line 1231 "OpenGL.xs"
- int *i, j;
- if ( items > 0 ) {
- i = (int*)safemalloc(sizeof(int)* (items));
- for ( j = 0; j < items; j++ ) {
- i[j] = SvIV(ST(j));
- }
- } else {
- Perl_croak(aTHX_ "usage: SDL::OpenGL::CallLists(type,...)");
- }
- glCallLists(items, GL_INT, i);
- safefree(i);
-#line 1910 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCallListsString); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCallListsString)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCallListsString(string)");
- {
- SV* string = ST(0);
-#line 1247 "OpenGL.xs"
- char *str;
- STRLEN len;
- str = SvPV(string,len);
- glCallLists(len,GL_BYTE,str);
-#line 1928 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glRasterPos); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glRasterPos)
-{
- dXSARGS;
- if (items < 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glRasterPos(x, y, z, ...)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
- double z = (double)SvNV(ST(2));
-#line 1258 "OpenGL.xs"
- if ( items == 4 ) {
- double w = SvNV(ST(3));
- glRasterPos4d(x,y,z,w);
- } else {
- glRasterPos3d(x,y,z);
- }
-#line 1950 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glBitmap); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glBitmap)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glBitmap(width, height, x1, y1, x2, y2, data)");
- {
- Uint32 width = (Uint32)SvUV(ST(0));
- Uint32 height = (Uint32)SvUV(ST(1));
- double x1 = (double)SvNV(ST(2));
- double y1 = (double)SvNV(ST(3));
- double x2 = (double)SvNV(ST(4));
- double y2 = (double)SvNV(ST(5));
- char * data = (char *)SvPV_nolen(ST(6));
-#line 1275 "OpenGL.xs"
- glBitmap(width,height,x1,y1,x2,y2,data);
-#line 1971 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDrawPixels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDrawPixels)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDrawPixels(width, height, format, type, pixels)");
- {
- Uint32 width = (Uint32)SvUV(ST(0));
- Uint32 height = (Uint32)SvUV(ST(1));
- GLenum format = (GLenum)SvIV(ST(2));
- GLenum type = (GLenum)SvIV(ST(3));
- char * pixels = (char *)SvPV_nolen(ST(4));
-#line 1285 "OpenGL.xs"
- glDrawPixels(width,height,format,type,pixels);
-#line 1990 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glReadPixels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glReadPixels)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glReadPixels(x, y, width, height, format, type)");
- {
- Uint32 x = (Uint32)SvUV(ST(0));
- Uint32 y = (Uint32)SvUV(ST(1));
- Uint32 height = (Uint32)SvUV(ST(3));
- Uint32 width = (Uint32)SvUV(ST(2));
- GLenum format = (GLenum)SvIV(ST(4));
- GLenum type = (GLenum)SvIV(ST(5));
- SV * RETVAL;
-#line 1297 "OpenGL.xs"
- int len, size;
- char *buf;
- size = 1; /* ALPHA, BLUE, GREEN or RED */
- if (format == GL_BGR || format == GL_RGB)
- size = 3;
- if (format == GL_BGRA || format == GL_RGBA)
- size = 4;
- len = height * width * size; /* in bytes */
- RETVAL = newSV(len); /* alloc len+1 bytes */
- SvPOK_on(RETVAL); /* make an PV */
- buf = SvPVX(RETVAL); /* get ptr to buffer */
- glReadPixels(x,y,width,height,format,type,buf);
- SvCUR_set(RETVAL, len); /* set real length */
-#line 2023 "OpenGL.c"
- ST(0) = RETVAL;
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glReadPixel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glReadPixel)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glReadPixel(x, y)");
- {
- Uint32 x = (Uint32)SvUV(ST(0));
- Uint32 y = (Uint32)SvUV(ST(1));
- AV * RETVAL;
-#line 1318 "OpenGL.xs"
- int rgba[4]; /* r,g,b,a */
- int i;
- glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,rgba);
- RETVAL = newAV();
- for ( i = 0; i < 4; i++ ) {
- av_push(RETVAL,newSViv(rgba[i]));
- }
-#line 2048 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glCopyPixels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyPixels)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyPixels(x, y, width, height, buffer)");
- {
- Sint32 x = (Sint32)SvIV(ST(0));
- Sint32 y = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- GLenum buffer = (GLenum)SvIV(ST(4));
-#line 1336 "OpenGL.xs"
- glCopyPixels(x,y,width,height,buffer);
-#line 2069 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPixelStore); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPixelStore)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPixelStore(name, param)");
- {
- Sint32 name = (Sint32)SvIV(ST(0));
- double param = (double)SvNV(ST(1));
-#line 1343 "OpenGL.xs"
- glPixelStorei(name,param);
-#line 2085 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPixelTransfer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPixelTransfer)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPixelTransfer(name, ...)");
- {
- GLenum name = (GLenum)SvIV(ST(0));
-#line 1349 "OpenGL.xs"
- switch ( name ) {
- case GL_MAP_COLOR:
- case GL_MAP_STENCIL:
- case GL_INDEX_SHIFT:
- case GL_INDEX_OFFSET:
- glPixelTransferi(name,SvIV(ST(1)));
- break;
- default:
- glPixelTransferf(name,SvNV(ST(1)));
- break;
- }
-#line 2110 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPixelMap); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPixelMap)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPixelMap(type, map, mapsize, values)");
- {
- GLenum type = (GLenum)SvIV(ST(0));
- GLenum map = (GLenum)SvIV(ST(1));
- Sint32 mapsize = (Sint32)SvIV(ST(2));
- char * values = (char *)SvPV_nolen(ST(3));
-#line 1368 "OpenGL.xs"
- switch (type) {
- case GL_UNSIGNED_INT:
- glPixelMapuiv(map,mapsize,(GLint*)values);
- break;
- case GL_UNSIGNED_SHORT:
- glPixelMapusv(map,mapsize,(GLushort*)values);
- break;
- case GL_FLOAT:
- glPixelMapfv(map,mapsize,(GLfloat*)values);
- break;
- }
-#line 2138 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPixelZoom); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPixelZoom)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPixelZoom(zoomx, zoomy)");
- {
- double zoomx = (double)SvNV(ST(0));
- double zoomy = (double)SvNV(ST(1));
-#line 1385 "OpenGL.xs"
- glPixelZoom(zoomx,zoomy);
-#line 2154 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#ifdef GL_VERSION_1_3
-#define XSubPPtmpAAAB 1
-
-XS(XS_SDL__OpenGL_glColorTable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorTable)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorTable(target, internalFormat, width, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum internalFormat = (GLenum)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- GLenum format = (GLenum)SvIV(ST(3));
- GLenum type = (GLenum)SvIV(ST(4));
- char * data = (char *)SvPV_nolen(ST(5));
-#line 1398 "OpenGL.xs"
- glColorTable(target,internalFormat,width,format,type,data);
-#line 2177 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColorTableParameter); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorTableParameter)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorTableParameter(target, name, r, g, b, a)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
- double r = (double)SvNV(ST(2));
- double g = (double)SvNV(ST(3));
- double b = (double)SvNV(ST(4));
- double a = (double)SvNV(ST(5));
-#line 1409 "OpenGL.xs"
- GLfloat vec[4];
- vec[0] = r;
- vec[1] = g;
- vec[2] = b;
- vec[3] = a;
- glColorTableParameterfv(target,name,vec);
-#line 2202 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyColorTable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyColorTable)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyColorTable(target, internalFormat, x, y, width)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum internalFormat = (GLenum)SvIV(ST(1));
- Sint32 x = (Sint32)SvIV(ST(2));
- Sint32 y = (Sint32)SvIV(ST(3));
- Uint32 width = (Uint32)SvUV(ST(4));
-#line 1424 "OpenGL.xs"
- glCopyColorTable(target,internalFormat,x,y,width);
-#line 2221 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColorSubTable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorSubTable)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorSubTable(target, start, count, format, type, data)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 start = (Uint32)SvUV(ST(1));
- Uint32 count = (Uint32)SvUV(ST(2));
- Uint32 format = (Uint32)SvUV(ST(3));
- Uint32 type = (Uint32)SvUV(ST(4));
- char * data = (char *)SvPV_nolen(ST(5));
-#line 1435 "OpenGL.xs"
- glColorSubTable(target,start,count,format,type,data);
-#line 2241 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyColorSubTable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyColorSubTable)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyColorSubTable(target, start, x, y, count)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 start = (Uint32)SvUV(ST(1));
- Sint32 x = (Sint32)SvIV(ST(2));
- Sint32 y = (Sint32)SvIV(ST(3));
- Uint32 count = (Uint32)SvUV(ST(4));
-#line 1445 "OpenGL.xs"
- glCopyColorSubTable(target,start,x,y,count);
-#line 2260 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glConvolutionFilter2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glConvolutionFilter2D)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glConvolutionFilter2D(target, internalFormat, width, height, format, type, image)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- Uint32 format = (Uint32)SvUV(ST(4));
- Uint32 type = (Uint32)SvUV(ST(5));
- char * image = (char *)SvPV_nolen(ST(6));
-#line 1457 "OpenGL.xs"
- glConvolutionFilter2D(target,internalFormat,width,height,format,type,image);
-#line 2281 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyConvolutionFilter2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyConvolutionFilter2D)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyConvolutionFilter2D(target, internalFormat, x, y, width, height)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- Sint32 x = (Sint32)SvIV(ST(2));
- Sint32 y = (Sint32)SvIV(ST(3));
- Uint32 width = (Uint32)SvUV(ST(4));
- Uint32 height = (Uint32)SvUV(ST(5));
-#line 1468 "OpenGL.xs"
- glCopyConvolutionFilter2D(target,internalFormat,x,y,width,height);
-#line 2301 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glSeparableFilter2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glSeparableFilter2D)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glSeparableFilter2D(target, internalFormat, width, height, format, type, row, column)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- Uint32 format = (Uint32)SvUV(ST(4));
- Uint32 type = (Uint32)SvUV(ST(5));
- char * row = (char *)SvPV_nolen(ST(6));
- char * column = (char *)SvPV_nolen(ST(7));
-#line 1481 "OpenGL.xs"
- glSeparableFilter2D(target,internalFormat,width,height,format,type,row,column);
-#line 2323 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glConvolutionFilter1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glConvolutionFilter1D)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glConvolutionFilter1D(target, internalFormat, width, format, type, image)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 format = (Uint32)SvUV(ST(3));
- Uint32 type = (Uint32)SvUV(ST(4));
- char * image = (char *)SvPV_nolen(ST(5));
-#line 1492 "OpenGL.xs"
- glConvolutionFilter1D(target,internalFormat,width,format,type,image);
-#line 2343 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyConvolutionFilter1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyConvolutionFilter1D)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyConvolutionFilter1D(target, internalFormat, x, y, width)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- Sint32 x = (Sint32)SvIV(ST(2));
- Sint32 y = (Sint32)SvIV(ST(3));
- Uint32 width = (Uint32)SvUV(ST(4));
-#line 1502 "OpenGL.xs"
- glCopyConvolutionFilter1D(target,internalFormat,x,y,width);
-#line 2362 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glConvolutionParameter); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glConvolutionParameter)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glConvolutionParameter(target, pname, ...)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 pname = (Uint32)SvUV(ST(1));
-#line 1509 "OpenGL.xs"
- Uint32 pi;
- GLfloat pv[4];
- switch(pname) {
- case GL_CONVOLUTION_BORDER_MODE:
- if ( items != 3 )
- Perl_croak(aTHX_ "Usage: ConvolutionParameter(target,pname,...)");
- pi = SvIV(ST(2));
- glConvolutionParameteri(target,pname,pi);
- break;
- case GL_CONVOLUTION_FILTER_SCALE:
- case GL_CONVOLUTION_FILTER_BIAS:
- if ( items != 6 )
- Perl_croak(aTHX_ "Usage: ConvolutionParameter(target,pname,...)");
- pv[0] = (GLfloat)SvNV(ST(2));
- pv[1] = (GLfloat)SvNV(ST(3));
- pv[2] = (GLfloat)SvNV(ST(4));
- pv[3] = (GLfloat)SvNV(ST(5));
- glConvolutionParameterfv(target,pname,pv);
- break;
- default:
- Perl_croak(aTHX_ "ConvolutionParameter invalid parameter");
- break;
- }
-#line 2400 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glHistogram); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glHistogram)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glHistogram(target, width, internalFormat, sink)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 width = (Uint32)SvUV(ST(1));
- Uint32 internalFormat = (Uint32)SvUV(ST(2));
- GLboolean sink = (unsigned char)SvUV(ST(3));
-#line 1540 "OpenGL.xs"
- glHistogram(target,width,internalFormat,sink);
-#line 2418 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glGetHistogram); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGetHistogram)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGetHistogram(target, reset, format, type, values)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- GLboolean reset = (unsigned char)SvUV(ST(1));
- Uint32 format = (Uint32)SvUV(ST(2));
- Uint32 type = (Uint32)SvUV(ST(3));
- char * values = (char *)SvPV_nolen(ST(4));
-#line 1550 "OpenGL.xs"
- glGetHistogram(target,reset,format,type,values);
-#line 2437 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glResetHistogram); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glResetHistogram)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glResetHistogram(target)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
-#line 1556 "OpenGL.xs"
- glResetHistogram(target);
-#line 2452 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMinmax); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMinmax)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMinmax(target, internalFormat, sink)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- Uint32 internalFormat = (Uint32)SvUV(ST(1));
- GLboolean sink = (unsigned char)SvUV(ST(2));
-#line 1564 "OpenGL.xs"
- glMinmax(target,internalFormat,sink);
-#line 2469 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glGetMinmax); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGetMinmax)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGetMinmax(target, reset, format, type, values)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
- GLboolean reset = (unsigned char)SvUV(ST(1));
- Uint32 format = (Uint32)SvUV(ST(2));
- Uint32 type = (Uint32)SvUV(ST(3));
- char * values = (char *)SvPV_nolen(ST(4));
-#line 1574 "OpenGL.xs"
- glGetMinmax(target,reset,format,type,values);
-#line 2488 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glResetMinmax); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glResetMinmax)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glResetMinmax(target)");
- {
- Uint32 target = (Uint32)SvUV(ST(0));
-#line 1580 "OpenGL.xs"
- glResetMinmax(target);
-#line 2503 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glBlendEquation); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glBlendEquation)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glBlendEquation(mode)");
- {
- Uint32 mode = (Uint32)SvUV(ST(0));
-#line 1586 "OpenGL.xs"
- glBlendEquation(mode);
-#line 2518 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif // GL_VERSION_1_3
-XS(XS_SDL__OpenGL_glTexImage2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexImage2D)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexImage2D(target, level, internalFormat, width, height, border, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 internalFormat = (Sint32)SvIV(ST(2));
- Uint32 width = (Uint32)SvUV(ST(3));
- Uint32 height = (Uint32)SvUV(ST(4));
- Sint32 border = (Sint32)SvIV(ST(5));
- GLenum format = (GLenum)SvIV(ST(6));
- GLenum type = (GLenum)SvIV(ST(7));
- char * data = (char *)SvPV_nolen(ST(8));
-#line 1602 "OpenGL.xs"
- glTexImage2D(target,level,internalFormat,width,height,border,format,type,data);
-#line 2542 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyTexImage2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyTexImage2D)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyTexImage2D(target, level, internalFormat, x, y, width, height, border)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 internalFormat = (Sint32)SvIV(ST(2));
- Sint32 x = (Sint32)SvIV(ST(3));
- Sint32 y = (Sint32)SvIV(ST(4));
- Uint32 width = (Uint32)SvUV(ST(5));
- Uint32 height = (Uint32)SvUV(ST(6));
- Sint32 border = (Sint32)SvIV(ST(7));
-#line 1615 "OpenGL.xs"
- glCopyTexImage2D(target,level,internalFormat,x,y,width,height,border);
-#line 2564 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexSubImage2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexSubImage2D)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Sint32 yoffset = (Sint32)SvIV(ST(3));
- Uint32 width = (Uint32)SvUV(ST(4));
- Uint32 height = (Uint32)SvUV(ST(5));
- GLenum format = (GLenum)SvIV(ST(6));
- GLenum type = (GLenum)SvIV(ST(7));
- char * data = (char *)SvPV_nolen(ST(8));
-#line 1629 "OpenGL.xs"
- glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,data);
-#line 2587 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyTexSubImage2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyTexSubImage2D)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Sint32 yoffset = (Sint32)SvIV(ST(3));
- Sint32 x = (Sint32)SvIV(ST(4));
- Sint32 y = (Sint32)SvIV(ST(5));
- Uint32 width = (Uint32)SvUV(ST(6));
- Uint32 height = (Uint32)SvUV(ST(7));
-#line 1642 "OpenGL.xs"
- glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
-#line 2609 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexImage1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexImage1D)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexImage1D(target, level, internalFormat, width, border, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 internalFormat = (Sint32)SvIV(ST(2));
- Uint32 width = (Uint32)SvUV(ST(3));
- Sint32 border = (Sint32)SvIV(ST(4));
- GLenum format = (GLenum)SvIV(ST(5));
- GLenum type = (GLenum)SvIV(ST(6));
- char * data = (char *)SvPV_nolen(ST(7));
-#line 1655 "OpenGL.xs"
- glTexImage1D(target,level,internalFormat,width,border,format,type,data);
-#line 2631 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexSubImage1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexSubImage1D)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexSubImage1D(target, level, xoffset, width, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Uint32 width = (Uint32)SvUV(ST(3));
- GLenum format = (GLenum)SvIV(ST(4));
- GLenum type = (GLenum)SvIV(ST(5));
- char * data = (char *)SvPV_nolen(ST(6));
-#line 1667 "OpenGL.xs"
- glTexSubImage1D(target,level,xoffset,width,format,type,data);
-#line 2652 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyTexImage1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyTexImage1D)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyTexImage1D(target, level, internalFormat, x, y, width, border)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 internalFormat = (Sint32)SvIV(ST(2));
- Sint32 x = (Sint32)SvIV(ST(3));
- Sint32 y = (Sint32)SvIV(ST(4));
- Uint32 width = (Uint32)SvUV(ST(5));
- Sint32 border = (Sint32)SvIV(ST(6));
-#line 1679 "OpenGL.xs"
- glCopyTexImage1D(target,level,internalFormat,x,y,width,border);
-#line 2673 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyTexSubImage1D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyTexSubImage1D)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyTexSubImage1D(target, level, xoffset, x, y, width)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Sint32 x = (Sint32)SvIV(ST(3));
- Sint32 y = (Sint32)SvIV(ST(4));
- Uint32 width = (Uint32)SvUV(ST(5));
-#line 1690 "OpenGL.xs"
- glCopyTexSubImage1D(target,level,xoffset,x,y,width);
-#line 2693 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#ifdef GL_VERSION_1_3
-#define XSubPPtmpAAAC 1
-
-XS(XS_SDL__OpenGL_glTexImage3D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexImage3D)
-{
- dXSARGS;
- if (items != 10)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexImage3D(target, level, internalFormat, width, height, depth, border, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 internalFormat = (Sint32)SvIV(ST(2));
- Uint32 width = (Uint32)SvUV(ST(3));
- Uint32 height = (Uint32)SvUV(ST(4));
- Uint32 depth = (Uint32)SvUV(ST(5));
- Sint32 border = (Sint32)SvIV(ST(6));
- GLenum format = (GLenum)SvIV(ST(7));
- GLenum type = (GLenum)SvIV(ST(8));
- char * data = (char *)SvPV_nolen(ST(9));
-#line 1707 "OpenGL.xs"
- glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,data);
-#line 2720 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexSubImage3D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexSubImage3D)
-{
- dXSARGS;
- if (items != 11)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Sint32 yoffset = (Sint32)SvIV(ST(3));
- Sint32 zoffset = (Sint32)SvIV(ST(4));
- Uint32 width = (Uint32)SvUV(ST(5));
- Uint32 height = (Uint32)SvUV(ST(6));
- Uint32 depth = (Uint32)SvUV(ST(7));
- GLenum format = (GLenum)SvIV(ST(8));
- GLenum type = (GLenum)SvIV(ST(9));
- char * data = (char *)SvPV_nolen(ST(10));
-#line 1723 "OpenGL.xs"
- glTexSubImage3D(target,level,xoffset,yoffset,zoffset,
- width,height,depth,format,type,data);
-#line 2746 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glCopyTexSubImage3D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glCopyTexSubImage3D)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 level = (Sint32)SvIV(ST(1));
- Sint32 xoffset = (Sint32)SvIV(ST(2));
- Sint32 yoffset = (Sint32)SvIV(ST(3));
- Sint32 zoffset = (Sint32)SvIV(ST(4));
- Sint32 x = (Sint32)SvIV(ST(5));
- Sint32 y = (Sint32)SvIV(ST(6));
- Uint32 width = (Uint32)SvUV(ST(7));
- Uint32 height = (Uint32)SvUV(ST(8));
-#line 1738 "OpenGL.xs"
- glCopyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
-#line 2769 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif // GL_VERSION_1_3
-XS(XS_SDL__OpenGL_glGenTextures); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGenTextures)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGenTextures(n)");
- {
- Uint32 n = (Uint32)SvUV(ST(0));
- AV * RETVAL;
-#line 1746 "OpenGL.xs"
- GLsizei i;
- GLuint* names;
- names = (GLuint*)safemalloc(sizeof(GLuint)*n);
- RETVAL = newAV();
- glGenTextures(n,names);
- for ( i = 0; i < n; i++ ) {
- av_push(RETVAL,newSViv(names[i]));
- }
- safefree(names);
-#line 2794 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glIsTexture); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glIsTexture)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glIsTexture(texture)");
- {
- Uint32 texture = (Uint32)SvUV(ST(0));
- GLboolean RETVAL;
- dXSTARG;
-#line 1762 "OpenGL.xs"
- RETVAL = glIsTexture(texture);
-#line 2813 "OpenGL.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glBindTexture); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glBindTexture)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glBindTexture(target, texture)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Uint32 texture = (Uint32)SvUV(ST(1));
-#line 1771 "OpenGL.xs"
- glBindTexture(target,texture);
-#line 2830 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDeleteTextures); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDeleteTextures)
-{
- dXSARGS;
- {
-#line 1776 "OpenGL.xs"
- GLuint* textures;
- int i;
- textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
- if ( textures ) {
- for ( i = 0; i < items; i++ ) {
- textures[i] = SvIV(ST(i));
- }
- }
- glDeleteTextures(items,textures);
- safefree(textures);
-#line 2851 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glAreTexturesResident); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glAreTexturesResident)
-{
- dXSARGS;
- {
- AV * RETVAL;
-#line 1790 "OpenGL.xs"
- GLuint* textures;
- GLboolean *homes;
- int i;
- RETVAL = newAV();
- textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
- homes = (GLboolean*)safemalloc(sizeof(GLboolean) * items);
- if ( textures ) {
- for ( i = 0; i < items; i++ ) {
- textures[i] = SvIV(ST(i));
- }
- }
- if ( GL_FALSE != glAreTexturesResident(items,textures,homes)) {
- for (i = 0; i < items; i++ ) {
- av_push(RETVAL,newSViv(homes[i]));
- }
- }
- safefree(homes);
- safefree(textures);
-#line 2881 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glPrioritizeTextures); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPrioritizeTextures)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPrioritizeTextures(n, names, priorities)");
- {
- Uint32 n = (Uint32)SvUV(ST(0));
- char * names = (char *)SvPV_nolen(ST(1));
- char * priorities = (char *)SvPV_nolen(ST(2));
-#line 1817 "OpenGL.xs"
- glPrioritizeTextures(n,(GLuint*)names,(const GLclampf *)priorities);
-#line 2900 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexEnv); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexEnv)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexEnv(target, name, ...)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
-#line 1824 "OpenGL.xs"
- float pv[4];
- GLint p;
- switch(name) {
- case GL_TEXTURE_ENV_MODE:
- p = SvIV(ST(2));
- glTexEnvi(target,name,p);
- break;
- case GL_TEXTURE_ENV_COLOR:
- pv[0] = SvNV(ST(2));
- pv[1] = SvNV(ST(3));
- pv[2] = SvNV(ST(4));
- pv[3] = SvNV(ST(5));
- glTexEnvfv(target,name,pv);
- break;
- }
-#line 2930 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexCoord); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexCoord)
-{
- dXSARGS;
- {
-#line 1843 "OpenGL.xs"
- double s,t,r,q;
- if ( items < 1 || items > 4 )
- Perl_croak (aTHX_ "usage: SDL::OpenGL::TexCoord(s,[t,[r,[q]]])");
- s = t = r = 0.0;
- q = 1.0;
- switch(items) {
- case 4:
- q = SvNV(ST(3));
- case 3:
- r = SvNV(ST(2));
- case 2:
- t = SvNV(ST(1));
- case 1:
- s = SvNV(ST(0));
- }
- glTexCoord4d(s,t,r,q);
-#line 2957 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexParameter); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexParameter)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexParameter(target, name, ...)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
-#line 1865 "OpenGL.xs"
- GLfloat pv[4];
- GLint p;
- switch (name) {
- case GL_TEXTURE_BORDER_COLOR:
- pv[0] = SvNV(ST(2));
- pv[1] = SvNV(ST(3));
- pv[2] = SvNV(ST(4));
- pv[3] = SvNV(ST(5));
- glTexParameterfv(target,name,pv);
- break;
- case GL_TEXTURE_PRIORITY:
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- pv[0] = SvNV(ST(2));
- glTexParameterf(target,name,pv[0]);
- break;
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- default:
- p = SvIV(ST(2));
- glTexParameteri(target,name,p);
- break;
- }
-#line 2995 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glTexGen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glTexGen)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glTexGen(coord, name, ...)");
- {
- GLenum coord = (GLenum)SvIV(ST(0));
- GLenum name = (GLenum)SvIV(ST(1));
-#line 1894 "OpenGL.xs"
- GLdouble *pv;
- GLint p;
- int i;
- switch (name) {
- case GL_TEXTURE_GEN_MODE:
- p = SvIV(ST(2));
- glTexGeni(coord,name,p);
- break;
- default:
- if ( items == 2 )
- Perl_croak(aTHX_ "usage: glTexGen(coord,name,...)");
- pv = (GLdouble*)safemalloc(sizeof(GLdouble)*(items-2));
- for ( i = 0; i < items - 2; i++ ) {
- pv[i] = SvNV(ST(i+2));
- }
- glTexGendv(coord,name,pv);
- safefree(pv);
- break;
- }
-#line 3029 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#ifdef GL_VERSION_1_3
-#define XSubPPtmpAAAD 1
-
-XS(XS_SDL__OpenGL_glActiveTextureARB); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glActiveTextureARB)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glActiveTextureARB(texUnit)");
- {
- GLenum texUnit = (GLenum)SvIV(ST(0));
-#line 1920 "OpenGL.xs"
- glActiveTextureARB(texUnit);
-#line 3047 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMultiTexCoord); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMultiTexCoord)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMultiTexCoord(texUnit, ...)");
- {
- Uint32 texUnit = (Uint32)SvUV(ST(0));
-#line 1926 "OpenGL.xs"
- double s,t,r,q;
- if ( items < 2 || items > 5 )
- Perl_croak (aTHX_ "usage: SDL::OpenGL::MultiTexCoord(tex,s,[t,[r,[q]]])");
- s = t = r = 0.0;
- q = 1.0;
- switch(items) {
- case 5:
- q = SvNV(ST(3));
- case 4:
- r = SvNV(ST(2));
- case 3:
- t = SvNV(ST(1));
- case 2:
- s = SvNV(ST(0));
- }
- glMultiTexCoord4dARB(texUnit,s,t,r,q);
-#line 3077 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif // GL_VERSION_1_3
-XS(XS_SDL__OpenGL_glDrawBuffer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDrawBuffer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDrawBuffer(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 1949 "OpenGL.xs"
- glDrawBuffer(mode);
-#line 3093 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glReadBuffer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glReadBuffer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glReadBuffer(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
-#line 1955 "OpenGL.xs"
- glReadBuffer(mode);
-#line 3108 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glIndexMask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glIndexMask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glIndexMask(mask)");
- {
- Uint32 mask = (Uint32)SvUV(ST(0));
-#line 1961 "OpenGL.xs"
- glIndexMask(mask);
-#line 3123 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glColorMask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glColorMask)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glColorMask(red, green, blue, alpha)");
- {
- GLboolean red = (unsigned char)SvUV(ST(0));
- GLboolean green = (unsigned char)SvUV(ST(1));
- GLboolean blue = (unsigned char)SvUV(ST(2));
- GLboolean alpha = (unsigned char)SvUV(ST(3));
-#line 1970 "OpenGL.xs"
- glColorMask(red,green,blue,alpha);
-#line 3141 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDepthMask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDepthMask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDepthMask(flag)");
- {
- GLboolean flag = (unsigned char)SvUV(ST(0));
-#line 1976 "OpenGL.xs"
- glDepthMask(flag);
-#line 3156 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glStencilMask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glStencilMask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glStencilMask(mask)");
- {
- Uint32 mask = (Uint32)SvUV(ST(0));
-#line 1982 "OpenGL.xs"
- glStencilMask(mask);
-#line 3171 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glScissor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glScissor)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glScissor(x, y, width, height)");
- {
- Sint32 x = (Sint32)SvIV(ST(0));
- Sint32 y = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
-#line 1991 "OpenGL.xs"
- glScissor(x,y,width,height);
-#line 3189 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glAlphaFunc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glAlphaFunc)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glAlphaFunc(func, ref)");
- {
- GLenum func = (GLenum)SvIV(ST(0));
- double ref = (double)SvNV(ST(1));
-#line 1998 "OpenGL.xs"
- glAlphaFunc(func,ref);
-#line 3205 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glStencilFunc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glStencilFunc)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glStencilFunc(func, ref, mask)");
- {
- GLenum func = (GLenum)SvIV(ST(0));
- Sint32 ref = (Sint32)SvIV(ST(1));
- Uint32 mask = (Uint32)SvUV(ST(2));
-#line 2006 "OpenGL.xs"
- glStencilFunc(func,ref,mask);
-#line 3222 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glStencilOp); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glStencilOp)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glStencilOp(fail, zfail, zpass)");
- {
- GLenum fail = (GLenum)SvIV(ST(0));
- GLenum zfail = (GLenum)SvIV(ST(1));
- GLenum zpass = (GLenum)SvIV(ST(2));
-#line 2014 "OpenGL.xs"
- glStencilOp(fail,zfail,zpass);
-#line 3239 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glDepthFunc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glDepthFunc)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glDepthFunc(func)");
- {
- GLenum func = (GLenum)SvIV(ST(0));
-#line 2020 "OpenGL.xs"
- glDepthFunc(func);
-#line 3254 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLogicOp); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLogicOp)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLogicOp(opcode)");
- {
- GLenum opcode = (GLenum)SvIV(ST(0));
-#line 2026 "OpenGL.xs"
- glLogicOp(opcode);
-#line 3269 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glAccum); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glAccum)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glAccum(op, value)");
- {
- GLenum op = (GLenum)SvIV(ST(0));
- double value = (double)SvNV(ST(1));
-#line 2033 "OpenGL.xs"
- glAccum(op,value);
-#line 3285 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMap1); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMap1)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMap1(target, u1, u2, stride, order, points)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- double u1 = (double)SvNV(ST(1));
- double u2 = (double)SvNV(ST(2));
- Sint32 stride = (Sint32)SvIV(ST(3));
- Sint32 order = (Sint32)SvIV(ST(4));
- char * points = (char *)SvPV_nolen(ST(5));
-#line 2044 "OpenGL.xs"
- glMap1d(target,u1,u2,stride,order,(double*)points);
-#line 3305 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEvalCoord1); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEvalCoord1)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEvalCoord1(u)");
- {
- double u = (double)SvNV(ST(0));
-#line 2050 "OpenGL.xs"
- glEvalCoord1d(u);
-#line 3320 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMapGrid1); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMapGrid1)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMapGrid1(n, u1, u2)");
- {
- Sint32 n = (Sint32)SvIV(ST(0));
- double u1 = (double)SvNV(ST(1));
- double u2 = (double)SvNV(ST(2));
-#line 2058 "OpenGL.xs"
- glMapGrid1d(n,u1,u2);
-#line 3337 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEvalMesh1); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEvalMesh1)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEvalMesh1(mode, p1, p2)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- Sint32 p1 = (Sint32)SvIV(ST(1));
- Sint32 p2 = (Sint32)SvIV(ST(2));
-#line 2066 "OpenGL.xs"
- glEvalMesh1(mode,p1,p2);
-#line 3354 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMap2); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMap2)
-{
- dXSARGS;
- if (items != 10)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMap2(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- double u1 = (double)SvNV(ST(1));
- double u2 = (double)SvNV(ST(2));
- Sint32 ustride = (Sint32)SvIV(ST(3));
- Sint32 uorder = (Sint32)SvIV(ST(4));
- double v1 = (double)SvNV(ST(5));
- double v2 = (double)SvNV(ST(6));
- Sint32 vstride = (Sint32)SvIV(ST(7));
- Sint32 vorder = (Sint32)SvIV(ST(8));
- char * points = (char *)SvPV_nolen(ST(9));
-#line 2081 "OpenGL.xs"
- glMap2d(target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,(double*)points);
-#line 3378 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEvalCoord2); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEvalCoord2)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEvalCoord2(u, v)");
- {
- double u = (double)SvNV(ST(0));
- double v = (double)SvNV(ST(1));
-#line 2088 "OpenGL.xs"
- glEvalCoord2d(u,v);
-#line 3394 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glMapGrid2); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glMapGrid2)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glMapGrid2(nu, u1, u2, nv, v1, v2)");
- {
- Sint32 nu = (Sint32)SvIV(ST(0));
- double u1 = (double)SvNV(ST(1));
- double u2 = (double)SvNV(ST(2));
- Sint32 nv = (Sint32)SvIV(ST(3));
- double v1 = (double)SvNV(ST(4));
- double v2 = (double)SvNV(ST(5));
-#line 2099 "OpenGL.xs"
- glMapGrid2d(nu,u1,u2,nv,v1,v2);
-#line 3414 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glEvalMesh2); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glEvalMesh2)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glEvalMesh2(mode, i1, i2, j1, j2)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- Sint32 i1 = (Sint32)SvIV(ST(1));
- Sint32 i2 = (Sint32)SvIV(ST(2));
- Sint32 j1 = (Sint32)SvIV(ST(3));
- Sint32 j2 = (Sint32)SvIV(ST(4));
-#line 2109 "OpenGL.xs"
- glEvalMesh2(mode,i1,i2,j1,j2);
-#line 3433 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glGetError); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glGetError)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glGetError()");
- {
- GLenum RETVAL;
- dXSTARG;
-#line 2114 "OpenGL.xs"
- RETVAL = glGetError();
-#line 3449 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glRenderMode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glRenderMode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glRenderMode(mode)");
- {
- GLenum mode = (GLenum)SvIV(ST(0));
- GLint RETVAL;
- dXSTARG;
-#line 2122 "OpenGL.xs"
- RETVAL = glRenderMode( mode );
-#line 3467 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_glInitNames); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glInitNames)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glInitNames()");
- {
-#line 2129 "OpenGL.xs"
- glInitNames();
-#line 3482 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPushName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPushName)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPushName(name)");
- {
- GLuint name = (GLuint)SvUV(ST(0));
-#line 2135 "OpenGL.xs"
- glPushName(name);
-#line 3497 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPopName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPopName)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPopName()");
- {
-#line 2140 "OpenGL.xs"
- glPopName();
-#line 3511 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glLoadName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glLoadName)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glLoadName(name)");
- {
- GLuint name = (GLuint)SvUV(ST(0));
-#line 2146 "OpenGL.xs"
- glLoadName(name);
-#line 3526 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glFeedbackBuffer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glFeedbackBuffer)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glFeedbackBuffer(size, type, buffer)");
- {
- GLuint size = (GLuint)SvUV(ST(0));
- GLenum type = (GLenum)SvIV(ST(1));
- float* buffer = INT2PTR(float *,SvIV(ST(2)));
-#line 2154 "OpenGL.xs"
- glFeedbackBuffer(size,type,buffer);
-#line 3543 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_glPassThrough); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_glPassThrough)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::glPassThrough(token)");
- {
- GLfloat token = (GLfloat)SvNV(ST(0));
-#line 2160 "OpenGL.xs"
- glPassThrough(token);
-#line 3558 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-#ifdef HAVE_GLU
-#define XSubPPtmpAAAE 1
-
-XS(XS_SDL__OpenGL_gluLookAt); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluLookAt)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz)");
- {
- double eyex = (double)SvNV(ST(0));
- double eyey = (double)SvNV(ST(1));
- double eyez = (double)SvNV(ST(2));
- double centerx = (double)SvNV(ST(3));
- double centery = (double)SvNV(ST(4));
- double centerz = (double)SvNV(ST(5));
- double upx = (double)SvNV(ST(6));
- double upy = (double)SvNV(ST(7));
- double upz = (double)SvNV(ST(8));
-#line 2179 "OpenGL.xs"
- gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz);
-#line 3585 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluPerspective); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluPerspective)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluPerspective(fovy, aspect, n, f)");
- {
- double fovy = (double)SvNV(ST(0));
- double aspect = (double)SvNV(ST(1));
- double n = (double)SvNV(ST(2));
- double f = (double)SvNV(ST(3));
-#line 2188 "OpenGL.xs"
- gluPerspective(fovy,aspect,n,f);
-#line 3603 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluPickMatrix); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluPickMatrix)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluPickMatrix(x, y, delx, dely, viewport)");
- {
- double x = (double)SvNV(ST(0));
- double y = (double)SvNV(ST(1));
- double delx = (double)SvNV(ST(2));
- double dely = (double)SvNV(ST(3));
- GLint* viewport = INT2PTR(GLint *,SvIV(ST(4)));
-#line 2198 "OpenGL.xs"
- gluPickMatrix(x,y,delx,dely,viewport);
-#line 3622 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluOrtho2D); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluOrtho2D)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluOrtho2D(left, right, bottom, top)");
- {
- double left = (double)SvNV(ST(0));
- double right = (double)SvNV(ST(1));
- double bottom = (double)SvNV(ST(2));
- double top = (double)SvNV(ST(3));
-#line 2207 "OpenGL.xs"
- gluOrtho2D(left,right,bottom,top);
-#line 3640 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluScaleImage); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluScaleImage)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluScaleImage(format, widthin, heightin, typein, datain, widthout, heightout, typeout, dataout)");
- {
- GLenum format = (GLenum)SvIV(ST(0));
- Uint32 widthin = (Uint32)SvUV(ST(1));
- Uint32 heightin = (Uint32)SvUV(ST(2));
- GLenum typein = (GLenum)SvIV(ST(3));
- char * datain = (char *)SvPV_nolen(ST(4));
- Uint32 widthout = (Uint32)SvUV(ST(5));
- Uint32 heightout = (Uint32)SvUV(ST(6));
- GLenum typeout = (GLenum)SvIV(ST(7));
- char * dataout = (char *)SvPV_nolen(ST(8));
- int RETVAL;
- dXSTARG;
-#line 2221 "OpenGL.xs"
- RETVAL = gluScaleImage(format,widthin,heightin,typein,datain,
- widthout,heightout,typeout,dataout);
-#line 3666 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluBuild1DMipmaps); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild1DMipmaps)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild1DMipmaps(target, internalFormat, width, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- GLenum format = (GLenum)SvIV(ST(3));
- GLenum type = (GLenum)SvIV(ST(4));
- char * data = (char *)SvPV_nolen(ST(5));
- int RETVAL;
- dXSTARG;
-#line 2235 "OpenGL.xs"
- RETVAL = gluBuild1DMipmaps(target,internalFormat,width,format,type,data);
-#line 3689 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluBuild2DMipmaps); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild2DMipmaps)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild2DMipmaps(target, internalFormat, width, height, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- GLenum format = (GLenum)SvIV(ST(4));
- GLenum type = (GLenum)SvIV(ST(5));
- char * data = (char *)SvPV_nolen(ST(6));
- int RETVAL;
- dXSTARG;
-#line 2249 "OpenGL.xs"
- RETVAL = gluBuild2DMipmaps(target,internalFormat,width,height,format,type,data);
-#line 3713 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#if HAVE_GLU_VERSION >= 12
-#define XSubPPtmpAAAF 1
-
-XS(XS_SDL__OpenGL_gluBuild3DMipmaps); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild3DMipmaps)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild3DMipmaps(target, internalFormat, width, height, depth, format, type, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- Uint32 depth = (Uint32)SvUV(ST(4));
- GLenum format = (GLenum)SvIV(ST(5));
- GLenum type = (GLenum)SvIV(ST(6));
- char * data = (char *)SvPV_nolen(ST(7));
- int RETVAL;
- dXSTARG;
-#line 2266 "OpenGL.xs"
- RETVAL = gluBuild3DMipmaps(target,internalFormat,width,height,depth,
- format,type,data);
-#line 3742 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#else
-#define XSubPPtmpAAAG 1
-
-XS(XS_SDL__OpenGL_gluBuild3DMipmaps); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild3DMipmaps)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild3DMipmaps()");
- {
-#line 2275 "OpenGL.xs"
- Perl_croak (aTHX_ "SDL::OpenGL::Build3DMipmaps requires GLU 1.2");
-#line 3760 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-#if HAVE_GLU_VERSION >= 12
-#define XSubPPtmpAAAH 1
-
-XS(XS_SDL__OpenGL_gluBuild1DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild1DMipmapLevels)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild1DMipmapLevels(target, internalFormat, width, format, type, level, base, max, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- GLenum format = (GLenum)SvIV(ST(3));
- GLenum type = (GLenum)SvIV(ST(4));
- Sint32 level = (Sint32)SvIV(ST(5));
- Sint32 base = (Sint32)SvIV(ST(6));
- Sint32 max = (Sint32)SvIV(ST(7));
- char * data = (char *)SvPV_nolen(ST(8));
- int RETVAL;
- dXSTARG;
-#line 2292 "OpenGL.xs"
- RETVAL = gluBuild1DMipmapLevels(target,internalFormat,width,
- format,type,level,base,max,data);
-#line 3790 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#else
-#define XSubPPtmpAAAI 1
-
-XS(XS_SDL__OpenGL_gluBuild1DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild1DMipmapLevels)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild1DMipmapLevels()");
- {
-#line 2301 "OpenGL.xs"
- Perl_croak(aTHX_ "SDL::OpenGL::Build1DMipmapLevels requires GLU 1.2");
-#line 3808 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-#if HAVE_GLU_VERSION >= 12
-#define XSubPPtmpAAAJ 1
-
-XS(XS_SDL__OpenGL_gluBuild2DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild2DMipmapLevels)
-{
- dXSARGS;
- if (items != 10)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild2DMipmapLevels(target, internalFormat, width, height, format, type, level, base, max, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- GLenum format = (GLenum)SvIV(ST(4));
- GLenum type = (GLenum)SvIV(ST(5));
- Sint32 level = (Sint32)SvIV(ST(6));
- Sint32 base = (Sint32)SvIV(ST(7));
- Sint32 max = (Sint32)SvIV(ST(8));
- char * data = (char *)SvPV_nolen(ST(9));
- int RETVAL;
- dXSTARG;
-#line 2319 "OpenGL.xs"
- RETVAL = gluBuild2DMipmapLevels(target,internalFormat,width,height,
- format,type,level,base,max,data);
-#line 3839 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#else
-#define XSubPPtmpAAAK 1
-
-XS(XS_SDL__OpenGL_gluBuild2DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild2DMipmapLevels)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild2DMipmapLevels()");
- {
-#line 2328 "OpenGL.xs"
- Perl_croak(aTHX_ "SDL::OpenGL::Build2DMipmapLevels requires GLU 1.2");
-#line 3857 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-#if HAVE_GLU_VERSION >= 12
-#define XSubPPtmpAAAL 1
-
-XS(XS_SDL__OpenGL_gluBuild3DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild3DMipmapLevels)
-{
- dXSARGS;
- if (items != 11)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild3DMipmapLevels(target, internalFormat, width, height, depth, format, type, level, base, max, data)");
- {
- GLenum target = (GLenum)SvIV(ST(0));
- Sint32 internalFormat = (Sint32)SvIV(ST(1));
- Uint32 width = (Uint32)SvUV(ST(2));
- Uint32 height = (Uint32)SvUV(ST(3));
- Uint32 depth = (Uint32)SvUV(ST(4));
- GLenum format = (GLenum)SvIV(ST(5));
- GLenum type = (GLenum)SvIV(ST(6));
- Sint32 level = (Sint32)SvIV(ST(7));
- Sint32 base = (Sint32)SvIV(ST(8));
- Sint32 max = (Sint32)SvIV(ST(9));
- char * data = (char *)SvPV_nolen(ST(10));
- int RETVAL;
- dXSTARG;
-#line 2347 "OpenGL.xs"
- RETVAL = gluBuild3DMipmapLevels(target,internalFormat,width,height,depth,
- format,type,level,base,max,data);
-#line 3889 "OpenGL.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#else
-#define XSubPPtmpAAAM 1
-
-XS(XS_SDL__OpenGL_gluBuild3DMipmapLevels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBuild3DMipmapLevels)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBuild3DMipmapLevels()");
- {
-#line 2356 "OpenGL.xs"
- Perl_croak(aTHX_ "SDL::OpenGL::Build3DMipmapLevels requires GLU 1.2");
-#line 3907 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-XS(XS_SDL__OpenGL_gluErrorString); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluErrorString)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluErrorString(code)");
- {
- GLenum code = (GLenum)SvIV(ST(0));
- char * RETVAL;
- dXSTARG;
-#line 2364 "OpenGL.xs"
- RETVAL = (char*)gluErrorString(code);
-#line 3925 "OpenGL.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluNewNurbsRenderer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNewNurbsRenderer)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNewNurbsRenderer()");
- {
- GLUnurbsObj * RETVAL;
- dXSTARG;
-#line 2371 "OpenGL.xs"
- RETVAL = gluNewNurbsRenderer();
-#line 3942 "OpenGL.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluDeleteNurbsRenderer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluDeleteNurbsRenderer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluDeleteNurbsRenderer(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2379 "OpenGL.xs"
- gluDeleteNurbsRenderer(obj);
-#line 3958 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluNurbsProperty); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNurbsProperty)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNurbsProperty(obj, property, value)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- GLenum property = (GLenum)SvIV(ST(1));
- double value = (double)SvNV(ST(2));
-#line 2387 "OpenGL.xs"
- gluNurbsProperty(obj,property,(float)value);
-#line 3975 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluLoadSamplingMatrices); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluLoadSamplingMatrices)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluLoadSamplingMatrices(obj, mm, pm, vp)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- char * mm = (char *)SvPV_nolen(ST(1));
- char * pm = (char *)SvPV_nolen(ST(2));
- char * vp = (char *)SvPV_nolen(ST(3));
-#line 2396 "OpenGL.xs"
- gluLoadSamplingMatrices(obj,(GLfloat*)mm,(GLfloat*)pm,(GLint*)vp);
-#line 3993 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluGetNurbsProperty); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluGetNurbsProperty)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluGetNurbsProperty(obj, property)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- GLenum property = (GLenum)SvIV(ST(1));
- double RETVAL;
- dXSTARG;
-#line 2403 "OpenGL.xs"
- float f;
- gluGetNurbsProperty(obj,property,&f);
- RETVAL = (double)f;
-#line 4013 "OpenGL.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluNurbsCallback); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNurbsCallback)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNurbsCallback(obj, which, cb)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- GLenum which = (GLenum)SvIV(ST(1));
- SV * cb = ST(2);
-#line 2415 "OpenGL.xs"
- switch(which) {
- case GLU_ERROR:
- sdl_perl_nurbs_error_hook = cb;
- gluNurbsCallback(obj,GLU_ERROR,(GLvoid*)sdl_perl_nurbs_error_callback);
- break;
-#ifdef GLU_NURBS_BEGIN
- case GLU_NURBS_BEGIN:
- case GLU_NURBS_BEGIN_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_BEGIN_DATA,
- (GLvoid*)sdl_perl_nurbs_being_callback);
- break;
- case GLU_NURBS_TEXTURE_COORD:
- case GLU_NURBS_TEXTURE_COORD_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_TEXTURE_COORD_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_COLOR:
- case GLU_NURBS_COLOR_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_COLOR_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_NORMAL:
- case GLU_NURBS_NORMAL_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_NORMAL_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_VERTEX:
- case GLU_NURBS_VERTEX_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_VERTEX_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_END:
- case GLU_NURBS_END_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_END_DATA,
- (GLvoid*)sdl_perl_nurbs_end_callback);
- break;
-#endif
- default:
- Perl_croak(aTHX_ "SDL::OpenGL::NurbsCallback - invalid type");
- }
-#line 4076 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluNurbsCallbackData); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNurbsCallbackData)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNurbsCallbackData(obj, cb)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- SV * cb = ST(1);
-#line 2467 "OpenGL.xs"
- gluNurbsCallbackData(obj,(void*)cb);
-#line 4092 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluBeginSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBeginSurface)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBeginSurface(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2473 "OpenGL.xs"
- gluBeginSurface(obj);
-#line 4107 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluEndSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluEndSurface)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluEndSurface(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2479 "OpenGL.xs"
- gluEndSurface(obj);
-#line 4122 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluNurbsSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNurbsSurface)
-{
- dXSARGS;
- if (items != 11)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNurbsSurface(obj, uknot_count, uknot, vknot_count, vknot, u_stride, v_stride, ctlarray, uorder, vorder, type)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- Sint32 uknot_count = (Sint32)SvIV(ST(1));
- char * uknot = (char *)SvPV_nolen(ST(2));
- Sint32 vknot_count = (Sint32)SvIV(ST(3));
- char * vknot = (char *)SvPV_nolen(ST(4));
- Sint32 u_stride = (Sint32)SvIV(ST(5));
- Sint32 v_stride = (Sint32)SvIV(ST(6));
- char * ctlarray = (char *)SvPV_nolen(ST(7));
- Sint32 uorder = (Sint32)SvIV(ST(8));
- Sint32 vorder = (Sint32)SvIV(ST(9));
- GLenum type = (GLenum)SvIV(ST(10));
-#line 2495 "OpenGL.xs"
- gluNurbsSurface(obj,uknot_count,(GLfloat*)uknot,vknot_count,(GLfloat*)vknot,
- u_stride,v_stride,(GLfloat*)ctlarray,uorder,vorder,type);
-#line 4148 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluBeginCurve); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBeginCurve)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBeginCurve(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2502 "OpenGL.xs"
- gluBeginCurve(obj);
-#line 4163 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluEndCurve); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluEndCurve)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluEndCurve(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2508 "OpenGL.xs"
- gluEndCurve(obj);
-#line 4178 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluNurbsCurve); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNurbsCurve)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNurbsCurve(obj, uknot_count, uknot, u_stride, ctlarray, uorder, type)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- Sint32 uknot_count = (Sint32)SvIV(ST(1));
- char * uknot = (char *)SvPV_nolen(ST(2));
- Sint32 u_stride = (Sint32)SvIV(ST(3));
- char * ctlarray = (char *)SvPV_nolen(ST(4));
- Sint32 uorder = (Sint32)SvIV(ST(5));
- GLenum type = (GLenum)SvIV(ST(6));
-#line 2520 "OpenGL.xs"
- gluNurbsCurve(obj,uknot_count,(GLfloat*)uknot,u_stride,(GLfloat*)ctlarray,
- uorder,type);
-#line 4200 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluBeginTrim); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluBeginTrim)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluBeginTrim(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2527 "OpenGL.xs"
- gluBeginTrim(obj);
-#line 4215 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluEndTrim); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluEndTrim)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluEndTrim(obj)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
-#line 2533 "OpenGL.xs"
- gluEndTrim(obj);
-#line 4230 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluPwlCurve); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluPwlCurve)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluPwlCurve(obj, count, array, stride, type)");
- {
- GLUnurbsObj * obj = INT2PTR(GLUnurbsObj *,SvIV(ST(0)));
- Sint32 count = (Sint32)SvIV(ST(1));
- char * array = (char *)SvPV_nolen(ST(2));
- Sint32 stride = (Sint32)SvIV(ST(3));
- GLenum type = (GLenum)SvIV(ST(4));
-#line 2543 "OpenGL.xs"
- gluPwlCurve(obj,count,(GLfloat*)array,stride,type);
-#line 4249 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluUnProject); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluUnProject)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluUnProject(winx, winy, winz, mm, pm, vp)");
- {
- double winx = (double)SvNV(ST(0));
- double winy = (double)SvNV(ST(1));
- double winz = (double)SvNV(ST(2));
- char * mm = (char *)SvPV_nolen(ST(3));
- char * pm = (char *)SvPV_nolen(ST(4));
- char * vp = (char *)SvPV_nolen(ST(5));
- AV * RETVAL;
-#line 2554 "OpenGL.xs"
- GLdouble objx, objy, objz;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject(winx,winy,winz,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,&objx,&objy,&objz)));
- av_push(RETVAL,newSVnv((double)objx));
- av_push(RETVAL,newSVnv((double)objy));
- av_push(RETVAL,newSVnv((double)objz));
-#line 4276 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-#ifdef GL_VERSION_1_3
-#define XSubPPtmpAAAN 1
-
-XS(XS_SDL__OpenGL_gluUnProject4); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluUnProject4)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluUnProject4(winx, winy, winz, clipw, mm, pm, vp, n, f)");
- {
- double winx = (double)SvNV(ST(0));
- double winy = (double)SvNV(ST(1));
- double winz = (double)SvNV(ST(2));
- double clipw = (double)SvNV(ST(3));
- char * mm = (char *)SvPV_nolen(ST(4));
- char * pm = (char *)SvPV_nolen(ST(5));
- char * vp = (char *)SvPV_nolen(ST(6));
- double n = (double)SvNV(ST(7));
- double f = (double)SvNV(ST(8));
- AV * RETVAL;
-#line 2579 "OpenGL.xs"
- GLdouble objx, objy, objz, objw;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject4(winx,winy,winz,clipw,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,(GLclampd)n,(GLclampd)f,
- &objx,&objy,&objz,&objw)));
- av_push(RETVAL,newSVnv((double)objx));
- av_push(RETVAL,newSVnv((double)objy));
- av_push(RETVAL,newSVnv((double)objz));
- av_push(RETVAL,newSVnv((double)objw));
-#line 4313 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-#endif // GL_VERSION_1_3
-XS(XS_SDL__OpenGL_gluProject); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluProject)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluProject(objx, objy, objz, mm, pm, vp)");
- {
- double objx = (double)SvNV(ST(0));
- double objy = (double)SvNV(ST(1));
- double objz = (double)SvNV(ST(2));
- char * mm = (char *)SvPV_nolen(ST(3));
- char * pm = (char *)SvPV_nolen(ST(4));
- char * vp = (char *)SvPV_nolen(ST(5));
- AV * RETVAL;
-#line 2602 "OpenGL.xs"
- GLdouble winx, winy, winz;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject(objx,objy,objz,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,&winx,&winy,&winz)));
- av_push(RETVAL,newSVnv((double)winx));
- av_push(RETVAL,newSVnv((double)winy));
- av_push(RETVAL,newSVnv((double)winz));
-#line 4343 "OpenGL.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-#ifdef GL_VERSION_1_2
-#define XSubPPtmpAAAO 1
-
-XS(XS_SDL__OpenGL_gluNewTess); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluNewTess)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluNewTess()");
- {
- GLUtesselator * RETVAL;
- dXSTARG;
-#line 2617 "OpenGL.xs"
- RETVAL = gluNewTess();
-#line 4364 "OpenGL.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluTessCallback); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessCallback)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessCallback(tess, type)");
- {
- GLUtesselator * tess = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- GLenum type = (GLenum)SvIV(ST(1));
-#line 2626 "OpenGL.xs"
- switch(type) {
- case GLU_TESS_BEGIN:
- case GLU_TESS_BEGIN_DATA:
- gluTessCallback(tess,GLU_TESS_BEGIN_DATA,
- (GLvoid*)sdl_perl_tess_begin_callback);
- break;
-
- case GLU_TESS_EDGE_FLAG:
- case GLU_TESS_EDGE_FLAG_DATA:
- gluTessCallback(tess,GLU_TESS_EDGE_FLAG_DATA,
- (GLvoid*)sdl_perl_tess_edge_flag_callback);
- break;
-
- case GLU_TESS_VERTEX:
- case GLU_TESS_VERTEX_DATA:
- gluTessCallback(tess,GLU_TESS_VERTEX_DATA,
- (GLvoid*)sdl_perl_tess_vertex_callback);
- break;
-
- case GLU_TESS_END:
- case GLU_TESS_END_DATA:
- gluTessCallback(tess,GLU_TESS_END_DATA,
- (GLvoid*)sdl_perl_tess_end_callback);
- break;
-
- case GLU_TESS_COMBINE:
- case GLU_TESS_COMBINE_DATA:
- gluTessCallback(tess,GLU_TESS_COMBINE_DATA,
- (GLvoid*)sdl_perl_tess_combine_callback);
- break;
-
- case GLU_TESS_ERROR:
- case GLU_TESS_ERROR_DATA:
- gluTessCallback(tess,GLU_TESS_ERROR_DATA,
- (GLvoid*)sdl_perl_tess_error_callback);
- break;
- }
-#line 4417 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessProperty); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessProperty)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessProperty(tessobj, property, value)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- Uint32 property = (Uint32)SvUV(ST(1));
- double value = (double)SvNV(ST(2));
-#line 2670 "OpenGL.xs"
- gluTessProperty(tessobj,property,value);
-#line 4434 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluGetTessProperty); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluGetTessProperty)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluGetTessProperty(tessobj, property)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- Uint32 property = (Uint32)SvUV(ST(1));
- double RETVAL;
- dXSTARG;
-#line 2677 "OpenGL.xs"
- gluGetTessProperty(tessobj,property,&RETVAL);
-#line 4452 "OpenGL.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__OpenGL_gluTessNormal); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessNormal)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessNormal(tessobj, x, y, z)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- double x = (double)SvNV(ST(1));
- double y = (double)SvNV(ST(2));
- double z = (double)SvNV(ST(3));
-#line 2688 "OpenGL.xs"
- gluTessNormal(tessobj,x,y,z);
-#line 4471 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessBeginPolygon); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessBeginPolygon)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessBeginPolygon(tessobj, cb)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- SV * cb = ST(1);
-#line 2695 "OpenGL.xs"
- gluTessBeginPolygon(tessobj,cb);
-#line 4487 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessEndPolygon); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessEndPolygon)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessEndPolygon(tessobj)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
-#line 2701 "OpenGL.xs"
- gluTessEndPolygon(tessobj);
-#line 4502 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessBeginContour); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessBeginContour)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessBeginContour(tessobj)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
-#line 2707 "OpenGL.xs"
- gluTessBeginContour(tessobj);
-#line 4517 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessEndContour); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessEndContour)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessEndContour(tessobj)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
-#line 2713 "OpenGL.xs"
- gluTessEndContour(tessobj);
-#line 4532 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluDeleteTess); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluDeleteTess)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluDeleteTess(tessobj)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
-#line 2719 "OpenGL.xs"
- gluDeleteTess(tessobj);
-#line 4547 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__OpenGL_gluTessVertex); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__OpenGL_gluTessVertex)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::OpenGL::gluTessVertex(tessobj, coords, vd)");
- {
- GLUtesselator * tessobj = INT2PTR(GLUtesselator *,SvIV(ST(0)));
- char * coords = (char *)SvPV_nolen(ST(1));
- char * vd = (char *)SvPV_nolen(ST(2));
-#line 2727 "OpenGL.xs"
- gluTessVertex(tessobj,(GLdouble*)coords,vd);
-#line 4564 "OpenGL.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-XS(boot_SDL__OpenGL); /* prototype to pass -Wmissing-prototypes */
-XS(boot_SDL__OpenGL)
-{
- dXSARGS;
- char* file = __FILE__;
-
- XS_VERSION_BOOTCHECK ;
-
-#if XSubPPtmpAAAA
- newXS("SDL::OpenGL::glClearColor", XS_SDL__OpenGL_glClearColor, file);
- newXS("SDL::OpenGL::glClearIndex", XS_SDL__OpenGL_glClearIndex, file);
- newXS("SDL::OpenGL::glClearDepth", XS_SDL__OpenGL_glClearDepth, file);
- newXS("SDL::OpenGL::glClearStencil", XS_SDL__OpenGL_glClearStencil, file);
- newXS("SDL::OpenGL::glClearAccum", XS_SDL__OpenGL_glClearAccum, file);
- newXS("SDL::OpenGL::glClear", XS_SDL__OpenGL_glClear, file);
- newXS("SDL::OpenGL::glFlush", XS_SDL__OpenGL_glFlush, file);
- newXS("SDL::OpenGL::glFinish", XS_SDL__OpenGL_glFinish, file);
- newXS("SDL::OpenGL::glRect", XS_SDL__OpenGL_glRect, file);
- newXS("SDL::OpenGL::glVertex", XS_SDL__OpenGL_glVertex, file);
- newXS("SDL::OpenGL::glBegin", XS_SDL__OpenGL_glBegin, file);
- newXS("SDL::OpenGL::glEnd", XS_SDL__OpenGL_glEnd, file);
- newXS("SDL::OpenGL::glEnable", XS_SDL__OpenGL_glEnable, file);
- newXS("SDL::OpenGL::glDisable", XS_SDL__OpenGL_glDisable, file);
- newXS("SDL::OpenGL::glGet", XS_SDL__OpenGL_glGet, file);
- newXS("SDL::OpenGL::glIsEnabled", XS_SDL__OpenGL_glIsEnabled, file);
- newXS("SDL::OpenGL::glPointSize", XS_SDL__OpenGL_glPointSize, file);
- newXS("SDL::OpenGL::glLineWidth", XS_SDL__OpenGL_glLineWidth, file);
- newXS("SDL::OpenGL::glLineStipple", XS_SDL__OpenGL_glLineStipple, file);
- newXS("SDL::OpenGL::glPolygonMode", XS_SDL__OpenGL_glPolygonMode, file);
- newXS("SDL::OpenGL::glFrontFace", XS_SDL__OpenGL_glFrontFace, file);
- newXS("SDL::OpenGL::glCullFace", XS_SDL__OpenGL_glCullFace, file);
- newXS("SDL::OpenGL::glPolygonStipple", XS_SDL__OpenGL_glPolygonStipple, file);
- newXS("SDL::OpenGL::glEdgeFlag", XS_SDL__OpenGL_glEdgeFlag, file);
- newXS("SDL::OpenGL::glNormal", XS_SDL__OpenGL_glNormal, file);
- newXS("SDL::OpenGL::glEnableClientState", XS_SDL__OpenGL_glEnableClientState, file);
- newXS("SDL::OpenGL::glDisableClientState", XS_SDL__OpenGL_glDisableClientState, file);
- newXS("SDL::OpenGL::glVertexPointer", XS_SDL__OpenGL_glVertexPointer, file);
- newXS("SDL::OpenGL::glColorPointer", XS_SDL__OpenGL_glColorPointer, file);
- newXS("SDL::OpenGL::glNormalPointer", XS_SDL__OpenGL_glNormalPointer, file);
- newXS("SDL::OpenGL::glTexCoordPointer", XS_SDL__OpenGL_glTexCoordPointer, file);
- newXS("SDL::OpenGL::glEdgeFlagPointer", XS_SDL__OpenGL_glEdgeFlagPointer, file);
- newXS("SDL::OpenGL::glArrayElement", XS_SDL__OpenGL_glArrayElement, file);
- newXS("SDL::OpenGL::glDrawElements", XS_SDL__OpenGL_glDrawElements, file);
- newXS("SDL::OpenGL::glDrawRangeElements", XS_SDL__OpenGL_glDrawRangeElements, file);
- newXS("SDL::OpenGL::glDrawArrays", XS_SDL__OpenGL_glDrawArrays, file);
- newXS("SDL::OpenGL::glInterleavedArrays", XS_SDL__OpenGL_glInterleavedArrays, file);
- newXS("SDL::OpenGL::glPushAttrib", XS_SDL__OpenGL_glPushAttrib, file);
- newXS("SDL::OpenGL::glPopAttrib", XS_SDL__OpenGL_glPopAttrib, file);
- newXS("SDL::OpenGL::glPushClientAttrib", XS_SDL__OpenGL_glPushClientAttrib, file);
- newXS("SDL::OpenGL::glPopClientAttrib", XS_SDL__OpenGL_glPopClientAttrib, file);
- newXS("SDL::OpenGL::glMatrixMode", XS_SDL__OpenGL_glMatrixMode, file);
- newXS("SDL::OpenGL::glLoadIdentity", XS_SDL__OpenGL_glLoadIdentity, file);
- newXS("SDL::OpenGL::glLoadMatrix", XS_SDL__OpenGL_glLoadMatrix, file);
- newXS("SDL::OpenGL::glMultMatrix", XS_SDL__OpenGL_glMultMatrix, file);
- newXS("SDL::OpenGL::glTranslate", XS_SDL__OpenGL_glTranslate, file);
- newXS("SDL::OpenGL::glRotate", XS_SDL__OpenGL_glRotate, file);
- newXS("SDL::OpenGL::glScale", XS_SDL__OpenGL_glScale, file);
- newXS("SDL::OpenGL::glFrustum", XS_SDL__OpenGL_glFrustum, file);
- newXS("SDL::OpenGL::glOrtho", XS_SDL__OpenGL_glOrtho, file);
- newXS("SDL::OpenGL::glViewport", XS_SDL__OpenGL_glViewport, file);
- newXS("SDL::OpenGL::glDepthRange", XS_SDL__OpenGL_glDepthRange, file);
- newXS("SDL::OpenGL::glPushMatrix", XS_SDL__OpenGL_glPushMatrix, file);
- newXS("SDL::OpenGL::glPopMatrix", XS_SDL__OpenGL_glPopMatrix, file);
- newXS("SDL::OpenGL::glClipPlane", XS_SDL__OpenGL_glClipPlane, file);
- newXS("SDL::OpenGL::glColor", XS_SDL__OpenGL_glColor, file);
- newXS("SDL::OpenGL::glIndex", XS_SDL__OpenGL_glIndex, file);
- newXS("SDL::OpenGL::glShadeModel", XS_SDL__OpenGL_glShadeModel, file);
- newXS("SDL::OpenGL::glLight", XS_SDL__OpenGL_glLight, file);
- newXS("SDL::OpenGL::glLightModel", XS_SDL__OpenGL_glLightModel, file);
- newXS("SDL::OpenGL::glMaterial", XS_SDL__OpenGL_glMaterial, file);
- newXS("SDL::OpenGL::glColorMaterial", XS_SDL__OpenGL_glColorMaterial, file);
- newXS("SDL::OpenGL::glBlendFunc", XS_SDL__OpenGL_glBlendFunc, file);
- newXS("SDL::OpenGL::glHint", XS_SDL__OpenGL_glHint, file);
- newXS("SDL::OpenGL::glFog", XS_SDL__OpenGL_glFog, file);
- newXS("SDL::OpenGL::glPolygonOffset", XS_SDL__OpenGL_glPolygonOffset, file);
- newXS("SDL::OpenGL::glGenLists", XS_SDL__OpenGL_glGenLists, file);
- newXS("SDL::OpenGL::glNewList", XS_SDL__OpenGL_glNewList, file);
- newXS("SDL::OpenGL::glEndList", XS_SDL__OpenGL_glEndList, file);
- newXS("SDL::OpenGL::glDeleteLists", XS_SDL__OpenGL_glDeleteLists, file);
- newXS("SDL::OpenGL::glCallList", XS_SDL__OpenGL_glCallList, file);
- newXS("SDL::OpenGL::glIsList", XS_SDL__OpenGL_glIsList, file);
- newXS("SDL::OpenGL::glListBase", XS_SDL__OpenGL_glListBase, file);
- newXS("SDL::OpenGL::glCallLists", XS_SDL__OpenGL_glCallLists, file);
- newXS("SDL::OpenGL::glCallListsString", XS_SDL__OpenGL_glCallListsString, file);
- newXS("SDL::OpenGL::glRasterPos", XS_SDL__OpenGL_glRasterPos, file);
- newXS("SDL::OpenGL::glBitmap", XS_SDL__OpenGL_glBitmap, file);
- newXS("SDL::OpenGL::glDrawPixels", XS_SDL__OpenGL_glDrawPixels, file);
- newXS("SDL::OpenGL::glReadPixels", XS_SDL__OpenGL_glReadPixels, file);
- newXS("SDL::OpenGL::glReadPixel", XS_SDL__OpenGL_glReadPixel, file);
- newXS("SDL::OpenGL::glCopyPixels", XS_SDL__OpenGL_glCopyPixels, file);
- newXS("SDL::OpenGL::glPixelStore", XS_SDL__OpenGL_glPixelStore, file);
- newXS("SDL::OpenGL::glPixelTransfer", XS_SDL__OpenGL_glPixelTransfer, file);
- newXS("SDL::OpenGL::glPixelMap", XS_SDL__OpenGL_glPixelMap, file);
- newXS("SDL::OpenGL::glPixelZoom", XS_SDL__OpenGL_glPixelZoom, file);
-#if XSubPPtmpAAAB
- newXS("SDL::OpenGL::glColorTable", XS_SDL__OpenGL_glColorTable, file);
- newXS("SDL::OpenGL::glColorTableParameter", XS_SDL__OpenGL_glColorTableParameter, file);
- newXS("SDL::OpenGL::glCopyColorTable", XS_SDL__OpenGL_glCopyColorTable, file);
- newXS("SDL::OpenGL::glColorSubTable", XS_SDL__OpenGL_glColorSubTable, file);
- newXS("SDL::OpenGL::glCopyColorSubTable", XS_SDL__OpenGL_glCopyColorSubTable, file);
- newXS("SDL::OpenGL::glConvolutionFilter2D", XS_SDL__OpenGL_glConvolutionFilter2D, file);
- newXS("SDL::OpenGL::glCopyConvolutionFilter2D", XS_SDL__OpenGL_glCopyConvolutionFilter2D, file);
- newXS("SDL::OpenGL::glSeparableFilter2D", XS_SDL__OpenGL_glSeparableFilter2D, file);
- newXS("SDL::OpenGL::glConvolutionFilter1D", XS_SDL__OpenGL_glConvolutionFilter1D, file);
- newXS("SDL::OpenGL::glCopyConvolutionFilter1D", XS_SDL__OpenGL_glCopyConvolutionFilter1D, file);
- newXS("SDL::OpenGL::glConvolutionParameter", XS_SDL__OpenGL_glConvolutionParameter, file);
- newXS("SDL::OpenGL::glHistogram", XS_SDL__OpenGL_glHistogram, file);
- newXS("SDL::OpenGL::glGetHistogram", XS_SDL__OpenGL_glGetHistogram, file);
- newXS("SDL::OpenGL::glResetHistogram", XS_SDL__OpenGL_glResetHistogram, file);
- newXS("SDL::OpenGL::glMinmax", XS_SDL__OpenGL_glMinmax, file);
- newXS("SDL::OpenGL::glGetMinmax", XS_SDL__OpenGL_glGetMinmax, file);
- newXS("SDL::OpenGL::glResetMinmax", XS_SDL__OpenGL_glResetMinmax, file);
- newXS("SDL::OpenGL::glBlendEquation", XS_SDL__OpenGL_glBlendEquation, file);
-#endif
- newXS("SDL::OpenGL::glTexImage2D", XS_SDL__OpenGL_glTexImage2D, file);
- newXS("SDL::OpenGL::glCopyTexImage2D", XS_SDL__OpenGL_glCopyTexImage2D, file);
- newXS("SDL::OpenGL::glTexSubImage2D", XS_SDL__OpenGL_glTexSubImage2D, file);
- newXS("SDL::OpenGL::glCopyTexSubImage2D", XS_SDL__OpenGL_glCopyTexSubImage2D, file);
- newXS("SDL::OpenGL::glTexImage1D", XS_SDL__OpenGL_glTexImage1D, file);
- newXS("SDL::OpenGL::glTexSubImage1D", XS_SDL__OpenGL_glTexSubImage1D, file);
- newXS("SDL::OpenGL::glCopyTexImage1D", XS_SDL__OpenGL_glCopyTexImage1D, file);
- newXS("SDL::OpenGL::glCopyTexSubImage1D", XS_SDL__OpenGL_glCopyTexSubImage1D, file);
-#if XSubPPtmpAAAC
- newXS("SDL::OpenGL::glTexImage3D", XS_SDL__OpenGL_glTexImage3D, file);
- newXS("SDL::OpenGL::glTexSubImage3D", XS_SDL__OpenGL_glTexSubImage3D, file);
- newXS("SDL::OpenGL::glCopyTexSubImage3D", XS_SDL__OpenGL_glCopyTexSubImage3D, file);
-#endif
- newXS("SDL::OpenGL::glGenTextures", XS_SDL__OpenGL_glGenTextures, file);
- newXS("SDL::OpenGL::glIsTexture", XS_SDL__OpenGL_glIsTexture, file);
- newXS("SDL::OpenGL::glBindTexture", XS_SDL__OpenGL_glBindTexture, file);
- newXS("SDL::OpenGL::glDeleteTextures", XS_SDL__OpenGL_glDeleteTextures, file);
- newXS("SDL::OpenGL::glAreTexturesResident", XS_SDL__OpenGL_glAreTexturesResident, file);
- newXS("SDL::OpenGL::glPrioritizeTextures", XS_SDL__OpenGL_glPrioritizeTextures, file);
- newXS("SDL::OpenGL::glTexEnv", XS_SDL__OpenGL_glTexEnv, file);
- newXS("SDL::OpenGL::glTexCoord", XS_SDL__OpenGL_glTexCoord, file);
- newXS("SDL::OpenGL::glTexParameter", XS_SDL__OpenGL_glTexParameter, file);
- newXS("SDL::OpenGL::glTexGen", XS_SDL__OpenGL_glTexGen, file);
-#if XSubPPtmpAAAD
- newXS("SDL::OpenGL::glActiveTextureARB", XS_SDL__OpenGL_glActiveTextureARB, file);
- newXS("SDL::OpenGL::glMultiTexCoord", XS_SDL__OpenGL_glMultiTexCoord, file);
-#endif
- newXS("SDL::OpenGL::glDrawBuffer", XS_SDL__OpenGL_glDrawBuffer, file);
- newXS("SDL::OpenGL::glReadBuffer", XS_SDL__OpenGL_glReadBuffer, file);
- newXS("SDL::OpenGL::glIndexMask", XS_SDL__OpenGL_glIndexMask, file);
- newXS("SDL::OpenGL::glColorMask", XS_SDL__OpenGL_glColorMask, file);
- newXS("SDL::OpenGL::glDepthMask", XS_SDL__OpenGL_glDepthMask, file);
- newXS("SDL::OpenGL::glStencilMask", XS_SDL__OpenGL_glStencilMask, file);
- newXS("SDL::OpenGL::glScissor", XS_SDL__OpenGL_glScissor, file);
- newXS("SDL::OpenGL::glAlphaFunc", XS_SDL__OpenGL_glAlphaFunc, file);
- newXS("SDL::OpenGL::glStencilFunc", XS_SDL__OpenGL_glStencilFunc, file);
- newXS("SDL::OpenGL::glStencilOp", XS_SDL__OpenGL_glStencilOp, file);
- newXS("SDL::OpenGL::glDepthFunc", XS_SDL__OpenGL_glDepthFunc, file);
- newXS("SDL::OpenGL::glLogicOp", XS_SDL__OpenGL_glLogicOp, file);
- newXS("SDL::OpenGL::glAccum", XS_SDL__OpenGL_glAccum, file);
- newXS("SDL::OpenGL::glMap1", XS_SDL__OpenGL_glMap1, file);
- newXS("SDL::OpenGL::glEvalCoord1", XS_SDL__OpenGL_glEvalCoord1, file);
- newXS("SDL::OpenGL::glMapGrid1", XS_SDL__OpenGL_glMapGrid1, file);
- newXS("SDL::OpenGL::glEvalMesh1", XS_SDL__OpenGL_glEvalMesh1, file);
- newXS("SDL::OpenGL::glMap2", XS_SDL__OpenGL_glMap2, file);
- newXS("SDL::OpenGL::glEvalCoord2", XS_SDL__OpenGL_glEvalCoord2, file);
- newXS("SDL::OpenGL::glMapGrid2", XS_SDL__OpenGL_glMapGrid2, file);
- newXS("SDL::OpenGL::glEvalMesh2", XS_SDL__OpenGL_glEvalMesh2, file);
- newXS("SDL::OpenGL::glGetError", XS_SDL__OpenGL_glGetError, file);
- newXS("SDL::OpenGL::glRenderMode", XS_SDL__OpenGL_glRenderMode, file);
- newXS("SDL::OpenGL::glInitNames", XS_SDL__OpenGL_glInitNames, file);
- newXS("SDL::OpenGL::glPushName", XS_SDL__OpenGL_glPushName, file);
- newXS("SDL::OpenGL::glPopName", XS_SDL__OpenGL_glPopName, file);
- newXS("SDL::OpenGL::glLoadName", XS_SDL__OpenGL_glLoadName, file);
- newXS("SDL::OpenGL::glFeedbackBuffer", XS_SDL__OpenGL_glFeedbackBuffer, file);
- newXS("SDL::OpenGL::glPassThrough", XS_SDL__OpenGL_glPassThrough, file);
-#endif
-#if XSubPPtmpAAAE
- newXS("SDL::OpenGL::gluLookAt", XS_SDL__OpenGL_gluLookAt, file);
- newXS("SDL::OpenGL::gluPerspective", XS_SDL__OpenGL_gluPerspective, file);
- newXS("SDL::OpenGL::gluPickMatrix", XS_SDL__OpenGL_gluPickMatrix, file);
- newXS("SDL::OpenGL::gluOrtho2D", XS_SDL__OpenGL_gluOrtho2D, file);
- newXS("SDL::OpenGL::gluScaleImage", XS_SDL__OpenGL_gluScaleImage, file);
- newXS("SDL::OpenGL::gluBuild1DMipmaps", XS_SDL__OpenGL_gluBuild1DMipmaps, file);
- newXS("SDL::OpenGL::gluBuild2DMipmaps", XS_SDL__OpenGL_gluBuild2DMipmaps, file);
-#if XSubPPtmpAAAF
- newXS("SDL::OpenGL::gluBuild3DMipmaps", XS_SDL__OpenGL_gluBuild3DMipmaps, file);
-#endif
-#if XSubPPtmpAAAG
- newXS("SDL::OpenGL::gluBuild3DMipmaps", XS_SDL__OpenGL_gluBuild3DMipmaps, file);
-#endif
-#if XSubPPtmpAAAH
- newXS("SDL::OpenGL::gluBuild1DMipmapLevels", XS_SDL__OpenGL_gluBuild1DMipmapLevels, file);
-#endif
-#if XSubPPtmpAAAI
- newXS("SDL::OpenGL::gluBuild1DMipmapLevels", XS_SDL__OpenGL_gluBuild1DMipmapLevels, file);
-#endif
-#if XSubPPtmpAAAJ
- newXS("SDL::OpenGL::gluBuild2DMipmapLevels", XS_SDL__OpenGL_gluBuild2DMipmapLevels, file);
-#endif
-#if XSubPPtmpAAAK
- newXS("SDL::OpenGL::gluBuild2DMipmapLevels", XS_SDL__OpenGL_gluBuild2DMipmapLevels, file);
-#endif
-#if XSubPPtmpAAAL
- newXS("SDL::OpenGL::gluBuild3DMipmapLevels", XS_SDL__OpenGL_gluBuild3DMipmapLevels, file);
-#endif
-#if XSubPPtmpAAAM
- newXS("SDL::OpenGL::gluBuild3DMipmapLevels", XS_SDL__OpenGL_gluBuild3DMipmapLevels, file);
-#endif
- newXS("SDL::OpenGL::gluErrorString", XS_SDL__OpenGL_gluErrorString, file);
- newXS("SDL::OpenGL::gluNewNurbsRenderer", XS_SDL__OpenGL_gluNewNurbsRenderer, file);
- newXS("SDL::OpenGL::gluDeleteNurbsRenderer", XS_SDL__OpenGL_gluDeleteNurbsRenderer, file);
- newXS("SDL::OpenGL::gluNurbsProperty", XS_SDL__OpenGL_gluNurbsProperty, file);
- newXS("SDL::OpenGL::gluLoadSamplingMatrices", XS_SDL__OpenGL_gluLoadSamplingMatrices, file);
- newXS("SDL::OpenGL::gluGetNurbsProperty", XS_SDL__OpenGL_gluGetNurbsProperty, file);
- newXS("SDL::OpenGL::gluNurbsCallback", XS_SDL__OpenGL_gluNurbsCallback, file);
- newXS("SDL::OpenGL::gluNurbsCallbackData", XS_SDL__OpenGL_gluNurbsCallbackData, file);
- newXS("SDL::OpenGL::gluBeginSurface", XS_SDL__OpenGL_gluBeginSurface, file);
- newXS("SDL::OpenGL::gluEndSurface", XS_SDL__OpenGL_gluEndSurface, file);
- newXS("SDL::OpenGL::gluNurbsSurface", XS_SDL__OpenGL_gluNurbsSurface, file);
- newXS("SDL::OpenGL::gluBeginCurve", XS_SDL__OpenGL_gluBeginCurve, file);
- newXS("SDL::OpenGL::gluEndCurve", XS_SDL__OpenGL_gluEndCurve, file);
- newXS("SDL::OpenGL::gluNurbsCurve", XS_SDL__OpenGL_gluNurbsCurve, file);
- newXS("SDL::OpenGL::gluBeginTrim", XS_SDL__OpenGL_gluBeginTrim, file);
- newXS("SDL::OpenGL::gluEndTrim", XS_SDL__OpenGL_gluEndTrim, file);
- newXS("SDL::OpenGL::gluPwlCurve", XS_SDL__OpenGL_gluPwlCurve, file);
- newXS("SDL::OpenGL::gluUnProject", XS_SDL__OpenGL_gluUnProject, file);
-#if XSubPPtmpAAAN
- newXS("SDL::OpenGL::gluUnProject4", XS_SDL__OpenGL_gluUnProject4, file);
-#endif
- newXS("SDL::OpenGL::gluProject", XS_SDL__OpenGL_gluProject, file);
-#if XSubPPtmpAAAO
- newXS("SDL::OpenGL::gluNewTess", XS_SDL__OpenGL_gluNewTess, file);
- newXS("SDL::OpenGL::gluTessCallback", XS_SDL__OpenGL_gluTessCallback, file);
- newXS("SDL::OpenGL::gluTessProperty", XS_SDL__OpenGL_gluTessProperty, file);
- newXS("SDL::OpenGL::gluGetTessProperty", XS_SDL__OpenGL_gluGetTessProperty, file);
- newXS("SDL::OpenGL::gluTessNormal", XS_SDL__OpenGL_gluTessNormal, file);
- newXS("SDL::OpenGL::gluTessBeginPolygon", XS_SDL__OpenGL_gluTessBeginPolygon, file);
- newXS("SDL::OpenGL::gluTessEndPolygon", XS_SDL__OpenGL_gluTessEndPolygon, file);
- newXS("SDL::OpenGL::gluTessBeginContour", XS_SDL__OpenGL_gluTessBeginContour, file);
- newXS("SDL::OpenGL::gluTessEndContour", XS_SDL__OpenGL_gluTessEndContour, file);
- newXS("SDL::OpenGL::gluDeleteTess", XS_SDL__OpenGL_gluDeleteTess, file);
- newXS("SDL::OpenGL::gluTessVertex", XS_SDL__OpenGL_gluTessVertex, file);
-#endif
-#endif
-
- /* Initialisation Section */
-
-#if XSubPPtmpAAAA
-#if XSubPPtmpAAAB
-#endif
-#if XSubPPtmpAAAC
-#endif
-#if XSubPPtmpAAAD
-#endif
-#endif
-#if XSubPPtmpAAAE
-#if XSubPPtmpAAAF
-#endif
-#if XSubPPtmpAAAG
-#endif
-#if XSubPPtmpAAAH
-#endif
-#if XSubPPtmpAAAI
-#endif
-#if XSubPPtmpAAAJ
-#endif
-#if XSubPPtmpAAAK
-#endif
-#if XSubPPtmpAAAL
-#endif
-#if XSubPPtmpAAAM
-#endif
-#if XSubPPtmpAAAN
-#endif
-#if XSubPPtmpAAAO
-#endif
-#endif
-#line 4846 "OpenGL.c"
-
- /* End of Initialisation Section */
-
- XSRETURN_YES;
-}
-
+++ /dev/null
-//
-// OpenGL.xs
-//
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-
-#include <gl.h>
-#include <glu.h>
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#ifndef GL_ALL_CLIENT_ATTRIB_BITS
-#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFF
-#endif /* GL_ALL_CLIENT_BITS */
-
-#include "../defines.h"
-
-SV* sdl_perl_nurbs_error_hook;
-void
-sdl_perl_nurbs_error_callback ( GLenum errorCode )
-{
- ENTER_TLS_CONTEXT
- dSP;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(errorCode)));
- PUTBACK;
-
- call_sv(sdl_perl_nurbs_error_hook,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_being_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_multi_callback ( GLfloat *vec, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(PTR2IV(vec))));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_nurbs_end_callback ( void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_end_callback ( void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_BEGIN)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_begin_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_BEGIN)));
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_error_callback ( GLenum type, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_ERROR)));
- XPUSHs(sv_2mortal(newSViv(type)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_edge_flag_callback ( GLenum flag, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_EDGE_FLAG)));
- XPUSHs(sv_2mortal(newSViv(flag)));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_vertex_callback ( double *vd, void *cb )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_VERTEX)));
- XPUSHs(sv_2mortal(newSVnv(vd[0])));
- XPUSHs(sv_2mortal(newSVnv(vd[1])));
- XPUSHs(sv_2mortal(newSVnv(vd[2])));
- XPUSHs(sv_2mortal(newSVnv(vd[3])));
- XPUSHs(sv_2mortal(newSVnv(vd[4])));
- XPUSHs(sv_2mortal(newSVnv(vd[5])));
- PUTBACK;
-
- call_sv(cmd,G_VOID);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_tess_combine_callback ( GLdouble coords[3], double *vd[4], GLfloat weight[4],
- GLdouble **out, void *cb )
-{
- SV *cmd;
- double *data;
- int width;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)cb;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(GLU_TESS_COMBINE)));
- XPUSHs(sv_2mortal(newSVpvn((char*)coords,sizeof(GLdouble)*3)));
- XPUSHs(sv_2mortal(newSVpvn((char*)vd,sizeof(GLdouble*)*4)));
- XPUSHs(sv_2mortal(newSVpvn((char*)weight,sizeof(GLfloat)*4)));
- PUTBACK;
-
- if ( 1 != call_sv(cmd,G_SCALAR) ) {
- Perl_croak(aTHX_ "sdl_perl_tess_combine_callback failed");
- }
-
- data = (double*)POPp;
- width = (int)POPi;
- *out = (double*)malloc(sizeof(double)*width);
- memcpy(*out,data,sizeof(double)*width);
-
- FREETMPS;
- LEAVE;
- LEAVE_TLS_CONTEXT
-}
-
-MODULE = SDL::OpenGL PACKAGE = SDL::OpenGL
-PROTOTYPES : DISABLE
-
-#ifdef HAVE_GL
-
-void
-glClearColor ( r, g, b, a)
- double r
- double g
- double b
- double a
- CODE:
- glClearColor((GLfloat)r,(GLfloat)g,(GLfloat)b,(GLfloat)a);
-
-void
-glClearIndex ( index )
- double index
- CODE:
- glClearIndex(index);
-
-void
-glClearDepth ( depth )
- double depth
- CODE:
- glClearDepth(depth);
-
-void
-glClearStencil ( s )
- int s
- CODE:
- glClearStencil(s);
-
-void
-glClearAccum ( r, g, b, a )
- double r
- double g
- double b
- double a
- CODE:
- glClearAccum((GLfloat)r,(GLfloat)g,(GLfloat)b,(GLfloat)a);
-
-void
-glClear ( m )
- GLbitfield m
- CODE:
- glClear(m);
-
-void
-glFlush ()
- CODE:
- glFlush();
-
-void
-glFinish ()
- CODE:
- glFinish();
-
-void
-glRect ( r )
- SDL_Rect* r
- CODE:
- glRecti(r->x,r->y,r->x+r->w,r->y+r->h);
-
-void
-glVertex ( x, y, ... )
- double x
- double y
- CODE:
- double z,w;
- if ( items == 4 ) {
- w = SvNV(ST(3));
- z = SvNV(ST(2));
- glVertex4d(x,y,z,w);
- } else if ( items == 3 ) {
- z = SvNV(ST(2));
- glVertex3d(x,y,z);
- } else {
- glVertex2d(x,y);
- }
-
-void
-glBegin ( mode )
- GLenum mode
- CODE:
- glBegin(mode);
-
-void
-glEnd ()
- CODE:
- glEnd();
-
-void
-glEnable ( cap )
- GLenum cap
- CODE:
- glEnable(cap);
-
-void
-glDisable ( cap )
- GLenum cap
- CODE:
- glDisable(cap);
-
-void
-glGet ( param )
- GLenum param
- PPCODE:
- switch (param) {
- case GL_EDGE_FLAG_ARRAY:
- case GL_MAP1_TEXTURE_COORD_1:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_INDEX_LOGIC_OP:
- case GL_PACK_ALIGNMENT:
- case GL_CLIP_PLANE4:
- case GL_TEXTURE_GEN_S:
- case GL_MAP1_VERTEX_3:
- case GL_LIGHT6:
- case GL_LIGHT0:
- case GL_NORMAL_ARRAY:
- case GL_EDGE_FLAG:
- case GL_INDEX_ARRAY:
- case GL_AUTO_NORMAL:
- case GL_POLYGON_OFFSET_FILL:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_FOG:
- case GL_LIGHT2:
- case GL_UNPACK_SWAP_BYTES:
- case GL_RGBA_MODE:
- case GL_POLYGON_OFFSET_POINT:
- case GL_POINT_SMOOTH:
- case GL_ALPHA_TEST:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_COLOR_ARRAY:
- case GL_POLYGON_OFFSET_LINE:
- case GL_MAP2_NORMAL:
- case GL_MAP1_INDEX:
- case GL_PACK_LSB_FIRST:
- case GL_MAP1_TEXTURE_COORD_2:
- case GL_MAP2_VERTEX_3:
- case GL_MAP2_TEXTURE_COORD_2:
- case GL_CULL_FACE:
- case GL_DOUBLEBUFFER:
- case GL_UNPACK_LSB_FIRST:
- case GL_TEXTURE_COORD_ARRAY:
- case GL_LIGHT1:
- case GL_TEXTURE_GEN_Q:
- case GL_MAP_STENCIL:
- case GL_TEXTURE_1D:
- case GL_LIGHT4:
- case GL_LIGHTING:
- case GL_LIGHT7:
- case GL_MAP1_NORMAL:
- case GL_CLIP_PLANE0:
- case GL_TEXTURE_GEN_R:
- case GL_PACK_SWAP_BYTES:
- case GL_DEPTH_WRITEMASK:
- case GL_COLOR_LOGIC_OP:
- case GL_CLIP_PLANE5:
- case GL_NORMALIZE:
- case GL_TEXTURE_2D:
- case GL_CLIP_PLANE3:
- case GL_COLOR_MATERIAL:
- case GL_BLEND:
- case GL_CLIP_PLANE2:
- case GL_MAP1_VERTEX_4:
- case GL_DITHER:
- case GL_CLIP_PLANE1:
- case GL_MAP2_INDEX:
- case GL_POLYGON_SMOOTH:
- case GL_STEREO:
- case GL_MAP2_COLOR_4:
- case GL_LIGHT3:
- case GL_VERTEX_ARRAY:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_STENCIL_TEST:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_TEXTURE_GEN_T:
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LINE_SMOOTH:
- case GL_MAP1_COLOR_4:
- case GL_MAP2_TEXTURE_COORD_1:
- case GL_CURRENT_RASTER_POSITION_VALID:
- case GL_INDEX_MODE:
- case GL_SCISSOR_TEST:
- case GL_MAP_COLOR:
- case GL_POLYGON_STIPPLE:
- case GL_LIGHT5:
- case GL_DEPTH_TEST:
- case GL_LINE_STIPPLE:
- case GL_MAP2_VERTEX_4:
- {
- GLboolean ret[1];
- int i;
- glGetBooleanv(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_COLOR_WRITEMASK:
- {
- GLboolean ret[4];
- int i;
- glGetBooleanv(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_ZOOM_Y:
- case GL_ALPHA_TEST_REF:
- case GL_POINT_SIZE_GRANULARITY:
- case GL_CURRENT_RASTER_DISTANCE:
- case GL_ALPHA_SCALE:
- case GL_RED_BIAS:
- case GL_DEPTH_BIAS:
- case GL_FOG_DENSITY:
- case GL_GREEN_BIAS:
- case GL_DEPTH_CLEAR_VALUE:
- case GL_ALPHA_BIAS:
- case GL_FOG_END:
- case GL_GREEN_SCALE:
- case GL_BLUE_BIAS:
- case GL_DEPTH_SCALE:
- case GL_POINT_SIZE:
- case GL_POLYGON_OFFSET_FACTOR:
- case GL_ZOOM_X:
- case GL_FOG_START:
- case GL_POLYGON_OFFSET_UNITS:
- case GL_LINE_WIDTH:
- case GL_LINE_WIDTH_GRANULARITY:
- case GL_BLUE_SCALE:
- case GL_RED_SCALE:
- {
- GLdouble ret[1];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_MODELVIEW_MATRIX:
- case GL_TEXTURE_MATRIX:
- case GL_PROJECTION_MATRIX:
- {
- GLdouble ret[16];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 16; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_POINT_SIZE_RANGE:
- case GL_LINE_WIDTH_RANGE:
- case GL_MAP1_GRID_DOMAIN:
- case GL_DEPTH_RANGE:
- {
- GLdouble ret[2];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 2; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_CURRENT_NORMAL:
- {
- GLdouble ret[3];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 3; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_FOG_COLOR:
- case GL_MAP2_GRID_DOMAIN:
- case GL_CURRENT_RASTER_POSITION:
- case GL_CURRENT_COLOR:
- case GL_LIGHT_MODEL_AMBIENT:
- case GL_CURRENT_RASTER_TEXTURE_COORDS:
- case GL_TEXTURE_ENV_COLOR:
- case GL_CURRENT_RASTER_COLOR:
- case GL_CURRENT_TEXTURE_COORDS:
- case GL_COLOR_CLEAR_VALUE:
- case GL_ACCUM_CLEAR_VALUE:
- {
- GLdouble ret[4];
- int i;
- glGetDoublev(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSVnv(ret[i])));
- }
- break;
- }
- case GL_CULL_FACE_MODE:
- case GL_PIXEL_MAP_I_TO_A_SIZE:
- case GL_PIXEL_MAP_A_TO_A_SIZE:
- case GL_BLUE_BITS:
- case GL_EDGE_FLAG_ARRAY_STRIDE:
- case GL_RENDER_MODE:
- case GL_FOG_MODE:
- case GL_DEPTH_FUNC:
- case GL_READ_BUFFER:
- case GL_POINT_SMOOTH_HINT:
- case GL_PACK_SKIP_PIXELS:
- case GL_STENCIL_REF:
- case GL_STENCIL_CLEAR_VALUE:
- case GL_AUX_BUFFERS:
- case GL_COLOR_MATERIAL_PARAMETER:
- case GL_ACCUM_BLUE_BITS:
- case GL_INDEX_SHIFT:
- case GL_VERTEX_ARRAY_STRIDE:
- case GL_STENCIL_PASS_DEPTH_PASS:
- case GL_CLIENT_ATTRIB_STACK_DEPTH:
- case GL_DRAW_BUFFER:
- case GL_LINE_STIPPLE_REPEAT:
- case GL_BLEND_SRC:
- case GL_PIXEL_MAP_B_TO_B_SIZE:
- case GL_MAX_PIXEL_MAP_TABLE:
- case GL_MAX_TEXTURE_SIZE:
- case GL_PIXEL_MAP_S_TO_S_SIZE:
- case GL_LOGIC_OP_MODE:
- case GL_DEPTH_BITS:
- case GL_GREEN_BITS:
- case GL_LINE_SMOOTH_HINT:
- case GL_ALPHA_TEST_FUNC:
- case GL_MAX_LIGHTS:
- case GL_FOG_HINT:
- case GL_MAX_NAME_STACK_DEPTH:
- case GL_INDEX_ARRAY_TYPE:
- case GL_TEXTURE_COORD_ARRAY_TYPE:
- case GL_COLOR_ARRAY_TYPE:
- case GL_MAX_LIST_NESTING:
- case GL_STENCIL_WRITEMASK:
- case GL_LIST_BASE:
- case GL_ACCUM_ALPHA_BITS:
- case GL_INDEX_ARRAY_STRIDE:
- case GL_PIXEL_MAP_I_TO_B_SIZE:
- case GL_INDEX_BITS:
- case GL_STENCIL_FAIL:
- case GL_UNPACK_ALIGNMENT:
- case GL_STENCIL_PASS_DEPTH_FAIL:
- case GL_ATTRIB_STACK_DEPTH:
- case GL_PACK_SKIP_ROWS:
- case GL_TEXTURE_STACK_DEPTH:
- case GL_MATRIX_MODE:
- case GL_COLOR_ARRAY_STRIDE:
- case GL_LIST_MODE:
- case GL_UNPACK_SKIP_PIXELS:
- case GL_PIXEL_MAP_G_TO_G_SIZE:
- case GL_VERTEX_ARRAY_TYPE:
- case GL_RED_BITS:
- case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
- case GL_INDEX_CLEAR_VALUE:
- case GL_PIXEL_MAP_I_TO_G_SIZE:
- case GL_ALPHA_BITS:
- case GL_PIXEL_MAP_I_TO_R_SIZE:
- case GL_COLOR_ARRAY_SIZE:
- case GL_TEXTURE_COORD_ARRAY_SIZE:
- case GL_MAP1_GRID_SEGMENTS:
- case GL_VERTEX_ARRAY_SIZE:
- case GL_PIXEL_MAP_R_TO_R_SIZE:
- case GL_TEXTURE_COORD_ARRAY_STRIDE:
- case GL_MODELVIEW_STACK_DEPTH:
- case GL_MAX_TEXTURE_STACK_DEPTH:
- case GL_PIXEL_MAP_I_TO_I_SIZE:
- case GL_FOG_INDEX:
- case GL_INDEX_WRITEMASK:
- case GL_PACK_ROW_LENGTH:
- case GL_CURRENT_INDEX:
- case GL_STENCIL_VALUE_MASK:
- case GL_UNPACK_SKIP_ROWS:
- case GL_MAX_PROJECTION_STACK_DEPTH:
- case GL_LIST_INDEX:
- case GL_STENCIL_FUNC:
- case GL_INDEX_OFFSET:
- case GL_UNPACK_ROW_LENGTH:
- case GL_COLOR_MATERIAL_FACE:
- case GL_NORMAL_ARRAY_TYPE:
- case GL_STENCIL_BITS:
- case GL_PROJECTION_STACK_DEPTH:
- case GL_CURRENT_RASTER_INDEX:
- case GL_SHADE_MODEL:
- case GL_TEXTURE_ENV_MODE:
- case GL_NORMAL_ARRAY_STRIDE:
- case GL_PERSPECTIVE_CORRECTION_HINT:
- case GL_MAX_CLIP_PLANES:
- case GL_MAX_MODELVIEW_STACK_DEPTH:
- case GL_SUBPIXEL_BITS:
- case GL_ACCUM_RED_BITS:
- case GL_BLEND_DST:
- case GL_FRONT_FACE:
- case GL_MAX_EVAL_ORDER:
- case GL_LINE_STIPPLE_PATTERN:
- case GL_NAME_STACK_DEPTH:
- case GL_MAX_ATTRIB_STACK_DEPTH:
- case GL_POLYGON_SMOOTH_HINT:
- case GL_ACCUM_GREEN_BITS:
- {
- GLint ret[1];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 1; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_POLYGON_MODE:
- case GL_MAX_VIEWPORT_DIMS:
- case GL_MAP2_GRID_SEGMENTS:
- {
- GLint ret[2];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 2; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- case GL_SCISSOR_BOX:
- case GL_VIEWPORT:
- {
- GLint ret[4];
- int i;
- glGetIntegerv(param, ret);
-
- for (i = 0; i < 4; i++) {
- XPUSHs(sv_2mortal(newSViv(ret[i])));
- }
- break;
- }
- default:
- croak("Unknown glGet parameter!");
- }
-
-
-Uint32
-glIsEnabled ( cap )
- Uint32 cap
- CODE:
- RETVAL = glIsEnabled(cap);
- OUTPUT:
- RETVAL
-
-void
-glPointSize ( size )
- double size
- CODE:
- glPointSize((GLfloat)size);
-
-void
-glLineWidth ( size )
- double size
- CODE:
- glLineWidth((GLfloat)size);
-
-void
-glLineStipple ( factor, pattern )
- Sint32 factor
- Uint16 pattern
- CODE:
- glLineStipple(factor,pattern);
-
-void
-glPolygonMode ( face, mode )
- GLenum face
- GLenum mode
- CODE:
- glPolygonMode(face,mode);
-
-void
-glFrontFace ( mode )
- GLenum mode
- CODE:
- glFrontFace(mode);
-
-void
-glCullFace ( mode )
- GLenum mode
- CODE:
- glCullFace(mode);
-
-void
-glPolygonStipple ( mask )
- char *mask
- CODE:
- glPolygonStipple(mask);
-
-void
-glEdgeFlag ( flag )
- GLenum flag
- CODE:
- glEdgeFlag(flag);
-
-void
-glNormal ( x, y, z )
- double x
- double y
- double z
- CODE:
- glNormal3d(x,y,z);
-
-void
-glEnableClientState ( array )
- GLenum array
- CODE:
- glEnableClientState(array);
-
-void
-glDisableClientState ( array )
- GLenum array
- CODE:
- glDisableClientState(array);
-
-void
-glVertexPointer ( size, type, stride, pointer)
- int size
- GLenum type
- Uint32 stride
- char *pointer
- CODE:
- glVertexPointer(size,type,stride,pointer);
-
-void
-glColorPointer ( size, type, stride, pointer )
- Sint32 size
- GLenum type
- Uint32 stride
- char *pointer
- CODE:
- glColorPointer(size,type,stride,pointer);
-
-void
-glNormalPointer ( type, stride, pointer )
- GLenum type
- Uint32 stride
- char *pointer
- CODE:
- glNormalPointer(type,stride,pointer);
-
-void
-glTexCoordPointer ( size, type, stride, pointer )
- Sint32 size
- GLenum type
- Uint32 stride
- char *pointer
- CODE:
- glTexCoordPointer(size,type,stride,pointer);
-
-void
-glEdgeFlagPointer ( stride, pointer )
- Uint32 stride
- char *pointer
- CODE:
- glEdgeFlagPointer(stride,pointer);
-
-void
-glArrayElement ( ith )
- Uint32 ith
- CODE:
- glArrayElement(ith);
-
-void
-glDrawElements ( mode, count, type, indices )
- GLenum mode
- Uint32 count
- GLenum type
- char *indices
- CODE:
- glDrawElements( mode, count, type, indices);
-
-void
-glDrawRangeElements ( mode, start, end, count, type, indices )
- GLenum mode
- Uint32 start
- Uint32 end
- Uint32 count
- GLenum type
- char *indices
- CODE:
- glDrawRangeElements(mode,start,end,count,type,indices);
-
-void
-glDrawArrays ( mode, first, count )
- GLenum mode
- Uint32 first
- Uint32 count
- CODE:
- glDrawArrays(mode,first,count);
-
-void
-glInterleavedArrays ( format, stride, pointer )
- GLenum format
- Uint32 stride
- char *pointer
- CODE:
- glInterleavedArrays(format,stride,pointer);
-
-void
-glPushAttrib ( mask )
- GLbitfield mask
- CODE:
- glPushAttrib(mask);
-
-void
-glPopAttrib ()
- CODE:
- glPopAttrib();
-
-void
-glPushClientAttrib ( mask )
- GLbitfield mask
- CODE:
- glPushClientAttrib(mask);
-
-void
-glPopClientAttrib ()
- CODE:
- glPopClientAttrib();
-
-void
-glMatrixMode ( mode )
- GLenum mode
- CODE:
- glMatrixMode(mode);
-
-void
-glLoadIdentity ()
- CODE:
- glLoadIdentity();
-
-void
-glLoadMatrix ( ... )
- CODE:
- int i;
- double mat[16];
- for ( i = 0; i < 16; i++ ) {
- mat[i] = (i < items && SvNOK(ST(i)) ? SvNV(ST(i)) : 0.0 );
- }
- glLoadMatrixd(mat);
-
-void
-glMultMatrix ( ... )
- CODE:
- int i;
- double mat[16];
- for ( i = 0; i < 16; i++ ) {
- mat[i] = (i < items && SvNOK(ST(i)) ? SvNV(ST(i)) : 0.0 );
- }
- glMultMatrixd(mat);
-
-void
-glTranslate ( x, y, z )
- double x
- double y
- double z
- CODE:
- glTranslated(x,y,z);
-
-void
-glRotate ( angle, x, y, z )
- double angle
- double x
- double y
- double z
- CODE:
- glRotated(angle,x,y,z);
-
-void
-glScale ( x, y, z )
- double x
- double y
- double z
- CODE:
- glScaled(x,y,z);
-
-void
-glFrustum ( left, right, bottom, top, n, f )
- double left
- double right
- double bottom
- double top
- double n
- double f
- CODE:
- glFrustum(left,right,bottom,top,n,f);
-
-void
-glOrtho ( left, right, bottom, top, n, f )
- double left
- double right
- double bottom
- double top
- double n
- double f
- CODE:
- glOrtho(left,right,bottom,top,n,f);
-
-void
-glViewport ( x, y, width, height )
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- CODE:
- glViewport(x,y,width,height);
-
-void
-glDepthRange ( n, f )
- double n
- double f
- CODE:
- glDepthRange(n,f);
-
-void
-glPushMatrix ()
- CODE:
- glPushMatrix();
-
-void
-glPopMatrix ()
- CODE:
- glPopMatrix();
-
-void
-glClipPlane ( plane, ... )
- GLenum plane
- CODE:
- double v[4];
- int i;
- for (i = 0; i < 4; i++ ) {
- v[i] = (i+1 < items && SvNOK(ST(i+1))) ? SvNV(ST(i+1)) : 0.0;
- }
- glClipPlane(plane,v);
-
-void
-glColor ( r, g, b, ... )
- double r
- double g
- double b
- CODE:
- if ( items == 4 ) {
- double a;
- a = SvNV(ST(3));
- glColor4d(r,g,b,a);
- } else {
- glColor3d(r,g,b);
- }
-
-void
-glIndex ( c )
- Uint32 c
- CODE:
- glIndexi(c);
-
-void
-glShadeModel ( mode )
- GLenum mode
- CODE:
- glShadeModel(mode);
-
-void
-glLight ( light, name, ... )
- GLenum light
- GLenum name
- CODE:
- int i;
- if ( items == 6 ) {
- float v[4];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glLightfv(light,name,v);
- } else if ( items == 5 ) {
- float v[3];
- for ( i = 0; i < 3; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glLightfv(light,name,v);
- } else if ( items == 3 ) {
- float v;
- v = SvNV(ST(2));
- glLightf(light,name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Light invalid arguments");
- }
-
-void
-glLightModel ( pname, ... )
- GLenum pname
- CODE:
- GLfloat vec[4];
- if ( pname == GL_LIGHT_MODEL_LOCAL_VIEWER ||
- pname == GL_LIGHT_MODEL_TWO_SIDE ||
- pname == GL_LIGHT_MODEL_COLOR_CONTROL ) {
- glLightModelf(pname,SvNV(ST(1)));
- } else if ( pname == GL_LIGHT_MODEL_AMBIENT) {
- vec[0] = SvNV(ST(1));
- vec[1] = SvNV(ST(2));
- vec[2] = SvNV(ST(3));
- vec[3] = SvNV(ST(4));
- glLightModelfv(pname,vec);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::glLightModel unknown model %d",pname);
- }
-
-void
-glMaterial ( face, name, ... )
- GLenum face
- GLenum name
- CODE:
- int i;
- if ( items == 6 ) {
- float v[4];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glMaterialfv(face,name,v);
- } else if ( items == 5 ) {
- float v[3];
- for ( i = 0; i < 4; i++ ) {
- v[i] = (SvNOK(ST(i+2))) ? SvNV(ST(i+2)) : 0.0;
- }
- glMaterialfv(face,name,v);
- } else if ( items == 3 ) {
- float v;
- v = SvNV(ST(2));
- glMaterialf(face,name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Material invalid arguments");
- }
-
-void
-glColorMaterial ( face, mode )
- GLenum face
- GLenum mode
- CODE:
- glColorMaterial(face,mode);
-
-void
-glBlendFunc ( sfactor, dfactor )
- GLenum sfactor
- GLenum dfactor
- CODE:
- glBlendFunc(sfactor,dfactor);
-
-
-void
-glHint ( target, hint )
- GLenum target
- GLenum hint
- CODE:
- glHint(target,hint);
-
-void
-glFog ( name, ... )
- GLenum name
- CODE:
- if ( items == 5 ) {
- float v[4];
- v[0] = SvNV(ST(1));
- v[1] = SvNV(ST(2));
- v[2] = SvNV(ST(3));
- v[3] = SvNV(ST(4));
- glFogfv(name,v);
- } else if ( items == 2 ) {
- float v;
- v = SvNV(ST(1));
- glFogf(name,v);
- } else {
- Perl_croak(aTHX_ "SDL::OpenGL::Material invalid arguments");
- }
-
-void
-glPolygonOffset ( factor, units )
- double factor
- double units
- CODE:
- glPolygonOffset(factor,units);
-
-Uint32
-glGenLists ( range )
- Uint32 range
- CODE:
- RETVAL = glGenLists(range);
- OUTPUT:
- RETVAL
-
-void
-glNewList ( list, mode )
- Uint32 list
- GLenum mode
- CODE:
- glNewList(list,mode);
-
-void
-glEndList ()
- CODE:
- glEndList();
-
-void
-glDeleteLists ( base, count )
- Uint32 base
- Uint32 count
- CODE:
- glDeleteLists(base, count);
-
-void
-glCallList ( list )
- Uint32 list
- CODE:
- glCallList(list);
-
-Uint32
-glIsList ( list )
- Uint32 list
- CODE:
- RETVAL = glIsList(list);
- OUTPUT:
- RETVAL
-
-void
-glListBase ( base )
- Uint32 base
- CODE:
- glListBase(base);
-
-void
-glCallLists ( ... )
- CODE:
- int *i, j;
- if ( items > 0 ) {
- i = (int*)safemalloc(sizeof(int)* (items));
- for ( j = 0; j < items; j++ ) {
- i[j] = SvIV(ST(j));
- }
- } else {
- Perl_croak(aTHX_ "usage: SDL::OpenGL::CallLists(type,...)");
- }
- glCallLists(items, GL_INT, i);
- safefree(i);
-
-void
-glCallListsString ( string )
- SV* string
- CODE:
- char *str;
- STRLEN len;
- str = SvPV(string,len);
- glCallLists(len,GL_BYTE,str);
-
-void
-glRasterPos ( x, y, z, ... )
- double x
- double y
- double z
- CODE:
- if ( items == 4 ) {
- double w = SvNV(ST(3));
- glRasterPos4d(x,y,z,w);
- } else {
- glRasterPos3d(x,y,z);
- }
-
-void
-glBitmap ( width, height, x1, y1, x2, y2, data )
- Uint32 width
- Uint32 height
- double x1
- double y1
- double x2
- double y2
- char *data
- CODE:
- glBitmap(width,height,x1,y1,x2,y2,data);
-
-void
-glDrawPixels ( width, height, format, type, pixels )
- Uint32 width
- Uint32 height
- GLenum format
- GLenum type
- char *pixels
- CODE:
- glDrawPixels(width,height,format,type,pixels);
-
-
-SV*
-glReadPixels ( x, y, width, height, format, type )
- Uint32 x
- Uint32 y
- Uint32 height
- Uint32 width
- GLenum format
- GLenum type
- CODE:
- int len, size;
- char *buf;
- size = 1; /* ALPHA, BLUE, GREEN or RED */
- if (format == GL_BGR || format == GL_RGB)
- size = 3;
- if (format == GL_BGRA || format == GL_RGBA)
- size = 4;
- len = height * width * size; /* in bytes */
- RETVAL = newSV(len); /* alloc len+1 bytes */
- SvPOK_on(RETVAL); /* make an PV */
- buf = SvPVX(RETVAL); /* get ptr to buffer */
- glReadPixels(x,y,width,height,format,type,buf);
- SvCUR_set(RETVAL, len); /* set real length */
- OUTPUT:
- RETVAL
-
-AV*
-glReadPixel ( x, y )
- Uint32 x
- Uint32 y
- CODE:
- int rgba[4]; /* r,g,b,a */
- int i;
- glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_INT,rgba);
- RETVAL = newAV();
- for ( i = 0; i < 4; i++ ) {
- av_push(RETVAL,newSViv(rgba[i]));
- }
- OUTPUT:
- RETVAL
-
-void
-glCopyPixels ( x, y, width, height, buffer )
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- GLenum buffer
- CODE:
- glCopyPixels(x,y,width,height,buffer);
-
-void
-glPixelStore ( name, param )
- Sint32 name
- double param
- CODE:
- glPixelStorei(name,param);
-
-void
-glPixelTransfer ( name, ... )
- GLenum name
- CODE:
- switch ( name ) {
- case GL_MAP_COLOR:
- case GL_MAP_STENCIL:
- case GL_INDEX_SHIFT:
- case GL_INDEX_OFFSET:
- glPixelTransferi(name,SvIV(ST(1)));
- break;
- default:
- glPixelTransferf(name,SvNV(ST(1)));
- break;
- }
-
-void
-glPixelMap ( type, map, mapsize, values )
- GLenum type
- GLenum map
- Sint32 mapsize
- char *values
- CODE:
- switch (type) {
- case GL_UNSIGNED_INT:
- glPixelMapuiv(map,mapsize,(GLint*)values);
- break;
- case GL_UNSIGNED_SHORT:
- glPixelMapusv(map,mapsize,(GLushort*)values);
- break;
- case GL_FLOAT:
- glPixelMapfv(map,mapsize,(GLfloat*)values);
- break;
- }
-
-void
-glPixelZoom ( zoomx, zoomy )
- double zoomx
- double zoomy
- CODE:
- glPixelZoom(zoomx,zoomy);
-
-#ifdef GL_VERSION_1_3
-
-void
-glColorTable ( target, internalFormat, width, format, type, data )
- GLenum target
- GLenum internalFormat
- Uint32 width
- GLenum format
- GLenum type
- char *data
- CODE:
- glColorTable(target,internalFormat,width,format,type,data);
-
-void
-glColorTableParameter ( target, name, r, g, b, a)
- GLenum target
- GLenum name
- double r
- double g
- double b
- double a
- CODE:
- GLfloat vec[4];
- vec[0] = r;
- vec[1] = g;
- vec[2] = b;
- vec[3] = a;
- glColorTableParameterfv(target,name,vec);
-
-void
-glCopyColorTable ( target, internalFormat, x, y, width )
- GLenum target
- GLenum internalFormat
- Sint32 x
- Sint32 y
- Uint32 width
- CODE:
- glCopyColorTable(target,internalFormat,x,y,width);
-
-void
-glColorSubTable ( target, start, count, format, type, data )
- Uint32 target
- Uint32 start
- Uint32 count
- Uint32 format
- Uint32 type
- char *data
- CODE:
- glColorSubTable(target,start,count,format,type,data);
-
-void
-glCopyColorSubTable ( target, start, x, y, count )
- Uint32 target
- Uint32 start
- Sint32 x
- Sint32 y
- Uint32 count
- CODE:
- glCopyColorSubTable(target,start,x,y,count);
-
-void
-glConvolutionFilter2D ( target, internalFormat, width, height, format, type, image )
- Uint32 target
- Uint32 internalFormat
- Uint32 width
- Uint32 height
- Uint32 format
- Uint32 type
- char *image
- CODE:
- glConvolutionFilter2D(target,internalFormat,width,height,format,type,image);
-
-void
-glCopyConvolutionFilter2D ( target, internalFormat, x, y, width, height )
- Uint32 target
- Uint32 internalFormat
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- CODE:
- glCopyConvolutionFilter2D(target,internalFormat,x,y,width,height);
-
-void
-glSeparableFilter2D ( target, internalFormat, width, height, format, type, row, column )
- Uint32 target
- Uint32 internalFormat
- Uint32 width
- Uint32 height
- Uint32 format
- Uint32 type
- char *row
- char *column
- CODE:
- glSeparableFilter2D(target,internalFormat,width,height,format,type,row,column);
-
-void
-glConvolutionFilter1D ( target, internalFormat, width, format, type, image )
- Uint32 target
- Uint32 internalFormat
- Uint32 width
- Uint32 format
- Uint32 type
- char *image
- CODE:
- glConvolutionFilter1D(target,internalFormat,width,format,type,image);
-
-void
-glCopyConvolutionFilter1D ( target, internalFormat, x, y, width )
- Uint32 target
- Uint32 internalFormat
- Sint32 x
- Sint32 y
- Uint32 width
- CODE:
- glCopyConvolutionFilter1D(target,internalFormat,x,y,width);
-
-void
-glConvolutionParameter ( target, pname, ... )
- Uint32 target
- Uint32 pname
- CODE:
- Uint32 pi;
- GLfloat pv[4];
- switch(pname) {
- case GL_CONVOLUTION_BORDER_MODE:
- if ( items != 3 )
- Perl_croak(aTHX_ "Usage: ConvolutionParameter(target,pname,...)");
- pi = SvIV(ST(2));
- glConvolutionParameteri(target,pname,pi);
- break;
- case GL_CONVOLUTION_FILTER_SCALE:
- case GL_CONVOLUTION_FILTER_BIAS:
- if ( items != 6 )
- Perl_croak(aTHX_ "Usage: ConvolutionParameter(target,pname,...)");
- pv[0] = (GLfloat)SvNV(ST(2));
- pv[1] = (GLfloat)SvNV(ST(3));
- pv[2] = (GLfloat)SvNV(ST(4));
- pv[3] = (GLfloat)SvNV(ST(5));
- glConvolutionParameterfv(target,pname,pv);
- break;
- default:
- Perl_croak(aTHX_ "ConvolutionParameter invalid parameter");
- break;
- }
-
-void
-glHistogram ( target, width, internalFormat, sink )
- Uint32 target
- Uint32 width
- Uint32 internalFormat
- GLboolean sink
- CODE:
- glHistogram(target,width,internalFormat,sink);
-
-void
-glGetHistogram ( target, reset, format, type, values )
- Uint32 target
- GLboolean reset
- Uint32 format
- Uint32 type
- char *values
- CODE:
- glGetHistogram(target,reset,format,type,values);
-
-void
-glResetHistogram ( target )
- Uint32 target
- CODE:
- glResetHistogram(target);
-
-void
-glMinmax ( target, internalFormat, sink )
- Uint32 target
- Uint32 internalFormat
- GLboolean sink
- CODE:
- glMinmax(target,internalFormat,sink);
-
-void
-glGetMinmax ( target, reset, format, type, values )
- Uint32 target
- GLboolean reset
- Uint32 format
- Uint32 type
- char *values
- CODE:
- glGetMinmax(target,reset,format,type,values);
-
-void
-glResetMinmax ( target )
- Uint32 target
- CODE:
- glResetMinmax(target);
-
-void
-glBlendEquation ( mode )
- Uint32 mode
- CODE:
- glBlendEquation(mode);
-
-#endif // GL_VERSION_1_3
-
-void
-glTexImage2D ( target, level, internalFormat, width, height, border, format, type, data )
- GLenum target
- Sint32 level
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- Sint32 border
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexImage2D(target,level,internalFormat,width,height,border,format,type,data);
-
-void
-glCopyTexImage2D ( target, level, internalFormat, x, y, width, height, border )
- GLenum target
- Sint32 level
- Sint32 internalFormat
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- Sint32 border
- CODE:
- glCopyTexImage2D(target,level,internalFormat,x,y,width,height,border);
-
-void
-glTexSubImage2D ( target, level, xoffset, yoffset, width, height, format, type, data )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Sint32 yoffset
- Uint32 width
- Uint32 height
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,data);
-
-void
-glCopyTexSubImage2D ( target, level, xoffset, yoffset, x, y, width, height )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Sint32 yoffset
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- CODE:
- glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
-
-void
-glTexImage1D ( target, level, internalFormat, width, border, format, type, data )
- GLenum target
- Sint32 level
- Sint32 internalFormat
- Uint32 width
- Sint32 border
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexImage1D(target,level,internalFormat,width,border,format,type,data);
-
-void
-glTexSubImage1D ( target, level, xoffset, width, format, type, data )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Uint32 width
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexSubImage1D(target,level,xoffset,width,format,type,data);
-
-void
-glCopyTexImage1D ( target, level, internalFormat, x, y, width, border )
- GLenum target
- Sint32 level
- Sint32 internalFormat
- Sint32 x
- Sint32 y
- Uint32 width
- Sint32 border
- CODE:
- glCopyTexImage1D(target,level,internalFormat,x,y,width,border);
-
-void
-glCopyTexSubImage1D ( target, level, xoffset, x, y, width )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Sint32 x
- Sint32 y
- Uint32 width
- CODE:
- glCopyTexSubImage1D(target,level,xoffset,x,y,width);
-
-#ifdef GL_VERSION_1_3
-
-void
-glTexImage3D ( target, level, internalFormat, width, height, depth, border, format, type, data )
- GLenum target
- Sint32 level
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- Uint32 depth
- Sint32 border
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,data);
-
-void
-glTexSubImage3D ( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Sint32 yoffset
- Sint32 zoffset
- Uint32 width
- Uint32 height
- Uint32 depth
- GLenum format
- GLenum type
- char *data
- CODE:
- glTexSubImage3D(target,level,xoffset,yoffset,zoffset,
- width,height,depth,format,type,data);
-
-void
-glCopyTexSubImage3D ( target, level, xoffset, yoffset, zoffset, x, y, width, height )
- GLenum target
- Sint32 level
- Sint32 xoffset
- Sint32 yoffset
- Sint32 zoffset
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- CODE:
- glCopyTexSubImage3D(target,level,xoffset,yoffset,zoffset,x,y,width,height);
-
-#endif // GL_VERSION_1_3
-
-AV*
-glGenTextures ( n )
- Uint32 n;
- CODE:
- GLsizei i;
- GLuint* names;
- names = (GLuint*)safemalloc(sizeof(GLuint)*n);
- RETVAL = newAV();
- glGenTextures(n,names);
- for ( i = 0; i < n; i++ ) {
- av_push(RETVAL,newSViv(names[i]));
- }
- safefree(names);
- OUTPUT:
- RETVAL
-
-GLboolean
-glIsTexture ( texture )
- Uint32 texture
- CODE:
- RETVAL = glIsTexture(texture);
- OUTPUT:
- RETVAL
-
-void
-glBindTexture ( target, texture )
- GLenum target
- Uint32 texture
- CODE:
- glBindTexture(target,texture);
-
-void
-glDeleteTextures ( ... )
- CODE:
- GLuint* textures;
- int i;
- textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
- if ( textures ) {
- for ( i = 0; i < items; i++ ) {
- textures[i] = SvIV(ST(i));
- }
- }
- glDeleteTextures(items,textures);
- safefree(textures);
-
-AV*
-glAreTexturesResident ( ... )
- CODE:
- GLuint* textures;
- GLboolean *homes;
- int i;
- RETVAL = newAV();
- textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
- homes = (GLboolean*)safemalloc(sizeof(GLboolean) * items);
- if ( textures ) {
- for ( i = 0; i < items; i++ ) {
- textures[i] = SvIV(ST(i));
- }
- }
- if ( GL_FALSE != glAreTexturesResident(items,textures,homes)) {
- for (i = 0; i < items; i++ ) {
- av_push(RETVAL,newSViv(homes[i]));
- }
- }
- safefree(homes);
- safefree(textures);
- OUTPUT:
- RETVAL
-
-void
-glPrioritizeTextures ( n, names, priorities )
- Uint32 n
- char *names
- char *priorities
- CODE:
- glPrioritizeTextures(n,(GLuint*)names,(const GLclampf *)priorities);
-
-void
-glTexEnv ( target, name, ... )
- GLenum target
- GLenum name
- CODE:
- float pv[4];
- GLint p;
- switch(name) {
- case GL_TEXTURE_ENV_MODE:
- p = SvIV(ST(2));
- glTexEnvi(target,name,p);
- break;
- case GL_TEXTURE_ENV_COLOR:
- pv[0] = SvNV(ST(2));
- pv[1] = SvNV(ST(3));
- pv[2] = SvNV(ST(4));
- pv[3] = SvNV(ST(5));
- glTexEnvfv(target,name,pv);
- break;
- }
-
-void
-glTexCoord ( ... )
- CODE:
- double s,t,r,q;
- if ( items < 1 || items > 4 )
- Perl_croak (aTHX_ "usage: SDL::OpenGL::TexCoord(s,[t,[r,[q]]])");
- s = t = r = 0.0;
- q = 1.0;
- switch(items) {
- case 4:
- q = SvNV(ST(3));
- case 3:
- r = SvNV(ST(2));
- case 2:
- t = SvNV(ST(1));
- case 1:
- s = SvNV(ST(0));
- }
- glTexCoord4d(s,t,r,q);
-
-void
-glTexParameter ( target, name, ... )
- GLenum target
- GLenum name
- CODE:
- GLfloat pv[4];
- GLint p;
- switch (name) {
- case GL_TEXTURE_BORDER_COLOR:
- pv[0] = SvNV(ST(2));
- pv[1] = SvNV(ST(3));
- pv[2] = SvNV(ST(4));
- pv[3] = SvNV(ST(5));
- glTexParameterfv(target,name,pv);
- break;
- case GL_TEXTURE_PRIORITY:
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- pv[0] = SvNV(ST(2));
- glTexParameterf(target,name,pv[0]);
- break;
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- default:
- p = SvIV(ST(2));
- glTexParameteri(target,name,p);
- break;
- }
-
-void
-glTexGen ( coord, name, ... )
- GLenum coord
- GLenum name
- CODE:
- GLdouble *pv;
- GLint p;
- int i;
- switch (name) {
- case GL_TEXTURE_GEN_MODE:
- p = SvIV(ST(2));
- glTexGeni(coord,name,p);
- break;
- default:
- if ( items == 2 )
- Perl_croak(aTHX_ "usage: glTexGen(coord,name,...)");
- pv = (GLdouble*)safemalloc(sizeof(GLdouble)*(items-2));
- for ( i = 0; i < items - 2; i++ ) {
- pv[i] = SvNV(ST(i+2));
- }
- glTexGendv(coord,name,pv);
- safefree(pv);
- break;
- }
-
-#ifdef GL_VERSION_1_3
-
-void
-glActiveTextureARB ( texUnit )
- GLenum texUnit
- CODE:
- glActiveTextureARB(texUnit);
-
-void
-glMultiTexCoord ( texUnit, ... )
- Uint32 texUnit
- CODE:
- double s,t,r,q;
- if ( items < 2 || items > 5 )
- Perl_croak (aTHX_ "usage: SDL::OpenGL::MultiTexCoord(tex,s,[t,[r,[q]]])");
- s = t = r = 0.0;
- q = 1.0;
- switch(items) {
- case 5:
- q = SvNV(ST(3));
- case 4:
- r = SvNV(ST(2));
- case 3:
- t = SvNV(ST(1));
- case 2:
- s = SvNV(ST(0));
- }
- glMultiTexCoord4dARB(texUnit,s,t,r,q);
-
-#endif // GL_VERSION_1_3
-
-void
-glDrawBuffer ( mode )
- GLenum mode
- CODE:
- glDrawBuffer(mode);
-
-void
-glReadBuffer ( mode )
- GLenum mode
- CODE:
- glReadBuffer(mode);
-
-void
-glIndexMask ( mask )
- Uint32 mask
- CODE:
- glIndexMask(mask);
-
-void
-glColorMask ( red, green, blue, alpha )
- GLboolean red
- GLboolean green
- GLboolean blue
- GLboolean alpha
- CODE:
- glColorMask(red,green,blue,alpha);
-
-void
-glDepthMask ( flag )
- GLboolean flag
- CODE:
- glDepthMask(flag);
-
-void
-glStencilMask ( mask )
- Uint32 mask
- CODE:
- glStencilMask(mask);
-
-void
-glScissor ( x , y, width, height )
- Sint32 x
- Sint32 y
- Uint32 width
- Uint32 height
- CODE:
- glScissor(x,y,width,height);
-
-void
-glAlphaFunc ( func, ref )
- GLenum func
- double ref
- CODE:
- glAlphaFunc(func,ref);
-
-void
-glStencilFunc ( func, ref, mask )
- GLenum func
- Sint32 ref
- Uint32 mask
- CODE:
- glStencilFunc(func,ref,mask);
-
-void
-glStencilOp ( fail, zfail, zpass )
- GLenum fail
- GLenum zfail
- GLenum zpass
- CODE:
- glStencilOp(fail,zfail,zpass);
-
-void
-glDepthFunc ( func )
- GLenum func
- CODE:
- glDepthFunc(func);
-
-void
-glLogicOp ( opcode )
- GLenum opcode
- CODE:
- glLogicOp(opcode);
-
-void
-glAccum ( op, value )
- GLenum op
- double value
- CODE:
- glAccum(op,value);
-
-void
-glMap1 ( target, u1, u2, stride, order, points )
- GLenum target
- double u1
- double u2
- Sint32 stride
- Sint32 order
- char *points
- CODE:
- glMap1d(target,u1,u2,stride,order,(double*)points);
-
-void
-glEvalCoord1 ( u )
- double u
- CODE:
- glEvalCoord1d(u);
-
-void
-glMapGrid1 ( n, u1, u2 )
- Sint32 n
- double u1
- double u2
- CODE:
- glMapGrid1d(n,u1,u2);
-
-void
-glEvalMesh1 ( mode, p1, p2 )
- GLenum mode
- Sint32 p1
- Sint32 p2
- CODE:
- glEvalMesh1(mode,p1,p2);
-
-void
-glMap2 ( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points )
- GLenum target
- double u1
- double u2
- Sint32 ustride
- Sint32 uorder
- double v1
- double v2
- Sint32 vstride
- Sint32 vorder
- char *points
- CODE:
- glMap2d(target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,(double*)points);
-
-void
-glEvalCoord2 ( u, v )
- double u
- double v
- CODE:
- glEvalCoord2d(u,v);
-
-void
-glMapGrid2 ( nu, u1, u2, nv, v1, v2 )
- Sint32 nu
- double u1
- double u2
- Sint32 nv
- double v1
- double v2
- CODE:
- glMapGrid2d(nu,u1,u2,nv,v1,v2);
-
-void
-glEvalMesh2 ( mode, i1, i2, j1, j2 )
- GLenum mode
- Sint32 i1
- Sint32 i2
- Sint32 j1
- Sint32 j2
- CODE:
- glEvalMesh2(mode,i1,i2,j1,j2);
-
-GLenum
-glGetError ( )
- CODE:
- RETVAL = glGetError();
- OUTPUT:
- RETVAL
-
-GLint
-glRenderMode ( mode )
- GLenum mode
- CODE:
- RETVAL = glRenderMode( mode );
- OUTPUT:
- RETVAL
-
-void
-glInitNames ( )
- CODE:
- glInitNames();
-
-void
-glPushName ( name )
- GLuint name
- CODE:
- glPushName(name);
-
-void
-glPopName ( )
- CODE:
- glPopName();
-
-void
-glLoadName ( name )
- GLuint name
- CODE:
- glLoadName(name);
-
-void
-glFeedbackBuffer ( size, type, buffer )
- GLuint size
- GLenum type
- float* buffer
- CODE:
- glFeedbackBuffer(size,type,buffer);
-
-void
-glPassThrough ( token )
- GLfloat token
- CODE:
- glPassThrough(token);
-
-
-#endif
-
-#ifdef HAVE_GLU
-
-void
-gluLookAt ( eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz )
- double eyex
- double eyey
- double eyez
- double centerx
- double centery
- double centerz
- double upx
- double upy
- double upz
- CODE:
- gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz);
-
-void
-gluPerspective ( fovy, aspect, n, f )
- double fovy
- double aspect
- double n
- double f
- CODE:
- gluPerspective(fovy,aspect,n,f);
-
-void
-gluPickMatrix ( x, y, delx, dely, viewport )
- double x
- double y
- double delx
- double dely
- GLint* viewport
- CODE:
- gluPickMatrix(x,y,delx,dely,viewport);
-
-void
-gluOrtho2D ( left, right, bottom, top )
- double left
- double right
- double bottom
- double top
- CODE:
- gluOrtho2D(left,right,bottom,top);
-
-int
-gluScaleImage ( format, widthin, heightin, typein, datain, widthout, heightout, typeout, dataout )
- GLenum format
- Uint32 widthin
- Uint32 heightin
- GLenum typein
- char *datain
- Uint32 widthout
- Uint32 heightout
- GLenum typeout
- char *dataout
- CODE:
- RETVAL = gluScaleImage(format,widthin,heightin,typein,datain,
- widthout,heightout,typeout,dataout);
- OUTPUT:
- RETVAL
-
-int
-gluBuild1DMipmaps ( target, internalFormat, width, format, type, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- GLenum format
- GLenum type
- char *data
- CODE:
- RETVAL = gluBuild1DMipmaps(target,internalFormat,width,format,type,data);
- OUTPUT:
- RETVAL
-
-int
-gluBuild2DMipmaps ( target, internalFormat, width, height, format, type, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- GLenum format
- GLenum type
- char *data
- CODE:
- RETVAL = gluBuild2DMipmaps(target,internalFormat,width,height,format,type,data);
- OUTPUT:
- RETVAL
-
-
-#if HAVE_GLU_VERSION >= 12
-int
-gluBuild3DMipmaps ( target, internalFormat, width, height, depth, format, type, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- Uint32 depth
- GLenum format
- GLenum type
- char *data
- CODE:
- RETVAL = gluBuild3DMipmaps(target,internalFormat,width,height,depth,
- format,type,data);
- OUTPUT:
- RETVAL
-
-#else
-void
-gluBuild3DMipmaps ( )
- CODE:
- Perl_croak (aTHX_ "SDL::OpenGL::Build3DMipmaps requires GLU 1.2");
-
-#endif
-
-#if HAVE_GLU_VERSION >= 12
-int
-gluBuild1DMipmapLevels ( target, internalFormat, width, format, type, level, base, max, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- GLenum format
- GLenum type
- Sint32 level
- Sint32 base
- Sint32 max
- char *data
- CODE:
- RETVAL = gluBuild1DMipmapLevels(target,internalFormat,width,
- format,type,level,base,max,data);
- OUTPUT:
- RETVAL
-
-#else
-void
-gluBuild1DMipmapLevels ()
- CODE:
- Perl_croak(aTHX_ "SDL::OpenGL::Build1DMipmapLevels requires GLU 1.2");
-
-#endif
-
-#if HAVE_GLU_VERSION >= 12
-int
-gluBuild2DMipmapLevels ( target, internalFormat, width, height, format, type, level, base, max, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- GLenum format
- GLenum type
- Sint32 level
- Sint32 base
- Sint32 max
- char *data
- CODE:
- RETVAL = gluBuild2DMipmapLevels(target,internalFormat,width,height,
- format,type,level,base,max,data);
- OUTPUT:
- RETVAL
-
-#else
-void
-gluBuild2DMipmapLevels ()
- CODE:
- Perl_croak(aTHX_ "SDL::OpenGL::Build2DMipmapLevels requires GLU 1.2");
-
-#endif
-
-#if HAVE_GLU_VERSION >= 12
-int
-gluBuild3DMipmapLevels ( target, internalFormat, width, height, depth, format, type, level, base, max, data )
- GLenum target
- Sint32 internalFormat
- Uint32 width
- Uint32 height
- Uint32 depth
- GLenum format
- GLenum type
- Sint32 level
- Sint32 base
- Sint32 max
- char *data
- CODE:
- RETVAL = gluBuild3DMipmapLevels(target,internalFormat,width,height,depth,
- format,type,level,base,max,data);
- OUTPUT:
- RETVAL
-
-#else
-void
-gluBuild3DMipmapLevels ()
- CODE:
- Perl_croak(aTHX_ "SDL::OpenGL::Build3DMipmapLevels requires GLU 1.2");
-
-#endif
-
-char*
-gluErrorString ( code )
- GLenum code
- CODE:
- RETVAL = (char*)gluErrorString(code);
- OUTPUT:
- RETVAL
-
-GLUnurbsObj*
-gluNewNurbsRenderer ()
- CODE:
- RETVAL = gluNewNurbsRenderer();
- OUTPUT:
- RETVAL
-
-void
-gluDeleteNurbsRenderer ( obj )
- GLUnurbsObj *obj
- CODE:
- gluDeleteNurbsRenderer(obj);
-
-void
-gluNurbsProperty ( obj, property, value )
- GLUnurbsObj *obj
- GLenum property
- double value
- CODE:
- gluNurbsProperty(obj,property,(float)value);
-
-void
-gluLoadSamplingMatrices ( obj, mm, pm, vp )
- GLUnurbsObj *obj
- char *mm
- char *pm
- char *vp
- CODE:
- gluLoadSamplingMatrices(obj,(GLfloat*)mm,(GLfloat*)pm,(GLint*)vp);
-
-double
-gluGetNurbsProperty ( obj, property )
- GLUnurbsObj *obj
- GLenum property
- CODE:
- float f;
- gluGetNurbsProperty(obj,property,&f);
- RETVAL = (double)f;
- OUTPUT:
- RETVAL
-
-void
-gluNurbsCallback ( obj, which, cb )
- GLUnurbsObj *obj
- GLenum which
- SV *cb
- CODE:
- switch(which) {
- case GLU_ERROR:
- sdl_perl_nurbs_error_hook = cb;
- gluNurbsCallback(obj,GLU_ERROR,(GLvoid*)sdl_perl_nurbs_error_callback);
- break;
-#ifdef GLU_NURBS_BEGIN
- case GLU_NURBS_BEGIN:
- case GLU_NURBS_BEGIN_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_BEGIN_DATA,
- (GLvoid*)sdl_perl_nurbs_being_callback);
- break;
- case GLU_NURBS_TEXTURE_COORD:
- case GLU_NURBS_TEXTURE_COORD_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_TEXTURE_COORD_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_COLOR:
- case GLU_NURBS_COLOR_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_COLOR_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_NORMAL:
- case GLU_NURBS_NORMAL_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_NORMAL_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_VERTEX:
- case GLU_NURBS_VERTEX_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_VERTEX_DATA,
- (GLvoid*)sdl_perl_nurbs_multi_callback);
- break;
- case GLU_NURBS_END:
- case GLU_NURBS_END_DATA:
- gluNurbsCallbackData(obj,(void*)cb);
- gluNurbsCallback(obj,GLU_NURBS_END_DATA,
- (GLvoid*)sdl_perl_nurbs_end_callback);
- break;
-#endif
- default:
- Perl_croak(aTHX_ "SDL::OpenGL::NurbsCallback - invalid type");
- }
-
-void
-gluNurbsCallbackData ( obj, cb )
- GLUnurbsObj *obj
- SV *cb
- CODE:
- gluNurbsCallbackData(obj,(void*)cb);
-
-void
-gluBeginSurface ( obj )
- GLUnurbsObj *obj
- CODE:
- gluBeginSurface(obj);
-
-void
-gluEndSurface ( obj )
- GLUnurbsObj *obj
- CODE:
- gluEndSurface(obj);
-
-void
-gluNurbsSurface ( obj, uknot_count, uknot, vknot_count, vknot, u_stride, v_stride, ctlarray, uorder, vorder, type )
- GLUnurbsObj *obj
- Sint32 uknot_count
- char *uknot
- Sint32 vknot_count
- char *vknot
- Sint32 u_stride
- Sint32 v_stride
- char *ctlarray
- Sint32 uorder
- Sint32 vorder
- GLenum type
- CODE:
- gluNurbsSurface(obj,uknot_count,(GLfloat*)uknot,vknot_count,(GLfloat*)vknot,
- u_stride,v_stride,(GLfloat*)ctlarray,uorder,vorder,type);
-
-void
-gluBeginCurve ( obj )
- GLUnurbsObj *obj
- CODE:
- gluBeginCurve(obj);
-
-void
-gluEndCurve ( obj )
- GLUnurbsObj *obj
- CODE:
- gluEndCurve(obj);
-
-void
-gluNurbsCurve ( obj, uknot_count, uknot, u_stride, ctlarray, uorder, type )
- GLUnurbsObj *obj
- Sint32 uknot_count
- char *uknot
- Sint32 u_stride
- char *ctlarray
- Sint32 uorder
- GLenum type
- CODE:
- gluNurbsCurve(obj,uknot_count,(GLfloat*)uknot,u_stride,(GLfloat*)ctlarray,
- uorder,type);
-
-void
-gluBeginTrim ( obj )
- GLUnurbsObj *obj
- CODE:
- gluBeginTrim(obj);
-
-void
-gluEndTrim ( obj )
- GLUnurbsObj *obj
- CODE:
- gluEndTrim(obj);
-
-void
-gluPwlCurve ( obj, count, array, stride, type )
- GLUnurbsObj *obj
- Sint32 count
- char *array
- Sint32 stride
- GLenum type
- CODE:
- gluPwlCurve(obj,count,(GLfloat*)array,stride,type);
-
-AV*
-gluUnProject ( winx, winy, winz, mm, pm, vp )
- double winx
- double winy
- double winz
- char *mm
- char *pm
- char *vp
- CODE:
- GLdouble objx, objy, objz;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject(winx,winy,winz,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,&objx,&objy,&objz)));
- av_push(RETVAL,newSVnv((double)objx));
- av_push(RETVAL,newSVnv((double)objy));
- av_push(RETVAL,newSVnv((double)objz));
- OUTPUT:
- RETVAL
-
-
-#ifdef GL_VERSION_1_3
-
-AV*
-gluUnProject4 ( winx, winy, winz, clipw, mm, pm, vp, n, f )
- double winx
- double winy
- double winz
- double clipw
- char *mm
- char *pm
- char *vp
- double n
- double f
- CODE:
- GLdouble objx, objy, objz, objw;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject4(winx,winy,winz,clipw,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,(GLclampd)n,(GLclampd)f,
- &objx,&objy,&objz,&objw)));
- av_push(RETVAL,newSVnv((double)objx));
- av_push(RETVAL,newSVnv((double)objy));
- av_push(RETVAL,newSVnv((double)objz));
- av_push(RETVAL,newSVnv((double)objw));
- OUTPUT:
- RETVAL
-
-#endif // GL_VERSION_1_3
-
-AV*
-gluProject ( objx, objy, objz, mm, pm, vp )
- double objx
- double objy
- double objz
- char *mm
- char *pm
- char *vp
- CODE:
- GLdouble winx, winy, winz;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(gluUnProject(objx,objy,objz,(GLdouble*)mm,
- (GLdouble*)pm,(GLint*)vp,&winx,&winy,&winz)));
- av_push(RETVAL,newSVnv((double)winx));
- av_push(RETVAL,newSVnv((double)winy));
- av_push(RETVAL,newSVnv((double)winz));
- OUTPUT:
- RETVAL
-
-#ifdef GL_VERSION_1_2
-
-GLUtesselator*
-gluNewTess ()
- CODE:
- RETVAL = gluNewTess();
- OUTPUT:
- RETVAL
-
-void
-gluTessCallback ( tess, type )
- GLUtesselator *tess
- GLenum type
- CODE:
- switch(type) {
- case GLU_TESS_BEGIN:
- case GLU_TESS_BEGIN_DATA:
- gluTessCallback(tess,GLU_TESS_BEGIN_DATA,
- (GLvoid*)sdl_perl_tess_begin_callback);
- break;
-
- case GLU_TESS_EDGE_FLAG:
- case GLU_TESS_EDGE_FLAG_DATA:
- gluTessCallback(tess,GLU_TESS_EDGE_FLAG_DATA,
- (GLvoid*)sdl_perl_tess_edge_flag_callback);
- break;
-
- case GLU_TESS_VERTEX:
- case GLU_TESS_VERTEX_DATA:
- gluTessCallback(tess,GLU_TESS_VERTEX_DATA,
- (GLvoid*)sdl_perl_tess_vertex_callback);
- break;
-
- case GLU_TESS_END:
- case GLU_TESS_END_DATA:
- gluTessCallback(tess,GLU_TESS_END_DATA,
- (GLvoid*)sdl_perl_tess_end_callback);
- break;
-
- case GLU_TESS_COMBINE:
- case GLU_TESS_COMBINE_DATA:
- gluTessCallback(tess,GLU_TESS_COMBINE_DATA,
- (GLvoid*)sdl_perl_tess_combine_callback);
- break;
-
- case GLU_TESS_ERROR:
- case GLU_TESS_ERROR_DATA:
- gluTessCallback(tess,GLU_TESS_ERROR_DATA,
- (GLvoid*)sdl_perl_tess_error_callback);
- break;
- }
-
-void
-gluTessProperty ( tessobj, property, value )
- GLUtesselator *tessobj
- Uint32 property
- double value
- CODE:
- gluTessProperty(tessobj,property,value);
-
-double
-gluGetTessProperty ( tessobj, property )
- GLUtesselator *tessobj
- Uint32 property
- CODE:
- gluGetTessProperty(tessobj,property,&RETVAL);
- OUTPUT:
- RETVAL
-
-void
-gluTessNormal ( tessobj, x, y, z )
- GLUtesselator *tessobj
- double x
- double y
- double z
- CODE:
- gluTessNormal(tessobj,x,y,z);
-
-void
-gluTessBeginPolygon ( tessobj, cb )
- GLUtesselator *tessobj
- SV *cb
- CODE:
- gluTessBeginPolygon(tessobj,cb);
-
-void
-gluTessEndPolygon ( tessobj )
- GLUtesselator *tessobj
- CODE:
- gluTessEndPolygon(tessobj);
-
-void
-gluTessBeginContour ( tessobj )
- GLUtesselator *tessobj
- CODE:
- gluTessBeginContour(tessobj);
-
-void
-gluTessEndContour ( tessobj )
- GLUtesselator *tessobj
- CODE:
- gluTessEndContour(tessobj);
-
-void
-gluDeleteTess ( tessobj )
- GLUtesselator *tessobj
- CODE:
- gluDeleteTess(tessobj);
-
-void
-gluTessVertex ( tessobj, coords, vd )
- GLUtesselator *tessobj
- char *coords
- char *vd
- CODE:
- gluTessVertex(tessobj,(GLdouble*)coords,vd);
-
-#endif
-
-#endif
-
+++ /dev/null
-/*
- * This file was generated automatically by xsubpp version 1.9508 from the
- * contents of SFont.xs. Do not edit this file, edit SFont.xs instead.
- *
- * ANY CHANGES MADE HERE WILL BE LOST!
- *
- */
-
-#line 1 "SFont.xs"
-//
-// SFont.xs
-//
-// Original SFont code Copyright (C) Karl Bartel
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#include "../defines.h"
-#include "../SFont.h"
-
-#ifdef HAVE_SDL_IMAGE
-#include <SDL_image.h>
-
-SFont_FontInfo InternalFont;
-Uint32 SFont_GetPixel(SDL_Surface *Surface, Sint32 X, Sint32 Y)
-{
-
- Uint8 *bits;
- Uint32 Bpp;
- if (X<0) puts("SFONT ERROR: x too small in SFont_GetPixel. Report this to <karlb@gmx.net>");
- if (X>=Surface->w) puts("SFONT ERROR: x too big in SFont_GetPixel. Report this to <karlb@gmx.net>");
-
- Bpp = Surface->format->BytesPerPixel;
-
- bits = ((Uint8 *)Surface->pixels)+Y*Surface->pitch+X*Bpp;
-
- // Get the pixel
- switch(Bpp) {
- case 1:
- return *((Uint8 *)Surface->pixels + Y * Surface->pitch + X);
- break;
- case 2:
- return *((Uint16 *)Surface->pixels + Y * Surface->pitch/2 + X);
- break;
- case 3: { // Format/endian independent
- Uint8 r, g, b;
- r = *((bits)+Surface->format->Rshift/8);
- g = *((bits)+Surface->format->Gshift/8);
- b = *((bits)+Surface->format->Bshift/8);
- return SDL_MapRGB(Surface->format, r, g, b);
- }
- break;
- case 4:
- return *((Uint32 *)Surface->pixels + Y * Surface->pitch/4 + X);
- break;
- }
-
- return -1;
-}
-
-void SFont_InitFont2(SFont_FontInfo *Font)
-{
- int x = 0, i = 0;
-
- if ( Font->Surface==NULL ) {
- printf("The font has not been loaded!\n");
- exit(1);
- }
-
- if (SDL_MUSTLOCK(Font->Surface)) SDL_LockSurface(Font->Surface);
-
- while ( x < Font->Surface->w ) {
- if(SFont_GetPixel(Font->Surface,x,0)==SDL_MapRGB(Font->Surface->format,255,0,255)) {
- Font->CharPos[i++]=x;
- while (( x < Font->Surface->w-1) && (SFont_GetPixel(Font->Surface,x,0)==SDL_MapRGB(Font->Surface->format,255,0,255)))
- x++;
- Font->CharPos[i++]=x;
- }
- x++;
- }
- if (SDL_MUSTLOCK(Font->Surface)) SDL_UnlockSurface(Font->Surface);
-
- Font->h=Font->Surface->h;
- SDL_SetColorKey(Font->Surface, SDL_SRCCOLORKEY, SFont_GetPixel(Font->Surface, 0, Font->Surface->h-1));
-}
-
-void SFont_InitFont(SDL_Surface *Font)
-{
- InternalFont.Surface=Font;
- SFont_InitFont2(&InternalFont);
-}
-
-void SFont_PutString2(SDL_Surface *Surface, SFont_FontInfo *Font, int x, int y, char *text)
-{
- int ofs;
- int i=0;
- SDL_Rect srcrect,dstrect;
-
- while (text[i]!='\0') {
- if (text[i]==' ') {
- x+=Font->CharPos[2]-Font->CharPos[1];
- i++;
- }
- else {
-// printf("-%c- %c - %u\n",228,text[i],text[i]);
- ofs=(text[i]-33)*2+1;
-// printf("printing %c %d\n",text[i],ofs);
- srcrect.w = dstrect.w = (Font->CharPos[ofs+2]+Font->CharPos[ofs+1])/2-(Font->CharPos[ofs]+Font->CharPos[ofs-1])/2;
- srcrect.h = dstrect.h = Font->Surface->h-1;
- srcrect.x = (Font->CharPos[ofs]+Font->CharPos[ofs-1])/2;
- srcrect.y = 1;
- dstrect.x = x-(float)(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2;
- dstrect.y = y;
-
- SDL_BlitSurface( Font->Surface, &srcrect, Surface, &dstrect);
-
- x+=Font->CharPos[ofs+1]-Font->CharPos[ofs];
- i++;
- }
- }
-}
-
-void SFont_PutString(SDL_Surface *Surface, int x, int y, char *text)
-{
- SFont_PutString2(Surface, &InternalFont, x, y, text);
-}
-
-int SFont_TextWidth2(SFont_FontInfo *Font, char *text)
-{
- int ofs=0;
- int i=0,x=0;
-
- while (text[i]!='\0') {
- if (text[i]==' ') {
- x+=Font->CharPos[2]-Font->CharPos[1];
- i++;
- }
- else {
- ofs=(text[i]-33)*2+1;
- x+=Font->CharPos[ofs+1]-Font->CharPos[ofs];
- i++;
- }
- }
-// printf ("--%d\n",x);
- return x;
-}
-
-int SFont_TextWidth(char *text)
-{
- return SFont_TextWidth2(&InternalFont, text);
-}
-
-void SFont_XCenteredString2(SDL_Surface *Surface, SFont_FontInfo *Font, int y, char *text)
-{
- SFont_PutString2(Surface, Font, Surface->w/2-SFont_TextWidth2(Font,text)/2, y, text);
-}
-
-void SFont_XCenteredString(SDL_Surface *Surface, int y, char *text)
-{
- SFont_XCenteredString2(Surface, &InternalFont, y, text);
-}
-
-void SFont_InternalInput( SDL_Surface *Dest, SFont_FontInfo *Font, int x, int y, int PixelWidth, char *text)
-{
- SDL_Event event;
- int ch=-1,blink=0;
- long blinktimer=0;
- SDL_Surface *Back;
- SDL_Rect rect;
- int previous;
-// int ofs=(text[0]-33)*2+1;
-// int leftshift=(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2;
-
- Back = SDL_AllocSurface(Dest->flags,
- Dest->w,
- Font->h,
- Dest->format->BitsPerPixel,
- Dest->format->Rmask,
- Dest->format->Gmask,
- Dest->format->Bmask, 0);
- rect.x=0;
- rect.y=y;
- rect.w=Dest->w;
- rect.h=Font->Surface->h;
- SDL_BlitSurface(Dest, &rect, Back, NULL);
- SFont_PutString2(Dest,Font,x,y,text);
- SDL_UpdateRects(Dest, 1, &rect);
-
- // start input
- previous=SDL_EnableUNICODE(1);
- blinktimer=SDL_GetTicks();
- while (ch!=SDLK_RETURN) {
- if (event.type==SDL_KEYDOWN) {
- ch=event.key.keysym.unicode;
- if (((ch>31)||(ch=='\b')) && (ch<128)) {
- if ((ch=='\b')&&(strlen(text)>0))
- text[strlen(text)-1]='\0';
- else if (ch!='\b')
- sprintf(text,"%s%c",text,ch);
- if (SFont_TextWidth2(Font,text)>PixelWidth) text[strlen(text)-1]='\0';
- SDL_BlitSurface( Back, NULL, Dest, &rect);
- SFont_PutString2(Dest, Font, x, y, text);
- SDL_UpdateRects(Dest, 1, &rect);
-// printf("%s ## %d\n",text,strlen(text));
- SDL_WaitEvent(&event);
- }
- }
- if (SDL_GetTicks()>blinktimer) {
- blink=1-blink;
- blinktimer=SDL_GetTicks()+500;
- if (blink) {
- SFont_PutString2(Dest, Font, x+SFont_TextWidth2(Font,text), y, "|");
- SDL_UpdateRects(Dest, 1, &rect);
-// SDL_UpdateRect(Dest, x+SFont_TextWidth2(Font,text), y, SFont_TextWidth2(Font,"|"), Font->Surface->h);
- } else {
- SDL_BlitSurface( Back, NULL, Dest, &rect);
- SFont_PutString2(Dest, Font, x, y, text);
- SDL_UpdateRects(Dest, 1, &rect);
-// SDL_UpdateRect(Dest, x-(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2, y, PixelWidth, Font->Surface->h);
- }
- }
- SDL_Delay(1);
- SDL_PollEvent(&event);
- }
- text[strlen(text)]='\0';
- SDL_FreeSurface(Back);
- SDL_EnableUNICODE(previous); //restore the previous state
-}
-
-void SFont_Input2( SDL_Surface *Dest, SFont_FontInfo *Font, int x, int y, int PixelWidth, char *text)
-{
- SFont_InternalInput( Dest, Font, x, y, PixelWidth, text);
-}
-void SFont_Input( SDL_Surface *Dest, int x, int y, int PixelWidth, char *text)
-{
- SFont_Input2( Dest, &InternalFont, x, y, PixelWidth, text);
-}
-
-#endif
-
-#line 280 "SFont.c"
-#ifdef HAVE_SDL_IMAGE
-#define XSubPPtmpAAAA 1
-
-XS(XS_SDL__SFont_NewFont); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__SFont_NewFont)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SFont::NewFont(filename)");
- {
- char * filename = (char *)SvPV_nolen(ST(0));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 279 "SFont.xs"
- RETVAL = IMG_Load(filename);
- SFont_InitFont(RETVAL);
-#line 297 "SFont.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL__SFont_UseFont); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__SFont_UseFont)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SFont::UseFont(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
-#line 288 "SFont.xs"
- SFont_InitFont(surface);
-#line 313 "SFont.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__SFont_PutString); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__SFont_PutString)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::SFont::PutString(surface, x, y, text)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int x = (int)SvIV(ST(1));
- int y = (int)SvIV(ST(2));
- char * text = (char *)SvPV_nolen(ST(3));
-#line 297 "SFont.xs"
- SFont_PutString( surface, x, y, text );
-#line 331 "SFont.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL__SFont_TextWidth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL__SFont_TextWidth)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SFont::TextWidth(text)");
- {
- char * text = (char *)SvPV_nolen(ST(0));
- int RETVAL;
- dXSTARG;
-#line 303 "SFont.xs"
- RETVAL = SFont_TextWidth(text);
-#line 348 "SFont.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-XS(boot_SDL__SFont); /* prototype to pass -Wmissing-prototypes */
-XS(boot_SDL__SFont)
-{
- dXSARGS;
- char* file = __FILE__;
-
- XS_VERSION_BOOTCHECK ;
-
-#if XSubPPtmpAAAA
- newXS("SDL::SFont::NewFont", XS_SDL__SFont_NewFont, file);
- newXS("SDL::SFont::UseFont", XS_SDL__SFont_UseFont, file);
- newXS("SDL::SFont::PutString", XS_SDL__SFont_PutString, file);
- newXS("SDL::SFont::TextWidth", XS_SDL__SFont_TextWidth, file);
-#endif
-
- /* Initialisation Section */
-
-#if XSubPPtmpAAAA
-#endif
-#line 377 "SFont.c"
-
- /* End of Initialisation Section */
-
- XSRETURN_YES;
-}
-
+++ /dev/null
-//
-// SFont.xs
-//
-// Original SFont code Copyright (C) Karl Bartel
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#include "../defines.h"
-#include "../SFont.h"
-
-#ifdef HAVE_SDL_IMAGE
-#include <SDL_image.h>
-
-SFont_FontInfo InternalFont;
-Uint32 SFont_GetPixel(SDL_Surface *Surface, Sint32 X, Sint32 Y)
-{
-
- Uint8 *bits;
- Uint32 Bpp;
- if (X<0) puts("SFONT ERROR: x too small in SFont_GetPixel. Report this to <karlb@gmx.net>");
- if (X>=Surface->w) puts("SFONT ERROR: x too big in SFont_GetPixel. Report this to <karlb@gmx.net>");
-
- Bpp = Surface->format->BytesPerPixel;
-
- bits = ((Uint8 *)Surface->pixels)+Y*Surface->pitch+X*Bpp;
-
- // Get the pixel
- switch(Bpp) {
- case 1:
- return *((Uint8 *)Surface->pixels + Y * Surface->pitch + X);
- break;
- case 2:
- return *((Uint16 *)Surface->pixels + Y * Surface->pitch/2 + X);
- break;
- case 3: { // Format/endian independent
- Uint8 r, g, b;
- r = *((bits)+Surface->format->Rshift/8);
- g = *((bits)+Surface->format->Gshift/8);
- b = *((bits)+Surface->format->Bshift/8);
- return SDL_MapRGB(Surface->format, r, g, b);
- }
- break;
- case 4:
- return *((Uint32 *)Surface->pixels + Y * Surface->pitch/4 + X);
- break;
- }
-
- return -1;
-}
-
-void SFont_InitFont2(SFont_FontInfo *Font)
-{
- int x = 0, i = 0;
-
- if ( Font->Surface==NULL ) {
- printf("The font has not been loaded!\n");
- exit(1);
- }
-
- if (SDL_MUSTLOCK(Font->Surface)) SDL_LockSurface(Font->Surface);
-
- while ( x < Font->Surface->w ) {
- if(SFont_GetPixel(Font->Surface,x,0)==SDL_MapRGB(Font->Surface->format,255,0,255)) {
- Font->CharPos[i++]=x;
- while (( x < Font->Surface->w-1) && (SFont_GetPixel(Font->Surface,x,0)==SDL_MapRGB(Font->Surface->format,255,0,255)))
- x++;
- Font->CharPos[i++]=x;
- }
- x++;
- }
- if (SDL_MUSTLOCK(Font->Surface)) SDL_UnlockSurface(Font->Surface);
-
- Font->h=Font->Surface->h;
- SDL_SetColorKey(Font->Surface, SDL_SRCCOLORKEY, SFont_GetPixel(Font->Surface, 0, Font->Surface->h-1));
-}
-
-void SFont_InitFont(SDL_Surface *Font)
-{
- InternalFont.Surface=Font;
- SFont_InitFont2(&InternalFont);
-}
-
-void SFont_PutString2(SDL_Surface *Surface, SFont_FontInfo *Font, int x, int y, char *text)
-{
- int ofs;
- int i=0;
- SDL_Rect srcrect,dstrect;
-
- while (text[i]!='\0') {
- if (text[i]==' ') {
- x+=Font->CharPos[2]-Font->CharPos[1];
- i++;
- }
- else {
-// printf("-%c- %c - %u\n",228,text[i],text[i]);
- ofs=(text[i]-33)*2+1;
-// printf("printing %c %d\n",text[i],ofs);
- srcrect.w = dstrect.w = (Font->CharPos[ofs+2]+Font->CharPos[ofs+1])/2-(Font->CharPos[ofs]+Font->CharPos[ofs-1])/2;
- srcrect.h = dstrect.h = Font->Surface->h-1;
- srcrect.x = (Font->CharPos[ofs]+Font->CharPos[ofs-1])/2;
- srcrect.y = 1;
- dstrect.x = x-(float)(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2;
- dstrect.y = y;
-
- SDL_BlitSurface( Font->Surface, &srcrect, Surface, &dstrect);
-
- x+=Font->CharPos[ofs+1]-Font->CharPos[ofs];
- i++;
- }
- }
-}
-
-void SFont_PutString(SDL_Surface *Surface, int x, int y, char *text)
-{
- SFont_PutString2(Surface, &InternalFont, x, y, text);
-}
-
-int SFont_TextWidth2(SFont_FontInfo *Font, char *text)
-{
- int ofs=0;
- int i=0,x=0;
-
- while (text[i]!='\0') {
- if (text[i]==' ') {
- x+=Font->CharPos[2]-Font->CharPos[1];
- i++;
- }
- else {
- ofs=(text[i]-33)*2+1;
- x+=Font->CharPos[ofs+1]-Font->CharPos[ofs];
- i++;
- }
- }
-// printf ("--%d\n",x);
- return x;
-}
-
-int SFont_TextWidth(char *text)
-{
- return SFont_TextWidth2(&InternalFont, text);
-}
-
-void SFont_XCenteredString2(SDL_Surface *Surface, SFont_FontInfo *Font, int y, char *text)
-{
- SFont_PutString2(Surface, Font, Surface->w/2-SFont_TextWidth2(Font,text)/2, y, text);
-}
-
-void SFont_XCenteredString(SDL_Surface *Surface, int y, char *text)
-{
- SFont_XCenteredString2(Surface, &InternalFont, y, text);
-}
-
-void SFont_InternalInput( SDL_Surface *Dest, SFont_FontInfo *Font, int x, int y, int PixelWidth, char *text)
-{
- SDL_Event event;
- int ch=-1,blink=0;
- long blinktimer=0;
- SDL_Surface *Back;
- SDL_Rect rect;
- int previous;
-// int ofs=(text[0]-33)*2+1;
-// int leftshift=(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2;
-
- Back = SDL_AllocSurface(Dest->flags,
- Dest->w,
- Font->h,
- Dest->format->BitsPerPixel,
- Dest->format->Rmask,
- Dest->format->Gmask,
- Dest->format->Bmask, 0);
- rect.x=0;
- rect.y=y;
- rect.w=Dest->w;
- rect.h=Font->Surface->h;
- SDL_BlitSurface(Dest, &rect, Back, NULL);
- SFont_PutString2(Dest,Font,x,y,text);
- SDL_UpdateRects(Dest, 1, &rect);
-
- // start input
- previous=SDL_EnableUNICODE(1);
- blinktimer=SDL_GetTicks();
- while (ch!=SDLK_RETURN) {
- if (event.type==SDL_KEYDOWN) {
- ch=event.key.keysym.unicode;
- if (((ch>31)||(ch=='\b')) && (ch<128)) {
- if ((ch=='\b')&&(strlen(text)>0))
- text[strlen(text)-1]='\0';
- else if (ch!='\b')
- sprintf(text,"%s%c",text,ch);
- if (SFont_TextWidth2(Font,text)>PixelWidth) text[strlen(text)-1]='\0';
- SDL_BlitSurface( Back, NULL, Dest, &rect);
- SFont_PutString2(Dest, Font, x, y, text);
- SDL_UpdateRects(Dest, 1, &rect);
-// printf("%s ## %d\n",text,strlen(text));
- SDL_WaitEvent(&event);
- }
- }
- if (SDL_GetTicks()>blinktimer) {
- blink=1-blink;
- blinktimer=SDL_GetTicks()+500;
- if (blink) {
- SFont_PutString2(Dest, Font, x+SFont_TextWidth2(Font,text), y, "|");
- SDL_UpdateRects(Dest, 1, &rect);
-// SDL_UpdateRect(Dest, x+SFont_TextWidth2(Font,text), y, SFont_TextWidth2(Font,"|"), Font->Surface->h);
- } else {
- SDL_BlitSurface( Back, NULL, Dest, &rect);
- SFont_PutString2(Dest, Font, x, y, text);
- SDL_UpdateRects(Dest, 1, &rect);
-// SDL_UpdateRect(Dest, x-(Font->CharPos[ofs]-Font->CharPos[ofs-1])/2, y, PixelWidth, Font->Surface->h);
- }
- }
- SDL_Delay(1);
- SDL_PollEvent(&event);
- }
- text[strlen(text)]='\0';
- SDL_FreeSurface(Back);
- SDL_EnableUNICODE(previous); //restore the previous state
-}
-
-void SFont_Input2( SDL_Surface *Dest, SFont_FontInfo *Font, int x, int y, int PixelWidth, char *text)
-{
- SFont_InternalInput( Dest, Font, x, y, PixelWidth, text);
-}
-void SFont_Input( SDL_Surface *Dest, int x, int y, int PixelWidth, char *text)
-{
- SFont_Input2( Dest, &InternalFont, x, y, PixelWidth, text);
-}
-
-#endif
-
-MODULE = SDL::SFont PACKAGE = SDL::SFont
-PROTOTYPES : DISABLE
-
-#ifdef HAVE_SDL_IMAGE
-
-SDL_Surface *
-NewFont ( filename )
- char *filename
- CODE:
- RETVAL = IMG_Load(filename);
- SFont_InitFont(RETVAL);
- OUTPUT:
- RETVAL
-
-void
-UseFont ( surface )
- SDL_Surface *surface
- CODE:
- SFont_InitFont(surface);
-
-void
-PutString ( surface, x, y, text )
- SDL_Surface *surface
- int x
- int y
- char *text
- CODE:
- SFont_PutString( surface, x, y, text );
-
-int
-TextWidth ( text )
- char *text
- CODE:
- RETVAL = SFont_TextWidth(text);
- OUTPUT:
- RETVAL
-
-
-#endif
+++ /dev/null
-//
-// SDL.xs
-//
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library 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
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-
-#ifdef HAVE_GL
-#include <gl.h>
-#endif
-
-#ifdef HAVE_GLU
-#include <glu.h>
-#endif
-
-#ifdef HAVE_SDL_IMAGE
-#include <SDL_image.h>
-#endif
-
-#ifdef HAVE_SDL_MIXER
-#include <SDL_mixer.h>
-void (*mix_music_finished_cv)();
-#endif
-
-#ifdef HAVE_SDL_SOUND
-#include <SDL_sound.h>
-#endif
-
-#ifdef HAVE_SDL_NET
-#include <SDL_net.h>
-#endif
-
-#ifdef HAVE_SDL_TTF
-#include <SDL_ttf.h>
-#define TEXT_SOLID 1
-#define TEXT_SHADED 2
-#define TEXT_BLENDED 4
-#define UTF8_SOLID 8
-#define UTF8_SHADED 16
-#define UTF8_BLENDED 32
-#define UNICODE_SOLID 64
-#define UNICODE_SHADED 128
-#define UNICODE_BLENDED 256
-#endif
-
-#ifdef HAVE_SMPEG
-#include <smpeg/smpeg.h>
-#ifdef HAVE_SDL_MIXER
-static int sdl_perl_use_smpeg_audio = 0;
-#endif
-#endif
-
-#ifdef HAVE_SDL_GFX
-#include <SDL_rotozoom.h>
-#include <SDL_gfxPrimitives.h>
-#include <SDL_framerate.h>
-#include <SDL_imageFilter.h>
-#endif
-
-#ifdef HAVE_SDL_SVG
-#include <SDL_svg.h>
-#endif
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#include "defines.h"
-
-Uint32
-sdl_perl_timer_callback ( Uint32 interval, void* param )
-{
- Uint32 retval;
- int back;
- SV* cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)param;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(interval)));
- PUTBACK;
-
- if (0 != (back = call_sv(cmd,G_SCALAR))) {
- SPAGAIN;
- if (back != 1 ) Perl_croak (aTHX_ "Timer Callback failed!");
- retval = POPi;
- } else {
- Perl_croak(aTHX_ "Timer Callback failed!");
- }
-
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-
- return retval;
-}
-
-void
-sdl_perl_audio_callback ( void* data, Uint8 *stream, int len )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)data;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(PTR2IV(stream))));
- XPUSHs(sv_2mortal(newSViv(len)));
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-#ifdef HAVE_SDL_MIXER
-
-void
-sdl_perl_music_callback ( void )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)Mix_GetMusicHookData();
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_music_finished_callback ( void )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)mix_music_finished_cv;
- if ( cmd == NULL ) return;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-#endif
-
-#define INIT_NS_APPLICATION
-#define QUIT_NS_APPLICATION
-
-
-void
-sdl_perl_atexit (void)
-{
- QUIT_NS_APPLICATION
- SDL_Quit();
-}
-
-void boot_SDL();
-void boot_SDL__OpenGL();
-
-XS(boot_SDL_perl)
-{
- GET_TLS_CONTEXT
- boot_SDL();
-}
-
-MODULE = SDL_perl PACKAGE = SDL
-PROTOTYPES : DISABLE
-
-char *
-GetError ()
- CODE:
- RETVAL = SDL_GetError();
- OUTPUT:
- RETVAL
-
-int
-Init ( flags )
- Uint32 flags
- CODE:
- INIT_NS_APPLICATION
- RETVAL = SDL_Init(flags);
-#ifdef HAVE_TLS_CONTEXT
- Perl_call_atexit(PERL_GET_CONTEXT, (void*)sdl_perl_atexit,0);
-#else
- atexit(sdl_perl_atexit);
-#endif
- OUTPUT:
- RETVAL
-
-int
-InitSubSystem ( flags )
- Uint32 flags
- CODE:
- RETVAL = SDL_InitSubSystem(flags);
- OUTPUT:
- RETVAL
-
-void
-QuitSubSystem ( flags )
- Uint32 flags
- CODE:
- SDL_QuitSubSystem(flags);
-
-void
-Quit ()
- CODE:
- QUIT_NS_APPLICATION
- SDL_Quit();
-
-int
-WasInit ( flags )
- Uint32 flags
- CODE:
- RETVAL = SDL_WasInit(flags);
- OUTPUT:
- RETVAL
-
-void
-Delay ( ms )
- int ms
- CODE:
- SDL_Delay(ms);
-
-Uint32
-GetTicks ()
- CODE:
- RETVAL = SDL_GetTicks();
- OUTPUT:
- RETVAL
-
-int
-SetTimer ( interval, callback )
- Uint32 interval
- SDL_TimerCallback callback
- CODE:
- RETVAL = SDL_SetTimer(interval,callback);
- OUTPUT:
- RETVAL
-
-SDL_TimerID
-AddTimer ( interval, callback, param )
- Uint32 interval
- SDL_NewTimerCallback callback
- void *param
- CODE:
- RETVAL = SDL_AddTimer(interval,callback,param);
- OUTPUT:
- RETVAL
-
-SDL_NewTimerCallback
-PerlTimerCallback ()
- CODE:
- RETVAL = sdl_perl_timer_callback;
- OUTPUT:
- RETVAL
-
-SDL_TimerID
-NewTimer ( interval, cmd )
- Uint32 interval
- void *cmd
- CODE:
- RETVAL = SDL_AddTimer(interval,sdl_perl_timer_callback,cmd);
- OUTPUT:
- RETVAL
-
-Uint32
-RemoveTimer ( id )
- SDL_TimerID id
- CODE:
- RETVAL = SDL_RemoveTimer(id);
- OUTPUT:
- RETVAL
-
-SDL_RWops*
-RWFromFile ( file, mode )
- char* file
- char * mode
- CODE:
- RETVAL = SDL_RWFromFile(file,mode);
- OUTPUT:
- RETVAL
-
-SDL_RWops*
-RWFromFP ( fp, autoclose )
- FILE* fp
- int autoclose
- CODE:
- RETVAL = SDL_RWFromFP(fp,autoclose);
- OUTPUT:
- RETVAL
-
-SDL_RWops*
-RWFromMem ( mem, size )
- char* mem
- int size
- CODE:
- RETVAL = SDL_RWFromMem((void*)mem,size);
- OUTPUT:
- RETVAL
-
-SDL_RWops*
-RWFromConstMem ( mem, size )
- const char* mem
- int size
- CODE:
- RETVAL = SDL_RWFromConstMem((const void*)mem,size);
- OUTPUT:
- RETVAL
-
-SDL_RWops*
-AllocRW ()
- CODE:
- RETVAL = SDL_AllocRW();
- OUTPUT:
- RETVAL
-
-void
-FreeRW ( rw )
- SDL_RWops* rw
- CODE:
- SDL_FreeRW(rw);
-
-int
-RWseek ( rw, off, whence )
- SDL_RWops* rw
- int off
- int whence
- CODE:
- RETVAL = SDL_RWseek(rw,off,whence);
- OUTPUT:
- RETVAL
-
-int
-RWtell ( rw )
- SDL_RWops* rw
- CODE:
- RETVAL = SDL_RWtell(rw);
- OUTPUT:
- RETVAL
-
-int
-RWread ( rw, mem, size, n )
- SDL_RWops* rw
- char* mem
- int size
- int n
- CODE:
- RETVAL = SDL_RWread(rw,mem,size,n);
- OUTPUT:
- RETVAL
-
-int
-RWwrite ( rw, mem, size, n )
- SDL_RWops* rw
- char* mem
- int size
- int n
- CODE:
- RETVAL = SDL_RWwrite(rw,mem,size,n);
- OUTPUT:
- RETVAL
-
-int
-RWclose ( rw )
- SDL_RWops* rw
- CODE:
- RETVAL = SDL_RWclose(rw);
- OUTPUT:
- RETVAL
-
-int
-CDNumDrives ()
- CODE:
- RETVAL = SDL_CDNumDrives();
- OUTPUT:
- RETVAL
-
-char *
-CDName ( drive )
- int drive
- CODE:
- RETVAL = strdup(SDL_CDName(drive));
- OUTPUT:
- RETVAL
-
-SDL_CD *
-CDOpen ( drive )
- int drive
- CODE:
- RETVAL = SDL_CDOpen(drive);
- OUTPUT:
- RETVAL
-
-Uint8
-CDTrackId ( track )
- SDL_CDtrack *track
- CODE:
- RETVAL = track->id;
- OUTPUT:
- RETVAL
-
-Uint8
-CDTrackType ( track )
- SDL_CDtrack *track
- CODE:
- RETVAL = track->type;
- OUTPUT:
- RETVAL
-
-Uint16
-CDTrackLength ( track )
- SDL_CDtrack *track
- CODE:
- RETVAL = track->length;
- OUTPUT:
- RETVAL
-
-Uint32
-CDTrackOffset ( track )
- SDL_CDtrack *track
- CODE:
- RETVAL = track->offset;
- OUTPUT:
- RETVAL
-
-Uint32
-CDStatus ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = SDL_CDStatus(cd);
- OUTPUT:
- RETVAL
-
-int
-CDPlayTracks ( cd, start_track, ntracks, start_frame, nframes )
- SDL_CD *cd
- int start_track
- int ntracks
- int start_frame
- int nframes
- CODE:
- RETVAL = SDL_CDPlayTracks(cd,start_track,start_frame,ntracks,nframes);
- OUTPUT:
- RETVAL
-
-int
-CDPlay ( cd, start, length )
- SDL_CD *cd
- int start
- int length
- CODE:
- RETVAL = SDL_CDPlay(cd,start,length);
- OUTPUT:
- RETVAL
-
-int
-CDPause ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = SDL_CDPause(cd);
- OUTPUT:
- RETVAL
-
-int
-CDResume ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = SDL_CDResume(cd);
- OUTPUT:
- RETVAL
-
-int
-CDStop ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = SDL_CDStop(cd);
- OUTPUT:
- RETVAL
-
-int
-CDEject ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = SDL_CDEject(cd);
- OUTPUT:
- RETVAL
-
-void
-CDClose ( cd )
- SDL_CD *cd
- CODE:
- SDL_CDClose(cd);
-
-int
-CDId ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = cd->id;
- OUTPUT:
- RETVAL
-
-int
-CDNumTracks ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = cd->numtracks;
- OUTPUT:
- RETVAL
-
-int
-CDCurTrack ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = cd->cur_track;
- OUTPUT:
- RETVAL
-
-int
-CDCurFrame ( cd )
- SDL_CD *cd
- CODE:
- RETVAL = cd->cur_frame;
- OUTPUT:
- RETVAL
-
-SDL_CDtrack *
-CDTrack ( cd, number )
- SDL_CD *cd
- int number
- CODE:
- RETVAL = (SDL_CDtrack *)(cd->track + number);
- OUTPUT:
- RETVAL
-
-void
-PumpEvents ()
- CODE:
- SDL_PumpEvents();
-
-int
-PushEvent( e )
- SDL_Event *e
- CODE:
- RETVAL = SDL_PushEvent( e );
- OUTPUT:
- RETVAL
-
-SDL_Event *
-NewEvent ()
- CODE:
- RETVAL = (SDL_Event *) safemalloc (sizeof(SDL_Event));
- OUTPUT:
- RETVAL
-
-void
-FreeEvent ( e )
- SDL_Event *e
- CODE:
- safefree(e);
-
-int
-PollEvent ( e )
- SDL_Event *e
- CODE:
- RETVAL = SDL_PollEvent(e);
- OUTPUT:
- RETVAL
-
-int
-WaitEvent ( e )
- SDL_Event *e
- CODE:
- RETVAL = SDL_WaitEvent(e);
- OUTPUT:
- RETVAL
-
-Uint8
-EventState ( type, state )
- Uint8 type
- int state
- CODE:
- RETVAL = SDL_EventState(type,state);
- OUTPUT:
- RETVAL
-
-Uint8
-EventType ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->type;
- OUTPUT:
- RETVAL
-
-Uint8
-SetEventType ( e, type )
- SDL_Event *e
- Uint8 type
- CODE:
- RETVAL = e->type;
- e->type = type;
- OUTPUT:
- RETVAL
-
-Uint8
-ActiveEventGain ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->active.gain;
- OUTPUT:
- RETVAL
-
-Uint8
-ActiveEventState ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->active.state;
- OUTPUT:
- RETVAL
-
-Uint8
-KeyEventState( e )
- SDL_Event *e
- CODE:
- RETVAL = e->key.state;
- OUTPUT:
- RETVAL
-
-int
-KeyEventSym ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->key.keysym.sym;
- OUTPUT:
- RETVAL
-
-int
-KeyEventMod ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->key.keysym.mod;
- OUTPUT:
- RETVAL
-
-Uint16
-KeyEventUnicode ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->key.keysym.unicode;
- OUTPUT:
- RETVAL
-
-Uint8
-KeyEventScanCode ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->key.keysym.scancode;
- OUTPUT:
- RETVAL
-
-Uint8
-MouseMotionState ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->motion.state;
- OUTPUT:
- RETVAL
-
-Uint16
-MouseMotionX ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->motion.x;
- OUTPUT:
- RETVAL
-
-Uint16
-MouseMotionY ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->motion.y;
- OUTPUT:
- RETVAL
-
-Sint16
-MouseMotionXrel( e )
- SDL_Event *e
- CODE:
- RETVAL = e->motion.xrel;
- OUTPUT:
- RETVAL
-
-Sint16
-MouseMotionYrel ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->motion.yrel;
- OUTPUT:
- RETVAL
-
-Uint8
-MouseButtonState ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->button.state;
- OUTPUT:
- RETVAL
-
-Uint8
-MouseButton ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->button.button;
- OUTPUT:
- RETVAL
-
-Uint16
-MouseButtonX ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->button.x;
- OUTPUT:
- RETVAL
-
-Uint16
-MouseButtonY ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->button.y;
- OUTPUT:
- RETVAL
-
-SDL_SysWMmsg *
-SysWMEventMsg ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->syswm.msg;
- OUTPUT:
- RETVAL
-
-int
-EnableUnicode ( enable )
- int enable
- CODE:
- RETVAL = SDL_EnableUNICODE(enable);
- OUTPUT:
- RETVAL
-
-void
-EnableKeyRepeat ( delay, interval )
- int delay
- int interval
- CODE:
- SDL_EnableKeyRepeat(delay,interval);
-
-Uint32
-GetModState ()
- CODE:
- RETVAL = SDL_GetModState();
- OUTPUT:
- RETVAL
-
-void
-SetModState ( state )
- Uint32 state
- CODE:
- SDL_SetModState(state);
-
-char *
-GetKeyName ( sym )
- int sym
- CODE:
- RETVAL = SDL_GetKeyName(sym);
- OUTPUT:
- RETVAL
-
-SDL_Surface *
-CreateRGBSurface (flags, width, height, depth, Rmask, Gmask, Bmask, Amask )
- Uint32 flags
- int width
- int height
- int depth
- Uint32 Rmask
- Uint32 Gmask
- Uint32 Bmask
- Uint32 Amask
- CODE:
- RETVAL = SDL_CreateRGBSurface ( flags, width, height,
- depth, Rmask, Gmask, Bmask, Amask );
- OUTPUT:
- RETVAL
-
-
-SDL_Surface *
-CreateRGBSurfaceFrom (pixels, width, height, depth, pitch, Rmask, Gmask, Bmask, Amask )
- char *pixels
- int width
- int height
- int depth
- int pitch
- Uint32 Rmask
- Uint32 Gmask
- Uint32 Bmask
- Uint32 Amask
- CODE:
- Uint8* pixeldata;
- Uint32 len = pitch * height;
- New(0,pixeldata,len,Uint8);
- Copy(pixels,pixeldata,len,Uint8);
- RETVAL = SDL_CreateRGBSurfaceFrom ( pixeldata, width, height,
- depth, pitch, Rmask, Gmask, Bmask, Amask );
- OUTPUT:
- RETVAL
-
-#ifdef HAVE_SDL_IMAGE
-
-SDL_Surface *
-IMGLoad ( fname )
- char *fname
- CODE:
- RETVAL = IMG_Load(fname);
- OUTPUT:
- RETVAL
-
-#endif
-
-SDL_Surface*
-SurfaceCopy ( surface )
- SDL_Surface *surface
- CODE:
- Uint8* pixels;
- Uint32 size = surface->pitch * surface->h;
- New(0,pixels,size,Uint8);
- Copy(surface->pixels,pixels,size,Uint8);
- RETVAL = SDL_CreateRGBSurfaceFrom(pixels,surface->w,surface->h,
- surface->format->BitsPerPixel, surface->pitch,
- surface->format->Rmask, surface->format->Gmask,
- surface->format->Bmask, surface->format->Amask);
- OUTPUT:
- RETVAL
-
-void
-FreeSurface ( surface )
- SDL_Surface *surface
- CODE:
- if (surface) {
- Uint8* pixels = surface->pixels;
- Uint32 flags = surface->flags;
- SDL_FreeSurface(surface);
- if (flags & SDL_PREALLOC)
- Safefree(pixels);
- }
-
-Uint32
-SurfaceFlags ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->flags;
- OUTPUT:
- RETVAL
-
-SDL_Palette *
-SurfacePalette ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->palette;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceBitsPerPixel ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->BitsPerPixel;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceBytesPerPixel ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->BytesPerPixel;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceRshift ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Rshift;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceGshift ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Gshift;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceBshift ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Bshift;
- OUTPUT:
- RETVAL
-
-Uint8
-SurfaceAshift ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Ashift;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceRmask( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Rmask;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceGmask ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Gmask;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceBmask ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Bmask;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceAmask ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->Amask;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceColorKey ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->colorkey;
- OUTPUT:
- RETVAL
-
-Uint32
-SurfaceAlpha( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->format->alpha;
- OUTPUT:
- RETVAL
-
-int
-SurfaceW ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->w;
- OUTPUT:
- RETVAL
-
-int
-SurfaceH ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->h;
- OUTPUT:
- RETVAL
-
-Uint16
-SurfacePitch ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = surface->pitch;
- OUTPUT:
- RETVAL
-
-SV*
-SurfacePixels ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = newSVpvn(surface->pixels,surface->pitch*surface->h);
- OUTPUT:
- RETVAL
-
-SDL_Color*
-SurfacePixel ( surface, x, y, ... )
- SDL_Surface *surface
- Sint32 x
- Sint32 y
- CODE:
- SDL_Color* color;
- int pix,index;
- Uint8 r,g,b,a;
- int bpp = surface->format->BytesPerPixel;
- Uint8* p = (Uint8*)surface->pixels + bpp*x + surface->pitch*y;
- if ( items < 3 || items > 4 )
- Perl_croak(aTHX_ "usage: SDL::SurfacePixel(surface,x,y,[color])");
- if ( items == 4) {
- color = (SDL_Color*)SvIV(ST(3));
- pix = SDL_MapRGB(surface->format,color->r,color->g,color->b);
- switch(bpp) {
- case 1:
- *(Uint8*)p = pix;
- break;
- case 2:
- *(Uint16*)p = pix;
- break;
- case 3:
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- p[0] = (pix >> 16) & 0xff;
- p[1] = (pix >> 8) & 0xff;
- p[2] = pix & 0xff;
- } else {
- p[0] = pix & 0xff;
- p[1] = (pix >> 8) & 0xff;
- p[2] = (pix >> 16) & 0xff;
- }
- break;
- case 4:
- *(Uint32*)p = pix;
- break;
- }
- }
- RETVAL = (SDL_Color *) safemalloc(sizeof(SDL_Color));
- switch(bpp) {
- case 1:
- index = *(Uint8*)p;
- memcpy(RETVAL,&surface->format->palette[index],sizeof(SDL_Color));
- break;
- case 2:
- pix = *(Uint16*)p;
- SDL_GetRGB(pix,surface->format,&r,&g,&b);
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
- break;
- case 3:
- case 4:
- pix = *(Uint32*)p;
- SDL_GetRGB(pix,surface->format,&r,&g,&b);
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
- break;
- }
- OUTPUT:
- RETVAL
-
-int
-MUSTLOCK ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_MUSTLOCK(surface);
- OUTPUT:
- RETVAL
-
-int
-SurfaceLock ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_LockSurface(surface);
- OUTPUT:
- RETVAL
-
-void
-SurfaceUnlock ( surface )
- SDL_Surface *surface
- CODE:
- SDL_UnlockSurface(surface);
-
-SDL_Surface *
-GetVideoSurface ()
- CODE:
- RETVAL = SDL_GetVideoSurface();
- OUTPUT:
- RETVAL
-
-
-HV *
-VideoInfo ()
- CODE:
- HV *hv;
- SDL_VideoInfo *info;
- info = (SDL_VideoInfo *) safemalloc ( sizeof(SDL_VideoInfo));
- memcpy(info,SDL_GetVideoInfo(),sizeof(SDL_VideoInfo));
- hv = newHV();
- hv_store(hv,"hw_available",strlen("hw_available"),
- newSViv(info->hw_available),0);
- hv_store(hv,"wm_available",strlen("wm_available"),
- newSViv(info->wm_available),0);
- hv_store(hv,"blit_hw",strlen("blit_hw"),
- newSViv(info->blit_hw),0);
- hv_store(hv,"blit_hw_CC",strlen("blit_hw_CC"),
- newSViv(info->blit_hw_CC),0);
- hv_store(hv,"blit_hw_A",strlen("blit_hw_A"),
- newSViv(info->blit_hw_A),0);
- hv_store(hv,"blit_sw",strlen("blit_sw"),
- newSViv(info->blit_sw),0);
- hv_store(hv,"blit_sw_CC",strlen("blit_sw_CC"),
- newSViv(info->blit_sw_CC),0);
- hv_store(hv,"blit_sw_A",strlen("blit_sw_A"),
- newSViv(info->blit_sw_A),0);
- hv_store(hv,"blit_fill",strlen("blit_fill"),
- newSViv(info->blit_fill),0);
- hv_store(hv,"video_mem",strlen("video_mem"),
- newSViv(info->video_mem),0);
- RETVAL = hv;
- OUTPUT:
- RETVAL
-
-SDL_Rect *
-NewRect ( x, y, w, h )
- Sint16 x
- Sint16 y
- Uint16 w
- Uint16 h
- CODE:
- RETVAL = (SDL_Rect *) safemalloc (sizeof(SDL_Rect));
- RETVAL->x = x;
- RETVAL->y = y;
- RETVAL->w = w;
- RETVAL->h = h;
- OUTPUT:
- RETVAL
-
-void
-FreeRect ( rect )
- SDL_Rect *rect
- CODE:
- safefree(rect);
-
-Sint16
-RectX ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->x = SvIV(ST(1));
- RETVAL = rect->x;
- OUTPUT:
- RETVAL
-
-Sint16
-RectY ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->y = SvIV(ST(1));
- RETVAL = rect->y;
- OUTPUT:
- RETVAL
-
-Uint16
-RectW ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->w = SvIV(ST(1));
- RETVAL = rect->w;
- OUTPUT:
- RETVAL
-
-Uint16
-RectH ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->h = SvIV(ST(1));
- RETVAL = rect->h;
- OUTPUT:
- RETVAL
-
-AV*
-ListModes ( format, flags )
- Uint32 flags
- SDL_PixelFormat *format
- CODE:
- SDL_Rect **mode;
- RETVAL = newAV();
- mode = SDL_ListModes(format,flags);
- if (mode == (SDL_Rect**)-1 ) {
- av_push(RETVAL,newSVpv("all",0));
- } else if (! mode ) {
- av_push(RETVAL,newSVpv("none",0));
- } else {
- for (;*mode;mode++) {
- av_push(RETVAL,newSViv(PTR2IV(*mode)));
- }
- }
- OUTPUT:
- RETVAL
-
-
-SDL_Color *
-NewColor ( r, g, b )
- Uint8 r
- Uint8 g
- Uint8 b
- CODE:
- RETVAL = (SDL_Color *) safemalloc(sizeof(SDL_Color));
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
- OUTPUT:
- RETVAL
-
-Uint8
-ColorR ( color, ... )
- SDL_Color *color
- CODE:
- if (items > 1 ) color->r = SvIV(ST(1));
- RETVAL = color->r;
- OUTPUT:
- RETVAL
-
-Uint8
-ColorG ( color, ... )
- SDL_Color *color
- CODE:
- if (items > 1 ) color->g = SvIV(ST(1));
- RETVAL = color->g;
- OUTPUT:
- RETVAL
-
-Uint8
-ColorB ( color, ... )
- SDL_Color *color
- CODE:
- if (items > 1 ) color->b = SvIV(ST(1));
- RETVAL = color->b;
- OUTPUT:
- RETVAL
-
-void
-FreeColor ( color )
- SDL_Color *color
- CODE:
- return; safefree(color);
-
-SDL_Palette *
-NewPalette ( number )
- int number
- CODE:
- RETVAL = (SDL_Palette *)safemalloc(sizeof(SDL_Palette));
- RETVAL->colors = (SDL_Color *)safemalloc(number *
- sizeof(SDL_Color));
- RETVAL->ncolors = number;
- OUTPUT:
- RETVAL
-
-int
-PaletteNColors ( palette, ... )
- SDL_Palette *palette
- CODE:
- if ( items > 1 ) palette->ncolors = SvIV(ST(1));
- RETVAL = palette->ncolors;
- OUTPUT:
- RETVAL
-
-SDL_Color *
-PaletteColors ( palette, index, ... )
- SDL_Palette *palette
- int index
- CODE:
- if ( items > 2 ) {
- palette->colors[index].r = SvUV(ST(2));
- palette->colors[index].g = SvUV(ST(3));
- palette->colors[index].b = SvUV(ST(4));
- }
- RETVAL = (SDL_Color *)(palette->colors + index);
- OUTPUT:
- RETVAL
-
-int
-VideoModeOK ( width, height, bpp, flags )
- int width
- int height
- int bpp
- Uint32 flags
- CODE:
- RETVAL = SDL_VideoModeOK(width,height,bpp,flags);
- OUTPUT:
- RETVAL
-
-SDL_Surface *
-SetVideoMode ( width, height, bpp, flags )
- int width
- int height
- int bpp
- Uint32 flags
- CODE:
- RETVAL = SDL_SetVideoMode(width,height,bpp,flags);
- OUTPUT:
- RETVAL
-
-void
-UpdateRect ( surface, x, y, w ,h )
- SDL_Surface *surface
- int x
- int y
- int w
- int h
- CODE:
- SDL_UpdateRect(surface,x,y,w,h);
-
-void
-UpdateRects ( surface, ... )
- SDL_Surface *surface
- CODE:
- SDL_Rect *rects, *temp;
- int num_rects,i;
- if ( items < 2 ) return;
- num_rects = items - 1;
- rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
- for(i=0;i<num_rects;i++) {
- temp = (SDL_Rect *)SvIV(ST(i+1));
- rects[i].x = temp->x;
- rects[i].y = temp->y;
- rects[i].w = temp->w;
- rects[i].h = temp->h;
- }
- SDL_UpdateRects(surface,num_rects,rects);
- safefree(rects);
-
-int
-Flip ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_Flip(surface);
- OUTPUT:
- RETVAL
-
-int
-SetColors ( surface, start, ... )
- SDL_Surface *surface
- int start
- CODE:
- SDL_Color *colors,*temp;
- int i, length;
- if ( items < 3 ) { RETVAL = 0; goto all_done; }
- length = items - 2;
- colors = (SDL_Color *)safemalloc(sizeof(SDL_Color)*(length+1));
- for ( i = 0; i < length ; i++ ) {
- temp = (SDL_Color *)SvIV(ST(i+2));
- colors[i].r = temp->r;
- colors[i].g = temp->g;
- colors[i].b = temp->b;
- }
- RETVAL = SDL_SetColors(surface, colors, start, length );
- safefree(colors);
-all_done:
- OUTPUT:
- RETVAL
-
-Uint32
-MapRGB ( surface, r, g, b )
- SDL_Surface *surface
- Uint8 r
- Uint8 g
- Uint8 b
- CODE:
- RETVAL = SDL_MapRGB(surface->format,r,g,b);
- OUTPUT:
- RETVAL
-
-Uint32
-MapRGBA ( surface, r, g, b, a )
- SDL_Surface *surface
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = SDL_MapRGBA(surface->format,r,g,b,a);
- OUTPUT:
- RETVAL
-
-AV *
-GetRGB ( surface, pixel )
- SDL_Surface *surface
- Uint32 pixel
- CODE:
- Uint8 r,g,b;
- SDL_GetRGB(pixel,surface->format,&r,&g,&b);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(r));
- av_push(RETVAL,newSViv(g));
- av_push(RETVAL,newSViv(b));
- OUTPUT:
- RETVAL
-
-AV *
-GetRGBA ( surface, pixel )
- SDL_Surface *surface
- Uint32 pixel
- CODE:
- Uint8 r,g,b,a;
- SDL_GetRGBA(pixel,surface->format,&r,&g,&b,&a);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(r));
- av_push(RETVAL,newSViv(g));
- av_push(RETVAL,newSViv(b));
- av_push(RETVAL,newSViv(a));
- OUTPUT:
- RETVAL
-
-int
-SaveBMP ( surface, filename )
- SDL_Surface *surface
- char *filename
- CODE:
- RETVAL = SDL_SaveBMP(surface,filename);
- OUTPUT:
- RETVAL
-
-int
-SetColorKey ( surface, flag, key )
- SDL_Surface *surface
- Uint32 flag
- SDL_Color *key
- CODE:
- Uint32 pixel = SDL_MapRGB(surface->format,key->r,key->g,key->b);
- RETVAL = SDL_SetColorKey(surface,flag,pixel);
- OUTPUT:
- RETVAL
-
-int
-SetAlpha ( surface, flag, alpha )
- SDL_Surface *surface
- Uint32 flag
- Uint8 alpha
- CODE:
- RETVAL = SDL_SetAlpha(surface,flag,alpha);
- OUTPUT:
- RETVAL
-
-SDL_Surface *
-DisplayFormat ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_DisplayFormat(surface);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-DisplayFormatAlpha ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_DisplayFormatAlpha(surface);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-ConvertRGB ( surface )
- SDL_Surface * surface
- CODE:
- SDL_PixelFormat fmt;
- fmt.palette = NULL;
- fmt.BitsPerPixel = 24;
- fmt.BytesPerPixel = 3;
- fmt.Rmask = 0x000000ff;
- fmt.Gmask = 0x0000ff00;
- fmt.Bmask = 0x00ff0000;
- fmt.Amask = 0x00000000;
- fmt.Rloss = 0;
- fmt.Gloss = 0;
- fmt.Bloss = 0;
- fmt.Aloss = 0;
- fmt.Rshift = 0;
- fmt.Gshift = 8;
- fmt.Bshift = 16;
- fmt.Ashift = 24;
- fmt.colorkey = 0;
- fmt.alpha = 0;
- RETVAL = SDL_ConvertSurface(surface,&fmt,surface->flags);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-ConvertRGBA ( surface )
- SDL_Surface * surface
- CODE:
- SDL_PixelFormat fmt;
- fmt.palette = NULL;
- fmt.BitsPerPixel = 32;
- fmt.BytesPerPixel = 4;
- fmt.Rmask = 0x000000ff;
- fmt.Gmask = 0x0000ff00;
- fmt.Bmask = 0x00ff0000;
- fmt.Amask = 0xff000000;
- fmt.Rloss = 0;
- fmt.Gloss = 0;
- fmt.Bloss = 0;
- fmt.Aloss = 0;
- fmt.Rshift = 0;
- fmt.Gshift = 8;
- fmt.Bshift = 16;
- fmt.Ashift = 24;
- fmt.colorkey = 0;
- fmt.alpha = 0;
- RETVAL = SDL_ConvertSurface(surface,&fmt,surface->flags);
- OUTPUT:
- RETVAL
-
-int
-BlitSurface ( src, src_rect, dest, dest_rect )
- SDL_Surface *src
- SDL_Rect *src_rect
- SDL_Surface *dest
- SDL_Rect *dest_rect
- CODE:
- RETVAL = SDL_BlitSurface(src,src_rect,dest,dest_rect);
- OUTPUT:
- RETVAL
-
-int
-FillRect ( dest, dest_rect, color )
- SDL_Surface *dest
- SDL_Rect *dest_rect
- SDL_Color *color
- CODE:
- Uint32 pixel = SDL_MapRGB(dest->format,color->r,color->g,color->b);
- RETVAL = SDL_FillRect(dest,dest_rect,pixel);
- OUTPUT:
- RETVAL
-
-Uint8
-GetAppState ()
- CODE:
- RETVAL = SDL_GetAppState();
- OUTPUT:
- RETVAL
-
-
-void
-WMSetCaption ( title, icon )
- char *title
- char *icon
- CODE:
- SDL_WM_SetCaption(title,icon);
-
-AV *
-WMGetCaption ()
- CODE:
- char *title,*icon;
- SDL_WM_GetCaption(&title,&icon);
- RETVAL = newAV();
- av_push(RETVAL,newSVpv(title,0));
- av_push(RETVAL,newSVpv(icon,0));
- OUTPUT:
- RETVAL
-
-void
-WMSetIcon ( icon )
- SDL_Surface *icon
- CODE:
- SDL_WM_SetIcon(icon,NULL);
-
-void
-WarpMouse ( x, y )
- Uint16 x
- Uint16 y
- CODE:
- SDL_WarpMouse(x,y);
-
-AV*
-GetMouseState ()
- CODE:
- Uint8 mask;
- int x;
- int y;
- mask = SDL_GetMouseState(&x,&y);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(mask));
- av_push(RETVAL,newSViv(x));
- av_push(RETVAL,newSViv(y));
- OUTPUT:
- RETVAL
-
-AV*
-GetRelativeMouseState ()
- CODE:
- Uint8 mask;
- int x;
- int y;
- mask = SDL_GetRelativeMouseState(&x,&y);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(mask));
- av_push(RETVAL,newSViv(x));
- av_push(RETVAL,newSViv(y));
- OUTPUT:
- RETVAL
-
-SDL_Cursor *
-NewCursor ( data, mask, x ,y )
- SDL_Surface *data
- SDL_Surface *mask
- int x
- int y
- CODE:
- RETVAL = SDL_CreateCursor((Uint8*)data->pixels,
- (Uint8*)mask->pixels,data->w,data->h,x,y);
- OUTPUT:
- RETVAL
-
-void
-FreeCursor ( cursor )
- SDL_Cursor *cursor
- CODE:
- SDL_FreeCursor(cursor);
-
-void
-SetCursor ( cursor )
- SDL_Cursor *cursor
- CODE:
- SDL_SetCursor(cursor);
-
-SDL_Cursor *
-GetCursor ()
- CODE:
- RETVAL = SDL_GetCursor();
- OUTPUT:
- RETVAL
-
-int
-ShowCursor ( toggle )
- int toggle
- CODE:
- RETVAL = SDL_ShowCursor(toggle);
- OUTPUT:
- RETVAL
-
-SDL_AudioSpec *
-NewAudioSpec ( freq, format, channels, samples )
- int freq
- Uint16 format
- Uint8 channels
- Uint16 samples
- CODE:
- RETVAL = (SDL_AudioSpec *)safemalloc(sizeof(SDL_AudioSpec));
- RETVAL->freq = freq;
- RETVAL->format = format;
- RETVAL->channels = channels;
- RETVAL->samples = samples;
- OUTPUT:
- RETVAL
-
-void
-FreeAudioSpec ( spec )
- SDL_AudioSpec *spec
- CODE:
- safefree(spec);
-
-SDL_AudioCVT *
-NewAudioCVT ( src_format, src_channels, src_rate, dst_format, dst_channels, dst_rate)
- Uint16 src_format
- Uint8 src_channels
- int src_rate
- Uint16 dst_format
- Uint8 dst_channels
- int dst_rate
- CODE:
- RETVAL = (SDL_AudioCVT *)safemalloc(sizeof(SDL_AudioCVT));
- if (SDL_BuildAudioCVT(RETVAL,src_format, src_channels, src_rate,
- dst_format, dst_channels, dst_rate)) {
- safefree(RETVAL); RETVAL = NULL; }
- OUTPUT:
- RETVAL
-
-void
-FreeAudioCVT ( cvt )
- SDL_AudioCVT *cvt
- CODE:
- safefree(cvt);
-
-int
-ConvertAudioData ( cvt, data, len )
- SDL_AudioCVT *cvt
- Uint8 *data
- int len
- CODE:
- cvt->len = len;
- cvt->buf = (Uint8*) safemalloc(cvt->len*cvt->len_mult);
- memcpy(cvt->buf,data,cvt->len);
- RETVAL = SDL_ConvertAudio(cvt);
- OUTPUT:
- RETVAL
-
-int
-OpenAudio ( spec, callback )
- SDL_AudioSpec *spec
- SV* callback
- CODE:
- spec->userdata = (void*)callback;
- spec->callback = sdl_perl_audio_callback;
- RETVAL = SDL_OpenAudio(spec,NULL);
- OUTPUT:
- RETVAL
-
-Uint32
-GetAudioStatus ()
- CODE:
- RETVAL = SDL_GetAudioStatus ();
- OUTPUT:
- RETVAL
-
-void
-PauseAudio ( p_on )
- int p_on
- CODE:
- SDL_PauseAudio(p_on);
-
-void
-LockAudio ()
- CODE:
- SDL_LockAudio();
-
-void
-UnlockAudio ()
- CODE:
- SDL_UnlockAudio();
-
-void
-CloseAudio ()
- CODE:
- SDL_CloseAudio();
-
-void
-FreeWAV ( buf )
- Uint8 *buf
- CODE:
- SDL_FreeWAV(buf);
-
-AV *
-LoadWAV ( filename, spec )
- char *filename
- SDL_AudioSpec *spec
- CODE:
- SDL_AudioSpec *temp;
- Uint8 *buf;
- Uint32 len;
-
- RETVAL = newAV();
- temp = SDL_LoadWAV(filename,spec,&buf,&len);
- if ( ! temp ) goto error;
- av_push(RETVAL,newSViv(PTR2IV(temp)));
- av_push(RETVAL,newSViv(PTR2IV(buf)));
- av_push(RETVAL,newSViv(len));
-error:
- OUTPUT:
- RETVAL
-
-#ifdef HAVE_SDL_MIXER
-
-void
-MixAudio ( dst, src, len, volume )
- Uint8 *dst
- Uint8 *src
- Uint32 len
- int volume
- CODE:
- SDL_MixAudio(dst,src,len,volume);
-
-int
-MixOpenAudio ( frequency, format, channels, chunksize )
- int frequency
- Uint16 format
- int channels
- int chunksize
- CODE:
- RETVAL = Mix_OpenAudio(frequency, format, channels, chunksize);
- OUTPUT:
- RETVAL
-
-int
-MixAllocateChannels ( number )
- int number
- CODE:
- RETVAL = Mix_AllocateChannels(number);
- OUTPUT:
- RETVAL
-
-AV *
-MixQuerySpec ()
- CODE:
- int freq, channels, status;
- Uint16 format;
- status = Mix_QuerySpec(&freq,&format,&channels);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(status));
- av_push(RETVAL,newSViv(freq));
- av_push(RETVAL,newSViv(format));
- av_push(RETVAL,newSViv(channels));
- OUTPUT:
- RETVAL
-
-Mix_Chunk *
-MixLoadWAV ( filename )
- char *filename
- CODE:
- RETVAL = Mix_LoadWAV(filename);
- OUTPUT:
- RETVAL
-
-Mix_Music *
-MixLoadMusic ( filename )
- char *filename
- CODE:
- RETVAL = Mix_LoadMUS(filename);
- OUTPUT:
- RETVAL
-
-Mix_Chunk *
-MixQuickLoadWAV ( buf )
- Uint8 *buf
- CODE:
- RETVAL = Mix_QuickLoad_WAV(buf);
- OUTPUT:
- RETVAL
-
-void
-MixFreeChunk( chunk )
- Mix_Chunk *chunk
- CODE:
- Mix_FreeChunk(chunk);
-
-void
-MixFreeMusic ( music )
- Mix_Music *music
- CODE:
- Mix_FreeMusic(music);
-
-void
-MixSetPostMixCallback ( func, arg )
- void *func
- void *arg
- CODE:
- Mix_SetPostMix(func,arg);
-
-void*
-PerlMixMusicHook ()
- CODE:
- RETVAL = sdl_perl_music_callback;
- OUTPUT:
- RETVAL
-
-void
-MixSetMusicHook ( func, arg )
- void *func
- void *arg
- CODE:
- Mix_HookMusic(func,arg);
-
-void
-MixSetMusicFinishedHook ( func )
- void *func
- CODE:
- mix_music_finished_cv = func;
- Mix_HookMusicFinished(sdl_perl_music_finished_callback);
-
-void *
-MixGetMusicHookData ()
- CODE:
- RETVAL = Mix_GetMusicHookData();
- OUTPUT:
- RETVAL
-
-int
-MixReverseChannels ( number )
- int number
- CODE:
- RETVAL = Mix_ReserveChannels ( number );
- OUTPUT:
- RETVAL
-
-int
-MixGroupChannel ( which, tag )
- int which
- int tag
- CODE:
- RETVAL = Mix_GroupChannel(which,tag);
- OUTPUT:
- RETVAL
-
-int
-MixGroupChannels ( from, to, tag )
- int from
- int to
- int tag
- CODE:
- RETVAL = Mix_GroupChannels(from,to,tag);
- OUTPUT:
- RETVAL
-
-int
-MixGroupAvailable ( tag )
- int tag
- CODE:
- RETVAL = Mix_GroupAvailable(tag);
- OUTPUT:
- RETVAL
-
-int
-MixGroupCount ( tag )
- int tag
- CODE:
- RETVAL = Mix_GroupCount(tag);
- OUTPUT:
- RETVAL
-
-int
-MixGroupOldest ( tag )
- int tag
- CODE:
- RETVAL = Mix_GroupOldest(tag);
- OUTPUT:
- RETVAL
-
-int
-MixGroupNewer ( tag )
- int tag
- CODE:
- RETVAL = Mix_GroupNewer(tag);
- OUTPUT:
- RETVAL
-
-int
-MixPlayChannel ( channel, chunk, loops )
- int channel
- Mix_Chunk *chunk
- int loops
- CODE:
- RETVAL = Mix_PlayChannel(channel,chunk,loops);
- OUTPUT:
- RETVAL
-
-int
-MixPlayChannelTimed ( channel, chunk, loops, ticks )
- int channel
- Mix_Chunk *chunk
- int loops
- int ticks
- CODE:
- RETVAL = Mix_PlayChannelTimed(channel,chunk,loops,ticks);
- OUTPUT:
- RETVAL
-
-int
-MixPlayMusic ( music, loops )
- Mix_Music *music
- int loops
- CODE:
- RETVAL = Mix_PlayMusic(music,loops);
- OUTPUT:
- RETVAL
-
-int
-MixFadeInChannel ( channel, chunk, loops, ms )
- int channel
- Mix_Chunk *chunk
- int loops
- int ms
- CODE:
- RETVAL = Mix_FadeInChannel(channel,chunk,loops,ms);
- OUTPUT:
- RETVAL
-
-int
-MixFadeInChannelTimed ( channel, chunk, loops, ms, ticks )
- int channel
- Mix_Chunk *chunk
- int loops
- int ticks
- int ms
- CODE:
- RETVAL = Mix_FadeInChannelTimed(channel,chunk,loops,ms,ticks);
- OUTPUT:
- RETVAL
-
-int
-MixFadeInMusic ( music, loops, ms )
- Mix_Music *music
- int loops
- int ms
- CODE:
- RETVAL = Mix_FadeInMusic(music,loops,ms);
- OUTPUT:
- RETVAL
-
-int
-MixVolume ( channel, volume )
- int channel
- int volume
- CODE:
- RETVAL = Mix_Volume(channel,volume);
- OUTPUT:
- RETVAL
-
-int
-MixVolumeChunk ( chunk, volume )
- Mix_Chunk *chunk
- int volume
- CODE:
- RETVAL = Mix_VolumeChunk(chunk,volume);
- OUTPUT:
- RETVAL
-
-int
-MixVolumeMusic ( volume )
- int volume
- CODE:
- RETVAL = Mix_VolumeMusic(volume);
- OUTPUT:
- RETVAL
-
-int
-MixHaltChannel ( channel )
- int channel
- CODE:
- RETVAL = Mix_HaltChannel(channel);
- OUTPUT:
- RETVAL
-
-int
-MixHaltGroup ( tag )
- int tag
- CODE:
- RETVAL = Mix_HaltGroup(tag);
- OUTPUT:
- RETVAL
-
-int
-MixHaltMusic ()
- CODE:
- RETVAL = Mix_HaltMusic();
- OUTPUT:
- RETVAL
-
-int
-MixExpireChannel ( channel, ticks )
- int channel
- int ticks
- CODE:
- RETVAL = Mix_ExpireChannel ( channel,ticks);
- OUTPUT:
- RETVAL
-
-int
-MixFadeOutChannel ( which, ms )
- int which
- int ms
- CODE:
- RETVAL = Mix_FadeOutChannel(which,ms);
- OUTPUT:
- RETVAL
-
-int
-MixFadeOutGroup ( which, ms )
- int which
- int ms
- CODE:
- RETVAL = Mix_FadeOutGroup(which,ms);
- OUTPUT:
- RETVAL
-
-int
-MixFadeOutMusic ( ms )
- int ms
- CODE:
- RETVAL = Mix_FadeOutMusic(ms);
- OUTPUT:
- RETVAL
-
-Mix_Fading
-MixFadingMusic()
- CODE:
- RETVAL = Mix_FadingMusic();
- OUTPUT:
- RETVAL
-
-Mix_Fading
-MixFadingChannel( which )
- int which
- CODE:
- RETVAL = Mix_FadingChannel(which);
- OUTPUT:
- RETVAL
-
-void
-MixPause ( channel )
- int channel
- CODE:
- Mix_Pause(channel);
-
-void
-MixResume ( channel )
- int channel
- CODE:
- Mix_Resume(channel);
-
-int
-MixPaused ( channel )
- int channel
- CODE:
- RETVAL = Mix_Paused(channel);
- OUTPUT:
- RETVAL
-
-void
-MixPauseMusic ()
- CODE:
- Mix_PauseMusic();
-
-void
-MixResumeMusic ()
- CODE:
- Mix_ResumeMusic();
-
-void
-MixRewindMusic ()
- CODE:
- Mix_RewindMusic();
-
-int
-MixPausedMusic ()
- CODE:
- RETVAL = Mix_PausedMusic();
- OUTPUT:
- RETVAL
-
-int
-MixPlaying( channel )
- int channel
- CODE:
- RETVAL = Mix_Playing(channel);
- OUTPUT:
- RETVAL
-
-int
-MixPlayingMusic()
- CODE:
- RETVAL = Mix_PlayingMusic();
- OUTPUT:
- RETVAL
-
-
-void
-MixCloseAudio ()
- CODE:
- Mix_CloseAudio();
-
-#endif
-
-int
-GLLoadLibrary ( path )
- char *path
- CODE:
- RETVAL = SDL_GL_LoadLibrary(path);
- OUTPUT:
- RETVAL
-
-void*
-GLGetProcAddress ( proc )
- char *proc
- CODE:
- RETVAL = SDL_GL_GetProcAddress(proc);
- OUTPUT:
- RETVAL
-
-int
-GLSetAttribute ( attr, value )
- int attr
- int value
- CODE:
- RETVAL = SDL_GL_SetAttribute(attr, value);
- OUTPUT:
- RETVAL
-
-AV *
-GLGetAttribute ( attr )
- int attr
- CODE:
- int value;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(SDL_GL_GetAttribute(attr, &value)));
- av_push(RETVAL,newSViv(value));
- OUTPUT:
- RETVAL
-
-void
-GLSwapBuffers ()
- CODE:
- SDL_GL_SwapBuffers ();
-
-
-int
-BigEndian ()
- CODE:
- RETVAL = (SDL_BYTEORDER == SDL_BIG_ENDIAN);
- OUTPUT:
- RETVAL
-
-int
-NumJoysticks ()
- CODE:
- RETVAL = SDL_NumJoysticks();
- OUTPUT:
- RETVAL
-
-char *
-JoystickName ( index )
- int index
- CODE:
- RETVAL = (char*)SDL_JoystickName(index);
- OUTPUT:
- RETVAL
-
-SDL_Joystick *
-JoystickOpen ( index )
- int index
- CODE:
- RETVAL = SDL_JoystickOpen(index);
- OUTPUT:
- RETVAL
-
-int
-JoystickOpened ( index )
- int index
- CODE:
- RETVAL = SDL_JoystickOpened(index);
- OUTPUT:
- RETVAL
-
-int
-JoystickIndex ( joystick )
- SDL_Joystick *joystick
- CODE:
- RETVAL = SDL_JoystickIndex(joystick);
- OUTPUT:
- RETVAL
-
-int
-JoystickNumAxes ( joystick )
- SDL_Joystick *joystick
- CODE:
- RETVAL = SDL_JoystickNumAxes(joystick);
- OUTPUT:
- RETVAL
-
-int
-JoystickNumBalls ( joystick )
- SDL_Joystick *joystick
- CODE:
- RETVAL = SDL_JoystickNumBalls(joystick);
- OUTPUT:
- RETVAL
-
-int
-JoystickNumHats ( joystick )
- SDL_Joystick *joystick
- CODE:
- RETVAL = SDL_JoystickNumHats(joystick);
- OUTPUT:
- RETVAL
-
-int
-JoystickNumButtons ( joystick )
- SDL_Joystick *joystick
- CODE:
- RETVAL = SDL_JoystickNumButtons(joystick);
- OUTPUT:
- RETVAL
-
-void
-JoystickUpdate ()
- CODE:
- SDL_JoystickUpdate();
-
-Sint16
-JoystickGetAxis ( joystick, axis )
- SDL_Joystick *joystick
- int axis
- CODE:
- RETVAL = SDL_JoystickGetAxis(joystick,axis);
- OUTPUT:
- RETVAL
-
-Uint8
-JoystickGetHat ( joystick, hat )
- SDL_Joystick *joystick
- int hat
- CODE:
- RETVAL = SDL_JoystickGetHat(joystick,hat);
- OUTPUT:
- RETVAL
-
-Uint8
-JoystickGetButton ( joystick, button)
- SDL_Joystick *joystick
- int button
- CODE:
- RETVAL = SDL_JoystickGetButton(joystick,button);
- OUTPUT:
- RETVAL
-
-AV *
-JoystickGetBall ( joystick, ball )
- SDL_Joystick *joystick
- int ball
- CODE:
- int success,dx,dy;
- success = SDL_JoystickGetBall(joystick,ball,&dx,&dy);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(success));
- av_push(RETVAL,newSViv(dx));
- av_push(RETVAL,newSViv(dy));
- OUTPUT:
- RETVAL
-
-void
-JoystickClose ( joystick )
- SDL_Joystick *joystick
- CODE:
- SDL_JoystickClose(joystick);
-
-Sint16
-JoyAxisEventWhich ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jaxis.which;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyAxisEventAxis ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jaxis.axis;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyAxisEventValue ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jaxis.value;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyButtonEventWhich ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jbutton.which;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyButtonEventButton ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jbutton.button;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyButtonEventState ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jbutton.state;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyHatEventWhich ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jhat.which;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyHatEventHat ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jhat.hat;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyHatEventValue ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jhat.value;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyBallEventWhich ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jball.which;
- OUTPUT:
- RETVAL
-
-Uint8
-JoyBallEventBall ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jball.ball;
- OUTPUT:
- RETVAL
-
-Sint16
-JoyBallEventXrel ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jball.xrel;
- OUTPUT:
- RETVAL
-
-Sint16
-JoyBallEventYrel ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->jball.yrel;
- OUTPUT:
- RETVAL
-
-void
-SetClipRect ( surface, rect )
- SDL_Surface *surface
- SDL_Rect *rect
- CODE:
- SDL_SetClipRect(surface,rect);
-
-SDL_Rect*
-GetClipRect ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = (SDL_Rect*) safemalloc(sizeof(SDL_Rect));
- SDL_GetClipRect(surface,RETVAL);
- OUTPUT:
- RETVAL
-
-
-#ifdef HAVE_SDL_NET
-
-int
-NetInit ()
- CODE:
- RETVAL = SDLNet_Init();
- OUTPUT:
- RETVAL
-
-void
-NetQuit ()
- CODE:
- SDLNet_Quit();
-
-IPaddress*
-NetNewIPaddress ( host, port )
- Uint32 host
- Uint16 port
- CODE:
- RETVAL = (IPaddress*) safemalloc(sizeof(IPaddress));
- RETVAL->host = host;
- RETVAL->port = port;
- OUTPUT:
- RETVAL
-
-Uint32
-NetIPaddressHost ( ip )
- IPaddress *ip
- CODE:
- RETVAL = ip->host;
- OUTPUT:
- RETVAL
-
-Uint16
-NetIPaddressPort ( ip )
- IPaddress *ip
- CODE:
- RETVAL = ip->port;
- OUTPUT:
- RETVAL
-
-void
-NetFreeIPaddress ( ip )
- IPaddress *ip
- CODE:
- safefree(ip);
-
-const char*
-NetResolveIP ( address )
- IPaddress *address
- CODE:
- RETVAL = SDLNet_ResolveIP(address);
- OUTPUT:
- RETVAL
-
-int
-NetResolveHost ( address, host, port )
- IPaddress *address
- const char *host
- Uint16 port
- CODE:
- RETVAL = SDLNet_ResolveHost(address,host,port);
- OUTPUT:
- RETVAL
-
-TCPsocket
-NetTCPOpen ( ip )
- IPaddress *ip
- CODE:
- RETVAL = SDLNet_TCP_Open(ip);
- OUTPUT:
- RETVAL
-
-TCPsocket
-NetTCPAccept ( server )
- TCPsocket server
- CODE:
- RETVAL = SDLNet_TCP_Accept(server);
- OUTPUT:
- RETVAL
-
-IPaddress*
-NetTCPGetPeerAddress ( sock )
- TCPsocket sock
- CODE:
- RETVAL = SDLNet_TCP_GetPeerAddress(sock);
- OUTPUT:
- RETVAL
-
-int
-NetTCPSend ( sock, data, len )
- TCPsocket sock
- void *data
- int len
- CODE:
- RETVAL = SDLNet_TCP_Send(sock,data,len);
- OUTPUT:
- RETVAL
-
-AV*
-NetTCPRecv ( sock, maxlen )
- TCPsocket sock
- int maxlen
- CODE:
- int status;
- void *buffer;
- buffer = safemalloc(maxlen);
- RETVAL = newAV();
- status = SDLNet_TCP_Recv(sock,buffer,maxlen);
- av_push(RETVAL,newSViv(status));
- av_push(RETVAL,newSVpvn((char*)buffer,maxlen));
- OUTPUT:
- RETVAL
-
-void
-NetTCPClose ( sock )
- TCPsocket sock
- CODE:
- SDLNet_TCP_Close(sock);
-
-UDPpacket*
-NetAllocPacket ( size )
- int size
- CODE:
- RETVAL = SDLNet_AllocPacket(size);
- OUTPUT:
- RETVAL
-
-UDPpacket**
-NetAllocPacketV ( howmany, size )
- int howmany
- int size
- CODE:
- RETVAL = SDLNet_AllocPacketV(howmany,size);
- OUTPUT:
- RETVAL
-
-int
-NetResizePacket ( packet, newsize )
- UDPpacket *packet
- int newsize
- CODE:
- RETVAL = SDLNet_ResizePacket(packet,newsize);
- OUTPUT:
- RETVAL
-
-void
-NetFreePacket ( packet )
- UDPpacket *packet
- CODE:
- SDLNet_FreePacket(packet);
-
-void
-NetFreePacketV ( packet )
- UDPpacket **packet
- CODE:
- SDLNet_FreePacketV(packet);
-
-UDPsocket
-NetUDPOpen ( port )
- Uint16 port
- CODE:
- RETVAL = SDLNet_UDP_Open(port);
- OUTPUT:
- RETVAL
-
-int
-NetUDPBind ( sock, channel, address )
- UDPsocket sock
- int channel
- IPaddress *address
- CODE:
- RETVAL = SDLNet_UDP_Bind(sock,channel,address);
- OUTPUT:
- RETVAL
-
-void
-NetUDPUnbind ( sock, channel )
- UDPsocket sock
- int channel
- CODE:
- SDLNet_UDP_Unbind(sock,channel);
-
-IPaddress*
-NetUDPGetPeerAddress ( sock, channel )
- UDPsocket sock
- int channel
- CODE:
- RETVAL = SDLNet_UDP_GetPeerAddress(sock,channel);
- OUTPUT:
- RETVAL
-
-int
-NetUDPSendV ( sock, packets, npackets )
- UDPsocket sock
- UDPpacket **packets
- int npackets
- CODE:
- RETVAL = SDLNet_UDP_SendV(sock,packets,npackets);
- OUTPUT:
- RETVAL
-
-int
-NetUDPSend ( sock, channel, packet )
- UDPsocket sock
- int channel
- UDPpacket *packet
- CODE:
- RETVAL = SDLNet_UDP_Send(sock,channel,packet);
- OUTPUT:
- RETVAL
-
-int
-NetUDPRecvV ( sock, packets )
- UDPsocket sock
- UDPpacket **packets
- CODE:
- RETVAL = SDLNet_UDP_RecvV(sock,packets);
- OUTPUT:
- RETVAL
-
-int
-NetUDPRecv ( sock, packet )
- UDPsocket sock
- UDPpacket *packet
- CODE:
- RETVAL = SDLNet_UDP_Recv(sock,packet);
- OUTPUT:
- RETVAL
-
-void
-NetUDPClose ( sock )
- UDPsocket sock
- CODE:
- SDLNet_UDP_Close(sock);
-
-SDLNet_SocketSet
-NetAllocSocketSet ( maxsockets )
- int maxsockets
- CODE:
- RETVAL = SDLNet_AllocSocketSet(maxsockets);
- OUTPUT:
- RETVAL
-
-int
-NetTCP_AddSocket ( set, sock )
- SDLNet_SocketSet set
- TCPsocket sock
- CODE:
- RETVAL = SDLNet_TCP_AddSocket(set,sock);
- OUTPUT:
- RETVAL
-
-int
-NetUDP_AddSocket ( set, sock )
- SDLNet_SocketSet set
- UDPsocket sock
- CODE:
- RETVAL = SDLNet_UDP_AddSocket(set,sock);
- OUTPUT:
- RETVAL
-
-int
-NetTCP_DelSocket ( set, sock )
- SDLNet_SocketSet set
- TCPsocket sock
- CODE:
- RETVAL = SDLNet_TCP_DelSocket(set,sock);
- OUTPUT:
- RETVAL
-
-int
-NetUDP_DelSocket ( set, sock )
- SDLNet_SocketSet set
- UDPsocket sock
- CODE:
- RETVAL = SDLNet_UDP_DelSocket(set,sock);
- OUTPUT:
- RETVAL
-
-int
-NetCheckSockets ( set, timeout )
- SDLNet_SocketSet set
- Uint32 timeout
- CODE:
- RETVAL = SDLNet_CheckSockets(set,timeout);
- OUTPUT:
- RETVAL
-
-int
-NetSocketReady ( sock )
- SDLNet_GenericSocket sock
- CODE:
- RETVAL = SDLNet_SocketReady(sock);
- OUTPUT:
- RETVAL
-
-void
-NetFreeSocketSet ( set )
- SDLNet_SocketSet set
- CODE:
- SDLNet_FreeSocketSet(set);
-
-void
-NetWrite16 ( value, area )
- Uint16 value
- void *area
- CODE:
- SDLNet_Write16(value,area);
-
-void
-NetWrite32 ( value, area )
- Uint32 value
- void *area
- CODE:
- SDLNet_Write32(value,area);
-
-Uint16
-NetRead16 ( area )
- void *area
- CODE:
- RETVAL = SDLNet_Read16(area);
- OUTPUT:
- RETVAL
-
-Uint32
-NetRead32 ( area )
- void *area
- CODE:
- RETVAL = SDLNet_Read32(area);
- OUTPUT:
- RETVAL
-
-#endif
-
-#ifdef HAVE_SDL_TTF
-
-int
-TTFInit ()
- CODE:
- RETVAL = TTF_Init();
- OUTPUT:
- RETVAL
-
-void
-TTFQuit ()
- CODE:
- TTF_Quit();
-
-TTF_Font*
-TTFOpenFont ( file, ptsize )
- char *file
- int ptsize
- CODE:
- RETVAL = TTF_OpenFont(file,ptsize);
- OUTPUT:
- RETVAL
-
-int
-TTFGetFontStyle ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_GetFontStyle(font);
- OUTPUT:
- RETVAL
-
-void
-TTFSetFontStyle ( font, style )
- TTF_Font *font
- int style
- CODE:
- TTF_SetFontStyle(font,style);
-
-int
-TTFFontHeight ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontHeight(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontAscent ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontAscent(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontDescent ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontDescent(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontLineSkip ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontLineSkip(font);
- OUTPUT:
- RETVAL
-
-AV*
-TTFGlyphMetrics ( font, ch )
- TTF_Font *font
- Uint16 ch
- CODE:
- int minx, miny, maxx, maxy, advance;
- RETVAL = newAV();
- TTF_GlyphMetrics(font, ch, &minx, &miny, &maxx, &maxy, &advance);
- av_push(RETVAL,newSViv(minx));
- av_push(RETVAL,newSViv(miny));
- av_push(RETVAL,newSViv(maxx));
- av_push(RETVAL,newSViv(maxy));
- av_push(RETVAL,newSViv(advance));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeText ( font, text )
- TTF_Font *font
- char *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeText(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeUTF8 ( font, text )
- TTF_Font *font
- char *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeUTF8(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeUNICODE ( font, text )
- TTF_Font *font
- const Uint16 *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeUNICODE(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextSolid ( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderText_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Solid ( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUTF8_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODESolid ( font, text, fg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUNICODE_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphSolid ( font, ch, fg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderGlyph_Solid(font,ch,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextShaded ( font, text, fg, bg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderText_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Shaded( font, text, fg, bg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODEShaded( font, text, fg, bg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderUNICODE_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphShaded ( font, ch, fg, bg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderGlyph_Shaded(font,ch,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextBlended( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderText_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Blended( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUTF8_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODEBlended( font, text, fg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUNICODE_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphBlended( font, ch, fg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderGlyph_Blended(font,ch,*fg);
- OUTPUT:
- RETVAL
-
-void
-TTFCloseFont ( font )
- TTF_Font *font
- CODE:
- TTF_CloseFont(font);
-
-SDL_Surface*
-TTFPutString ( font, mode, surface, x, y, fg, bg, text )
- TTF_Font *font
- int mode
- SDL_Surface *surface
- int x
- int y
- SDL_Color *fg
- SDL_Color *bg
- char *text
- CODE:
- SDL_Surface *img;
- SDL_Rect dest;
- int w,h;
- dest.x = x;
- dest.y = y;
- RETVAL = NULL;
- switch (mode) {
- case TEXT_SOLID:
- img = TTF_RenderText_Solid(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_SHADED:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_BLENDED:
- img = TTF_RenderText_Blended(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SOLID:
- img = TTF_RenderUTF8_Solid(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SHADED:
- img = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_BLENDED:
- img = TTF_RenderUTF8_Blended(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SOLID:
- img = TTF_RenderUNICODE_Solid(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SHADED:
- img = TTF_RenderUNICODE_Shaded(font,(Uint16*)text,*fg,*bg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_BLENDED:
- img = TTF_RenderUNICODE_Blended(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- default:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- }
- if ( img && img->format && img->format->palette ) {
- SDL_Color *c = &img->format->palette->colors[0];
- Uint32 key = SDL_MapRGB( img->format, c->r, c->g, c->b );
- SDL_SetColorKey(img,SDL_SRCCOLORKEY,key );
- if (0 > SDL_BlitSurface(img,NULL,surface,&dest)) {
- SDL_FreeSurface(img);
- RETVAL = NULL;
- } else {
- RETVAL = img;
- }
- }
- OUTPUT:
- RETVAL
-
-#endif
-
-SDL_Overlay*
-CreateYUVOverlay ( width, height, format, display )
- int width
- int height
- Uint32 format
- SDL_Surface *display
- CODE:
- RETVAL = SDL_CreateYUVOverlay ( width, height, format, display );
- OUTPUT:
- RETVAL
-
-int
-LockYUVOverlay ( overlay )
- SDL_Overlay *overlay
- CODE:
- RETVAL = SDL_LockYUVOverlay(overlay);
- OUTPUT:
- RETVAL
-
-void
-UnlockYUVOverlay ( overlay )
- SDL_Overlay *overlay
- CODE:
- SDL_UnlockYUVOverlay(overlay);
-
-int
-DisplayYUVOverlay ( overlay, dstrect )
- SDL_Overlay *overlay
- SDL_Rect *dstrect
- CODE:
- RETVAL = SDL_DisplayYUVOverlay ( overlay, dstrect );
- OUTPUT:
- RETVAL
-
-void
-FreeYUVOverlay ( overlay )
- SDL_Overlay *overlay
- CODE:
- SDL_FreeYUVOverlay ( overlay );
-
-Uint32
-OverlayFormat ( overlay, ... )
- SDL_Overlay *overlay
- CODE:
- if ( items > 1 )
- overlay->format = SvIV(ST(1));
- RETVAL = overlay->format;
- OUTPUT:
- RETVAL
-
-int
-OverlayW ( overlay, ... )
- SDL_Overlay *overlay
- CODE:
- if ( items > 1 )
- overlay->w = SvIV(ST(1));
- RETVAL = overlay->w;
- OUTPUT:
- RETVAL
-
-int
-OverlayH ( overlay, ... )
- SDL_Overlay *overlay
- CODE:
- if ( items > 1 )
- overlay->h = SvIV(ST(1));
- RETVAL = overlay->h;
- OUTPUT:
- RETVAL
-
-int
-OverlayPlanes ( overlay, ... )
- SDL_Overlay *overlay
- CODE:
- if ( items > 1 )
- overlay->planes = SvIV(ST(1));
- RETVAL = overlay->planes;
- OUTPUT:
- RETVAL
-
-Uint32
-OverlayHW ( overlay )
- SDL_Overlay *overlay
- CODE:
- RETVAL = overlay->hw_overlay;
- OUTPUT:
- RETVAL
-
-Uint16*
-OverlayPitches ( overlay )
- SDL_Overlay *overlay
- CODE:
- RETVAL = overlay->pitches;
- OUTPUT:
- RETVAL
-
-Uint8**
-OverlayPixels ( overlay )
- SDL_Overlay *overlay
- CODE:
- RETVAL = overlay->pixels;
- OUTPUT:
- RETVAL
-
-int
-WMToggleFullScreen ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_WM_ToggleFullScreen(surface);
- OUTPUT:
- RETVAL
-
-Uint32
-WMGrabInput ( mode )
- Uint32 mode
- CODE:
- RETVAL = SDL_WM_GrabInput(mode);
- OUTPUT:
- RETVAL
-
-int
-WMIconifyWindow ()
- CODE:
- RETVAL = SDL_WM_IconifyWindow();
- OUTPUT:
- RETVAL
-
-int
-ResizeEventW ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->resize.w;
- OUTPUT:
- RETVAL
-
-int
-ResizeEventH ( e )
- SDL_Event *e
- CODE:
- RETVAL = e->resize.h;
- OUTPUT:
- RETVAL
-
-char*
-AudioDriverName ()
- CODE:
- char name[32];
- RETVAL = SDL_AudioDriverName(name,32);
- OUTPUT:
- RETVAL
-
-Uint32
-GetKeyState ( k )
- SDLKey k
- CODE:
- if (k >= SDLK_LAST) Perl_croak (aTHX_ "Key out of range");
- RETVAL = SDL_GetKeyState(NULL)[k];
- OUTPUT:
- RETVAL
-
-#ifdef HAVE_SMPEG
-
-SMPEG_Info *
-NewSMPEGInfo()
- CODE:
- RETVAL = (SMPEG_Info *) safemalloc (sizeof(SMPEG_Info));
- OUTPUT:
- RETVAL
-
-void
-FreeSMPEGInfo ( info )
- SMPEG_Info *info
- CODE:
- safefree(info);
-
-int
-SMPEGInfoHasAudio ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->has_audio;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoHasVideo ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->has_video;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoWidth ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->width;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoHeight ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->height;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoCurrentFrame ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->current_frame;
- OUTPUT:
- RETVAL
-
-double
-SMPEGInfoCurrentFPS ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->current_fps;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoCurrentAudioFrame ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->audio_current_frame;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoCurrentOffset ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->current_offset;
- OUTPUT:
- RETVAL
-
-int
-SMPEGInfoTotalSize ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->total_size;
- OUTPUT:
- RETVAL
-
-double
-SMPEGInfoCurrentTime ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->current_time;
- OUTPUT:
- RETVAL
-
-double
-SMPEGInfoTotalTime ( info )
- SMPEG_Info* info
- CODE:
- RETVAL = info->total_time;
- OUTPUT:
- RETVAL
-
-char *
-SMPEGError ( mpeg )
- SMPEG* mpeg
- CODE:
- RETVAL = SMPEG_error(mpeg);
- OUTPUT:
- RETVAL
-
-SMPEG*
-NewSMPEG ( filename, info, use_audio )
- char* filename
- SMPEG_Info* info
- int use_audio
- CODE:
-#ifdef HAVE_SDL_MIXER
- RETVAL = SMPEG_new(filename,info,0);
-#else
- RETVAL = SMPEG_new(filename,info,use_audio);
-#endif
- OUTPUT:
- RETVAL
-
-void
-FreeSMPEG ( mpeg )
- SMPEG* mpeg
- CODE:
- SMPEG_delete(mpeg);
-
-void
-SMPEGEnableAudio ( mpeg , flag )
- SMPEG* mpeg
- int flag
- CODE:
- SMPEG_enableaudio(mpeg,flag);
-#ifdef HAVE_SDL_MIXER
- sdl_perl_use_smpeg_audio = flag;
-#endif
-
-void
-SMPEGEnableVideo ( mpeg , flag )
- SMPEG* mpeg
- int flag
- CODE:
- SMPEG_enablevideo(mpeg,flag);
-
-void
-SMPEGSetVolume ( mpeg , volume )
- SMPEG* mpeg
- int volume
- CODE:
- SMPEG_setvolume(mpeg,volume);
-
-void
-SMPEGSetDisplay ( mpeg, dest, surfLock )
- SMPEG* mpeg
- SDL_Surface* dest
- SDL_mutex* surfLock
- CODE:
- SMPEG_setdisplay(mpeg,dest,surfLock,NULL);
-
-void
-SMPEGScaleXY ( mpeg, w, h)
- SMPEG* mpeg
- int w
- int h
- CODE:
- SMPEG_scaleXY(mpeg,w,h);
-
-void
-SMPEGScale ( mpeg, scale )
- SMPEG* mpeg
- int scale
- CODE:
- SMPEG_scale(mpeg,scale);
-
-void
-SMPEGPlay ( mpeg )
- SMPEG* mpeg
- CODE:
- SDL_AudioSpec audiofmt;
- Uint16 format;
- int freq, channels;
-#ifdef HAVE_SDL_MIXER
- if (sdl_perl_use_smpeg_audio ) {
- SMPEG_enableaudio(mpeg, 0);
- Mix_QuerySpec(&freq, &format, &channels);
- audiofmt.format = format;
- audiofmt.freq = freq;
- audiofmt.channels = channels;
- SMPEG_actualSpec(mpeg, &audiofmt);
- Mix_HookMusic(SMPEG_playAudioSDL, mpeg);
- SMPEG_enableaudio(mpeg, 1);
- }
-#endif
- SMPEG_play(mpeg);
-
-SMPEGstatus
-SMPEGStatus ( mpeg )
- SMPEG* mpeg
- CODE:
- RETVAL = SMPEG_status(mpeg);
- OUTPUT:
- RETVAL
-
-void
-SMPEGPause ( mpeg )
- SMPEG* mpeg
- CODE:
- SMPEG_pause(mpeg);
-
-void
-SMPEGLoop ( mpeg, repeat )
- SMPEG* mpeg
- int repeat
- CODE:
- SMPEG_loop(mpeg,repeat);
-
-void
-SMPEGStop ( mpeg )
- SMPEG* mpeg
- CODE:
- SMPEG_stop(mpeg);
-#ifdef HAVE_SDL_MIXER
- Mix_HookMusic(NULL, NULL);
-#endif
-
-void
-SMPEGRewind ( mpeg )
- SMPEG* mpeg
- CODE:
- SMPEG_rewind(mpeg);
-
-void
-SMPEGSeek ( mpeg, bytes )
- SMPEG* mpeg
- int bytes
- CODE:
- SMPEG_seek(mpeg,bytes);
-
-void
-SMPEGSkip ( mpeg, seconds )
- SMPEG* mpeg
- float seconds
- CODE:
- SMPEG_skip(mpeg,seconds);
-
-void
-SMPEGSetDisplayRegion ( mpeg, rect )
- SMPEG* mpeg
- SDL_Rect* rect
- CODE:
- SMPEG_setdisplayregion(mpeg,rect->x,rect->y,rect->w,rect->h);
-
-void
-SMPEGRenderFrame ( mpeg, frame )
- SMPEG* mpeg
- int frame
- CODE:
- SMPEG_renderFrame(mpeg,frame);
-
-SMPEG_Info *
-SMPEGGetInfo ( mpeg )
- SMPEG* mpeg
- CODE:
- RETVAL = (SMPEG_Info *) safemalloc (sizeof(SMPEG_Info));
- SMPEG_getinfo(mpeg,RETVAL);
- OUTPUT:
- RETVAL
-
-
-#endif
-
-#ifdef HAVE_SDL_GFX
-
-SDL_Surface *
-GFXRotoZoom ( src, angle, zoom, smooth)
- SDL_Surface * src
- double angle
- double zoom
- int smooth
- CODE:
- RETVAL = rotozoomSurface( src, angle, zoom, smooth);
- OUTPUT:
- RETVAL
-
-SDL_Surface *
-GFXZoom ( src, zoomx, zoomy, smooth)
- SDL_Surface *src
- double zoomx
- double zoomy
- int smooth
- CODE:
- RETVAL = zoomSurface( src, zoomx, zoomy, smooth);
- OUTPUT:
- RETVAL
-
-int
-GFXPixelColor ( dst, x, y, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Uint32 color
- CODE:
- RETVAL = pixelColor( dst, x, y, color);
- OUTPUT:
- RETVAL
-
-int
-GFXPixelRGBA ( dst, x, y, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = pixelRGBA( dst, x, y, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXHlineColor ( dst, x1, x2, y, color )
- SDL_Surface* dst
- Sint16 x1
- Sint16 x2
- Sint16 y
- Uint32 color
- CODE:
- RETVAL = hlineColor( dst, x1, x2, y, color );
- OUTPUT:
- RETVAL
-
-int
-GFXHlineRGBA ( dst, x1, x2, y, r, g, b, a )
- SDL_Surface* dst
- Sint16 x1
- Sint16 x2
- Sint16 y
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = hlineRGBA( dst, x1, x2, y, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXVlineColor ( dst, x, y1, y2, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y1
- Sint16 y2
- Uint32 color
- CODE:
- RETVAL = vlineColor( dst, x, y1, y2, color );
- OUTPUT:
- RETVAL
-
-int
-GFXVlineRGBA ( dst, x, y1, y2, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y1
- Sint16 y2
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = vlineRGBA( dst, x, y1, y2, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXRectangleColor ( dst, x1, y1, x2, y2, color )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint32 color
- CODE:
- RETVAL = rectangleColor( dst, x1, y1, x2, y2, color );
- OUTPUT:
- RETVAL
-
-int
-GFXRectangleRGBA ( dst, x1, y1, x2, y2, r, g, b, a )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = rectangleRGBA( dst, x1, y1, x2, y2, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXBoxColor ( dst, x1, y1, x2, y2, color )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint32 color
- CODE:
- RETVAL = boxColor( dst, x1, y1, x2, y2, color );
- OUTPUT:
- RETVAL
-
-int
-GFXBoxRGBA ( dst, x1, y1, x2, y2, r, g, b, a )
- SDL_Surface* dst;
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = boxRGBA( dst, x1, y1, x2, y2, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXLineColor ( dst, x1, y1, x2, y2, color )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint32 color
- CODE:
- RETVAL = lineColor( dst, x1, y1, x2, y2, color );
- OUTPUT:
- RETVAL
-
-int
-GFXLineRGBA ( dst, x1, y1, x2, y2, r, g, b, a )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = lineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXAalineColor ( dst, x1, y1, x2, y2, color )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint32 color
- CODE:
- RETVAL = aalineColor( dst, x1, y1, x2, y2, color );
- OUTPUT:
- RETVAL
-
-int
-GFXAalineRGBA ( dst, x1, y1, x2, y2, r, g, b, a )
- SDL_Surface* dst
- Sint16 x1
- Sint16 y1
- Sint16 x2
- Sint16 y2
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = aalineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXCircleColor ( dst, x, y, r, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 r
- Uint32 color
- CODE:
- RETVAL = circleColor( dst, x, y, r, color );
- OUTPUT:
- RETVAL
-
-int
-GFXCircleRGBA ( dst, x, y, rad, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rad
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = circleRGBA( dst, x, y, rad, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXAacircleColor ( dst, x, y, r, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 r
- Uint32 color
- CODE:
- RETVAL = aacircleColor( dst, x, y, r, color );
- OUTPUT:
- RETVAL
-
-int
-GFXAacircleRGBA ( dst, x, y, rad, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rad
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = aacircleRGBA( dst, x, y, rad, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledCircleColor ( dst, x, y, r, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 r
- Uint32 color
- CODE:
- RETVAL = filledCircleColor( dst, x, y, r, color );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledCircleRGBA ( dst, x, y, rad, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rad
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = filledCircleRGBA( dst, x, y, rad, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXEllipseColor ( dst, x, y, rx, ry, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rx
- Sint16 ry
- Uint32 color
- CODE:
- RETVAL = ellipseColor( dst, x, y, rx, ry, color );
- OUTPUT:
- RETVAL
-
-int
-GFXEllipseRGBA ( dst, x, y, rx, ry, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rx
- Sint16 ry
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = ellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXAaellipseColor ( dst, xc, yc, rx, ry, color )
- SDL_Surface* dst
- Sint16 xc
- Sint16 yc
- Sint16 rx
- Sint16 ry
- Uint32 color
- CODE:
- RETVAL = aaellipseColor( dst, xc, yc, rx, ry, color );
- OUTPUT:
- RETVAL
-
-int
-GFXAaellipseRGBA ( dst, x, y, rx, ry, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rx
- Sint16 ry
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = aaellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledEllipseColor ( dst, x, y, rx, ry, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rx
- Sint16 ry
- Uint32 color
- CODE:
- RETVAL = filledEllipseColor( dst, x, y, rx, ry, color );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledEllipseRGBA ( dst, x, y, rx, ry, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rx
- Sint16 ry
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = filledEllipseRGBA( dst, x, y, rx, ry, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledPieColor ( dst, x, y, rad, start, end, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rad
- Sint16 start
- Sint16 end
- Uint32 color
- CODE:
- RETVAL = filledPieColor( dst, x, y, rad, start, end, color );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledPieRGBA ( dst, x, y, rad, start, end, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- Sint16 rad
- Sint16 start
- Sint16 end
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = filledPieRGBA( dst, x, y, rad, start, end, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXPolygonColor ( dst, vx, vy, n, color )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- Uint32 color;
- CODE:
- RETVAL = polygonColor( dst, vx, vy, n, color );
- OUTPUT:
- RETVAL
-
-int
-GFXPolygonRGBA ( dst, vx, vy, n, r, g, b, a )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = polygonRGBA( dst, vx, vy, n, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXAapolygonColor ( dst, vx, vy, n, color )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- Uint32 color
- CODE:
- RETVAL = aapolygonColor( dst, vx, vy, n, color );
- OUTPUT:
- RETVAL
-
-int
-GFXAapolygonRGBA ( dst, vx, vy, n, r, g, b, a )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = aapolygonRGBA( dst, vx, vy, n, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledPolygonColor ( dst, vx, vy, n, color )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- int color
- CODE:
- RETVAL = filledPolygonColor( dst, vx, vy, n, color );
- OUTPUT:
- RETVAL
-
-int
-GFXFilledPolygonRGBA ( dst, vx, vy, n, r, g, b, a )
- SDL_Surface* dst
- Sint16* vx
- Sint16* vy
- int n
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = filledPolygonRGBA( dst, vx, vy, n, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXCharacterColor ( dst, x, y, c, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- char c
- Uint32 color
- CODE:
- RETVAL = characterColor( dst, x, y, c, color );
- OUTPUT:
- RETVAL
-
-int
-GFXCharacterRGBA ( dst, x, y, c, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- char c
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = characterRGBA( dst, x, y, c, r, g, b, a );
- OUTPUT:
- RETVAL
-
-int
-GFXStringColor ( dst, x, y, c, color )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- char* c
- Uint32 color
- CODE:
- RETVAL = stringColor( dst, x, y, c, color );
- OUTPUT:
- RETVAL
-
-int
-GFXStringRGBA ( dst, x, y, c, r, g, b, a )
- SDL_Surface* dst
- Sint16 x
- Sint16 y
- char* c
- Uint8 r
- Uint8 g
- Uint8 b
- Uint8 a
- CODE:
- RETVAL = stringRGBA( dst, x, y, c, r, g, b, a );
- OUTPUT:
- RETVAL
-
-#endif
-
-
-#ifdef HAVE_SDL_SVG
-
-SDL_svg_context *
-SVG_Load ( filename )
- char* filename
- CODE:
- RETVAL = SVG_Load(filename);
- OUTPUT:
- RETVAL
-
-SDL_svg_context *
-SVG_LoadBuffer ( data, len )
- char* data
- int len
- CODE:
- RETVAL = SVG_LoadBuffer(data,len);
- OUTPUT:
- RETVAL
-
-int
-SVG_SetOffset ( source, xoff, yoff )
- SDL_svg_context* source
- double xoff
- double yoff
- CODE:
- RETVAL = SVG_SetOffset(source,xoff,yoff);
- OUTPUT:
- RETVAL
-
-int
-SVG_SetScale ( source, xscale, yscale )
- SDL_svg_context* source
- double xscale
- double yscale
- CODE:
- RETVAL = SVG_SetScale(source,xscale,yscale);
- OUTPUT:
- RETVAL
-
-int
-SVG_RenderToSurface ( source, x, y, dest )
- SDL_svg_context* source
- int x
- int y
- SDL_Surface* dest;
- CODE:
- RETVAL = SVG_RenderToSurface(source,x,y,dest);
- OUTPUT:
- RETVAL
-
-void
-SVG_Free ( source )
- SDL_svg_context* source
- CODE:
- SVG_Free(source);
-
-void
-SVG_Set_Flags ( source, flags )
- SDL_svg_context* source
- Uint32 flags
- CODE:
- SVG_Set_Flags(source,flags);
-
-float
-SVG_Width ( source )
- SDL_svg_context* source
- CODE:
- RETVAL = SVG_Width(source);
- OUTPUT:
- RETVAL
-
-float
-SVG_HEIGHT ( source )
- SDL_svg_context* source
- CODE:
- RETVAL = SVG_Height(source);
- OUTPUT:
- RETVAL
-
-void
-SVG_SetClipping ( source, minx, miny, maxx, maxy )
- SDL_svg_context* source
- int minx
- int miny
- int maxx
- int maxy
- CODE:
- SVG_SetClipping(source,minx,miny,maxx,maxy);
-
-int
-SVG_Version ( )
- CODE:
- RETVAL = SVG_Version();
- OUTPUT:
- RETVAL
-
-
-#endif
-
-#ifdef HAVE_SDL_SOUND
-
-Uint16
-SoundAudioInfoFormat ( audioinfo )
- Sound_AudioInfo* audioinfo
- CODE:
- RETVAL = audioinfo->format;
- OUTPUT:
- RETVAL
-
-Uint8
-SoundAudioInfoChannels ( audioinfo )
- Sound_AudioInfo* audioinfo
- CODE:
- RETVAL = audioinfo->channels;
- OUTPUT:
- RETVAL
-
-Uint32
-SoundAudioInforate ( audioinfo )
- Sound_AudioInfo* audioinfo
- CODE:
- RETVAL = audioinfo->rate;
- OUTPUT:
- RETVAL
-
-AV*
-SoundDecoderInfoExtensions ( decoderinfo )
- Sound_DecoderInfo* decoderinfo
- CODE:
- const char **ext;
- for ( ext = decoderinfo->extensions; *ext != NULL; ext++ ){
- av_push(RETVAL,newSVpv(*ext,0));
- }
- OUTPUT:
- RETVAL
-
-const char*
-SoundDecoderInfoDescription ( decoderinfo )
- Sound_DecoderInfo* decoderinfo
- CODE:
- RETVAL = decoderinfo->description;
- OUTPUT:
- RETVAL
-
-const char*
-SoundDecoderInfoAuthor ( decoderinfo )
- Sound_DecoderInfo* decoderinfo
- CODE:
- RETVAL = decoderinfo->author;
- OUTPUT:
- RETVAL
-
-const char*
-SoundDecoderInfoUrl ( decoderinfo )
- Sound_DecoderInfo* decoderinfo
- CODE:
- RETVAL = decoderinfo->url;
- OUTPUT:
- RETVAL
-
-const Sound_DecoderInfo*
-SoundSampleDecoder ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = sample->decoder;
- OUTPUT:
- RETVAL
-
-Sound_AudioInfo*
-SoundSampleDesired ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = &sample->desired;
- OUTPUT:
- RETVAL
-
-Sound_AudioInfo*
-SoundSampleAcutal ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = &sample->actual;
- OUTPUT:
- RETVAL
-
-char*
-SoundSampleBuffer ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = sample->buffer;
- OUTPUT:
- RETVAL
-
-Uint32
-SoundSampleBufferSize ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = sample->buffer_size;
- OUTPUT:
- RETVAL
-
-Uint32
-SoundSampleFlags ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = (Uint32)sample->flags;
- OUTPUT:
- RETVAL
-
-int
-Sound_Init ( )
- CODE:
- RETVAL = Sound_Init();
- OUTPUT:
- RETVAL
-
-int
-Sound_Quit ( )
- CODE:
- RETVAL = Sound_Quit();
- OUTPUT:
- RETVAL
-
-AV*
-Sound_AvailableDecoders ( )
- CODE:
- RETVAL = newAV();
- const Sound_DecoderInfo** sdi;
- sdi = Sound_AvailableDecoders();
- if (sdi != NULL) {
- for (;*sdi != NULL; ++sdi) {
- av_push(RETVAL,sv_2mortal(newSViv(PTR2IV(*sdi))));
- }
- }
- OUTPUT:
- RETVAL
-
-const char*
-Sound_GetError ( )
- CODE:
- RETVAL = Sound_GetError();
- OUTPUT:
- RETVAL
-
-void
-Sound_ClearError ( )
- CODE:
- Sound_ClearError();
-
-Sound_Sample*
-Sound_NewSample ( rw, ext, desired, buffsize )
- SDL_RWops* rw
- const char* ext
- Sound_AudioInfo* desired
- Uint32 buffsize
- CODE:
- RETVAL = Sound_NewSample(rw,ext,desired,buffsize);
- OUTPUT:
- RETVAL
-
-Sound_Sample*
-Sound_NewSampleFromMem ( data, size, ext, desired, buffsize )
- const Uint8 *data
- Uint32 size
- const char* ext
- Sound_AudioInfo* desired
- Uint32 buffsize
- CODE:
- RETVAL = Sound_NewSampleFromMem(data,size,ext,desired,buffsize);
- OUTPUT:
- RETVAL
-
-Sound_Sample*
-Sound_NewSampleFromFile ( fname, desired, buffsize )
- const char* fname
- Sound_AudioInfo* desired
- Uint32 buffsize
- CODE:
- RETVAL = Sound_NewSampleFromFile(fname,desired,buffsize);
- OUTPUT:
- RETVAL
-
-void
-Sound_FreeSample ( sample )
- Sound_Sample* sample
- CODE:
- Sound_FreeSample(sample);
-
-Sint32
-Sound_GetDuration ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = Sound_GetDuration(sample);
- OUTPUT:
- RETVAL
-
-int
-Sound_SetBufferSize ( sample, size )
- Sound_Sample* sample
- Uint32 size
- CODE:
- RETVAL = Sound_SetBufferSize(sample,size);
- OUTPUT:
- RETVAL
-
-Uint32
-Sound_Decode ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = Sound_Decode(sample);
- OUTPUT:
- RETVAL
-
-Uint32
-Sound_DecodeAll ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = Sound_DecodeAll(sample);
- OUTPUT:
- RETVAL
-
-int
-Sound_Rewind ( sample )
- Sound_Sample* sample
- CODE:
- RETVAL = Sound_Rewind(sample);
- OUTPUT:
- RETVAL
-
-int
-Sound_Seek ( sample, ms )
- Sound_Sample* sample
- Uint32 ms
- CODE:
- RETVAL = Sound_Seek(sample,ms);
- OUTPUT:
- RETVAL
-
-#endif
-
-MODULE = SDL PACKAGE = SDL
-PROTOTYPES : DISABLE
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# test1.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Surface;
-use SDL::Event;
-use SDL::OpenGL;
-use SDL::OpenGL::Constants;
-
-#for ( keys %main:: ) {
-# print "$_\n";
-#}
-
-print "Starting $0\n";
-
-my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl => 1;
-
-print "Initializing OpenGL settings\n";
-printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL_GL_RED_SIZE() );
-printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL_GL_GREEN_SIZE());
-printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL_GL_BLUE_SIZE() );
-printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL_GL_DEPTH_SIZE() );
-printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL_GL_DOUBLEBUFFER() );
-
-sub DrawScene {
-
- glClear( GL_DEPTH_BUFFER_BIT()
- | GL_COLOR_BUFFER_BIT());
-
- glLoadIdentity();
-
- glTranslate(-1.5,0,-6);
-
- glColor(1,1,1);
-
- glBegin(GL_TRIANGLES());
- glColor(1,0,0) if (@_);
- glVertex(0,1,0);
- glColor(0,1,0) if (@_);
- glVertex(-1,-1,0);
- glColor(0,0,1) if (@_);
- glVertex(1,-1,0);
- glEnd();
-
- glTranslate(3,0,0);
-
- glBegin(GL_QUADS());
- glColor(1,0,0) if (@_);
- glVertex(-1,1,0);
- glColor(0,1,0) if (@_);
- glVertex(1,1,0);
- glColor(0,0,1) if (@_);
- glVertex(1,-1,0);
- glColor(1,1,0) if (@_);
- glVertex(-1,-1,0);
- glEnd();
-}
-
-sub DrawColorScene {
- DrawScene 'with color';
-}
-
-sub InitView {
- glViewport(0,0,800,600);
-
- glMatrixMode(GL_PROJECTION());
- glLoadIdentity();
-
- if ( @_ ) {
- gluPerspective(45.0,4/3,0.1,100.0);
- } else {
- glFrustum(-0.1,0.1,-0.075,0.075,0.175,100.0);
- }
-
- glMatrixMode(GL_MODELVIEW());
- glLoadIdentity();
-}
-
-InitView();
-
-DrawScene();
-
-$app->sync();
-
-my $toggle = 1;
-
-$app->loop( {
- SDL_QUIT() => sub { exit(0); },
- SDL_KEYDOWN() => sub { $toggle = ($toggle) ? 0 : 1;
- ($toggle) ? DrawScene() : DrawColorScene();
- $app->sync();
- },
- } );
+++ /dev/null
-#!/usr/bin/env perl
-#
-# test2.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::App;
-use SDL::Surface;
-use SDL::Event;
-use SDL::OpenGL;
-
-package SDL::OpenGL::Cube;
-use SDL;
-use SDL::OpenGL;
-
-my $vertex_array = pack "d24",
- -0.5,-0.5,-0.5, 0.5,-0.5,-0.5, 0.5,0.5,-0.5, -0.5,0.5,-0.5, # back
- -0.5,-0.5,0.5, 0.5,-0.5,0.5, 0.5,0.5,0.5, -0.5,0.5,0.5 ; # front
-
-my $indicies = pack "C24",
- 4,5,6,7, # front
- 1,2,6,5, # right
- 0,1,5,4, # bottom
- 0,3,2,1, # back
- 0,4,7,3, # left
- 2,3,7,6; # top
-
-sub new {
- my $proto = shift;
- my $class = ref($proto) || $proto;
- my $self = {};
- bless $self,$class;
- $self;
-}
-
-sub draw {
- my ($self) = @_;
- $self->color();
- glEnableClientState(SDL::GL_VERTEX_ARRAY());
- glVertexPointer(3,SDL::GL_DOUBLE(),0,$vertex_array);
- glDrawElements(SDL::GL_QUADS(), 24, SDL::GL_UNSIGNED_BYTE(), $indicies);
-}
-
-sub color {
- my ($self,@colors) = @_;
-
- if (@colors) {
- $$self{colored} = 1;
- die "SDL::OpenGL::Cube::color requires 24 floating point color values\n"
- unless (scalar(@colors) == 24);
- $$self{-colors} = pack "f24",@colors;
- }
-
- if ($$self{colored}) {
- glEnableClientState(SDL::GL_COLOR_ARRAY);
- glColorPointer(3,SDL::GL_FLOAT,0,$$self{-colors});
- } else {
- glDisableClientState(SDL::GL_COLOR_ARRAY);
- }
-}
-
-
-1;
-
-
-$delay = $ARGV[0] || 5;
-
-print "Starting $0\n";
-
-my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl =>1;
-
-print "Initializing OpenGL settings\n";
-printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL::SDL_GL_RED_SIZE() );
-printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL::SDL_GL_GREEN_SIZE());
-printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL::SDL_GL_BLUE_SIZE() );
-printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL::SDL_GL_DEPTH_SIZE() );
-printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL::SDL_GL_DOUBLEBUFFER() );
-
-$angle = 0;
-$other = 0;
-
-my @colors = (
- 1.0,1.0,0.0, 1.0,0.0,0.0, 0.0,1.0,0.0, 0.0,0.0,1.0, #back
- 0.4,0.4,0.4, 0.3,0.3,0.3, 0.2,0.2,0.2, 0.1,0.1,0.1 ); #front
-
-
-$cube = new SDL::OpenGL::Cube;
-$cube->color(@colors);
-
-$white = new SDL::OpenGL::Cube;
-
-$toggle = 1;
-
-glEnable(GL_CULL_FACE);
-glFrontFace(GL_CCW);
-glCullFace(GL_BACK);
-
-sub DrawScene {
-
- glClear( SDL::GL_DEPTH_BUFFER_BIT()
- | SDL::GL_COLOR_BUFFER_BIT());
-
- glLoadIdentity();
-
- glTranslate(0,0,-6.0);
- glRotate($angle % 360,1,1,0);
- glRotate($other % 360,0,1,1);
-
- $angle += 6;
- $other += $angle % 5;
-
- glColor(1,1,1);
- $toggle ? $cube->draw() : $white->draw();
-
- $app->sync();
-
-}
-
-sub InitView {
- glViewport(0,0,800,600);
-
- glMatrixMode(SDL::GL_PROJECTION());
- glLoadIdentity();
-
- if ( @_ ) {
- gluPerspective(45.0,4/3,0.1,100.0);
- } else {
- glFrustum(-0.1,0.1,-0.075,0.075,0.3,100.0);
- }
-
- glMatrixMode(SDL::GL_MODELVIEW());
- glLoadIdentity();
-}
-
-InitView();
-
-DrawScene();
-$app->sync();
-
-my $event = new SDL::Event;
-
-for (;;) {
- for (0 .. 5) {
- $event->pump();
- $event->poll();
- exit(0) if ($event->type() == SDL::SDL_QUIT());
- if (SDL::GetKeyState(SDL::SDLK_SPACE()) == SDL::SDL_PRESSED()) {
- $toggle = 0;
- } else {
- $toggle = 1;
- }
- $app->delay($delay);
- }
- DrawScene();
-}
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# test3.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Surface;
-use SDL::Event;
-use SDL::OpenGL;
-
-my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl => 1;
-
-my @points = ( [-4.0, -4.0, 0.0 ],
- [-2.0, 4.0, 0.0 ],
- [ 2.0, -4.0, 0.0 ],
- [ 4.0, 4.0, 0.0 ] );
-
-my $ctrlpoints = pack "d12", map { @$_ } @points;
-
-sub init {
-
- glViewport(0,0,800,600);
- glMatrixMode(GL_PROJECTION());
- glLoadIdentity();
-
- glFrustum (-0.1,0.1,-0.075,0.075,0.3,100.0 );
-
- glMatrixMode(GL_MODELVIEW());
- glLoadIdentity();
-
- glTranslate(0,0,-30);
-
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glShadeModel(GL_FLAT());
- glMap1(GL_MAP1_VERTEX_3(), 0.0, 1.0, 3, 4, $ctrlpoints);
- glEnable(GL_MAP1_VERTEX_3());
-}
-
-sub display {
- glClear(GL_COLOR_BUFFER_BIT);
- glColor(1.0,1.0,1.0);
- glBegin(GL_LINE_STRIP);
- for my $i ( 0 .. 30 ) {
- glEvalCoord1($i/30);
- }
- glEnd();
-
- glPointSize(5);
- glColor(1.0,1.0,0);
- glBegin(GL_POINTS);
- for my $i ( 0 .. 3 ) {
- glVertex( @{$points[$i]} );
- }
- glEnd();
- $app->sync();
-}
-
-init();
-display();
-
-$app->loop({ SDL_QUIT() => sub { exit(); } });
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# test4.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::OpenGL;
-
-our $toggle = 0;
-my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl => 1;
-
-my @points = ( [-1.5, -1.5, 4.0 ], [-0.5, -1.5, 2.0 ],
- [-0.5, -1.5, -1.0 ], [ 1.5, -1.5, 2.0 ],
- [-1.5, -0.5, 1.0 ], [-0.5, -0.5, 3.0 ],
- [ 0.5, -0.5, 0.0 ], [ 1.5, -0.5, -1.0 ],
- [-1.5, 0.5, 4.0 ], [-0.5, 0.5, 0.0 ],
- [ 0.5, 0.5, 3.0 ], [ 1.5, 0.5, 4.0 ],
- [-1.5, 1.5, -2.0 ], [-0.5, 1.5, -2.0 ],
- [ 0.5, 1.5, 0.0 ], [ 1.5, 1.5, -1.0 ],
- );
-
-my $ctrlpoints = pack "d48", map { @$_ } @points;
-
-sub init {
-
- glViewport(0,0,800,600);
- glMatrixMode(GL_PROJECTION());
- glLoadIdentity();
-
- glFrustum (-0.1,0.1,-0.075,0.075,0.3,100.0 );
-
- glMatrixMode(GL_MODELVIEW());
- glLoadIdentity();
-
- glTranslate(0,0,-15);
-
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glMap2(GL_MAP2_VERTEX_3(), 0, 1, 3, 4, 0, 1, 12, 4, $ctrlpoints);
- glEnable(GL_MAP2_VERTEX_3());
- glMapGrid2(20,0,1,20,0,1);
- glEnable(GL_DEPTH_TEST);
- glShadeModel(GL_SMOOTH());
-}
-
-sub initlight {
-
- glEnable(GL_LIGHTING());
- glEnable(GL_LIGHT0());
-
- glLight(GL_LIGHT0(),GL_AMBIENT(),0.2,0.2,0.2,1.0);
- glLight(GL_LIGHT0(),GL_POSITION(), 0.0,0.0,2.0,1.0);
-
- glMaterial(GL_FRONT(), GL_DIFFUSE(),0.6,0.6,0.6,1.0);
- glMaterial(GL_FRONT(), GL_SPECULAR(), 1.0, 1.0, 1.0, 1.0);
- glMaterial(GL_FRONT(), GL_SHININESS(), 50.0);
-
-}
-
-my ($a1,$a2) = (89,305);
-
-sub display {
- glClear(GL_COLOR_BUFFER_BIT() | GL_DEPTH_BUFFER_BIT());
- glColor(1.0,1.0,1.0);
- glPushMatrix();
- glRotate($a1 % 360, 0.0, 1.0, 1.0);
- glRotate($a2 % 360, 1.0, 1.0, 0.0);
- if ($toggle) {
- glEvalMesh2(GL_FILL,0,20,0,20);
- } else {
- glBegin(GL_LINE_STRIP);
- for my $j ( 0 .. 8 ) {
- for my $i ( 0 .. 30 ) {
- glEvalCoord2($i/30,$j/8);
- }
- for my $i ( 0 .. 30 ) {
- glEvalCoord2($j/8,$i/30);
- }
- }
- glEnd();
- }
- glPopMatrix();
- $app->sync();
-}
-
-print STDERR <<USAGE;
-$0
- Press: t Toggle wireframe / solid
- f Toggle fullscreen
- q Quit
- any Rotate Bezier Surface
-USAGE
-
-init();
-initlight();
-display();
-
-my $event = new SDL::Event;
-$app->loop ({
- SDL_QUIT() => sub { exit(); },
- SDL_KEYDOWN() => sub {
- my ($event) = @_;
- if ( $event->key_sym() == SDLK_f ) {
- $app->fullscreen();
- display();
- } elsif ( $event->key_sym() == SDLK_t ) {
- $toggle = $toggle ? 0 : 1;
- display();
- } elsif ( $event->key_sym() == SDLK_q ) {
- exit();
- } else {
- $a1 += 33; $a2 += 5;
- display();
- }
- },
-});
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# test5.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::OpenGL;
-
-my $app = new SDL::App -w => 800, -h => 600, -d => 16, -gl => 1;
-my $toggle;
-
-my $knots = pack "f8", 0,0,0,0,1,1,1,1;
-my $edgePts = pack "f10", 0,0,1,0,1,1,0,1,0,0;
-my $curvePts = pack "f8", 0.25,0.5,0.25,0.75,0.75,0.75,0.75,0.5;
-my $curveKnots = pack "f8", 0,0,0,0,1,1,1,1;
-my $pwlPts = pack "f8", 0.75, 0.5, 0.5, 0.25, 0.25, 0.5, 0, 0;
-
-sub init {
- glViewport(0,0,800,600);
- glMatrixMode(GL_PROJECTION());
- glLoadIdentity();
- glFrustum (-0.1,0.1,-0.075,0.075,0.3,100.0 );
- glMatrixMode(GL_MODELVIEW());
- glLoadIdentity();
- glTranslate(0,0,-15);
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glShadeModel(GL_SMOOTH());
-}
-
-sub initlight {
- glEnable(GL_LIGHTING());
- glEnable(GL_LIGHT0());
- glEnable(GL_DEPTH_TEST());
- glEnable(GL_AUTO_NORMAL());
- glEnable(GL_NORMALIZE());
- glLight(GL_LIGHT0(),GL_AMBIENT(),0.3,0.3,0.3,1.0);
- glLight(GL_LIGHT0(),GL_POSITION(), 1.0,0.0,2.0,1.0);
- glMaterial(GL_FRONT(), GL_DIFFUSE(),0.6,0.6,0.6,1.0);
- glMaterial(GL_FRONT(), GL_SPECULAR(), 1.0, 1.0, 1.0, 1.0);
- glMaterial(GL_FRONT(), GL_SHININESS(), 40.0);
-}
-
-my ($a,$b) = (0,90);
-
-my $ctrldata;
-sub initpts {
- my @points;
- for my $u ( 0 .. 3 ) {
- for my $v ( 0 .. 3 ) {
- push @points, 2.0 * ($u - 1.5);
- push @points, 2.0 * ($v - 1.5);
- if (( $u == 1 || $u == 2 ) && ( $v == 1 || $v == 2 )) {
- push @points, 3.0;
- } else {
- push @points, -3.0;
- }
- }
- }
- $ctrldata = pack "f48", @points;
-}
-
-sub display {
- glClear(GL_COLOR_BUFFER_BIT() | GL_DEPTH_BUFFER_BIT());
- glPushMatrix();
- glRotate($a%360,0,1,0);
- glRotate($b%360,-1,0,0);
- glScale(0.5,0.5,0.5);
- my $nurb = gluNewNurbsRenderer();
- gluNurbsProperty($nurb,GLU_CULLING,GL_TRUE);
- gluBeginSurface($nurb);
- gluNurbsSurface($nurb, 8, $knots, 8, $knots,
- 4*3, 3, $ctrldata,
- 4, 4, GL_MAP2_VERTEX_3);
- if ($toggle) {
- gluBeginTrim($nurb);
- gluPwlCurve($nurb,5,$edgePts,2,GLU_MAP1_TRIM_2);
- gluEndTrim($nurb);
- gluBeginTrim($nurb);
- gluNurbsCurve($nurb,8,$curveKnots, 2, $curvePts, 4, GLU_MAP1_TRIM_2);
- gluPwlCurve($nurb,3,$pwlPts,2,GLU_MAP1_TRIM_2);
- gluEndTrim($nurb);
- }
-
- gluEndSurface($nurb);
-
- glPopMatrix();
- $app->sync();
-}
-
-init();
-initlight();
-initpts();
-display();
-
-print STDERR <<USAGE;
-Press:
-q Quit
-t Toggle Curve & Trim
-f Toggle Fullscreen
-Up/Down/Left/Right Rotate
-
-USAGE
-
-my $event = new SDL::Event;
-$app->loop ({
- SDL_QUIT() => sub { exit(); },
- SDL_KEYDOWN() => sub {
- my ($event) = @_;
- if ( $event->key_sym() == SDLK_f ) {
- $app->fullscreen();
- display();
- } elsif ( $event->key_sym() == SDLK_t ) {
- $toggle = $toggle ? 0 : 1;
- display();
- } elsif ( $event->key_sym() == SDLK_q ) {
- exit();
- } else {
- if ($event->key_sym() == SDLK_LEFT()) {
- $a -= 10;
- } elsif ($event->key_sym() == SDLK_RIGHT()) {
- $a += 10;
- } elsif ($event->key_sym() == SDLK_UP()) {
- $b += 10;
- } elsif ($event->key_sym() == SDLK_DOWN()) {
- $b -= 10;
- }
- display();
- }
- },
-});
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# checkkeys.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::App;
-use SDL::Event;
-
-my %options;
-
-$options{-flags} = SDL_SWSURFACE;
-$options{-title} = $0;
-$options{-width} ||= 640;
-$options{-height} ||= 480;
-$options{-depth} ||= $options{-bpp} || 24;
-
-my $app = new SDL::App %options;
-
-# SDL::EventState(SDL_KEYUP,SDL_DISABLE);
-
-sub print_modifiers
-{
- $mod = SDL::GetModState();
-
- print " modifiers:",
- ($mod & KMOD_LSHIFT) ? " LSHIFT" : "",
- ($mod & KMOD_RSHIFT) ? " RSHIFT" : "",
- ($mod & KMOD_LCTRL) ? " LCTRL" : "",
- ($mod & KMOD_RCTRL) ? " RCTRL" : "",
- ($mod & KMOD_LALT) ? " LALT" : "",
- ($mod & KMOD_RALT) ? " RALT" : "",
- ($mod & KMOD_LMETA) ? " LMETA" : "",
- ($mod & KMOD_RMETA) ? " RMETA" : "",
- ($mod & KMOD_CAPS) ? " CAPS" : "",
- ($mod & KMOD_NUM) ? " NUM" : "",
- ($mod & KMOD_MODE) ? " MODE" : "",
- "\n" ;
-}
-
-sub print_key
-{
- my ($e) = @_;
-
- print "pressed " if (SDL::KeyEventState($e) == SDL_PRESSED);
- print "released " if ( SDL::KeyEventState($e) == SDL_RELEASED);
-
- my $sym = SDL::KeyEventSym($e);
-
- if ($sym) {
- print SDL::GetKeyName($sym);
- } else {
- printf "Unknown Key (scancode = %d) ", SDL::KeyEventScanCode($e);
- }
-
-}
-
-my $event = new SDL::Event;
-
-my $done = 0;
-
-$process_keys = sub {
- print_key($_[0]);
- print_modifiers();
- };
-
-my %events = (
- SDL_KEYUP() => $process_keys,
- SDL_KEYDOWN() => $process_keys,
- SDL_QUIT() => sub { $done = 1; },
-);
-
-while (!$done && $event->wait())
-{
- if ( $events{$event->type()}) {
- &{$events{$event->type()}}($$event);
- }
-};
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# graywin.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::App;
-use SDL::Rect;
-use SDL::Event;
-use SDL::Color;
-
-my %options;
-$options{-flags} = SDL::SWSURFACE;
-$options{-title} = $0;
-$options{-width} ||= 640;
-$options{-height} ||= 480;
-$options{-depth} ||= $options{-bpp} || 8;
-
-my $app = new SDL::App %options;
-
-sub DrawBox {
- my ($x,$y) = @_;
-
- my ($w, $h) = ( int(rand(640)), int(rand(480)) );
-
- my $rect = new SDL::Rect -width => $w, -height => $h,
- -x => ($x - int($w/2)), -y => ($y - int($h/2));
-
- my $color = new SDL::Color -r => rand(256), -g => rand(256), -b => rand(256);
-
- $app->fill($rect,$color);
- $app->update($rect);
-};
-
-$app->loop( {
- SDL_MOUSEBUTTONDOWN() => sub {
- my ($event) = @_;
- DrawBox($event->button_x(),$event->button_y());
- },
- SDL_KEYDOWN() => sub {
- my ($event) = @_;
- $app->warp($options{-width}/2,$options{-height}/2)
- if ($event->key_sym() == SDLK_SPACE);
- $app->fullscreen()
- if ($event->key_sym() == SDLK_f);
- exit(0) if ($event->key_sym() == SDLK_ESCAPE);
- },
- SDL_QUIT() => sub { exit(0); }
-} );
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# loopwave.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-use SDL;
-use MIME::Base64 qw(decode_base64);
-
-die "Could not initialize SDL: ", SDL::GetError()
- if ( 0 > SDL::Init(SDL_INIT_AUDIO()));
-
-my $filename = '/tmp/sample.wav';
-
-my ($wav_spec,$wav_buffer,$wav_len,$wav_pos) = (0,0,0,0);
-
-my $done = 0;
-
-$fillerup = sub {
- my ($data,$len) = @_;
-
- $wav_ptr = $wav_buffer + $wav_pos;
- $wav_remainder = $wav_len - $wav_pos;
-
- while ( $wav_remainder <= $len ) {
- SDL::MixAudio($data,$wav_ptr,$wav_remainder,SDL_MIX_MAXVOLUME);
- $data += $wav_remainder;
- $len -= $wav_remainder;
- $wav_ptr = $wav_buffer;
- $wav_remainder = $wav_len;
- $wav_pos = 0;
- }
- SDL::MixAudio($data,$wav_ptr,$len,SDL_MIX_MAXVOLUME);
- $wav_pos += $len;
-};
-
-$poked = sub {
- $done = 1;
-};
-
-$SIG{HUP} = $poked;
-$SIG{INT} = $poked;
-$SIG{QUIT} = $poked;
-$SIG{TERM} = $poked;
-
-$spec = SDL::NewAudioSpec(44100,AUDIO_S16,2,4096);
-
-write_wav();
-
-$wave = SDL::LoadWAV($filename,$spec);
-
-($wav_spec,$wav_buffer,$wav_len) = @$wave;
-
-die "Could not load wav file $filename, ", SDL::GetError(), "\n" unless ( $wav_len );
-
-die "Could not open audio ", SDL::GetError()
- if (0 > SDL::OpenAudio($wav_spec,$fillerup));
-
-SDL::PauseAudio(0);
-
-print "Using audio driver: ", SDL::AudioDriverName(), "\n";
-
-while (10 > $done && ( SDL::GetAudioStatus() == SDL_AUDIO_PLAYING())) {
- SDL::Delay(1000);
- ++$done;
-}
-
-sub write_wav {
- $wav = decode_base64 <<EOF;
-UklGRiSQBQBXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQCQBQAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoP+q/6H/lP+T/4b/b/9x
-/3//Vv8Z/yX/Lv8T/zD/Tf80/z3/fP+s/6D/rv/9/y8AKQAjACsA6v+c/9T/BwDT/8n/8P8EACwA
-VABlAFsAOgBTAIYAXQAZAA8AIQBDAFYAagCIAG0ATAByAJkAmwCqALMAkwCfAM4AtQB/AGcAYACA
-AMkA7wDsABcBUAFWAV0BZQFkAYQBqgG2AYkBHgHVAL4AogCOAJwAvgDcABIBbwHAAcYBewEwARMB
-HQFSAWEBIQHnAKwAZwBsAHwATgBLAG0AewDQAAQBnQCFAAEBGgHgAPgAPwFDAeUAkACZAMEAzQDR
-AN0AAQE0ATkBOAFqAZsBrQHKAQ0CNAIcAgMC8QHeAeIBAwIoAgUCvwHMAQMC8AGLAVoBiwGrAbUB
-3AHoAa0BdgF2AXcBXwFFASgB3QBoAEAAewBtABoA9P/K/7f/AgBbAIgAuQD4AEUBiwF8ATwBVgGU
-AXIBIgHuAMkAnwCCAIIAjgBrADQATACLAJ0AggCAAMAABQEXARAB7ACZAH8AugC7AGUADADf/+r/
-HwBmAIoAawBLAG0ApQCnAH4AYQB6AKIAaAAAAPP/HwAeAPr/4P+3/5//+f9FABAA2P+g/0L/TP+9
-/wkADgDO/4D/hf+x/53/Zv8y/97+f/5z/tT+Kf8x/03/Y/9P/5j/OACNAF8ACgD5/wQA8f/S/6n/
-c/9H/1H/qf/o/8n/qv/L//3/BADb/53/XP8f//r+z/6M/m7+ZP5J/kb+Yf6I/qv+xf4K/3//5P8T
-ANr/Vf8b/0X/MP+w/kf+FP4F/kL+f/5z/m3+ff6v/v3+A//V/uj+O/9//3D/Jf/c/n7+Mv4u/iv+
-FP4e/i7+N/5o/qn+qv6K/pv+v/7p/ib/Iv/X/pr+eP5s/nL+ev6k/vP+Of9z/4X/UP8L/+v+9P4T
-/0v/hP+D/1n/OP///oj+If4h/nz++v5K/2v/zf84AB4Atv9G//X+GP9k/4X/r//A/3r/Lf/s/mz+
-Cv49/q/+3f74/jr/TP8d/xL/JP/s/qP+uv4a/4r/0P+5/5H/tf/4//f/r/90/2X/dv+e/63/pv/H
-/wQAKwBBAEQAEQDG/7z//f9LAKAA6AD3AOEA2gDmAMoAhgBHAB8AEwAOAPX/oP8r/0T/zv/d/7P/
-6P8bACsAXACZAKwAjABtAIgArgCrAJkApADaAPcAAAFSAZQBZwFMAY0BvAGqAXYBLgEFAQgBBAEK
-AUQBcAFPATQBSwFaAVUBUQFqAZ0B0gEYAlsCYQJAAhkC0QF2AS4BBwH/ANkAjgCDAKwArQCMAJEA
-1gABAe8ARAEJAlICBwLaAc8BfQEbAQIB8ADDAJcAeQCmAOoA0wDOAEABnQGVAYABoAGxAY4BgAFs
-AR8B6gD4AOMAhwAYANz/+P8yAGoApgDuADUBYgGJAYYBFQGvANIA+ADXANEA3QDgANUAuQCzAMEA
-zQDVAPgATAGSAXsBIwHcAMsA2gDyAPkAoQA/AIYA6QDFAKEAlwAvAN//AAAKAOr/4P/t/wgABQDH
-/4n/if+b/6f/6f8fAPr/2v8AABwA9P+t/4z/nP+v/6j/kP95/4H/rf/s/zIAUwBHAEwAYgBGAP3/
-x/+8/8r/0//Q/8j/tf+u/8H/3f8SAFkAZQA1ABcAIQA9AEEAAwC1/4D/Qv8p/1n/Wv8Q/wr/TP9K
-/xr///4K/z3/Tv9F/2L/TP/7/t/+8/7j/q3+of6t/lr+6v0H/mD+cv6F/sX+9f4V/zr/Qf8p/xH/
-8P7v/jP/Xf9P/0T/H//h/tr+Gv9E/yT//v78/hr/Nf8W//T+Lf+A/4T/Vv9Y/2j/NP/i/oX+OP4/
-/kP+CP4B/gH+v/3O/SL+Hf7o/eT95P3s/UP+xv4Z/xP/+/4r/0j/3f5u/ov+2f7T/pb+nP7O/sf+
-tP7V/gD/Jf9i/6L/p/+M/6b/zv/R/8j/tf+u/7L/pP+G/2b/T/9J/2T/hf97/1f/Tv+E/9z/JABE
-ADsALwAgAPH/2/+8/1P/Cv8m/2L/cf9D/+n+vP4a/5r/r/+T/5r/iv9k/47/pv9k/yL/2P7S/iT/
-M/8k/3P/2P/v/x0ApgAdATUBNAGKAQECOwJPAigCtwEyAaEAJQADAAwA+f/7/yUATwCHAL0AvgCy
-ALcAxADGAJQAXQA9ACcAJQDy/8r/9/8fAFEAqQDvAAYBGAFhAZYBfwFuAXYBTAHuAOIAIAEnARwB
-AgHiABsBYgFgAWUBcQFhAYQBvgGjAWEBUwF1AXkBSAEIAaUAFwCx/7b/3//o//r/RwDlAHYBkgGE
-AakB2QHjAdEBvwHDAd0B5AHHAZ0BUQHxANcABAEnAS8BNQFKAXMBlAGxAd4BEgImAvABcwHqALIA
-vgCmAIYAtQDeALYAwQD9ANQAZwAdAA0AKgBZAHMAWAAHAK3/jv+T/2n/N/9Z/63/AgBfAI0ASQDv
-/wAAVQB1AFoAPAAyAHAA5gAdAeAAbgAjACgAWQBqADYABwA7AJIAiABAACQAFwAUADMAOABBAIQA
-zwAEAScBIAHQAGwASABPABYAt/+M/5D/mP95/0//Pv/8/pz+ov7x/gr/I/9b/2D/b/+w/9n/0/+g
-/23/a/9Y/wP/rP5x/ij+3/3d/Rv+Tv56/tj+jP8/AF4AHAAAACsAZQBRABoAAwDi/5z/Rv/i/nz+
-P/5B/mL+hP6r/uP+J/9W/27/ef9s/1r/Vf9j/3v/W/8F/8T+qf6I/nH+g/6//vL+7P76/mj/yv+g
-/1P/R/9G/0D/H//t/sX+t/7c/hD/J/8F/83+1f7x/s3+x/4h/0//Nf9I/1j/Gf/+/kz/g/85/7/+
-sP78/ib/Hv8Q/xP/L/9S/17/Qv8u/yz/FP8b/1//lP+Z/4b/X/8v//3+5P7q/t7+oP5+/qf+qf5d
-/hP+/v01/r7+OP9C/wD/3f4e/2T/Uv8F/7T+lv62/u/+Ev/5/rv+vP4R/0P/KP8Y/yz/Of9n/9L/
-AgCq/0v/bv+m/3//Tv9g/3r/ff+C/5D/wv/u/wEASACdANYAIAFjAXgBaAFVAV4BjgG9AZ4BTgEp
-ARsB9ADZAOIA2gC+AMwAFAE1ASoBUAF/AYMBigGAAT4BEQEQAdQAdQBiAGAARwBQAF0AcAC2AOcA
-7AD5AA0BFAEbAUEBZQFzAX8BcgE4AQsBMgFLAQ8B8gAgAVUBewGTAagB9QFZAmICNQIuAi0CBgLd
-AcgBogF1AX0BmgGBAUwBJQEfATkBSgFIAUMBZgGlAcwBvQGIAV0BOQEKAesA7AD2ALkARgBKAK8A
-wgCdAI8AgACTALwA7gAvAR8B5wARAWYBUwHlAKsAtgCkAJcAqQCYAGIAPABTAH8AfABfAG0AswDn
-APoABwEGARwBLgEHAe8A+wD6APcA3ACXAGAARQBQAJwA4wDdAMEA0gDyAAoBLAE8AS0B/ACuAGEA
-HwAUAE0AegB3AFcAAgDS/wkAAAB6/xD/+/4D/xT/Mf9M/2n/Yv8n/wj/+P7Z/hf/ff9m/zT/cf/E
-/9//4v/o/+7/0f/F/yQAiAB1ABUA3v8LAGkAtADBAHoAKQAjAGQAmABwAAsAs/+Z/7H/i/8a/6D+
-VP5W/mn+hv7E/ub+5f71/iL/Tf9i/2r/Z/93/5//iv8T/43+av6V/of+X/5n/nP+c/6W/tH+7/76
-/h7/Xf+K/3H/KP8C/w7/G/8s/zr///6H/mP+pf6a/lT+Tf5K/hX+3P3b/Qj+L/5L/lv+if7C/r/+
-uv7Q/rf+hv53/oP+p/7U/vz+Df8B//L+9P72/uz+8P4Q/0L/cf+B/3j/Y/9F/zD/G/8T/x3//f7k
-/kT/0/8LABsANgBBAEsAPQAbABQAIABBAGEANgC9/1//Uf8m/8v+pv61/sf+/P5j/7D/qv90/1n/
-W/9u/33/WP8+/3f/zf/2//H/yv+c/7L/0/+g/2T/aP+V/7H/qf+a/4f/dv+G/83/KABYAIEA2QA5
-AVgBHAG6AHMAUwAeAND/v/+2/1//9f7l/iT/MP8O/x//Y/+w/woAbwCQAFMALACNAPUAnwAAAM7/
-6P/T/4v/hv+v/6H/uP9CALgAzADvADEBUQFtAWoBPgEZAQUB8ADcAO0ADAEWASgBRgEyAfEA6gAa
-AScB6wClAKgAzACgAFIALgAJAOn/3//q//7/AgAUAEsAkwClAJIAyAAvAUIBBwEJASEB9QDLAKgA
-eABqAGcAcgCsALYAYQBSAMkABQH6AEwBrQGXAW4BmwG9AYwBawFwAT4B2QCXAJoA6QBQAXcBUwFP
-AawBBQIiAvwBsQGTAYsBcwFnAUsBDgHEAHMARwBLAGMAhwCAAF0AgAC/AMMAwQDuAO4AwADdABYB
-3wB6AI0A2QDnAMYAhABbAIoArwCNAHsAigCfALUAwQC8AJwAbAAzABUAQwB/AGEAGgBEALQAvACG
-AHIAWABGAHUAkwBjAEYATwBGADkAJwAvAHEApQCaAG0ATgBOAEkARABgAHcAWAAiACIANAAdAPT/
-vf95/1b/b/+U/57/j/+d/9T/6f8TAF8AOADx/+H/qP+C/6//vf+A/zH//f76/vj+w/6j/uP+Q/+G
-/7T/wv+N/y3/Bv9M/5j/nv+H/33/hP+P/5X/gf9r/3L/fP+D/5n/pf+m/7n/1v/p/+//0f+R/0j/
-Ev8S/xX/x/5w/oD+xv7w/vf+//4Z/zP/Lv8Y/xv/N/8y/wz/1P5u/iL+K/4i/tv9uP22/aH9qP3t
-/VP+o/6s/tj+Vf+a/2b/Dv/+/g3/0/6G/nL+b/5i/nL+m/6R/n7+t/4H/1L/j/+T/4//yv8CAOf/
-pP+F/5j/sf+O/1n/N/8l/yr/SP96/5v/lf+Y/7D/xf/I/8L/2f/z//j/1P9p/97+f/5m/oH+sP6/
-/tL+Vf/n/+X/ov9P/73+eP7K/hf/Jf8K/7f+pP74/g3/3f7m/uT+mf6r/jT/kP+R/7r/RwDEABkB
-jwH2AQ4CBQLrAa4BawEFAVYAn/8j/xX/V/9q/0j/W/+8/zYAnwDPAMEAxwDOAIcAWQB8AH4ARAAo
-AGgAngBeABUALABfAHUAhwDOAP0AvQCKALAAmwAmAPH/CQAnAFUAeQCCAI8AowCvALkAsACVALoA
-FgErAQUB/QDhAHsAGwAgAFEAQQAZAAkAFABGAFoATwBuALQAFQFxAYsBjAGpAcMBsgGFAVgBNQEr
-ARsB3QCHADMAAAAGADsAqgArAXMBmgHuASsC6wGMAWsBdgGMAb4B+gHgAZcBlwGtAYsBigGoAaEB
-pAGVAVQBDwHlANIAzgCmAE8AKwBKAHIAfABTADYASwBeAI0ABAFpAZ4B3wEBAgECHgL9AYYBRQEz
-ARwBCwHbAIwAdACMAGkAGAAHAEUAiQC0AAEBaQGTAbIBEAJKAjwCJwIDArsBfwFbARABnQBHAD4A
-KwDl/7z/pf91/2j/tv8RAEMAjQC9AMcABwFIAVABMwHWAGIAIADW/zv/rP6J/p3+rf7R/hL/Tv+Y
-/yAAjQCQAJIAnwB/AF8ATwA2ABUA2v94/y7/Kf86/wr/2/4W/3//5P8qAFIAcgBiADkALQAOAL7/
-cP9Z/0n//P6m/oH+bf5m/pL+z/7k/rT+qv4u/4b/Q/8A/+/+5P7Z/qD+W/5E/hz+CP5U/pn+ff5V
-/rT+M/8L/8D+6/4T/8r+bf5H/hb+5f3I/Z39gf2A/XH9kP0L/nP+j/64/gz/Qv9L/zz/B//R/qL+
-b/5f/lb+Kf4B/gb+Kf5e/p7+zf7l/vX+EP89/0f/D//Q/sD+ov5t/mf+LP6n/Zb9Af42/vD9k/18
-/af9/f1G/nX+oP7E/vv+L/8e/9j+qf69/uv+FP9Z/4T/Yv9K/3D/gf9a/zX/Mf9Z/4D/cf8u/+X+
-zv7V/t3+xP6G/oL+3/5G/3P/jP+t/9T/8f/8/wkA2P9u/0D/aP+n/6//nP/L//z/1P+o/+P/MQAp
-AAYA8f/v/0cAewD2/4L/hP9V/xL/Hf83/1L/dP93/6H/7f/w/+L/CAAgACcAUwBzAC8A2f/r/x4A
-JABIAJwAwwDXAA0BMQEzAUIBawGdAbkBtAGkAZ4BewEeAdUA9QBcAXoBLQEOAW4BwgG7Aa4BvwHD
-AcQB1AHGAbQBuwGtAZcBiAF2AWYBWAFZAUEB4QDHACIBJAHcANEA3ADqAB0BSgFOATsBJgFJAYoB
-egFKAUcBQQEjARUBFQHrALgA5gA9AUsBRAF1AbEB2AHpAekBBwJRAoMCVQLzAdAB4QHLAZUBXgEQ
-AfAARQGwAfIBKwJNAkUCQgI0Av8B4AHVAc4BuwGSAVoBGAHmANIAzwCKABoANQDFAAEB0gCaAGMA
-GwD2/+L/sv99/03/O/9p/5//u//x/x0A6v+w/9r/IQBGAFoAagByAH8AkwCWAJEArADoAAcBHAFP
-AVUBFwGoAAsAkf9j/1X/Lf8D/x3/YP+J/57/oP9w/0L/U/+Q//P/TgBLADAAQAAzAPj/t/95/0v/
-Vv+Y//P/AACD/0b/hv+C/zv/H/8w/3L/3P8pAEcASAAoACAAMgAFAMT/u//g/wgAEADb/27/7f6G
-/lf+Pf4N/v/9Iv5S/qv+/f7r/rz+wv7V/u/+IP89/1j/ov+5/1L/9v7k/un+7v7v/hL/H//4/vv+
-Cf/a/qz+x/4o/4//qv+T/3b/Rf8U/xT/K/8G/8v+7v5n/6//jP9e/yX/wf6D/mH+NP4g/k3+wP47
-/1T/2/54/o7+fP4W/vv9Mv5V/o7+FP+h/7X/U/8Y/yH/Hf8b/yr/Ov9S/2r/n//D/3X/Dv/5/vj+
-2P7H/ub+IP9G/03/W/9k/1L/J//8/vT+IP9q/5//zf8AAO3/nP9g/1b/Pf8E/wH/Bv+7/mL+YP57
-/lz+Tf6N/uz+af8SAJ0A4wDrAMIAswCnAEwAzv9x/zH//P7u/gX/+f6+/qv+/P57/+T/RgCqAAoB
-YgGDAXgBbAEoAboAjgCMAGQALQAeABEA1f+g/7j/+f8wAG4AsgDyAB0BFAH7AA0BEQHGAGAAFQDw
-//f/NgCcAOYA4gDHAAcBcAFXAfEA3wDpAMgAyQDxAPsA0QCEAHcAwADLAIMAfgDJAPEA3wDUAAQB
-MQEjARsBGAEFARMBGgHyAOkA/wDxAA8BeAGtAbkB2wHqAfcBDwIDAtcBugGuAZ4BpQHRAdwBngFZ
-AWgBtgHtAegBygHLAcsBtgGsAZ0BfQF1AZwB0AHAATkBxwD6ACwB2gCKAEQA6//9/3AAtQCrAIEA
-fgDgADwBFwHEAKwAxgDsABgBQAEyAfcABAFSAVcBJAH5AMYAsgDeAPIAxgCiAJsAlwCDAGgAXgBs
-AJ8AwACrAJIAYgAnACwATQA5APr/1v/p/xsATABJACgAOgBZAEQALAAoABcAFgAdAP3/1//v/xkA
-CgDc/5b/XP9l/3//kf+n/7H/vf/W/83/nv+T/7n/0f/S/9L/v/+R/3P/kP+f/3H/c/+d/3X/TP+E
-/7H/of+H/3v/pP/w//7/8v8HAOL/h/9b/1f/Q/8d/wn/+P70/vz+7P7v/g//G/80/3r/qv+b/2L/
-Rv93/6X/j/90/2z/DP+C/mL+Yf4j/t79vf3G/fb9Qf6T/sT+yf7f/jn/bP8o/+X+6/7s/r7+e/4k
-/sn9l/2u/c79uv2y/dD9Ff52/qj+qP7U/iv/Yf9f/1P/Qv8K/8n+h/4r/sj9i/17/Xb9d/17/Yr9
-2/1m/tT+Hf9Z/2D/av+X/47/Wf9e/53/y//F/27/sv7x/cj9Iv59/tv+Qv+A/7//FgA0AOL/L/+A
-/jH+Jv4o/kf+g/6Z/nj+X/6Q/vj+Lv9c/9j/TACeAPMAFAHZAIcAaABiAHEAvwArAU4BEQHTAMYA
-pAA2ALz/gf+k/wkAQAD1/3X/Df+0/o3+n/7A/gD/TP+g/yAAggCOAIQAagAoAPH/7v/h/5z/nf8T
-AEQACQAAACEALgBhAMYACgEfAR4BNAFnAW0BPQEoAVYBjQGgAYwBegF8AVoBDAGLAN7/i/+3//L/
-OwCfAL8AwADYAK8AKgC//8v/QwDkADkBNQFCAWsBhAGWAZMBZwFVAXsBqAHXAQQC9wHQAcoByQG1
-AZYBfwGVAdcBAwIdAgACcAH/AEsB8QFHAl8CbgJgAkACAgJjAZ0AHgD1/y8AmgCvAIQAlgC2AHoA
-FAD1/yYAhgAbAdABUwJZAhMC3wHDAaABbAE4AToBYgFpAVcBLwH7AO8A7QC1AIQAhACQAMAAGgFv
-AY0BfwGOAZwBjQGXAagBlQF4AWsBWQE7ARwB8wC/AKoA0QAXAR8BwgCaAOwABAGOABIA5f/Z/9r/
-/P8mAEkATQApACMAJADK/zn/+/4Z/0X/f/+u/6P/cf9P/0//Lv/V/pn+s/7y/hT/HP80/0T/Pv9h
-/6T/0/8FADsATgA4AP3/qP92/2X/Fv+g/oH+qv6s/pn+rf7M/uH+Ev9r/8D/CABGAGMAeQBhAOj/
-lf+p/33/+f6+/r7+sv7H/sT+lv6j/tf+AP8b/xf/CP8g/1L/Uv8m/xL/7v6K/hX+//16/uT+6f7s
-/uP+r/6L/oj+kv6g/sP+AP9H/33/gf9w/2X/N//z/uv+Ef8q/0X/Z/9k/0n/M/8K/9j+tf6X/o7+
-xv4b/yD/7f73/iX/I/8h/2f/mP95/53/AAD+/4v/6f5//qj+9P73/gr/R/9s/5X/xv+o/1X/Mf85
-/0X/df+7/5H/CP/K/ub+7P7J/pr+hP6a/rD+mv5Y/jv+Zv6V/qv+qf6y/gn/e/+p/6n/tP/B/6X/
-Wv8I/9v+o/6A/tL+QP90/4//wv/3//7//P/+/wwANwBXAFMALwAeACoA+P+g/4T/Yf8Q//X+Nv+1
-/zMAeQC6ACABUQEoAQYBBQHWAIYAUgA7ABMA2P/H/+T/GwByAN4APgGRAdkB4gGnAXUBeAF/AVcB
-JQEYAQgB3wDJANkABgEnASUBHwE1AUYBQgE+AVABkgHLAbwBmwGbAWsB4wB4AF0APAAZAD4AewBs
-AEIAlQAEAfoA7gAPAQcBHgGMAecB2gF1AQwB2gCvADMAmf96/+v/NAA9AIgAxgCyAMUA+QDzAMwA
-swCnAJAAbgA5AAYAKABjAIYA2AA1AWEBbQGGAb4B1QG0AbQB6gEJAuABoQF3AUgB9gC/AMQAxQDQ
-AAUBGwHZAJ0AxgAYATsBLgH4AJIAdwCzAJ0AOgD0/7z/hv9i/2j/nv/F/8D/3v9JALgA+QA3AZMB
-zgG0AZUBtwGpATMB/AAeARYBFwE8ARkB0wC6AMUA4QDMAH0AbwCVAJwAnwCpAH4AGADm/wYAHADx
-/8P/2/8HABIAAQDx/+L/5v8QAEQAfQCuAJwAXAA8ADQAGQDg/5L/Rf9G/8//SQAfANH/z//X/+z/
-DQDa/4P/ZP9w/5X/fP8L/8D+zv7i/tT+2P7q/r7+hf6p/gj/Hf/v/vb+Bf8C/y7/RP8b/+r+zv7D
-/qn+fP51/n7+aP5I/m/+9P5V/0P/HP9R/63/uf+J/3//i/98/3n/qf/W/8b/lf9w/2z/g/+C/2X/
-Z/9r/zr/Rv+m/5//Pf8H/9X+nP52/lP+Yf6Y/qb+0v4s/xT/sf6f/q/+iP5g/mj+c/55/q3++P74
-/rH+jv6R/pP+nP6p/t3+Lf9L/zj/Hf/4/r/+jv6C/nD+Sv5H/mn+lf7U/v3+8/7l/u7+8/7p/gv/
-Of9K/4H/3f8NAO7/pf9n/0T/Of8Y/9n+uf67/tL+Df8X/+b+7v4l/1H/hv++/8z/wv+4/7b/0f+z
-/x//r/6t/qb+bv5G/l7+jP6i/uf+cv/V/+7/BgBUAKsApgBWACkALwD1/4H/av+T/5T/jv+h/6X/
-mP+9/xwAewC8AOMA/AAZAQ8BtwB3AIoAgwAxAN//tv+X/3H/eP+l/5T/Z//X/6kAzgCNAMQACgEH
-AQ4B+QC1AIwAeAB2AI4AgwBbAGYAtAD6ABMBSwGqAcsBxwHdAcgBggFfAVgBHQG/AHwAYwB5AKoA
-zwDxADkBjQHMAQcC+QHJAe0BJAItAgsC2wHMAbMBbAEyAScBQwF1AYkBhgGrAccBsgGxAdcB4gHC
-AbkB0AHSAYQBIAEjATYBAgHJAJQAawCGAMUA5AD8ADIBcgGWAYEBTQE1AT4BOgElAS4BRgEzASAB
-UAGFAYUBfgFxAUoBTAF0AXEBUwFGAUUBQAEgAecA0gDqANkAmACNAKIAlwCRAJgAnwCSAGgAVQBp
-AG8ASgA0AEgAUgBnAJwAnQByAHkAqwCWAE4AVwBpACkACgAcAPH/1//6//j////9/6L/Yv9a/zr/
-Nv9y/6f/x//P/8b/zv/I/8f/2//W/6//fv+E/5L/Y/8v/zX/cP+h/7L/sf+1/+X/IwBNAHIAeABP
-ADIAMwAsABsAEgAAAN//vv+1/7j/rf+U/4H/lP+g/27/N/86/1L/U/9O/yH/sf50/r3+KP8+//n+
-jv5I/jv+Mv4S/t79uv3g/Tn+Uv4w/kL+dP6F/qD+zv7M/sH+5P4j/07/Nv8g/zj/O/8s/yT/MP9m
-/6b/sf+T/4T/gv97/3T/c/9m/0D/SP+E/4//ev+C/27/Rf9B/zr//v7K/sT+vf60/rT+r/7Z/iz/
-Vf9T/z7/Dv8D/0b/Sf/y/sD+mP5o/nH+mf7A/vL+9/7q/iP/RP8g/x//L//0/o/+ef6Y/ob+Tv4j
-/h3+Pv6U/hv/dv9q/z3/NP9O/37/sv/K/7r/uP/9/1YAZgACAJz/oP/X/+H/uv+l/6H/n/+I/zz/
-6/63/rL+2P79/gb/9/4Y/17/Xv9J/2f/Xv/1/tn+XP98///+x/7K/rj+3f4j/2D/pP/j/zsAngC/
-AKUAkgCZAL0A/gArATQBBwHIANEA0ACXAHcATQD1/73/5f8/AH4ArQCzAJAAdwAxAOb/6v8GAA0A
-DABDAKoA1QDHAMMAmQA9AB4AcgABAXMBlQGbAc4B6QGiATYB5QCjAHsAnQAZAWwBYAFsAYwBeAF7
-Ab8B+AENAhQCEgL1AYkB+gCcADoAr/+S/wEAQAAlACEAUQBuAHIAogDnABMBVQGxAfQBCQL3AdEB
-ywHIAaQBwwERAgYCvQG5AfgBCQLQAbcB5gHrAbcBvAHSAZYBRgFFAYcBuAHLAdgB0AG9AZYBWgEy
-AQcB4gD4AC0BRAEOAZUAhQDlAMAAQQAkAEYAXACPANkA6ADTAPkAUQFkARUB0ADIAMAAqwDBAOoA
-7wD9AFABwgH4AeoBvgGNAWUBLAHhANAA6ADGAHcAUwCCALEAxQDqAAgBDgEXAS4BPQE9ASwB9QCa
-ABcAjf9C/zb/HP/x/vL+NP+Z/+T/GwBqALMApQAvAP//WwBcAN3/o/+Y/3X/Yf8y/+f+r/55/mr+
-l/6i/of+wP46/3r/g/+Z/8L/vv+W/4T/a/8y//j+wf6f/mr+Bf7X/Qz+YP6U/sb+L/+w//3/8//M
-/7f/pP+I/1H/FP/z/tP+zf7j/s/+sP7E/uv+5f7M/vv+W/9c/9/+jf68/u7+1/6i/jv+6v1d/v3+
-C//k/tL+vv6Z/nn+TP4b/hP+GP5F/qj+2/61/pv+1/4t/1n/Xv8s/77+mf71/i7/9/7a/in/bv97
-/3//X/8u/z7/b/97/27/R/8e/xX/C//W/p7+pv7L/t3+A/9E/z3/9/7q/hj/OP9P/2f/g/+L/1n/
-Tf+Y/5j/J//L/qz+qf7H/r7+YP42/kT+Lv4+/oH+if6I/sH+8f4B/+n+wP7S/vn+8f7y/iH/J//o
-/tH+E/96/7f/pP+I/4f/kP/A/9v/nv9v/6L/5v/3/9r/t//G/7j/Uv8T/zr/ev/U/zoAXABdAHgA
-qwC7AHcAJwAbADQAOQAoABMA8v/Z/9v/3//K/5//cv87/y3/iP/c/+3/GwBGACUAGgBvAMMAuwCJ
-AIcAugC9AFcAAwAkAE4AJAD+/w0AKwBiAL0A2wCbAI4A4AAaASYBPAFWAVUBXwF/AXgBWgFwAcgB
-+gHRAZcBiAHKASgCOgIUAgMCDgIfAigCBwLVAcIBxQHDAa8BiQF2AZMBqQGjAaEBXgHpAAYBeQF6
-AUYBOwEzARwB8gDJANMAxAB5AGgAvADpAMsACQGQAakBZgFcAYoBrQHtAUUCWwJGAm4CoQKLAlkC
-FAKpAWIBZwFzAV4BNQEPAQwBJgEuAQQB/AAZAQoB8gDQAIQAYQCLAJwAfAClAPkADAEjAWABbAEt
-ARUBLgEXAfcADgEuAeMATAAyAIMAggBQAEIARACAAP4APAEoARYB7gDGANoA0gB7ACYADQAEAN3/
-vv+E/wb/s/7j/jr/XP9m/1n/UP+l/x0AEAC+/7v/rP9z/4P/qP+v/8n/3f/H/6r/rf+x/8T/CQAl
-AO//0f/5/x4AAAC//6P/vP/g/wMABgDB/3X/Tv85/x3/4P6y/un+SP9n/2j/af9D//b+vf6Z/mz+
-Xf52/qL+r/5j/i7+T/5A/tL9kP3k/UH+Q/5X/pb+pP51/lr+Xf5J/jT+Hf4G/kb+rP7k/gr/7v6p
-/pT+jf5w/lj+V/5n/ov+q/6S/nT+jv6m/qT+sP7p/i//QP9I/3P/nP+I/0H/DP8V/yH/3/6f/nf+
-CP6Z/aT9z/29/eX9Sf6J/tn+Nv9Z/1X/Tv9B/zv/MP/9/sb+rP6M/jr+Bf4j/ij+GP5W/vL+rP8c
-AD8AVABqAGgAXgBiAEIA3/93/0L/Gf/k/sn+1f7b/qj+b/6m/kv/0v/+/y0AYQBSADkALgDp/4n/
-Q/8h/zv/Vv9G/0D/S/9N/zL/Qf/M/zIAFAAlAIcAoQCBAIQAfABMABQA5P/X/9T/h/8R//P+Lf9o
-/6n/BQAbAOH/6P8hADYASgBfAEAAJAA0AD4AOgBFAEwAPwBPAHsAoQDTAAsBHwEnAVsBlAGJAXMB
-bgEnAcQAtgDCAK4AiQBYAFUAZwB5AKcAtQDPABcBQgGDAcYBiAEfAUkBsAGoAWUB9gA5AO3/UgCV
-AIwAswATAXYBqwGvAagBhAFPAUkBdwG0AcMBhQFpAbYB3gGZATsB4gDCAPEABQEAARgBPwFtAaIB
-0QHiAc8BwAG2AYoBYgFfAU4BGgELAScBNgEyASQBLQFAAU0BaQGFAXwBWgFwAacBagHbAJsAngCY
-ALEAtQBxAGYAgwBfACoAKgBZAIIAiACTAKYAhwBdAHAAiABnAEYAVABlAEQAGQAiACsAHAAuAEYA
-JgABABAABwDQ/8j/BABFAH8ApAC2ANgA0ACWAIQAogDOAOAAtgCZAL8A0gCHADoARABgAG4AjgCz
-AMkAvwCdAGgAJADv/+v/9v+5/2H/e//W/+f/z/+1/4b/bP90/3j/hv+E/03/Tf+d/5P/Lf8d/2L/
-dv9A/yT/LP/+/t7+KP9s/0//I/8i/0T/nP/L/47/Yf+F/8v///8TACoAVAB0AHUAaABiAG8AfQBt
-ADAA2f+b/17/EP8O/0X/Vf9D/2X/vv/B/3f/cv+e/6j/of+Q/0D/4/71/iL/4f5k/s/9Uf1k/ev9
-Yf6S/oT+dv6L/oX+c/6b/qL+Nv7R/eb9PP5n/j3+Lf5l/mj+fP4O/47/rP+//7//kf99/5b/o/+W
-/3T/X/91/43/jf9o/yX/6/7v/hP/Dv/n/sD+lv5W/iv+SP5x/m/+gP6s/pn+oP79/jb/P/9s/7T/
-lP8q/0r/uP+b/zr/EP/o/u7+Wv+6/9v/7P/t//3/GQAFAO3/LACWAM8A7wD7AMkAcwA3ABMA1P+E
-/2b/Xv9I/1L/af9j/2L/av9g/1n/gP+o/7j/6/8AAND/vP/g/x4AVQB5AJgAhgBOAFcAbwBXAGkA
-sQDiANoAuQB3ADAAGwDu/8b/AQAxANj/ov8hAJAAsQD0AAgB4wD9AA0B0wCRAFEAPABXAEwAGQAd
-AFAAOgDj/6n/mv+i/7v/CABuAIUAYABSAE0AWwCCAIQAdgCkAPsAQQE/AecAjgCHAKwAqwCOAK8A
-BwFDAXEBqwHEAb8BtgGpAa8BwgGvAXkBgQG5AcgBswF+ATkBBgHcALgAswCXAFUAYACCADwA5v/P
-/+X/KQCHALwA9AA2AUIBYAGnAa8BgAFzAZEBigFiAWUBcgFaAXYBBwJ6AlAC6gHBAc8BzQGzAZ8B
-fgFAARgBGAEPAQABCwEpAS0BEQEAARsBQAETAbkAhgBkABwAwP+2//L/9P/C/8L/+/81AHsA4QBQ
-AX0BHQHUACcBPQGwAEwAMgAKAAMA8v+l/2n/Rv9b/7T/2/++/8T//P/6/6n/sf8LAPX/k/+J/6T/
-d/9B/0n/T/8p/wH///4S/yv/XP+c/7T/k/+P/6T/if9e/0b/PP9F/2X/jf+l/57/af9B/zv/Gv8E
-/yT/Nf9J/37/e/8z//T+6P71/vH+9v7//sT+ev6L/qv+j/5l/jv+Rf6a/s7+x/7k/vj+rv5x/oT+
-c/5A/jr+Vf5+/sT+CP8O/9/+xv7y/ib/L/83/0X/P/8q//H+uf7I/vX+Dv8a/xv/E/8p/1L/J//F
-/qP+zP70/gD/9f7c/uP+CP8+/2H/Uf9i/5D/gv9S/0j/XP9F/+/+uP63/qT+qP7K/qL+dv6F/nX+
-XP5m/nv+of69/rr+z/7c/qr+ff6P/n/+Kv4n/nb+if5y/pz+4f72/gH/Ef8Y/wz/8/7h/uP++P7y
-/uj+C/8y/0D/O/81/z3/Tv+V/+7//v/t/wEAPgBYACkADAAqAEkAUwBiAHMAbQBSACkAAADt/+T/
-3f/7/wkAqv9K/5H/BgAiAEcAfABYACMAOQBrAJUAfgAhAAUAPQAxAPP/+v/s/7j/3/88AHIAjgDE
-AAABKgFiAbQB5wG/AWABEQHnAPcA+gDdACMBsQEAAhgCDwLBAVkBLwE4AVsBhAFyAVMBewHOASQC
-JwKYAQEB3QABARcB9QDQAMQAwQDjABMBBAHZAC8B1wEYAgkC9QHEAa4BxgGpAWUBPwEcAR4BaQGx
-AdEB7QHzAecBFQJUAkwCJwIKAvwB9wHEAZYBnwGoAZ4BgAFMAUgBgAGeAb4B+QEFAtkBvAGnAW4B
-QgFdAYYBlAGvAb4BnQFXARMBDwE2AUEBTQGEAasBggFjAYsBbQEDAeEA4gCTAGoA6ABGAfwApwCP
-AIQAkwChAG0AOwBEAFMAdgCmAGYAzv97/3j/g/+v//X/AAC9/7D/AgAyACwAMAAzAD8AZwCGAIoA
-bgA1ABEAEQAJAPT/9/8XACIAFAAgAEQAaACLAJcASgDT/7n/3v/g/9//8f/o/9P/wP+X/2v/aP+S
-/6v/pv+v/6v/fP9T/0b/O/84/z3/RP9l/4P/b/9T/0v/Nv8w/0j/Pf/u/sr+9/7y/qf+c/5P/iX+
-Df4s/nP+oP7F/gL/V/+X/57/jP9s/1v/eP+o/6X/WP8i/yf/L/8E/7z+qf7H/tf+1f72/kX/dP+B
-/8v/FAD//8b/jv9D//n+t/6S/pn+l/5q/jT+BP7L/Zf9wv1P/qX+qv7t/mP/gv9b/zX//P6v/mb+
-Rf5Y/jP+uP1y/Zv93/3r/QD+fv4L/17/p//t/+7/ov9I/xj/Mf8y/83+cP5X/jr+Cv7f/cP9zf0K
-/mv+z/4N/wn/E/9i/4//g/96/2j/Vv9b/2v/cP91/57/rP+B/2H/Yv+D/67/t/91/yv/Vv+w/5T/
-P/9F/2L/Tv8z/xv/Dv8P/wn//f4B//r+0P69/sX+mv55/sT+IP8e/+X+1/4O/yL/BP///hT/Wf+p
-/8n/BgBmAJcAsADSANQAuACeAGEAIwAnADoAQQBLACoA7f/y/ywAPAAsACcAIAAWAC0ARAAQALr/
-mP+9//T/LABwAGMABAD6/3UA3QDYAJoAZQCKAAABLgEJAfYAAAEhAVcBbAFHASMBIgEjASQBOgFE
-AQQBzgDzABcB+wDPAN8AFgEhASEBMAFGAXYBpwG6Aa0BlAGeAdQB7gHPAaQBhgGDAYoBjwGNAVIB
-EQFAAYkBhgGAAYUBgAGbAdcBAwIHAtQBkwGaAboBhgFgAX0BTAH7APgAIQFKATgBCQEkAWQBagFV
-AVABPwE4AVcBYAEqAfMA9wDoAJAAcwDQADIBQAEqASUBLAFbAZcBpQG2Ac8B2gEDAiUCEAL6AdkB
-kgFcAVsBawFVAUgBYQFhAUgBPwE8ATEBLQEqARgBJgFQASwBrQA1AAAA+P/e/8T/mf8x/9f+3P4P
-//v+0f7h/ub+Dv+J/+X/+//w/+D/EwBZABYAqv+3/8b/d/85/zn/NP8W/zP/bf9c/1v/q//P/67/
-rP+z/6H/n/+m/5j/f/+C/4X/ev9y/1T/IP8T/zH/QP9Z/57/8/8rAEEATAA1APv/sP9Z/wH/uP6c
-/qD+of7P/iX/Hf+Y/lb+hv6F/nL+q/7Z/t7+7/4D/wv/5v5p/vP9yv2z/az97v1a/oj+Yv5V/nv+
-j/6m/u7+Sf97/5j/1f/0/7L/Wf8h///+Bf80/2X/ef+O/87/BgDq/4r/L/8A/+/+2P6n/k3+4P22
-/dH91v24/cn9Fv5w/sz+LP9//6P/m/+A/2b/gP+S/z3/sP5r/pH+d/4N/vn9FP47/ov+vP7e/g//
-Ev8Q/z//N//p/vL+Wf+N/3X/cP+H/1P/+f7t/vH+y/6m/pH+nv7w/jv/Pv8y/zT/Ov8k//b+7P77
-/i3/gP+m/6P/p//G/+b/1/+c/2f/VP81//D+0v7+/in/Qf9X/2L/av+T/8j/tv+p/wMAUQAsACAA
-jADcAM0AxwDPAJoATQAeABYANgBHAEAAYwCMAHsAbwB6AFkAFgAEABsAKQBdALcAAAEQAQEBDAEa
-ASwBTgFdAWIBYwF0AaIBkwE5AfIA5QDQAI8AbgCPAMMA9gAZASwBOgFHAXUBwwEHAjkCTgI4AggC
-0QGsAY0BXwE4ASYBCgHMAH4AJAD+/y0AWABDADMAZgCyAAEBUwGTAZEBUwFlAdIBAQLSAY4BcgFz
-AVIBHwEXASQBJwEsAV8BtwHnAeYB3wHAAX8BdgG8AfgB7QHCAbQBtgG0AbEBmAFrAVMBYAGcAQIC
-NAINAg4CSwJbAkECJwIHAr8BTAH0AMMAjABjAHQAxQDoAMIAyQApAYgBdQE0AQwBwgB4AHQAgwBs
-ADwACgAWAEkAKwD7/ysAXgAyAA0AKAAoAPH/vP+W/4L/p////zMAFwDv/+b/2//S/9H/xv+u/4r/
-jP+2/7z/p/+V/4D/g/+6//7/KwApAPH/1//5//X/sf9m/0D/NP8a/+T+lP5a/mX+mf7L/gr/O/8r
-/y//ff+C/zL/A//G/m/+Vf5M/kT+S/4j/hr+X/53/lj+X/6n/vv+KP9V/7D/z/+k/7z/1f+M/1T/
-Xv9c/1z/iP/A/8P/i/9Z/2r/pP+6/57/t/8CAOz/ev86/2n/nv9+/1H/O/8r/z7/e/+///z/BQD1
-/xgAPAAQAOH/yP+m/5H/iP+N/77/9P/V/4n/Rv8W/xj//f6r/qP+zv7A/qn+s/64/s3+Gv9o/3L/
-af9c/wn/qv69/gH//v7Y/sr+t/6z/uX+FP8m/2L/1f8SAOP/i/9I/0X/af9l/1T/bf+n/9X/0P+u
-/4v/Wf8u/zT/T/9f/3f/f/9n/2v/ff9n/z3/D//y/gD/MP80/9/+vP78/vD+jv5d/kL+Pf6K/uj+
-Iv9n/4T/Pv8C/xX/Iv8X/yD/GP/i/qT+bP4s/hX+VP6G/m/+j/4j/6D/vv/M/+n/CgAsADYAPwAy
-APj/5v8FAAAA2f/E/8T/2P8AADgAewDPAB8BRQFxAaABhQExAdIAiQBJAPX/0f8ZAHcAlgCZAG4A
-SgDBAEQBHgHmANQAigBlAG4AOgAFAOn/w//B/87/yf/p/zQAawCbAOkAQAGNAc4BDwJgAocClgLx
-AkIDMwP8Ao8C+gHFAc8BiQEqAfYA9AA8AW8BSQEuAUIBXgFtAWoBXwFHAUIBaQGYAY0BRwEeATAB
-VgFxAWYBVQF5AccBAgLkAXoBEgG3AJ0A6wAxATkBQAFbAYMBvQHSAbABkQFvAWsBtwEBAhQCGwL/
-AZUBOQEMAaUA/P+R/6b/5P8DACgANwAqAE4AhQCVALUADAFOAWUBfwFuARkBrwBgAGAAbgBYAGMA
-dgBpAHMAZwAeANH/0v8mAIgA4gAUAQMBzwCPADIA0f+x/9b/IgB0AIYAgADBAPsAyABfAAoA2f/Q
-/7f/Uv/5/uv+3f6n/mX+OP5B/n7+xf73/ir/Wv9q/4H/v//o/7v/dv9Q/0n/bP+S/4X/Tv87/0X/
-Hf/V/qn+wf4N/1X/gP+H/2T/M/8z/1//f/+P/6D/2P9LALoA5wDHAH0AUQApALz/S/8M/97+vv6Q
-/lL+DP6p/Uv9Zv3X/f39Hv58/rn+Cv+b/9P/kf9f/1j/d/+n/4n/Ef+B/gr+uv2U/ab9xv3G/Q3+
-2v6d//7/HAAiAE8AlgCiAHIAYQBiAA4Anf9I/9j+cf5I/lL+i/7c/iT/T/9z/6L/yP/r//b/1v+Z
-/0f/B//U/q7+p/6x/qz+pf7B/tD+iv5R/q7+Cf/N/ov+pv7N/sj+iv5K/lD+d/6w/un+rf4t/gz+
-Tv6I/mn+JP4i/kr+av6X/qr+iP6I/qf+mP6S/pr+f/6H/uv+Rf9S/2j/mv/M//f/7P+q/3b/e/+g
-/7P/yv/D/3v/Xf+O/7H/qv+l/8D/8/8vAEsAHwDg/7T/s//i/wcAPABoAA8Ab/9h/83/xP9K/xr/
-Tf+V/8b/3/8GABgA4f/b/zoATgAAAO7/CAAOAEoAoQBfALL/lP/h/77/Yv9o/7j/FABoAIMAbwB9
-AK0A1wDwAAMBJAFPAZEB5gEBAsYBkAGfAcIBzQHKAckB2QHiAcsBqgGGAWwBXgFWAYIB2gHuAc4B
-zgGpAWABhQHLAZUBWgFuAWsBaQFzAVwBaAF+AZAB0wHxAaMBbAHAARwCCAL+ASgCHgLiAdUB9wHp
-AbYBtgHiASECeAKVAlUCAQLXAf4BPwItAuwB8AEHAswBewFmAW8BeQGCAYoBoQG+AcgBtwGoAdcB
-KQI3AhwCKAIhAuABgwEiAewA3gDVAMkAewD+/+v/RABkAFkAZwBHADYAiADXAPUA8gDGALIAswBt
-AAoA2/+u/2f/Mv8s/zz/Qv9i/6H/xv/b/zAApADVAMkAtwC+AOwADgHgAJEAaQBhAFcAaAB3AFIA
-RgB+ALUAugCxALoA0ADpAPUA2QCMAAMAdP88/xb/tf56/qP+5P4x/5v/sv+B/7P/GwAAAHL/3/55
-/kj+Uf5Y/j/+L/4D/tv9Df5M/lT+df6m/qb+xf4s/3X/av9Y/4L/1f8OACYASgByAFgA7/90/yH/
-8f6d/jP+B/4Y/kL+dP6Q/pX+o/7R/h7/S/8k/wL/K/9d/0H/6f6x/qL+nv6//gH/Df/+/jP/Z/9X
-/zP/Jf/q/nD+aP7d/t/+jP5r/j7+Cf7v/ef94/3H/dH9Rf6+/tf+3/4V/xb/xP6N/nT+Hf6L/Tv9
-WP1z/Wb9gP27/ff9Vf65/tj++f5l/8L/7P/t/77/ov+1/5b/L//n/tr+3v71/iP/Of8j/wv/Ev8x
-/13/lf++/+z/JwANAK7/df9J//7+Ff+E/3X/Pv+V/+v/of8g/+L+1P7o/i7/fv+D/zn/BP8h/zf/
-6P6g/sL+Bv80/2f/rv+6/3v/fv/l/yAA+v+p/37/nv/n/wgA6P++/6v/0f8uAEMA/P/o/zEAbABb
-ADcARgCPAM0AxwCnAKcAvwCuAKUAEQF9AVAB/gD0AOAAswCVAGUAMQAzADUABgDg/73/uP8ZAIkA
-qwD1AGkBmgG+AQMCLAIQAsEBWwElASgB9wCcAFMA/v+8/8//AQAZADEAhgAkAb0BDwIJAgICOgJV
-AisCEQIkAikC3wFmAQoB4ADjAOsA9AAaAXUB8AE6Ak8CYwJyAmMCIAKsAWQBXAEhAbcAigCjANIA
-5wDaAN4A8gDhANgAEgE1AQEB4gD5AOQAwgC/AJ4AaABQAEoAZwCkAJoAcACcANAAyADnAD4BQQH0
-ANcA7AD4APYA9gDrAMcAoAB/AIEAwQAFASQBWAGDAWMBZwGrAZcBLgH6AAoBMwFfAXgBawFOAU0B
-SQEpAQ4B+gDgAMwAwwCQABUAwv/F/7//lf+e/+X/2f+N/63/FgBFABsApf9E/3T/t/+K/1n/Uv9N
-/3T/qf+//+H/BgArAF0AgACJAGcAHAAJADIAIgD1/9D/lf94/5n/q/99/3//tP+i/6H/+f8eAPT/
-4f/f/8v/pP93/3j/m/+r/5n/cf9A/xD/JP+A/6P/Z/83/z//Yf+l/8n/lP92/7H/zP+9/8f/qf9p
-/yz/4f6W/mL+Kf79/fH9zf3Y/S3+Iv7z/UT+sf7k/uv+6f4O/wr/wP6b/pP+g/6G/qX+v/7I/vH+
-Df8I/zv/ev+f/+f/FwAEAPb/5/+u/1v/D//8/gz/+P7W/qn+ef6S/vT+Kv8Q/xD/TP9//3r/U/8w
-/yD/9/7C/rj+h/4X/uT98/3t/dD9y/3y/UP+gP6g/uv+H//5/gj/U/8q/7b+hP5y/k3+Nv43/hX+
-1f39/YX+z/7K/sb+Bv9U/1X/Nf8y/1L/hP+V/5P/mP+D/3r/nP+i/1b/Fv8s/07/S/9U/4D/nf+/
-/yUAfwBbAB4ALgBWAHoAbgD1/1f/Ev8C//b+HP9C/3H/LADnAPEAuAB8ADIA9/+d/0T/Ov81/wr/
-Ev87/1D/YP9//6v/4P8/ALYA9QDuAAcBUQF9AYcBeQF9AaYBowGGAawB2gHZAa4BPwHHAJIAfwBZ
-ADgARgB8AM8ABwH1AK4AbwCDAOgAPwF1AaUBpQFzAW4BawEJAacAowDAAMUAzAD1ABYB6ACPAKYA
-EwEfAfcAEgE2AWwB1AH+AeEBqwFeAVsBlQGLAYwB5wElAhMC+QG+ASYBYADs/w8AXABkAFQAbgDp
-AHcBdgE5AWIBtwHxATICfQKhAroC2wKlAhUCmQFcAV8BaAE9AfwAzwDNAAMBQgFYAW0BngHVAegB
-wQF6AVoBYAFIAU8BgQFvAUcBawGAAUQBGAEXARcBCwHrAOYA7wDCAJQAlgCBABIAn/+c/8r/5/8Q
-AC8AIQAIACcAVABEAEMAZgB3AKoA6ADYAKUAmQCEAEkAIwASAP3/EwBOAEkACADo/wEAMwBtALQA
-4ADnAAsBTgF/AYIBWgEtASABCgGmACYAvP9V/wr/2f6O/lH+RP4h/hb+Uv6G/q/+6v4Q/0z/w/8e
-AEMAMQDv/8v/z/9l/4L+8/3V/cf91/0Z/lr+m/7+/rz/iwCwAGsAMAAFAAkA8/+N/zX/7f5//jT+
-Dv7I/Z79yf0E/jD+of5A/47/sv/2/w0A8v+6/0r/6/7R/qT+Ov7a/bn9yf33/S3+a/62/tz+2v7t
-/iH/Bv98/h7+G/4U/gj+D/7+/fP99v33/RH+C/7d/QT+YP55/ob+r/7A/rv+k/5U/iP+3v2h/Y/9
-kf15/VX9lP0h/oL+rP7d/iX/Xf+b/9r/tP9A/wX/If8//y3//v7J/q/+uv6//sf+/f4n/yL/HP9O
-/6z/pf9F/yX/Rf9H/yr/GP/k/sX+G/9n/0f/JP8T/wr/Zv/W/wAAGAALAP3/PwB4AEwAEAAHAPz/
-4v/l/+7/p/9P/4H/7f8AAP3/OAB6AJIAkgCDAHMAdQB/AHwAWgAaAPv/MQBoAHMAnQDiABMBJwEU
-AfYAzACDAE4AQgBfAKwAyQCOAIIAtwDzAE0BnAGlAYYBXQE7AVcBaQHVAD4AWAB8AFsASQBNAFwA
-cQCBAJcAnQB4AHYAtgDTALwAuQDKAMUAkwBjAGYAegCiAOEA/gALATIBRQE4ASsBJQE6AX4BvwGn
-AWEBSAE6AS0BMgE8AWIBfQFlAVQBUgE5AR4BIQE/AVUBVAFfAWcBUQE/AUsBVAE1AR4BSwFJAc0A
-ggC3AOUAxwCeAHgAXQChAB0BSwFWAWYBXAGbAfoB2AFoATUBMQHXAGEAUwBQABIACABVAJYAygAs
-AXsBigGPAY8BgwGQAYABIgHSALsArACaAJAAhwBnAGoAqQC2ALAA5wAxAWsBkAGtAbQBkwFeAR4B
-3wCeAE4AGgBTAOIASQFBAcoALAADACYAGgDu/6T/Qf8U/xr/Dv8c/yT/zf6b/uT+D/8E/yb/Tf9J
-/1L/pP8NAAYA0/8sALgA7AAPAUUBVAEpAboALgDY/5D/MP8U/zX/MP8z/2L/g/+W/6T/t//j/wMA
-/P/8/xgAEQDV/6f/jP9K//P+1v4M/1L/dP+N/6X/p/+x/7v/f//7/qb+1/4C/8j+n/64/tr+Af8C
-/+n+8v7f/rb+3P4b/wf/wv6t/rj+pP6H/mn+EP6X/Wr9h/2j/Z79nP3C/Qv+YP6N/rT+D/9E/yL/
-D/8e/x7/Bf/b/pv+Vv4x/jT+Rf5K/mH+fv5k/kH+ZP66/ur+8f4e/1//b/9H/xL//P4F/z7/sf8T
-AP//qP/J/xYAw/9O/0j/Ov8g/0f/Vf8q/xD/8v7A/p7+ZP4p/kX+lP7J/t/+4P64/pr+2/4q/yX/
-Cf8H/yn/fP/J/+H/0P+m/23/PP9C/1T/Qf9G/1v/XP9o/5P/pv+I/4r/u//R/8n/wv/V/xsAagCA
-AGsAVgBbAG0AXgApAAAACQD0/8H/yf+y/zn/Bf93/9b/6v8sAGEAcgCtAOsA9wDdAJ0AgQCVAFEA
-w/9j/yL/7P71/jX/jf/j/zQAwABFAV0BTwFEASsBLgEoAfEA+AAvAdsASQAkABMA3//g/+b/1//6
-/zsAkgDaANYA3wApAVwBYAFCARcBEwEWAd0AlACIAKUAwwDTAPoAEgHoAP4AVwFTASgBKQE6AVsB
-UgEiAUoBkwGKAW4BQwH+APQAMwFUASIBIQGZAfMB1gGgAZgBmQGkAdwB9AHNAcQBzQG9AcoBCAI3
-AkgCXwKLArUCqQJNAvoB+AH3Ad4B3gHbAbkBjwGTAaEBbQE/AUQBIgHoAOUA1wCQAEwASQB2AKEA
-pQBmADYAWACTAKgAjQBaADkATwBkAF4AggCvAJQAawCHAJUAXAApABIA/P8HAEMAXQA0AA4AKABa
-AFAAFAAUAFIAYABDAE4AbgB1AHsAhgB0AFMAPQAnAC0ASABWAFwAXABZAD8AHQAmAB4A1f/T/0gA
-mAB5AD8AKQAZACQAUwBPAB0ALABbAFEAaQBuAOb/gv+m/8X/vv+3/6L/rP+w/1//Pf9x/2H/Hf8p
-/1X/RP8z/yf/8P6q/o7+pf65/uD+H/8l/w//Nv9f/z7/Kf9D/2P/lv+//7X/nf+M/1j/G/8n/0L/
-Kv8B//L+D/8e//n+4f4k/4//lP9H/wz/5f7M/rL+hP5b/j7+Hv4C/gL+8P2K/Uj9sv1E/ov+tf6j
-/nH+lf7n/gz/3P5t/l/+uP6b/vD9gf14/Wz9Z/2h/d39AP4r/k/+fP6y/uL+B//6/s7+vv7E/vL+
-T/9b/y3/Zv/M/73/ZP9W/3D/UP89/13/aP9m/4D/jv96/4z/1P/x/7//ff9d/2T/S/8E/+7+Lf+H
-/4f/Dv/V/kj/yP/V/6X/ff9r/2n/W/9P/0L/8P6L/oH+rf7B/vT+ZP+J/0v/VP/Q/ygAOAB2AOgA
-EQEAAQkB7wDIAKsAPwDO/77/zf+u/3H/Sf9q/7z//P///8//0/8WAEAARgAwAAQAGQBrAGoAKgAL
-APT/7/8zAKcA2gDXAAQBNQEhAQABAAHJAD8ANwC4ALwAcwCAAIYAcwCXALkAuwDEAOIAMwGgAbAB
-WgE4AUgBIgHlAMEAnQBtAF0AbQBrAGIAcQCLAL8AAAEmAUUBWwFvAbEB7AHNAXEBPwFmAYUBVwE5
-AUABLQEiAS0BKgENAe0ACwFbAY4BtwERAnsCpwKdAnsCLQLoAdQBxQGjAZYBnQG3AeMB0gF+ASUB
-8wDqAOQA7AAjAU4BCQGIAF4ATQDH/1z/gv+x/9n/TgCmAHoAUwCSAPEABQG1AHUAmADfAO0A0gDD
-ALYAkACEAKIAhQBPAHIAvwDuABcBMAEbARkBIgEMARIBHQENASYBZQGBAVcB+wDGANoA1gCMADIA
-7v/I/73/pf9x/zX/Dv9G/7L/rP9q/43///98APYAUwFdAfIAZgA2AGYAWADS/1v/Pf82/x7/E/8O
-/wz/Qf/H/0EAZQBpAG8AgQDGAPEA4ADqAPUApwAkAMb/dv8m//X+tf6I/q7+3f4Q/0H/Jf8T/z7/
-V/9o/3r/ev+A/2z/HP/R/sT+1f7N/tf+//7v/s/+FP9q/0n/Fv8C/8b+tv7f/uL+1P7E/qL+r/7X
-/q7+P/4E/h/+I/79/TT+tv7W/pn+a/5O/kb+T/4q/tD9lP2n/fD9R/6J/q7+xf7g/k7/4/8CAKP/
-JP/q/gH/JP8i//z+7f4a/zr/Lf8//3T/f/9r/2z/Z/9G/xP/4/7T/sH+gf5A/ij+HP4m/m3+z/7W
-/pj+iv6O/pb+wP7b/uP+Bv88/yz/yv56/nv+ov7Y/ib/b/+l/43/Lf8P/0r/Xf8o/xX/Nv9h/4X/
-e/9w/4z/iv9U/1j/rv/Q/8L/5/8BAOX/3P/u/9L/ov+h/7n/r/+E/2n/c/+d/6H/af9V/6L/9/8U
-AD4AUAAuADsAUQAgAAsAFADY/4//Yv9M/1//XP85/z7/W/9b/1P/Rf9g/9H/LAAhAPj/9v/q/6P/
-av9z/5X/zf8XADMAXgC/AOIAtwCuAOkADwEUASUBFwEDARkBJgEQAfIA9gDwAM4A4wAdATcBDwHY
-ABIBfwGIAV8BcwGdAYQBSwFAATwBDQEGAUIBWAEWAcwAvwCxALIAzgCrAJUA2gAVAR8BOQFkAWcB
-dAGQAVoBCgH7ANAAiQCPAJkAcwBYAHgAuQDXAPEAOgF+AZABggF2AZEB5QEXAuUBkwGJAcwB/AHt
-AcYBnwGVAcIBDwI7AjMCIQIuAmcCpwKnAksCzAF+AYcBqgF9ASsBHQE5AUEBEQGYACQAOACtAOcA
-yQCLAF4AZABuAEsAGQDP/2//WP+l//7/IQA2AEYAHAAEAFsAtwC+AL0A3gAIAToBYgF0AUwB5wC+
-APkAMwE8ARgBwwCMALcA1QCOADkAHAASAB0AUgBqACkAzv+y/7f/mv+G/7T/7f8IADEAawB+ADgA
-7//5/y0AVgA/ANX/Qv8R/4X/3v+z/4L/bv+R/wAALgD//9X/vP+//9D/pv9R/yj/Fv/8/jD/mP+W
-/yL/uv6t/tj+8/7l/sr+1v4h/1v/Uf9C/zT/JP80/0P/Vv+q/wUAHAACAPv/MABXADEA7/+r/23/
-R/8f/+X+t/6u/u7+VP+I/4X/Yf8w/xj/+v63/of+eP5W/kr+nf4C/xb/+f7a/q7+f/5e/lb+ZP5v
-/oj+wf7A/kD+1v37/Sb+Cf7s/fH9Cf5U/tL+IP8n/yv/M/8S//T+AP/z/tD+5f4T/yv/Hf/Z/m7+
-Hf7//en97f0W/kH+bP6Q/p3+jP5o/kz+c/7w/nD/r//M//3/JQAWANv/kf80/8j+hv51/lj+/v2m
-/cz9Gf4H/hL+gf7w/mb/9P9ZAFgA+P+P/3n/p/+Y/0D/9/69/qH+pf6c/oX+iP7g/or/QADDABAB
-TwFdAQgBkgB2AJMAcAAyACAAJQAgABwAMQBHAGMAgQCnAP8AUQF0AYgBfAFFATEBNgEQAdAAnQBt
-AE4AWAB0AIYAggBuAFYAYwCsAMIAhwCTAN4A7wDSAKsAkACiANQA6gDwAPEAtQB3AJcA1ADdAM4A
-7QBDAWUBSAEzAf4A1QDuAAkBCAH9APcAAwEOAf4A8wABARkBSgGQAcsB2wHLAckByQG9AdQBAALp
-AZoBcAFiAT4BHwEKAd8A2gAAAQcBDgEtAU4BcAGMAbEB4AHQAZABiwGkAYQBTAEYAdoA2gApAVwB
-ZAFoAYIByAHaAakBhAGaAd4B1wGjAbQBrgFKASIBZwF7AVgBXwFiASwB8gDJAJkAdgCEALoA5QDM
-AJoAqgDdANwAowCTANEA8wDqAPIA3wCOAEQALQBDAGsAZAA1AEQApQDmAPIA9wDNAJAAdgBRAC4A
-NgAMAK7/av8m//L+9f77/v3+Iv9S/2z/d/92/2j/SP8w/zv/Rf82/xb/8f7x/h//c/+z/47/Tv9h
-/7H/4f/b/9f/8P8eAEsAYgBOACMAAQDm/+L///8RAAwA8P/C/7f/4v8BAAAA/f8HACAAKAAdAAIA
-x/9u/yP/Ev8X/xj/OP9B/+T+aP5N/nb+if5u/iz+8f0D/lL+l/7G/uD+0v7L/vr+Cf/V/sj+3v6r
-/mT+X/5K/v/94P3+/Qn+Bv5C/rT+Ev8p/x7/Rf+C/3n/Rv8c/xL/Ov9I/wP/zP7n/gL/yP57/m3+
-dv5+/rT+AP8l/0H/X/80//r+Fv8R/4X+9f3a/SD+fv6q/ob+S/6B/hP/QP/6/q/+hf5+/oz+kP6n
-/qf+QP72/Sn+UP4n/g3+Hf4N/gf+Wv7A/s/+xv76/iT/Lv9Z/4//i/+D/5D/fv+U/8f/fP/k/pv+
-kf6d/sb+2P7E/s3+Ff90/7L/kP88/x7/Mf9S/5H/7f8nAB8AJABXAFEA9/+0/6X/iP+A/7r/1v+F
-/yv/Wv+3/43/QP9i/8X/KgB+AJ8AjACMAKcAnQB1AG8AiwCjANgAKwFVAUQB6ABdACIAOgAxAOv/
-tP/F/wAAWQDAAPoADgE5AXYBqgHSAecB+QEEAu4BtQF4AVsBNAHwAMMAnAB4AI8AxgDrACQBjwHr
-AQwCEwL1AbUBpgG7AaABswEgAjwCygGCAaoBhwEJAd4A6ADlAPwABAHnAO8AAgECARMB4ACDAKMA
-EQFOAV0BUAEyAQsB9QBMAZUBOAEKAYMB6AH/AewBrAFvAVMBLgH5AM0ApQCqAMsA1ADJAKYAiQCQ
-AJcAuAAFAT0BiQEEAmwCpQKjAlcCzgFxAWcBOAHmAKUAagBHADUARQBrADYAzv8DAI4AsgDcACcB
-LAEzAXABkwGBAVcBIQH0AMkAbQDp/43/ev+U/9j/MABUAGgA2gBtAaoBnAGZAaoBuAHAAZMBTAEn
-AQQBsABOACAAHAAVAPD/1P/j/wsAPQBXAF0AewCyAMIAngB+AFEAAwCi/1H/JP8K/xj/LP8X/xL/
-K/8j/1P/2v/4/6v/if+O/5T/fv9I/yT/AP+2/oT+sf7l/rr+q/4J/1n/dv+a/6P/Y/8j/wj/4P7g
-/jD/Qf/H/kj+Sf6U/tb+Gv9X/4r/5f9eAKsAqACBAE0AAwCl/1T/Of9N/2D/T/8s///+zf7B/tT+
-1/7k/h3/RP9P/1X/U/9Q/0X/Mf8B/6H+cf6o/rD+aP44/vv9wv3t/VX+tv76/g//Kv9p/0//xf6D
-/sz+8v65/pj+jf5P/vv98v0//nr+gv6h/u7+Gf8K//n+5f7R/tD+/v4r//n+y/4D/z//Ov8q/zD/
-UP+G/4z/af9I/yn/G/8J/xn/cv+0/6z/uv8RAFoAWQAfAPn/EQD4/5r/ff9//xr/rP6p/qH+df6M
-/uP+MP9C/zH/T/+S/6f/sP8BAF0AZQBEAA8Asv9I/wv/Kf9b/3n/wP8AACIAZQCiAJ8AiACNAJ4A
-sAC6AL4AxwC8AI8AYABbAJQAxgC/AMQA6QAXARgB3wDSAAgBIgH9AP8AMgFAAS4B9gCZAF4ARQAP
-AO3////Y/3v/c/+x/97/9v/f/7P/wP/t/yAAUgBXAFAAVgARAK3/rP/q/+n/hf8o/z3/fP90/3T/
-2f9FAJEAAQGAAbQBjQFUAUoBPQEPARABNQElAQoBHQEfAe0AqAB9AJAAyQAUAU4BTQFWAYEBbwEY
-Ac0AvADBAKIAiwC5AP4ACgHaAJsAMADr/10A5ADuAPgAAgHLAL4A2gCeAFQAPQAaAAAAAQDx/xEA
-XgBWABgAOwDAACgBbwHQARwCJwIiAhcC4wGCAQABbgADAN3/3//w/wIAOQCOAPEAawGrAZUBbAFh
-AXQBgAFlARIBtABpAA8Axv+3/7n/tf/U/x0ARQBFAGEAkQCyAL4AuwB7ANT/c//X/xEArv9v/3z/
-ff+3/yEASABGAF8AogD1APoAlQA4ACYAHwDw/8X/ov8s/37+J/48/lH+W/6f/hP/f/+1/8P/0//h
-/+r/7P/l/97/3//0/+T/i/80/wT/Ev9Z/6j/5//3//X/IgBXAFUARgB0AK4AjwAoAMH/lv+3/9P/
-xv/K//D/5v+h/6f/2/+w/z//1f68/uj+4P6Y/mb+Xf5t/p/+v/6y/sH+Cv9N/4L/rv+w/4n/Yf93
-/7b/wf+W/4H/nv++/6T/df9t/2H/Rf86/1X/hf+S/63//v8bAO//0P+8/4//bf+U/+b/DgAGACcA
-gADKAOIAwQCQAGAADQCv/2X/J/8A//v+8P7O/ob+H/4K/nf+2v4G/1j/t//y/xwAKgDt/1D/s/57
-/mv+Rv4A/sH9yv0F/kD+e/7I/iH/bP+5/wcAIgAaAAAA3P/q/xgAAwC0/3f/PP/Z/o/+hv6T/sn+
-Ev8f//v++P4//5T/mP+Q/9b/AADm/+f//f8HAPH/n/9j/3T/hf9+/5r/3f/z/7X/rP8gAH4AeQCA
-AKQAlwCPAI8AawBpAGcANwAiAC0AIQAJAPr/0P+k/87/EQARAPf/5f/v/yQAVgB1AJQAqACjALIA
-/gBGAToBAQEDATQBOwElAQABwQCtANIA3gDIAM0A/gAcARgBGQEvATkBAgGyAJoAqwCXAEEA7P/o
-/zEAdwCqAOEA5gDlAEABdwE8AfsAwwCeAMkA7QDHAKUAegBJAGUAfgBgAGUAdwCOAOYAOgEoAbsA
-YwBcAHcAbwAZANn/AgAvACUAHAAtAEUAYACCAKIAqQC4AO0ADgEdARwB9wDIAKYApQCsAIIAKwD2
-/w8AQABRAEoAVQCKANEAEgFQAW0BXwFUASIB0gD9AGoBTQHkAKQAcQBRAEAAIwAhADcAPgBOAHEA
-aABKAHEApwCnAKwAsABiAPj/+v8uABUA3v/p/zQAXABjAHoAdAB/AMIA1wC1AM4AHwFDAUYBPAEa
-ARQBIgEVAf8A7ADfANYAxACoAKcA0wDzAO0A2AC5AIsANwD1/+//xv98/2H/MP+2/n7+t/7a/sD+
-s/64/rz+4/4u/3D/p//J/9L/AAA3AAAAp/+n/5f/NP/1/hH/G//V/tT+MP9H/0j/lf/c/+D/zf+1
-/7P/3P/k/8j/s/+j/6r/xP/J/6P/Zv8p/yX/T/+D/8j/9P/7/wEAAADX/6X/XP8I/wL/Jf86/0T/
-Mf8d/wr/wP45/r/94v2X/gz/K/9E/zr/Jf8W/9X+fv4u/tH9vP3t/fD99/1M/ov+bv5v/tf+Lf9C
-/2n/sf/Z/7z/lf+x/8f/oP+E/4T/pv8GADYA5f+T/5D/qf+n/17/+v7D/r3+8/4o/xf/4v7F/r3+
-rP64/ur+Mf+a/wkAWAB0AFYALgAhAAMA8f8BAMv/Q/8O/17/gP9B/yj/NP8//57/PACmANIA0gCn
-AGYAHwDr/83/3/8aADEANABIABwAlf8a/+z+4P7O/sH+6f5K/43/iv92/3L/bP9G/x//Nf+W/wMA
-MgAQAPf/CAAbACcALAA1AEMASwBIAA4AyP/Z/xEAUwDAABIB6ABdAP3//f8BAB8AcwCKAJIA7gA2
-ARQBwwByADMAHwAZAAAA9P/o/8H/ov+p/5n/bP+O/8r/0v/1/y4ATQBBADkAZwCIAIwApQClAKIA
-zgD+AC4BWwFtAVwBMAEXAQUB5ADLALIAjAB0AHMAdAB5AJUAwgDmABMBegHIAcwB3AHgAcABrAF1
-AfwAlAB1AGkAQgAcAA8A7/+r/6X/DAB+AKUAsADrAGoB9QEpAggC2AGtAbYB4QG4ATQB4gACAfgA
-hQBEAGgAqQDSACQBsQHtAc4BngF1AVgBKAHhANYAAQHsAMkA5QAAAfIAzgCwAKkApgCyAM0AygCw
-AL4A5wC9AGMASwBjAFsAHgD2//7/BAD9/xAAagC9ALgAqQDkAB8BBgHKALQAjwBOADwANQAZAPH/
-uf+W/4L/Rf8b/1//n/+K/6P//v8+ADsAFAAGAOz/nv95/4j/cP9W/3H/nf/G//n/KwBFAF0AiwC+
-ANEAswCHAGgAVQAVALX/mf+J/zj/A/8l/0X/Cv+//qb+oP6//vX+3v6i/rH+1/7X/tj+1P6n/nT+
-kP7L/rL+eP5W/g7+zv0G/mr+hP5x/mb+of7r/sv+mf6z/tf+3/7o/gD/A//d/qL+h/6K/nn+cv5l
-/lD+e/6x/pj+cf6E/qD+r/7L/s7+u/7S/g7/LP8R//n+I/9e/27/Xv86/xL/Ff9N/3X/kv/D/8P/
-rP/H/9H/p/+D/2P/E//o/kT/Zf/P/mj+eP58/nf+d/6G/tT+Dv8I/zv/hf9x/1H/jP+2/4L/Zv9w
-/yn/mP5W/qv+9P7R/tH+If9d/3T/jf+v/9f/7v/p//3/LQBvAMUAxgBGANb/vf/N////EADr/9z/
-8v8FAPX/zf/E/8X/wv/o//v/w/+X/4//av86/y7/Vv+U/4X/KP8X/2T/cP9R/1j/Pv84/5D/2f/w
-//3/2v/K//v/9P+S/2z/ov+7/63/tP+t/4//rv8QAF8AjQDRACABKQH4AMkAqwCyANwA+wAZAUgB
-RwE7AUAB9ACVAJYAtgC2AOoAZQG5AdQB2wGnATEB1gCxAKYA1gAhAVUBmgHZAbUBUgEWAbkAAAC7
-/20A/ADaANUA/wDyAMAAdAAiAAAABwA5AHwAigC6AD8BcQFHAVcBmwHOAQcCYgK0AtYCxwKLAiAC
-mwEhAa8ATAA2AHAAtQDhAB8BdgGbAY0BhgGNAaoB1gHlAdUBuQGhAZMBUQHLAGsASwBPAIIA0QAE
-Af8AFwFtAX0BDQGXAIMAigB9ANwAggGEAQgBsQB5AHsArgDPAO0A9wDnAAkBSQFRAUUBVgFeAS4B
-1QCIACkAm/80/0H/gv+5//7/QwCXAAcBQAE+AT0BHQH1AAkBBgHCAJQAWgDv/53/gv9+/5z/9v9f
-AJEAsgAJAWcBkAGbAZwBegFQATYB/ACiAHQAfgBlAEgAdQCcAF0AEwAxAEIA+f+t/4D/W/84/wb/
-p/5Z/kj+a/7O/hr/K/9S/5j/2P/g/6//b/8b/+H+JP98/2z/QP8z/zv/Tf9e/zX/3/7b/iT/dP/D
-//r/9v/D/3//Kf/R/qz+tP66/s3+Ff9y/6j/t//C/9b/7P/r/77/dv8s//H+2f7n/un+v/6e/q3+
-t/6M/l3+hf7m/gn/LP+B/4P/Tf9j/4j/P//N/pb+hP5k/gr+nf1+/Yn9f/2V/eL9N/57/sf+Jf9r
-/4f/lv+y/9r/5P+1/2L/Kv8X/9n+Xf79/fb9Gv5i/sX+7v71/iP/Vf9k/03/Pv91/6z/t/+2/5f/
-Uv8S//H+yf6n/rT+yP70/kD/T/81/1b/t//k/8L/0v/m/7n/j/93/3n/bf82/zv/jf+X/0L/MP9n
-/1v/MP9W/5D/Zf8N//v+Av/8/hD/If8K/xf/YP+H/6D/4P/v/8r/tv+5/9P/AwAdAAUAHQCAALgA
-qACNAGYAPwA6ACMA3f/O//n/7//d/zIAmAByABwASQCvANQAwACKAFQAPQBvAMYAuQBFAOT/9v87
-AEQAKQAcAEIAggCbAIQATAAoAFAAfgBcAEEAgQCpAFQAKQCxACUBEAH/AP8A7QD8APcAtQCYAMIA
-6QAFAQsB0QCnANMACwEfAVIBpwGuAW0BYAF1AT0B1gCeAJYAmQCWAJIAowC1AMoACgEvAfkA2gAV
-ATABKQFPAUsB/wDHAKMAiwCkAMsA1wDCAKEAwQAcATgBIQEoATYBLgEpAUABOgHuAKsAxwAMAQMB
-ugCRAJYA2ABCAXMBewGXAbQB0wHsAcEBeQF/AZUBYQFIAX8BfAE0AToBhgGwAawBpwHBAd0B5QHx
-AdkBjgFTASgB6wCvAG4ACgDJ/9L/wv9M/+v+Pf+8/8X/1P8RAB0AQgCZAKgAhgCVAK8AnQBrAAkA
-lv9f/0P/Hf8e/0j/bP+N/8v/5f/c/xsAjwC/AIkASQBGAE8AVABcADcA/v/X/9D/5//5/wcAIwBG
-AGIAhQCyANcA1gCkAFoABwDA/4T/Tv8m/wb/6v64/pL+xf4x/1z/GP/e/iT/oP+i/zr/9P7N/s3+
-8f7N/mT+Cv7U/d/9OP5u/nb+tP4f/2D/W/9L/z3/Hv84/6T/8//t/+v/4v+D/yD/6f62/rj+Bv9O
-/2//kv+6/9P/0P+t/3D/PP81/07/Y/9F/xP/6v69/pj+fP6a/tD+8P4//5X/oP+C/2D/J//V/n3+
-Uf5N/iz+JP6X/gr/+v7h/tT+kv6r/ir/eP+S/4n/Y/9x/3P/BP+j/qr+pf58/nz+ov6t/nT+R/6A
-/rz+tv64/qr+lv7V/hH/F/87/0z/If8A/w7/Lf9D/0f/Kv8F/xj/Zf+Y/4n/d/+Z/7z/wv/N/9b/
-6v8JABEA+//g/9T/z//L/87/0v/s/x4ACQCb/6j/OABOAPr/wv+n/6b/o/93/0z/Tv96/8//DgDc
-/3f/d//J/+j/r/9l/1//jv/E/woARQA0AMj/YP9g/6f/2v/R/7n/0f89AK8AsgBzADkAFwDf/5X/
-q//x/wgAEQA0AEgAHQDz/w8AQQBfAJIAwwDpADYBcwFUAe8AlQBWAEMASgAVAOL/6P8KAEMAdwCB
-AIIAqQDkAEMBrgGqAVABHQEOAQkB9QCjAEIAPwBfADwAJQAzAEcAfgDfAE8BmwHFAfwBPgJVAiYC
-3QHWAfwB0AF+AYgBsAGIATgBCQHfALYAuAD2AD8BNAEVAVsBxQHmAbkBdQE2AfgAyQCzAKcAhgCB
-ALQAyQCWAFkAVACvAA4BEwEhAUkBVAFpAZUBsQGtAYYBPAEYAQ8BzACdAKwAmABuAGwAfwB8AFIA
-IgAoAHAAtwDAAIwAYQBgAD8AEgAqADYAAgAZAHgAqgDrADEBDgHwAEIBjwGTAXQBOgHzAMMAhgAn
-AM7/oP+w/7n/v//m//T/6v/1/xwARABlAEwAyf9m/6D/yf9h//n+s/53/on+u/7Q/un+G/9V/4j/
-tv/U/8f/t/+4/5P/hf+j/4P/Lf9D/9j/GQDS/5j/mP+L/1//Rv9S/1j/YP+F/7f/7P8FAAIAJgBb
-AF4ATQBBAAwA0f/B/5//Tv8I/wD/Hf8t/zv/Uf9c/2b/df+X/8z/3v/P/8f/oP9r/5X/x/+P/zz/
-7/68/sf+2/7//iX//f7r/kL/aP8X//L+/f7X/sP+tv5+/mH+aP6D/qr+yP74/jP/Mv8Z/13/rP+k
-/57/wP/t/xMAEADu/87/yP/X/+f/+f8JAAAA3v/X/+z/3v9+/yT/IP8j/xH/+P7Q/sP+2P7U/rb+
-zv4F/yb/RP83/wH/Bv9I/0//BP+3/mb+Jf42/l3+bv6F/q/+//5g/3f/T/9m/5//k/9t/03///6N
-/n7+2/74/tH+3f4S/0r/d/+E/4H/lP+8/6r/hP+x/+7/BAAPACAARwBVADcANQBMAEIALgAuACUA
-EwA1AFMAAwCw/+3/PgAoAP//GABnAKsAwACOADUAKwBNAO//Zv9W/3//yv9JAMYAJgFDAREB/AAT
-AdYAagBsAJAAOwDY//L/TgBVABQACwAmADYAfgD5AD4BOgEYAesA5gAbASoB9gDDAMMAGwGbAbMB
-dgFlAWEBRAEyAfgAiwBjAKEA4gD3AAEB9gCzAJQA1QAmAU0BSQFpAbcB5gHzAe4BjQHsANcAGwHS
-AFAAMABPAIkAtAC2AMwA0gDQADABiAFpAVIBeAGMAZEBfQE+AfsAtQCGAIMAeABAABcAPwCUAM0A
-5gD8AA8BEAEPARQBEgEhATkBKQHgALQA2wD3ANwAyQDYAOgAyACoAOAAJgEaAQcBIwH5AI0AVgAg
-AMX/iv+M/+j/XwBoACkASQCvALoAnADAAOwACgEjARkBAQHCAEsAAADT/2L/HP83/z7/Lv9D/3j/
-n/+o/9f/CwDk/7f/5P8RAAkAGwBCABMA0v/u/yUAJAD+/+7/IgBqAF4AGAAMAD0AdQCXAKcApACi
-AMwA8QDKAI8AUQAYAAYA6f+h/1v/Tf9j/3b/af8i/xL/Of/x/n/+kP66/mz++/29/bj9//1v/rH+
-x/7z/jb/bv+D/1T/Dv8C/zH/hf+2/6//o/9z/0X/Zf92/0P/7P6t/tj+Hv8z/1f/df9G/xj/Ov9P
-/z7/Sv9l/4P/nf+c/3D/Mf8n/z7/Hf/b/qz+iP59/oT+h/5y/n3+6f5O/4v/xf/B/3n/Ov9b/7T/
-vP9u/x//5f7N/tz+xP6B/nP+nP61/pr+Yv5I/nj+wP7V/tX+9/4m/zD/Dv/0/uz+6f4J/zH/Hv/y
-/t3+1/7c/v/+OP9d/5D/4v8sAGsAZAAAAML/2v8EACAADgD6/wUA+f/c/83/r/+m/7//z//q//3/
-z/+V/5T/sf/B/9r/8f+0/1P/ef/g/9f/j/9I/yP/Vf+N/4X/fP97/4H/vf/+/+T/sv/V/xYALwBI
-AHMANQCr/6T/HwBjADIA//8BAB4AKgD6/8z/7f8hAEkAggCJAFEATwCFALUA1wDwAOcAuwB6AEcA
-RgBFADoAXwCjALwAswDiADsBQQHoANEAJwFGAQUBuAByAFcAdgCIAHgAcQBgAFgAmQAFAVwBcwFZ
-AV0BiQF+AS4BAAESAQsBzAC1AMMAkQBrALkAFwEiASkBSgEzAQ8BJAFGAV0BewGPAXoBPgEMAQIB
-GQFYAZ0BtgGwAaoBqQGiAZcBjwF3AWwBhwGmAboBkQFSAUsBJgHCAJ4AwQCwAGYAQABHACcAr/92
-//L/ZgBkAGoAjACcALgA0wDcALIAQQAHACgA8P9O/xr/dP+7/8X/4P8dAFIAaABwAIYAnQCmAKAA
-kgB0AFcAdgC0ALAAbgBEAGAAlwCpALoA2gDMAKwAtQDLANAAywDiAC8BdwFlAQwBowArAL//lf+I
-/13/Vf+z/xoAOAAkANX/oP/u/ycA8//C/67/eP8m//X+3/6m/mH+Xv65/hz/Kf9e/9n/AAAZAFcA
-awBZAEYALQD//9n/6v8RAAoA/f/4/9D/t//C/7z/rP/A/9z/7v/7/+r/tf9u/0//d/+c/6n/r/9u
-/wf/4f7o/v7+Hv9L/4f/r//Y//f/2v+3/7v/uP+V/4H/Y//4/qz+Bv9r/0z/Ff/u/uX+KP9g/13/
-bv9+/0P/Bf8K/+b+kv6G/qv+zv76/gf/wP5x/nX+f/5M/hb+Nf5o/mX+iv7D/tj+DP9A/wr/qP6d
-/t3+Ef8O/wP/KP9Y/2P/cv+u/87/tv+s/7X/v//F/6b/gv+p/xAAVAAqAMP/kv+B/0v/NP9b/3P/
-Y/9d/4D/g/84/+j+tP6x/t/+5/7M/tb+AP9V/5D/QP++/qD+xv7P/r/+tP62/r3+5v4k/xr/xP54
-/m/+nP7k/i7/Zv+N/5L/nv+w/5X/WP8d/w7/D/8h/07/Zf96/7L/1v/E/8H/9/80AHsA3gAlAU4B
-agFlAU4BJAHSAIEAOQD2/+f/+P/s/73/uf8DAEIARABPAGEAZACVAMYAswB3ACIA4P/z/wgAw/+G
-/4n/ZP8r/1L/rv/A/7f/NwAQAYsBlwGKAZMBnwGIAWQBYwGBAXYBOwEdAQ8B3gCbAIYAqQDJANQA
-+gBWAaIBtgHHAe4BBQLwAecB+QHcAYwBawGRAYwBYQFsAX4BZwFYAYEBzwHeAaYBpgG3AXABKAEu
-ATcB6gBvAEQAbwBxAC4AHABVAIsAtwABAVABTAEhATgBXwE9AQ4BEQEUAQcBBwEGAfsAAgEQARkB
-JwFIAYgBtQGdAW8BawF9AWIBFgH2APkAwABnAC4AGwAcAAkA2//p/zsAZQBkAIIAtADFAMYA0ACb
-AC4AEwBFAEAAAgC//2//V/+L/6j/uP/r/y8AbwCHAHgAUAAsABkA8f/g/xcAPQD8/5b/sv8mAC8A
-6v/f/ysAcABqAHUAlABrADoAUgB3AGAAEwDx/yUARAAYAPP/3/+e/3H/ov/D/4r/Tf9Q/4j/rP+O
-/3f/ff95/3//qP/R/9f/7P8bAAoA7P8aABQAy//P/9b/nP+Y/7P/hP88/xr/I/9m/5X/dP9r/4f/
-Yf8X//P+5/6p/l3+i/7V/r/+xv7//un+qf6x/tD+s/6i/uL+Nf9Q/2H/eP9e/zz/Sf9o/33/nP+7
-/5z/Yf91/37/D//F/vP+If/r/oz+hv67/qz+Tf4e/lj+l/6y/qr+VP4f/m3+yP6s/ib+i/0Y/RL9
-Uv15/Y/9v/0E/nP+B/9D/xP/AP8u/1n/Y/87/9v+h/5//pb+l/6p/uX+HP86/0j/NP8z/3v/sf+0
-/8T/0f/j/xcAOAAlABIADgD1/97/6f/6/+z/sP9m/y//Kf9i/5X/p//E/+D/BwAvAC8ADwDa/6//
-dv8n/xn/Lv8c/wb/8/7Y/tP+//5I/5//6P/u//L/MABMACsABQDA/zD/vv7h/jv/V/9S/1b/bv+p
-/wgAeACrAIIAaQCLALMAzwC7AF0AAAD2/0wAvwDdALcArADIAPgAJwEaAc4AZgAbAAoA4/+8/9j/
-6P/F/7r/8P8uAFcApAASAU4BbwGfAaIBfQGKAakBSgGyAHEAYQBrALMAAAEKAd0A2QA3AYUBYAE1
-AYIBCwJdAmYCYAIoAsQBngGQAW8BZAFpAVYBMQE1AWEBZAE4ATABPAE9AToBNAFkAagBnwFuAUUB
-JwFFAXsBXAEgAR0BLwE8AVYBfQGdAZEBbQFVASYB4wCkAGsASwBZAIgAiwBeAEwAMwACABEAVACT
-ANYA5wC/AK0AnABzAFYALADk/8v/3/+u/2T/XP9r/1//Tf+L//3/JwAeACUAQAB0ALMA0wCvAIIA
-qwDmALwAdwB+AKMAtgCrAJ4AtQDUAPEADgEZATIBcAGIAT8B3AC0AK8AoACdALoAywC9AKsArwDN
-AO0ADAEZAeQAhwBhAEgA2v9v/0X/Gv/5/hL/W/+v/7//lf+3/wkAEQDx//L/1/+l/+D/kQANAdYA
-ewCTALMAbgAFANb/yf+6/5j/eP+n/9X/o/+G/67/xv/m/xoABQDg/xoAeAB9AAcAg/89/xD/0v6U
-/oj+mv6X/n/+Uv46/mP+mf7D/u/+Hv8O/7H+xv5A/xr/ff4n/iv+TP5h/kP++/3z/S/+Vv5l/k/+
-Rv6Q/vf+Nv9o/6//2v+t/3D/Uv8q//T+vf6L/lb+Sv5m/jv+G/5+/v3+Pf9b/4f/xv/v/8v/df9T
-/17/Tf8r/wX/2f6k/oz+tf7Z/s7+0f7m/u3+Gv9W/z3/B//9/gf/F/85/2f/Sv/o/vL+Sf89/+7+
-rP6s/vf+Av/F/tL+FP8p/0D/cv9y/1z/gv+e/4j/hf+G/2r/Rf9L/5z/4//y/xQAFgDL/6n/oP9s
-/2L/mP+1/53/ff92/4f/r/+2/5r/xv8nAFgAVwBDACAA7//J/83/4f/l/+D///88AFQANgAUACYA
-YwCPAIIAMgAJAFIAegAxANH/c/8c/xb/Wv+m//b/GgAMADMAfwCjAKgApQCxAM4A1gC4AIQAQgAx
-AH0A3QAGAQcBDAEVASIBRAGEAbgBtQGYAYMBdQF6AYwBZAEDAeMAIgF4AakBswGnAagBxwGxAYgB
-mgG6AeQBCgL8Aa0BVwFmAakBrQF8AVABQgE2AQ4BDgFIAXUBlQGvAaUBogGyAZ0BiAFuASoB9wD1
-AL0AWQBeAKIAxwADAU4BWAFEAYMB3gHKAYMBeQGLAXwBUwEsASwBVQFrAXYBgwFqAWEBkQGdAVIB
-BwEDASABJQEzAXoBvgGuAXUBUQEtAe0AmwBEABkAOwBVAGEAmQC3AJ0AggBDANX/1P9cAHMA7f+x
-/7f/kv9w/2H/bf+h/8L/0/8qAHQAPAAhAG4AXQDp/97/LAArAA4AVwChAIMAdQCiAJkAdQB6AIUA
-aAAqAPb/6f/2/+f/yv+3/5T/lf/X////2P+n/8n/CwAOAM3/mf+//+//+v8KAAMA5P/U/8b/rP+i
-/43/kv/U/8D/T/9R/8b/7/+4/3D/Uf+C/6//nf+Y/4//Rf8T/xT/3f6Z/rT+0f6d/nH+mP7S/pf+
-Ev71/Tr+XP5Q/jH+C/5A/r3+7f7R/sv+3/4N/z3/T/9o/0n/8f7T/tz+2v7I/rX+t/7B/rr+k/5u
-/nf+lf6l/rT+tf6a/nj+Qf79/df91f3l/QT+Nv5T/n7+4P4G/7z+mf6p/nX+N/4t/iL+B/4K/kf+
-Yv4Y/rr9of3O/Qb+8v28/dD99f0G/mj+Af8M/5L+eP7G/uP+2P74/ib/H/8H/zj/iv90//z+wf7Y
-/sn+u/7f/gD/Jv94/6T/nP+3/9H/0v/S/+f/IAA1ABIACgAdAOf/nf+S/13/+v7C/pD+RP4u/nr+
-6v5M/5P/rv+f/6H/9P9aAG0AQgAQAOj/6f/v/5v/IP/o/tj+2v4V/2P/hv+f//j/gQC+AJAAdgCc
-ALQArgCjAKMAlwBgAEUAewCcAHcAZQBoAFAAcgDMAP0AFQFEAW4BfQGIAYEBUAEpASsB/wCqAKIA
-uwCyAMAA5wD5AOwAwQDTAEkBgAFZAV4BXAEsARkBCQHrAMUAdwBjALkAwQB8AKQAEQEiAfkAQgG+
-AbIBcwF8AZcBpwGvAYQBRgEQAdQAtQDSAAgBIgE3AXABrQHwAUkCfQJ3Al0CRgImAgIC/wHsAaMB
-YQEyASYBSwFQAT4BXQGPAZcBbwFGATIBIQEqAVcBdwE+AeYA8wBIAVcBEwHFAGwANgBcAIkAcABV
-AI8AEQFsAUwB8QDXABYBYQGFAZ8BrAFsAS8BYAGTAVoB5wCjAK4A1gD1AAgB/QDeAN8AEQEYAcwA
-kACRAIwASwAEAOz/2//F/8b/4/8BABEAFgA0AFwAaABpAHQAdABuAGsAOADo/7f/k/9O/zn/i/+v
-/57/nf9q/0b/WP8y//j++v4k/2j/hf9J/wb/Kv+Y/7b/fv+H/77/tP+H/3H/Zv+M/8n/pv9o/4D/
-pP+k/7T/z//V/9j/BQAuAB0AIABBADAA4/+1/8L/l/9O/1f/dP9V/0z/af9m/1f/S/9D/z//I/8H
-/wn/G/8u/xn/6f7e/sn+mf6//if/VP9K/xT/1f7a/uz+1P64/pD+Yf5v/pD+a/5O/nP+pf7m/gr/
-7/7J/qL+lf6r/p/+hf6h/tD+/f42/1v/jf/p/xMA8//j/8f/Yf8L//f+Bv8l/zX/M/9U/6r/AAAW
-AAkALgBbAFMAMgD8/8X/v/++/53/cv8z/wX/I/87/9n+af6W/v3+6/6t/qX+Yv4B/gH+Jf4n/i/+
-Vv6j/tD+tP6w/sf+nv46/gn+U/7V/gn/9v4J/zb/Uf9x/5f/qf/G/+T/2f/Y/wAAHQATAO3/xf/k
-/zUAUgBEAEAAXgBsACwA0v9l//n+xf6c/nT+gv69/vD+JP9g/3X/j//s/1UAigCsAAcBZQEwAbMA
-sQC9ACsAgf9J/0n/bv/W/zoASAAMAPn/OABVADAALABfAKgA/ABAATQB2wB3AFYAeQB/AFAAMQBJ
-AH8AogB6ADEAHgAzAF4AkQDBAOcA5gDBAJwAlgCKAGoAcgCYAKQAowDfADkBRQEdAfQA5QAFAUsB
-kQHAAQICTQJDAt8BjwFbAQwBFgGNAbwBrwHZARICJwIkAuUBhwFlAWYBdAFtARwBwwCXAHAADgB/
-/2D/s//X//P/bwDLAKsAogDpAD0BfwGgAaYBrgHGAdcBxwGIASIB5wDoAMkAqADWAEkBygESAh0C
-GwIbAiACJgIXAvwB8gHJAYMBYgFGARAB7gDSAKEAlACpAMcAywBfAM//vv/j/8H/g/8y/+j+EP+D
-/9P//P/w/7v/0P8bABwA+/8UAFcAgACJAJAAggBtAJEA2AD1APAA0wCNAFgATwA6AP//7v8lAFAA
-dwC3ANIAzADLAKkAYgA8ADwATQCBAJMATwAYAPz/yf+e/4L/a/9E/xX/DP8n/2b/zf8MAOL/Yf8w
-/63/DgC8/0X/Kf8E/73+m/5b/vn91v3k/Rz+if7S/vj+Rf+h/9b/7v/2/8n/gv9d/0n/P/8s/+L+
-dP4n/jD+Uv5Q/nj+3f5E/5j/1f/i/+f/AQDl/5//e/9n/03/D//F/r7+7P7//uv+Cv9f/4T/gf+j
-/8j/sv+P/4X/fv93/1r/Wf9+/0r/HP+O/+v/sf+V/6z/g/9s/4X/kf+Z/3b/R/9m/3L/+P57/oX+
-p/6C/lv+Y/5u/mn+mP7j/vD+7P4I/yb/S/9t/13/RP9X/0L/4/6j/pX+nv7j/jD/QP9Z/4v/uP/h
-//X/5/+//5//l/+c/3f/Rf8v/yz/V/97/4v/o/+L/2L/X/9S//f+tv71/hv/3v6f/n/+fP6M/or+
-n/7q/h3/Qf+g/9P/pf+n/9T/y/+v/8X/zf94/wT/3v4M/2b/oP+F/2L/c/+x/+3/AgD3/9D/yP/4
-/x0AGQAEAO//8/8OAEcAkACOAGcAeACUAK0AyQDyAFsBrAGdAY8BmAFWAagAFQAiAEcACADw/zEA
-NgAXAEYATgAkAD8AXQA1ACoAgwDeAOkAtwCKAIcAggBsAE8AWACWALAAzgAJAewAlgCDAJgAkgB/
-AIgAsADDALsA3wAPAfEAsQCsAM0A6AAOAUYBgAGjAZMBbgFeAWsBjgGxAbEBhgFwAY0BqwGuAawB
-rgGhAXABJwHrALsAqADXAP8AvABjAJUA+QDaAIoAdgCJAKIAjABhAGoAfQBxAH4AlgB9AEAAMgBe
-AJIA4AAzAVgBSwE3AVwBhgGEAXQBTgE9AWYBfAF4AZgBqgFTAdAArgDMALsAkAB6AGEAVQByAJQA
-xgDzANUAlAB9AG4ATwBSAFkAYAB8AJMArwDBALQAsgDFAM4AygCsAIIAdgBnADcAFQAKAAsAQACN
-AJkAZQAoAPb/1v/G/5X/aP+L/8b/xP+v/73/qP9V/yn/QP9K/yz/Iv9C/2L/gf+j/7T/wf/N/8n/
-t/+N/3f/o//I/7H/p//W//v/8v/6/ygAJwDZ/4D/Nf/u/s3+2/7Z/uX+Hf9J/1P/NP8R//b+t/6f
-/s/+3/7w/kb/U/8I/xb/P/8Y/9z+rv6z/tv+0v7M/vj+4f5a/gz+RP5c/hv++P0Q/hL+Fv6A/vP+
-5/64/rv+q/6s/uH+B/8k/zD/JP8s/0D/Vv9i/1H/Pv81/0v/i/+h/53/yv/l/8L/vv/O/6L/gP+k
-/77/i/9d/3v/nf+N/3D/bv92/1j/CP/L/rn+ef5N/qX+2f63/sH+zv7f/jX/bf9n/1P/JP8f/1D/
-Mf/S/rX+1v76/vj+yv7W/g3/Kf94/+z/DwD+/wIAGgBDAG0AUwAjADEAIQDY/+P/GgDo/5X/mv+1
-/6v/uP8FAE4ATABNAKYA9ADMAIMAdAB6AHcAawBcAFMAOwAiAD4AXgAvAAwAigARAfUAxADAAKYA
-owDHANMAvABrAAgAJwCZAHwA2/+m/w0AaACYAOQAHAH/AOcALQFbAS8BCAH6ANcAtgC0AL4AzwDt
-ACsBmwEAAgwC8AEHAigCAAK0AY0BkAGoAaoBZwH1AIsAQwAvAEQATQBHAGYAqgDbAPkABQH8AAsB
-LQFbAXABKwHuACUBSwEPAe4A4QCoALEABgEeAf4A/wAlAUQBMgECAfMAEgExAUoBgQGXAVIBBQEg
-AX8BoAFoASMBEQENAfcAzQCSAG0AegClANEA5gDUAM0A2ADdAPQA7QC1AJoApgDGAOcA0ACkALMA
-3QDHAIoAgACIAIAAhABnAB8A+/8LAPP/o//D/ykALgAhAB0A2P+6/+r/8v/Y/7n/jP97/4P/Zf83
-/0n/kP+3/6v/l/+U/5L/jf+i/7v/v//O/9D/sP+x/+X//v/1/wQAJQA+AF8AgACZAMkA7gDCAHYA
-ZwCFAFwA/P/h/8z/fP9D/2D/uP/a/8D/0f8AAA4A9//c/9L/tf9s/zX/Fv/K/nb+d/58/jn+Jv5Y
-/pv+CP9O/1//gP90/0f/R/8e/4n+J/5P/m7+bP57/lr+Bv4C/pT+LP9A/y7/Uv+I/7v/4v/m/9z/
-7/8cAFAAVwD5/4P/S/8S/7D+R/4V/jf+jf70/jf/Vf93/6X/wv+l/3f/cv9q/zD/8v68/nL+K/4I
-/v/99v3A/Zv91/0Y/g/++f34/Qj+UP6w/vL+KP9H/xv/2v6Y/jb+IP5Y/l7+Gf4O/pP+J/9j/3v/
-kP+O/4L/h/+J/3//X//2/nL+Uv6R/s/+0/6s/rP+IP+Y/9f/DwA8AEAARwA3AOL/Tv/B/oj+d/5L
-/kH+iv7d/h3/Z/+U/53/xv8mAGkAbwBzAFEA5P+T/5H/ZP/h/pH+v/4r/6X/AAAZAA4AAQD4/8n/
-aP8d/0X/2v9pALsA3wDAAGIADgD//xQAHQATAP//AAAuAGYAUwAKAOn/4//+/1cAlwCvANgA1ACU
-AEgAHwA8AIEA4wBKAY4BvAHlAegBrwFnATEBFwEyAUUBIAH/AP0A9ADcANoA0gCSAIAA+QCKAbIB
-vAHMAZkBZgFCAeUAjABfAC0AOQB2ADIAo/+e//P/AAD4/z4AmQDVAAsBLgEyAScBMgE5AVQBpgHO
-AdoBCgInAusBigFUAS0BJAFGAUcBPwF9AdUB8AHWAbEBkwFiASgBIwE3AW8B4wEUAggCIQIlAvQB
-uAF4AVEBWgF3AYQBLQGXAG4AbwAAAIz/cv+X/wUAdwCqAMwA1wDQAPgACgHTAMEA3QDyABoBTAEv
-AbcAewC0APAA/gD3APAA9QAIAe8AqwClAMgAwwDRACUBXgFIATsBMgHYAFkANgByAJgAcgBcAJ4A
-wwCAAFcAdQB6AFEAOgA/AB0A1f+w/77/zf+7/5D/rf9JALoAhQBTAHoAeQBNACkA4f+e/4//if+K
-/4H/X/9h/4T/mv/L/yYAZQBUAC0AKQACAM7/2P/S/3f/Mv9J/1//NP8E//7+HP9Z/6z/8f8QACwA
-SgBoAIsAagD6/6b/j/+Q/4z/c/8z/9L+lv5y/lv+g/7L/gn/FP/5/gH/I/80/0r/Mf/P/p7+y/7f
-/rf+gv5N/mr+yf7b/sX+wP6x/r3+Av8a/7r+Xf5n/pX+sv7Z/t/+eP4g/lP+nv6N/lD+SP5b/mP+
-gP6b/pf+iv5i/jP+Pf5e/nX+lf6T/o/+v/79/i//Kf/t/sX+2/4I/xf/GP8b/w//Gv9e/5H/bv8m
-//f+2f7X/ub+yP51/kb+lv77/uT+lv5m/k3+Yf6I/pf+sv69/p3+mf6a/n3+eP6L/pz+rv7O/gP/
-9P6M/pb+LP91/13/RP8N/+P+DP8t/zj/Zf+A/4T/ov/W/wgA+//L/8r/0P/l/wAA+P8PAF0AggBq
-AGUAlQCwAL0A8wAbAR0BGAEBAeYA9gAXAQwB5AC6AHoAPwBJAFMAEADe/+r/AQBJALgA4QDAAIYA
-ZwCVAL8ArwCMAIUArgDgAPUAzABXAO7/9P85AF4AiAD1AEkBcQG6AcIBhgGPAcAByAGlAXkBcQFz
-AVwBOgEUAfgAIQF6AZ8BpQHLAf0BEQLkAX4BBwG4AKMAcgA4ADYATgCNAM8A+gBBAVgBWwG9AfQB
-rwFyAWgBaAFmAVYBIwHkAJ8AeQCyANUAjQB8AMoA5ADkADEBbQFTATEBPQFNARoB0QC8AKsAngDF
-APQAEAFBAUsBDAHxAAsBCAHlANQA/gA6AVkBkgHaAewByQF4AQEBgwBDAFkAgACsAPYALQFCAV0B
-cAFbAS0BAgH+ABIB/wCbABIA//80ABcA7/8AAPn/4v8JAEAAaAB5AGcAlQAFASQB4AClAJAAXAAO
-AAkANQArACkAmADtALoAfgBJAPr/8f///8X/sf/n//H/2//d/9//8P8TAPT/fP8Z/x//e//M/8v/
-nf+Q/3r/QP9M/5b/rP+e/7v/+/8kAP//sP+I/2X/VP9o/1X/R/+X/8j/i/9A/8/+Xf5P/lj+bf60
-/ur+GP9s/23/7v6U/sP+Ff8i/xr/N/9P/0j/QP9E/zr/Jf8V//D+x/7a/ir/Tf8m/x7/KP/2/tb+
-F/9d/0T/B/8E/0v/kf+P/4D/iv98/2z/hP+o/83//v8TAAAAAwAGALL/Tv8p/xj/Bv8Q/wz/wP4+
-/uz9H/5Y/g3+vf3S/e79Kv6r/uT+uP50/jX+If4p/hX+9f3m/fD9Bv4S/ir+Y/6d/r3+x/7h/iD/
-Wf+F/4z/cv90/5X/uP+v/2f/Jf8U//n+wP6O/nX+if7S/h7/Uv9s/0z/Kv87/1H/Vf9C/yf/R/+J
-/4P/Pf8f/0P/cf+l/9T/sv9h/5v/JgAhAN//7v8YAC8ALAAiACIAAwC3/6X/3//H/3n/kv+4/6v/
-zP/5//P/2//F/8L/1//c/8n/qv+W/7X/t/9+/4n/zv8FADwAZACJAL4A4ADnAPIA/gAOASABMwFd
-AWoBIgHWANEA2wC6AIMAbQCMALUA1ADeAMwAugCwALgABAFBAQEB1AAsAVABzQBDAAcAAQAlACwA
-DgD9//D/+f8fADsATgB9ALYA4AAUAWEBhgFQASsBbQGgAVwBEQEnAV0BXgEtAQ0BHwEuAR8BEgEO
-AR4BUQGcAc0BxAGaAXABYwFZAUQBOQEfAQQB/wDuAPcAEgHbAJkAqgDPANEAwAC3APAALQH5AKsA
-3gAuASEBDwEQAfQA3QDpAPIA5ADVANEAxgCdAJIAxgDjANkA3wD+ACcBKAEaAVUBfwFUATUBMAEU
-AQoBGAHyAKQAeAB1AIEApQDIALMAlQChAKsAsACuAJQAhwB+AHkAcABBAPb/y//w/yUAKQAVAA4A
-GAAxACUAy/9t/1v/af95/7D/ov8a/wr/nf+j/yT/5/7F/sD+4P7S/sr+Cf98/wwAbgBRABMABgDa
-/2H/3v59/jr+Mv5k/rT+C/9Q/5j/2v/8/zYAggCYAGcAMQA7AE4ATQBBABgABgDw/5z/ef+U/5L/
-e/9n/17/dP93/0L/Lf9u/9f/RACMAH8APAAMANH/RP+z/h7+V/32/Dz9jv2F/Zr97/0P/kD+sP4G
-/0f/ff+p/+X/5P9u/xP/Df+7/hT+zv31/S/+f/4C/2r/a/9c/5H/4/8JAPX/1f/F/8L/z//C/1b/
-2v6y/tj+J/9N/0P/ZP+1//D/GQA6ABMAx/+P/1H/AP/D/pL+aP5w/pH+sv7//l3/n//I//n/WACD
-ABwA1v/R/2L/uf5T/iX+Lv6B/uf+Kf80/y7/Wv+U/37/Lv8t/43/9f9XALUAswAzANT/5//j/4X/
-LP/x/t7+Iv9o/27/gP+g/7H/x//i/wAACQD8/+f/v/+k/4z/g/+g/7L/0P8EABEAFwBlAL0AwgCI
-AHQAnAC8AN8A8gDKALQAtgCAACwA4v+8/+r/IAAjAGoA+gBQAWkBcQFGAeUAhQBKAEoAOgDX/53/
-vP+j/1P/O/9H/yj/+/5I/93/IwA1AFYAeQCKAH8AXQBAACoALgBiAIQAbQBUAFQAWwBvAJ8A5QA9
-AaIB6gEUAj4CWQJNAkMCNgL5AdEBAQI8AiwC+gHcAcwB3QEiAk0CMgILAqsB/QCVAI4AYwAFAPL/
-KwBZAIsA1AAIASIBIgERARcBAgHOAPMAUwF4AY4B0gHUAU0B7AApAVQBHgEVAUUBRQEgAQsB5ADJ
-APwAWgGfAdMBJwJXAjIC1AFRAdIAcQBBADgAJQASAAsA3f+Z/3b/fP+w/9H/w//Q/w8AUQBoAFoA
-TgBJAD0AZgDAAIgA9f/7/yoA///R/7H/mP+w/9j/BwA6AC8ABAAQAEUAYABnAI0AuwCoAIUAoQC5
-AHQAAQDL/83/zf+k/3H/kP/b/wAAJgBdAIgArQDsABgByAA+ACQASQArANf/jv9u/z7/Av/x/uj+
-2f7U/uv+MP9V/zr/Kv8t/y7/WP+S/1b/4v4W/6P/vP+A/1X/Vv9q/5L/zP/a/7H/mf+n/7P/p/+D
-/3L/jv+Z/23/Qv8Y/63+dv7S/hT//f73/gf/Df8Q/w//8P7X/un+A/8L/97+sP63/sD+yv7Y/ur+
-Hv9V/2T/X/9a/2X/h/+O/3T/cP97/4j/oP+c/1D/3P7G/gP/Cv/t/s7+hf5Y/pv+yf6T/lv+Lf4H
-/gj+EP4f/kD+Wv6J/s7+1v6N/mr+kf6I/kT+Q/59/kX+8P1T/uP+CP/1/tT+z/4N/17/h/+G/3H/
-Y/9z/4v/ef9d/2n/Z/9F/1f/n//L/87/7f8fACAABgDj/8L/0//t/9z/yv/I/7D/f/91/7r/8//0
-/+L/zf/F/9H/AAD9/67/kP+Q/3n/cv9s/0r/Sf90/4n/jf+I/4T/i/+b/8n/6v/B/4j/kf+z/7j/
-vP/d/wkAJAAzAD8ATwBwAKQA0QDeAOoADQE1AVkBbgFzAWMBQwFJAY8BzwHdAeAB0AF4AScBIAEX
-Ad0AlwCLAMwA9ADiABEBaQGFAY0BZQHgALgAGQEgAccAkgBlAEYAXQCnAAgBGAHMAMsAMQFKAecA
-oADIAAQB/QDVANUA6gD3ABsBUwGKAa4BtQGnAbYB7gESAjcCTgL/AbQBpAF1AUgBMAETASkBaAGK
-AZsBpAGrAacBegExAesAsACRAIAAXQBpALkA1QCdAGwAdAChAMsA9QAeAQ0BqwBdAI8AvwB3ADcA
-KgA4AHMAtgDQANkA4wDPAN4AJAEjAdkAtwDFAMcAvQCuAH4AKwAHACIAOQBPAFYATwB0AK0AtQCT
-AG0AVgBNAFMAcgCJAJEAmwCUAIIAbQBrAJ8A3QDGAHUAaAB0AC4A3v/H/+H/AgAHAAYABwDs/6r/
-jv+p/8//4//F/8D/8P/T/43/dP9L/zD/Pv8n/wn/Jv9U/2v/Wf8T/9n+y/7L/tH+2/4I/yn/AP/+
-/lz/jv9g/03/ZP9R/zD/Lv8w/xb/+v4S/zz/N/8o/0P/Zf92/47/qf+u/5f/iv+f/5v/Yv81/0r/
-Y/9N/zP/O/9n/5D/lv90/xT/s/6y/tr+1P6+/pD+If7j/TD+Uf75/c797P0m/qv+RP9m/yb/7P7K
-/tL+8/6u/hH+zv3d/eT96f3k/cj9q/29/Q3+bf7C/vf+DP8n/0P/S/9M/1D/KP/P/rr+CP86/xf/
-6v71/iT/UP+D/7v/yf+4/8D/0f+8/6v/sv+e/3v/ev+G/2f/LP8I/xn/T/9U/xn/Nf/e/zgAyP9Q
-/0r/Uf8v/wj/+f4L/w//7f4C/zz/MP8e/zv/O/82/5L/AADd/4P/j//f/w8AEAAXABAA6f/1/ycA
-NQA+AE8AWQB2AKAAyQABAToBXgFyAX4BigGZAaYBpgGaAXgBJwHhAMgApQBmAEAASgBlAHYAeAB/
-AHgAbgCGAJYAegA6ACgAVgA4AOT/xP9//zX/TP96/7z/KAB7AJ4AlgCXANMAEwE2AU8BbQGBAXIB
-VAE8ATMBGwHUAJ0AsQDfAM0AlwCmAPQAGwEAAf4ANwFjAVwBUgFnAU0BAAH4ADABRAEeAQsBBgHY
-AM4ABQEpAS8BRAFlAYEBmAGpAb4BzAHXAcoBhQF9AcQBuAFjATkBEgHRAKIAhQCAAI4AjgB4AFwA
-OQATAAgAGAA+AHUAnACwALUApwC2APAALgF0AbMBsQGGAXABbQFqAXYBmgG4AccBxgGmAX4BagFZ
-ASgB8wDkAPcAAAH7AAMB6gCkAIIApQDKAKQASAAWACcATQBYADkACwDp/+f/BADq/2H/A/9U/8P/
-7/8IAOj/tv/p/0IAcABTANv/i/+n/7T/gf95/7b/yP+p/6n/oP9U/xX/OP+D/7n/4f/6/wQADQAW
-ADIAYgCQAKMAjwBqACUA0P+b/3j/Xf9X/27/uP8IADUAhgDhAM4AeQA6AAIAyf+K/1D/Uf9R/wj/
-1/7w/vT+qP48/hz+kf4A/8n+m/7Q/qX+HP7d/eT97P36/fb9Dv5s/qL+sP7w/gz/rP5B/jb+cP6m
-/rn+xf7R/sf+yv70/hn/Mf8s/w//Lf+A/5j/YP8G/53+V/59/s/+Af9m/+n/FAAaABYAl//D/kz+
-Jf7d/b79Bf5Y/of+wP7s/tX+1P4X/zb/MP9l/7H/k/81/xv/2/4M/nb9h/3B/fL9Tv63/tT+sP53
-/lP+Nf7q/cf9Nv73/lb/RP81/xn/0v6i/of+Yf5K/lD+hv7//nD/e/9K/zr/IP/S/sj+EP8o/0L/
-kf+n/2r/Gf/Q/sP+CP9q/7z/DQB0ALMApABzAEcAJQAXAC0AQABKAFwAVABDAE4AbABKAPb/IACb
-ANAAAAFAATIB6QC9AG8A5P+R/5j/4v86AEQAGQAFAAAA3f+y/7L/uP/R/yEAfgC2ALgAqgCkAJIA
-nwDRANcA5wAiAT4BOwEQAaYAVQBPAGYAkQDmAFsBrQHLAd0ByQGgAW8BMwE6AWUBdQGYAcAByQHC
-AbgBoAFnASsBPQGUAccBtQFYAbQAPAAnABUA1f+M/3X/6/+0AAMB/wAlATMBKAE4AUMBHgENAVwB
-nAGHAXMBfgFYARMBMAFlATwBGAFFAYoBmwGWAb8B5wHiAcQBwgHkAdwBpAGQAZ4BjAFwAYUBzQEE
-AvIBsQFxAUkBDgGxAIYAZwAdABMAewDrAPQA4gAQARkB+wBwATACHQKTAWoBXAE9ATABCQG5AGsA
-SwBqAKwA6wAcAVcBngHHAdABvQFoAfMAxADgAOEAmwBHAAAA0P/N/9f/sv+S/7z/+/8kAFkAlQC4
-AK8AgwBzAHwAcQBUACoA+v/P/7z/sP+L/3b/gP90/17/e//G/9v/m/9i/27/kf+E/5X/pP8t/9v+
-VP+o/0X/7P7b/rv+pf60/qz+kv6X/tT+Q/9v/yP/9v4P///+5v4G/z7/Tf8l/xf/W/+H/1r/Jf8T
-/w7/Fv8m/yT/E/8C/97+xf7Y/u/+6/7Z/sj+rv6u/tn+8/7W/rr+wP6r/oj+tv7z/rT+VP5n/s/+
-Fv8V/xb/Dv/U/qL+rv6w/ob+qv6+/mP+O/5X/kH+N/5i/nT+hP6F/nP+if6D/jb+/P34/Qv+Ef77
-/Qr+OP4U/tL9/f1k/pn+mf6g/sf+//49/3D/eP9M/zz/df+f/4T/VP9B/yn/Bf/0/vv+Jv9c/43/
-wP/Z/9//+/8qAEkAIwDj/+//EwDo/6P/j/+L/5L/yf/f/3z/E/8c/07/UP9I/27/jf+U/6//4P8B
-ANb/mf+W/7X/xf+e/3r/jf+S/3H/WP8m/9X+0P5C/7X/3v8qAJwAxADAALAAjQCHALoA6gDbAKEA
-XgAtAAwAxP95/43/5P8+AJcA+wBJAT4BDQEFAeIAggA2APz/u/+z/8j/1/8QAEcAWABuAHEAcwDg
-AEQBEQGwAGIAKgBHAHkAUQAVAPv/AABDAHgAbQByAMEAHgFHAUIBLwEMAecA+AAoASQBAgEPARUB
-6ADNAOoANAGcAd0BuwF6AXwBlgGVAZABigGVAccBDQI+AkMCMgITAuQBmwFFAT4BfAGaAZ0BqgGp
-AX4BTQFSAXYBjgGIAUEB9wDFAHsAlQASAQsBuADPAPgAAgEZASQBIgEnAQgBCgFsAZcBWgFPAWgB
-PwEuAT0B5QBkAFYAwwAoATkBHgEQAS0BagGAAV4BRgE6AUEBcgGNAWQBKAEDAdIAiQB1AIMAjwDQ
-AB8BPgEwAQMB8wAWATYBOgE5AUQBUwFCAeUAggCBAJ0ApACSAEIAIACHALoAXQApAEIAQQAxAC8A
-IQAoAEQALAALAOv/nP99/43/hv+A/5L/rv+Z/2z/fP+s/6P/a/9T/0v/YP+S/6b/wP/v//f/4f/i
-/97/uf+i/7L/z//l/wAADQAIABYAIAD0/5L/VP95/7z/0v+n/2L/ZP+m/7D/Vf/3/vH+G/8R/+L+
-xP5//ir+M/5I/hL+6v3n/ez9Fv6G/in/jv9E/7T+pv7z/uX+W/7Q/Zz9pf29/b39hv1X/Yv9DP6V
-/uj++f4a/2P/if9q/zb/Nv9T/zP/+/4R/y3/4v5s/if+Nv5r/n7+mv7Q/tb+5/5d/9P/xv+P/23/
-NP8D/7n+Yv4//gv+2P0F/ir+5v3M/V/+2P6s/rb+CP8a/zn/U/8y/xn/DP8K/0L/bf85/wT/LP9w
-/4X/pf/f/7H/Pv84/5f/sv96/33/g/88/wr/7P7D/rT+qv63/gj/Rv9e/4b/l/+T/5P/pf/A/7f/
-p/+0/8P/t/+F/1//a/91/1n/PP9H/2L/aP91/6r/vP+L/2b/d/+z/7z/Yv8v/3L/r/96/wX/sP6u
-/uP+5f6z/qz+6v47/0v/IP8r/4L/z//n/9///v9LAFwAVgCcAMsAowCZAMgA7gD+ABQBFAHTAJwA
-qQDqAC0BOAElASUBKwEWAe0AzQDPANsA7gADAeYArQCXAJ0AqQC2ANUADQErAQkB5AAFAT8BUwFO
-AUABcQH1ATIC1wFXARMBDgE1AVkBZAF1AXYBdwGrAaYBOgElAXEBeAFeAZEB6AHfAY4BjAHgAS8C
-OgIMAuoB6wHQAYcBYAFkAW4BmAHqAQMC1QHSARICJgLwAdcB2wHIAboBuAGgAWIBKgEdASwBHAHh
-ALwAwQC8AJsAmwDDAL8AhwBSAB8A3P+s/8r//f8BAAAA2P+P/5r/8/88AGoAkgDyAJ0B6AG7AbAB
-hwHGAPD/kP9r/zj/H/9Z/5//q/+v/+v/TgCeAN8AHgFYAZEBigE+ASIBLgH2AJ8AbABHABsA7P+w
-/2j/TP9V/1P/Yv+l//7/OQBdAKgAHgFoAUYB+QC9AFoAxP8o/5T+9v2B/Yv9w/3I/fX9TP5h/pX+
-O//c/zQARQAjAAgAzP8j/4H+W/4y/sL9d/2u/WH+7/4I/yn/dv+5/xIAfgCqAI8AXgBFAEkAKQDn
-/5f/Mv/0/v7+Ev/1/sr+2/4e/2X/p/+u/1j/7/6M/jj++P29/aL9rf3p/V3+lv6P/t3+KP/i/qz+
-7/7i/nL+dP62/m3+uv09/Qf9FP1v/bj93P0E/jX+eP6P/jn+5f3z/Sb+Uf6P/vD+Nf8c//P+GP83
-//z+nv5S/lD+lf6z/pP+h/6z/uf+C/8c/wf/6/7//iD/Gv/y/un+F/8q/xX/J/8z/yv/VP+O/6n/
-rP+i/47/a/9R/2j/qf/L/6n/lP+c/2z/M/9r/8//4f/R/wAANgAtACcAQQA/APH/k/+J/3D/+v7H
-/hv/X/9M/yj/Jv8t/y//Sf+R/97/6//w/zgAhQCQAHwAYQA8AEMAewCMAFIA5v+h/9P/JgA4AEoA
-ogAfAXgBkwGrAcEByAHYAdkBwQGvAZwBgwFbARgB0wCzAMoABwEsATIBUwFGAb8AUgBsAGwA2/9g
-/03/RP+a/28AFgEnAfgAMQGgAZABNAEoAZYBBAIjAiYCBQKgARQBywDrAAIB/wArAWIBogH9AS4C
-QAJkAmICYQKsAucC+wIfAw8DnAIRAsEBoAGCAWUBZAFyAWMBOwEAAeUADQEWAeQA4AAbAUYBVgF7
-AZgBYAEUAU0B9AE7As4BWwE2ASwBZwF7ARUB9QARAekA0gDoANoAvgDlADYBagGFAYsBZgFFAWwB
-rwGqAXMBVgFCARkBzgB7AGkAmAC5ANIADQEiAe4A4QA2AW4BPgEKAQcBBAH5APQA9gDMAGwALAAj
-AC0AIgDs/97/BwD0/7z/yv/v/+T/3v/7/93/kP+3/x0ADgC+/3D/Ov9Z/4D/Wf81/1b/cP+F/9n/
-FwDY/47/xP/7/9//yf/C/5v/Wv9j/8j/0v9w/1f/fP97/2j/Tf8q/y//S/9I/yH/6/7a/v7+If81
-/0z/Vv9T/2D/ff+M/3T/Xf9r/4D/j/+F/2b/dP+P/1f/+/7k/gD/E/8W/wn/6P7l/hv/Kf/z/rr+
-m/6b/pz+sP7r/gv/7/76/kf/RP/6/vf+G/8H/9L+xf7J/oL+Nv5j/pn+lP7H/tr+gP5q/sb+6P6p
-/p/+7f4W//r+7/4O/xj/8f7w/i3/NP8O/xT/Lv8x/zv/T/9B/0H/hf+a/2P/aP+S/4X/bf9q/1T/
-Jf8Y/xr/4f6h/s3+Fv/+/tv+6/7x/vL+/P7+/hP/Df+v/oL+qP6D/jX+Jv4+/mH+ev6b/sP+wf7n
-/mr/p/9u/0L/Sf9K/yH//P71/vv+GP89/1P/Uv9H/27/vf/b/8//z//2/0oAgwB2AEsAEQDT/6n/
-aP8I/+3+Pv/J/zgAWgBUAFQAWwBjAG0AJQCf/5X/AAA8AD0AKQDs/6v/pf+0/83/+f8WAFQAyQAE
-AfkA7QDEAIMAaQB+AHwALgADAFkAwwDgAN8A4ADmABwBYwFfAUkBdgGCAS8B5gC0AGsAKwANADAA
-jQAEAX0BzwHTAZYBZQFKAQ4B/QBFAXgBhQG8AfABzQFfAf0A/ABGAZQB5gEfAgACyQH4AUECDwKi
-AT8B/AD3AP0A8QDqAMsAfQBUAHkAmACsAOoAIwFOAY0BmQFEAc0AowDOAN8AtwCbAKIAxwD5AP8A
-BAFdAa0BogGTAaABogGUAYABcgFfASsB+AD1AB4BegHKAaIBUgFcAYYBhgFuAWcBeAFuAUEB+gCg
-AG0AXwBVAE4AOQAOACMAcwB5AFQAJgDU/8z/AwDS/5b/3/8tAEAASQBHAC8AFgAAAPn/GgBKAEYA
-HwApAE8AUQBDAEYATwBJAEIAXACIAJgAXwARAAYACADW/67/nf9m/yb/LP9R/1H/W/95/4r/k/+T
-/3b/XP+E/8v/8/8HACMALAAHAM7/p/+T/2n/RP9t/4D/EP/P/jn/af8T//T+Cv8Y/0b/aP9W/zD/
-8f7L/uv+6f6S/jD+Cf4p/kH+OP5V/lX+FP5K/u3+Gf/d/uH+HP8e//j+E/9k/3v/Of/8/iT/WP82
-/wj/4v7A/t/+/P73/hT/IP8f/0T/TP8d/9b+o/6n/rX+uP7N/uD+zf6v/pv+cf4M/qr91P1B/if+
-2f3O/cb91/3+/fH91f3T/c391P0c/kP+Hf4q/nT+n/7N/jj/ef9L/xH/Hf85/yj/B//g/qr+l/60
-/qv+oP7h/ij/S/93/8f/FABJAHMAZwAcAPv/DQAAAOP/6f/e/6X/av9T/27/pv+v/4z/mf/h/x8A
-MwA3ADkAMwAmABAA3/++/+z/DwDU/2z/BP/P/tT+2P7p/gb/Dv8r/2n/iv9l/yr/QP+G/77///8V
-ANH/ff+Z//j/GQAYAB0AKwBcAKcA1wDZANcA5wAZAVEBXwFMAUUBMAHhAMYA9gD7ANEAmQCBAKoA
-uwCAAFIAmAD3AAMB8QDrAPoAFwHrAIwAewCwAM0A0gAFAT0BIAEBAfcAsAB7AJMAqAC5ANsA1QDb
-ABkBJwEAAQ0BVgGOAYYBWAE8ASIB8ADZAOgA/wAVASkBTQGPAcoB2gHqAQgCEQIaAh8CLQJEAhIC
-xQGkAYsBkAHeATECOgIqAi4CGALwAfgBKwIxAuYBmQF9AVgBCgHLAKwAqADjAC0BNgH/ALAApAAC
-AU0BTQFBAQ8B3QAZAVEBCgF0AO7/7v9KAGkAOwA6AJcA2gC8AH8AXQBXAFkAYwBfAEcAUwB9AKAA
-yAD3AEQBiAGnAdYBBALqAW0B5wC7AKcAbwBAAEYAjwDtAEQBawFDATIBRwEsAQEB6gDQAKIAfgB/
-AGAABgC3/5f/hv9O/0P/tv/2/5j/HP/J/nj+P/5V/of+tf7J/sf+FP9R/+/+pf7k/hn/C/8N/zn/
-Zv9V/zj/UP81/+7+9/5g/+r/DgDK/+j/hwDVAI8AMADs/9n/MACCAEMA+P8qAEwA9/+H/wv/S/6f
-/Xn9wP0Q/jf+VP6C/sn+Af/2/sX+p/67/vz+PP9d/y3/lv4v/kL+If6z/ZL9iP2K/RP+mP62/tr+
-4f60/pb+a/4u/kT+r/4M/3H/0v/G/2T/FP8Q/z7/RP8e//b+4P7y/tr+T/7K/bz9w/3H/RP+Xf5t
-/pT+uP6c/oj+ev5l/rH+Z/8AAEEAZQBVAOn/aP8Q/+v+9v4u/2//cf9p/53/nf87//j++f72/iT/
-0v98AKEAXwAQAMj/fv85/9/+jv53/n/+qv7A/nL+Mv5A/kn+Uf59/nr+Kf79/UP+1f4t/yr/MP88
-/2X/y/8CAPX/5v/T/8j/w/+A/xv/EP9r/5j/f/+4/z0AigCKAJsAtgCKAFEAaQC/APcABAH6ANEA
-sgCUAEQA2v+//wUANwA+AHEAhQAEAHf/YP9R/xv/Ev8d/0r/yP8aAAAA5//Q/6b/xf/y////SgDR
-ACsBRgFKASYB2wCuAMcA8wAWARABwgCCAHkAcwCFANMAMQFRAU4BcQFzAS0B/QDkALUApwDgABwB
-EAHTAJ0AgABdACQAFQBYAKYAnQCJAMkA7ADLAMMA2QAMAWEBhgGiAQQCGgLQAcgBwAFPAfYAzgCG
-AIAAmQBvAJAAIgGhAfQBSgKbAt0CFgM2AxsDtgI9AggC2gF1AUQBTQE0ARABGAE5AX4B1QENAjoC
-cQKcApoCVALbAWoBLAH/AM4AvgDLAPwAPwE6AeoAuADdABgBSAGLAcIBrQFiAUoBXQFsAZMBlwEz
-Ae8AFQEmAfoAvABRAAAAMABvAEsANgBnAKgAwwCTAEAABgD1/+n/rv+o//b/zP9F/zP/ef+j/6D/
-mv/J/xsATABAACAADgAWADcAXwBYAEcAlQDNAIgAQgA9AFcAVgA2ADYAKgABAPv/AwD5//T/8v/n
-/+3/4/+f/3D/hv+a/4v/Xf8z/1//l/9g/y7/Kf/y/sT+yP64/pv+jv6D/on+mf6e/q3+s/6N/pD+
-0v7o/t3+5f7t/uH+4/4C/wP/4P7J/rv+x/4N/03/Rf87/2X/lf+W/2z/Nf/x/qP+ef53/mP+af6h
-/sT+2f7j/un+Jv+C/7f/rv+H/4D/df8v/9f+mP53/lH+FP7X/Yf9RP1U/Wb9Mv0o/XP91/1H/qf+
-0/7W/qn+Rf4S/jn+O/4B/vf9NP5O/gD+of1C/dL8zfxG/bP9+P1r/ur+Fv8j/x//6/74/k3/ef+C
-/4r/dv9f/2D/Sv8M//j+Vf/U/wYAJQBoAI4AdgA0AND/Z/8V/8P+ZP4w/ln+nf7J/iH/ov/8/wQA
-9v8pAGQAUwAPAJr/I////vb+1/6R/ir+Kf6n/gH//f4l/7P/NwBqAIQAxgD8ANoApQCrAKQAdAA3
-APL/7P8zAHQApwD2ADcBSgEyAdcAgQCAALEAvQCeALYABAEoAQcB1wCzAG4AGgD+/yYAegDcADgB
-eQF+AUEBIAFFAUwBLAEaAf8A3QCdAFcAbgCnAKkAowCyAOAAHwFPAX0BmQF4AWgBwgH8AaoBagGJ
-AWkB9gDIAMgAlQBkAIAA2QAlAT4BLgEfAUUBjQGdAXYBbgGXAc0B9QHxAasBWgFFAUYBOAE+AVcB
-jQH9AUgCRgI7AvwBgwFiAbYBEwJEAk0COwLuAYUBXgF0AZQBoAGlAakBwgEjAmUCGwKZAUUBEQHt
-AN8A1ADpAPcA2QDQAMUAgABXAIsAuACeAJUAowCFAGUAdgCcAKwAoQCQAFoAEwASADQARwBMAFwA
-nACzAGsAOQBKAFYAXQCCAKQArQC3ALwAsACiAJUAewBvAJkA5AAGAdkAswDGALAAfQBxAGoAdACD
-AGwANADX/1//JP88/0b/Q/9O/03/ff/T//L/9//6/9X/1P8cACEAx/+Q/3r/K//g/gL/Lf8G//z+
-X//Q/wAABQD2/+P/5P/4/wYA/f+9/3//bP9U/x//1P6b/nj+Y/5y/pj+pv6e/qj+uv7p/hb/Bf/f
-/t/+Ev8k//j+7P4D/wD//f4o/yT/wf6j/v3+IP/t/t/+A/8V/+7+nv6B/qX+pv53/oL+pf5h/gD+
-7/3w/dH9v/3b/Qn+Af76/Tr+h/6z/tH+8v7v/rD+dv59/qX+s/7D/gb/UP9s/6X/DQBFAEwARwA4
-ACcAKgBOAD0A1v9+/1b/R/8t/9P+gf6R/uX+MP9M/1L/Tf9J/2r/o/+1/4D/UP9X/0j/Iv8M/9L+
-ff5s/qP+4f7v/sT+z/4e/xn/z/7B/vP+LP90/8T/y/+O/3r/t//+/wUA5//e//L/AgD6/9f/tP+j
-/5z/vf8IAAwA3P/j/wgALQBDAEIARwBDABkAEgA+ACwA7v/M/8P/yv/9/zsANgAGAP//EADn/7X/
-vP+7/8f/HgBLACkALQAnABEALwBRAGcAYwAlAAUASgBqAP3/tf8KAGMAYABSAGEASwAJABYAawCN
-AKYAzQDNANUAHAFUATkB6gClAL0ALQGBAYIBRAECAUQByQHXAZ4BfwGJAa8B6QEMAroBGgHVAC8B
-sQHXAbQBgQFaAUcBMgE0AUoBLAH+ACIBJAGWAEgAeQBrACMALwCPAAIBfgHBAbABiQGQAccBowHo
-AFkAhADPAL8ArgCPAC0A1v/m/0UAjgDLABoBXAGIAZABggF5AZUB6AEdAgUC4gGZAQkBewAhAOj/
-uP+7/xEAgwDvAE8BlwHYAfMBswFfASsBEwE9AUgBwgAvAAAACQD9/5f/G/8h/7z/OAA/ADQAHwD8
-////HgAuACAA9f/d/+r/q/86/0P/lf9t/wP/Df+G//D/CAAFABkACgDi/+r/+P/0/+3/yv+l/8H/
-DgBLAFoAQwA6AGEAkwB8AFUAdAC3ANwAqwBDANT/Xv/q/pL+hv62/uH+FP9a/1r/G/8Q/0H/if+y
-/7X/0P+t/yT/5v7q/oz+Cf7z/R3+Vv6//jT/b/9o/0v/LP8M/+r+vv7L/j7/uP8HAEEANwDg/43/
-f/+I/1X/DP/n/vf+O/9J/wD/v/5z/hL++P0Y/h/+H/4o/i7+R/5//s7+Jv9i/5D/yv/+/zEATQAW
-ALj/aP8p/xL/Ef/1/rr+lv60/uf+Dv8y/x3/1/7m/nr/9//p/6//lP98/37/ff8Q/5v+fv5y/o7+
-pv6C/or+tf6i/mr+MP77/ff9Rv7B/gv/Gv8u/0b/YP+P/6j/kv+a/8//6f/r/8//jf+C/8r////e
-/8T//f9qANkA8gCyAH8AawBTAEMAQABQAHMAmwCyAKcAcwAUAMr/uf/L/+z/8f/o/9L/gv8///T+
-Ov6u/cn9Ff55/iT/zf8ZABMA7f/K/87/3//Q/8D/6v9QAJgAlABZAOj/of/a/yIAFgDQ/6f/zv/4
-//b//P8yAGAATgA7AF4AlACsAJoAZQAYAPP/AQAQABAAJgBnAGMAFgAdAG0ApgDRANgAxwAMAXoB
-jwFVAQ8B/AAhAR4B7AD1AAYB3QDFALQArwDYANYAswCqAIMAcQC7AOEAtADBABcBSgFSAVgBWAFE
-AS0BLgE7ATEBHAEjATEBGQHjAK8AngC7APAAMgGOAeQBBAIaAiMC9AG7AZMBZAFNAWgBngGwAZAB
-aAFHAUIBUgFMAUwBegGjAZgBqQHZAboBfAFfAR4B0gDzAE4BXQE/ARIB3gDxADkBVAFKASgB+AAZ
-AWgBawEuAQ4BIAEXASMBYgFGAcAAdwC0AA0BDQHQAM8A/ADzAMEAqwC1ALsAywDXALkAgQBgAGwA
-cgBDAA4ADAA2AD8APgBrAHIAPAA5AIoAtAB5ADwASQBsACUAv//M/+f/vP+0/8b/kf9n/53/0P/B
-/5H/Y/9l/5D/s/+1/5b/gf+1//T/x/9b/zz/bP+O/4T/lP+1/3T/6v7l/l//gP9e/0r/Rv91/5r/
-fv9u/5P/rv+o/5H/Y/9E/0T/I//v/vX+Gf8V/xP/QP9g/07/S/+e/wMACwD0/wEAFgAIAMn/cP8j
-//H+3f7U/sb+s/6E/mD+lf7J/r7+zf7b/qD+Xv5D/jz+K/4F/gH+NP5X/k7+av6c/oT+Q/4k/iD+
-Df7p/fz9U/5//oP+oP61/qb+hP5u/oL+rP7V/v7+C//4/ur+Af8r/0H/TP9c/1z/O/8V//P+rf4z
-/rv9jP2l/cX93/0l/pL+6f4X/yn/Mf8n/x//Df+3/o3+zf7g/r3+mf5X/kf+ZP5S/nP+4v4H/wr/
-Pv8i/7b+g/6A/mj+Uv5o/p7+zP4A/2H/q/+y/7//2//b//P/HwAjACIAIgACAM//nf97/3X/ev96
-/6L/DACUAPQAIgEuARIB4gCaAGcAgQCkAKsAzQAIARsB4ACDAFwAZgBvAHAAkwCxAHoAZgChAJMA
-OwD2/+b/+/8VADkARgAnAAIA4v/k/wsALgBFAGAAXwBVAIoAsgCIAG4AlgDHAOIA3gDEALQAzgAC
-AfIAxgD1AEIBWAFKAUIBWgFwAWYBWwFaATIBHgF1AccB0gHJAcMB0QHJAZMBUwE5AWYBwQHwAbkB
-dwF2AYUBgwFyAWIBXwFrAbABAgL7AcQBtAHGAdUByQGsAZUBdwFWAU0BXQFPAfMAuwDgAPsAAQEr
-AVQBWwFzAbUB5wHhAcgBmAFJAQMB0gC2AMcA3gDSANUA4wDWAM0AzwCuAIcAqgD7AC4BSQFdAUQB
-DQH3APwADwFOAXwBdgGrAQcCCQK/AWEBHQELAf8A6gDcAKgANwANAFUATADb/7L/rv+H/7L/FAAh
-AAoADAADABoAPAD9/5r/ff+R/5z/oP+y/7n/s//g/wcA2v/H//3/MwBLACwAEwBGAIwAkgBfAFgA
-kACGAEMAQgA9APj/2/8fAGsAUgATACIATABAAA8AAQAMAOX/xf/f/9n/wf/O/9H/xf+T/yX/E/9r
-/1n/3v6e/qP+x/7j/rz+kP5+/k7+X/7U/gD/v/6a/s3+/v71/gL/I//O/j7+K/5m/ob+q/7U/sP+
-e/5R/mz+j/6j/sT++v5K/5P/r/+u/6D/hv91/33/ev88/xn/Ov8O/4b+Pv5m/p/+h/4v/gL+Gv49
-/lj+Z/5g/mX+kv6r/p/+gf43/i7+oP7H/nT+P/4q/hf+P/6O/rH+f/47/k7+iv54/ij+/v0b/lL+
-ef6//gv/Bf/3/kT/hf9j/0j/Yv9A//L+Bv9X/3L/Vv9A/2L/kf+J/2L/Ov8W/xD/Df8L/w//6v7Q
-/u3+A//i/q7+hP5t/oX+pf6T/n3+qP79/j3/Sf9B/zz/Hf8f/2T/Z/8p/yX/Lf8A/+X+Av8l/xz/
-7v4A/1b/af9A/1r/pP+g/2f/Uf9b/3P/kv+t/83/+f8UAA0A//8SADoATABAAC4AQwCUAPIAEAHq
-ANoAEQFJATcBKwFtAZsBmAHAAfkBxgFgAWgBpwHjAScCOAIxAh0CyQF9AWoBPQH0ANAAvwCBACkA
-BgADAOL/v/+s/6f/6v+JAD0BhwFgAUMBWQFBAdIAgQCPAKUArQDLANYArwCNAKoA5wAlAWcBpAHO
-AfUBCAL6AfwBCwIHAgYCFwIAApsBIQHLAG8AGQAPADEAgQARAY4BygHcAQ0CTgJCAvABlQFmAWIB
-RQHnAH4AXgB/AJcAnwCcAIAArQAeAUEBIQENAdgArQDsAFoBtgHKAZsBkgGaAWkBDwHMAKAATQAV
-AFwA7QBVAVwBRwFrAaMBuAHHAdYB3AHVAZ8BjAG7AcsBwwG2AZkBmwGlAZcBswH1AQkC3AGBARIB
-kQD6/4f/Tv8u/y7/MP8u/17/lf+a/5v/1/9OAK0A0AAPATUB3gCVAKEAbQDi/4P/b/+F/+H/SABW
-AD0AOwA/ADAA2v9m/2T/4P9zANoAEAH1AEgAhv9L/0f/Hf/q/qj+dP62/jL/U/8X/9z+sv6o/tb+
-D/9c/6P/cf/+/tT+2P7p/hb/RP+J/+z/PwBhADoA9v/D/7P/sv+B/y3/+P7x/vf+8f72/vr+2f6z
-/tf+Of+C/6X/rP+R/5T/uv+j/0z/Av/g/t/+zP5h/gH+IP5h/mX+Tf46/i3+Ev4B/lb+4P4H/8z+
-m/6i/tT+8v7d/rz+pv6Q/m/+Nv4M/hX+MP5W/nf+lP7i/lD/lv+e/5v/d/8J/8f+8P4//3X/kv/U
-/xMAJQAnANv/Xf81/0r/Sf9G/17/Pv/B/lb+CP6R/SP9CP0L/T792P1s/qb+i/5D/ln+4/4i/+z+
-1v4Z/1f/Zf9e/yL/yf7M/hz/Mv8i/zj/Q/8q/z3/bv+J/7//8v/7/yMAWABDAAoA7P/b/7L/iP+T
-/7n/8f81ADMA+f/K/5z/U/8V/w//Gv8U/wj/F/9P/5X/zf/l/9T/xf8ZAI0AeQAnABgAHwD//8v/
-j/9U/y3/Hf9U/73/7P/1/1UA1QD9ACABcAF0ARsB4QDdAK8AdABfADsADQAFABkARwCCAL0A+wBA
-AZUB6gEiAjoCTAJUAh4CvQFxAU4BLwERAQYB+gDwAP0AEAEPAfwAAAFHAX0BWgE/AVIBTgE5AUsB
-TAEAAc4ADQFYAUYBCwHRAK8A0wAgAUABKgETASkBcgGQAVcBVQGpAbABaQF1AcYByAGSAaMBygGt
-AZEBlgF1AVUBeAGJAWMBYgGAAZMBigFCAfgA+gA8AV8BIwETAX4BxAGGAVABegGVAWEBIAEPASQB
-OgExAREBBgEEAQQBBwHiALMAmwCgAAwBZgEaAaUAbgBbAEQAHAD5/wcASAB7AKsAsgCKAH4AcQBg
-AFwAeQCrAKQAiQCUALIApwB+ALsAMAH5AFEAMACWAPQA9gCaAFkAeQCOAHgAfgBvADkAHgAOABsA
-XQBcANf/cf+6/zAASQApADQAiQCjAFIAJgAhAAMA5v/j//P/9v+r//3+hf6K/m3+Hf40/of+of7R
-/lr/3v+4//L+l/7u/iX/wP46/jH+Yv59/pj+ZP7X/ab9/f1E/jj+WP7g/jv/L/8L//n+Hf9A/xr/
-Fv9V/23/Vv/+/n/+W/53/o/+0P4m/5z/NgBsAC0A7/+t/yn/hf4F/sP9uP2i/WD9VP2c/fT9Q/5e
-/jX+KP6x/lb/TP8F/+T+mP4q/tb9sf2n/XX9NP1S/Z79ff2O/H771vzKACgDrgGq/j/9Tf5MAPIA
-Yf/h/Ur+af/j/4//zP4w/nj+pv9QAJH/d/5J/sn+OP9D/+7+o/7q/sf/cgAFAMP+F/7U/t//X/9d
-/e795wKNBGH++vkn/+0FswNU/CP7lAHWBWgB3/rk+2IC7ANR/sj6C/7QAcsAm/0W/bP/cAEcADf+
-cv4MAGoA2/54/Wv+vQByAe7/xf4AAAwC3QHd/zT/rAD2AZEBqwCrAFEBoQEjAW0AXQC0AIIA9P8y
-APkAAQFhACsAzQB1AVoByQCEAPIAqwHBARoBzAAqAUgB6ACyAPgAbwG5AZoBRwFIAWcBLwHiALAA
-ewBTAH8AGAFaAcUAawAIAaMBSQHGABcBegEgAaQAqwDNAGIA0v/v/3UAmwBnAHAA6gBuAWcB7wCq
-ANMAEgEKAe0A7gAcAZMB0gFUAaMAUQCLAHABEgKiASYBewEgAlACuAHpALoAOQHbAQICigEUAe8A
-4ADWALwAVADR/73/UADqAPAA2QDzAPAA+ABFAYEBggFoAUMBVQFgAbwA4v+t/+3/FAATACkAWQBz
-ALgASAGqAaMBmwHeARkCDALeAbABgwEjAXgA+f/P/43/Yv+W/7v/zP8EAEAAZwCJAMUAGAFFASwB
-JwF3AZwBXgEPAb0AYQAkAPv/0f/d/+z/p/+e/1QA4gCZADwASgB4AH8ARQAJAMr/Q/8G/1X/Vv+2
-/k7+pP4Q/yP/V/+d/3H/O/99/9r/8f/T/7z/nP9t/2L/UP9V/5r/yv/G/53/b/99/7n/6v8PABwA
-JwBcAH8AYQAVAK7/WP8m/wb/4P6n/nX+cf6I/n/+Xv5u/pP+lv6o/uH+E/8F/7z+qf69/pn+XP4P
-/r79yP0B/gb+A/4D/hH+Yv6W/mH+Rf6E/sz+D/9Z/4X/f/9b/0T/Yv+k/6P/WP8s/z3/dP+D/1D/
-Ff/o/uX+Gv8//z7/Rv9D/yz/Kf82/xr/0f6W/pf+1f4I/+D+vv4K/07/N/8Q/yb/Xv9q/1H/N/80
-/1T/SP/c/or+rP7I/rn+3/7e/pL+kP7D/tP+xv6n/rr+Hv8p/8f+w/4a/xn/2/7t/jP/Uf8t/wr/
-Ff8t/0j/av9+/63/BQA/AFsAYwBOAFEAegCQAHAAYgCAAHUAUAAyAAwA6//j//3/KQA8ADAAJAAY
-ABoAJgAhABsACwDu//3/FADq/67/pf+i/3X/E//R/iL/r/8DACMAEwAEADcAZwAZAIT/U/+g/w0A
-QgAhACoAaQBlAEQAVwBuADQA3//+/2QAagAsADwAiQCzAM4A/AAsAXEBugG9AXUBFwHmAOUA1AC3
-AL0AIQHNASkCBwLzASYCLQLsAZwBWAFDAUUBQwFlAZ0BzwHXAXwBLAE9ASAB1ADrADABQwFEAS4B
-vQArABwAiQDgAOcA4wA0AYMBYAFRAZ8BsgE2Aa8AuAAcAWMBegFgARIBzgDfACYBaQGYAboBBQJd
-AoMCigJtAhMCtAGaAcYB7gHXAa0BpgGqAY4BTQHiAGYAMwBCACwAHABgAIsAegCZAL0AhQA4ACAA
-KwBuANMA2gBmAPz/GgBWAAsAqP/I/yEAUQB/AMQA1gCgAHkAngCoADUA0/8iAK8A1wDIAMwAnwAu
-APv/+/+5/27/df+R/4//lv+O/0r/Df/q/tv+Cv9q/8D/9/8CANH/bv8A/6b+gf6M/qr+zv4d/5v/
-+P/p/3H/+P7J/tz+Gf96/97/CQAOAOL/f/9J/wz/sf7u/pT/6v8AABAAJABDADYAzP9g/1T/Z/9Z
-/zn/Ef/q/uP+6f7E/pf+hv56/mv+iv4C/4H/k/9u/3j/l/90/xL/yP7H/tL+z/4K/yj/1v6u/ur+
-MP86/xz/J/9g/5P/xf/f/7D/c/9n/2T/jP/L/8n/pf+T/5P/Zf8N/+7+GP9B/1H/WP8p/8/+pP5y
-/u39a/0m/TP9mf0K/mP+jf5o/lr+qf62/ir+uv3k/Tn+Vf52/sD+3P6o/oD+wf46/2T/ZP97/6f/
-8f/x/8T/6P8HANr/x/8NAE8ASAAMALn/f/9//5b/q/+p/5T/jP9e/wH/2P7a/sb+wv7e/g3/WP+X
-/7v/+/81AB0A8v8oAK0AyQBcABgABQDc/7n/o/99/0T/Of9z/7n/yf+n/7n/HgB8AI0AdgB6AH0A
-UQAYAAQA///a/6//tP/E/6X/ff+M/8D/4P8JAEsAigDbAC4BewGxAZgBaAErAcsAjQBxAGQAZgBP
-ADcASABpAJQAvQDKAOoABwHnANgA9wDwANEA1QDaAHoAAAA6AHMAFQA5AIkAYABrAFkANwB7AJMA
-oAD5AEEBDwGuANoA4wB9AJsA5wDWAJYAkwADATMBCQESARgB7ADSAOoAMAFbATEB/gD1AP8ABAEF
-ATMBbgGHAbcB6wHNAYEBbQFhATABPwF5AWIBHwEcAUgBfwGWAVYBEgEwAaEBAwLKAS8BDAFdAWAB
-CwHIAHEAOACBAOYABQHmALkA4ABRAX0BXgFMAT0BMwFSAXsBdgEiAbAAeACKAMUA2ACjAJMA9QBs
-AYUBZQFEARsBIgF0AaABYQEiAQwByAB9AIQAoQCrAK4AngCnANkA5gDFANMA/wD9APcABgHgAJEA
-YwBXAFoAbACGAHsAGwCw/8//EADy//D/5v+p/7L/z//W//7//v+n/4L/y//y/8v/zv8AAP//6P/q
-/8H/cf95/8L/7f8RABcA9v/h/8b/mv+H/6z/vv+Q/2T/Y/+F/6L/qP+e/4P/d/+Y/8b/v/+1/93/
-7P/R/8P/yv/U/8j/xP/Y/9H/mv9Y/0r/S/8d/+v+oP4o/i/+xv4H/8b+Y/4l/kj+eP53/nH+W/4r
-/hn+S/5Z/gb+1v3z/Q7+M/6H/r3+wP7v/jj/Sf9C/0//Rv8j/zH/XP9y/5H/hv9I/z7/PP8J/9/+
-4f7j/oL+QP67/kL/OP+9/jL+L/6w/uH+f/4L/gn+gP7S/qf+Yf5g/pT+r/6q/rP+tv6U/pf+9v47
-/yb///7P/pX+rv7i/rz+m/6a/oj+mP6o/oX+d/6h/r/+tv7A/vD+8/6t/pH+q/6m/pb+l/65/hL/
-X/9y/4L/t/+9/3r/bv+k/8P/1v/x/+D/sP+L/3D/dP+n/+v//f/T/8v/5v/4/yYAQgA6AHoA1QDZ
-AKcAaQA1ACEAHQAqACkAAAAUAIgA5ADoAMoArwCQAGgAJQAPAD4ATAA3ACcAEwDk/6r/kf+e/8j/
-6f/h/73/yP8aAHsAjQBDAA8AHwAzACYAKgBNAFIATQByAJIAdQB6APYARAHUAHUAuwAuAY4BrgF5
-AU4BWgF2AZcB0wEAAhECLgJBAjYCCwKhASQB7gAIATEBMAHyAJgAcACXANsA0gCSAIEAjAC+ACoB
-YgFAAQwBEAFXAX4BLgGfAFUAXQB3AJAAjQBlAG0AzwAuAUwBSgFcAZABsgHMAQACIQI0AhoCfgH2
-ADQBkAFNAdcAygAPATwBGwHkANcA7AD2APkAMQFyAX4BYgE7AU0BcAE/AQ0BMQFYASgB6gDHAKUA
-tADFAH8ATgB5AJgAlgCkALYArwBwACcAXwDQAIQAyv/C/y4AKwDj/9n/9//k/6P/kf+8/+n/GgAp
-AOT/s/+7/5v/iP+9/9//z/+//+//XgCjAGkAGAArAGkAkACVAH8AbQA9AOL/qP+A/zT/+/7s/gn/
-Kf8P/wv/L/8z/yf/TP99/0f/6f73/gb/sP5f/hf+0/0D/mz+nv6Q/m3+k/4J/z3/+/7X/hb/av+w
-//P/AADn/+r///8YAD4AUgAkANP/pP+F/0j/IP8e/wT/D/9v/3//Lv8U/yv/Iv/h/o3+c/6j/rv+
-r/7C/r/+c/4d/iT+ZP5t/mz+qf71/if/QP9M/2n/jf9r/xH/Hv95/3f/Kf8A/9b+kv6Q/ov+Xf5Y
-/k/+T/6J/oP+O/5E/oX+of6B/j/+HP4r/mr+qv6y/rT++f5c/57/xv/v/wwABAD+/yEAYgCRAH4A
-QwAbAPX/yP+s/7X/2f/D/47/mf/C/9j/u/+P/43/d/9K/0v/dP+q/7//mv+D/5j/lf+X/7P/YP+v
-/on+C/+J/9P/DgAGAPD/LAB3AIIAMACf/1L/ef+V/4H/qP8PADgAHwAWAP3/zf+f/2P/Rf9s/6z/
-1P/m//P/8v8FAHYA/AAmARoB/QDGAIQAHACW/1z/iP/N/ysAvwBcAcwB7AGyAWcBOAEHAcYAlACc
-AMwA6ADeAKoAZABZAHUAOwDq/zYA0gDzAL8AegDX/yf//f4k/1b/dP+F/8j/HgArAAcAIABeAAAA
-LP8x/zMAnADp/6v/lgAZAVwA0f/GADkCJQLmAMkAOQIGA+8BgQCfAMsBCQI2ASoBPgK5AskB1wAJ
-AU0BigBp/xH/kv8RAB4ADgBAALQACQHWAHYAigAHAXoBuAHHAYwBRgFjAVkBrQA+AJQA4ADDAMQA
-EQGXAdYBbwEbAS4BHwH2ADgB1wEtAgcC5wEEAvUBjwFVAVYBUQE+AQsB/wBSAYABBAFoAF0AqgD7
-ACQBKwF0AcABiQEMAbkAuADXAAgBhQEYAlsCRgL3AYgB+QBiADoAjwDKAJAAVgCAALkArgBdAA0A
-BwAuAI0AHQFLATEBKAH2AL4AqAB2ACcA4v/B/9H/6v+7/0L/7v7z/hn/IP/f/pH+lf7C/sT+uv7h
-/hz/NP9P/6T/7v8XAE4ALQB1//n+Yv/x/9j/ff+B/9P/6P9Z/9H+Wv9zAKEAXf8z/Uz8jP6UAXkC
-PQJvAngC0wCe/cX6y/lf+3D+0QCoAWIBXAAO/s76M/nB+of9t/9bAsAEFQOu/af5GfmN+Y753frg
-/sYDOwWpAbf9Qv0J/k39XPzF/QwB+QL7AWz/3/xr+8v7Vf2A/iX/nwD5AtYDtgGJ/hz9av3D/cr9
-Sf6J/48AmwA8AOz/b/+f/gX+Gv61/ir/0P5U/p7+B/+0/j/+3/4QAFcAAQAJAFkAcwAbAKv/pP+R
-/7L+V/1M/OH7Lfw6/Wn+Jv+4/18A0QDXALcAkgBFABcAOgBCAO3/W/+C/qH9K/0b/Sz9eP0u/h//
-RACIAWECiwIsApUBDgGDAP7/qv9r/z3/QP9M/z3/TP+V/+z/SACoAB0BswEBAssBWwH5AIYA2P8q
-/+n+H/9m/4r/hP+K/ygA9QDTAN//ev8ZAIAACADH/4sAlgAt/T34OvjH/ZwBPwEFA8EJCw5vCRgB
-Lf7lAMEByP09+63+1QKZAS/9MPvb/Fv/xwAOAiEEOgaXB/UHbwa/Ajb/Z/56/53/Wv6r/Tn+jf79
-/eb9TP8qAaACAwQgBUgF9gQMBRUFAAQ0As8A1f/d/rD9svwM/av+9P9XAO0AagLbA/ID6wK9AmkE
-mQXCA40Ap/8wAWUBev4E/LH9CwH7AP39mf2sAVwFWQRnAewBPwVoBhkEgwE0ARwC9AFUAKj+Y/60
-/0sBVgHB/83+VgAmA2cEhgObAhcDyQMdA5QBywAyAakBSwGWACUAmP/I/nf+0P5H/7f/QgDsALAB
-eQL4AvsCfAJ8AZoAlQDiAHwArP9Q/1v/H//E/tb+CP/u/tv+Nv/e/2cAiQB8ALsANQEtATUAO/9t
-/0AAcwAAANL/OQBEAFL/V/6f/vj/JAGMAVQBuQAAAID/gf/c/xYAEgARAAoAbP9Z/ij+O/9PAHUA
-0v/o/mP+qP4o/yv//v4P/83+rP18/Fr88/y8/db+0f/O/xT/Ov4y/an8g/0I/zcA3QCMAGn/pv5n
-/tv9ZP3c/QH/AQBTAM7/8v6h/uT+Fv8O/9T+mP7h/kz/Fv+J/nL+6v5R//r+3v3o/NX8Yv3//W3+
-rf7g/hf/Bf9X/qP90P2z/oL/6//u/1H/O/6N/Zr9wv21/cb9Bv4g/u39pf2d/dH9B/6L/lP/f/8A
-/6r+vf7Y/sv+0P7j/qj+cv6a/qf+nf77/mX/bP9V/wb/Yv4w/pT+8v5V/83/9/+6/17//v6K/kf+
-mv4v/3//kf9//07/Jf8V/xj/Gv8P/wv/Mf9k/2T/Ov8d/xr/Fv8c/0n/ff+h/+X/EgD4/wkAVABu
-ACAAdf8B/z//uP/4/x4AFgCn/2z/xP/v/7P/ov/U/+n/zv/C/+j/BAAXAEYAKACm/0f/UP97/5X/
-iv9c/2r/rP+w/53/wv/3/xEANwCUAP4A4QAkAHv/j/9NAN8A4AC4ALQA3gASAQcBtwBuAJwAZAE+
-AmMCoAHFAHkAQQDa/5T/Zv+R/0YAuwB5ACQANQCMAPEAIgEeASQBQwExAcMARAAGAA0ANgBiAHEA
-fADOAD8BfQGSAa8ByAHBAbQB4AEoAgcCkAFcAYIBsAGvAXkBCwGoAJUAwQDtAAABCgEaAToBXAGO
-AdcBAQIBAuwB4AHQAZsBTAEKAdsA2gAVARUBDQGHAQMCHwIRAucByAHXAasBKQHkANoAxgADAUcB
-CgHQAN4A2QC9ANsASQGHAT0BGAFxAakBkAFhAUABMQEUAd0AoACvAAwBQwEvAQMB7QD/ACcBOQEP
-AegAHQFKAQQB1wD6AOAAkQBkAGIAZQA7AA8AAADy//f/IwBAAC8ANgBrAJcAgwBDAF0AqgBhAL3/
-bf9P/yj/J/82/0P/b/+J/3z/ev9o/0P/N/9B/27/zv9AAHUAOAD//zwAbwAyAAIADgAGAOb/w//B
-/+P/4f+7/9P/EQAKAN3/4P8HABsAAgDN/7b/3/8IAOL/qf+X/4j/iv+T/3z/Pf/0/r/+xP4B/wn/
-4v7x/vX+vf7H/hz/L/8M/wr/+v7W/tf+6v4H/yP/B//k/vb+//7f/sj+v/6p/pj+if5p/jb+Cv4w
-/pr+1v7e/vb+GP8j/w//Dv9N/4r/nv+1/9H/zv+h/3P/cf+B/3j/hv+6/7L/g/+L/5j/hv+U/7b/
-r/+F/2X/WP9P/zv/Hf8F//v+/P7u/uX+4/6s/lH+Tv6h/rP+av4F/tH9Lf7S/jH/Nf8L/x//sP/7
-/03/Zf4+/on+mf6D/n/+g/6h/t7+QP+r/93/8f8aAEsAfgCjAKsAwgDrAAIBHQEiAdgAcAA7ACsA
-6P9Z/+f+1/7y/vD+5v5Z/14ADAH/APsAWwF6Ad8AEgAFAKcAwwDP//T+Bf8L/1T+xv0Q/ov+xv76
-/jD/YP9m/17/x/9TAD0A9v/n/3X/5/7w/hT/uP5k/tD+u/9kAHYAYgCjAAcBYQGDAT4B4QCvAIcA
-dgDVAFkBUgH4AN4AFwFTAT4BBQEcAXwBqAGqAa0BZgHjAGgALAARAMz/jv+t/x4AeQCWAMEADgFP
-AX0BtQH3AfABfQFBAXcBXAG/AD4ACwAYAJAANwGZAZcBdwGNAa8BhgE4AS8BYgGfAQECeQKTAjcC
-4AHOAb0BhAE2AcYAgwC2APUADAEsARwB5QDrAAMBwAB9ALUAAwH4AMQAmAByAGgAcwCPALUA3QAa
-ATgBHgHxAKsAcgB5ALEA0ADMAO0AJwFCASoBwABfAH8A2gArAVkBRQEnASwBMwEtASoBFgHaAIwA
-SgANAMb/h/9l/0f/KP8y/zn///7x/lj/tv+j/3L/lv/M/8P/ov+S/6v/3P/9/yEANgAjAAgAAQAz
-AGYAZgBtAGgAZgC3ABEB/QCYAE4AUgB7AI8AhQCCAIsAkQCTAEoA1P+m/7j/xf+o/2n/Ev/M/tP+
-xv5h/iD+J/44/l3+ov7W/uT+6f75/gj/9v7S/tL+BP8k/zH/cv+p/3f/+P7O/i7/cf+A/63/zf/i
-//v/vv9b/1n/bf9c/5H/AQAWANz/qP9M/8X+a/5Y/n/+2P49/5T/wf+w/33/N//q/rX+oP6Y/qL+
-tf7C/r/+xP77/gP/xv73/k//D//F/s3+sv5//l7+Nv4H/rn9dP2c/ff9Ef4F/i3+Z/6V/vX+Uv9d
-/03/dv+//5f/C/+m/nX+Zf5+/qP+sP61/ub+L/9J/3//FgCrAOsA8QDRAJsAcAAvANv/xf/Z/7v/
-gf99/4z/dP9f/1H/Xv/O/ygA7f/F//L/5P+w/5j/aP/+/rb+2f73/sT+h/5v/oD+s/4J/4X/6/8H
-APX///8hAN//VP8v/0f/Sv9w/5n/ff9T/2n/pP/O/9///P8cACAAOwB2AHoATwA4ADcAVAB1AIgA
-hQBlAE4ASAB1AL8AxQCWAHgAgwChAKYAmwCiAJYAjQCzAKkAagBvAL0A/gADAQgBIQFEAXUBWAHn
-AKsAjQBkAHwAtADLAMgAnwBhAEIALQAEAO3/EwBKAEwAagC0AI8AAwDY/zcAngD4AFMBQgHpAM4A
-4QDrAP0ACwH2AAEBQQFeAVABUwFDAf8A9QAjARwBFQE1ATYBLQEsARQB/AAEARoBQwGBAbEBtwGr
-AcAB3wHVAcIB0gHHAWEBGAELAaMANgBYAHYAVwCAAO8AUgFhAQYB2QAdASoBxAB0AKcAGQFNAToB
-+ACmAIkApACkAH4AdwCzAAQBMwEkAdQAkACZAMIA1wDDAKMAugD9ADgBPQEjASMBSAFzAWoBKAHt
-AOQA7ADjAMwAmABTAEkAZQBgAFUAMwDv/9L/2P/C/5L/nf/n//n/9f8vAEMA///V/+//AQDt/87/
-zv/x/+b/lf+A/9b/+v/L/+b/JAAFAMr/u/+2/77/zf/H/7X/tP/f/xIAIgDk/1X/5P7Z/vL+FP9L
-/3z/oP/C/+X/2f+A/1T/gv+M/1D/R/9p/zL/0v61/sn+6P7y/u3+/v4K/xX/Q/+D/5L/UP8I//b+
-/v7P/pb+qf65/qz+qf6w/r/+s/6o/tb+Gv8r/wX/C/9J/2j/Rv/u/p7+mf4W/6z/rv94/3P/fP97
-/2b/Wf9U/0r/Vv9w/2T/V/9l/0T/Iv89/0T/Of9W/33/n/+e/27/Pv///qf+i/7K/hf/LP8c/xz/
-Fv/1/uL+9P4O/xX/HP8q/xT/CP87/0L/2f58/m3+Y/5m/p/+7/4s/yf/D/8j/xT/7P4D/xv/DP8j
-/zn/8/53/jf+Zv6p/pL+aP6e/h//r/8AAPP/wv+E/03/Q/9Z/1b/Xf+t//r/7/+s/4n/x/8wAFUA
-TQByAJ4AtwDbANcAoQB1ADYA1v+9//n/LgBDADwALAA1AEEACwC3/7f/8f/q/7D/lP94/3L/xf//
-/+n/wP+d/7n//f/w/4L/NP9S/5f/w//S/7b/lP/Q/18A/gA+ARoBMwF9AYIBQAEFAQQB/ACfAC8A
-IQBGAEAAIAAGABoAYgCvABUBjgG9AasBowGcAYIBhQGuAZABNQEqAWUBSwHiALEA7gBTAUcB2ADw
-AJABtwF8AV4BJAH2AAIB9QC/AGwA+f/X/yoAagB3AK4A+gAcASgBNQFiAZUBnAGgAcEBxwG5AZ4B
-SQHkAJMAbwCNAJkAgQC1AB8BZQG/ATYCYQJMAk4CagJ8Am8CaAJaAukBXQEeAQ0B3wCMAG0ApADv
-AAcB1gCcAL0AMAF+AXoBVwEIAZsAiwCrAFIAz/+R/33/mP/s/0sAlgC9AOMANAFWAQkBxgDKAOkA
-FgFLAUkB4QBtAEsAZgBdABAA1f/x/0IAcwBZADkASwBZAFkAcQCAAEgABgAoAGUAWAAPAMH/r/+8
-/6T/pP/H/7H/i//B/zQATgACANP/zf+X/0n/R/+V/+j/AwDU/6r/vf+t/3z/Xv8k/wn/M/9B/zP/
-NP8y/0L/TP/q/lf+Uv7M/hP/E/8N/yj/QP8y/1v/k/95/4j/4P/v/7n/tf/Q/9H/xv/E/+v/BADO
-/7j/8f/+//X/EAAaAAAA7//u/87/of9c/xP/PP+g/9D/pv9Z/3T/nf9p/yv/Cv8M/w//0P58/j3+
-HP5C/oD+uf4F/xr/5v7S/sv+fP4Y/sn9m/3R/S/+O/42/nz+2/7i/pH+Y/5j/nP+j/6I/mH+Tv51
-/s/+If89/2T/rv/d/wUAHgD0/5H/OP8H/9P+nf6f/t7+Qf/B/z0AewBOANj/df9k/1j/D//K/q3+
-tP7M/t7+9/79/un+4f7O/pv+if67/s/+oP5t/vv9S/01/Z/9xv3k/Sf+dP7t/lL/Uv85/zz/Df+u
-/pv+6f48/1z/dv/F////6f/x/1AAqACqAHYAbgChAL0ApwB0ADAA7v/6/3AAywDAAJQAlQC+AK4A
-QgDQ/5v/lf+h/5z/kP+T/5r/rv/W//n/FwBAAIIA4wA8AU0BHAH0AO0A+wDiAGwACgAYAGEAuADv
-APMA7QDKAJgAnQC1ALAA2gBFAZYBvgHKAY4BHgHdANUAtgBnACwAZgDSAPcA5wC7AFkA7//x/5IA
-XwHGAb0BhwFIARwBAAGtAEMAUgDhAHMBpQG+AQQCKAIXAvwB/wEqAjMCEQLlAcEBtwF6AfAAZgAC
-AAEAqwCCAeIB2wGVAUoBSgGaAc8BrQF+AXcBjAF3AfYASQAOADkAQwAYACEAVAA8ADQAjgDpAPkA
-9QD5ANQAvAC3AKQAuwD2ABgBAQHVAKoAnQDGAOsA3wDCAOQAVwGvAZEBPQEXAQ8BDwEzAV4BXwE0
-ARcBMQEqAb4ANwDq/+D/IgCiAN0AtwBFAM7/5/8FAI3/Hf8I/y3/jP/X/+T/1v+g/2n/av+E/43/
-nP/S/xoAYQCWAKIAYgDx/8//+//0/7D/i/+V/73/6P/Y/7D/r//T/xMAXQBfACwAKwAsAND/W/9L
-/2r/TP8//3r/pP+Q/1D/HP8O/wn/Fv8h/yD/UP+J/5j/tv/S/7T/g/+r/zYAWgDO/1D/I/8X/yD/
-9/6K/kL+SP5j/nj+qf7R/vf+ff8CABoAIQAoAMv/L//1/jb/Uv8L/8v+uv69/sv+xv6b/nr+m/4O
-/7r/NwBNADAADADP/4n/Zf89/+b+hv5e/mH+TP4y/iz+P/6A/rn+wv77/mr/YP8G/wP/8f6G/jv+
-Ff6y/V/9vf00/u79iv2Z/cT9/v1N/n/+pP7I/gH/Vv9o/x3/6P75/gH/3/7E/rz+pf6G/rP+Hf9c
-/4r/v/+4/2//Wf+P/6n/pf+j/53/iP9p/1b/Xv+C/6f/sP+n/7v/5v/U/6X/s//F/67/vv/8/xoA
-JABMAGYANQDv//L/JwBPAHUAdQBCAFEAeAAfAKf/hv96/23/af9r/7H/9P/H/7P/CgA4ABUAEgA+
-ADAA8P/f/+3/1//R/wcALAAfAA8A7/+8/9D/KQBbAHoA0wANAQsBLgFXAV8BSwEPAc4AtwDBALgA
-qADIAAoBOAFKAWYBvgE/Am0CUAJRAloCRAL7AZEBRgE7AUUBLwEZARAB2wCyANIAxgCaALIAvwCp
-ANYAJgEzAQQBsgBsAIUArwBrADAAWABhAFEAfQCfAKMAtQD1AEMBSAFSAZ0B0gHJAZQBVgE9AUUB
-QgElAfoA5gAZAU4BMwEEAfQAAAEjAUABXQF2AWEBQAE0AR0B8wDUAMsA0ADFAI0AVwBIAGEApADa
-AKgAUACUACcBHQGxAIcAdgBHACMAEgASAA4A8f/v/wEA4//D/9v/8P/3/zoAoQDeAN0AsACNAIUA
-kgCsAJoAfQCOAJgArQDxAPIAjABPAF8ATwARAO3/9v8QABoACQD+/w8AHgD7/6z/df+Z/+//MQA6
-ABUAEAA9AFgALgDy/xYAYAAJAH7/mP+4/4L/if+D/13/m//A/2n/Qf99/7H/xv/c/wQAAACL/xX/
-3v67/sb++/4k/zH/Mv88/1P/av9r/1L/Rf9J/0n/UP9o/47/l/98/5L/yf/D/6T/zf/z/7b/Zv83
-/xv/Kv9H/xX/vP6O/ln+Ov5y/rT+yP7w/iv/IP/d/rb+uv6i/nj+uP4k/y3/SP/V/wgApv9M/xj/
-5/7A/qn+rP63/sX+9/4f/8T+Pf5t/vP+//7e/hD/YP9W/x7/Rf+W/3//Jv/n/t3+//4R/93+s/7d
-/hH/K/8u/yH/Mf9H/zj/Rf+Q/9L/6v/y//z//v/Y/7D/r/+y/9n/GQAiABwALQARAND/iP9A/yv/
-Tf9m/2H/Q/8D/83+6f4Y//v+3v78/h7/Yf/T//r/wv98/2r/mP+o/1L/9/7l/vr+Cv8U/yX/Dv/n
-/iP/j/+z/5D/c/+l//z/GQAFAPz/IAAgANL/w/8LADQA//+z/7f/1//s/wIADQAuAE8AUABsAKUA
-yADTAM8ArwBmABkA6f/D/6v/nP+S/4v/WP9J/7f/HQAZAB0AVwBLAB8AJgArABMAAgD8/xAAPwAq
-AAAATACeAIUAhADDANUAsgCiALQAsQCSAJoAmwBZADYAVACCAMQABwEsAVIBfAGQAZ0BqQHDAesB
-7AHiAQgCOwI9AhIC1wGXAW8BbAFYARUB5wDsAAkBIwEjARoBHwEhAR8BSQFkAScBLgGvAc0BZwEC
-AY8AJAAWAD8AYAB7AIsApQDeANYAqADeADoBVgF2Ad4BIwLsAaUBzgHuAZ8BZAFoAW8BgwGKAXkB
-cwFAAd8A0AAfAUcBKgEbARIB9wD2AP4AyQCIAHYAYwA4AAEAwv+j/9L/IgBTAG8AlACcAHUATgBM
-AIgAygCcAFQAggCsAGsABwCz/6T/1//y/9P/uv/a/xoAVAAuAKz/dP+x/7n/Zf9V/5b/m/9a/0//
-vf8/AFoAQgA9AEMAVAA/AOj/w/8RAGUAcQBuAHMAfACoAMYArgCjAMcA0ACQAGgAbAAxANb/xP/+
-/zQAJQDY/67/zP/C/3j/S/9c/3T/Wv8d/8j+af54/uH+1P5r/ir+5f3e/WH+3f7Q/pr+0P5//xEA
-+v9w//n+zv7L/r/+kv4S/oH9n/1T/sj+3P4E/z7/Vv9z/7z/AgAmADgAXgCRAH8AOAALAN7/of9j
-/w7/s/6U/q7+xv66/rf+C/+F/8j/wP+p/83/KQBbAP7/T//p/rn+cf49/gz+q/1o/ZT97P0l/kr+
-Jv4B/pj+b/+l/47/nP+V/1v/7v53/kP+Lv7f/XT9gf0t/tz+IP9B/5P/BQBvAL0A1gDEAJwAbQBC
-ABsAEwAeAN3/U/8g/4r///8BANT/3v8hAGUAWADu/2P/6f6i/oz+dv5P/kT+Tf5R/m/+h/6S/sf+
-JP+W/wUAOQD5/4L/Zf9q/+r+Nf4R/mD+tf4a/4f/uv+m/4v/l/+a/3P/W/+U/wIAWQCyAAgBCAGm
-ACMA+v8MAPL/s/+T/8r/GgAmAAAA1P+0/7H/wP+0/6T/wv/u//n/8v/s//j/IgBLAIYA3AAeAWsB
-2gEkAh0C3AFqARUBOAFOAfsA4QA/AZEBwQEVAi8CqwFTAeMBjwK0AskC8wLYAmQC5wGKAUYB/wDd
-ABsBUQERAb0AtQDFALsAoQCmALUAswDJALkAgACPAL4AtgCtAM4AxACCAHAAlgCzAK0AkACGALsA
-DQEwASQBNQGRAfEBCwL0AdkBsgGVAb8BBAICAtIB3gEfAiYCxQFOASMBMgFEAVQBUgEEAWYA6f/N
-/5//Kf/O/rX++P6Y/x4ATQBUAFEAZQCKAJIAnwDZAP0AAwEnAT0BBgGsAIoAuQDvAAMB+AC4AJsA
-9gAZAc0A0gBQAbYBxAG+Ab4B0gHyAbcBLAGyAG8AUAAJALD/t//s/+//CAAsABkACAAUAB0AFwAh
-AFkAkgCQAHEAMwDi//L/JwD1/7T/yf/u/wQAHQABALj/hv93/6L/8f/+/6X/WP9g/3T/bf93/4v/
-Wv8g/1L/hv9S///+zv7L/un+Av8Q/w7/C/8V/zj/jf/M/7v/lv+Q/6T/w//I/5b/Uf8W//7++f7c
-/sL+zP7w/vr+2P7G/t/+6v6q/lz+aP57/lP+T/54/m7+P/5N/l/+Lf4L/vT9vP2i/cz9Cf4V/jj+
-i/6s/pr+Xv4X/h/+VP6M/sz+5P66/of+jv60/rH+jv5r/nf+4f5f/27/E//n/uD+oP5y/lf+LP56
-/h7/MP/1/h//Xv9I/wH/8v5N/47/av9M/1b/Ov/d/sr+Jv8n//3+ev8BALz/TP8f/8L+t/4y/zj/
-//41/0f/5f6u/tr+CP8N/w3/Kf95/8D/kv8w/xv/Ff/l/gX/cP95/wb/uv7Y/vL+Ef9N/0j/Kv9i
-/8f/4//f/woAQgBlAJoA3gC1AAoApf/Y/xMAEgAVACYAPABmAHMAXQCIAN8A/gD4AA8BMQESAbsA
-pgDEAK0AmwDKAOMAsQCPAKoAtgCWAGEANwBbAKIAwADXAOMAyQC2ALQAdwAFAOH/GwBRAG8AqgDQ
-AI4AQgBnAKoAiQBIAGAApADOANMAowCFAKQAzgDcAPUAPAGNAZoBXgEvAToBlwH+AQUC5AHxASQC
-XwKfAroCtQK4Ap8CaAIpAsEBSQEAAeQA3wD7ABEBzACAAKgA6gDhAMkA3AD+AP8A6ADWAMEAnwCN
-AKwA1wDQAK0ApwCbAH8AiwC8AOAA3gDnACEBVAFcAVkBOAH3AN0A7gANATcBTAFFAWYBsAGpAVgB
-JgH8AOwAUgHPAfYB6QG7AXcBNAHgAIAAQwAsACIANgB4AKYAmACcAMgA4ADaANAA2QDUAJoAiwCp
-AGYA9f+4/53/pf/H/8//tP+p/8D/3v/u/+b/2v/b/+j/9//f/7L/pf+e/6H/0f8VADcAMgAhAOX/
-of+0/wYAVABXACIAEgAtAD0AGADn/9//5f/n/9n/z/8AACcA9f+S/0H/Df/W/sL+8P4o/3T/uP+A
-/wP/0/7r/uX+vP7U/u/+s/64/iP/Kv/K/of+Yv5t/rH+1v7o/hD/LP9c/7D/q/8f/9r+JP88/xT/
-OP+B/2H/Dv8d/zH/6/7L/tn+yf7R/vD+9f4N/0P/Sf8p/yz/KP8K/xb/KP8B/+v+EP8c///+6f77
-/j//ef+H/6L/1f/7/9//qf/D/+j/wP+C/1r/X/9v/0//HP/3/tH+uf70/ij/+P7v/gH/4v4E/x//
-s/5U/jb+8f3b/TX+WP4C/sD9tP3Q/Rz+XP5x/p7+Q//+/yMA5v/I/8b/sf+e/5H/jP+B/1r/Ff/I
-/sX+6f7d/tH++/5W/5v/rf/e/x8AIQAHABUAOQA+ADQAPQArAOD/of+b/5D/bv95/6P/ov+M/73/
-OABrAEAANwA7AA0A8P8JABsA9P/F/9D/8f/F/0v/Av8P/xf/A/8f/3//uP+o/9T/PgBoAGAARgAI
-AOL/2P+3/6D/zf8YAEoAeQC8ABUBfAHAAd4B9AH2AdcBvAHLAboBWgHeAHoAVwBJACwAIAAdAB4A
-RgCHAMIA9wAdATEBUgGMAYMBFQHkAPUAngAjAN//rP+2//n/GgAXACkAcwDMAOcAvgCfAL0AzwDe
-AEoBugGbARQB2AAqAXIBaQFkAWwBdQGJAX8BfwGqAaUBdAGGAbYBpQGOAZoBdAE8AWIBpAGkAYsB
-lwG5AY8BPQE7AUsBKAEQAQ0B9QDaAOYA7wDKAMIA6QDxAMQAvQAVAUYBQwFYATAB8wD1ABQBQQFN
-ATsBUgFgAScB6gDoAP0ADwESAf4A4QCeAEsAKQA8AHQAmgCHAGUAbQCOAGcAGwAiADoAQQB4AJ8A
-mADHAPkAyACtANYA0gChAI8ApwDCAKUAWgAgAAQA/P/5/wkANQA9AOn/lf/E/xEA7P+m/43/Pv/a
-/uf+Kf8z/xv/7/6//sH+5/71/s7+Y/4M/lf++P49/zj/bv+z/5H/OP8K/9z+kv6P/tb+/f4W/1n/
-jP+t/9T/0P/N/w0AWwBTAOz/Vf/U/qv+sv6v/qL+wv4k/4r/4v8kACsAAwDT/7z/wf+D/xL/8v4b
-/zv/Jf/0/g7/UP9B/wj/1/6W/mD+SP4q/iH+Kf7x/b/97v0r/jP+B/7E/av9vf2b/Vz9Xv1i/T79
-QP2T/fH9Hv41/kD+R/6H/gj/g/+t/3j/PP9b/8P/DgAQAPH/3//q/yIATwD8/3//Zv+J/5L/Zv8m
-/9z+g/5V/kP+Gf4Z/mH+sP4X/47/tf91/0j/ef+i/5//kv9X/9n+h/7A/vn+sf5u/or+wv70/g7/
-Fv85/1T/Y/+c/6v/Zf9b/+X/cwCQAIQAYwAxAC0AJgDc/5L/Xf8e//j+GP8+/wT/vv7G/un+Dv9c
-/6b/g/9H/2L/ov/T/9v/wv/S/zYAsADaAKkAegBhAPb/bP9t/9j/MQBeAF8AfwDpACkBMAE+AR0B
-5QBIARACHgKyAaABkQFRASwBDAG1AEUADQBBAKMApgA2AO7/BAALANf/uv+y/33/ff84ACIBWQEz
-AUIBbQG/ARwCDALDAc4BygFfAf0A0wC2AK8AwQDsADoBfAGbAbUBwAGxAaABqgHUARQCZwKsArYC
-iAJOAv4BgwExAT0BfQG7AdsB8QH1AYEB0ACbAIwAMAAZAIcA+gBKAaIB4QHBAS8BnwCGAJoAfgCA
-AN4AIwEmASMBDwHNAHkAbQDRAEQBfQFzATsBEAHfAKUAnAC1AMgA9ABNAXsBWAE3ARQBzgCeALQA
-CgFXATcB4gCxAHsAFADD/8H/4v/o/+r/GABRAFoAeQDMAO0A+gAZATwBqwH5AYkB3ACFAGgAQwAO
-AOX/1P/P/8n/6/8jAEEAYwCZALwA0wD4ABoB+ABzAA0A9v/M/37/T/9I/0P/Rf9L/1D/kv8dAKgA
-8AD7AAsBHQHnAHoAJwDr/7X/rf+1/7D/wf/Z/7P/fv+c/8f/sf+X/5X/qv+j/1X/Fv8H/+n+x/6y
-/ov+RP48/qb+3/7C/sz+zf7B/v3+Qf9n/5j/s/+n/7T/yf+a/1n/S/9P/1D/av9//1H/AP8g/7D/
-y/92/1j/V/9Q/0X/MP82/0f/Mf/6/s3+tf66/tj+7v4C/wn/H/9O/0D/F/8t/0D/Gv/8/gf/Bf/3
-/iH/YP9Z/zD/Gv8c/xX/9/7Y/rL+w/46/4r/VP87/1P/Iv/w/uv+AP8N/8T+cv5t/mT+Qv5J/n3+
-nv6T/qn+1P7C/p3+p/7C/rn+r/62/pr+V/5B/mP+jv7B/sr+pv7K/kH/f/9h/yf//f7t/gb/Mv8K
-/6v+l/64/sX+z/7x/ib/Uv9n/5L/5v///8D/o/+u/5H/VP8p/yT/B/+9/or+ZP5E/k7+d/7C/iL/
-eP/V/yIAIgDJ/2n/bP93/yL/Ff+y/ywADACy/2D/Cv/s/iX/Sf9e/77/QQCyABYBHgHHAJUAkgCY
-AJ4AoACzAMMAqgBmADEANwBkAKoAIAGqAfMB/gELAh8CBAKyAUgB0gBrACsAAwDz//n/LgC7AEYB
-cgFuAYIBywHyAckBnAFNAewAuQCMAFcAJwD0//j/NgA3ABAAVgDnADcBWgGUAbEBmQF9AYIBlwGW
-AXUBLgHuAPUAPwGgAfkBKQJEAlwCQgL+AbEBkQGpAb4B4AEgAlMCaAJRAgsCvwGJAU0BDgHeANIA
-6QAUAUABOAENAScBcgFuASgB8gC7AIMAewCUAIEAYgBfAEkAQwBhAGsAfwCyAL0AxwA5AbUBkwEu
-AQcB5wC7ALEArwCHAHwAzgAmAUMBTgE/ARAB6wDmAN0A0QDrAAcB3gCSAHkAjgCaAIIASwBDAHgA
-swDsAPoAzQCNAFQAMQAlAC8APAAwACYAMwAAAID/Xf+w/9X/2v8oAGkAUwBbAK4AxgBWANX/pP+a
-/53/pv+5/9H/zv/q/xsAFwANACYAJgALACQAWgA3ALT/a/+m/9f/u/+d/5b/t/8LAFsAfwBaABQA
-MwCMAIsASAAaAPv/6P/A/2n/J/8T/x//PP9g/3//kP+x/9T/0//K/8L/s/+9/+L/AwAHAN7/pf9q
-/x//1/6V/jv++f0x/nT+P/4a/lP+gv61/gT/Hf/o/pD+ZP6W/rz+ef7//Z39hf2G/X39p/3S/d39
-Qf75/mL/Uf8e/yL/Zv+l/6z/ev9U/zv/w/5M/jL+6v2P/bL9G/5S/l/+hv7c/iD/Nv9Z/5X/m/9a
-/zX/R/9H//z+mf5n/jr+Av4J/hz+//3x/R7+qP45/zn/Av8L/xH/+/7r/sn+ff4m/vn9HP5S/lL+
-S/52/sP+2/6w/rb+7/4B/wz/ZP/O/+v/yP+H/z7/I/8o/xr/G/88/2f/sP/0/xAAUwCuAM4AzgD9
-ADwBQgEgAQoB3gB8ACYA4v9//0n/cP+O/4n/l/+w/8b/0//h/+7/BgA6ADkA4/+6/wIAFQCm/0b/
-KP8o/z3/XP9//6P/2P8+AKQAjwA5AFIAmQCkALsACwE7AQMByAANAW0BPAHjAOYAAwEfAUkBXAFV
-AVcBfAGtAbgBlQF0AXcBYwEiAREBQAFeAS8B9gAfAU4BFAHcAPcAIQELAdkAyQDLAMkAwwDIANwA
-9wATARgBHwFwAcsBsgF6AWcBJAEAAS4BNgESAewAzgDaAPEA2ADKAAUBKAEEAdwAzgDSALAAdwCG
-AL4A6wD1APkAIQFQAW0BigHFAQACEwIPAvgB5wHiAcEBrAGuAX8BUwFNASUBGAFNAU0B7AChAM4A
-EgH7AL8AngCdAKgAlQBzAGAASAAwAAgAqP8Y/+j+af/W/8f/x//b/+T/IQB6AH0AJADs/woANQAk
-APj/9P/4/+L/5/8HAOj/lP+a//n/OwBEAD8ASwBXAE8ANwAfADQAcQCOAHkAXAA2APz/zf+m/3b/
-eP/L/ywAZQCVAMIA3QDRAIUAKAAEABUAHwAkADkAPgAkAAUA6/+9/3D/A/+4/uL+Qf9O/yf/Lv8b
-/9n+6v4i/wL/5P4b/z//SP9Y/z//Jf8b/97+g/5V/on++P41/1L/bP9J/y7/bf+V/3P/bv9//3P/
-hP+x/9D/8f////j/DAAzAFEAYwBjAIUAsABsALL/z/44/iX+Gf7e/ez9WP7G/gb/C//4/vr+0v6G
-/pP+4P7s/pj+Mv4x/m3+O/7W/bv9y/0T/qf+H/8+/0H/M/8d/wz/0f5c/gz+Nv6z/kz/x//Q/4f/
-af+k/8X/lf9e/z3/WP+j/6v/Zf8r/xv/D/8W/0f/Y/9c/2T/Wf87/0P/Uv8y//z+6v78/hP/R/+a
-/8L/nv9N//r+0P7U/vf+Lv92/6//s/+t/57/V/8s/1P/dP+m/xkAYgCDAMYA2AChAGoAMwAHAB0A
-PAAmADUAZwA/AN3/lf9+/4H/i//O/0gApACvAJoAowCeAFEA5//F//v/KgBAAGEAPQDn/xEAiACL
-ADsASQDJAD8BYwFRATkBHgEfASwBHwEiAT4BUgFiAXYBfAFxAWUBYQF3AZEBkAGhAYYBAgG1AL8A
-dQD8/9j/wf+r/w0AjgChAHcAdQC2AOQAzQCiAJcAvAD7AEYBhQF4ASUBAAE2AVkBSgE5AR0BLwGU
-AbwBjgF6AYcBfAFrAX4BowHkAQ4CugE/ASABIwESAQYB5QCiAHsAVAD//9//EAAdAAUAHwBoAKIA
-sQDKAPkA1QB1AJEA/QD4AJoATwAxAD8AQwARAPz/GgA6AGgAlACEAFQAZQCwANIAxwDmACkBFAHO
-AM0AvwBcAP//6v/9/wEA1/+l/6r/y//r/yUAYwB1AHgAlgC9ALMAiQCYAKcAcABJAEUAMwAfANb/
-b/9p/6T/wf++/83/9v8YAAQAwv+2/+f//P8NABEAxf/D/yUA9/93/1X/Q/9N/5D/n/96/4D/t//9
-/0AAKgCw/2f/hP+v/6L/j/+G/0n/Lv98/7T/nf+J/6D/8P9LAFoANwAEAOj/FQA+AAEAl/9w/5n/
-u/+y/6b/ov+t/83/5f/n/9X/p/92/3v/mv+T/3f/e/+N/2P/Mv9L/0z/+f6p/oD+gP6f/o7+Sv48
-/j3+6f3Q/TL+bf55/ov+if6W/qr+i/5Y/lX+af6C/tD+Of9A/+b+0P44/5f/uv/I/5X/X/+m/xcA
-GgDG/4v/jv+x/9n/8P/X/4j/RP9e/5T/hv9Y/0n/QP9Z/8H/8v+x/3n/gf+J/4D/p//O/3r/6P7T
-/g7/+v69/qT+dv4H/uP9Pf5h/l7+wf4B/+n+Mv/E/xYAGwDq/73/vv+m/yf/nf6h/vn+Hf82/2j/
-Yf8q/zf/lv/z/zcAagBGALr/Ef+f/qL+7f4G//3+Bv8K/x7/Rv9d/1L/Vv+w/zUAnwABATYBDAHa
-AOEAvQBAAMr/mP+w/9z/+P8FAAsAEAAoAFwAPwCz/57/TADPAKEAJADY/+n/KwAkAMv/d/8w/yL/
-jv/x/wEASgCuAIwAKQA8AHwAKQCZ/6X/IQBjAI8AwgDHAMYAyQDFAO8AQgGSAcUBsAFdAUgBmQGm
-AWQBYQFwAXsBlQGKAWkBZQGLAYUBJwEPAXIBuwGeAXQBfgFnAREB4ADjAOAA/QBfAXMB9QC5AAgB
-IQHKAIsAiwCzABMBdwGHAXUBfgGGAYMBRAHVANkAQgFxAWUBeAGDAT0BAwElAVABZAGTAb4BsgG6
-AfcBAAK+AZIBiQFxAT4BEQEeAVIBZAFaAVUBagGxAfoB+AGeAS8B+ADZAJYAWwBlAIoAnQDHAOwA
-5gDJAJIAUgAwABsAAgAXAHkAtQB+ADgADADV/6H/d/9f/33/qP/O/ycAZwA8AAAABwALANb/tv+5
-/7L/q//m/1UAfgBaAEQANQALAOj/5f/x//X/3P/z/zIAGgDR/8b/zP+w/7P/w//C/+j/HgAjAAQA
-5P/G/7//zf/u/ygAUABvAI0AfABgAEcAJQAJAN3/pf9w/yP/qv5b/ob+w/63/sP+AP8q/1z/mv/Q
-/wUABADu/xEAKgDN/0X/A//r/sT+lf6T/pj+Vf5H/tH+Yv9t/y//LP9D/zH/H/8K/+X+uP6N/pX+
-i/43/vj97/3o/fP9NP6L/sj+4/7u/gD/Mf9l/1b/EP/T/r7+q/5z/jL+AP73/SL+Wv4+/tn9Dv7F
-/uj+k/5r/jr+8v3k/eH9w/2h/Xz9j/3h/fn90/3o/S3+av6k/s7+wv6D/kj+Lf4V/uv93P3y/fD9
-1/3h/Qv+Qv6i/u3+/P4v/57/GABvAG0ANwAiAFUArADQAK4AkQB3AC8ABAAzAFUANAAiADYASQBG
-ADoAGQDy/+T/3f/c/8z/lf9b/1f/ZP8p/9v+sP56/oT+/v5c/2b/Vf9c/7r/KgA0AAoADwAcAAkA
-IwBzAGsABQALAKcACwHUAI4AlQCfAKAAzgAFAQIB+AApAT0BJQFGAXwBgwGNAYIBLwHYALIArgCX
-AHMAawBrAG8AfgCyAOwA2wCrAKYAqAChALEAzADcAOgA4ADfAP0A6wDOAOcA7QDgAO8A+gDmAMIA
-ugDKAOQABAEJASEBYwGLAX4BbwGEAZUBeQFxAaIBxAHNAdgB0QGtAX4BZgF5AYgBcgGOAdYB3gGt
-AZMBpAGwAacBswHMAa0BZgFLASkB3QCxAJYAiwDGABABMgFBAUEBHgH+AB0BTgFPAVIBhQGrAbcB
-+QFAAhgClgEKAagAjgCVAHMAMAACAB4AkADjAOQA/ABDAU0BCgHTAMAAjQArABEAUgB4AHMAdABy
-AGsAggChAKsAxQDgAMMAmwCqANgA+QD+AAgBLwFTAWYBbgFJAewAkQA4ALz/Y/9p/5L/p/+l/7z/
-4f///1gAvADOALoAdwDy/8P/7f+k/w3/s/5R/tr9uv3s/Uz+tP4K/2f/qf+o/5f/yf8WABEA4f/t
-/xIAAwDI/4//Vf9C/4f/7v83AGMAggB/AGoAewCaANYAEgHsALsAuQBfAK7/Iv/f/uP+If9r/3H/
-Rv9b/43/cP8L/5P+U/59/rT+pv6B/ln+Ov4V/sX9ff1//an9uP3c/VT+ov6D/nL+ef6N/tv+Kf9V
-/1X/C//R/g//O/+t/g3+Lv6e/t7+R/+x/67/jP+I/57/ov9h/wP/nP5B/j3+Wf5B/iX+HP4d/jn+
-Xf54/qj+1f7L/rz+Gf+1/+D/pf9k/xf/6v7W/r/+7f49/2L/e//K////yf9+/17/eP/A/wAA6P+F
-/4n/1v+b/yD/+/71/gP/N/88/yH/9f6G/j/+QP4e/hf+fv7j/tH+ov6O/lf+Jv5S/uf+fP+s/7//
-6//9//n/7f/q/xoAUgB9AL8A2gC5AKAAcAAYAOv/7v/1/wcAJQBRAHIAYwBEAFsAhgCUAJEAdQBb
-AEkAGgDo/8f/pP+v/+n/BwAlADwACADj/y8AeABTAOX/cf9l/8b/IAA0AAMAv//g/28AqwB0AFEA
-XABkAFkAbwCJAFIACAAnAJ0AAQETAdEAbQApABwAGQAgAF4AlAB6AHYAtwDaAOIADAFSAZMBugHd
-Af0B8wGyAWwBPgH6AJgAbwCZAKAATwAqAE0APgAwAH0A2AD6APUA6wASASkBqQATAP3/+//6/zgA
-bABwAHgAiQDKAE0BjwFxAXkBsgHRAd8B6wHYAX4BHAEmAUIBDQHbANwA1wCyAJkAtwAGAU8BdgGS
-AaABmQGTAZQBlwGcAYgBUgErARwB6QCYAGoAQQAEAAAAMQA+ABcAHgBnAFkA4/+a/7X/2f/G/7z/
-2f/S/8v/IAB0AHsAbABSADIAPwB4AMQA4wCYAFYAiQCiAEIADQAsACsAPQCEAJIAYgBZAI4ApwCE
-AIEAiQBxAIwA0QDgAK0AdQBYAEYAIADh/6L/ff9s/07/HP8G/zD/gv/E/8X/p/+u/67/hv98/6b/
-wf+t/2v/N/9H/3r/eP8f/9j+1P71/iz/If/U/tz+H/82/13/ff9m/0T/IP/9/g7/NP8Y//f+A/8A
-//H+7P7B/mH+Hf5r/ub+2f7S/iT/JP/v/iP/d/9c/w7/6v4J/2b/nv93/4L/6//4/7j/7v9gAIgA
-fwBnAF4AeABhAPT/qP/B//L/KgBYACcAq/92/57/l/9a/yz//P6v/k3+HP5B/l7+Xf5v/ln+Jf78
-/cn9uv31/Un+ov7o/tL+cP5D/oP+4P71/t/+6f4N/1//xf/u/8P/n//4/3oAqwDEAPkAKAEnAd0A
-gwBdAGIAcABnAGcAlAC0AIAA+/+d/7j/xP94/2v/pv95/+3+pP7E/vL+1v6P/p/+Bv8//xP/2P67
-/oX+jP78/h7/9f4G//D+oP7R/nL/rf+J/4H/vv8/AJIAegBrAI0AgQAvADIAqwDzANcAsgCqAH8A
-bgCrAMMApgCZAIMAKwDh/9L/w//C//H/KgA6ADQAQgBYAGsAsQD+AN8ApwDcAFABjQF+AVMBFQHN
-ANcARQGSAZIBvwH5AdUBsQHDAaEBQQErAYQBugGiAYQBZQE1ARABBwH/AOEAtACmANcAMAF+AYYB
-NAHEAIsAhgBtACYA+/8yAHQAfACbAN8AJgFnAYUBiQGVAZQBewGCAb8B8gHtAcsBowF0AUEBFwEE
-AUQB4QFHAjUCDQIPAhwC7AGOAVsBTgEzAfAAvADVAAABEAH8ALoAggBgAFUAfACEAGkAcgBhAC0A
-JwAzACAAAAAGAGsA0gCxAGYArQBGAVUBuQA3ADYAWABoAH4AlQCYAIUAbQBKADEANwAbANv/rf+r
-//X/UABTAEYApgAUAeoAVQAPADkAaQBPAAAA4f/z/yMAigDRANIAzACfADQAxv+Z/6v/of9q/1f/
-h/+S/xz/g/5d/tv+hf+l/3H/k//8/0IATgBcAHMARACw/yT/+f7l/rL+eP5I/l3+3/5g/4L/qP85
-AM8AzQB1AG0AvQDrAMgAjgA3ALL/IP+l/lr+O/48/lD+gf7E/tD+tv7J/gz/OP84/zP/Fv/O/pb+
-nf6t/ov+Zv5t/ob+lf60/gn/Zf+T/3L/Hv8x/67/yP9f/w//Hf8+/xb/n/5A/jb+OP44/ir+7f3h
-/SX+TP4d/uP98v3r/Wj98PwM/Yv9AP44/mH+t/7h/rT+p/7i/kL/fv9+/37/eP9u/1b/Hf8X/2b/
-sf/M/8T/tP+s/7r/6/8FAPb/+P/r/6X/d/9f/y3/7v7a/gn/Mf89/2z/iP9e/3P/1//t/6//lv+e
-/5//pv+M/zD/2P7P/vH+EP8n/wD/tf6s/tn+7f7p/g//Yv96/1L/M/8P/wP/Mv9U/1H/VP9q/1//
-Tv+i//3/BwAIAC0AaQCXALsAuwCHAFoASgBnAKAAuQCCACkAJwBwAJsArQDEANUAAQFSAXYBOQHb
-AMMAyACvANAA5gCDADEAIAAVACwASABPAHEAqQD8AFIBTQECAdwADgE2AQMBywDFAIQA+P+6/wAA
-UQBsAIMAigCdAOIA3QCaAKAArACrAPAAPwFBAS0BNQEvAREBHAFlAaIBnQF1AVkBdQGgAWgBKwGQ
-ASACVAJZAlYCIAK+AbIB3wGhAVsBlwGsAUIBEQEcAeMA2gAVAeUApwDkACcBSgFHAQUBBwFwAZ0B
-UAECAfkA2wCBAEQALAD9//n/RQB4AJAA0AD1AMYAeQBrAJsAvwDJAMYAuQCcAHkAXQAoAAMAAADR
-/73/EgB3AJMAUwAIAC8AzABcAW0BGgG9AJcAfgAsANr/3/8iAD8ABwCY/y//MP+c//z/LgBWAEcA
-BwDG/2//Ef/e/rr+gP55/rz+5P4C/zr/Kf/w/hn/l//7/z0ApAD0AOwA3QD0AAsBIgFBAVYBNAH1
-ALwAbAAwACIALwA5AAAAj/9C/zr/R/9N/1D/N/8j/zv/Lf/6/gv/RP9b/13/mf/t//f/0f+M/x//
-4v7i/on+4P34/dT+I/++/pn+1P7v/qn+bv7E/kT/df+T/6b/bP9C/27/lP+f/8H/7P/V/2L/Fv8z
-/xn/nv43/g/+Ff4Z/iv+b/7a/h3/5f59/mf+iv6i/rH+3P45/5X/nf9J//n+J/9w/zn/0/7R/if/
-Pf8K/xv/kP8uAIQAMgC8/7n/xv91/z//hP/A/8P/5f/+/+D/u/9j/wD/If+M/5z/Qf/b/q3+rv50
-/q79FP07/Zz9xP3s/Un+nv6e/p3+Av9k/2r/X/+L/xEAuADMAD8A1v/5/z8AJACp/zX/Hf8d//L+
-5v4j/0H/9f7M/iz/pv/S/7D/x/9XAMQAigD8/9v/JgAnALz/Zv+B/+D//v+z/6L/8f/Z/1//P/+a
-//L/uv89/3P/XQDxALUANAAsAJoA2wDHAKcArwC6AG8A4/+U/5X/bf8b/2L/UADfAMAAtQDzAA8B
-0QCIAKgAHQFQASQBIAFkAYAB/QAZAL3/KwDBAAEBFAFkAcIBmAEWAfEATQGYAXcBTQFcAW4BXQEq
-ARIBPgFfAQYBkwDvANwBMwLDAVwBVwFuAVkBEAEcAa8BCALqAd8B9QHAATkBzADGABsBaQFmARkB
-xACsAIoALAAgAKAABAHNAD8AAABlANIAmAApAFAA1QD1ALsAqwDfAAUB5ACmAJcA2gAkAVEBmAHV
-AcABQAGkAIoACQF0AVUBGgEtAU0BCwGxAMYA8ADpAOoAsQBYAJcAzQAQAHj/2P9NADEA8f8ZAHQA
-eQAcANL/BQB5AKkAswD+AFEBGAGhAJQAxwDQAKEAXgBhAMgADQHQAGYANABFAH0AaADu/8z/OQCR
-AIwAggCdAMAAzAC2AMIAHwFsAU8B7QDhAD0BUwEVAfgAKQFpAWEBGQHXAMIAyACxAIAAiQCvAIIA
-9/9P/wH/KP8b/4/+LP5N/q7+2/6Q/k/+pf4j/wP/X/4l/rf+J//X/ov+/P6z/+b/qP9a/2v/AwBu
-AFAABwDv/0IAnQBnAO3/w//C/23/Af/6/hL/9/7q/hD/Ov9R/0f/MP8b/x7/QP8n/8D+mP7E/tb+
-o/5M/hX+Lv5C/tb9WP2c/UL+Sf7X/Yv9bf2W/fn9Jf5M/tX+Pv8c/8H+fP6A/pb+Uv4A/j7+xf6g
-/uT9pv0g/pf+t/7P/gv/bf+h/1b/Cv8y/2L/Hv+d/nH+0v5K/zb/n/5O/qj+Df8N///+Wv8dALEA
-qQBkAD8AJADL/z3/5P6y/lH+6/3n/Uv+rv6N/vH9BP46/wcAff+i/m/+n/6P/h7+Cv6Y/ur+w/6M
-/on+3/4R/8n+i/70/tP/HACP/y//o/81AAAAnf8mABoBIAE1AIj/qf+s/+n+Pv5E/rX+L/9F/yP/
-e/8YAD8AIgBIAJEAlgBtAI8A0QC7AFUA7//w/0cAQADQ/53/GwDpAAoBlAB5AMAAxACXAJoAuQCq
-AD4AoP9v//r/iABZANH/y/9ZANAAlQAAABEA0QBYAVABHgH8AJwABACl/5r/yP8hAHcAwgAxAa8B
-0QFtAUMB7gHpAmsDUAMhA0MDNQNwAmAB3AAEATYB9wCfAMcAZQGgAQEBhwAAAbcBuAFJAUkBvgHY
-ASABWwCVAKEBMQKMAdUAOwHzAccBRgGNAVICqAIWAhMBwgAuAUUBywBrAKIAKgFKAeIApAD9AGsB
-QAHCANcAnQEdAr8BQQFUAacBiAHKAEsAngAUAdYAUwBuAM8AxwCRAKsAJwGVAVABmgBUAI0AnABo
-AFcAvQB4AbQBOQHHAMMA0gCnAJcA0wD1AK4ALADl/+//0v9k/z7/wP9MADYA5v8pAPUAYwHgACsA
-OgCdAGwA6v+Y/z//rv4B/mD9Lf2k/UL+Xv5x/kb/TwCeAHYAtwBAAWQBAQGLALAAIwHhAOz/O/8f
-/y//Of8a/xn/u/97ALEAcAA0AGEApwCqAI8AegBzAEgAyP81//j+If9U/yD/zf71/kL/Pf83/0P/
-Af+V/kT+Cf4B/kH+dv5f/vj9j/3Z/Yb+lv5j/rb+Kv8D/5r+1v54/7j/sP+h/3v/Z/+S/7D/bv8I
-/9L+7f5S/7b/yv+V/43/+v9hAFcAIgAcAEgAbABZABEAq/9G/wP/1P63/vX+Xf88/5v+Sf6F/ob+
-F/4F/qT+M/8o/8b+Zf5x/un+Bf/E/ur+Jv/D/kD+PP50/tf+Rf8q/+D+C/9S/2T/Rf/1/sj+8/4p
-/0r/dv+Z/5n/l/+w/7v/rv+q/6L/qf/f/x0AOAAuABEAuf9c/4T/9f8GANv/EABrAFwAAgCo/4P/
-u//+/7v/Mf8x/4//iP8m/8f+vf4M/0f/Rv9z/wYAYgAhAPj/LAAfAML/Xv8T/zv/m/9//0P/jv/Y
-/5v/NP9A/7r/4v9k/xb/zP+eAE0AT//9/sH/jQBpAPP/NADWAOEAQADU/z8A7QD6AHYAPwDDAF8B
-IgFhAFsAFAFpAewAfwD1AM8BCAKZAWwBxQHeAUQBrwDpAHQBeQEdAQgBPgEeAYYALAA9ACMA8/8t
-ALAAEQEfAa8ABAAuAAUBJAGsALYAewEkArgBpwBUAAgBcgHLAFcACAGlARkBRABgADMBkwEMAXwA
-1wCbAYwB5AD1AMwBDQIbAQAA/v/1AH0B4wBVANQAjwFuAb8AhwD6AHgBpwGqAdABGgLsASABhACo
-APsA3ADHAEoBpwH1ANf/0P+1ANgAEQCU/9T/WwA0AEb/5f59/+f/qv9Z/3z/EAB9ADUArf+7/1EA
-yQDaANUAOQGBAQYBmwD4AJoBsQEhAaoAyQC/ANn/Kv+t/4QAsgBdADAAqgBTATsBoQCOAPsA/ABW
-AOz/awAhAekA3/8s/0f/bP/8/pT+5/6P/8n/ef8h/wr/1P4s/vX91P6O/0T/1f70/mT/tv+L/1r/
-2P9hAEsAKgCJAA8BFQGeAG8A2gDwAPL/x/6w/lj/YP+D/vH9ev5n/2//uv79/moACQEKADT/6v/I
-ADgA/f7N/r3/CwD4/hz+9f56AHEA6P4a/un+3f+G/7j+N/90AGoA4/6x/SP+Iv8Y/5n+9f6z/5r/
-8P6t/gr/a//p/tb9k/0//nb+xP1C/an9Uv5t/un9ZP2Q/S/+pP7J/rP+o/60/tL+I/8t/3b+Ef66
-/lH/FP++/h3/8P9BAOj/c/9H/2r/Yf8K/zj/KgDLADUAC/+Q/v3+hv+G/1//wv9LAD4Anv8//7L/
-OQAAAGf/N/9N/+7+NP4D/pr+A/+a/hf+Qf7E/hz/H//J/tT+1//WANAATQBcACsB1gE5AbT/4v49
-/83/3P+6//r/dACEABUAAADHAKsB0AGFAYMBwAGzAR4BRADh/0AAjADJ/47+bf5L/5f/E/8T/xsA
-6wCHAMb/+P//AHcBvwDo/wUAmABhAGn/Jf8xACkB7AAvAPn/fwBPAXMB/QAvAeUBwAH5ANEAZAHI
-AUEBVgBiACYBCAFDAE8AEgFSAZ4A7/8ZALoALwE5AfIA3QARAQUBmgBaAI0A+wBeAXoBUwE5AVUB
-kQHLAewB7QHlAd0BrwF9AZUBzQHkAcQBXAEIASYBUwEbAdcA9gAgAc8AOAD8/zMAeACbANcALgEq
-AeEAzwD4ADUBfAFYAbsAfQDfACwBFgEeAY0B4QGPAd4AogD5AFABUAEaAfIAxACNAIcApQC/ALgA
-awD4/+b/WACfAJkAoACOAGoALQDT/wUA2gBuAUkBvwBgAFkAYgA3AO3/xv/a//P/9//1/+b/1v/o
-/x0AWwB1AGcAUwA3ACMAKwAfAAgAEQAAAKn/Tv8v/z7/Wv9c/1n/Xv9S/07/W/9c/2n/ev9c/0L/
-a/+X/4n/TP///s/+uf6r/tz+av/2/wcAg//z/hH/iv+6/7z/yP/q/zMAcQBSAOj/l/+v/+n/y/9m
-/1b/x/8wABYAlf9Z/2X/Nf8I/2v/CAAFAFf/qP6B/q7+qP53/m/+h/6G/jj+yP3M/Tr+MP6i/bT9
-lf4m/77+9P31/ef+Yf+w/uz9Av6L/m7+qv1K/Zv9G/4x/hH+fv42/0b/wf6+/m//wf9b///+VP/9
-/8T/m/4q/iH/6/9L/z7+Zf6q/zMAQv+I/mr/oABQABX/+P4RAFwACf/p/Xr+kv9g/zT+4v2T/m3+
-Qv3y/AP+P/9M/zj+7v03/wAA2f5o/cn9Tf+h/4P+F/6P/wwBTwB0/kr+4v+EAFn/xf7e/98AfwBk
-/zX/TgDuAB8Agv+dACMC/gGKAJ3/6f9eAMX/7/5S/2AAwABPAAAARwB6ACAAAAC5AIUBeQEOAUgB
-AQIxAngBqQDNAGwBRAGSAJIA9ACTAAQAPQCmALEAfgAdADAA+ABlAQEBkwCeAOEAwQAuAP7/lAA+
-AUsBKQGeATMCxgGaAAgATACAAC0A1P8lAPcAWgHLAPT/tf8bAJgAwgD6AMoBrQLPAnACCQK/AbIB
-rAFvASAB+gAfAV4BZAFeAYABkQGLAaoB3AH9ASACPQIeAvIBDgL8AUkBuQDxAGkBfQFWAXoB5QEw
-AgkCcQHyANkA+QAiASYBFAE9AVwB4QBOAFwAqQCpAKMADwG4AQIC3AGfAXEBagEyAYQABgAWAEsA
-XgBlAGUAVgBQAFEAUwB1AMEAJAFNARgBEwFhAZYBqQHLAQsCewLdArECLgIGAjoCJgKGAeAAsQC0
-AJ4AlQBJAJ//Y/+h/5P/Z/+U/7v/1/9VAMEAkwBEABoA/v/5/8L/Q//x/uj+0f6x/t7+Kf8i/xL/
-WP+h/8D/+P///5f/c//G//n/+v/S/1X/4P60/pb+xf4+/zX/nP5a/r/+TP9//wb/ff6s/gr/yf4h
-/rn9r/2O/S/99/w7/bv92f1o/QT9Gf1b/X/9kf2Q/XX9U/0H/ZD8dfzO/Af95Pyi/Kj86fzF/JX8
-Hf3j/Sr+Ff4B/uz9sf1g/Sb9GP01/VH9If23/Hn8g/zK/Db9jf0I/rT+Ff8j/yL/AP98/q79Jv1D
-/dz9Xv5h/iL+5f1g/Yn8B/xL/EP9g/5Y/0z/tv5E/v79j/0b/Uj9H/6S/vn9EP3P/DT9gf0F/Vz8
-3/wX/n3+EP6f/X39pf0J/pL+K/+a/27/7/4P/7v/2/8V/7r+7P9RAUUBZQAcANMA1wEiAq8BugGO
-Ap8CiwGyALAABgFXAakB3AHaAZMB0AAkAD8AWwC4/+r+6f6K/57/6P5V/nj+3P6p/h/+f/7K/5IA
-PgCk/7r/hAD/AOwAYwG1AlkEzgXSBu8Hagm3CsAL7AwtDi4PTxDWEQcTSRPQEhsScxHjEIIQIhCo
-D4wPQQ+ODfUKpAi0BhsF7gO2AjgBvv8X/u77vfkk+AH3Kvbr9SP2M/bf9XP1QvVL9Xr11fVn9iL3
-3Pd4+Nj4IfnZ+ev6xPto/B79Of6//8sATAF7AioEIAWRBSoG3waQBx4IdAjBCBQJbAnXCR8KBQqF
-Ce0IWgieB9YGLgZxBW0EjgMEAzAC4wCv/8j+0f2b/G/7lfru+Ur5rPgY+KX3g/eQ95T3kfeN96n3
-Efip+Dr5pPkM+tX63Puz/EH9tv1e/jf/JgDzAGgB6QGgAjwDmAPQA/QD9QNWBEQFwgWTBYMFuAXq
-BSoGQgYFBsUFigUgBasEdQRtBFYE8AP8At8BSwEgAa4A1f9C/1T/bf87//7+6/4J/wP/h/4H/hX+
-b/6p/uz+v/8NAQICLgL1AfEBUALiAoUDDwRZBEoE1QPsAoEB4f+E/pf98fxf/L77+voI+vP45PcY
-96j2M/a59fH1rvba9nn2RPZC9mT25/bB93n4//i2+Yv6Lvul+0j8OP0R/qv+RP/P/xEAEAAiAHEA
-rwC0AJ0ApADuACcB9gB6AC0AMwDt/y7/gv7Z/RH9RfxP+0/6U/lN+IX37fZM9q/19fQv9OPz9fPd
-873z8POc9Hf14PW69ZP1Avb+9g34CvkK+v/6APzp/F/9n/1E/jX/x//c/83/1v/e/4X/1f4y/pj9
-9/yp/Ob8KP3T/Dv8B/w6/LL8Nf1h/Zr9Tv7G/jz+Xv1V/eD9xv3h/Bn88vv0+2f7bPoU+vf6DvxR
-/GD8C/3G/fL9P/5Y/yYBUwPYBFsF+QXhBv0GkgbyBuEHUggpCKsHRwdTBzsHaAZbBd0EzARUBHsD
-cwP9BMkHqgtrEJsUnhZyFowVnxUZF+gYbRozHI8dPxzzF0AThhAPELEQAhGwEC0QeQ5ICgUFbwEG
-AP3+Q/07+xP5avbN8mvuAutz6urrOu087hbwlvIn9IP0bvXJ91b6yPtl/E79t/6m/2v/Dv8oADsC
-dAO0A4AEOAbYBwkJMgp5C8oMyA3aDYwN1Q06DhAOfw0iDYUNDw7eDV0NRg1NDYgMzQo6CTAIowZb
-BDgCWwA6/pP7cfg79bjyWfGZ8ALw9+9w8MXwzfD38JHxXvI18zX0FvWo9Uv2Dvfz90D57PqZ/Pn9
-Kf9PACEBnAGJAh4EawX4BT0GhwbABsoG0wYlB6AHJQjBCGAJ7glQCpMKNwtADAENMQ3GDAIMagvA
-CnwJ4AeABkYF1gNnAjYBDQCz/jr9rvtE+lj5j/if9wD31PZW9iz1MPTS87Tzt/Po80n0IfVx9oT3
-LvgA+Rf6EfvN+4X8Y/0w/nL+g/4Y/+z/hADvAG0BJwIVAx8E6QROBdIFvQasB0cI3QiQCc4Jxgk1
-CgkLCwwcDfsNeA4rDkMNlAxVDDMM6AslC30J1QaJAyMAcf2I++j5tPia9xH2XPS58lLxefBB8Fnw
-e/C68FPxCPJO8jPyPfKo8j7zFPSW9bH3gPmM+n77m/yS/ZT+9f9yAaACaQPOA8gDogNyAwwD1gIo
-A5QDigMjA98ClQLrATsBugAdABv/vv1u/Hb7tvqp+RL4YPYR9Uv0tPOy8nfx7/D78M7whPB78Jnw
-rPDw8JvxePJ183f0UfVe9r/3C/lC+m/7Z/xY/Yb+x//GAGEBkwFaAe8ArQCGAEIA4f9O/4/+x/0i
-/Y387PuB+yv7ivqp+bf42vdR9yP3GfcF93v2mfWP9az2nvfN9/b32/hn+r37OPxJ/NH8fv1g/an8
-Zfw//Xn+lf6L/aH8m/y//O77Dfv8+1r+HwC+AJYBfgNbBe4F0QWnBu8IJQtwCxAKzghRCMwH2QZI
-BuoGSwhjCcwJlwkpCccJagylEHEVehlmGzYbkRqEGlga0BkwGvAbNB3TGx8YZxQZEq8Qew/PDr8O
-jg66DE0ILwP3/yD+Afyd+Yr32fX18xPxwu3r627s8u0k74nwiPII9FD0UfRZ9Vz3QPlC+hr7vfxd
-/ub+4P6r/64B7AOLBQ0HSAmiCxQNsQ0eDuAOsw+nD9kOZw6SDo8ODQ60Df4Nrw4YD/8OFA9gD+IO
-YA2dCwYKWggiBnwDDAER/+j80/mM9in0evIw8UTwxu/T7/Pvr+9o74jv0+8o8Obw6vGq8ijzr/NI
-9Cr1tfa/+Lr6efxC/uT/CwEYAk8DagRXBRIGjgb8BlEHpAc4CPQIqwlRCvAKpQtrDB4N6A3VDoUP
-vw91D8IO9Q0XDQEMpgobCXoHqAWfA6wBGADh/pr9FvzG+o/5PPgy9yH2A/W49N70dvTU85fzqvO5
-86bzx/N/9IP1P/a49l73Jfi4+B35z/kB+zb8Nf0l/vL+mf9XABcBuwF6AmQDNgS2BPMEPgXMBUAG
-eAbPBjIHVwdUB00HRgdiB3sHKQeMBgsG5wXhBq4JVw2ID80OEgySCc0IVAknCo0LDw1lDC8IvAEk
-/L75GfoA+5z7TPwj/Pj5SPbr8mHxIPH88FDx1fJm9Bb0v/Ho7gHtWuwH7WjvQfNR9735x/mn+NL3
-xveV+Ib6cP1XAFYC8QJoAqIBKAFMASoChgM2BcMGngfIB3gHyQb5BSsF5QMCAjwA6/7g/ff85vuD
-+uH4Lvez9aX09vOJ8yPzW/Ki8YzxQvEw8BTvae727evtq+7975DxC/MY9N/0mfU89sr2aveT+GP6
-JfwV/RP96Pwt/Vb9Bv3x/HX9V/5z/1wArwB9ALT/S/7Y/D78qfxe/cT9zP1x/Wb8xfqJ+YD5vvqj
-/O79+/2p/eL9Hf6c/dH8dvyW/ML8xvys/Ej8aPuG+o76xvsP/S39ufzC/Nb8Dvy2+lP6o/vg/Gr8
-i/vM+738lP0q/uz+tAA6A5UEQgTxA80EOwYFB0UHOwhjCocMRA1kDQoPIBPhGMwemyObJusnTihQ
-KAoo2yeAKI8p7igAJeUeRBldFb0SvRBVD54Obw3pCRcEfP79+gz5VvdR9Svz1fBe7cfovuTV4l/j
-LuX+5j7pJ+xG7jfvU/B08lf1sves+KH5b/uK/DD88ftD/a3/+AHFA6AFYQjwCxUPJxEGE5EV1Be6
-GLwYwhjOGE0YHRfXFSQV2RQ/FDwTVhKfEVgQGA6eC7kJ6Qc5BecBA/+v/Nn5FPZI8lbvOe2W64Xq
-a+oY67nr8OsN7CrsXew47dnuhPDJ8ZPyofJZ8tDyRvQJ9rf3Xfn8+pz8Ff6O/5UBLASABgkIXwnx
-CkwMKA36DToPoBCgES0SihLbEhYTSxOzE1IU0RSzFJQTzhE6ELAOhwwNCpcHDwWMAhcA5f0X/FT6
-Xfhc9r30ovOm8orx3fAN8U/x0PDp71fvQu9V743vK/D78KTxpPJg9NT1lfaC96746flG+2v8Wv0x
-/rT+Pv87AEYBJAIkA0kEWQVnBmwHSggZCcEJgwp0C+QLqgtBC+YKjAodCn4JpAiOB1QGIwUHBPYC
-1wGPADn/vP3++2z6fvnK+Yb7Vv3a/ZH90P0n/wIBxAKtBFoHawqaC4cJZgblBDIFHgaEBh4GZAVi
-BGcCSP9m/Of6HPpv+R755vgL+D322fOy8UfwaO8c7wPwFPK+88nz6/JP8lLy0vLm8+z1c/h1+rj7
-Yfx6/Gz8m/wR/eT9AP8PACABAQIrAvgBUAJPAwMEIQQmBAYEuANaA58CmwG6AL3/TP6c/PX6aPnc
-92D2BvW48zXyg/AV7x3uQO0J7Jzq0ukm6tjqI+uD63rsme2c7trvZPEj8yL1K/cj+fP6RPwU/eT9
-Fv97AOABHgPYA/UD3AP7AzEERQRsBJEEUgRnAw0CBwGBAOH/vP5V/Qr8x/qF+bH4jPiF+Bz4nveI
-97b3u/ei96r39veD+B/5zfmd+g/7dPoL+QP4wve19/T3afkp/K3+7/5J/bn8af51AFMB8AEMBH0G
-BgbUAvAAaAIBBZ0GGQgsC0oPnRGhEUcToRljIrsoLiuULMcunC8CLUkp6ij6KwYt9SgqI0YffRxl
-GGsTrBDLEEQQGAyLBU4ARv3I+cb0yvCj7/3u4usp5/rjgePl49bjp+Sk55Pr1u347VnucfDh8tTz
-9vOE9Xz4bfqA+r369Px+AGsDcQUqCPgLuw/1EvMVDBnYG3Ydzh3NHWYeDR+aHoQd9RzEHL8btxnw
-FwkXMBawFG0Sdg/lC6cHJQNX/038Nfm39U/yYu+d7MLpk+fb5ofnx+ix6erp2ekP6ljqzuov7APu
-LO9y733vGPAe8R3ykfPv9av44fpd/Kv9Sv9CAQADhASeBvcInwquC8MMKA7qD6MR7BJMFCsWxhdy
-GIgYjBhwGO4XDBevFboTixEdDzgMjQmpB50F3gJAAED+afyI+sf49vZL9Sv0KPPP8XLwju8P73Xu
-xO1Q7RrtHO1O7fntRe+v8Ozx8PK582D0D/XT9Xv2Fff59xv5/vmf+r77af37/ocATwIVBNcFugeB
-CfkKMQw6DR8OwA6qDvMNUA3XDOsLiQp0CcgI2AeABj0FFAS6AkkB2/9y/hr9nvsQ+rr4ovfT9q72
-/fco+1D/xAJKBCEEzgOLBHQG1QjeCicMJQwfCoYG+wKeAH//Qf+b/yAAQgCq/xb+5vvW+Sr4LveD
-9wr5Ivqg+eD3QPU98vnvOu9N8NbyZfX39qH3evfA9iz2RPYR95r4n/pH/OD8XPxa+4D6Lfrk+sD8
-Ef9EAQgDDgSZBO8E/gTFBD4EjQPgAiwCAgEy/zL9UvuL+d/3YvY/9XP02fMa8xfyOfFu8FPvK+5p
-7d/sI+xf6wrrLeuq64Tsl+2V7m/vx/CU8urzBPWu9s/40/oh/OH8c/2K/T39Tf0s/nr/mQBvARUC
-ZgJkAkIC+wGSAVABOQHgAD8Awf8Z/6/9KPyk+xX8kfyB/E/8zPyX/UH9jvvR+RX5BfmN+IP38fZT
-90X3qvUR9Gv09PZF+i78QfwW/IX8qfxg/NH83/2//l7/rf+t/6L/vv8QADcBSQOzBH0FTgfwCTMM
-pQ2iDlUQQBRqGq8gcSXZKD8rbizgLPEtgy+hMK4xgTK6MUAuUigtItId2RrYF4QUWhEvDtoJowNU
-/Rb5k/Zz9DzyI/Ax7svrV+id5KPiL+PY5FLmw+eY6X7rJ+2W7rjvKPFF8zn1zPbe+Ej7mfz7/Bn+
-WQAPA4EF3gdSC7wPWBN4FUUXzBn5HKQfFiH9IasikyK3IY8gOB/UHVccZRoLGMoVwBMeEX8N9gk/
-B4cEQwEO/iX7GPiT9NPwlu1q69bpU+io5yTojeg96PDnROg86Z3q7+sV7Sfu8+5078/vRPAa8UHy
-pvMs9Zb2yPf6+LD65vxn/1wCXwXMB9YJ8gsHDq4PFRHOEocU0BXnFsMXahgLGXIZixlhGaYYNhd9
-FZoTchEwD9QMGQrSBmIDagDT/Ur76/ih9lz0ffJB8ULwSe++7nDuA+6u7VLtwuxI7Ozrj+t069fr
-gOwv7QjuAe/E73LwWvGK8vLzbvUA97D4VfrV+0398v70ABYDEAXsBl4Iigk2Cw4NLw63DgUPFA8G
-D/YO2g6KDtQNuQxfC+4JZAiuBvEEQwO6AXcARv+4/fz7qPqN+WP4lvdQ99v3Svos/loBCQPAAxQE
-LAWjB+YJzgoeC44KHQirBKgBe/8W/tX8OPsU+vf5HvpC+pf6dvrI+aD5U/ox+577Lfu0+bL3svUf
-9HPznfNb9GP14PXF9SH2HPfv93H48fhz+dD5BPrw+UT5F/hE93/3ePia+b/69PtT/cL+HQC7AbAD
-OgXABVQFLwS3AjUBW/8M/eD6BPk/9731qPTn81bztPL78a3x0PHe8bDxcfEd8WLwN+8t7s3tBe5v
-7v/u7e9B8cDyBvQj9X32KPgL+rX7nfzQ/MH8k/xo/Lf8Wv2t/bz99v1t/v/+nf9vAHYBUgKIAgQC
-XQEOAb4A2/+D/iH93vsH+5z6Mvrg+SH6q/r5+h/7Q/tr+0b7oPoT+vf53fmB+QX5r/io+JL4BfhL
-9zf3Qvgz+r38g/+gAT4CNgHh/tD8ovzT/Wv/3wBLAWgAMf/3/vf/vgF1BF8IFw1LERUUWxYSGvcf
-SSZgKzgvNzJZNPg08TPTMk8z0TTkNDky9i3KKaMlZyDsGkIXOhWNEiQO6giTA4D+8fna9QjzyfFi
-8HDt7+mU51LmUuXM5Ijlk+ef6TLqt+kT6q7r7Owb7Z/tqe9l8hP0u/Q69mf5BP3a/5UCUgawCowO
-oxG2FFEYEBzUHiwg1yBxIe0hKSJoIsUilSJOIUofbB3pG98Z+hbOE8IQlw2zCSMF4wCi/ez6CPgJ
-9WjyFvCs7YLrRur26frpwuk26b/oluhS6OrnI+jY6AHpy+jy6F/p1umE6n3r9uwc70vxBfOE9C72
-bvg2+xr+CgEFBLoGNQnGC2cOBRGmE+cVZheZGCgajRsTHEcchRw3HDobwxmuFzgV3BKDED8OGwx+
-CaAGNwQBAsX/wf3M+5X5fvcp9i31z/NT8jTxV/CL76LuPe2O6ynqGOlU6A/oQui36EnpxOkI6l3q
-AOv960Ptv+6j8BLzxfWF+Gn7U/76AGMDjAWsB9oJqQsIDScOCw/aD5YQwRBIELoPKA9rDtsNRw1I
-DDsLMQroCKQHjAZRBbYDywEBALz+uf1v/AH7Bfpq+cP4JfjN94T3/PaE9rj20fee+eD77f7ZAmUG
-NQgnCGUHhQfOCDIKCAsdC/YJjQc/BJ4AA/6C/Vb+Kv/T/z4Apv/A/Sr7gPiA9sv18fVR9mv2PPU2
-8lTuJ+t66YPpguv27jbyMvQO9TP1+fSr9Mz07PXv9zb6JPwO/Zv8Uft2+gP71/yX/9MCuAWdB3sI
-nQgxCFEHGAa4BDoDYwFg/4f9ifsD+Wb2RfTi8kXyGPL78ajxBPEw8CrvJe5Q7YTsxusn66XqWepp
-6t7qyesx7efuzfDU8tP01/YF+Qv7wfxM/jn/UP9L/2//if+4//7/ngD/AZMDrARFBUQFuwSMBAIF
-IQWuBEQEiQP7AUwAGP/l/Vv8E/uS+jn6Z/mm+I/47fj4+Ov3QvZG9Xb1gfZh91P38fa79on20/ZK
-+JT6vfx9/gAAEAFxATQBagCu////7QDfAXYDDgXjBMIC5ACGAVoEzwcbC0YORRHxEyEWhhgdHUMk
-0SsnMZUz/TQaNro1GDQ2M/wz+TQ1NLcwWivqJcggcBuLFnITEBKDEPUMhAcBAlz9VPlc9vX0VvQZ
-82Pw0OzI6Tro5+fU5zTop+lW6yXsBuzE6yDs4exq7eDtH+9Q8YPzCPVk9n34RPtM/nYBPQUjCjgP
-VRPBFiEaKx0gHyAgECE7IgojPSPSIqAhBCBCHjgcERoaGEMWMhSDEfYN4gnSBeMBWf6T+3r5cPf6
-9G3yPPB37jntzuwZ7Yjtmu3/7AXsKutk6o7p3eiM6Fro5uc355rmO+Z65s3n3Okw7LPuIvFj8+z1
-B/lG/FH/cgLCBcUINAs+DU0PrhEYFAcWJxeqF4gYuBnzGV0ZDRmxGJEX/RU+FFQSNhC4DVQLmglA
-CMMGOQXAAw8CQgDW/p39B/xT+vP4aveT9Q30vfIA8eju2uzv6oHpo+ja5xbnu+bt5lvn0ec56J3o
-mOmE6/ntXfBj8k70gfa6+Nn6Hf2M/wgCVwR0BnwIOQprC00MHg23DSUOUg76DVgNfQy7C3sLHQtu
-CugJeAkPCdsIowgfCH8HygbUBa0EXQPYAUAAzv5z/eH7KfqR+PP2LfWg833yjvHa8F3wDfBY8Lvx
-MfXQ+wME/gnmC9wKUQnjCQkNzxC9EysV9BNfDzoJeAQBAjcB3QADALb/9gAQApQAavwK92TyjfD1
-8dL0tPas9Vzxt+tO57Ll7ebj6aDtePFY9JP1gvV99JryrfA08BbyufUv+Yf6j/mZ9xb2cfZ1+Sv+
-uAJ5BtUJewy0DZANqwxkC7AJpwfdBbMEuwPTAS3+q/k99sL0TfSu8+DyIfJH8Svwx+5h7STsvOrs
-6F/nEOfL56XoRukF6k3rHu1V79nxT/RN9u73svn6+23+KwDtAA0BqgBFAPQA2gIsBf0GnQdlBx8H
-AQc8B/oHbQioBwYGfQRbA6ECKwI9AXz/qv3H/Ob8IP2r/Jz7PPry+E74HvgS+EP4RvhX97n1cvQS
-9Mv0+/VN9tH1IPas9/r4L/k1+cb5nfpf+9L7Nvxj/Tv/AgBq/5//eAFYA2UEkAXLB5QLghCjFPYX
-JR1lJM0qAC+gMsU2RDpcO/o5njj2OBI5sjbbMtwvlS3sKTQkeR4yG/kZ8RezE9oObAuZCBwEiv6k
-+qr4DPab8QPt9+k06IbmleSl46HkHuYy5oXl8OUA5/Lm3eVn5azm7+ik6t3rde3Y7xPzhfY2+vn+
-wgRFCokORRJLFlcach3mHqAfzSDDIWUhOSAqHzceQx08HB8b7hl9GMoWzRSVEnIQcw5lDEAK1AcL
-BTkCe//t/Nn6Ivks99L07PLP8cDwRO947WHr6eiN5tfki+MW4prgt99+37DfZ+C+4YXjkuWy577p
-5utp7jfxSfSY9+76N/5TAQIEYQadCL4K1gypDgwQaREsE8gUhRX0FaMWPReCF0YXxRZvFvkVMBWK
-FBIUPhMHErwQUQ/CDQsMGQrTB1IF9wKpABP+e/sL+X323fNb8c7uVOx66j/pKug955XmPeZY5rrm
-3+bd5oLnyOgf6l7rmOwQ7rTvIPF48kf0n/bV+Hb6A/zy/d7/aAHKAlYE3wUVBx4IHAnuCZAKdQvF
-DMgNSQ7UDmIPtw/3DyUQHRC7D94Owg21DFcLfwmyBwcGEQTdAQEAZ/5o/Hn6UPlc+Bn3Iva09Rj1
-L/Rx8+Xyt/Jv88z1G/q3/kkBzAFUAq0EFgm5DT0QmxAAEFkOgAvrCGIHmQW2Alv/Af0T/Vz+yv3I
-+oP34vVQ9vT3RPkP+RP3/PNW8Srwq+++7kft2+uC63Dshu0c7onuBu+T74bwW/IG9T737Pee95z3
-1Pgk+6n9EQBoAk8ECgZ2CDgLCg18DScNjwzpCy4LHgp9COYFAwKz/ZP66/hg9031b/MY8kvxJ/EH
-8Sbw8+5E7u3toO2v7d7thu2s7PnrJewt7Vfue+/g8CDy+PJk9PD2i/lT+2b8JP0S/lP/cwC/AbED
-RgWnBc8FuAYDCAgJgwmHCWEJEAlzCLIH7wYLBpAEjAJSAZoBCQIZAQj/OP1q/AX8Vvu9+s766vog
-+pr4jfdd98r2QfXz81v0m/be+En5Vfju94P4HPnT+Yr7lf3+/T78U/q3+oL9SgD9AIoAKQEFAxUF
-WQdUCsANXRFWFR8auCCUKMYuXjGvMb4yrjVlOIA4fzZKNPwxtC7nKrAnaCUkI5wffhv/GIoYvhde
-FEUP5QreBy8FMQLr/t/74PjK9A/w8ewd7F3r8Ogb5tXkGuVe5ank3+PV4+HjeuNK43Lk9OZc6ajq
-zeuz7nPzLfjz+5r/2gNHCAUM8w7OEeIUEBdFF6YWABfxFzUYlheRFvMV/hX/FdwV9xXCFawUNRNA
-EgES3hEUETYPuAyWCvYIPAcnBcoCNwB7/dv6wfg797b1V/Mx8FztP+tV6Y3nNeb75JjjW+LM4Wri
-9uNw5V3mP+e96Njq9uy87nDwRvK888/0U/Zs+Jz6dvzr/W3/LAEgA1QFfgdzCYwLqw2RD6QRzxNL
-FfwVWxbgFqkXJxioF4EWoRXwFO8T2hLaEZYQ2A7QDPkKhwnnB+EF4QPDAWb/If0L+xP5X/ff9VD0
-r/In8eXvyO6t7efsauzo63Hr+Opm6gXq3Om76ejpoOqo67js3O0S7yrwWvHz8jf15PcJ+pT79Pxb
-/jQAOwKlA4kEcgWFBr4HCgkBCpoKQgsYDBwNQQ4fD4MPpA+GDxkPkw4ODloNRQwTCx8K/QhSB5MF
-DASyAlUBpf8G/vn8BfyO+qr4zPZE9Sn0evPy8lzyxfFJ8TfxNfLj9Br5I/4kA/8G/wh0CXEJDwq7
-C8UNag7nDO4J/QXNAYX+SPz0+g77Zfzl/Tv/AQDC/rL7Evk3+FT5r/to/QD9Lvqg9QXx/u247NLs
-Iu7071bxyPFr8W/wyO5r7eXtV/Dr8+v39PrZ+1r7E/vy+03+4wHZBYwJdgziDcINhwx/CvkHjAXV
-A/MCOgKgALr9V/qT9+D1d/Vb9tD37/ic+RH6IfqE+Tn4hfbN9G/z1/Li8lPynfCV7sLshuuc6x7t
-V+8x8UHyLPNZ9MH1ive/+eP7Of0W/sL/IgIEBFsFlAZzBxUI1wiCCZcJtgj2BjgFMgSfA84CYgGD
-/9b9+PzK/Pj8jv2M/o3/fwBwAeABqgH9ABoAi/+C/6X/XP8x/jf87fkQ+NP2Rvbl9jP4Cvkp+QL5
-LPlN+gv8Zv2T/sX/xADzATgDpQRSBkIHnwfvCMsLnQ9RE+YWeRseIXwmHCqxK+grpStXKxcrZyv5
-KxsrLigiJDYgqB2qHAAcJhsPG5Ib4BpKGMoUWhFkDqwLEQmxBiIE5ACN/Dz3iPLI70nu0uzQ6/nr
-Quwk6/Pofudm54HnBueD5o3mF+cw6MXpc+tm7dfvSfK+9Af43vsv/3QB7wKoBIsGKgd/BuMFBAad
-BmoHYAh7CfAKkAz0DUoPLxHoE2MWaRdqFx4XPBbDFHATYBIZEVwP7wwKCpQHswXXAx0C9wA5AEH/
-5/1I/DX67Pfu9U/08PKZ8R3whu7/7OnrYes061Xrh+uV67zr6+u1633r4etU7FPsc+wI7cLtse4x
-8Dryr/Rj9wr6nvwe/5EBLgTgBlcJaQv/DBEOeQ6IDhQPKRAPEYkRAhKzEn8TUBQPFY4VvRWxFX0V
-GRVRFPES/BC2DqwMEgtrCW4HYwWHA80BAwAd/kb8bvp++LX2I/WQ8/fxbfDW7ivtmutn6pHp4uiI
-6HroiujA6APpm+li6s7qT+s97Gbtr+7p7+3w6PEA80T01/Wj94D5cPuB/Y//ZQFFA0kFIAfaCLYK
-iQzzDfkOtA8JEDcQuBBNEZARfRH9EDgQmA8cD2wOZw1IDFELkAoPCpAJRwixBZ0CUgBP/zn/GP/G
-/Rr7LPgB9tT0lvQf9ZD2Ufn0/NH/LABF/rD7uPm/+Rz8pP75/rv8Lvkb9nD07/Nn9Dr2XPkz/UEB
-VASIBM8BpP6P/T//swL6Be4GuwSGAAf8gfj79qP3nvkS/EH+pP/i/4D+8/u++fL40/k3/CH/xAAd
-ALP99vpD+UL5A/vT/YYAUwLqAkYCmwBP/uD7Fvqp+X/6wPtn/M/72Ple9xn2q/aC+MT6Z/z0/Mb8
-PfwU+yz5Hfev9Vb14/Wx9u72Qfb09J/zDPOQ8930hvYh+Fv5FfpY+jn62/ls+TL5VfkE+mn7r/wT
-/QD94PzO/Ov8bf1D/vz+lv8AANn/Lv94/j3++v6xAJQCyAMIBL4DtwNKBAUF0ARBA2wBeABDAIT/
-Wv2Z+ub44/gk+iT8t/3c/Vj9gv3i/gcB4QLcAu0Asv8bAO3/w/0I+4D5jvkW+2z94f7L/jL+Bf62
-/rEArwMeBu0GIwfvB08J8wpeDA0O8BH4F3cd5CCwIkwjBCPIIhIjRCMHI3Yi7yDQHTAaYRcWFVcT
-PRPcFNEWwheNF7YWyBUGFecT8RFpD68MqgmoBb8A4/tQ93PzJfEF8Fvv0+787VLtpu2H7uXuje4Z
-7sjtru3Z7fTt9O097hXvDfC68Njxw/O69bD38vkD/Gj9Sf7c/iL/uf/2AAUC0gI0BB4G8geiCYgL
-wA0UEGkSXhSCFfYV1hUWFQIU8xKnEaYPWw1nC84J0Ag7CE8HPAZrBaUE6QNeA7oC9AH9AIz/EP7a
-/Hb7kPlX91b17vMJ8xDy3vDs7x7vKO5u7WDtru3H7aftzu2Q7rvvGvF28sHzZvVb9yP5p/of/KD9
-EP9bAI8BzQLcAzEEBQQ4BAoF5QW2BuIHKglxCtcLEw0FDuEO+Q84ERMSkxL3Ev4SnhIDEvoQgQ/8
-DXIMowrpCMYHtwYeBY8DaQIdAXv/Gv4G/a37LPru+MP3W/bV9HnzbvKq8SHxxPBV8LXvFe+c7jju
-ve0N7WXsJ+xn7Pfsk+0s7u3uyu/A8DDyDfTK9Z33sfl0+/78rP5SALEBtQKDA0MEDQXRBXMGBgek
-B0II/AjiCasKXQszDBUNtw3vDQMOAw6nDfMMaAwZDEYLEQoXCSsIJQcOBrAEPwMcAvYAyP/V/sr9
-lfzE+2f7o/tS/okEVwoCC1wHsAKv/6sAQQXMCMYG3P9p+BX0MPNu82/yMfBQ7xXyy/cJ/ev9avn8
-89DySPZt/P4B8QLE/kT5r/WM897xn/Ek84r1ofjo+xL9wfoB9+P0Kfa3+jcA7wPpBM4DkgFO/53+
-JACHAp0ErAZWCJQIagchBSwCmv+z/Wf8rfyD/v3+Yfy4+Ar24/Sf9Qf4rvq8+/v69/lc+WL4ffYA
-9Nbx8PBV8cDxrvBE7vnrxuoX683sMe+E8SnzMvRW9aT2TPcf92r3sPjW+X768foH+9T6Hvtu/Pr9
-tP4J/73/twD8AT8DOgO3ASQAj/8vAIgBlwLgAjgCQQGtAXMDRASFAwQDWgOmA58DWgMWAmH/efzj
-+sX6RPs5++T5h/jZ+AX6r/oV+5b7Gvxn/cT/eQFNARMAyP4t/mb/nAGBAjEB9P5t/cb8b/1R/xMB
-0AI/BbQHUAknC2QOfBJaFxEdvyGjI6wj+yLHIdYgqSCDIGkf8R1tHDAarxdaFbwTmxMgFbMXNhmy
-GHsXGxY+FEMS1xCXD3oNkwpuBxcEfwDE/Hr5k/f99oj2VPWk813yU/FE8MzvtO+g79DvIvBW8Fvw
-TPCG8Fbx3PJm9P304vQH9fL1TPdt+DP5WPns+NT4Q/kX+pT7cv1c/3ABhQN/BeEHgAqZDGkO3Q8l
-EJQP8w5YDuUNng0xDcoMSwwSC8AJjQkZCocKLgsoDHAMywsVC7UKYArLCQsJEAh3BmwESQJRANb+
-sP1//Fb7cPqC+Sn4t/a/9Rj1gPRX9IL0cPRY9JX05vQh9ZH1XvY69+T3gvgn+ZD5mPlr+WH5m/n5
-+Uf6lPop+7v7BfzJ/JP+oABsAj0EDgalBxcJYwphCxYMiQzLDOQMnAwkDAYMBQzACzcLigrnCUoJ
-Gwm6CWYKZArhCS8JZQh1B2IGXQVqBG0DYAIbAZ7/A/5R/NH6dfkO+O72RfaY9YD0SPMo8jDxpPBM
-8Nfveu9477PvB/Cm8EzxjvH28bLyNfOC86LznvPG8wr0R/Ss9FT1PPZm96n46/k8+8X8nP5rAMsB
-2wLbA7MERQWwBTkG7QZsB40HqAfwB1IIkAh9CDcI4wewB8EH4wfYB30H1wYHBiYFkgRdBBUEZwOx
-AqkC7AKNAvUBjwLNBUALEA8SDiAJoQLp/Vz+cgMWCCsHMwBg9+7xrfEf9EH28/Yf98/4cfyX/03/
-/vqY9STz7vSs+aP+n/93+qny5+w66nvqxO1e8gv2a/i5+U356/bj81ny9/Pb+Mz+hAKvAuX/Yvtt
-9932ePq//3QDbQRdA3EBxf/0/r3+kv57/rD+gf80ARcCAQAJ/Ab5bvhP+tr9+gCMAZb/jvx5+R73
-KvZH9k729fXU9d31RvXE8wryOvEF8jb0IffA+cL63fkE+If2ZfY199b3+ver97z2S/U49Fj0i/Vs
-9475JPsV/BH9KP4Y/wkA+QBQAdUAPAD7//3/dwAzAU0BNgBn/hj9+/wU/sX/5QC1AFz/Ov6G/tX/
-SwEZAiMCHQLYAacBMALuAkYDnwJEAR4Azf+dALEBTQIlApkBhAFJAbgA/ACTArEEQAZ7BxwJvApU
-CzMLqAv0DLYOSRHHFOAXhhkBGrEZWhmwGWMavhoeGjwZDxkbGcoYXRcZFfQTbRTVFbAXRxnbGXUY
-iRUCE7wRVBEOEe0Pdw1FCvIGEASnAYz/S/6d/c38APxU+7j6zPlg+P72PPZa9nb2mPWS9N7zw/Kx
-8ajxXvLs8gLz6PJB82r03/Ua99f34ffj96L41vke+z38Bf2M/R7+T/9MAY0DWgViBvcGdQfoB1YI
-ywhECZ8J1gkZCoYKSwtLDOIM3Ay6DAoN1A2DDsYOwg43Dg0N5QshC1QK/QgsB04FyQPnAoQCKgKz
-ASIBhAAcANz/f/+z/oX9j/zo+xf7KPo7+Tf4Ovda9rf1h/WZ9Y/1VPUf9QH1yPTO9J71pPYe92f3
-2vdd+Dv5svog/Af9u/2W/q//5AD3Aa8C7ALlAgcDlwNfBOUEBAUaBVUFvQVoBgAHkgdoCDIJuQkb
-CisKywloCSAJkwi7BxoHkgajBXcEXwNZAngB6gB8ABAAtf8Z/y7+Tv2B/LX77voM+jr5ovgc+GD3
-VfZU9bT0VPTz84nzV/NT8x3zjPIE8tzx5/EC8kryqfL78knzb/Nv847zEfQH9SH2Dfem9xP4oPg/
-+cP5IvqT+mP7aPxO/RT+zv5e/8f/aABrAYYCegMWBE8EegToBNsFmge8CScLTgt/CukI9wYvBj8H
-mQjVCL8HoAWLAz4CWAEOAc8B6AKkAxAECgRNA40CYAIeAogBJwHyADAAvP4B/fv6xvjz9u71xfVS
-9kP31veM95/2vfXR9en22Pfr97D3lPdP9772KvbV9an1gfVn9ZL1Nvb39k73NPfx9gD3sPeF+C75
-DPo3+1L8DP1K/Sj9LP3X/cT+H/8R/wf/ov7u/Yn9pP3K/a39wP0y/hv+QP3J/BX9Df0//Mb7R/wc
-/bP91P1f/a78LPyK+536Ofp2+gj6nvhS9932DPcj98D2nfaL9yr5ffoC+w/7iPts/OL8yPyS/EL8
-afuA+oT68foV+0v7o/vp+2z8g/2x/kD/Zv9u/x//tf6n/qj+dP4o/mf9WvwM/In8M/3M/Sn+Xv6r
-/hj/PP9j/24AuAGRAlEDrQNJA/QCmwMrBOsDYgQoBScFdgVNBr0GtwbIBgIHdAc+CHAI1Af8B4QJ
-XguXDH0Neg78DsAP/hH5FAkYjhoVG9wZ0BizGMYYwBiEGJAXZBZ5FVsUoRPPE/ETwxPOEz0U/BSZ
-FToVwBMcEuMQtg9YDsoM1gp1CMEFNQOYAbQAuv9q/iT9gvxR/O37Tvt4+ob5Dvn3+I/4Lvge+F33
-3vXh9KT0svQE9Wz1gPU79RH1V/UP9ub2mvdD+MP4HPm4+aT6iftL/CD96P11/g7/1f+PABEBqwF/
-AgQDUwPmA64EoQW0BsMH2QjCCTwKpQpVC9QLxAuoC/gLcgxqDJwLiwq1CVoJbglOCWcIAwftBaoF
-4AXsBawFSgWyBOMDYgNWA0UDsgJ4ASQAL/9l/nz9fvyl++P6GfpD+WH4wPeJ92n3IPfL9rP2F/ed
-98b35Pdf+Nj4Cvk4+XL5ufn9+RD6Q/oP+yb8xPzD/HP8I/xN/Cn9AP44/lj+5f6f/00A6wCMATkC
-qwICA6kDMAQ5BEEESATwA4MDaAOGA5oDjgNbAwcDigIJArsBdgEXAcEAZADb/07/4P5K/n39v/w2
-/Nf7Yvu8+iX62/nZ+bX5SvkI+QP51/ij+Jf4QPiP9xD3/PYW9/X2b/bM9W71k/Xz9RX2IPYG9nX1
-B/UZ9Tr1YfV99V/1fvUL9pP2BPeZ9z340/hJ+YH5iPm/+TH6lvr1+jL7KvsZ+yv7evvo+0r88fwB
-/gX/1/+KAPsARAHAAW8C+AIyA7sDBAZ+CscOHhDBDoAMuAq5CiANKRDsEFAORAkxBL4BFAJtA1kE
-UwTxA3wEiwZ9CNoH1QQQAtIAiQDiABkBGf/o+X3zZ+4Q7NPsGe+78IXxIPI38rHxVvE98Wzx8PLk
-9Yr4U/kJ+EP1H/KK8PjxpfU6+Qb7A/sB+iX5m/lg+2/9wP4w/7//2gC7AcgBTQHgAPwAQQL1BPMH
-XgmtCMgGogT2Am0CHAPlA2MDmQHP/+b+gP79/YD9DP77/8kBhgLdApoC9ACr/i799vzQ/cL+T/5z
-/Cn6JviT9+743vpa/FH9av16/Fr7FPu/+8/8xv3z/RL94vtI+0n7X/t9+8b7S/we/fn9d/6P/hT+
-+PwS/Ev8r/0r/13/i/6Y/Zj8PfwU/YL+5/+rAKEAeADXAF4BZwFCAXsBTwLHA10FZAZTBiEFOwTQ
-BM0GsQkmDLQMigtLCjwKdgtEDZkOMg9LEIYS0xSKFvcXpxjmF9cWMhd8GDsZYxkIGZQX5BU5FR8V
-BxUoFRkVZBTPExEUgBR1FNITgxIcEQMQkg6FDHsKsgjJBtcEOwP5AeIArv9T/uz82vt2+0L7q/rm
-+S35Z/iT98L20PXJ9NTz3/IT8s/xGvJ/8rDynPIn8sDxF/Lo8n3zt/O289jzS/Sv9Or0WPVE9pr3
-5fjL+Y76hvuJ/JD9p/5s//7/8AAHAsMCPQPWA5kEVAU5BokHAgknCvEKrQtzDAwNTg1eDUkNKw1D
-DVINEA2fDB8MjQsxCzcLMwvaCkQKjAmvCLAHnwasBdYE6wPfAnIB+f9i/0z/j/5o/ZT8yPvx+mX6
-8Plk+dj4Ifg893328vVv9QX10/SP9DD0NPSN9O30lfVb9nj2CPa/9bz1yPXm9Sn2XvaB9tT2PPdg
-92D3kvdC+Hj5lfpJ++b7ivwW/bD9bP7y/lD/vv8vAKYAJAHSAZ8CTwPjAx0E4QOXAzIDhALfAWsB
-/gB2AOP/eP91/7D/2/8HACMAEAAdAHYAsgCAAPr/9f7D/Qr9lvwb/Mn7h/vv+gb6Mvmf+G74y/hi
-+aX5Yvno+Jb4YvgG+HX3BPfa9rb2qPbv9lD3a/dX92j30fdS+J749/hV+Uf5BfnX+Jz4a/hq+Hn4
-bvh/+M348fjl+Bn5v/nK+uH7hPzQ/GD9Of60/gv/4//CADwBugFbAtwCHQMoA78DJgakCosPbBJ+
-ErgQlQ69DekO2RDEEcQQcA2qCPAEvQOFBCcGqAd0CPIILwoMDN0MpAuDCTEIyQeBB+gGJwU8AdT7
-wvZ988Py/vOw9bf2r/YZ9sT1xvW+9b31OvZf9xL5x/om+1n5EfYF8xnyOfTz97v6ofvv+jL5tfe5
-9zf5BfsO/GX8AP1N/lv/Sf/A/tH+6f9oAgcGyQjrCCoHEgUqA/EBIwJqAzUEjQMBApYAAgA5AJUA
-JAFLApsDzQTfBSUG/ASmAmQAUf9f/97/GACA/9L9yfuy+j77AP3U/ur/GgCa//3+wP6z/mT+0/08
-/Zv8P/w8/Ar8nvsL+zL6w/lI+jD7GPyv/ET8MPuM+pD6kPqM+hn7vPvo+//72/tg+0z76/vB/H79
-Zv6c/4QAggCq//X+bv+oAG4BXAHxANUATgFOAn8DpQTyBTEH9Qd7CFIJ9gogDX4ONw6fDaAO5BCw
-EhcTlhIjEuYRpxGlEWYS2hO/FMkTrBGuEJERDRMLFCQUbxOlEm0SjxJbEo8RfhCxD/wOyw1VDPgK
-eAn0B+YGBQa5BHIDAgO7ApwBQQCu/+P/CQBS/9n9t/xm/AD8w/oJ+WD3AvYm9aH0HfT68130lvQw
-9IbzVPPO82n0cPQN9N/z3/PL87bz3/M59L/0Q/WE9cn1Svbq9n339veK+EP52Pkv+mf6b/qH+kX7
-aPxo/Xb+sf8jAaUClwMEBIAEEwU2BfUEGAXbBawGIAczB/MGtAYsB4MI+wn8CosLtguaC3ELUQs3
-C94KTQrMCRUJHQiJB08H9AaLBvgF/ATtA0MD2QJKAsYBjAFMAWYAAv8q/hH+5f1l/cj8+vsn++r6
-3vrQ+Vr4FPhb+K33UvYz9WL0HfR99KX0QfTR887zM/RL9NPzxfOf9Gv1rfXC9QX2VfZV9hr25vXH
-9cT17/Ul9nv2HPfN93P4N/nf+Ub6APsw/DH9yf0M/hj+Sf7L/mD/2/8/AJgA1QD8AE4B2AFiAtUC
-SQPBAyMEXwQ8BL4DdwN9A0UD7gL5AhAD2gLKAgQD+AKRAkYCEQLbAbgBXgHIAEUAwv8h/4f+8P1i
-/QX9wPxx/Df8O/w7/PD7qvuv+6T7Xfse++b6o/p++oT6hfp7+pf6yvr3+i37dPu5+9770vuX+3D7
-kvv9+1r8dvzU/Fv+qgFsBR0HYgbiBFIEqwU0CCQKtwr0CaQHOQSJAT8BJgOHBZ8GCQYBBcUErgUU
-B6wHbgdmB6QHpAdCB0QGcATtAUf/Z/07/ZP+8P9SADYAHwDw/wwA9AAjAscCwAKpAvwCCQOmARv/
-Df2w/LX9IP9tADgBBgHZ/4T+Mf4c/2sAHwHSAPX/IP9y/q393vy2/K/9S/+bAPcAWQAw/9n9rfwu
-/H/8L/26/Z39YvxW+hH5t/kM+7T7IPz5/PD9cf5y/iH+sv1a/SD9Mv2d/eb9ov2//Cv7pPmt+XT7
-ev12/jb+Of1a/Fr8HP0N/tf+Jv/H/gf+ff2J/UH+J/9P/6z+Rf68/m//hf/6/iz+p/3C/Qv+4P11
-/Vr9gf2x/Qn+kv4V/5H//f8UAPb/AAAfAOL/Qf+4/mv+Ov5O/pP+d/4z/m3+Nf83AAEBvQHIAm8D
-GANQAt0BMQLSAtICMgK2AfABhgLOAgEDvAMBBUsGMwc6CBUKIwwjDasMxguuCw0MQgxgDC8MlwsZ
-C7UKVgqqCukLIg1rDdsMJAwDDKEMSw1xDUMNAg1aDEgLnwp0CtEJzQg/CAgIwwc0ByYGUwVEBfoE
-6gPtAp0CjgLJAR0Ayv67/gD/cv5x/eL80/yB/Jj7lfr5+cj5g/mt+Jb32fY39nP17vTZ9Bn1i/XU
-9Rv25vav99j3xPfE95j3MfcE9zv3Z/dy93/3rPcx+Nf4Rfmy+V/6M/sA/Lb8Ov13/bj9Af4q/pL+
-W/8LAGgAWQDQ/4j/HgAcAfwBxQKBAzYE0ATuBJEELgQ3BN8EqgXSBW4FQgVyBaAFrwXkBWkG5Qb9
-BqoGQQYWBjQGVwbsBRwFcATTA0QD7wLYAtMCwwKnAoECVwIxAhcC9gGRAf8A0gAFAfUAhwALAHv/
-yP7v/dz8x/v7+pr6fPp/+p76ofp1+jL6yPlI+QH5CPkp+TD58vhU+H/3y/Y89o/19PQB9cD1Z/ZD
-9rD1p/Uz9p/22vZ49y74Zfi7+IP5L/q2+lf7CPyW/AD9ef3g/f39AP4m/oH+Gv+q/wUAWwCSAL4A
-TQEtAuUCWwPXA3AEFQWSBawFjgV2BY4F4wUrBiMG7AXPBb0FkgWBBZcFrAW2BXkFPQVqBUkFuQRR
-BOADcQNvA3gD4gL2AT8BsgBPAAgAsv9g/wj/gv7w/YD9Hv2t/D38+fvZ+8X7uPup+6H7pPvJ+w78
-WPx+/FP8O/yk/Fn9Zf4eAPsBMQPdA0UEgwTYBHcFNAbfBk0H9AaeBdkDhQIdAn8COAO2A4gDBQMQ
-A9ADtASHBWMGAAczBy4HmgZfBewDUgLNAKT/7P4O/4v/df8L/5f+Hf4J/mX+s/60/q3+1P7M/kv+
-7/35/cn9Bf0//F/8Q/0Y/mf+F/6H/Sb9GP05/Qb9hPw8/Of7/Pov+jP6hPoh+yP8tfzI/Nf8z/zG
-/Nv8zfxt/B78MvwJ/AD7pvnI+Ef4zPdo92v35vdD+C/4XPgL+X75r/n9+R/6Hfpr+rL6fvpP+or6
-8Po9+z/7wvob+tT5BPpy+vD6u/u6/C79F/0v/a/9bv5+/6sAXwFMAcEAUABDAKMAcQFGAl0CYwH7
-/wj/6/6W/6IAiQHGAVMB4wDHAO8AgwFVAvcCEgOVAvMBiQFzAc0BIgINArkBLAHsAHYBLwKEAqkC
-JAPEA98DugPTAy0ElwTABAIFGAZ6BxYIAAjIB+AHlAilCVsKUAr6CdIJkAkXCRwJ0Al0CosKCApa
-CUwJEgpQC2oM4AzLDFgMkwvSCloKFgqgCfcIfQjsBy4HngYKBoMFTAU5BSYF+QS0BHYEHwS8A3cD
-OgPvApICJwKgAaEAWf/H/gf/T/9q/xP/8/26/Cz80ftT+x/7Fvvi+k/6P/lu+I34SPkj+rj6qPoV
-+ov5bfnQ+Wr6w/qm+kz66Plr+ej4ovjT+HD5Pvrb+g/7LvuL+x78svwm/Zn98v3i/aH9x/1g/vb+
-U/+G/7f/DQB9AO8AXAGmAdIBGwJ1ArYCJgOxA/EDbgQ2BXgFgwWxBakFqwUIBncG1QYiBycH2AZk
-BuIFoAXQBTAGoAbXBpcGEwZ4BQQF1gSqBGIE/gObA0MDnALKAUIB7ACRAFcAgACFAOv/cf9t/2H/
-Gf+0/mv+Cf53/QL9Xvxk+9v6F/tm+1L7LPtI+177O/tA+2b7e/uG+2T7DPvl+hb7Avts+u757Pno
-+X75B/nS+Pr4Vfl9+ab5BvpM+m76bPpN+mL6zvpM+0/72Pqe+qb6T/r2+S76YfoP+qr5jfm1+RT6
-jvr++mX78Pul/ED9nf0B/rf+d/+4/6n/uv/w/xYA8v+z/7H/2v/q/wQATwCTANkARgG2AesB4AHW
-ARMC1QJlBGoGPwcWBrgErgR2BRQGzgW2BCEEqQTzBFEE6AOABKAF8gWnBN8CcQKZA/0ESQU2BNUC
-QQJyAu0C+QJxAuoBRQFCAGj/P/+z/x4A6P8z/4D+YP7h/kf/Ev8y/hP9Z/yg/FP9V/06/Pj6jfqy
-+vn6W/uu+9r7svs4+/n6Yvs9/MT8bfzH+837Xfx5/O372Puq/Cf9ufw4/FT89fx//TT9R/zL+zT8
-8/ws/bb8QPx+/FP96/0Z/nD+Gv+Z/5j/Mf9Z/mv9Pv1u/Sb92/z0/Cv9eP2R/T/9NP3M/W7+nv5N
-/tD9yv1T/ur+I//0/ob+Pv6M/hT/Y/+4/w8AAACe/3L/tP8JAPb/j/82/xH/U//w/zcABwAJAEgA
-WABiANAAiQEpAlYCugGqAAUAFQCAAKEACAAw/+X+OP99/2D/Iv/t/tT+9f5L/3r/if/T//f/oP9K
-/yz/Dv8V/0f/WP9U/13/ef+7/xcAWwBxAFcAMwBGAGcAcwCHAJoAigBhAKMAWAGIATUBXgEDApcC
-1gKXAk0CXAJ6ArECLgOMA4oDggO/A+UDtgO1AxEEgQQOBbUFKwZ2BrMG3gYsB3EHaQeTB/0H/wek
-B6gHKgigCOgIZwkZCncKZwoWCqQJbgltCWEJXAlXCRQJoghqCH4IkQiQCHkIUggtCPUHxAetB2wH
-0AYrBs0FcAUEBeUE4QSNBPIDiAN0A1UDOgNLAzsD4AJXAvMBvgFLAa4ANwCw/wT/lP5s/kT+Jv4E
-/sL9lf1x/Rf9zfz2/Fr9if1+/Ur9tfzr+337j/uw+4T7Q/sJ+6X6Qvok+lb6zPpK+5D7zfsL/Cj8
-WPyC/E/8/fv4+x388vtz+xD73Pqw+s/6Y/sS/KP8/fwA/R79rf0d/hb+Ef5o/tb+Lf9h/yT/wv7u
-/oz/BgAuACUAJQBxANIA3gCzALoACwFRAZUB0wG8AacBtwGgAagB6gH4AbwBegFrAUUB3wCxAMsA
-9gBGAX8BQQHqAPQAIAEGAZ8APAAXAAEAwP9y/zn/6v6M/lv+T/4n/tP9fv0r/dz8vvzV/Pn8If05
-/QH9nPxE/O/7w/uv+4j7lPvF+6T7Qvvd+mf6Kvpl+tv6SvuK+7D75PsM/NT7Ofv0+lb7gPsn++z6
-7fri+r36wvoL+0z7dfum+8L7w/vy+1b8dvwq/N77+ftW/HP8U/xE/D38Ifw4/O38/f2D/kH+7f0G
-/pz+fP8GAOn/pv/T/1UAvwDCAIoAswBQAaUBPwG1AMEAFgE+AW4BlwFhAS8BdgHVAf8BHAI7Am0C
-qALwAlUDPQNqAq8BogHzAfIBhwE9ARABxgC1AAEBUwF6AXwBPQHwAOgA5wDaAPwA7AB9ABcA1P+d
-/7L/GwAfAKn/j//c/wAA/v89ANoAUgFQASoB/ACUABQAuv+M/17/Kv8u/1z/fv+o//7/RAAwAO7/
-AABVAIIAjABGAKf/Sf8q/wH/8/7H/nL+ev7T/ir/p/8dABcAyP+I/1D/Hv8R/1X//P+IAHAA2P86
-/wL/Mv9s/43/gf9H/x7/Gv8p/z7/Rf81/yT/Hv8T/zL/jP/M//j/TwCsAJwAOwAOACoAfQAAAXEB
-ZQEnAYYBSwKRAmMCKQLdAcsBTgLIAr0CsQKwAlQC/wH/AdgBjAFeASkBEAEOAcwAcQBYAF8AOAD4
-/+H/4P+3/3r/Xv9N/yn/Pv+X/wQAZQBZAPL/v//8/1MAawAuANP/nP+f/8L/xP+a/4b/tf8WAKgA
-DQHYALEABQFCAWcBzQE4Al0CWwI3AvoB4gHgAdkBAQJ7AuwCAgP7Ag4DDgPjAgkDZwNPA/4CCwNY
-A3kDhAPMAyYEJATYA7IDvwPsAycEOAQMBL4DngPeAyEEAQSvA3UDVwN9AwEEhwTRBO4ECAU6BUgF
-7QRpBCoEPgR2BKUEyQToBPkEzgQ8BMED3AMmBHYE2gTvBL8EhQRDBPADawPCAkkCAQJ7AQQBBQED
-AYIAAQBMAPgAGQHSAMUA3gDGAJoASQCU/+v++f50/2z/rv75/bL9Wf3v/OT8/fzQ/Jr86fx+/az9
-d/1O/Vn9fP2w/df93v3q/a397fxU/Dv8UPxm/GH8LPzq+8v74vsX/D78X/zJ/GT9t/2u/YD9Tf0c
-/eD8mfxq/Hr8ovyj/Jn8qPyo/LX85vzC/FX8VPzK/A79F/04/Sf9u/xH/Cj8kfwF/ef8hPxx/Jr8
-p/za/Gr97v0a/gD+1f2u/Zz9uv3E/aH9qP2//b79zv3E/ZH9av1a/VL9Wf2k/f79Ff4m/jf+KP5I
-/pD+jv5O/i/+LP4G/tf9xP2H/TT9L/00/RH9Hf19/cn9vv3D/bv9i/3c/Wb+af4Z/sb9ev2C/cL9
-sf2U/af9nP2z/Rn+Wv5N/jr+Pf5g/sH+J/9U/1T/Y/+H/3v/L/8U/1r/m//N/w8AKwAxADwANQAk
-ACYAVACiAB4BlAGMAQoBdABKAOEA1wFlAjkCzwGtAagBjQGJAbEB2gHJAUoBrwCOANMAGQE+ATYB
-DwEaAVsBiwGmAaQBqAHTAegB6gE1AnUCQgIMAt4BuQH3AUICLQLyAccBqQGdAZkB2gFJAiMCjwFj
-Aa4BIAJ5Al4C5QF7AUwBUQG1AXUC8wLMAkwCzQFxAVoBhAGeAYYBhAGgAVABcwD6/14A1wDcAJYA
-cQDEAC8BPgEDAcIA4QBPAXoBEQFsAFwA4wAIAaQAPgAQACcASwBFABAAw/+t/xUAnQCdAEsANAA4
-ADEAVAB7AFUAHQA6AIUAnwBtADAAOgB8AM4A5QCaAF0AWwBGAA8A3P+7/5j/f/+N/5f/jv+g////
-YABnADYA4f98/1r/dv93/1f/SP80/wD/w/6g/s7+IP9S/6r/CwDn/37/Uf8c/6j+Q/4V/hb+if4/
-/63/tv+A/0n/Df+w/nP+n/7w/uz+5f4z/27/Jv+0/qv+2/7Q/sj+IP9X/wr/wv7N/sz+xP4I/27/
-yP8WAG0AygDoAMQAhABLACYA+v/G/2T/C/8w/1j/E//s/if/a/+n/w8AlgD9AEcBoAHVAZABLgHj
-AFAA3/84ALUAfwAwAGQAtAD+AH0B7AH/AeMB6AEZAiwC3AFvAWYBmgG/AcYBywHYAeYBJgJxApAC
-kgJGAtMBrAHDAcABnQGnAccBuAGgAZgBgAFkAYIBvwHfARACSwJSAjICDgLrAdYBogE4ARUBTQGL
-Aa8BoQFeAe4AZAD6/83/3v9OANoA9wDwADEBOwH6AOQA0gDBAMwAugCFADAAwv+S/53/Xv/V/pX+
-yv4P/yv/S/9n/03/Tv+4/zQAZABKACkAIQAEAOz/FQBiAHYAYABQACMAwf93/6j/2f+B/yP/Lv9D
-/yj/D/8H//P+z/7D/vX+Pv9h/33/q/+t/2P/8f6X/nj+ef54/kn+6f2e/Vr9Hv06/Wj9Ov0S/R79
-/fz7/G792v3//Qb+I/50/sL+wP6N/nP+T/4c/g3+Pv6P/oT+Pf55/hr/eP+i/83/2//Q/9b/9/8j
-ACIA5P+h/3v/Wf83/z7/Q/9F/1T/NP86/3L/Zf8//zb/D/+5/mn+N/4P/un9w/2e/ZP91v08/m7+
-jP6b/pL+BP++//D/7f8oADEA6P+8/6j/jv+h/7H/2/9NAIYAbQBuAKUABQFwAbkB3AHtARQCUQJg
-AjQCAwLYAZEBRQEvATEBOwF4AbABuAHQAQACQgKBAlkCFwIOAuUBywHcAbsBZAEmAR0BDgHdALgA
-wgD1AFMB8gGjAtoCmAJcAj8CKwI0Aj4CFgLXAa8BdQEWAbsAawBrAN8ARAE7AQYBAgEwAX8BwAGW
-ARMBswCWAIcAlgCyAGMA8P8FAIMA3QDuAN0A0ADZAOoA7ADXALoApgB7AEQAEgDE/5P/jP9n/13/
-ev+A/57/3//j/6n/gP+C/57/yP8JAAoAn/9k/3b/g/+2/+j/vP9t/yH/zv6c/of+gf6U/pL+Vv5F
-/p/+KP+p/7j/WP9J/5D/m/+g//n/RAAmAOn/7P/I/zP/7f4q/0b/RP9H/x//0/6r/rL+o/5l/ir+
-If41/kT+Xf5k/jX+//3Y/cL92f3w/c39s/3L/bX9Z/0d/QX9HP0A/aT8evyj/K78afxR/H78avwv
-/Cz8HvzS+8r7Ifw3/DT8cfyY/Mv8Uv20/bT9kv1f/VP9i/2S/Sj9tPx3/ET8Qfym/PX8tvya/Cr9
-uP3N/cn9AP5D/lv+Mf7a/bf9+v1d/oT+gv6w/hH/cf++//b/GQBOAK8AGAFEATwBKQH4AOUAHwFO
-AV0BagF+AYYBUwEKAekAygDBAAUBKgHuAPcAdAG2Ab8B9AEIAvcBEAIfAu4BrgFrAVIBmAHFAbkB
-AAJ1ApsCnwLcAkUDbgNFAzwDcAODA2oDNAPQAnsCXAJmAmwCQQIHAgkCXwLKAhgDFgO4AmkCaQJt
-AkMCKQIrAgICtQF/AV4BVAFqAXsBcgF8AaUBrgG0AekBKQJLAg4CoQF2AVkBFgELAVYBcAFIATIB
-IwEvAWsBjAF4AVkBQwFaAbwB/QHoAfgBJAIcAu8BrgFbAfUAxAAUAZ4BBgJRAnEChwK/AvoCSAOn
-A7oDdANUA4gDnwN0A0AD/QJvAtMBugH+ASICKwI7AlICfgKWAogCfgKKAsICyQJEArMBgwF9AWYB
-PQE0AXQBkAEdAbYAqACAAD4ABQDM/5v/W//7/r7+i/40/hn+U/5//p7+8/4y//n+qP6z/tD+ov54
-/oz+gv5U/nP+xf7v/gD/Cv/3/rb+lv7D/gX/Lf8W/+r+4f7O/o7+RP4U/u397/0h/jz+Jv4L/iH+
-Qf5E/iH+vv1s/YD9xv33/Qz+D/4q/n/+2v7x/tD+o/6Y/uD+S/+k//z/KgAqAGQAsACMABMAt/+/
-/+3/yP9N/97+vf7D/sb+Ev+h/+//GgCHAAgBIAHiAMUAxQCvAHwAHQC3/2v/Gv+2/lX+G/4P/hX+
-Fv4k/mL+vv4T/1D/bv9f/2L/r//l/8H/e/8l/7H+Qv73/cX9o/2U/Yv9i/1q/SX9QP2O/XH9SP1j
-/W39iv2r/Yb9dv2B/ZD92P0d/gj+x/3G/d79wf2j/dr9Qf5G/v399v0Q/vn9zv3I/Qf+Vv5P/hv+
-RP61/u3+9f4N/y3/Pf8p/+j+pv6T/p3+qf61/rX+u/7f/hL/O/9P/2f/aP9D/z7/cf95/w3/l/6e
-/gH/S/9V/zT/9f7S/iD/uf/q/33///7Z/hv/df90/0z/XP+Q/8T/7f/s/7v/rf/S/wYAbQCiADwA
-v//T/zwATQAaACIAVAB3AJ4AwACjAGoAWQBnAHkAagA4ABUAFwAxABUAy/+z/6z/kP+P/6L/p/+S
-/2b/RP9h/6r/wP+r/7T/vf/k/2AAjQA6AAAA+P8mAG8ASQC1/1f/X/9s/3j/m/+I/yD/3P4h/6T/
-2//K/+z/QwCbAPsAQAFCAf4AqwCXALYA7gAfARgB+QADAUQBjQGaAZIBzwFKApwCsgLNAuACywKu
-AqMCyAIpA3ADRwMYA1ADgwN1A3UDhAN9A58D8AMEBMQDfANRAzIDDgPXAp8CbQIaAgkCnQIiA0UD
-ngP5A/MDFgR5BIkEJQSmA2IDQwPqAlsCCwIoAkoCTQJBAgcCwwG9AfQBFwL+AfMBBAL2AdUBrwGG
-AZMBwAHWAe8B+QGuAU0BSAEvAbUAbgCIALQAyADdAO8A5AAHAWEBgQFQAQYBqQBKAAwA5f/P/8T/
-yv/8/ywAIwDO/2r/kv8wAHMALwDb/6X/l/+5/9L/qv9V/w3/Iv+M/9j/6/8GACwAXgCiAOQAKAFu
-AcUBNgJpAjYCLAJGAvkBiwFkAY4BwgGPASMBuQBQADMAWQBQAAsA8f8iAGAAoQDUANIAtACfAJUA
-cgBdAIYAoQCvAAEBSwEXAbAAhAB5ADkA4/+q/z7/m/5x/uH+GP/A/nT+gv60/ub+9P7r/tT+j/6b
-/jD/Y//r/p3+s/7N/sf+k/4+/tz9j/2D/XX9S/04/Ub9if3X/f79HP5T/p7+vP6s/tn+Hf8y/0//
-Mv+b/i3+Kf4z/kD+Sv4b/rf9cf19/Zv9cP09/Wn9yP0h/lr+Qf7m/aT9nf27/dn9w/2V/a79y/2Q
-/U79HP3Q/Iz8Ovz9+zr8ivyZ/K38vPyO/Fz8ovz1/Nf8zvwK/Tf9TP14/bD9vv2q/av9v/29/bz9
-3f0K/jX+Tv5A/jT+JP7U/Y/9iv1l/TX9Y/33/YL+iP5R/mP+g/59/pX+vv7a/in/gv9m/xT/3f6l
-/nz+YP4x/hH+CP7s/aX9Vv1X/bj9Bv4j/k3+ZP5r/sj+gP8iACAAcf/N/qP+oP5t/iP+7/3g/ff9
-Jf5V/lv+Sf6n/pD/SAB9AJQA2QAwASYB2QDbABMBCwHbANsA/gD7ALcAcwBMADQAXAC8AAYBGwEb
-ARwB+gDGAM0A5QDcAOgAEAFHAX4BbAEhASUBZgFRAeAAtwAsAZ4BegEsAQkB2QC9AOUACQEVAS0B
-NQEqAR0B+gDmAB8BagGQAc4BLQI7AswBeQHVAXICmAJ0AmcChgK9ArsCiwKHAqcCyQLlAgcDPANo
-A2MDMQMXAxgD9QKtAmECSAJ2AqsCogJUAjkCkQLtAuYCswKfApgCkQJxAiEC0gG5Ab8BqgGEAbkB
-TAKWAmsCGgL7AS8CcgKXAqsCmQJeAlYCnwKrAjcC1AGyAY0BrQEfAlQCIQL/ATACYQJXAjYCFwLw
-AdYBuwF/AVwBdwGwAbsBjgGeAQcCWwJjAikC3gG/AdAB8gHyAbMBcAFHAQkBvQCmALgArACBAGUA
-WgBdAGgAZABOACYAMgCZANQAdwDs/8z/8/8CAOX/n/+P/7//zv+//8D/sv96/1H/Zf+A/4n/dP8s
-//H+8f4D/+7+nf5T/mD+lP6i/o7+Y/4//kj+Zf6b/gr/Zv99/2j/MP8Z/yr/G//u/s3+Av9p/1z/
-8f7L/vf+AP+//p3+w/4D/0b/TP/6/rb+yf76/i7/Vv8Z/43+Sv5u/oP+SP7z/dP9C/6G/vX+TP+R
-/3n/VP+I/7z/pf+Y/8n/5f/i/9X/rf+4/0IAfAEPA7gDIgOPAtQCdQObAzoD9wIfA2MDfgNCA6MC
-EwLbAbgBiQFpARMBgwAgAOv/rv9j/w3/tf6E/nb+Jf6R/Rz90vxz/AH8u/ti+4n6b/lg+I/3gvcd
-+H/4s/j++AL5H/md+dn5u/mc+Zb5wPnr+eb52vnq+Qr63PmK+d75o/r8+i/7w/sV/Nz7+Pug/Az9
-6fyk/K38T/08/pz+Wf4K/v/9PP5i/hf+yf3i/T/+tP4Z/xn/wv62/vr+/P7D/rL+8P51/yAAuwDt
-ALcApgDMAMUAxQAEAQ8BwgDnAHEBWgHdALAA1wBaAecBAALpAdkBswHKAS4CMQKjATgBZQG6AcQB
-uQGwAWwBEwHsANUAfgD4/53/hv+m/6v/X/8q/xv/GP9o/+P/NgB1AK8A5gAoAWoBlAG1AawBSwHO
-AG8AHADQ/6H/wP89AOcAXAFvAR0BjwBNAIkAzADbAM4AqgB6AJEA7QDvAJsAoAAbAY0BxAHMAbEB
-gAExAd8AoQBOACgAnAAuAT0BHQFRAcEBJQKVAhUDQAM2A4ED+gM7BDwECQSsA1cDVwOBA3cDRQMQ
-A/4CKwNdA1YDOwMoAwcD3AKhAm8CdQKyAisDrwMJBCMECQQkBGAENgTnA/MDJAQQBNEDngMvA3IC
-zQGCAcwBTwJZAjYCbALcAk8DmQORAzYD2ALAAtQC6QLOAkUCpwFTASoBHgE2AXEB3wGNAlADyAO4
-A0sD9QLYArICcgJLAgsCeQHwAI8AEgDL/x0AnADnAAYBGQFdAaIBnQFyAVsBdgF/AQ8BdQA+AEEA
-DADR/93/+v8eAHwA3wD9ANEAjACAAIQASQAoACoA5/+c/2//Nf83/4T/t//M//v/IwA3AFMATQAJ
-ALj/iv+Y/6j/hP9e/0f/If/T/kL+u/2e/c39EP5k/qz+p/6D/nr+bf5s/o/+uP69/pn+df4//vn9
-+P0A/sr90/0v/jv+z/1s/Vn9V/1G/Ub9RP07/UD9UP1M/RP9p/xE/EP8gvye/I78MPy4+7T7B/wg
-/Br8Zfy//OX8/Pzp/I38Xfyj/Pf8Fv1a/db96P2X/ab9AP4g/hn+L/6M/vT+JP8v/wj/y/7M/gD/
-K/83/0T/Sv82/z7/N/8C/wn/SP+A/9P/SwB1AAMAWP/r/uj+Jf91/9P/6/+y/33/Wf88/zr/b//F
-/xIADgCv/2n/Nv/f/rj+3f7//gr/Jf9H/1v/R/8S/yD/cv+v/9r/8/+6/0j/Av/y/vf+6v7X/uf+
-0v6V/of+rv7i/hL/If8M/xD/Pf9C/+f+Vv7y/f/9V/6u/s7+sP6Q/p7+wP60/m/+OP4x/jr+Tf5D
-/gv+8f3l/aX9Yf1y/aD9lf1Q/fL86vw9/W/9lP3G/bz9kv2e/d79LP5p/mr+Xf58/oP+R/7y/cD9
-qv2A/Xz91f1M/q/+9/4h/2r/3v8nACwAHAAPABYAWwB1AP7/X/8F/yL/rP8HALn/Qv8//57//v8t
-AIQAEgFIASAB+wDrAO4A5wDDAOYAaQGgASsBkgBPAGUAyAADAbsAqgB9AVgCXwIIAqMBCQGVAIYA
-jQBkABIA+P8rADAA9P///28A/QBvAbUB+wErAhACFgJKAjkCBQKmAeMAQQBTAJsAfAB0ANkARAFq
-AXwB7AGPAsICngKwAtoC5QKzAigChAEJAdUA0ADcACoBuAE/AoUChAJsAncCtQLvAsICXwJBAi8C
-CwI9AmQCNAJfAvgCewMHBIgE1ARYBfEFOQZPBg4GgAVUBc8FcgagBkwG1gVEBaQEZQSDBLUEDQWa
-BRUGOgYjBgEG+QUfBjAGBQbcBdUF0AWoBTUFtwRsBCYEBgQnBEYERQQvBBIE7gPgAwQEHgT5A7oD
-jgNbAwgDngI2AhcCLQJqArcCeAKxASwBIwHqAE4A3v+l/1r/8/5v/sT9Iv3k/PD85/y0/If8ovzy
-/AT90fy2/If8//uQ+5X7uPvH++T78/vK+5P7cvtH+wT7zfrF+gf7e/up+377afte+y77/Pr6+ib7
-VPtv+5X79fth/KX86fwm/R/98/zZ/Ln8t/wR/WD9KP3g/AL98/x8/HX89Pwx/VX92P1B/oX+9/4i
-/+L+4P4z/0b/AP/l/i//XP8Q/5v+Xf5d/oL+nv6W/rr+Rf/n/1sAhAB1AJIAvgC1ALsApgBrAGIA
-PADR/3//fP+b/5v/pP/b/+P/tP/b/0gAgACCAGAAEADT/9T/8v88AIgAQQCc/yb/3v4A/9P/owCL
-ALf//f7Z/if/ff+w/8X/9/9NABkARf/S/gP/U/8SADQBgQG0AOD/Zv/1/ub+w//QAOsAGAAS/3T+
-Vf6P/gr/lP/o/8f/NP+b/pH+Fv+f/wMAdwC/AIUA5/8n/5z+nP4x/9T/+P+//1T/lf7U/Z/99/2F
-/un+AP/L/kz+0v3Q/Rj+E/7O/cT97v38/RD+Kv4B/s391P0p/qD+tf5e/hD+8f0g/nn+b/4h/g7+
-9f2e/YT96v11/rD+jv56/p7+rP6p/uf+O/9m/1X/8P55/kP+Hv7M/ZP9sf3j/dL9tf23/aj9q/3r
-/UT+af5D/vv9of1b/XH9/P20/gf/8v7X/tD+t/7A/kn/5v8UAOP/TP98/i7+k/7j/tD+0v74/g//
-Rv+S/9H/IQCOABYBXwH0AEEABwAuAEAATABkADMA2//d/xUAJgAiAC8APQBtAOUAMQEaASYBTQEo
-AfAACgFeAcQBGwLDAb4AJQBXAJgAtwA3AcwBnwG1ANH/ev/E/1cAxQD5AA4BAwHDAE8A1f/M/0YA
-mwBrACsALgDt/6f/IgC6AOgAZAEvAk0CwwF8AaoB+gE3Aj8CGwLvAdkBqwFWASQBNQF0AdEBKgJC
-Ai8CdgI7Ax0EsATsBEsF1QX2BcQF5AUyBlMGbwZyBh8G6QViBisHpgcICH8IqQiRCKsI+QgiCSwJ
-Vgk+CZ0IFgj/B/QHygfRBzAIfghpCB0IAggQCNcHRweTBssFRgULBYgEygMhA7kCFwPvAxgEhQMU
-AwUD7QJ5Ag8CBwL+Ac8BqAE2AW4A9P/V/5X/Hv/D/o/+Gv5e/eD8rvxZ/PD7ofs9+6b6A/qe+ZD5
-s/nh+dL5dPlC+WT5YPkZ+fb4Hvld+Y/51PkU+uj5bPkJ+fD4I/l6+Zf5Q/lR+Rr6nPp8+l76kPre
-+h77W/ul++X7QPzw/Jz9w/2t/e39Pf4o/gL+M/5m/kH+QP6X/s/++P5b/5L/mP8EAJUA4gBEAc4B
-JAJ1Au4CFQPjAtQCCAM8A0MDWAPOA1YEfgRNBLYDBQO+AsYC0gLVAuwCIwM+A/kCiAJGAiMCAALx
-AQ0CLgIMAssB2wFGAqoCnwK1AVoAlP9n/9v/CgHHAUYBawDp/17/E/+7/7IAagH9AcIBbgBG/2X/
-bgCmAYACawJoAVMAzv/F//H/DwBkAAQB9QCa/9j9wfyC/Ov8nP1I/s3+nv58/Ur8A/yd/E/9p/22
-/ZT9Wv3//HT87vul+4/7hfts+xn7Y/qJ+Sr5MvkB+fL4kPlD+o36lfpT+iL6u/qf+zX8rvy//D38
-p/tL+x77A/sC+xv7HfsP+xL7+Prp+kz77vuR/DL9mf2e/VP9Av3t/B79PP3l/Hb8Rvwf/Ar8Fvwx
-/Gb8kPyW/Kz8+Px3/Rz+qv7i/rX+Qf7k/cb9vv3h/V/+1v70/v/+/v7r/ur+8f5K/wgAgwB4AA0A
-g/9z/8P/6v8RAEIAIwDi/+r/EgAPADQAmQC5AKMAygD3AM8AhACCALYA0QDVAMEAmwCaAJEAXABw
-AOUAMQEjARoBLQE5AU0BOAHkAK8ApgByACkAEAAYABIA8f/J/7//6v8aAAAArv97/4n/1v9EAGIA
-AACr/5P/bv9o//f/uwDVAGoANQAsAC4AbQDHAAcBGAEEAfUA1QCVAIoAtQDTAPgAAwHzAC8BiQGl
-AbsB3QHAAYkBugE4AlYC8QF1AVoBrAHeAZMBGgHaABUBngHZAQIC5wIJBFUEUAQABd0FGAbbBb4F
-9wVwBuYG0AZOBh4GawbRBi8HqAc+CL4IzAiiCMQICAkrCV4JbwkeCc0IZAjAB4sH2wcpCHkI6gg/
-CU8JQglACTYJ6AhzCEQIIgixByQHYwaLBYAFEwZdBngGgwYbBmYFIAVPBUMF1ARLBCcEUwTcA9QC
-/wF2ARcBygBdAPb/6f+t/+T+JP6//Xb9DP2m/Hf8cPxX/BT8w/ti+yr7Q/sj+5v6IPrS+bD5qvls
-+Qb50/jt+DL5Rvn9+Mb45vj6+N34B/mm+SL6/vm3+cX5zPm1+ef5Ovpr+rb6Kft4+4X7kvui+677
-Cvye/BX9T/1//f39ev6J/mT+g/4B/4L/wf/f/w8AeQAjAbQBCQJJAlECIwIHAkUCkQKEAnQCtwJA
-A8oDDAS8AxID1wIjA3oDwQPhAwkErwSXBRsGNAYIBpUFSAWWBRAGJwYfBhsG1gXFBUIGiQbOBd8E
-6QRVBV0FZQWPBW8F8ARtBAcEogNzA2ED3ALmARgBzgCrABUAIP9K/tj9nP38/NH73/qy+rD6Fvou
-+aX4c/gW+J/3cPeM9wD4s/gK+cH4N/jg95L36vZz9nT2S/YH9v/1E/ZV9sT2F/cy9y33VPfl93X4
-o/ia+Jv4sPjQ+Pv49fin+Ij41vgn+Sf5/fgi+a35Pvq2+hH7IPsn+3b7j/sm+936IfuV+9z7HvyW
-/Pz8C/0c/YP96/3j/XL9Gf05/cD9U/6X/pj+d/5i/o3+xP7p/hX/TP+Q/+v/WQCFAGkAcwBpAOP/
-aP9v/6X/DgC2AAsB2ABaAN3/kf9I/w3/P//V/00AVwAaAO7/zP95/zj/Rf94/8H/4f+c/4D/xv/V
-/5n/Rf/k/rL+0v7i/r3+9f5H/xP/1f4L/z3/9v7B/gD/P/9M/1f/m/8IAFYAnQDyACMBMAEHAYUA
-AwAIAG4AywARAUQBPQHoALEA9gBYAZwBBgJxAq8C6QLkAosCaQLjAs0DgQRhBK8DOgMvA0gDjAMY
-BLEEswRABDQESQS2AwADBgNeA2wDmQP+A+8DXQMZA3sD+QNMBG4ESgQdBCIEKgTcA4kDxgNDBDQE
-pQMnA8gCfQKTAusCugIeAiwCpQKqAoECqQLWArQCpwITAzkDlgINAhcCDwLdAd4B8gHoAaMBQwFT
-AccBBwL2Af8BZwK/At4CDAMcA/0C4wLnAvkC9wLdArMCqwLXAukC7gI1A5oDyQMDBJwEQwWkBZQF
-NwUDBRgFWgWKBVkFAwXeBMwEgAQmBFQE2gQKBfMEGwVgBUIFxQQ1BOUDBgRVBHMELgTBA5sDqgOi
-A3sDJwOVAmMCxQLHAnwCugIJA+sCswKAAk4CQAJNAkICCALbAb4BSQHQACYBvwGOAQ4BDgEdAcQA
-XAAmAP//yv+T/2v/QP/K/jj+Cv7u/an9ov2i/V79Fv0G/Sr9U/1J/R39Dv0l/Tv9Of0n/Qb93vze
-/Ar9Gv3g/GL89fsb/Lj8Pv3L/Vj+CP4H/aX8Ff3W/dX+Vv/k/oT+uP7k/vr+Nv9g/6T/dAA4AboA
-Pv9S/rj+3v8nAVAC1AJtArABMgHqAOoAWAHZAQsCyQEVAU0Am//3/q7+JP8JAF0A5/9P/wP/6P6f
-/j/+E/4K/gj+9v2K/Z38vPua+/X7Mvwx/Oz7fvs0++/6gfpn+rj66/rn+rf6Yvol+sr5LPno+D35
-m/nW+ej5YPmS+Fr4gvhZ+BT4QPi1+Oz4zviB+Bj4Mfj4+Hz5gPlu+R/57vgZ+nH8kv0R/Ir53/gC
-+3z9R/3w+sb5LfvY/Gb83/q7+g38Gf0Q/Z38X/xc/I/8o/wl/Iz75/sP/Wz9TPzH+kH6Ifup/NT9
-+/0P/Qj8Dfy0/LL82fsJ+zn7qfwW/gz+Av2O/GH9pv5k/2v/+f7c/oj/QQA0AJT/Lv9G/2f/Kf+g
-/in+I/6N/iX/ef9d/3b/8v8xAAgA4v8SAHcACwGiAZMB1gDg/zn/Vv/y/3sAxQAVAaoBFwLGARAB
-4AB3AQsC7gGgAZMBgQF4AaoB3gHxAQoCIgIpAkgCaAJjAmwCcgJvAqkCyQJAApIBiQHWAewB+wEm
-AhYC8gFBApwCjgKAArcCKQO7AxME+QPMA6sDNQO7AuICnANIBIIEdARmBFsEEASMA04DpAM0BHkE
-cQS1BEIFUwXdBIcEhASeBKYEcgQeBOQDyQPRAx8EigSNBE4EZARXBLgDOgMWA/sCBwMrAysD6gJr
-AgkCCQJDAnsC3wJ1A88D6wPoA6wDRgP2Av8COQNYA3IDmQOUA5gD0wPfA6oDpwMuBOEEHAXPBGEE
-ZQTfBBkF2gSrBLYEkgReBIME9QRhBZIFuQUCBlgGowaoBl8GFwb9BRUGMgb7BYkFLAXjBLYEoARz
-BJsEOwVdBfwE1QTBBL8E9wT3BJIEDQSqA5UDjgMhA4YCEwK4AasB4QHwAf0BQQKGAsEC8wLbAnYC
-KAISAukBkwFZAUMB4gAkAIH/Jv/Z/n7+Uv5b/k7+QP5r/pv+of67/sj+av73/d/94v3C/Yj99PwT
-/JH7uPsf/Cz81/ui+5z7pfsb/Mj84vx7/FH8jvza/Pv86PzR/On8Nf2K/YL9IP0F/YP9Iv56/o/+
-RP6t/TP9Cv1e/Qv+mf7S/rz+iP5e/jL+K/57/uH+Gv87/1T/QP8C/9z+1v7b/vH+Ef8I/8L+cf4b
-/uD97P3w/dv99P0N/s/9e/2Q/bH9GP1p/Jf8AP3V/FX8Avzb+8P7zfur+0H7Dfs3+1X7EfvD+tX6
-9/rn+tv6pfry+U35VPnO+fX5vfnh+Rr6y/ls+Y/51fnA+aP53/kO+t75efkm+Q75Q/nE+SL6FPrJ
-+WX5I/ko+U/5c/me+fj5Tfoc+oT5Hfka+Wf58fl6+qf6mPrd+kH7RPsw+0j7evv++9D8Ov3X/Df8
-zPvH+2D86PzF/E784PsV/Aj9rP3D/c/9u/2b/fn92P4i/3b+/v1a/hj/z/+AAK4A3/8O/0P/AQBc
-ABcAvP/s/5oAIwH8AF8AMwDeAKABpAE6ARgBVQHMATECDgJOAYwAUQBsAJsA2gA8AcwBdAIRAx0D
-EwJ9AHX/df8vAAoBtAHAAb0Aev8q/7//TQByAHYAuQCeAboCAQMuAsAA3P+hAE8CFAPEAlwCGQKZ
-ARgBXwFYAg8DBgPAAvoChgOPA+kCWQLMAhEEAgUGBYAEGQQOBBUE3QOkA9YDVQSVBFAE7gPWA94D
-3wMzBMgE8ATNBN0E+gTVBHIE9wNzA0gD2QO8BB4FwgQJBJAD0gNMBCQEzgMDBHwE1gQPBRwF+QSx
-BEAE/AMyBFEEKAQ5BEAE3wOvAxMEiwS8BNME7ATiBK0EuwQ5BaEFeQXjBDMEtgOpA8IDuQPLA/4D
-MAR6BJYEIwRtA/8C+wIeA1MDfANJA+wCuQKdApYCtQLgAiMDfgPPAyoEogQJBS8FAgW3BH4EGQS8
-AwUEmwSeBBgEoAM2A+wCEwNjA4EDVQM6A6EDGAQOBIsD5gKEAnsCrAIaA2QDCANnAhYCDgIOAucB
-jAFIAWYBxAEhAkMCBgKhAVUBMwErATIBLQH/AMQAmwBsAFUAjwDYANcAiwApALr/Qv/z/uf+//72
-/tD+mP4z/uD92/3a/az9dP1D/Wj96/0L/sn9wP2z/Xf9Uf06/Tn9bv2I/W/9Tv32/IH8dvzN/Pz8
-0PyW/HH8GPzB+w78gPxT/Bn8Q/xy/In8cPwZ/BD8fvzJ/K/8V/zq+5n7c/tn+1v7VfuN+wj8Wvwo
-/KH7Q/sp+yL7V/vX+zH8F/zx+0D8qfyj/Bn8U/v7+nP7Bvz9+5X79vo1+un5BPr6+f75Rfpm+lf6
-ePq6+qT67vly+TT6Rvst+1/6Hfp7+r76Vfqi+b75+Po7/Fr8cfti+tr5I/rP+jP7VvuJ+7v7m/so
-+676UPou+kL6dfoG+wP83vwE/U/8OPuv+hj7wvvk+6L77vvu/Hj9wfxE+1j61Poe/Cj9rf37/Wb+
-o/49/kv9Kvy/+9f81/4+AOv/Jf7F/OP8p/3z/Y39bf27/oEAvgB6/0v+Hf64/oL/CAD8/4v/h/8s
-AJwAWAAJAM3/V/+W/+cAbQFNAGD/1//xAI0BcAFlAQcClgIAApkAzv+JADACTAMZAwMCEAHzAFEB
-ZwEkAfkASwHqAWcCvQLrAtkCWAIpAVkAtAGFBKYF7QNpAVcATQEjAzIE1wPCAlkC/gKAAxwDcQJT
-AgEDQgRxBYUFFgRqAjkCJwOJA2oDFAQcBdcEaQNPAhsCeQIsAwcEsQQIBUUFYQVvBP0Byv/w/xQC
-DQS2BF8EjwP5ArkCYQJJAu4C4QOPBD0F1gVUBY4D+QH+AR8DsgNqA2ID7AOYBBQFwARYAwcCLwK1
-Ay8FiwUWBaUEKAR9A0wDpgPfA+QDQQT8BFYF3ATzAywD4gJ9A2YEpwSyBAUFGwWdBN0DSwNTAywE
-FgU/Bc4EJARwA+QCqAKbAnkChwJDA0sEXwT3AlYB9QDRAf4C1wMUBH4DcAKkAUkBGwHnAN4AWAH/
-AQsCdAHfAFwA1v+//yYAqABRAesBwQEnAc0ArwDUADcBigHIAfQBggEmAKX+MP4I/zEADwGEAUUB
-oAAlAPb/LQDYAJQB8wH6AcMBPgGJAAkAMADxAJcBbAGQAPX/IAChAOoA/gASARsBFQEzAXMBewHw
-AAAAZP9o/3r/Rv9I/9X/iwC9AB4ATv8R/zf/Hf+w/i/++/2L/lv/Kf+3/Q38Y/tA/LH9TP5A/on+
-3P5T/un8hftp++z8Hf+7AKwA0v64/AX86Pwe/kH+of14/b/9Uv2/+8f5xvjJ+Tz8T/7Q/sn98Pv7
-+bv4TPme+6f9w/2w/Pv7n/u7+qb5f/lf+pf7r/zw/PX7kvrG+dD5evoO+7b69fly+jD8E/0B/GD6
-5/ni+lH8p/ye+8P6Ffu7+837d/tV+677EvzT+w77BPtD/Pj8bfsm+dD4evqa/B3+RP5H/TP8iPtO
-+9T7Nf2j/i7/wv4A/nL9Pf03/Sj9Mv13/dz9Of6r/lH/mP/L/g/9pfsB/FH+0gBQAcz/bv72/q0A
-FgFI/2z90P0AAIQB4AA7/3P+g/5Z/vX9xv2e/ZX9Hf4H/5b/Uv9b/mD9Tf09/uv+v/7C/jr/Mf+9
-/t3+W/+d//v/LACk//7+4/7D/vH9jv3W/o0A2gCv/1L+/v34/iYAQwDI/38A6gIKBSUEMAAN/XX+
-7QJFBUED4f/N/i8A0AEYAjgBewDxALICVAT2A6MBNP+X/pUAvgM9BQcEHgK/Ac4CdwPfAmQCVAOH
-BBQEfwK3AbcB8gCn/8v/bQIyBpwHvgSVAPr/IAOKBcMESQMyBP4GLghaBZoAhf6PAL4DZAXvBSkG
-LAXaAg4BHAGaAmcEdgWABVwFOQUaBAICWwBoACoCeQS0BfQEYAOpAoQCKQIWAtcC/gPcBBQFewRC
-A8ABagASAP8AagKDA8kD1wIwAVYAAAEAAvMBUgHYAYwDTgQUA3EBTwE5AugB+v/a/lwAVwPXBGkD
-fgDQ/rz/wwHEAtUCTANXBLoEhgNLAZ7/tv9dAUQDEARfA8sBmgCuAEMBJwHOAJQBggPLBLgD4gCh
-/qT+IQALARcBkwFyAjkCYQA0/vX9aQDqAn4CJgAR/1wA+wFXAUL/rP5AAC0CkwIyAZf/qP9GASkC
-6wAj/1P/RQEkApEA0/6T/wEC6QK3AKH9EP0k/yABaAFuAEr/0P43/8P/ef+p/mr+Kf9cAPQAUQCw
-/kL9Sv04/oz+TP6d/rH/KwDv/qr8EPtZ+2/91P+KAPz+3Pzm+wT8dvxe/cn+JP/j/Un9bP5v/7f+
-8/ww/Mj9ZADWAG7+MvyR/C3+Of6q/AL8xPw2/X394f4WAAH/jPy6+3f9Vf86/yn+G/5Q/8D/gP2G
-+rP6Y/7sAbQBOv5q+/n7n/7Q/zX+W/wT/cD/NgGo/+j8DPw1/S3+iP71/qL+df3o/Bb98Pyr/FX9
-8P78//7+qPxx+738Lf8EAGb+hfzD/Gj+sP4Z/fT7X/xc/Rv+nv7t/pP+Jv22+/b76/3X/8z/+P3m
-/BH+cf9D/tD71ftZ/rz/rf58/YX97f2J/tT/ywBkAMj/CAASAP/+1v0t/oz/2P9D/jf8Y/xs/xoC
-jwG//gn94f5KAkkCT/4g/Of+LwKYAbP+0vyQ/L783f3FAAID/AEZ/3v9Hv5P/7D/6/+hADgBIwF4
-AL//k//t/4kAxwGpA4YECQOkALP/pgDaAbYB4gAdASEC4AFPAJP/VwCjAZMCCQNUAzgDVwIAAQcA
-8/+HAGQBFQL8ATwB2QAsAYEBSgH/AI0BoQLLAnMBxP+w/3QBugKWAS//mv74AEYD9QGj/pD+pgKj
-BacDfv84/kgANAIrAlQBLgHPAQMCRAGYANwAbQFtAWwBSQJ+A7ADTQKNACUAIwGJAqsD/QM+A70B
-bADCAN0CJQRTAmr/lv8MAzQFMQMHANz/BALkAp8BlAAZAS8CogI6Ah0BFADBAAsDEQTRAXj+mf7v
-AiQGEwR8/9j9XADUAqQBA/8T/5EB6QLGAWkAQQAyAMj/NwD8ASsDBwI6AIoAmQJ0AwQCKQDm/4oB
-XgM0Ay0BkP8dAPsBfAK4AOP+av+2AX8CjQDj/sr/jAGSATkAJACtAQ4CJQCi/jMARAO7A6oAjv2z
-/QMADAHD/0/+Ef+WAfMC1AC6/Hz7fP4sAWQAxP78/yED0gN4AKf8VfzP/l4ACQAcAEYBYAFF/5/8
-tfsS/SL/HgBnAL4BgwPTAor/VP2y/kUBagFv/4D+IgAyArkBxv4U/Or7HP5nANoALQAfAI8AIwDi
-/lf+tf6N/gf+if/6AuED5v9h+9f7GAAZApr/9/yp/jsCAgIG/iT7uftF/rQAUQGT/8n9Zv5QAGAA
-+/2j/Eb+8/9X/zL+Yv65/vn9Qv3M/Z7+C/7I/PD8E/4W/rz8q/t2/Mn+0wDqAOf+5fzx/LD+9f91
-/3z+fP4B/1L/af+R/mn8Kvvq/BYAngGAAB7+ZvwZ/Kf8s/1q/5oAWv/c/KP8xv6J/2v9dfsv/Dv+
-4/+mAHD/evwR+0T9eQBIAeH/pv6C/uD+Sf9t/2v/of/8/w8AUP+r/Yb8Sv2O/94BgwLMACP/k//7
-/+H+f/7b/ywBlgEsAZ//IP4u/k7/dwB+APn+Pv7G//kA7P+2/mL/zQBnAeIAb/8g/nb+/f+MAPb/
-AgBxAbwCcgFB/tz8yv67AfkCYQJcAWkALf9c/m7/jgEqAgsB3/80/yv/GgAkATkB+gBWAcMBCwGj
-/47/tACzAGT/AP/X/zMA4v9HAI4BUgKJAc//+v7Z/68BxwNBBckEvAJHAX4BSgLxAUwAE//G//AB
-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
-cAGVApkC4gBP/z7/BACDAIEA8AC+AuIE6gQwAkj/EP9TARoDOAL9/2P//QBPAq4BjgBjALoA/QAl
-AYkBFwKoAQMASP/7AC4DIwMgAUX/6P4GAEMBTAGkAJQALwG3AbEB6wAdAFEAUgEkAjUCgQExAPn+
-jf7M/mL/AABRAGUAjACOAK7/Y/5M/gsAkALOA24Ckf8t/m3/HwHHAIz+yvxB/TT/hgDZ/679LPw/
-/aoA1gMABB8BDv6V/ab/3gFgAmABMwB//zL/Af8y/gb9EP2y/mcA/gCTAL3/9f6L/qH+Y/+bAC8B
-ggBA/6L+Yv9SAEr/yPwv/KP+7wAOACH9Svs2/FH/jgFtAA/+Cf6b/7z/Sf5C/fX94P/dAA8A9v6J
-/gr+Tf1q/ZD+e/9k/7b+/P3V/Yf+h/4I/VX8sf0b/0v/E//d/pT+tf4A/4X++P2u/g4AnADp/4H+
-gf0E/g3/cv61/Fb80v2b/3sA///Q/nX+LP/j//7/c//G/u7+KgB1AVQBlP9f/Tz8Yv2w/zoA0v4f
-/iL/ZABFAGP+sfxe/T3/vv/F/hL+fv58/9v/l/4V/ZX9O//i/4D/Gf8R/y//Rv9B/yj/W//H/5X/
-6v4e/wgANgBi/67+Uv8mAekBNwCo/rv/ywE4AgIB/f+RADQCnQILAa3/HQAWAdQAef9s/vr+3wAU
-Ap4BAgHaAPn/6/45/0YAwgCaAPb/+f55/rb+wv47/tz9Uf5F/9b/rP8v/wv/iv8nABMAaf8u/wMA
-GgEKAdT/6/5D/0oAFwExAasAQABkAJwAiwCXANgA5QD/AIMB9QHXASsBdgDnAKsCvAOYAsQAdQB6
-AT8CHQK+AQoC5wIsA0IC9AAdAPz/rADvAYYCZgGR/0T/2AA6As4B6/+H/mX/wQEzA4cCqgB9/zkA
-+gGwAsMBZACo/67/PwCwAHYAWQD2AFEB7AAPATACAgNsAgMBiAAIAgsEkQN+AJH+/P9dArICKgG2
-/4v/rQDJAagBLgGSAWQCsgKDAksCHALAAQsBNwDq/4cATQE0AZIAIgDS/97/4AAsAnMCmwGuAMgA
-mwHQATcBZgAHADkAsv+Z/vn+lwBpAScBtQAoAHX/DP8k/4r/NAAXAcgBQQLTAgsDGgJpAD3/L/9B
-APgB5ALnAez/x/4h/0UA5ABGADf/LP94AHsBsQAo//r+awDCAYcB6v8x/pv9LP7m/oX/HABKAEAA
-LAAt/0f9bPyg/df/oQHYAUUAOf5J/ZX9OP4B/xwAAQEPAU0ATf+O/lj+yP6u/7gAXwHqAEn/YP1h
-/AL9nv6N/07/1/6i/mb+Ff5B/mr/AAF2ASgARf5w/Tr+1f+WALT/tP7E/tL+5P0S/c/9XP/3/xb/
-x/2y/Qz/HwCH/xv+1P1W/2gB/wEyAH39T/xA/ef+BwBWAM//3v6F/sT+Vv6M/Jz6APtu/nkBjgAs
-/XX7nvx3/tz+DP60/VL+tf4G/hz9UP17/hT/rf5p/o7+NP46/bD8bf3q/rP/Kv9l/kL+Tv4C/nP9
-av1o/sb/mgBEAMr+av1t/c/+ogB4AXMA4v64/sP/dQAeAD3/2f6H/3wAgQCD/0D+q/04/h//tv8y
-AFMArP8I/0T/5P8SAK//kP+VAN8BpwHj/1L+EP6T/gr/N/81/yT/3P5E/tL9Of5p/6EAVgFkAfsA
-SQCi/8r//wAyAgsCsgCY/3r/2P/Y/2n/Yv9jAMUBMAIuAaH/Cf8LALABZwLLAfQAwADqAM0ABwA9
-/4n/sQCPAcIBowFUAc8AaAB5ACEBDQIxAhMBAAAGAD4A0/9l////jAFFAtoA7v4D/8YA4AFhAaYA
-FAEfAlsCRwG9/3r/9QBhAkACJAGJAPUAeAFnAVQB3gGoArUC+QFgAUUBigH0AdIBKgFKAZkCtgMQ
-A8oAKv8GAKUCXQS4AwsCKAFaAcYBpQEYAcYA5ABVAdkBDwIAAqwBrgCx/zgA+QHxAmECXwEUAWIB
-RAGfAHUAXAGYAtUCCwKQAT0C/AI1AmAAs/9TAYEDpAOlAbH/hf/WABsCPAKeAWQBnAFxAcMAjgBz
-AVEC4gGzAHEAgAFKAoMB4/9E/1UAzgFAAqIBjAB4/93+M/+VACwCcAL3AHD/q/8WAXkBNQBQ/xUA
-ZQGQAf3/G/4q/gQAYgEHAXD/UP4g/+QAcwFTAPb+0f4fAH4BYQEeACX/YP9xAAEBdgBW/5T+B/9N
-AAUBmwC4/xn/RP/0/ywAqv9s/yYA6QBvAO7+Rf5f/+cAXwF4AAv/Wv77/hEAeAAfAFf/f/44/s3+
-2f9eALP/jP4m/tv+3v/x/+/+5/2B/dj9V/74/SL9Gf3l/W/+BP5a/Yf9ef4N/7H+Sv6D/sP+ff7U
-/TT96vwI/XT90v3t/dv9vv3F/Sr+zP4f//j+5v5U/+P/5/9m/+3+w/7P/rf+cv5G/ir+Jv5P/lb+
-Iv4v/uX+0v8cAIz/wv6E/rL+pf53/tD+YP8e/xf+K/34/Kb9Qv7j/Wn9sv1W/gv/uf/F/8/+Uf1z
-/Fr9Uf8yADL/T/0x/Dv96f+nAcAAXv5I/cP+9wBJAaf/hP6I/4gBBwJDAAP+R/2W/qsAmgH1ANH/
-Iv8//9H/OABhALAACwH/AGQAUv9s/nr+N/+q/y7/a/6u/sH/bQD+/+f+gP5o/9gAfAG3ADn/Rv7F
-/tj/2f/9/n3+j/7e/ln/nP9a/xj/Vf8gABMBTQFrAFf/Tv9DADcBbwH5ACcAY/8o/zD/Av/H/sz+
-QP/4/5YAywCMAD8ALABZAIEAXwBjAMkA8QCYAFAAqgBeAX4BrgC5/6//jgAuAdoAWgCsAH0BwQEm
-AS8AsP8UAMgA6wCiAJIAlACRAMcA1wDAAAcBMgHRALMAFAF7Aa4BUAGNAEAAyACEAb0BUwGWADwA
-qgBnAbsBhgF7AeIBIQIcAiQCIgINAvoB/gFMAqcCuwKKAgQCWQH2APwAQwGWAb8BmQFAAQoBSQG6
-AQUCEALjAeAB7AG4AZcBvQEFAnMC4QILA8ICGQKpAYkBbwGDAaoBtAH8AUIC0QEqAdwAmQCSAOkA
-IwEFAaYAXwCJAPIA+gCCACgAFwAkAGUArwCAABoAYABPAe0BmAHMAF0AkwDoALMATQB8ADEByQGg
-Ad8AaQCFAPIAWgGYAbQBdgEYASYBiQGcAeMAv/8a/1f/5P/w/2T/1f79/s7/cQB9AOL/8/6h/p//
-XwHdAVQAuv6P/n7/NQCZ/2f+9f1v/mH/CwDJ/+3+q/6L/4wArwApALn/t//1/yMA8/9h/zX/xf8Q
-AGj/Nf5m/cT9B//d/3n/3f4s/97/EwDF/2X/J//J/nX+1P6Z/7D/Hv/W/h//gP+0/4b/3v5//v3+
-mv+D/+z+d/6h/j//pf+J/+r+PP42/tb+YP85/4/+9P3P/T3+1v4T/9f+Sv7w/Uf+xf5s/rL91/2l
-/g//3f48/lf93/xT/RH+Rv4H/tH9qv2J/Zv98f1X/mb+Df62/d39b/7K/qf+Sf4R/jL+iP7W/uj+
-rP5U/hb+/f0h/qz+Tv9V/7j+M/4b/jD+Yf6q/u/+If/+/lH+1v1h/h//1/73/af9Z/6L/7r/k/5L
-/XD9Qf/RAAcA8f1A/TL++P7W/oT+dP6T/gX/zv9SABwAnP+b/zoAwACuAF0ANAA3AEMABwBy/wz/
-W/8XAIoAUADG/4b/xP9zACUBFQGCABUA4f8EAHIAxgDkAOQA4QD0AB0BQgFHAekATwAaAEYAKgC1
-/5n/AAAsAN7/jf+R/wAAqQAMAR8BGgHqAOoAbQHJATYBGABV/0f/6/+mAMwAaAAcAGUAFgGpAdEB
-pgFFAc4AbgBgAOkAkQGXATcBRQHbAXQChwLhARMBJwE6AgUDrwItAnACCgNMA/UCTAINAl0CcQIE
-ArMB4wFRAm4C6wErAeQAOAGUAYsBjgHwASgCNgJSAhECiAH8AH0AQwBWAJkArQBiADAAjAAAAc4A
-YACvALQBeQJeAgsCTgLYAvkCjwL1AbIB/QE+AtIBHQHiABsBRgEoAfUA+AA8AZEBtAGuAc8BBwL8
-AaQBOwHrAKUAdQCEAIYAewDNACgB7gArAMn/VAAiAWEB9wAwAIH/kf9nANMA+//m/vP+7f+/AMUA
-JACJ/4T/AwC0AAABYQCC/07/gv+i/8H/tP/7/tP9I/1f/Rb+lv60/qj+3v5e/67/pv9u/zr/I/8Y
-/xD/Ff8n/w//pv4T/oX9NP12/Vr+Sf+H/0H/Iv9i/9H/CgDU/1r/+P7L/qn+j/6r/uP+L//Q/1wA
-CADg/gP+If7t/tn/AQAw/z7+3v0+/t/+6v5K/t39Of7U/hz/Hv+4/g/+1v1T/vj+Av98/gT+5/06
-/sL+7P64/rP+8/4N/9z+rv5y/hP+Ef6L/ij/jv9p/7/+N/5F/pP+3P5H/8j/3v+r//f/lADEAHgA
-CACN/x//CP80/zz/AP+j/lL+UP6X/pv+Ef6e/eD9YP6q/hn/rP8AAAcAv/+A/5z/pv9u/3j/uP+Q
-/9r+9P1X/Sz9h/1P/tT+5/4Y/4b/1P/s//n/DgAKAPz/KABkAEAAtv83/+T+pf7Y/oz/CQDY/3X/
-mP8kALAAGwEmAcYAWQA2AHQA3QA1AUkB6gBgADMAbADoAJoBxAHvAIUAjAF+AhwCMQG5AMQABwFh
-AckBAQK4AUUBTQGEAaYB5gHqAYIBGwEPAVYBnwHJAcIBdgEPAdQAywC0AJIAtwA0AdcBMQL4AX0B
-FgHnAB0BkgHgAeUBnwEWAZUAdgC9ABsBQwEwASEBXwHsASACigHEAHwA6wCiAaMB7QCLAM0A+gC3
-AGAAGADx/xAAAACR/4r/KgC8AJ4A0v/8/vv+6/8NAZsBTQFjAH3/LP9l/7v/7v8TAFQAuwA0AUIB
-ZwBU/0v/GgD+AKEBhAHiAI8AuQD3ANEATgD//0UA2AAbAdQAQADf/+v/KABAABgA8//6/xkAUQBd
-ACcAEABDAGoAUgBwAK0AWADH/+r/jwDRAH0A+P/x/48A6wCPAPL/pP/0/2kAkQCoALAAhwBTAEAA
-HACg/1z//P/+AGMB4QAqAAQAcwD8ABUBjAAbAGsACgE+AfAAdgAlAE0AqQC4AIEAGQDG/wYAmgDN
-AKAAZAA9AFEAoAC/AHgAQgBrAM4AFwEEAaAAFAB7/xT/Gf9c/6r/0/9T/4L+Zv7x/lD/OP/r/sz+
-L//W/y0APgASAKr/ZP8Z/5D+Of5g/tP+FP/b/l/+Af4F/jb+BP6D/aH9pP5u/wn/0f3I/LD8lv2Y
-/pz+wv00/X39L/6F/k7+Bf74/T/+m/6u/nr+MP4w/tL+mP+A/2j+Z/1V/db9JP7+/dL91v27/Wn9
-R/0p/YX8QvwR/fb9M/6J/UX81Pu+/N/9G/5D/Q78j/sT/Pv8wf1W/oT+Mf4B/m/+9P7v/qz+zf6A
-/0AAfAA4ALL/Mv/J/kT+8f1Q/jf/5P/L/0z/Lf91/53/eP8k//H+R//0/1IASQALAJL/K/9N/6z/
-6P8AAPf/KQDKAHUB4wHHAS8BzAC9AH8AdAA+AQIC3AEhAV0AAwBNAAMBlAGAARQBEAGcASUC6AHL
-AL//n/9XACIBJwFWAIv/kP81ALsArgArANP/KQDhAEABNAFFAWoBZwFsAX0BggGIAYMBUAEVASoB
-dQGfAbcBvwGIAVkBegHJATECigKfAo4CiwKPAlYC0AFtAWkBewGgAQMCPAI7AmMCbAIQAr8B7QGJ
-AgID3AJWAg8CQgKAAmMCBgKtAb0BXAK9Am0CQQKYAssCkAJZAqECHQMPA3UCGgJSAp4C2AIDA/4C
-GwNxA6QDmANsA2sDogOXA0IDPQOfAwcEKQTrA5YDVAMbAxMDQwOBA8QD/wMaBOQDVgPKAmQCHALu
-AdwBvQFvATEB/QD2AF4BvQHAAdIBAALtAZcBNQEIARwBNAHbADgA+v/j/3v//P7E/tv++/7//uv+
-tP6d/un+Lv8J/+3+R/+Y/zn/l/5J/gj+lP0V/cf83Pww/Xz9k/1k/SP9Hf1Q/av9Jv6V/tP+1P6Z
-/hr+fP0C/d/8Fv08/f/8iPxb/JD84PxN/Wf9/Pzr/Ef9gv2S/S/9S/ze+1j8HP10/eP80fuE+xb8
-GPw9++z6kvsI/LT7Qvti++f7LPzd+1D7Vfvx+yz8wvtz+837ePyU/CX8Qfwu/bX96fym+5r7DP1N
-/tj9Wfzp+1L9wf4t/lj8pPvF/FL+cP74/MX7Ifw+/av9K/2B/Hf8OP1W/ij/0f5x/aD8N/1g/rb+
-u/3X/HX9nP6a/oP9x/x8/ff+Mv+0/XP8HP0h/6QAcwDd/mD9bv3n/iAAAgBK/yb/qf8NANr/P/+6
-/pj+8/58/6z/hf9x/4j/Xf/2/uL+D/8V//3+FP9k/57/lP9l/z//H//P/nb+vP7//2AB0gGzAdcB
-bAIaA2EDDgPSAmUD5wObA0QDQANDAx4DAwNpAxUEhgToBEkFewWjBfgFbQbOBhAHMwciBwkHGwdi
-B4UHOQcDB2gHBQhLCIAInQgyCL0H2AcPCMQHawebB7kHcgdVB0MHCgcXB0EHCQfLBu0G9wazBqgG
-uAZYBsEFhAWqBZ4FBAVsBF0EbAQPBIMDBANIAqIBkwFrAcUAPADI/zX/DP9r/wkAmgCLAP7/mv9P
-/7n+I/7e/W39uvxq/Fr80fsF+9z6XPvJ+9n7u/vE+xf8OvzZ+3X7SPsT++b60vrA+sX64frK+m/6
-WfrC+g/74fq/+iP7pvvo+/r76/vS+9P76vsU/Ej8P/wW/HH8Qf2e/Ub9+fwO/Un91f1u/pj+4f6M
-/9P/ov+T/6X/oP9w/zn/X//s/1oAfwChALsAxgD2AGgB3QH0AS8CJwMmBHYEUQQvBEMERwQqBEUE
-mwTcBMgEagTyA2MD6QKuAogCjwLWAuwCnQJPAiQCAQIxAogCVAKTAd8AxwCBAasCagMXA/YBwwA4
-AHIAAQFhAfIALwAaAEoARAAtANz/iv/g/6oAFAHoAHsALwAnAAMAgf8e/0v/gv8l/4f+Tv5w/nz+
-PP57/Uf8hPvd+778Xf16/R395PwV/fP8ZPw0/Kb8S/2n/X/9IP1F/QD+WP6a/Wf82vsg/Hn8h/yJ
-/Jf8c/w2/JL8ef2o/Y/8cvu9+1H9wf7b/vj9L/0E/VD9f/0H/XD8rfym/WD+D/6k/Aj7z/pP/LX9
-Lv05+4D6XvyI/jX+8vtc+o763PtC/Q/+RP5Z/pH+xP7S/oX+j/2r/BD9a/7o/rz9ePzW/LD+/P/w
-/qD8sPvh/EX+Dv4U/d78af3Z/eX9cv7L/18ABf/0/GT83P1y/wX/I/1n/Mf9Y/8V/xX9yfsR/dT/
-AAGJ/9L9BP4z/8X/YP+f/q/+pv8QAIX/AP8E/yz/CP/j/l7/WADUAB4A6f7K/un/xgCIAJr/8/4t
-/4j/Xv+G/2cA8gBnAEv/oP4K/xcAqABfAB0AfwDdAKEAJgAKAK0A0AGdAtcC/wIZA94CpwLuArcD
-gASzBEcE3AMLBLQEcQUwBn4G8wVnBYkFyAXKBbkFhAVXBXQFzgUdBiQG/AUlBvoG1QcTCP4HBQgH
-CLQHPQcSB1wHyQevB+EG/AWsBRcGpAbCBtwGdwdbCOkIywhBCPEHKAg8CLAHDAe1BnoGMga/BR4F
-ewQqBDUEEASHAzsDpAM+BCYEiAMbA9wCfgLxAVUB0wDTAGcBqAEhAUsAiP8e/xz/Gf8N/x///P6P
-/h7+tv14/Wv9Xv0y/e/82vwF/fD8bvwe/FP8gvwv/Jf7Ffvo+ij7i/vM++D78fsM/B/8B/y/+7r7
-7PvJ+3L7b/vG+yP8Qvwh/Bb8T/yZ/NL89/wy/bb9N/5q/nf+Pv7Y/ev9Tv5q/nr+rf7L/vb+I//y
-/q/+3f5N/7n/+P8OAD8AZgBoAIwAvgDcAAMBKgFEAWABigGTAUgBHgF/Af0BJQIuAmICjwKAAosC
-twKaAlkCQAIwAvUBtwHMARMCHQLNAWMBSwHCAZUCJAOpAl8BlgDpAO8BBANmA6cCWgG7AAUBagGL
-AVgB1wByAH4AyACvAPP/VP92/+D/AQDy/9//9P8QALv///55/pX+Ff/3/qj9Lvz6+/D8mf0d/SX8
-nfvP+3j89/zQ/Gj8oPw2/RD9Mvyk+/T7qvzV/Cv8i/vg+938Xf3J/Lj7M/uI+yH8gPy5/AL9QP1L
-/WP9zv1T/h/+tvz++nb6oPtR/ZD9CPzv+uX7ev07/U77cfrN+4H93v05/aL8UvyZ+0j6hfk5+r37
-e/zS+4z7S/0+/6r+MPzq+vT7Vf0u/QL8j/vZ/A7/7v+8/jv9yvxN/Rb+Sv6m/TX9/P0k/4n/gf9L
-/0T+cvxe+6H8av/cAGz///zS/Aj/dgA+/1n9k/2u/xgBRwCB/uH9uP63/8//Nf+d/nL+8f4OAOwA
-hgBd/67+Hf9/AIkBBgGt/17/zwBHArgBjf8j/uL+kwAVARkAVf/R/6cAmgCi/7/+uf6H/5kAFgHi
-AIUAKgD9//X/0v/T/2IARwHaAZkBxQBIAE8ANQDP/5b/HAA3AQICMQIwAkQCbQKkAt4CGANjA6cD
-qQNZA/8C2QIMA7sDXQQ9BM0DBQSqBBAFEwWIBBsEpQRjBVwF5QSnBPIEwAVSBhwGvwXjBTwGfga5
-BqkGTQYiBlMGigZZBvQF6gU/Bq0G/AYFBwAHGgc4B2YHmQd6BxcH+QYmBx0HxgZkBvwFgwU+BVYF
-YQUmBR4FkwURBioG4AV5BSoF0gQvBEMDeAIOAuMBwgGoAYoBPQHXAJwAhQBcAGUAyQDsAJ0AegB9
-ABoATP9h/sn9kf0d/YL8T/xU/Ff8afyU/Mv82/zQ/P78Cf2d/FP8i/zU/MP8T/za+8z78fvU+4j7
-XftT+4T7Cfx//IP8YPyv/Dn9Xv1E/UH9c/3k/T/+bf6c/or+Ef7L/Rr+jf6//rv+1/4e/yv/Ov+T
-/4r/A//Q/g//Qf9D/zj/Pv9l/4f/ff9z/33/ZP9o/8z/JwBDAFsAhQCPAGIAHgDW/8z/TgDMALMA
-hQCHAHYAbQCJAK0AxwACAXUB0AH4ARsCRAJKAtsB+QBjAIgAMgFJAloDXANBAlMBQwGtASwCfAJc
-AtwBcQFwAYcBMQGEAPr/mf+J/xwAqwCEAOX/Df8m/tn9fv5k/6j/+/7S/Wr9N/7y/pL+fv2m/Hj8
-5vyz/WL+pf6+/rn+A/7N/EL8pfxi/dn9df22/N/84v0n/p38nPqu+gn9NP8T/yP9qPv5+3L9lf5R
-/gb9Kfww/FP8b/wn/eb9Cf0R+3f6/fsa/sb+8vwa+nD5zfts/uj+lf0c/N77bfxK/Cb79vkY+gv8
-nv13/DD6+fkh/On98vxx+r35RPzL/yAA+/u/94D49/yA//L9VPvi+lz8VP2Z/KH7E/yT/bP+f/5u
-/cT8Bf2V/Z/9Cf2W/Cr9nf6b/8/+qvy1+4j9OwCUAJL+mf1q/9MBkgFf/q77g/zG/5YBFADX/QH+
-4v9cAEn+HvyW/N/+RgBDAOT/sP/I/9j/rP+Y/6z/1P84ANcATgEYAT8Acv/8/un+FP8R/1P/rwB/
-AhsD9AE2AJz/iwCBASIBRQB0AJQBZwIJAqUAgP+2/8UATQEMAd0AgQHGArUDvQM6A/ICGgM2Ax0D
-IgNxAw4EzQQPBYQEhgPAAugCCQT7BPUEqwSNBHkEcARhBIUE8wQ/BSsFBwURBSYFWQWJBS4FuwQb
-BQ8GmQZmBkQGtgY4B0IH+AbFBvEGWgeJB18HOAdWB5wHzgeyB2MHcgfhB+EHIwdaBhUGMgZDBg8G
-uAVnBTgFOAUqBdkElQSDBHEEWwRVBHgEzgQMBa4E2QMxA/YC0QJoAhMCGAIFAqoBRgHHAEAAKABf
-AFkADACz/4T/l/+I/yH/0f7g/vj+3P7F/pz+Hv6j/Zz9yv28/Vf90fyf/Pb8dv2d/ZT9p/2m/ZX9
-pP3H/eX9+P3e/a79qP2W/XD9mv3k/e795/3p/ef99/0J/hH+Jf4r/jL+X/5d/gn+vP3T/Tb+cf5G
-/tj90f1p/gD/L/8L/+3+J/+N/67/a/+p/sD9pv1n/hf/UP9N/0v/S/8u/9b+Vv4u/rv+lP8BAOv/
-t/+0/+b/EwAMAM7/m//b/2gAqAB+AD0ACwDb/83/IACHAJYASQAAABgAZgCFAJsA4AD8APYANgGq
-AdkBcQHdAMkABAEVAQcB2gCMAGkARgDV/7D/+f+t/9b+N/4Z/qz+TP80/67+P/4b/nT+8f62/sT9
-5fz1/Ar+3v5+/mD9nvzz/NH9tf2B/AH8Dv1e/lX+0vyM+0n8Nf5w/kH8vvpO/CP/tP/9/L/5hvmj
-/OD/DwBL/Yj6Uvpb/Dv++/0K/EP6bvlg+Wr6iPz9/RH9pvpS+XX6yfzH/cD8ePst+3T7Ovxe/Tj9
-G/sj+WX5Svuf/Ef89/rG+XX5nfrN/CL+e/2d+7T5J/kp+3L+m/9a/R76uvjb+Wz8g/6O/uP8fPvU
-+4X9OP8/ACwAWf7n+yr89f/BAsUApPwu+x39e//s/77+4f2m/g4A9P9Y/nX9Xf6O/4D/L/84AOUB
-AwIBABD+bf48ACABkACM/1b/SgAZAbEAJACvAJQBqwHZANL/+v/+AdUDNAN1ATMB/gHwARoB3QCc
-AX4CxQKEAjkCLgIdArABNQElAYkBPALqAvYCOwJDAYcAeABHAQgC3gFvAZ4BQwLHAs8CQwKcAaUB
-TQL0AmgD2QNQBEUEUAMfAiMCWAMvBD8ELAT6A9wDZwT2BL0EdQSMBKAE3QRQBbQF6AWzBTQF9wQa
-BRoF8wTzBNkEygRBBeEFAgbmBSoGlwa+BpcGPAbzBeEF7QXjBcgFLQYBByYHbwYCBooGXQeXBzcH
-3wYLB1sHIAdhBvEFQgaJBhgGeAVoBZYFWQXCBCMEwAOoA5MDXwM0A/MCogKGAjsCoAF1AZ0BkwG0
-AQcCAQKYAS8B9QDRAIYA8f+W/9z/LgAXAN7/yf+h/0X/Ev8q/zn/Pf9f/3v/XP8B/47+OP4s/kv+
-bP6w/vD+xP6M/qD+Y/6l/ef8xfx8/WP+3/4H/xj/Fv/A/jL+6P24/VH9Af0Y/YH92P25/V/9aP2j
-/aH9k/3L/Wz+Jv9H/47+o/1X/aT95P2G/av8Rvzs/L79vf1e/X39LP71/kj/0P5A/nr+zP5U/qz9
-5f3F/v/+cf4F/gv+K/7+/bX9w/0C/mL+u/6n/m3+Uv4z/g7+EP5N/qv+B/8k/+P+aP4B/iz+3f5R
-/yf/jf71/Qf+xf50/5r/eP96/3j/K/+z/qH+9v7w/pj+Wv5k/hP/9v/c/+n+U/6H/jP/s/87/xf+
-kf3Z/Sn+Sv4m/r/9h/2o/bX9S/0C/XD94v2u/Rn95/zc/Uj/Of94/SP8tPwa/m/+av1z/Pz8jv7u
-/kX9+vs8/Tr/B/8S/VX8EP4LALT/kv1c/On8uf3j/dP9GP5T/oz98/tW+3/8U/0e/Hb61Poh/dP+
-Fv6Q+375tPmD+8r87/ye/ED8V/wY/XT9TPyQ+jj6Yftx/HT8NPzk/B/+Tf6k/I76SfoC/Af+3P4B
-/nb8u/sQ/Lr8Vv3G/Wb9TPz8+2X9EP8F/+v9h/22/Zv9lP1m/ub//gC0ACj/0P3m/bH++v5O/7UA
-8gECAdf+4f1t/jv/j/+a/ygAtgEYA3wCSgAT/xcAtAHJAZwAEQCTALcAvf+5/uD+HABJAVkB5ABr
-ARcDBgQGA6MB1AFoA9gE+ASoA7wBXgA8AAcBCQK/Av8CywI5AvMBeQIDA94CrwJAA30EbQXUBNUC
-SgFtAW8CAQO/AlcCpAJVA2gDywIkAgkCogJeA2sDygJrAq4CFAM5AwYDhwInAl0C5gJDAz0DFgMV
-AzkDVgMpA+EC9AJdA8kDBgT/A8UDjAOFA7QD8gMmBDAE/AMBBJMEIAU+BSMF+gTWBPEENAVVBWAF
-ZQVUBTEF6gRLBLoD1gNRBKcE6wTyBKQEkQTtBDAF/gSRBFQENgQFBAsEUQQ3BJUDRANoAzgD0wKl
-Ap8C2wI/A0gD8gKgAoMCrQLZAo8C4gFbAUoBnQEGAhoCvgFlAZQBNQJ1Au8BfgHIAUkCaALoARYB
-iQCCALIAtQBuAB8AMACUANoAvwB1AFYAcAB6ACoAdv/f/uv+S/+N/3b/Bv+n/pf+kv50/qT+Of9j
-/+3+g/6B/tT+Jf/P/sb9IP1S/Zn9mf1u/VT9k/30/UL+cP4T/l/9Of2i/er9xf1l/Tb9Pf0l/e/8
-yPzz/Hv90f2h/Yr9Av5g/jD+5v3C/cb97/3U/Yf9jP2+/bX9mf2s/QP+W/5D/gL+Hf5j/iP+ff17
-/Q3+Zv6e/u7+BP+Y/gj+z/3Z/QL+Df59/bD8C/18/v/+B/5B/a/9nf4m/9D+F/5k/pf/CQBc/3z+
-N/6O/sb+WP7I/c79E/7f/Vz9af0r/uz+a/+w/5//N/+u/of+zv7a/oL+H/7D/Zv9DP7U/iz//v7T
-/tr+5v6w/kT+Cv5D/qf+4/4b/1v/Tf+o/ov9w/zM/OL8dPw7/MX8x/2k/qL+s/3p/Bf9n/2B/bb8
-afxs/bX+uf5x/QD8TPvJ++78qf0G/o3+nf5w/Tj8SvwL/Wr9Tf1y/Sz+Jf/f/6b/Xv4I/an8KP2v
-/dT9h/0S/Sj9v/21/ZX8gvuv+wP9Tv6l/l3+O/5s/sj+xf7c/Rr9sP3Y/jz/0f6I/tn+Sv9y/1H/
-IP8c/xv/y/6J/uD+NP/f/lP+Yv5Q/4cAIwHfAFYA0v9R/zn/v/+lAKkBTAL9ATUByACJAOv/Cf/P
-/vj/wAG+ApcCrAGaADsAqQA6Aa8BVQITA3oDnQOMAyQDiQLuAa4BJwLyAj8DLAM5AzgD2gI1ApsB
-ngFPAjQDBwSWBI0E4QMsA/oCGAMaA+oCxALwAmkDrQNSA3kCyQHQASkCPwIrAkcCxgKTA/wDewOL
-ArIBGgEnAb4B6gGkAQwCDQNpA9sCRQI4Ao8C0wKzAnoChAK5AvcCIwMiA9UCbgJDAkUCWwKBAmcC
-MgJ4Au0CEgP6AvgCNQN5A4oDXAM3A1MDmwPgA/kDCgQNBMMDaQNMA0UDFQPRArgCxgK7Ap8CtAK+
-AnMCQwJTAmECtgKDAwQE4wOVAx4DqAJzAgoCbQFFAZEBoAFQAR4BMwFbAaMBMQLRAi0DSgNnA3cD
-MgOOAv0B2gHkAdsBtAFrAQwBxwDFAPIAFAEgATIBPQEoARIBMQFVAS8B0QB4AEkAUwBrAFAALQAv
-AAkAxf+i/5D/Xv8g/0L/mv+X/3j/a/8G/3r+Pv42/j7+Lf7D/XH9of3i/eL9z/2c/TP9F/2y/W/+
-Xv6O/dv8vfw5/c39fv1k/P772fza/f/9Yv3+/Iz9Rv4s/q/9z/16/qn+7/0M/f/84/2c/gn+4fzF
-/Lb9Uv7g/fb8mPz3/Ev9Fv3A/Pb84P1z/v/9M/2x/L38Dv3T/E38cvwM/U/9YP1G/ab8/vv/+6X8
-Xv2P/SX9qfzB/Fn9x/3D/az97f2H/v7+tf79/dv9lP4s/5r+e/08/fT9d/4v/tP9Gv7n/o3/fv8U
-/9P+h/45/mz+If+2/6r/Gv+F/l3+k/6O/gD+zf3Q/gMA///p/uP9kv2d/cf9Of7I/jD/k/+C/3n+
-uP0w/qz+Sf7X/W/+7P+9ANr/aP7o/UL+tP7i/gj/mP85AAwACv8f/hX+sP7z/pz+rf5w/8//P/83
-/nX9gv0N/n3+Bv/7/6cAHgDL/ij+yv7X/zgAtP8W/+n+A/8b/x//Mv8u/wj/Lv++/wEAj//s/sP+
-Of+4/8f/uf+o/x//SP7e/e79Kf6Z/iv/gf8r/yL+Q/1P/Sn+bv83AL7/9v4H/0L/5f5t/k/+df7G
-/mT/YgAtAesAtP+o/rj+qf9XADUAFQCoAIYBBAK7AdsARgCjAIEBJwKLAuEC4gIyAl8BJQFqAcAB
-DgJiAqkCnQIdAmcBEgF4ARUCdwKdApYCogKnAtEBQACN/z8AVAEoAoICVAIiAiMCyAECAYoAywCd
-ATsC9gE2AekADAHuALsAEgG2ASYCfQLRAvQC8wLaAqQClwL5AoIDoANqAzkDRgOqAwYE7QOIAzID
-xwIZAqEBtwH1AfMBzQHHAcgByAEFAlcCawI3AhUCcgIWA1ADBwO2AocCPQIJAi0CEAJ1ASkBWQF/
-AWoBVgFWAV8BvQEUAuYBxAH+AUACUQL1AXABkAE1AqcC3QLbAp0CawJnAmMCCAJoAQYBNgGqAfQB
-/AHQAaYBiAGCAcUB0wFnARMBMQGKAcMB1wH0AQ8CAALpAdoBrAFbAfUAgQA9AG0A2AAQAfMAvQCU
-AFQAMwBcAHsApAAZAVoB9gCnANgAvwBAAOv/5P8xAFsAAAB9/wD/x/71/uX+Pf6m/df9Qv4m/vT9
-9P3W/bH91f0//qr+1/7h/vX++v7z/hP/Uf9//2b/Iv8a/zL/KP8c/xb/+f7L/qD+Sv7e/eb9Vf6H
-/oT+gf5v/of+sv6//o/+Hf6//cf97v2h/Qv9rfyU/Jn8ivxF/Aj8bPxI/Xb93/yp/DX9DP6R/mj+
-JP5N/nX+Xf5E/jz+O/4q/rv9Bv3q/JL99P2U/UX99P0m/7L/cP8j/0r/lP9o//f+9P4L/83+vv4K
-/0L/+v5K/vD9ef5z/wkAMAAUAN7/5v/b/27/D/8n/4f/u/+1/6n/iP8X/7T+G/86ADcBQAGxAMwA
-YQEiAR8AQv/5/nH/HgBRADIA9/+6/6X/v////2cA0QD/ADQBcAFNAaYA1//b/3MAIAD4/mf++/7a
-/+H/2f7c/S7+bP9FAGYAcwAbARICFgKrAPr+gv6I/+sALwH6/6P+eP4Q/1T/zf4a/jv+MP8bADoA
-bP+2/hr/zP+X/5T+vP3k/bL+7P7o/XL8C/z5/Bz+gf7B/XH8V/zL/VH/5P8u/5b9qPxA/TT+SP7o
-/cf9sP2R/fP9s/4T///+3P7P/vn+Zv///5YA3wCjALj/jv5c/iz/4f/u/zj/bv7A/gUA+wDbACMA
-6v9PAIcAcQCSAOoAGQHsAIMADQCa/4b/HQD3AGQB8QDp/0z/vv9vAD4AqP/K/8YAzgGlATsAQf+d
-/3UAygBcABEA6AAPAs0BTQBy/7//BgDL/+b/9gA+AuYC0gI0AooBUgFsAXEBawGcAeQBGQI8AjAC
-uAEbAfgATwHUATwCMgIFAmkCIwMxAzsCKwECAakBNgIrAuIB1AESAmcCXAKwAcUAVwC5AFEBbAFI
-AXkBxgGfAQsBhABlAL0AOQFxAYsB0QEhAiECnAHGADkAMgB0ANEACQHmAIwAUQBmAK0A+ABCAYsB
-zgH0AeMBjwEuAR8BfQEUAmcCIgKhAYoBvQG8AaYBwgEMAlsCjQKcAqEC0gIcAxIDpwI8AgQC/wH/
-AdcBugHYAdwBsAGCAfoAdQDfAJ0BwgG2AaIBIwHFAAoBOgHVACUAiP9q/+L/RAAjAMf/k//b/24A
-0gDiAM8A3AAGAfUAkwAvANv/hP9s/6T/y/+r/1//F/8K/0j/Zv9Y/5f//P///6r/c/9x/3T/dP87
-/6H+I/5I/p3+m/5z/mD+lf4l/7H/6f/O/1//zv6l/gv/gP+T/zr/7P4B//T+cP69/Tv9W/3//Xz+
-sv73/mb/r/9Z/2T+V/0W/e79x/61/iz+/P04/lL+yv3c/I38m/0M/3//SP9a/wIAqABiAJb/Sv93
-/0z/i/4c/tL+6/82AMD/P/9N/7X/mv8W/xT/5f/ZAAQBdQD5/9X/l//K/tP90f0B/zcAnAB3AB8A
-kP/7/p3+pP5W/0EAZgDJ/3X/4f9dACgAcP8G/3T/QwCuAKEAZAAfAOn/q/9M//r++P48/2z/g//j
-/04AXgBVABQASf+R/qT+h//7ABICZAE8/5v9wP0N/yAAJAC8/zkANQHnAP3+Jf0l/cT+lAALAr8C
-6AEAAFr+xf1c/mn//f/2/wYAMQBd/x79D/sK+9n8Nv+mAEAAZ//H/24Ahf85/cb76Pxp/6gArf+Z
-/TT8Lfwf/S7+ef4E/nX9cf1Q/pD/MgDv/03/9f4D/+b+Of5o/S399P1m/0sA0f9x/hX9Gfyp+x78
-j/14/yoBaQKsAukA0/3j+zX86P21/4UADgBj/17/SP9x/kn9qvyT/QMAAQItAl8BUQA7/63+0/43
-/6r/IwBsAEwAaf/2/Q39ff23/nD/U/8L/y//mf+Y/wT/yP52/20ApwDU//b+C/+i/wQAcAA7AfcB
-2QHWAP//HwDIAAwBzADjAOYBCgMLA70BWAAMAJ8AMAGUARkCgwJgAqEBcABd/zL/u/8IAFEARwE5
-AhcCTAGsAA4AZ/9J/9z/xQCiAQ8CswGhAN3/TgA9AXwBBgF9AHQAAgG6ARICwAE5AW0BYgL5AqgC
-EAKqAWsBeAH0AWcCVQL6AcQB0gEeAl8CQgINAmcCNAO8A5gDBgOaApMCwgLfAvACKANUA0ED4gJ2
-AlcCXAJgAsoCewPPA9cDwgN1A1IDqAOrAwgDpwKnArQCwgJyAvUBzwHfAQYCUgJbAh0CQQKeAqsC
-fwJYAigC0gF5AUkBOAESAQYBVAGJAVEBEgELAQkBAwHZAJ8AwwANAQMB2gD6AFcBZQHSAC4AHABf
-AJYAugDLALEAgwCdAMAAUgCx/3L/mv/p//n/t/+N/4z/av8w//P+tP7Z/oX/uf/G/pj9Kf1+/WL+
-Sf/A//P/xf8d/7f+0/63/m/+o/7t/r7+b/5R/gn+PP2e/Bz9cv6g/wUA1v/S/zUAeABAAPH/OwAJ
-AVYBuwDp/3z/jP+U/wX/PP4h/tX+eP9z/yn/Rv/3/8kA4QAOAEX/WP/1/wQAQ/+y/u3+Y/+L/2H/
-/f6n/pj+fP5p/tX+df/m/z4AkQD/ADkBrQDT/1f/H/8//8v/SgBkAFgAewA/ADT/UP6b/tX/7AA/
-AUwBigG2AY0BvQDA/+X/IwFTAqkCEgKBAZcBdgGuAB0ARADFAFIBRwFFADv/6P4b/zH/0f6R/gH/
-u/8OAJT/q/5C/of+5f79/gv/SP8k/wn+yPxh/Jb85vyy/Ar8KPxB/TD+HP5N/cH8Bf2L/Xb9NP28
-/ZD+jP6j/f38Xv0v/oz+9f1t/AH7vPpm+2L8L/01/ZX8TPzj/I79Pf0b/DH7Mfu2+/v7BPxt/AX9
-xPzp+9v7/fxN/qP+1/3L/Ez8WPyk/Gr9l/7g/kr9O/sP+7X8Gv4W/lD9Tv2Y/oH/ef7g/CX9Bf/0
-//P+iP04/eL9Ff76/N/7Wvzh/b3+VP6J/WX9Yf1d/G37ifwv//4ArwB7/zf/oP8T/5X9//xI/moA
-twF3AXYA1/+6/2P/p/64/tT/egAwALv/ef9e/zL/3v7O/pz/5ABpAdgANgA+AIsAdQAKAB4AGQHg
-ATwBrv+P/ob+P/8OAHcAdQC3AEcBHgFdACMAbwCGAFkAiAA/AaAB7wCn/wT/mf9uAFgAy/+9/wQA
-RgBMAOr/q/8cAPYAZgEUAZcAawCWABkB6AG4Av8C3QLwAmIDEQR0BGgEnwQyBaMFnwUTBXsESQSa
-BE8FugWABTAFaAUsBrkGyAYZB5gHrAegBwIIhQh1COwHegddB14HSgc4BzEHIgcGB/AG2waUBkIG
-KAZCBoUGyQbgBsMGeAYwBhAG9wXZBakFRQXUBHME6AMzA84C6QJEA6cDugOKA2cDLwPiAogC4QEo
-Af0AfwHeAYYB5wB+AFMARAAAAIP/Rv94/8T/xP9u/xb/4f6X/jD+D/41/u/9Rf0R/Tj9K/0L/dD8
-e/yj/Df9sv0g/kb+Hv5Y/rT+lP5O/iv+1/1g/UT9pP35/ev9+f1D/kj+Mf5p/qb+qf7R/lX/+P8f
-AJT/Df8c/1L/OP8i/0j/gf+0/6D/Rv/r/rf+xv4G/37/CgAwANv/Zf8y/1b/rf///zQAmAADAfQA
-iQD//3T/W//f/2cAWwAIAOb/7P8DAO//jP9B/1v/jv+U/4L/Zf9a/2f/Y/9X/0v/I//M/mP+OP5V
-/pr+9P45/1z/e/+O/1j/5v5t/gz+GP6W/v3+Hf8g/93+eP5S/lL+Z/6S/pL+ff6h/uD+HP/c//cA
-HQE3AEr/qv6h/hD/Gv/V/r3+pv5g/uT9b/2f/aD+k//V/wQAawCbAIIAWQCBADkB9gECAl4BXwBk
-/8n+nv6d/qL+1/4h/+T+Dv51/Vj9Uf1n/bX9Mf6+/ub+SP5W/bX8jvy9/AT9Kf0t/Vn9sv2z/Sz9
-sPyK/HT8UvxV/I782Pz2/P78Pf3m/db+Nv/2/hD/tP+jAG4B8wBQ/xP+1f0r/p7+df6s/SP90fwo
-/HH7Lvtc+4/7ivuo+/n7vvsF+wf7AfyM/MT7ivpN+vj6QPui+rL5FfkI+T35uPj39vP05/NN9Ln1
-EPeA9zT3Jvcj+Ln5lvps+ij6dPo2+977CPyl+776xflx+bT5Fvqu+pz7nfx+/RH+NP5l/tD+7f7T
-/k3/cwBXAXgBQwEGAeMA8QCtADUAtQA3AmADCQNOAa//hP9fALwANgD0/9QAKAKrAhoCLAHlAIUB
-MgJsArkCXwOZA7ICRQFzAKIATAGUAVgBHgEBAb4AWAAQAAgANQB6AKsAxQAJAV4BJAE/ALz/eQAA
-An8DnARRBf8F2QZ3B3sHIAf/BmUHHAjXCEEJ9ghyCJoI4wjJCDkJawqfC5YMTg2uDasNeQ2mDSsO
-Vw4yDjsObg5sDv8Ncg0tDSwNQw2KDeAN5g29DY4NRg0VDQ8NxQwkDMMLrwtWC9EKpQrECvIKDQvQ
-Ch0KRQlvCHMHfgbaBVwFqQTgA2MD9QIzAmMBxQBYAEIAYwB/AGUA8P9L/5/++P0//RL8pvr4+Rv6
-HvoI+hD65fnc+SP6Kfq/+SX5jfhF+Dr4uvfh9pz2/fZq95f3s/ca+M74gvkP+mz6rfoJ+1r7XvsY
-+5L6Evra+bP5h/nG+Y36Z/ss/AX95P2h/kX/0/9KANUAZgHoARgCzAGRAboB3QGnAWMBjwETAnsC
-yAJJA/EDdQSpBKEE6QRlBTIFsATDBCwFcQWABXAFpQUbBlYGQwbTBesEKwQJBOIDOwOvApkCYgKk
-AcgAQAAhAGoArQB3AEoAlQCYAPr/kf9s/+f+Pf7S/Yz9Mf2i/Pz7Zvv8+rj6hfp1+mf6KPrj+Z35
-QPn9+L/4bvg9+Ef4Ovip9+j2wfYA9+z2zfbi9oL2yfV49Tn1ufR29H30oPQg9en1ivb/9k33jvcH
-+Ij4xvj/+EH5Pfk5+ZL59fkN+hH6ZPrs+jn7cvsd/AD9kf1v/pcALQMtBEsDRgJGAvoC7AOxBPIE
-DwUjBZYElAMDA20D2AT3Bt8IjAlaCf0IdQjLB2AH6AdaCW8K6wklCB4GSwRTA28D/AOzBCQFaQTF
-AjoB/f8U/6H+j/6l/pD+//0J/RT8Gfs8+iH6tvow+xn7lPrP+ev48/cQ9832Mvdr9xD3ovZi9gz2
-wvUa9u32XPdN94/3ofib+d34sPYA9ab0WPWA9lf3ivd693P3L/eq9ob27vbv93/5mPqK+tz5Ifnf
-+AP59/hZ+cL67/vr+3L7DfvW+gD7avso/E39Kv5I/tf9PP0z/R7+T/8sAO0AjAG8AeEBOgIiAnwB
-awGeAugDMATcA3IDBgOGAvgB7QGfAlwD5QNvBKEERwTNA4kDYwMHA5MCiwLqAhQDggJqAWYA5v8p
-ANwAVQGRAbwBXAEuAAD/bv4//mH+yv4t/1n/A/9Q/vv93/20/Sb+NP/D/2n/ov6u/ZH8sfs/+yL7
-afvV++T7UftY+qT51vnw+nP8if7cAe0FPglSC58MXQ3eDUoOjQ4BD4APGQ+XDfULQAvNCzINAw8k
-EVETPBX5FlgY4hgUGQoaphuEHB8cMBsQGrcYZxdzFvIVyxUZFtIWQxfAFoEVPxQyEzwSexH4EGsQ
-0w9gD9UOLw7vDUwOqQ5pDqgNvAysC+0JeQdSBdwDjQIEASj/DP0P+4L5pfhL+On3u/dT+Hv5Wfoc
-+tD4LffR9aD0I/Ow8Sbxi/Gm8X/wsu6E7UPtWe2P7bnti+107QTuwu7m7tnun+8m8aHyivPb8wX0
-c/Qp9dT1dvZs93z46Phw+Kb34PYS9uj18fZ6+AX6wPuX/WP/yACcAYkCxwO+BHgFaQZwB/4H2AdP
-B9wGugb9Br8HjQj9CJcJsQrUC5oM5wzPDMMMIQ2UDZEN6Qw5DDMMfgySDGkMSgwkDIQLVwrrCJ0H
-hAarBSUFmwT1A0sDaAJEARcAMP/B/qz+mf5N/s/9O/18/D/7aPmH9yz2F/UU9ETzcvKn8TzxFfHK
-8D3wm+877x7vu+4D7oLtSu0Q7Rztke3P7aftx+2A7hHv6u6F7oLuFu+/7wPwKPBM8Drw0e9G73jv
-t/BB8pvzAPWU9gb4LPkp+u/6xPve/Kr9uf1I/fj8F/1j/aT98f13/mD/mAC0AboC7gP4BNgFJwdj
-CL4IoAicCNAIbAnFCsQMcQ76DqYODg5kDb8MewyfDBcNyg3QDeoM/gtcCyoLNgySDuoQ4BEsEWAP
-DQ2fCuoImggXCQEJogcwBWQCDABj/ov93/3Z/kz/4P4F/qb8mfq8+ML3nPf99+P30vaA9V/0TPNT
-8g7yw/KQ86Dz6fK58Xnwae/d7lnvfPBi8drxNvKa8vzyZPNM9Pf1rPf9+BT6pfo2+rL44fb19V32
-U/f092D4Lvkr+nb6Mvqt+lb8bv5BAHwBAwKSAWMArf/G/9//6f9xAFoBxQEpATAA7v96AEUBTAKK
-A0kELAR+A64CSQKLAi8DOQSdBasG2AZlBr8F6gTyA0YDeAMhBP4D+ALPAb4AAAAFAIwAEwHFAXgC
-sAKMAhkCOgFvACQAFQDp/3L/tv6+/Xz8LPtN+gn6YfoY+4n7l/uV+1L7d/qF+T/5qPlM+p76h/pF
-+sf5Fvlu+BX4Jvh4+Oj4P/kF+e/3jPbp9ST2T/Yk9rr2kvkG/3AFxQqMDj4R+RK/E94TeROXEucR
-qhGSEOkNPwu6CgoNahE4FuYZkRznHtEgHSIoI+YkcScZKRkomSRbICQdbhu2GqkaFxuxGzccXxz7
-Gw8bEBqJGSYZ2RdUFb0SUBGsELoPxA7DDowP9A86D4wNWQv+CHgGcQM9AH79Svtl+f72iPM+8KLu
-yO63723wFvHa8nv1pvYK9VbyUfCH7hPs6+ip5Xnj5OId4/XiD+Jy4X3i/eRX54Xo3+g26QbqLusq
-7BHtkO7H8J/yy/LC8RzxvPFs82j1JPd5+Ij5WPpb+i/5vfd199v4JfuC/RwAUAPzBlIKpwzrDQEP
-XRAwEcYQmw9wDlMNSgzBC8IL3ws4DAoN+g3LDrkPCRHMEo8UrBVcFrYW9xVIFDkSpQ9tDaAMeQxP
-DH8M1QynDKsLtAnyBmsEDQOIArsBRQCv/l39b/zN+w/7Xvo++mn6SvqY+Uj4v/Zq9fzz9fFs7+zs
-uOrJ6Frne+Yr5pfm2eex6UnrJ+yB7GTs4OtK67vqWuqJ6urqwOoo6nvpxOhW6J/osOlH6+vsUe6K
-793wLvLr8ijzk/NP9Cv1K/ZK94j4xfnr+jz8tv3c/oL/LgAxAfUBDgL4AU0CKwOEBBUGbAelCAQK
-YgvRDCEO5A5eD8oPHhAXED4P4Q3CDBMMegu1CiUKMwqoCiELgQsWDEINSA9aEu4VdhhwGOQVnhI5
-EOMOCA4DDY8LvAlMBwwEsQCt/g7/eAHHBGgH0AdHBiAEAAJgAOv/lAAtASYA/Py5+M708/GH8JDw
-YPHt8Zvx1fD97x/vsu5L7+nw0vIy9ND06fST9A/0xPP48+X0I/b49t32lfWv80nyxvHy8QfzHvVJ
-96H4Ufm1+Rb6FvsV/X7/hAEjAzkE7wPoAe/+kvwf/Ff9tP4G/6n+dv5A/uf9Sf67/7YBBQQABqcG
-HQYnBZEEuQQaBSsFQAW2BbUFNwTGAdj/Hf9x/0AAKAH1ATsCuwHHACoAVAAbAX4CPASVBdcF+QSn
-A1MC/QDL/xb/3/57/nL9AvyX+qj5cfni+f36VfwR/c789fs3++b62Prl+u36tvpM+tb5JPkH+Iz2
-+fRR9Jj1iff29//2X/bI9lv3VPft9gz3J/ij+Xz6F/rn+MT3RPdy95/3mPfN9zb4nvit+dj8pgJ8
-CRsPlRJaFBYV9BTrE34SvxH8ETYSdRH8D3cPQBHmFO4YMBykHvMgYyOWJQAnuSeCKB8pBCivJF4g
-mxx4GvQZ3RlpGfgY/hg0GTQZBBnAGGoYqxf2FTYT7A8fDe0LBAzFC6UKdgnACBwIkwbCA8AAqP4u
-/Yz7Svm19qT0BfMF8XPuMexP6yLsru2y7k7vS/Br8Vzxi+/t7H7qZ+g/5qjjRuEv4K/gAeI24z7k
-u+X35y7qe+vU6y7seu177zLxDvKU8gzzB/N38qHxKfHi8drzXfaf+Hz6U/zY/X/+nf7H/jf/MgDK
-AaoDvwXrBx4KsgwpD28QqRCoEGYQrA/fDh4OfQ16DUUOZw8LECsQdxAdEQYSKBONFF4WVhikGZwZ
-IRixFQETbRD/Dc8LRAqeCXQJWglBCUAJOwkDCVsIKQfoBb0EQgOQAQEArf5z/SX8pvr5+E731PVq
-9PbyDfIy8qjyePKF8dPvpu2u6z7qPemn6JnoQumB6obr9+tH7HPsIOyK6zfrPesh67HqYupS6mfq
-zep760/slO1C77jwCPKs81v1rPaK9y34Avm1+Y35z/hi+Nj4PPrt+0791v7uANIC7AOLBDsFVgaU
-B4UIXglaCj0Lxgu+C1wLYwv4C0QM/wtMDHENMg4vDq0N0QxLDEQMEAyACwYLIAutCxIMGQwmDIYM
-4AzQDIYMrAwADc8L+Aj6BjAHVAicCGsHxAUMBVcFsgVMBTMEnwMuBJ4E0gNpApkBugHmAeEA3v5M
-/db8ifxf+9H58fgQ+YD5+vg19zL1OvSw9IX1nvUV9Yr0I/QH9Eb0TvQh9G30DfUi9Yz0HfRa9Bj1
-r/WD9S/1rfWx9oX30vfD9yP4JPlB+g37UvtT+4X7Cfxi/Gj82fwC/ir/gP9b/8v/EQEcAu0B+wCi
-AGUBdgLOAioCaQFUAZUBrwF8AUcBjAEWAjsCogEOAXQBQwKDAg4CfQFWASkBiwDw/83/9f8AAJP/
-2v5f/i7+wv0K/dv8T/12/Tz9HP37/Nb8vfyu/M38uvwo/Ij7R/s4+936J/qb+an5CPoc+tj5fvlb
-+cD5Nvr++Un5Afmi+UD6rvlO+Ff3cvdy+DH52fgs+EL45fj1+D74yveC+Av6B/vg+i36q/m1+fL5
-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
-kBG/EX4RDRETEJoOEQ0KDNELUAw7DYUOpRD2ExUY9RuCHgogjiHrIkUjXiLdIFMffB3OGnMXLBQG
-Eo0RzhH0EQgTmBX+FyAZ7Bm6Go8abxnuF80VGhNSELINbAuLCREIGAcZBswE7AN8A78C+QHnATcC
-CwJeAbMA7P+O/o78bfqL+AD3LfYw9jn2q/Xa9OfzkPL08D/vfO0E7F/rh+sI7MHsue2z7rDvzfCD
-8YTxffHa8RbytfES8bbwYPC17+3uY+4S7jjuWe838WTzu/Xf9935yvvR/Mn8hPww/KP7M/sb+0n7
-p/sM/Mn8Qv7h/wQBJQKYA/0EOgZnB28IHgmTCUAK3ArBClQKMApACksKQAppCiELEAyfDOMMBw3Y
-DGYM7AtzCxcLzgqwCu4KMwsyC/MKhwrZCcUIlweTBnMFBASbAq8BLgGsAL//pf7m/T79uvzj/Dr9
-EP24/Eb8dvsr+kn4QfaT9PjyR/H27zfvr+4m7vztP+577szudO8T8B7w4e/K72bvvu477nftZOyj
-6zbrteo36iTqq+qX663s9+1M73jwevE+8t3yXfPC8zj0nfTR9Pf0SPXQ9V/28PZr99H3pfj2+Tj7
-Nvws/S3+Gv/T/3UAOwHwAWUC/ALuA9MEXgWZBcIFKwbFBiUHOgdDB20HbwjcCkcNZg2UC08K1gpZ
-DFwN/AzxC3sMlQ9xEuMRYg+GDgkQBxIiEp8PvAzlCyMM5QpjCDkHnwj6CpULlgkeBwAHEQlACsoI
-VgYgBR0FgQTtATT+jvu0+nP6yPnb+G74+fj6+T36jvlK+Wz65/vA+6L5O/cQ9kD2s/YT9qT06vNr
-9Cf1+/Qw9CT0i/W/9zz5Xvk8+YT5XPlm+Gr3Ofcr+Kj5d/oG+gL5tPiS+dn6tPv8+x78kPxY/eb9
-vv1x/Qz+r/9TAd4BaQELAWYB7wHCASIBGwH+AfsCFgMoAtcAIgCEAHwBOQJzApsCNwP2A/oDYgM3
-A4wDrQNNA3gCuAG5ARYC9gGbAcMBxgJQBA4FbwRkA9UC5gIPA+ECagLnAYMBNwHOAA0AoP8yAO4A
-4wB4AG8AzwDaAOv/Zv5b/T39Yv0R/UH8jPuU++/7//sU/ND8//1+/tz94fxv/Ln83/z/+7X6OvpG
-+rz57Pi2+Nf42fjj+A75Qvmk+QD6efmC+HT4Qvlk+gf8Tf6jAJkCrQRFB7sJDQsaC5EK5gk+CXkI
-VgdvBrwGgwguC6kN/w9AE/cWpxk0G1scsR1oH1cgFR9SHK0ZixdnFdcSQhDxDncP9RC5EsYU5hbW
-GKwaCRxEHIYbExrGF/QURhL4D7kNpguCCu4JyQhFB00GLQZpBrYGHQcRB34G/wU1BV0D4wDG/gL9
-OPux+X74iffe9kX2ofXB9Jfzi/Kp8X7wxO7r7OTr+euK7ALtPe2L7WLuRe8n7xzuIu2n7Gns5Ov+
-6lrqLurZ6SnpoOjd6DrqZuyX7kjwvvFr8yv1dfbj9pf29fVK9d/0u/SA9Cr0jvQF9g34NfoM/LP9
-wP/qAW4DSAQ3BZMG1AdZCAUIVwfVBpkGuAb6BhkHogf5CGQKPwsCDP0Mmw1+DUANig3eDcsN1A0h
-Dn0O0w4sD1sPCg91Ds8NtAxOCy8KfwkLCWwIiAe+Bi8GmgXTBA8EpwOZA74DugMuAzQCDQG7/wL+
-7vvl+Tf40vZm9QH0D/PJ8gXzYfNU8/jy/fIn883yAvIO8TPwn+8P7xnuwuyF69fqz+oC6yHrn+uf
-7Gftuu0N7ozuBu9X77TvOfCO8Gvw/O+p753v8e908A3xJPJs82z0ePWg9pH3ZPhn+XT6Ufsd/Pb8
-uP1n/iD/xv9WAP4A7wEQA+MDXgTgBHgFKAbpBogHVQjICRQMNQ85EpETLhPtEgwUlxXoFaQU8RIc
-EjIS1BGEEOoP1BAbEv0ShxPxE9EUPBbpFqoVfBOGEtcSBBKxDkkKMgdzBrAGGQbBBMgDqgMHBCwE
-9wMKBFsEzAPrAaH/3v24/L/7ffrH+AX3DfZN9tz2a/Yd9TL0fvS79b32mfaL9aH0ZvQH9APzKvL+
-8Uzy0fJA81fzYfO988/zMPOs8uHyfPPf8+jzsvNd85Lz1/Sp9gX4tfgt+Y759Plg+rX6JfuJ+6X7
-x/vg+6H7ovte/En9+P2H/ij/KQCVAdUCfQOnA6kDxwPGA3MDHAP6AgQD9gLLAvgCzwMgBWwGPQdV
-Bw0HDQc5BwsHfQYABs8FuAVqBZcEZQN9Am0COwMvBJ8EewQbBOYDyANEA5ACWgIEAn0Ajf55/Sv9
-Jv1V/V392Pw3/OT7n/tg+3H7nPte+yj7hfus+9P6Pvn29/b3uPgJ+bT4GPiL9xn3k/ZD9mX2mfaB
-9jD22/Va9a/0lPRU9TX2w/Z299344vqz/K/9UP7K/5ECfwXzBjoGkgQWBJMEhwS/A0ADLwSjBlkJ
-Rgv7DI8P7hIYFhIYxBhBGS4aiBolGbQW7hRqFFwU8hNLE9wS6BLmE78VohdZGe0aXByxHQ4e/hxd
-G8sZOxh7Fk4U4REEEAoPNg7XDG8L9wpmCw4MdAxIDKcLBAtcCm4JEwhBBjYEHQIoAJX+M/2e+9n5
-a/jC92n3UfaZ9IPz+vIR8vDwO/Bh8ALxrfAv7wzuyO3K7ZPtuOxe64HqduqT6lfqxemg6XXqdOvb
-6+Tr2uv8647sZO037hbvO/CB8V3ygvIv8tPxm/Gz8TDy4vLk83X1QPfP+Cv6aPub/A7+w/9hAb4C
-6APqBMwFYwarBv0GcQfjBxsIKAhXCAkJqgrVDIUOmg9+EEMRBhKREnwSUBKdEh8TmhPGEygTCRJX
-ETUR0RDsDzAP5A6sDlkO2Q0gDX0McQysDGAMpgvgCkcK4gkcCd0HugbFBb0EkAMsAnMAsf5c/XT8
-nvvJ+kT67/lt+bL4xffP9jr2+vVn9Wr0XvMa8pjwQO8m7j7txezE7LjsLey66yXs1ewW7SntVe2P
-7Z7tQu2m7CvsqusU68nq3upJ6wrs2eyo7cHuEvBO8Tvy9/IG9ED1BPZS9rv2jfeb+HH5vPkK+vT6
-IvxJ/fX+DAGCAkgDIQRdBecGPQjuCFQJGApzC+kM8A0TD+kQnBKLE1QULxWxFb8VNxXaE7wSExPS
-E2MTIxL/EFgQ+RB5EiATEhNDEysTiRLGEc8QcQ+RDUsLHwk6B4oFRgRJAzACHAGBAJ4AVAHCASkB
-PgCv/x7/WP48/Y/7r/kH+Iv2TPVc9JjzMvMf8/Xy1vL78i3zHvPC8l3yI/IQ8uHxk/El8S/w/u5v
-7sXuiO8G8BfwEvAv8HPwuPDc8Bvxg/HD8SDy1/Iv8zTztfN09O70Z/Uy9ir3yffW96z3pPfM90n4
-OfkJ+lv6zPq6+9L8uP1Y/hD/CgDWADYBVgFmAZMB0QEAAj4CwwKgA7AEkQX/BSkGiQZMBx8IoAiq
-CIgIeAgwCJYH6QZ9BqcGDwfoBl0GUQbIBh8H8AYUBgoFwAT8BKoEngOLAssBawGXAckBRQGdAGMA
-HgCE/+j+6f4r/2j+0/zC+2v7xvqM+Zf4W/jJ+KL5BvpW+Xf4gfjr+H/4effo9uH22/ZU9hz1DvQm
-9OD0GfWQ9P/zVvSr9Vr3GPnj+qH8Pv68/1gBCgM9BJ4EiQSYBNoExQQ9BOkDRwREBbwG4QhrC2AN
-5w7TECcTjRV0F4cYzRg8GHMXEBezFg4WXxWOFMMTxxNxFCIVFBZ/Fx8ZhxqJG0UctxzFHI4c7xt0
-GnQY7RbyFa4UJxPjEQwR9hBnEWARlRCiD04PrQ+oD3QOuwxOCycK5whTB5wF8QN/AlQB7P9e/nL9
-H/3A/Oj7n/pJ+Rv4H/dK9jv1zvOa8tzxCvFV8DjwBPBA76nuYu7Z7U7tHu3s7E/sf+sq63vrnusK
-643qBesc7Bvt3u2k7oXvZfD78CzxcvHP8bvxR/EN8YrxdvJt85L0+vWO90D5x/rq+wf9jP74/4oA
-uABSATwCAgOZAxkEjgRaBZQGsgdsCO0IkQmCCoYLdAxODQEOeA7FDtcObw7vDSsO+A6JD7wPvQ94
-D0UPSQ8BD2EOuw1HDRINqgwGDI0LRgsIC8QKggpKCgUKlQkECU8IUgdGBoMFqQQgAz0BnP9m/rL9
-JP1G/Gj72fps+hf6r/nh+Pz3Vfdy9gz1rPPB8ujxwfCd77nuJe7c7YPtAO2z7Nns/eyZ7BrsBuw8
-7FbsAuxd66rqT+pM6hDq4elE6tTqVOsd7CntIO7Y7j7vre+O8ETxcPHU8a/yqvOv9Kz1q/YS+Ev6
-2vwt/hv+V/4BAJcCegRwBB4DwQJvBDEGQAbMBZQGCQlqDMcOUA+6D3ARRxOAE8cS1BKfE9ATRRJS
-DxYNSQ0sD0sQkg9oDksOSA8vEPQPLw/TDqAO8Q3rDLALBApSCN4GQwWiA7cCowKoAhICtwBq/yv/
-t//e/wL/Wv2g+9b69Pqm+ib5Vfel9gb39PYO9h/1hfSD9Ov06fR29BX0x/My8/HxK/Cq7jTu5u6p
-74zvDu/q7nLvXPDK8HTw4e/Z7+rwTfJZ8iXxmfCM8eLybvNd83vzMPQ/9ej1G/a99sP3rPiR+dv5
-c/nH+e/6mvu6+xz8Iv3C/lMAOQG4AYYCqQOOBOgE0gTIBEEF6wXuBWkFmAX3BpkIcglVCf4IOQn1
-CXQKVQoNCh0Kkgo/C6MLKwsrCooJWQkUCasIbQhlCEIIygciB5YGRgYzBhMGfAWOBKoDHAP6AvgC
-wQJgAgwCoQHvAIUAkAAbAPj+KP4m/i3+rP2w/Hj7ivrt+Yj5gPl1+R35yfiT+GH4gPgo+d35xPnS
-+An4CPjA+Ob5sPrZ+pH7if3m/8kB2gIIA/gCdgNjBA8FaAXLBTsGrAZGBzEIkAk4C7gM0A3PDh0Q
-rBE2E0EUmxSYFJwU4RQJFWcUERPnEawRaxKrE9EUkBVrFrgX5xiqGdMZdRk9GSEZyBhSGH0XSBZx
-FdsUqBMJEgYR8xBBEV8ROBHwEMUQ9BAwEbEQJQ8dDV0LDgqyCN8GCQXkA0MDnALvAScBNgBz/7X+
-pf1U/An7DfoX+b73Mvby9FX0KvSX80zyEPFq8EDwMfDk737vMO/J7i7uee2N7GjrnOp06nHqYuqK
-6uvqj+tX7Mrs6OwE7S7tYe197Yvtne3I7UruCO+w7ybwqfCC8aHytfOk9LL1/vZy+OX5Afug+0P8
-Q/0U/mj+8P4cAHgBrQJ/A7QD8APoBCwGIwfIB2UIOAkPCpIKxQr2CiMLSAu0C1sMpAxWDAgMPwyx
-DLQMRQzzC8ULewtLC0sLGwuTCvwJgQkuCQkJ4Ai2CIYI+wdCB8EGOgZSBS0E/QLDAZ0Apf+y/oX9
-afzg+7f7SfuC+uD5gvky+af40/cR94P2A/ZX9WT0VvNb8rrxbvHb8N7v++6H7mrufu6c7pPuaO5g
-7nHuNe7E7W7tFO3T7OXs+uyv7D/sRezV7GHtl+2/7Xbux+/N8C3xcPHg8b/y4/Os9Cj1rvVq9tX3
-cPpd/RT/DgDJAS8EEQbLBpIG3AW3BbQGVwfcBuUGSAj9CTQLBwy6DO4N2w/+EEwQbQ86EK4RsRHb
-D3oNTAyeDN4MygsgCmMJ4AnHCjEL/wogC9gLDwxXC0wKEwnhBx4HSgYOBQ8E2wMWBPgDZAOnAtQB
-OAEHAbgA4v/k/hv+kv0g/U38H/sZ+nX5NflH+X35gPlb+TH5mviX9432qPX19ED0UPNI8q/x7fFq
-8k/y+vEI8lXy4vKo8wf0+vNN9BT1uvXd9Xf1A/UC9Xv10PWx9cn1cfZk93v4hvk0+sX6t/uW/Or8
-IP2r/XT+Xf9FAM4AOAE+An4DPAS1BDsF4wXEBmYHSgfnBvcGhAcYCEUI9QfIB1kILgmACVwJXwnb
-CYIKEguvCzMMcQyQDKQMrgyeDCcMOgs+CnQJywggCIkHWgd5B2oH8QZABvwFUgaDBtYFvQQcBN4D
-mQMgA0wCdgEjASoB3QDd/9n+ov7I/mv+lf3l/Hr8H/x0+zT6Avnp+JD5ivm6+AD46veI+CL5/fhv
-+HH4kvkk+8v7f/uw+xf9zf59/yX/Af+u/8MAoQHjAZsBngHBAlsEIQVJBRgGnQf6CJAJQAkQCfoJ
-UQsHDGYMOg1+Dn0Pug+MD4EP5w+LENIQjhApEBAQXBD2EHoRmhGmEdYR+BEiEnQShRIqEggSnhIs
-E8wS6xEuEasQOhB3D0cONg29DI4MGgxICzMKTgkHCccI4we8BtgFMAWWBLQDaQJIAbkANwAx/8/9
-XfwG+yj6xfke+Rj4h/eF93b35Pa09Xb08vP784vzS/Ih8bHwk/As8ETvRu7u7TvuVu7g7VbtKu0w
-7Rbt2ezQ7CXtee2g7ZftZO1w7cPt6e0F7l/unu727sPvh/Au8QbyxPJP8wn00vQ19YP1RfZa93v4
-e/kB+iL6l/qt+9v8gv3T/XL+XP87ANoANwG8Aa4CowNIBKoE7ARbBR4GxQb2Bt4G7waWB2QIuAjA
-CLoI4AhWCbYJqwl5CZ4JCAo5CgYKugmoCbIJdwnzCFEI4gerBzcHhQbRBQoFZAQ/BC0EtwNCAw0D
-xwJSAqgBoQCz/1D/FP+C/rL92Pzq+yj7yvpS+n75xvh/+HD4Ivh49+72w/aq9mv29/Vx9QX1qfRd
-9Cv02PNt83Tz4/Ps85LzxPOv9IH1qPVl9W/1RfaG91/4XPjY97r3Ovjg+Fj5YflN+cb5jfrQ+sn6
-Svsj/Nn8W/3E/Vn+iP8EAfEBHQLkARsCNQMhBAMEmAO3A0ME3gRtBcUF2wUOBq0GawfOBxMIdgiS
-CGIIRwhSCHIIiAiBCFkICAiyB70HFggkCMoHegd4B78HJQg/CM8HMQfDBmYG1QUdBWAEzwO9A/sD
-3QM1A5ECXAISAkMBYwC//5H/GwBiAKX/vf4q/qr9R/3A/Mj7w/or+hn6IPrP+ZP5xPkC+iH6LfpK
-+mD6Ivrz+UX6qvqL+ij6x/lM+f34C/kS+RD5YPnl+Ur6ufpo++D76/sU/KP8Lv1g/YP96f0//kP+
-SP5r/pf+6f6G/x8AVwCRACoB0gEkAjkCZwK8AucC1ALOAuUCDwNuA+oDLAQwBDMEJwQFBBQEaASM
-BDIE3QMhBJsEcwT1AwEEVwSRBMYEywRHBFsD9gJaA58DUQP/AiMDWQMkA5oCKwImAkYCDAK3AZMB
-fgFxATUBtgA6AOD/rf+m/6f/gP8Q/4v+Wv5P/iv+Iv4U/tr9wv2s/UT9u/xX/Dv8Yvxo/C38MfxM
-/A/8+fsI/KT7LfvO+jb6uvl4+YD5EPqh+u/6Zfv0+4r8kv3T/oT/v/8xAP0AxAEiAjUCUgJvAr0C
-SwOCA7ADggRgBcAFKgb+BvYHzQhXCWYJYwkBCvsKkwufC3ULmAsRDI8M0Ay/DJ0MpQzwDE0NbA2J
-Dd4NLA4yDtgNSw3wDNAMhQwCDLgLwQvBC68LiQstC7kKQwr1CRQKJAqOCZ4IvQcZB74GNQYHBbwD
-JwMDA2QCTwF/ABYAoP8h/+X+yP6K/hD+Z/25/Cv8q/sz+6z66fkr+dT4/Pg6+dr4+vdJ9xH3HPcd
-99r2SPbk9dn1pvUq9Yv07/O08+DzFvQx9GD0s/QB9TH1SfVE9SD1QfXn9TL2u/WL9e71PfZE9ir2
-Rfb89sP3CvhQ+Mz4JPmP+TX6zPo8+7H7Wfzh/BD9c/0K/l3+nP4K/4L/yf/D/+r/mwBWAd4BbAIC
-A64DdgTyBPMEFQWoBSwGRwY/BmQGlQZ/BhYGuQWOBU4F6wTJBAgFRgVJBTIFAQW5BLME1ASKBP4D
-tgPBA9YDrwNBA7MCHQKvAaYBmgESAWoA3v9q/07/eP9t/wn/m/5z/or+jv5h/hb+wP2u/df9rv0p
-/bj8uvza/IL8Dvz2+y38pPzZ/E38tPve+2r8gPwa/MX7zPsU/EX8QfxF/G38ePwT/JH7i/v7+3v8
-r/yv/Nf8Nf26/ff9qP1l/Wv9X/1x/f79jf69/sH+m/6Z/v/+R/89/zn/SP9r/8D/FgAPAMz/v//8
-/2wA4gA2AWEBYwFRASsBHgF1Aa4BbwFOAYYB6QFGAjwC/QEVAmICigKAAnQCmQKMAhwC7QELAgEC
-rQFFAfYAhAD6/+r/PwA3ANX/n/98/0P/Gf/n/pL+Vf5o/nv+J/6F/RD99vzo/Mf8Z/yo+0/7tfv6
-+7/7jfvC+0D8fPwI/Hj7rftf/Jj8MPy1+4D7ovvH+6z7XPsD+zv73fsS/Pv7B/w+/M38gf3i/Qr+
-Rv6c/vX+R/9p/y3/wv6R/nn+W/6V/gb/MP9G/8H/ZQDTAAcBEwEWAU0BgwFaAUwB1AE1Ag0CrwEF
-AXsAnQDbALkAVwAPAEIA5QCeAekBpgFXAUoBXgFSAQoB3QDsALYAZgCKANEAuwCwABQBcwGEAY0B
-3QFHAlACAAKjAUoBKAFXAXEBLAGnAEIAXgCpAJIADQBp/xn/Sf9p//L+E/5r/V/9mf2U/VX9OP1i
-/bT97/33/Rn+cP6y/rr+xv79/uH+Wf4V/i3+Av6G/Tz9Gv0P/W/9CP6Y/gz/Rv+A/+z/VgCyAFgB
-HAKcAgUDjgMSBEwEQAQwBDUEeATkBAQF7gQWBW4FzAVqBiwHoAfaByYIZAiYCPwIagm3CfgJTAqq
-Cu8K8QqkCkoKPQqDCs8KAgtKC6kL+gsjDPYLfAsiC/oKpAojCssJsAl+CUsJZAldCQUJtwhICJcH
-HAfhBpsGRwbYBVoF+gSfBPYDLAPVAtMCqAJhAioC5AGdAYwBXQHHAB4Am/9B/wj/wv45/nX9yPx/
-/Ir8YvzH+zP7B/sR+/z62/rg+uT6v/p4+jX67vmD+Tz5MvkW+R75P/n++J74hPiv+AT5Lfkm+UP5
-hPmr+Yn5C/mo+Az5nvmD+Xj5/vmb+jH7sfv0+yT8dfzj/Dz9WP06/SL9V/3O/T3+m/40/9D/7P/z
-/10AwADjAAQBRQG4AToCdgJiAjYCBwICAhYC+gHvASkCVgJUAlYCjwLnAv8C0AKMAkkCBwKZAfUA
-VgDh/4j/Vf9J/1j/Z/91/53/2P/5/9z/3P8yACAAcP/n/pL+Df51/dr8Zvxm/Jb8jPx6/IL8d/yV
-/O/8Cf29/JP8u/y6/Fj8z/tT+wz7IftZ+1j7SPtT+y/74frm+kT7evt0+377lPvP+yz8OvwQ/Af8
-/vsX/I/89fzn/KL8gPyl/NX84Py6/Hb8lfwc/WP9av1+/ZL9wf0v/qr+2P7F/uL+VP/G////3f9R
-//P+C/84/zb/Cv/0/jP/hv95/1r/ef+O/6n/MAD6ADsBywCBANAAHgHfAFIAAAADABcADQDQ/33/
-Xf94/7f/KAB+AJUApwBSAMX/zf8NAJT/q/52/t7+zv42/sj9iv1X/XT9wv3k/ej93P3P/cz9kf0W
-/bn8vvww/cn9u/0d/cf8jfxm/Hz8ZPxv/BT9v/3g/Zr9NP0n/bj9KP7X/X798f2Q/jr+af1x/U/+
-B/8i/+f+Cv/N/2EAIQCc/7j/awABARYB6gAIAYUBxwGYAZQBBAKVAgQDOQNAA1ADhAOLA00DOwOM
-A+0DHQQ6BGcEegRsBFwEHQSnA4ID/ANGBMcDXQO4AxcE4wOuA5EDZwOuAwwE9QO7A5gDfwOHA3QD
-ygL/AeIBCALWAakByAHlAfcBOAJ9AmMCCQLlAd0BpwE/Aa0AIwD5/xMAFgARAAYAzP+m/7L/xP+u
-/3P/ef+l/7L/7v87ACMAvv9w/13/Pf/M/kv+LP5I/l/+4P6Z/6//S/8E/9H+z/4d/0f/T/+P/87/
-4//r////CADV/47/xf9WAJQAxACAAVwCuAL5Ap8DTQTkBK4FgAbvBggHWAfJB8wHfAcyBwkHDQdD
-B3gHXAdNB7cHPQiECHgIWQhcCGgIkAifCFMI9ge0B4sHZQcjBwUHLAduB8MH+QfQB5EHrAfSB5kH
-SwclB98GEwYNBZYEbQQEBJADRgNMA78DBwS1A2QDKQO+AmcCIgKbAcwAPAARAMz/Yv/d/vv9+PxT
-/C78OPwv/B/8IPxd/J/8hPxR/Eb8Fvy9+437cPst++L6k/o2+uX5svnG+Sj6k/q0+oT6SPo6+mT6
-jPrL+k37lPt1+1z7QfsR+xT7S/ul+yD8g/yO/GL8c/yZ/EP83fsZ/If8jPx8/J/8z/z2/O/85Pwp
-/Yj9xv3q/fn9D/47/mX+gP56/m7+sv4Z/zr/Tf+L/8z//P/8/6v/Y/9n/zr/0/67/tz+9f4r/1r/
-K//H/qb+tv6Q/j/+G/4u/i7+Jf5m/q/+b/7p/YH9Dv16/An8GPxP/Dz8B/ys+z37+vp++tL59fnI
-+kr7dPud+837H/xz/K78wPx0/BP88vu6+y37jfow+hf6Kfpj+qH6vPrV+jH7sPvh++b7RPzn/FH9
-PP3e/Lb8tfyB/FX8afxs/H38Qv1H/pD+gP7N/mn//v8qAOb/s/8PALAA2QB2ADkAmgAYASoB8ADQ
-AFQBOAJTAmsB1QCqAf0CDAP3AWYB2AEQAmEB0AA9AQcCVAJaAocCvgK+AloC0AGiAdQB1QFSAd4A
-1ADeANQAtwC+APUAzgAqAL7/FwDsAA8BKwCL/8z/HADx/5z/V//m/of+tP4X/x3/5v6l/lj+Jf4m
-/nf+1f6x/iX+rf2r/RX+Sv5K/mf+c/6d/hn/UP/U/mP+h/6b/qj+DP8M/6L+1P52/8H/0f8nAN8A
-OQHiAK4ACgF6AYkBhgEGAqgCuAJoAl0C4QJhA2IDIQMkA8EDdASQBCEEfgNZAzYEEwWtBJwDcwOB
-BGMFBQUTBMEDhASqBe8FTQXrBEQF7gVHBu4FHwW2BAoFXgVrBYoFYQWYBOYDAARTBP8DWgMiA24D
-/QM6BHQDDAIuATEBpgH9AaoB9ADKAEABkQFDAXQAnv9O/67/PgBWAAkA8P8tAGYARwDG/zz/H/9h
-/7X/v/9K/9z+//5A//r+Q/65/dT9Yv64/m3+3v2x/Rz+e/5g/lj+l/7F/sv+A/9z/57/a/8H/77+
-/v6U/9v/nf8v//b+Rf/m/wAAf/9C/3H/rP/p/wkAPQC+AP8A6wAVAVQBOwESAR0BMAFAAXkBygH1
-AQkCWgLDAgIDSQOgA/QDPARPBBEEwgPCA+MD6QPRA3cDFAMtA40DvQO9A5oDhgO1A9YDygO1A3cD
-IAPeApcCSAIJAtEBmgFaAQIBwwDJANMAwACYACcAwv8ZAIwALAC3/6f/cv86/03/av89/7n+Cf6Q
-/Y79uv29/cD9vP2U/bj9Ov6I/mn+Qf40/gr+0v2h/Ur94fya/I38ufzs/Nr8gvxy/N/8OP1M/Vv9
-aP1s/bL9Vf65/oX+NP4U/gr+1v1f/Q79M/2j/TD+0v5a/4z/qv8AACsA2/+I/5T/h/9G/2H/tf+5
-/4n/af9c/2T/iv/e/0gAdABGABQAKABZAFkAEwC2/2v/Kv8A/9D+bv4r/lb+sv7q/uH+xP7w/lb/
-pv+h/0r/Bv/r/tH+nP5X/iv+Af7b/c39sf2V/aT9yf3j/e394/3i/Q3+Rv5Y/g/+hf0f/eH8t/zB
-/OT84fzX/BL9bP1u/eP8X/yb/Dr9YP0d/fz8Gv1t/cH91f3J/dP9AP5c/pj+Xf4z/o7+Bf9W/4b/
-YP8m/yD/NP9c/3//s/8JAC4AOABuAHQAAgCB/3H/EwANAZgBegElAQ4BHwEQAewA5QBPAfwBYgKa
-AvYCNAPiAjUC+wFvAvwC7QIeAjYBCwG8AVwCSALNAYEB2QF7Am4CvwF8AbABxwHTAdEBlQEBASsA
-4f9JAHUAGQCk/1X/kv9NAJMAAQBL/0b/7/90AF4Azv8g/7f+wf4n/2n/Df9a/jv+tP7Q/nj+Vv5I
-/h7+Lf44/gn+1P3T/U/+6P4L/wP/M/+G/7T/Uv+i/qL+df8LAHr/dP5S/iL/2v/G/zP/q/7+/mMA
-8wDO/9v+Nf8+ABgBGAGNAIYAIwFnAeAADgB9/5j/oADYAQQCSAHXAAgBSgFjAZgBBAI8AgQCrwGK
-AawB4AHwAQ8CfwL/AiwDGQMLAwED+wIlA1sDVQMGA3UCugFBAXkBCQIgAtEBuAHEAZ4BGQFIANL/
-PADgAMoANADJ/7X/5P/t/37/Bv8G/37/GABZAPr/Lv+j/r3+MP96/zT/rv6S/r7+sv5B/sb91/1L
-/qz+fP6Z/ff8Lv2b/bj9o/2E/WD9MP0y/bf9ff7g/r/+2/5r/9///f+h/0H/b/+y/7f/p/+F/2P/
-Z/+R/6b/Yv/t/tf+av8wAIUAbAA3ACoAWgBYAP//xv/U/w4AaQCRAHUAYABFAA4AAgAjAGYA/wB+
-AWgBWAFtATsBHgEzAREB2gD8AEUBTAExAUEBaAFhAVMBZAFgAWwBrgGzATwBxQCtAMkA4wDDAHkA
-cACvAM4AlQBdAJ0ADAESAcQAogDGAMkApwChALsA1QDoABUBRQElAdsA3gD/AA8BLgEIAYIA9v+2
-/83/1P+E/y//H/9S/+D/cwBuAPv/k/97/9T/JgDh/2P/Ov9B/1b/eP9p/1D/if8MAI4AtQCyAPUA
-VQGKAVwB+AANAYIBkgFDATIBSgFGAVIBIQGKAFgA9ACyAQcCDgLyAdcB+QFPAlEC5AGXAYIBZQE6
-AfoAygDIAO4AIwEaAZUAGABUAOYALQFSAY4BxwHOAZ4BhQGeAXMB3wB5AJQAywDNAKoAewBsAIsA
-rwCvAJsAzgA9AVwBMwE8AVAB/gBPAKj/af+J/6z/5f82ACoAzv+l/5X/FP9R/u/9Iv7V/nj/af+/
-/i/+TP7K/tz+lf6I/rP+Af8p/xT/CP8S/zP/Yf9e/xL/yv5r/sH9u/1//qP+F/6s/Vn9dv0u/sL+
-2P6t/rz+QP/G/9v/kv+E/8//AAArAHkAiwAhAK//k/99/yP/3/5B/y0A5QDYAD8Ayv+7/9j/6//Z
-/6n/tv8zAL8AywAVACz/Df+v/zYAYQBNADkAWABiAF4AjQB+AAIAxP8kAJYAVACB/+n+Df+g/9L/
-Rv/f/iD/KP/Z/tD+lP7x/dX9GP7H/QT9nfwD/dP99f0k/Y38y/wS/fH8l/xF/Ff81/xL/R79n/yu
-/Pv89fwK/Zr9Xf7P/q3+P/7K/Xr9mv3v/dz9Y/0w/YH90v34/RD+1f2O/ez9vP5P/3X/ov/p/9v/
-v//u//7/rf88/zj/rP/T/03/ef7Y/eb9vv6P/1z/wf4N/9H/6/+d/6j/+f9CAF4ANQAUACUAOQBS
-AJAArwBUAAEAVwC8AIYAPACPAEkB8AFRAkkC/gGdAUYBLAEPAbUAYgBnAJcAiAA4ABcAWgCiAKcA
-iQCMAKYAnQByADEA8f/G/63/o/+Q/27/XP9s/5n/5P9OAJsAaAAeAGUAswCcAKAAtgBsAA8ABwAc
-AAQAvv96/3f/t/+1/1n/Jv8+/1b/Vf9c/2//hv+y/8f/nP9+/7///P++/zb/8f4c/1b/af9T/27/
-GQDHANkApgDAACwBngHMAccB8QFgAr8CugJnAicCFQIDAtsBpwF5AVsBfwHdAe0BugGaAXwBdgGN
-AXoBQwF5AQICAwKoAYMBQwEAARwBWAGWAbsBrAHlAW8CqQKWApcCpAKsAsgCAwMiA+UChwJKAkEC
-SQInAt8BnQF+AXEBYAFOAQwBuwDVACsBGQHDALQA7wATAQYBCQEKAesABwFTAU0BIAEuAU0BYwFd
-ASMB8gD1ABEBKQFHAXQBdwFEAQsBAgE4ATYB0ACXAJoAgABwAGgAWgCeAPEA6wDDAIoAXQCBAK8A
-oQCCAH4AggB4AHUAiACzANgA8gAZAUMBhgHBAa4BiwHAARcCKgIGAsgBkwGqAeoB+wHvAecB4wHf
-AeUB8QHgAagBZgFcAYUBnQG2AdkB8gEGAuMBfAERAdAApwBuACIAsf8n/w7/I//C/mT+dP6p/tr+
-HP9j/4L/Rf/r/gX/Sf8R/4z+V/5p/jP+2/2x/Y79k/0H/pL+tf7U/kj/lf90/xb/sf5u/k3+M/4e
-/g3+A/4S/jX+L/4K/gT+B/7w/dX9/P1Y/oj+fv5y/o3+yv7c/mb+tf1r/XL9SP01/Yv93f0C/gT+
-of0F/dz8J/0T/Zz8gPyU/I78o/zK/Oj83Pyk/Kv8Iv2O/dX9Lf5f/lX+Qv6G/h7/cf9q/53/CQBI
-AEQA/v+V/yf/jP7f/Yr9kf1l/ez80PwZ/U/9XP03/Q/9PP2D/Zf9rP3Z/QX+Bf7H/YP9W/03/R/9
-Xv0O/s7+HP8I/zH/rv8HAAYAqv8E/5H+vv4D/+X+uv6K/kL+Qv5g/lv+av5q/k/+df65/rT+hv5y
-/mv+Wv4n/tb9nf1o/Sv9TP2f/Yf9gP0X/rz+Gf9D/0L/Xf+S/73/KgCXAKMAoQCLADMA5P/F/7P/
-h/9z/4j/lP+e/7n/2v/a/8n/4f9UANkA0AB6AGMAdACVANQAJQFuAXQBLQH9ABcBDAG/ALgA6AAW
-AVEBOgHlAOMA8wDPAOoAMQEuAUQBoQG7AYMBQgHmAHEAZgDwAGQBYgFeAakB5AHRAaMBWgEUATUB
-jQHAAdoBwAGHAYQBuQHxAQICHgJ9AsMC3QIQAzwDPwNLA3sDrAOjA10DEQPNAosCbAJjAjEC7wHQ
-AbMBsQHSAakBSAE4AYsB0QH+ASsCGgIjAo8C5wIDA94CdgJUApsCgwLbAXcBZwFZAZwBLAKSAqUC
-uwIzA8sDAQS6A1oDQgNPA1QDJAOqAhgChgFFAVwBVgEsATsBkAHtAUsCuwL2AugC6QIMAx4DEAPJ
-Al0CHgIGAscBZgEpARIBAAEKASsBUQFCAeMAywADAdsAiwB4AEQAIQBZAFIA9//R/9v/1//y/x8A
-AgDY//f/AwD1/ywAcABLAPL/2f/a/97/EgAbAOT/1P/m//X/EgA9AD0AFgAgAIAA8QAIAdYAoQBp
-AEQATQBGABwABAAJABEABgD3//H/1f+X/27/f/+m/5z/bv9i/47/1f/w/6f/SP9h/7T/xP+o/0z/
-1P7v/mr/pf+t/5H/b/+c/9z/yv+b/2//Of8i/1v/wv/Y/4//dv++//7/7//N/9b/3v/O/9P/0P+q
-/5//uf/G/5//RP8o/3T/of+D/27/gf+m/6D/Zv8y/wn/xv6k/uX+Df/W/sD+6P4C//r++/4w/1//
-NP/X/qH+kf6G/lr+Av7K/ab9TP0f/Tf9Nv0k/R/9NP1V/V79Qf0p/UD9PP3i/I/8cvw3/O/7+PtL
-/Kf8+vxA/U79Vf2k/fH9C/4K/tb9h/1s/XH9YP1G/SL95vy2/Nv8Rf1r/S/9+fwZ/WH9k/3L/fb9
-Cv4r/jn+Ov5Q/iX+t/2M/Zn9hP16/YP9Yf0l/Tj9m/26/Y39jf2p/c79Df5A/oX+yf6h/oP++/5A
-/5z+zP2c/bP9rv3O/RH+Hf4j/ob+6/7r/sz+vf7O/jn/ov+V/3T/kP+9/8//m/9k/3r/pP+3/7L/
-wv/5/z4AqwAjAVoBYAFoAWIBSAEYAbkAeACXAMsAuwBpAE0AYwBMADoABwB+/2P/4f8ZAAgAKABJ
-ADkARwCEAIcANQDK/67/BABCADkAawDzAHIBqwHVATECYQJlAtMCUgNSA0EDVQMmA40C4QGJAXcB
-dwGUAdUBIwJ6AsUCtwJaAjwCZwJvAmQCbwJwAlcCNQITAuABoAF6AXkBsgE2Aq8C3ALlAggDPwNB
-AxcDCQMBA8wCbQI1AkcCIgKkAVkBWwGAAdgBIgIuAiwCLQI3AnECrQKDAjQCSwJqAhgCrwF5AUMB
-FQEzAYUB0AEEAhUCKwJoApoCpwKqArYCugKqApsChQJNAgsC0wGSAUEB7wDeABcBYgGpAcMBqwF0
-AVQBmAEJAj8CLgIEAuwB1AHCAcIBoQF/AZsBuAGsAc4B9wGaARQB+QDpAKcAawBFADwAGwDv//3/
-AQC8/4//uf/q/xAAWQC3AO0A5QD7AEIBMwHSAJkAbAAwADYAZwCNALsAwgCPAGwAUAAEAMT/sf+b
-/4v/xP8VAOv/fv9z/33/E/+u/uL+Lf86/37/0//L/67/e/8K/77+zP7F/k7+2P3u/T/+GP69/fD9
-YP5t/lz+c/6V/tf+Iv8Z/8b+S/73/QL+1P0h/aX8svy6/J78tPzF/Lb8Cf3X/Y/+0P69/qz+sv62
-/qT+a/4+/j7+Iv7U/bz9xf1n/Qn9PP2p/d398/05/o/+wP7R/rL+gv5//pv+of5U/gf+HP41/iX+
-KP5M/oz+0/7y/tn+5f5D/1b/6f6f/sj+9P7c/qr+oP7C/sf+sv7A/sj+nv6I/p3+qv6t/tD+Av8W
-/y3/TP9O/zj/L/8o/+3+uf65/rT+nP6s/uj+/v7x/hD/Vf91/2D/XP9z/2r/bf+Q/3//VP9X/0v/
-/v7y/lr/hP8U/6v+6f5u/4D/Bv+6/vP+Hf8H//P+2f7X/hT/KP/c/rX+u/57/in+Ev4Z/jb+Uv5r
-/sj+Nv9P/2X/w////+H/1v8lAIMAngCqANoAyQCCAHkAnwC9AMAArgCYAIMAcgB4AKcA3QAOAUoB
-cgFoAV8BcwFfARgB3wC2AGkAFAD6/xwASQBnAIUAmADLABcBIwEfAUQBUwFQAWYBiwGvAaQBZAFR
-AXcBYwEKAdgA2QD0ABkBBgH5AB8BGwENAS4BUwFNATgBSAFPAfYAhgCYAOAA7gAGATkBPwFpAb8B
-ngFKATwBKQEaAXEB1QHNAbABwwHDAaEBwQEMAi8CTwJXAgQCwAHZAewBiwEgAVgBpQF2AToBMAFT
-AY4BoAGPAacBuwFYAeEA/ABoAXsBKQGyAEEAXgD4AFUBYgFRAUABXgGWAZkBawFNAT0BKAEqARwB
-3gC1AL4A3QDjAPcATwGTAYcBcQGHAbABxgHKAeIB+wHaAZUBYwFJARgB3QDKAN4ABgETAQoBEQEJ
-AQ4BQwFdAUEBNQFTAW4BRAHaALAA3QDaAJ8AVQDY/0H/6v7l/gr/IP/t/r3+Cf+E/5v/lv+u/1v/
-5/65/mf+If46/j/+7f28/RP+iv6L/nb+5P59/7H/v/8TAFIALQDj/4b/Yf+v/87/hP9Z/3r/2P8v
-AAYAd/8l/0//g/90/1P/N/8r/0H/JP+3/m/+WP49/nv+HP9t/47/4P8NAAUA9v8AAPH/X//0/lH/
-jP8o/7n+mf6+/vf+/f7a/uD+Bf9A/5T/tP+D/0z/cf/a//v/0v+5/3f/6/54/mT+hf5p/u79kP3T
-/WX+lP5g/jr+Lf4x/mv+jP53/oX+qf6v/sH+2P7Q/tf+1/6q/or+jP54/lP+Q/5l/rj+8P4X/y7/
-9P6j/nr+Vf5V/rr+GP8A/+j+Ff8p/wv/6/76/h//7v6b/qn+r/5b/i3+O/4Y/s39wv3W/bf9wv0M
-/vT9kf3I/ZX+Bv/+/jf/tv/f/63/cf9o/6r/2v/M/6P/ef9V/yn/Df85/4//mP9d/zr/Y//i/0sA
-ZwBtAIcAwQDqAM8AmgCTALgA0ADkAA4BCwHEAIwAgQBkAD8ABQCn/4n/kf9s/zj/DP8B/1j/7v85
-ABQAsf+H/9r/CgC4/0X/Sv+9/w4ARgC2ACwBKQH7AFQBtQGVAT8BBQEaAVMBZwFkAVQBQAFUAXQB
-PAHeAOsASwFwAVwBdAGmAbQBdQEYARcBPQEOAbwAjAB2AG8AYwBPAF4AnADdABoBbgGxAawBrAEz
-AsMCmgIfAsMBXgEYASsBKAH5APkAEwE/AXIBhQGmAfoBTQJoAlsCVAI0AtkBewFbAUsBLwEvAUAB
-MgEYARsBOAFlAY8BxwE6ArcC6wLxAvoC3wKvApUCagJBAh0C1wGdAVkB3wCLAGsAQAAZAPb/AABW
-AHUAGADX/wcAOwA8ADQAFACz/2n/sP8RAPD/hP8Y/+3+Ov+W/7D/qv+V/6H/AAA9AOf/hf+M/5z/
-fv91/4f/a/8W/+3+/P74/hD/Sf9a/1r/cv+b/8//3/+y/5P/jv9r/0n/YP+E/33/Yf9T/3b/2f8l
-ADAAOgAuABUAQwCJAJgAdABTAEgARABiAIgAagAfAOv/z//l/x8ADQCr/1//PP8x/1P/gv+R/4b/
-W/8s/z//Q/8C/wj/Mf8Q///+F//+/pr+Uf5y/rz+7f4d/1z/ov/A/7b/tf+j/3X/Vf8+/yf/Gf8F
-//L+6v7Q/rT+5v5J/3r/YP8f/wH/D/8D/9P+p/6n/rb+uv6+/pj+UP4i/jb+Vv41/ij+av6B/g3+
-tf3p/Qf+3/3Z/eb98/1I/qj+w/7E/sT+6v4O/8T+Xv5Y/n3+YP4i/jP+hP6R/nz+3v5X/0b/Mv+D
-/6T/a/8t/xP/I/8z/1r/lP+n/7P/8P9PAIYAcwBOAEAATQBmAIkAsQDEANQA7QAPATMBMgEiAQ8B
-wwBsAD0AKQAxAEIARgA0AOn/r/8gAMQAvwBiABUA0f+1/7H/ev8w/wD/2v7y/hX/Df8//7D/8P/w
-/xQAYgB/AGgAUgBKAF8AdQBJAP3/7f8nAAAAgP+f/yYAagCDAJ8AuwDJAJIADwCi/6b/8//8/7H/
-i/+u/6z/OP/s/jL/nf/N/9v/IQB+AJQAgwBqAEgAMAAoABsA0/+i/xAAmQDNAP4AJQElASIBLQEv
-ASkBLgFBAW8BjgFqARsB4gDIAJ0AZwBqAIwAjQCVANkALwFfAXIBVgEeASoBbgGqAd0B+gHqAcoB
-yAHEAZEBKgHQAN4AKwFZAWQBcwGoAewB/QHrAeAB5QEPAikC8wG5AYQBIwHQAMsA5wDrAPIAJQFM
-AeYAUABmALQAhABKAFYAiQCcAC0As//A/9L/jv9w/57/2v8mAGkAXwAlAPT/qP9h/3T/pf+L/zj/
-J/90/63/jP9K/z3/a/+m/9T/AgA+AF4AXQCCAKoAogCDAEQAyv9r/4j/4f8dAEcArwBPAcsB/gHf
-AYsBSAE+AUwBMQHNAGIAPwAkANj/gf9j/37/pf/d//z/6//0/xEAQACJAJwAdQAtAOX/5f/5/7j/
-Vv8x/zT/Nf9g/9n/YQCRAJMA1QAaAfMAhABJAGwAmACAAEwANgAPALn/Y/8l/+X+3v5L/5r/hP9z
-/2v/V/9Y/1f/Y/+C/1v/+f69/rv+xf6N/hv+wf2+/e799v35/fb9x/3v/Yn+y/51/kb+ev5//lz+
-Pf7//ef9BP4F/vH94v3N/eH9K/41/vH98v1P/o3+iv6F/oX+fv6H/qX+sP6c/nb+QP5V/s/+JP8a
-/y7/l//+/yEABwD4/wcA+P/W/xIAewBpACcASQCTAIAAFQABAGkAlAB0AJIAxwCzAI4AnQCyAKcA
-fQAbAMH/8f9tAH8AJAABAEIAdABSACQAMABYAH8AlACJAGQAVwBZADIANQC9AEEBDgGAAIEA+AAG
-AbcAsgDPALwAswCfAEoAAgDi/8r/wv+4/97/IAAaAAoALQBLAEYATQBgAFEAQABUAFsARQAkAPX/
-2f/8/1UAogCwAK0A2AD8ALgATQA7AJQAFwEkAakAPQAEAAYANQAWAL//zf8EANz/v//q/+7/xv/T
-/zkAtgDnALEARgD//xAARgBNADYAUwCkAA0BjQG7AVkBCwFMAdUBOgJKAksCdwKeAo8CXQJOAh0C
-nQFnAa8B2QF1AfAA8ABFAVkBXQG9ASICOQIGAr0BngFyAfcApQDKALkABgBp/7f/egCOAAQAsf/M
-/zQAtAAbAT8B9QDOAGkB7AF/AekA2gDqAIQAu/86/zH/PP9P/4H/tv/7/0wAbABcADsABwAJAHgA
-wABrAAAAMgCfAIYAEQDK/6f/i/+a/+v/PQAYAIP/Xv8KAI0AVgDy//L/QQByAFgACQDS/8//3P/5
-/97/dP9w/+f/EACl/wf/sP7d/jn/ff/c/xMA6f/B/8b/s/+J/4n/h/9M/yb/VP+1/w8AMAAFAML/
-5P9lAIsAIgDC/8r/5f/T/6f/bf9j/8P/QgB2AHwAlADWACIBFAG/AHAA/v9j/wX/9v7j/qH+Sf4O
-/kP+uv7O/oD+Rv5j/vP+sP8FAN3/fP9K/6X/2/8C/+H9pP39/R/+Ef4I/vf99/0W/l3+oP53/jX+
-tf6t/wQAlP8S/+r+BP8N/8H+RP4O/nn+BP8N/7P+Q/4q/pT+/v69/iv+Zf5L/73/g/8q/wb/LP9W
-/yr/Cv9r/9f/yf+X/4L/a/9+/87/+//t/+T/5//0/+z/pf9f/2f/m/+r/2j/6P6v/t/+/P7b/qb+
-tv5C/+7/PgAVAM//6P84ABkAaf/W/g//mP+X/yL/sf50/nj+y/46/3D/ef+j/x8AwQAHAc4AeQBc
-AJ8AEAHpACAAr/+1/27/x/5f/mb+uP5f/x0AiQB/ADMAEAAtACwA8/8QAMsAdQF8ASoBxQAdAFb/
-8/73/hH/Mv9J/2f/1v9tAKMAqADdAP8ACQFEAZYBrQFrAfsAvgCbADwAAQACAM3/k//K/4AAKgE1
-ASsBvQGXAiID8wInAqAB0AE6Aj8CxQFwAeABjQJuApwBRwHGAToCXgLCAlsDkgNSA+gCZQLWAWEB
-0gA8ANL/Wf/t/rv+hP4G/nL9af0A/kf+8/0L/uz+j/9U/+P+tv6T/k3+Df4D/ur9mv1//cP9A/4Z
-/lL+qf7h/hb/gP8BADEAAQDe/xEAZQA0AJj/av/K/yIAGAC3/3D/rP9RANoAygA9AOT/JwC9AA8B
-0wB2AG0AsQAjAYkBiwEgAeEATwHzAQMCcAEbAZsBIwLWATEBGwGwAUMCQwIHAvsBEQIpAtEBEQHH
-AAkBEAGkABkA7P+IAEkBMQGNABYAHwCuADgBKgGkAEgAYgCUAJUAlgCRAEsAIwBxALwAuwCzALsA
-0QD5AA8BDQEFAewAzwCyAGMADwDp/+X/EgAtAPH/wv/d//b/7P/O/87/AQAgABUABQAAAPP/wP95
-/y3/Lf9m/xz/nP6c/sj+6v4U/9L+Nf4J/nz+Df9e/0D/GP9R/3j/c/91/0H/8v62/qr+//41/5r+
-3/1F/ln/w/9r/z3/xf9+AIkA+v+C/2n/pP/G/3X/Sf+7/zUAIwCg/2X//v/aABwBxQCVAPQAUwEQ
-AVUA4v8mAJAAjQBRAOz/Y/8x/2//x/8XADwAEgDg//z/9P9T/5L+Lv5f/hv/v/+8/3r/k//u//z/
-iv/Z/k3+cf4M/y7/0P64/u3+yP5m/lX+bf6a/g7/Tv8M/+r+Jf84/+H+iP6q/g//M/8T//j+Gv9Z
-/17/+f41/n39tP3l/tf/DADs/6z/d/9m/zD/Nf74/Kz8E/10/Rj+Kv/8/zsAEABj/8j+B/+B/37/
-OP8+/9P/ZgAtAEj/bv7M/XL9fv2o/Rj+Lv90AAYBpgBEAGcAlAC4APUACQErAcsBZwIaAvIAyv83
-/13/0P8OACYAPQBsANAAFwG5ADAAPwC5AGABGwJoAi0CAQLSATYBhAAXAO3/JQDMAHMBqgGIAYUB
-lgFtAUMBGAG/AMcAhAERArgBDwGxAL0AFAELAWsAPQARARMCdwIGAi8B8ACBAdkBOwFbAOP/sv+Z
-/4j/Nf+b/pP+e/9hAHgAMgA9AH0AqQCWAGAArwBjAWgBsQBBACoArf8X/xL/dv/x/2AAswC7AIwA
-gQCyAAQBPQFAATgBVgFZAfEArgAFAV4BfQHOAQgCwwFkAQwBkABVAHUAgQBpAGQAXQAsAO7/q/92
-/3z/tv8WALMAUwGEAUwBMQFcAV8BOgFCASoBwQBbABkADAA1AIkA/gBVAWYBPQEwAW8BewFGATYB
-MQE2AV8BbQE1AeAAtADNAC4BpwHSAcsB+gEpAu0BwgH8AfcBmAEzAbsAdABiAPr/d/9U/zv/Mf+C
-//3/SgBlAGEANAAsAH0AdQDT/1H/OP9Q/zb/jf7C/Xz9jf2G/YD91f2k/on/FQB8AOQAJgFdAVAB
-tAAOAMD/2/8nAOz/S/84/7P/CQD//7H/b/+W/wIATABYAFcAwQBZASgBJQAr/9n+8/7C/mX+Tf40
-/ir+mP43/2b/Cv+p/qj+J/+1/5//Tv8+/yb/Iv81//T+h/4o/tX9Av6e/rX+Yv6F/t7+7/71/vH+
-lf40/j7+g/6E/jr+GP46/mH+QP7k/fH9mf5F/5n/wv/Q//z/hwChANb/Mv9F/5b/lv8I/4j+r/4P
-/wP/rv6h/h//wP/c/4D/Uv+O/7T/Yv/b/oz+rf7y/sj+YP4l/ur94v0U/qT91vz6/Pr9uv7b/q/+
-mP6+/sb+av4w/oX+9/4J/+3+Bf9H/2v/Xf8z//r+rv6G/vj+uP8EAAMARADeAGIBVAHDAB0Azf/V
-/9j/lf81/1f/8/8ZALH/dv+F/3b/G//V/hH/p/9SALYAbgDd/6H/qf+f/3b/VP9p/4//sf/e/5z/
-J/81/0f/7v7d/pj/pwBNASQBnABYAPz/O/+z/pH+kP6//g//YP/i/1sAPwDD/4L/tP9PAPgAHAGr
-ADcAFAAUAPf/s/9j/y//W/8XAOMAGwEWAUoBWQEXAe4A/wAgATQBWAHTAU4CUQIbAr0BJwGKAPr/
-t/8gAP0AuAECAvQB6QEQAjsC+wE3AZMAlwD4AEgBWAESAcwA0wD3AA8BFgEPAToBtAEEAuABwgHe
-AaMB1QAQAPT/UgDVAEUBWwE7AS0BGAHxAO0A7gDiAFsBWwLbAm8C0gFsAeoAOgDF//T/qABWAbMB
-0QHUAcQBeAHgAFMAHgA2AGMAgQCrAOYABAH4AOYAfQC9/57/UQDjAOkAtQCIAH4AXwDm/1D/Av//
-/kD/tv8HAGYAAgE0AfEA0QDBAJ4AxQA+AakB0wHxATECPwL8AZ4BFgF/AFUAsgAnAU4BGwHOAK4A
-vwDcAOgA6QD2ACwBiAGoAUABhgDJ/z//Lv9m/2n/S/+J/yUAmgCCAAYAs//G//v/HQA7AGYAaQBR
-AEsACwCR/x//wf7E/l//BAApABcAJwBoAN8ADgGnAEEATgBqAAwAY//E/jn+Av5M/qf+vv7n/lv/
-/f+CAI4ARwA6AIcAxQCtAGAARwCUALkAIAA7/+7+f/9WAI0ABgC+/zQAuQCdAAUAov/k/2wAmgBg
-AAQA1//b/8b/jv9Z/0r/R//+/qP+if6k/hf/kP9w/w3/3/7K/pb+Ef6Q/br9NP4i/tz9Cv5M/jn+
-2P16/Vb9bP3n/Vb+Qf4S/jn+nv7I/on+AP59/YX97P0K/qf9HP0P/aj9PP43/t79tv3p/UD+YP5b
-/mz+hf6Q/qj+0f7y/vf+qf4y/g7+Ff4K/vP9wP1k/Rb9MP1+/Yn9QP0S/VX9xv0x/oX+av42/oz+
-7/7I/nH+Nv4U/jr+Vf7w/Yb9pv0D/hr+O/7P/kb/W/97/5H/ff+P/77/uv+j/6P/nv+t/8L/b//5
-/v3+Qf9D/yr/MP9d/7z/HgAvABcATACjAKcAcABgAJIAygC+AHEARwCAAN8A/gC7AHkAlADCAKoA
-fABwAGoAZAB3AIAAdAB+AJ4AsACxAKoArwDgAAUBxACGAMIA/QCzAD4AQgCUALEAtgC2AIcAewDb
-ADkBEQGmALwARQGaAaEBqAHiASECKwIeAhUCBwIEAu0BoAGMAeEBCgK5AVkBcAHaARwCEALWAcQB
-FwJhAiACnQFbAYgBzQGsAUMB0wCbAMkA9QDtAPgA6wC5ANoAKwE9AUMBQAHtAL0A5gC4ADQACwA9
-AJIAOAHiAf4B4QFIAhkDfgNlA2UDfAODA48DcAMmAxoDOQMeAxMDXwOyA/IDNgR4BNwEgwVCBp8G
-fQZIBggGqAVWBfoEkwRlBI0EuwTEBPgEeQUCBlYGZgZQBj4GQAZgBmEG4AU8Bd0EVwSaAwoDuAKr
-As0C0QLIAgADTQNdA0IDMwMvAxEDywI1AlABngBSACMA5/+C/xb/0/7Z/vT+u/5u/oL+0P7k/qf+
-dP5j/lb+Gf6X/RT9t/x6/Fz8xPwM/lb/wP+F/xj/o/5E/gL+c/2Z/E78tvzr/IP8+/un+8P7rfzB
-/VL+Gf8gABQADf9T/g7+2f1+/bT82/vE+zH8Nfys+xX79frE+zP9U/77/sz/qgCzAMn/nv6w/SP9
-wfwJ/BT7q/oM+4T7hftf+6v7tPws/lH/5/8tAEwALgCi/7r+ov2C/G37cvq++XT5uvlI+m/6OfqC
-+qn7w/z5/Kz8evx8/Gr8p/sh+s74gvio+DL4V/ej9i72XvYG91j3YvfF95T4Tfle+d/4nfjC+JD4
-mfd29g72OPZK9lb2pPYM94H3H/i++CT5f/kA+mv6lfqB+jj67Pmb+RX5l/iB+J/4pPib+Ln4QfkA
-+oH6tvr5+nz77Psh/Dj8QPxi/JX8mPxk/CP8CPwg/Dv8UPxa/BX8r/vx+9z8SP0g/W396f32/fT9
-AP7i/ZH9Cv2t/Mn88vzZ/PD8cf3O/fH9Ov5G/rD9F/1S/Rr+tP4t/5T/PwC6AWcDjgRYBUUGzAeg
-CTkLjQx9DeIN5A2aDfUMXgxPDJoM7wyMDdYOpRB9EhMUmhWFF7cZZBvUGyQbERovGWAYKhekFVMU
-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
-nQw6DDcMaQxNDLILGAukCg4KfwkuCf4IvwiMCKMI/Qg7CQMJWQiNB4UG1QTtAp4B1AAAAPb+Af4h
-/Tv8bvue+sz5bPmM+az5w/n/+Qf6m/nO+NH3//Z39vb1PfVT9HvzMPNt8z3zqfKq8unyBvON82j0
-OvX29VH2PfYY9tX1e/Vg9Zr19PU29iv2pPXh9IL05/TM9Zb2Rfce+BH5DvrR+iv7hPvY+837vPvW
-+/v7PPxp/Fr8Kvz/+9j7wvsT/Oz8Af7v/oH/pv+Y/73/MgDEACUBTwFWASUBzQCLAHIAXwAuANn/
-bv8l/xT/Df8W/1L/aP8C/6D+rf7H/tD+C/83/zH/Nv/2/jL+kf2L/a/9i/0b/XL8xft++6P7y/vY
-++37z/tv+077dfuR+7T7xfuY+037//rN+tn6+/rl+rb6hvo6+v356vkA+i/6d/r8+mX7N/uW+kX6
-+frN/G//OAL2BBoIaQtsDp8R/hSLFyEZRhrZGpkaJRoUGh8a4hkxGU0YrRdaF6UXDBkBGwAdNB9p
-IYYjuCWaJ/8oJyp7KmQpMidmJFkhDR5fGo0W1hI6DwYMwQljCI8HWgfMB44IawkwCswKOAsrC4wK
-LwkUB4MEhQEA/ij6iPYS847voOza6rrp0Oh86AXp8Om56mrr++ti7MHsQe0d7tbuke617RXtkOzo
-6yPrXurg6bHpi+mk6UfqF+vy60ftJe/a8CryuPOT9YP3zPla/HD+nf98AKoB8AIVBP8EkwX7BS8G
-FQYzBr4GVwfGBx8ItAiICUEKAws5DL8N/w66D0MQ7xCWEeIRDhI/EgkSQxEGEHgODA3yC84KlAlg
-CBgHxwXMBH8EUQTHA1oDNgP3AnkC4gFmAR0BkwC5/+/+9/24/HX7Tfor+cX3J/ab9Bbzm/GL8OXv
-YO8G7wXvau/p71nw7/Cp8UjyuvI58+HzUPRS9Fb0nPTE9Ir0PPQk9Fb0y/Rz9XT2mPdo+DX5jfom
-/H79uf4qAIoBmwL1A9QFkwcSCS4KOAqmCVwJYgnACWYKrAp7ClEKHwrLCZwJhgl3CWcJRwmsCbAK
-LQvJClMK2gklCboIrwhcCHwHegaTBXYE8QJFAa//Q/4c/Sj8WvvV+ov6UfoN+gz6bfq3+ub6V/se
-/M383fxM/EL78Pmw+KP3uvb19VL10vSG9Dn01/PD8xr0m/Rg9YL2u/fL+Gv5xfkn+iD6lvkC+Wr4
-wfc+98T2IvaH9RH1t/R89GL0p/SD9Xn2HPcH+HD5evrc+g77N/tW+4D7dvsU+3/60flL+RT5IPlq
-+d35QfqF+tD6Ivt++7v7sfuu++77a/z+/ID92/33/eD9tf14/Sj91/yP/Fn8RPwT/Iz73fp5+qr6
-8/rq+vH6HPsl+0b7gvul++j7G/wb/HH81Pyl/Dr8+vvz+zL8dfw4/Jn7Y/vI+xz8LfxD/Ff8KPz0
-+xT8T/yN/NX81fx//Gf8mPxz/AH8u/u3+5L7BvuN+hH74Pxw/ysC8wQKCIQL/Q5DEq8VHBnaG5Yd
-FR6gHWcdxx3mHRMdjhtUGrkZOhm6GAgZiBo3HHQdBR9fIckjcCV9JnUnNCgbKK0m9iOqIKQdwxoz
-F/0S5w5mC4MIHwYmBLkC4gF7AXwB9wHkAvoDwQTqBKMEPQSDA/IBZ/9N/Dn5VvZt81XwSe2b6oTo
-H+c95sbl6eWx5srn0Oji6U/r8Oxl7oDvRvC58MnwdvDU70fvH+/07oXu9+1c7W/tr+4r8C3xVPLm
-84f1avfQ+XT8Dv8/AcICCQScBTsHcQhcCUoKNAvTC/ALlAtqCycMFQ0LDWIMGQxQDLUM/AwPDWYN
-LQ7KDtAOyQ49D9QPIRAAEG8PoA7VDScNpgw2DIkLewryCCcHoQVCBJkC2QBc/y/+Rv1p/LT7g/uO
-+3z7SPvC+uj5Wfl1+Yj5APkZ+P32vPVv9DnzR/Iv8ZzvRu6o7ULt5uzp7DHtl+1x7snvO/Gr8ob0
-xPZ5+J/52frT+0r8rfz+/Pr8wPxr/Pz7ofuG+7D7Ovwl/fz9tv4PAEICqwTIBp0IjwqLDOoNnw4f
-D4oPyw/xD+QPVA87DsEMNgv4Cf0IHAhxB/4GlwadBj0H3gcaCB4ISwiqCAMJHAm+COAHrgZDBZ4D
-xQGz/6f96ftP+sz4k/eS9pb16fQL9aX1KPay9mj3KvgF+fn5pvrT+qz6ZPoW+sn5SvnE+Gz43/cT
-92j25fWf9cD19vUr9rr2YvfQ9z745fjX+fH68fuN/JL8NfzW+6n7gfsD+3H6Afo8+TH4qvea92j3
-HvfE9m/2bPad9sf2DPei94D4cfn0+dT5uvk7+tr6D/sr+0j7Ffue+j76GPr9+a35O/nB+Eb4F/hO
-+KT44vhC+dL5KPo3+lP6vfpi++X7N/yD/Lv8ovxC/Mf7NfuT+uP5RPnM+Gr4Uvia+NL4zvjW+A35
-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
-iwL4ATMBDgDP/sP9w/y0+8b60vmd+GX3Pvbw9L7z5/IK8hTxdPBY8HfwaPAt8A3wEPAj8EnwcPBt
-8Gnwv/CY8ZDyUPP982z04fSw9TL2ZPYE9wH49Pj/+Xb7Lf19/lT/dgAZAuYDyQVlB2YIJQn9Cb4K
-HAuHC3oM+wxdDH4L1wpgCkAKEQpACSgI6AeoCEYJZgmXCfkJSApDCuYJWwnLCGQI+QfsBhMFHAOh
-AYIAPf9y/Vj7ifli+N/33/dl+Dr5sfmv+fX5tPo8+2T7pPve+7D7Z/ss+5b6gflQ+HP3sfa29ef0
-efRE9E70n/RT9Xn2u/e8+Hv5MfoN+8z7QPzG/IT9Cf4U/vb95v3Q/YP9v/zM+2j7W/vT+hj6+vmN
-+kT7pPuz+8P7BvyM/HP9jP5q/+n/OwB2AIwAigBVAMn/6f7x/f78CfyB+1v75fpV+ij6APqV+TP5
-P/mx+RL6+/lY+Zj4KPgx+Gj4Dfhe9zn3Mfeg9hn27/WP9fn0vPTd9OX0rfRI9MnzlvPD88DzgfNk
-83bznvMQ9P70u/XP9bn12fU29vv2P/hn+cn52vlv+sb7iP13/74BIARkBgUJXwzxD2IT0hbiGVIc
-NB59H5Ig9SEYIxYjciLXITAhmiAHIJwf0R8mID8gryBRIZUh/yEqI2IkvSSUJGkkqyMvIpAgoB7/
-GyEZXhY6E7gPqwwMCmoH8ASYAkcAZv4c/RX8Evse+nj5Ifm8+AT4DPcM9hL1zvMR8iPwP+5r7I3q
-UegX5pbkeOM04v7gNODs3wzgm+CA4T7i9OJO5AHmcefg6HLq4Osr7YLuve+08L/x9/Io9EP1HPbB
-9pn33viE+lf8Bf5s/7oAPgJLBJQGbQj9CbsLhQ0DDzIQZhHOEv4TzBRkFYwVTxUaFSIVHxXUFJgU
-XBTPEx8TwhLbEr4SBxIFEf8PLg+ODrYNhQyMC/AKDwrWCH4HIQbsBLQDcAI8AeP/cf45/Q/8vPqc
-+Zz4Rvfw9QP1NvRb85by7/FX8fLw1fC58IPwYvA08Onv2u8N8DrwifAv8efxofJz8y/00/SA9T72
-z/ZH9wP4A/lf+s77A/1H/pL/ywDRAZICfAOVBFMFpgUVBsMGfwcQCEIIMggPCNIHkQdoB2kHugch
-CDgIEwjqB8EHAQieCIQInwfBBhAGhQUnBcMEZwQeBJ8D+wJKAmEBgQDR//3+Cf45/aX8RvwD/AD8
-PPxx/Hr8VPwZ/Nf7uPvC+8L7pPtD+576APqm+XX5Lfmp+BX45Pc2+Iv4mfi/+Bn5WPlr+YP5uPn/
-+UD6R/pQ+rn6Ffv/+sb6z/ri+pL6+/mJ+YD5hfkw+ez4HPl3+eX5kvpk+xr8dvyi/Pr8U/18/eb9
-v/41/+X+nP7U/gj/4v6x/pb+Wf4Z/mj+I/+Q/47/Of+a/gv+/v0p/gb+vP2E/V79LP27/C/8vPtF
-+9r6gfrS+cL4yvcr97b2MvbH9Z31ovW59ZP1FfWC9Ff0vPQc9UD1ofUX9gr2xfXf9Tr2VPYu9i/2
-ePZq9y35Ivsz/Z7/AQJmBFIHpwoaDrYRHRWcF0gZ6RqAHH0d+h00Hg8ehB29HCgcAxwoHFwccxxr
-HF4coRxEHfgdyR7LH70gRyFIIRIh6iCJIJUf0h1VG8AYWhayE+QQYQ7bC/wIMQbrA+8BIADV/sP9
-lvzJ+337IPt8+v35vPkT+eH3jfYk9XfzkvGX72ntA+vF6APnbuW143Hi++HY4cvhBeKl4mLjDeT6
-5CzmjOdP6SjrjOzA7QDvze8w8Mjw0/ED8wH0pfQR9ev1XvfP+AD6MfuU/Bv+ov9XAUcDEwWWBgAI
-PAkXCg4LZAyMDU0Oyw78DgAPFg9zDyEQwBATEfwQdxAMED4QmxBhEJkPhg5yDdAMjAwuDIcLtgoA
-CmoJqAjBB+EGHAaTBSYFoAT9Ay8DIwI2AZQAvf+G/iL9y/vH+tP5l/hS91L2d/WE9MfzUPPV8nLy
-S/I58j7yiPLg8g7zXPMW9DD1fPaA97v3cPcg90H3Ifgx+fn5wPpd+1j7PfvB+6b8iv0t/kf+Kv6I
-/mP/GwC5AGsB2AH8AWcCdQPIBJ8FlQVGBXQFkAX/BG0EgQTKBFoELgMTAmcB+wCQACcA6f/v/zwA
-ogDsAAoBLQGFAbQBlwGNAZEBbAEdAcwAxQDuAKQAqv93/oP9y/wg/I37I/vl+tH69/od+w37Jvud
-+xr8g/zX/Pn8+fzk/Ob8+/yp/Mj7mfqO+Qf5vPhN+Ov3m/c+9x/3YffC90v4W/mB+uX69vqI+0/8
-0Pxh/Qz+L/7D/VX9Ff3d/Jf8VfwR/N372vvf++n7Kfx//Kr8r/y+/ND8//yh/Yz+L/+X//D/JgBT
-AE0A+P+Z/zb/nf4T/rv9S/3M/D/8f/u1+kv6S/pF+jf6KPra+Y/5kvnO+TD6hvqy+tj6v/pv+oX6
-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
-xg8PEC4QRxCmEN4QlBA4EBMQ4Q9PD0gOLQ1VDJsLowpkCUMIpQdYB8sGCQayBeIFDAa4Bc8EygM3
-A8MC8QHqAN//u/6J/WP8Gfu6+X/49vYd9a7ztvLv8WHxzPBN8GTwsvC38LDw2fAX8Zrxt/It9ID1
-0fZL+F35AvrW+rD7F/wb/Ab8r/vn+lv6bvpJ+pH59fin+JP4Ifku+sT6A/vP+/38JP5J/0AA1wBB
-AaUBhQHeAB4ATv9H/gX93Pvf+t75/PhS+LX3TveJ9wv4Kfh++MH5NPsv/PH8jf0b/tX+Zf8i/zb+
-Y/3A/PP71vqG+Ub4Hvf09ez0QvQk9HD0xvQ29e315vYP+Az5uPkp+j76DPro+bf5IPlO+JT3tPZk
-9ejzxPIK8lDxmvBU8FDwMPBG8Ofwz/HO8vvzIfU29m73ivg9+ZX53/lG+qD6lvom+pv5NPn0+Ez4
-GPcJ9nD1PPVo9dL1X/Yl9zX4iPns+vP7ivwj/bv95f3S/dr9uP0X/Rr8Jvtf+qj5+PgT+Nb23PWc
-9cX1DPax9oX3E/iv+Kn59PpM/Fj9T/7s/4MCswU4CeMMWBCgE+gW/BmzHP0etCC1IQAiKiJ0IhMi
-/CAMIHsf4B78Hfsc7BsGGwwb8BvVHIQdRB49H70gpiJDJCIlPSXOJBMk7yIyIcoewxuJGLoVFhPo
-D6oMBwqzB3AFgQMZAikBdQDT/2H/Sv+O//r/MQAtAE0AiQBSAFP/uf37+0z6Uvjf9XHzcPHY72/u
-D+3461vrPut966Drr+tP7Iztx+7K79zwH/Jz88H0AvY092j4T/mj+dj5M/qU+uz6RvvD+1z85vyn
-/aj+LP9p/zEAMAHFAUUCJgMwBCoFHwZBB6AICAo9CywMEA3ZDWgO8A5gD5UPow+uD6IPRw/VDpEO
-HA4xDTMMbgvNCiEKawmiCNIHRAcGB+cGtQZSBvsFCgYOBmgFbQTGA3AD7gIEAvEA2v+I/if9DPzg
-+nP5QPgZ9671h/TZ81LzwPLu8SbxEvFq8VLx8fD/8Jvx0fKp9IL2qfdm+C/5y/lg+mT7bvyz/Bn8
-//rK+QX50fih+Df4xPeE96P3FfjL+JD5Ivri+k78I/7c/34BKwOYBIUFzgVXBXMEsgMDAwICwgBP
-/7b9UPw9+yj63/jT93L3vfd/+Dn5Afom+yn8A/3u/bT+gf8gAPj/cf80//7+av5h/cT70fkx+Af3
-wPVa9KHzmvN48yrzPfPH86b03PX19rL3lfir+V36mfqc+lP6wvnQ+Ej3n/Ve9Dnz2vFf8P/u1+3w
-7KPsK+007n/vAPFw8qXzF/X49p/4rPlV+qf6lvok+k35efgp+M731va09ZT0svOy8z30j/TY9If1
-m/bY9/H48/kK+yr88/w3/Vz9mv2v/Tn9bPzb+3f7//p++qj5hPjV9833y/et98T34vfv9zj4EPlv
-+q/7VPzM/NP91v+6AtcFlQgVC70N1hBXFJ8XHxqyG/AcSh76HtYevR67Hjkedx1XHX8dyRy7G1ob
-CxtyGoAaOhu9GzIcJR10Htgf4CAeIeUgyiB5IEgfpR0tHFka2xdeFcMSSA/sCwUKiQgxBsYDUQK+
-AY4BHQE5AK3/BQCCAGcAGABRABABjAEUAaD/xP0h/Iv6T/i29cjzjPJl8TbwUe/b7pPuWu5C7mLu
-wO4277XvSvAY8TnypfNC9Yr2Nfcq+Of5Zfv6+078rfzz/H39Iv46/hX+TP7g/p3/EwAhAHQAOgHk
-AZACswMsBXoGlQcmCR0LjQxXDdANBw5gDvMOIw/iDq4Osw6aDuoN9gxODNYLWQuiCrgJDAnWCLkI
-QAipB3AHhAeIB10HOAdJB28HQwd8BnkF1wSEBOMDygKWAVIAG/9c/oD93ftK+mT5lPic98T2FfZt
-9cD0FPSl85nzv/Pa8wD0Z/QE9QP2XfdI+HX4Sfhh+Av5vfnj+ar5k/mk+af5r/nT+eL5vfmJ+cH5
-dPoV+4n7CPxz/Oz89v1V/2IAuwDNAFoB+gH4AXIB7ACvAGEAx/8k/13+cf3w/Nf8g/zR+1j7Uftz
-+737GfxT/Hf8cfwy/B78ffy+/Gj87ft3+wr7E/sr+4P6lPlD+WD5UPn0+Iv4KvjQ98T3AvgA+KD3
-b/eJ93/3SPcV9/T26/bp9gD3IPf09oX2Bfa89az1P/Vu9LXzVfMh88vyYvIC8tjx8vFD8qjy6vJR
-8w30zvRd9e31nfYx94X3lPdj91b3Yvf19nr2WvZE9lb2kPal9sr2JveB9+73dPjG+CX5Afq++vf6
-N/uP+6X7bfsh+/b60vpw+uz5cvn/+KP4X/hK+E74Tvh/+NL4FflT+b/5ffpC+/H7HP0x/94BnwRh
-BxMKswycD+kSUBY8GWAb2hyqHfkdIB5SHjYeMx2PG0Ma4hnxGYIZehjOFzAYAhnAGZgaXBtBHOcd
-7h9CIYshISGvIIYgvx+EHVsaHRcVFFYRvQ7zCwMJjgbkBFgDoQGpALsAsAD9/33/8v//ANEBrAG9
-AE8A1AAdAfL/l/1H+5n5J/hX9hb0FPLm8CrwO+8r7nvtiu067tHu5u7z7sHvU/HV8vDz/vQl9hX3
-0/ep+G/5C/qg+gj7NPt3+977Q/yr/PX8NP2y/UD+tv5y/2QAKgERAkQDWQRDBU8GuQdaCc0K/wsy
-DV4OHA9OD1EPgw/BD6wPRA8FDxQPAw+6Dm0O+w0xDUUMlgs7C+oKVQp1CbsIlQjICNcIbQjVB9sH
-ggj6CJ0IuQcAB2oGbgXtAzgCawDH/q39mPzm+kj5Qfhn96P2GvbN9cD10fXJ9fX1lfYV9wr31vbw
-9qb3B/lu+uP6cfoI+gz6Q/pu+jv6p/k3+UL5QPnj+L345/jF+EP45vcC+JX4mPm++pL7Yvy//XD/
-2QCLAaEB7wGVAsQCNwJMAacAZQDx//L+ev0O/D778/qd+iz6FvqF+lb7Svwr/d79m/5W/5z/vv8k
-AHIAMAAp/7v9m/zs+xv73PmU+Gb3T/bD9Yj10PQJ9GD0iPU89pD2Uvdw+Hr5I/pF+t75XPlO+VT5
-tvi59/L2L/YD9ZfzcfK18RbxaPDr79zvLfC18HPxRfIY80n0vvXr9rr3aPj++E35TvkM+Zb4H/ik
-9/P2HvZN9aH0JfSM8xnzkvOY9FT1CvYo9474z/l7+tn6pvvO/HX9bv0q/cH8Mfy4+2b74/ox+qT5
-+/jj9/T2xvYJ91b3mPel98T3i/iz+Zn6YPtz/AP+VwB5A7wGiwlSDMkPjhPAFiYZzxrYG5Ic5RyN
-HCEc1xvyGmQZERhtF0IXaBeCFzEX8Ba/F4cZ3BqDG2gcxh1sH64grCDZHz4fyB7jHTkcmRltFpET
-TRHwDuIL5Ai2BtsE8QJFASMAoP+W/37/Ef/v/qH/mQABAdMAoADVADcBugD+/vL8Zfvo+bP3x/TN
-8bLvju6J7Vnshetl68jrWuzx7KDtpO4O8HXxdfJg87X0TvaS92L4BPmm+TP6dPp4+h/6xvnu+R/6
-KvqE+jX7L/xn/Wr+Rf94ALABhAJRA3IEvAXzBi0Iegm1CrcLmQx0DTIO6Q67D0sQQBAWEP8PrQ8L
-DyYOYg3rDEEMQQtrCtcJeQlgCT0J7AjrCJQJSAplCjQKSArsCpULPwvvCbYIPgjGB18GWwRwAsAA
-L/+S/R78DPsY+lj5tPjW90r3Zfew9/H3SPjm+AP6Cvsv+wT7WPvm+xb8lfuG+lD5NfiM91b33PYJ
-9tf1ePYw97v3efiE+Wv6Kvst/Hj9s/6R/xUAZAB9AHoAVwDi/xL//P3f/D78DPx7+3j63fkU+qL6
-Evuu+7H8rv11/h3/jf/k/0EAeQBoAAUAS/+b/gn+Mv1Z/L77E/uA+mX6ePqW+tT6B/s0+2v7aPsv
-+1f73fsD/Mj7rPuL+x37efre+Vn5ufgd+LL3KPeB9vz1b/Xe9IL0ZPRq9G30UPQm9Bn0KvQE9GDz
-jPIb8hvyC/L98WPyEvOr8wX0+POm84fzzvNL9J/05/Rs9bn1gPU+9Wv1pPWB9XT1lfWV9a71wvV6
-9YL1Jfaf9r729fay9wn5bPpV++P7W/ye/I38R/zu+4j7BPt6+in6B/oU+lz6Zvoc+uH5A/rS+iv8
-n/2g/zID4Qc6DKoPcxJgFc8YHRydHj0gYCH8IdIhLyEuILUeHR2KG/0Z1xhcGCsYzBd3F7IXdBiH
-GdIa9hvaHCoeOCD0If0heyC+HjcdKxsKGEMUlhA6DTQKSgcFBAMBQ/8l/rL8cPsw+8P7MvwQ/Dz8
-N/03/pv+N/5j/eP8p/z8+1/6yvf/9Mny2fCN7mbsFOtx6ivqCeoX6tvqbewW7jPv8u/78Gjyq/N8
-9Bz1+fUj9yX4sfjr+Bv5Y/mq+cj5A/p5+sX6NftY/Mj94/7N/9wACAI1A0MEKQUWBhwHLQg+CQ0K
-VQqQCkELAAyPDBINbw2KDZ0NFQ7CDhUPRA+MD24P5g6aDo0OGQ4fDTkMrAtWC/YKJwoVCV0IGgjs
-B6MHUwcXBykHcweRBy0HMwY1BY4EsgMqAkwA0/7K/Zb8K/vj+eb4X/gB+ET3kvZg9lH2RfZy9s32
-jPe4+HD5hvm7+Qr6DPr1+bv5APku+KH3BPd/9qr2UPfh90n4pfgI+b75E/u6/Ov9cv4T/wwA0gAN
-AbkAQQDw/0X/Df7u/E387/uR+zz7/foI+6b7ePwT/Y79OP4X/9v/dgAAAWgBrAHLAaIBPwHyAMEA
-PAA2/xr+dv03/f78qvwA/C77/fpk+7z78/sw/I787Pz0/OD8N/2f/Tn9TPy3+zP7Ovoo+Vf4cvcq
-9gb1Z/Tt82Tz+vLY8ury+vIH82nzJ/Ss9N/0RPXY9TL2SPYH9on1OfUB9af0QvTe85rzd/Mu8/by
-KfNz85fzu/Mb9M30bPW29f/1m/aG93v47viy+J/4Pvmv+Uz5rvhK+O732vc5+E74Evg0+JD4yfgD
-+TD5PPl0+ez5UPqo+kf76/sX/BP8q/zk/SD/nQAJA0EGqAkODYEQqRN/FmUZMRwMHroeCB95H7If
-Px8+HiEdMRybG20bSBvgGoQamRotGw0cBB0qHn4fiSArIdMhkCKGIjAhSh9OHcEajRcjFKIQNA1M
-Co8HlAT7AVoArv9x/xP/zv5I/xUAJgCU/1b/u//z/xb/Yv3C+436Tvk49zH0IfHZ7iDtKOsK6aPn
-VOfS51XomOhm6Q/r5exK7ibv1u+78NzxzPIn81vz6PN09Hb0C/To82v08fTy9OD0QPUR9jT3lPgK
-+o/7Tf1O/zQBsgIiBNoFYQdTCBkJ/wm8CjkLtAs3DJkMsAyMDJIM2QzfDGcMCAwRDEoMowwODXAN
-xw1iDjMPrg/JD+cPIhArENAPLQ97DhcO0Q3zDJULcwrSCUYJOwilBuoEngPZAuUBvADX/yf/h/7g
-/ST9ivwR/HP7t/of+r75cvk7+fz4l/hM+DP4D/jv9xH46/cA9+b1HfWv9Jz0kvQ59M/zw/Nf9IP1
-l/ZR9/D3hfgj+RL6OPtV/BP9Fv3b/DH97v1e/iL+ZP28/HD8Nfzc+3D7Bvvb+g/7XvuP+9z7lfx3
-/Q/+g/4f/93/hwDcAOoA8gAOATQBJwHkAIoAIgDg/6T/Hv/D/gf/Mf+q/hD+7f0Q/hT++f0G/hD+
-1/23/e398v2i/Vv9AP16/OH7Nvu8+mH6u/nm+Fb45vdD9732TvZ49TX0JvPk8jPzZfNP82fz8fOP
-9Nj0/PRW9bb11fXt9RL2+/XH9XH1vPQK9HLz2PKc8qbyf/Jz8vLyaPOB8wr0QvWB9oL3OfiB+K/4
-Kfmf+Zj5M/kP+Wj5yfnw+fv5ovnE+Pj3oPfD9zn4lPjm+Jr5Xfry+pP7Tfxx/eX/zAPdB1ELoQ4l
-EoEVfRhuG/0dTh+3Hz4gpyAqIEsfpx67HZIc3BvKGyIcdBxxHIEcVB3VHncg3CHdIsgjBSVGJrIm
-3SVPJM0iOSHBHgYbzhYYE+UPlgzOCDsF6QLYAT4BnQAHAML/FQDeADsB7QDQACQB/gD6/7n+Rv1E
-+7H4XvW/8bnuKuyQ6efmnOQ+4/XiqeOx5I/l3OYA6WXrM+0o7sDun+/E8HnxhPF18WrxFvGt8DXw
-ru9776HvEvDz8ADyM/Pn9OL2vfiN+on8uP70APUCdwScBZsGhAdlCBEJbwnZCckK7guIDLMMKA3z
-DXYOsQ4LD1sPqQ9CENwQBhHJEK0QHBG4EasR/BClENIQ2xBjEJMP8g6cDioOYQ1fDHoL7QpjCjUJ
-ZwevBY0E7AMhA8oBjwD3/4X/v/7F/dL8z/vY+hf6S/mR+Cn43feI90P3DvfU9oX2+PU39WL0lvMY
-88byVPL18cfxnPGv8RTyPvI+8uryC/S69CX1pPUp9uz21vd9+MP4rfiE+L34IPkP+bP4nPi5+Pv4
-sPmQ+uv6/vqx+w/9Pv7A/vr+b/8rANoAAAGlAEEAAACa//r+WP7a/ZP9Vf0O/RD9Z/3J/R3+ev76
-/tP/0wBiAZkBDQKuAvECswI1AmUBSAA8/xD+rfxf+wL6xfj590H3jvZQ9j329PXV9QP2Sva29vT2
-wvaa9qb2gvYt9tP1U/WR9NrzefMW82Ty2PG48aTxX/FB8XPxtPH58UnykfL18oHzEfTb9Mv1i/YZ
-94n3EPi9+Cj5Lfke+RT57Pih+En4CPi+93n3VPcD9672zvYr90j3Nfd591H4XvlH+h/77vuF/DT9
-b/7c/z8BWgNaBk4J8gvQDiwSoBU+GPEZYRtSHKccAh1RHQQdgxx2HHscNBxiHIYd2B6yH3QgkCEW
-IwQl4ybWJyAoyCjhKWAqlinfJ80lsCMQIUId3RjmFM0RXw/9DHwKmgj2BxMILAgLCOcHKgjcCHYJ
-SQlHCB0H9gUWBEEBSP5g+zj4NfUY8m7uV+s76Rnn4uR640/jAOQZ5Xjm+OeI6Snrs+z67bHuyO7R
-7hfvJ++i7sPt2uwd7JHrvOqX6dnozehE6U7q3euv7fvv2/Lj9dL4n/tB/qYAfgLOAyIFkwaiB/8H
-2AefB6sHIgjVCEsJeAn9CRsLSAwlDeAN2g4iEEMR/RG9Er0T0hQeFksXjBcuF/cW6ha/FiwWCxXj
-ExQTIhL/EP8PDg8SDvQMqws5CsEImgdeBrQEXgP5AkADbwMrA5kC0AHvAAMAB/8L/gP97fu++l/5
-3fdW9gb1DPQv80zySvEV8Bfvl+6h7jDvx+8c8Fvw2PDK8e3y8vOd9H/01vOY897z//PD8y/zXvKP
-8RDxMvFq8RHxpvCh8OXwV/Hr8Z3ya/NZ9Ib1+PZv+Kv5i/o4++/7p/xP/dv9T/6U/pb+rP7w/i3/
-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
-fAiFCA4JmgnLCeQJVQqFC0gNvw6KDxEQiRC1EMEQPhGXEcQQsw+bD64P7g7dDdoMrgvRCsAK/wrw
-CuQKYwvcC4ML0AqWCqgKTwpHCQcI+gbhBbUEqwNIAnsAG/9M/n79xfx8/Hf8bPwk/Lv7kfuP+1/7
-pfos+Y73qvY+9pf1ofR382ny7/H58eDxUfHz8FXxLPLW8hnzXfOz85XzCfOE8gTyg/Ez8ffwpPAj
-8Lbv3+9j8JzwtvAd8dHx3PLk83/01PQA9Rn1YfV79Qr1gPRl9IP0gvSh9Ar1pPV19mv3S/gg+Uv6
-lftk/L78Cv1G/Wz9xf02/kT+2v1u/TT9A/3j/AH9Rv2k/UD+Ov97AI8BQQLIAgYD6QLGAq0CPAJj
-Ab4ASQB3/3H+s/0+/er88Pwk/Q39Sv0w/sX+4v4X/z//d/8/ADsB4gEuAv4BpwGSAZAB9gEFA7sD
-YwPWAiADSgRuBeUF1QW5BTcGpgc5CcYJWQkACZQJ5wrfC+MLsQtBDH0NUg5CDvANDA6wDjoPBw9F
-DqYNmw3LDa4NKg2zDAUN5g2CDrcOzg7dDuYOBA9JD7UPEhD+DyYP+Q1vDWoNMw2sDO8LMwv+CmIL
-sAt3C84KAAp4CRQJfQgHCNsHxQeHB9MG7QUTBQQE5wIeAocB6wBjAPr/vP+Q/w3/Iv4o/W38Kfwm
-/Lz7zvra+Tn52viE+NH3ofat9Wj1gPXB9dD1evU09Rr10PRe9Bv0MvRm9GH0LfQN9Bf0QvRa9Dr0
-0vM48wnzk/Mk9Hf08vRv9Yz1lvXb9Q/2RvbM9m/3GvjT+Gn51fkY+hL6FvqQ+jX7qvsn/Ar9Lf4U
-/7z/aQArAfABgAKmAr0CbQOpBKgF/gUpBrgGlgdZCM0I8QgRCbYJngr6Co0K5Am/CQkKOwoyCg8K
-BApJCgILoQt9CyQLYQvsCxEMwAtxC0sLvQqgCXAI8QYUBekDdwOcArkBkAGnAaABNgFaAOH/JQB5
-ADwAuv9//2X/Hv9h/vz8gft0+rf5D/lt+Ov3dvcC94z2ufW39Gv0wvQJ9T31Z/VM9T71Z/Uj9TP0
-LvOW8m3yW/IY8sbxoPGO8WbxNfEv8VHxWfF28ejxVPKJ8uHyXvOZ83jzUfN987nzrPO98yL0f/Tz
-9Ib11fUE9nL27vZN9+f3x/in+Yj6Wvvc+xj8Wfy//Nz8lPxU/FD8ofwk/Yn99f2A/ur+R//G/zUA
-aACxACQBegHOATQCXgImAssBkwF/AXgBcAFbAUkBbAGeAYIBKgEKAU0BtgEeAlsCUQJpAt4CTAOl
-AxkEYQRBBE8EKwU+BpwGVwYTBgQGGAZABlEGGgbgBUcGLgfNB8MHdQetB48IfwkgCpYK/gphC9YL
-RQxLDPIL2gsDDA0M/gvCC30LyAtpDGsMvQszC2cLNwwGDWoNdQ2IDfANgw6+Dm0O9g23DWoNygw5
-DNoLZQsTC/QKpApHCiAKFQoQCvMJrwmDCcUJGwrGCewIGAheB6gG1wX/BJYEaQTVA1gDewOaAyQD
-iwJUAggCXwHQAEYAW/9q/tf9W/3I/Ez8uPvr+nD6W/o5+hf6KPox+hP69/mv+Sr5kPgS+OL34vfS
-95j3Off29gr3OvdC9zn3Mfcw91f3jPev97n3jPdV92j3rffh9w74SvhF+An4Rfjj+Bv5+vj1+Ab5
-PPn9+f/6sPsE/CX8fPwl/az92f31/Uf+0P5K/3n/f//P/5MAgAE2AoYC1QKEA0IEsATWBOwERQW8
-BeIFwwWGBTMFFwVGBZkF9gUdBjIGmAYrB64H7ge6BzsH5gbfBuwGqgbPBdsETwTMAwoDYQIZAgQC
-9AHRAYoBWwGHAegB8wGkAXoBQQG3AP//Hf9Z/qv9t/zH+zP7p/rv+U/53vhw+CT4S/ip+OD46PjH
-+Hr4BfiI9wr3YPaH9f30+fT59KD0IfTu8yn0fPSd9I/0gfSE9IP0mfSj9Gf0K/QJ9NbzhvM/8x3z
-EfMy86TzOPSm9PT0T/W19Tf22vZC9zv3H/c395X3Nvip+LL4nvig+Nz4UPmm+fj5hPrj+j/7L/w5
-/bT9GP7o/qH/0P/t/zEAJQDm/x8AjwCgAI8AnwC0ANAA5ADrAAMBOQGuAUQCgAI9AgECFwITAvMB
-CQIRAhECYgLqAl4DuQMrBF0EDwThA+wD6QMMBDYEDQS6A50DuAOzA6ID1wM4BKgEZwVCBpoGqwb5
-Bl4HjQeCB2IHRwcSB+AGLwewB4kHJQcwB2UHbwd7B9kHVgjECGwJHwpVCiAKCAojCiMKIApcCqwK
-5Ar1Cs8KyQrvCtAKZwoVChwKWAp1Cn8KlwqxCsEKowp5Cq8KGAv9CocKSQoOCrIJWAntCG0IDAjU
-B40HOwcSBwEHrQbuBVYFeQW5BWEFrwQRBLwDngNBA40C+QHJAcUBugF1AakAw/9l/0n/9P6c/pj+
-Yv64/WX9jv2I/SH9ivwa/Pz7z/ty+0v7Vfs0+/L63frd+q/6i/qS+nj6Q/pn+sj67fr3+v76+PoT
-+1D7avtC+wj7zvqM+ob67Pp2+7H7s/vc+yL8Q/x9/Dz95P0Y/qL+QP9O/1b/iv+O/7f/JwBVAG8A
-pgB+ADYAYwCjAJQAhACvAO8A+wD2ADsBoQEAAmwCtwK2AqYCwwIYA3gDewNMAy0D3QKIAoECcAIO
-ArUBmQFrAfcAjgB9AHQAKwDj/7X/of+h/2D/7/6p/nD+Cv6Q/TD9z/xX/On7iPsV+3j6GPo3+g/6
-hfk++ez4X/gV+Pb3rPdc9zT3W/eq95D3J/cC9yH3H/fy9tn2pPYl9qr1pvXg9YL1uPRl9IP0mvSK
-9JP05fRM9c71l/ZB9233mPcu+Kr4r/ii+N34Oflc+Uz5avmf+bz57Pkx+m36lvq2+tT6Dftw+9j7
-G/w6/IL82/zt/Cb9zf1p/qf+rf6o/q7+0P74/g7/JP8j/wT/+P7i/qL+o/7//iv/+v4L/5H/AgBR
-ALwAIAFJAVsBmAEEAmoCjwKGApACogKjAqACqQKwAqQCiAJrAowCAgNsA6AD6ANSBKsE9AQnBUIF
-eAXEBQIGLAY9BlAGSAb0BagFowW0BeEFPQZxBkIG8wX1BV0GpwaXBmEGOQaIBjgHswfkB/cH+wdB
-CLAIgAi0BzgHLwf7Bn8GPgZHBhQGzQXwBUwGrgYVB2AHkwfQBxgISghfCEQIAgjnB9IHaAf8BsoG
-eAYrBi0GQgZBBiwGEAYHBggG9wXKBagFrAWrBZEFjQV5BQAFawQsBAMEawOPArsBAwHKANkAdAAU
-AEgAYAAYABcAfADGALAAZwA1ABIApv/2/oT+Vv7h/S/97vxJ/aP9p/3E/ez99P1C/oX+Zv5i/nn+
-av5b/l3+ZP52/mP+I/5U/g//bf9N/1T/lv/T//7/GgAAAIH/xP40/hf+Kf4Y/hX+Uf7A/jv/mf/N
-/8f/y/8oAMwAOwELAaEAqQDbAHsA1P+B/4L/z/9CAJMAxwDgAP8AawHHAZ4BQwEvAXABwQHdAbEB
-RAGsACEArP8Z/4z+R/4t/ib+Sv5f/i7+9P3c/an9Vf0+/Vn9Mf2u/BL8lvtE+y/7TPs0++j6yvrx
-+lL7zftP/KX8kPxU/E38Y/xg/Dv88vuh+3j7OfvY+qv6cvoP+hr6S/oG+tz5I/pi+m76MvqW+Qn5
-sfhd+Er4UvgD+Kr3k/d/90z3KPc29173pvcs+OD4cfmz+d75Gvp0+qn6d/oz+ln67fpk+3X7a/t0
-+7r7Cvz6+wX8j/wC/S/9jP0O/ib+3/3r/Un+cf6T/u/+Lv80/0D/Nv/4/tb+7f7x/tX++f5A/yP/
-tf6y/jP/Tf/c/r7+N//y/48AzADtACYBPQFGAVcBUwFjAYoBlQG2AQQCEgLDAYYBsgFUAs0CqwKL
-ArMCywLOAuICHgNYA4UDHQTlBFgFsgUdBkIGAAalBS4FuQS5BOsE0gSzBPcEaQWtBaIFfQWgBdcF
-1wXOBd4FEQZmBrAGsAYyBtIFGAY4Bs4FmAXEBeQF/QUOBucFyAW/BaEFqQXiBdoFfwVWBX0FhQV7
-BY8FUQXNBLAEyQSJBEMEQAQVBJkDRANRA2gDVAMjA/MC7AIOAyEDAwPJAmwC4QFaAQEBwQCGAGUA
-VwAkAP7/7v+8/5X/gv9t/4T/xP+j/wj/v/4F/1L/e/9r/+/+g/7I/jT/D/+w/oP+WP5E/ob+sf57
-/k/+cP6g/p3+aP5P/o3+5v4+/6L/6P/9////AwAuAHgAewBFAEQASgASAPL/EQAMANT/2f8MABcA
-FgBGAIoAkQBIAAsAKgB+AKUAlwB6AEMAOACjAAoB+gDyAEIBcQFsAYABlwF0AScB8QDBAG0AJwAV
-AOX/mP+R/2H/4v7a/hn/BP/r/v/+C/8q/0L/+P6F/mT+kf7F/uP+yP5O/rf9Y/1O/SD9wPx7/G/8
-f/yK/Ij8q/zi/Nn8sfzY/Df9TP0R/db8nvyE/J38j/w+/Ar8EfwV/M37W/sW+xj7L/sV+wr7LvsW
-+8X6ofqi+mj67vmQ+ZX5/PlM+mD6pPrU+rr61vr6+sT6hfp9+pD6dPoc+v35PPpT+gf6+/mT+iL7
-Z/u5+/f7//sY/Hf8+Pxs/dP9QP6K/qj+vf7H/uL+Bv/+/gX/Ov9l/6H/5/8LADQAhwDxAGAByAEV
-AjYCOQI+AkECSAJ0AsICJAOKA9oDAAT0A9cD1gPwA90DXAPhAvsCOAMPA9cC0ALCArkC2wITA1ID
-fQOWA+cDTARGBBsESgRmBAYEmwOyAwYEAwS9A7YDGASFBNAEBQUiBSMFFQUhBUYFcAWUBYcFPAUd
-BWUFlgVBBcwEpQSwBP0ERgUFBXgEDgTtA/wD+QPOA4UDOAMoA1kDcAM3A+UC0QL2AiEDQQMcA54C
-XgKXAqECXQIcAqwBKwEJAQIByACLAEsACACy/yn/v/6n/pv+aP4v/v790P2v/b79FP4//hX+/f39
-/er93f3A/Wr9Kv0k/Rr99/zP/KL8iPyC/GL8P/xY/LX8Gf1g/Y79kv2o/QD+Qf43/hH+KP5o/mn+
-a/6O/kr+sf11/br96/3w/fr96v31/XD+//4V/xT/X/+k/8r/BQB5AN4A2ACoALIA3QDMAK0A4gAR
-AdAAjACSAGwAHgBCANYAMQEaAe8A1wDEAM4A+wALAfgAHwF2AbcBzgGzAWwBBQGzAJ4AnQCNAJAA
-nwB/ACoA8P8BAAUA6P8AACoAMgBnANIA9wCoAFoATgA1APD/qv9o//r+jP6i/un+sv5E/gD+of0/
-/VH9of3C/a39ev1T/Uj9Gf24/G78bfyc/KL8gvyI/JP8kvzH/AH9+/zT/Mn8+/wX/br8XPyK/MT8
-hPw8/F38r/zG/IH8PPwm/BP8BfwN/Cz8WfyB/LH89Pw1/VH9Nv0W/Sz9Zf2S/Yn9Pv34/AL9P/02
-/VP9K/7m/hX/Tv/M/1cAsQC0ALcAEQFGAS0BUgGmAa8BhQGpAf0BAQIBAl8CnAJsAlMCnALsAgMD
-FQNJA4cDkQN1A4YD1ANOBLME9AQ0BVQFZQWDBZgFmwWCBVIFQwVPBUUFCgWvBH4EgQSXBLYEqQR0
-BF0EZARuBHUEZQQtBPUD9QMiBDAE4QN6A4IDrANRA8ACWgIQAjICowLBAqkCoQK7AhoDhAOGA1cD
-fwPOA/UDGwRBBB0EzAO5A9cDrQMzA98CxQKmAncCYAJsAnACRwInAlYCgAJQAg4C2gGWAVYBEgHO
-AJwAaQBDADgAHgDc/5r/lv/c/wQA2v+p/33/Ov/4/qr+XP4a/sP9av1F/Tv9/fy7/Lz8ovxR/Ej8
-g/yf/Iz8Q/wb/FL8T/z8+wL8MvwC/LP7lft3+zD78/r0+gr7Ffss+0L7Yfut+9372PsO/HP8rfzE
-/Nb81Pyo/I/8xfwA/RL9V/3D/ev96f3k/eD9B/4a/iz+rP4I//P+8f4G/+/+vv6o/p3+hf6Q/sT+
-6/6y/kz+d/7u/u7+tf6r/q7+r/7B/hv/oP+z/1r/M/82/+L+hf6p/vD+7f7c/tf+nP5y/sb+Of9F
-/x3/If94/9f/0f+L/17/hf/h/xsADADL/6H/uP++/3X//f5x/hX+Ef4W/gL+Ev48/k/+Y/6M/qH+
-ov6k/nL+6f1C/bv8V/wQ/Ar8Q/xM/DT8rfxA/Q79qPyY/LD8DP2S/Z/9Tf06/VD9Zf1o/QH9YPwv
-/FX8evyz/O/8Mf16/cv9T/7E/h7/yv96ALEAowB5ADUAAAD5/0MAogC1AM0AIwF2AcAB5wHUAfcB
-YgKCAj0C7wHEAcMByQGeAX0BuwEzAq4CNgOsA/EDSASzBPYEJQU8BQ4F9ARFBVUFyQRaBF4ElQTO
-BCUFoAXwBR8GfwbuBgUHuwZ6BmUGcQaaBrsGzQaJBugFjwWJBV0FBgWoBEEEHgRVBHIEXwRTBFAE
-VgRlBF8EXgRjBBAEdgMVA/AC6ALOAosCkQLOAsMCcwI/AlcCfAJ5AmoCgQKSAlEC+gHxASUCXAKQ
-Aq0CZALFAVABIAHwAN8ALQGcAeYBBQIOAvUBjQEfATgBmgGTATYBEgHxAHAA+v/A/33/G//t/in/
-dP+M/33/U/8j/w//E/8j/y3/Jv9H/6H/1P+k/0n/G/8b//3+wP67/vD++P7N/r3+qP5F/s/9t/3a
-/eT97v31/d/98f0O/tT9fP1M/Sz9DP3//O/8mfwZ/Mr7kfsT+4v6TPop+kT61Ppu+8j7+fsn/ID8
-xfyP/Cj8Avwt/IH8v/y1/Fv87/vX+wz8Evz9+zP8pvw+/bP9tP2i/d79H/4q/mT+yP7O/rf+2f6q
-/hr+w/29/bf9qf3E/eH9t/1+/W39R/0a/Sz9Wf1w/aD9Jf6K/n7+m/7b/pL+KP6C/vv+kf4N/ir+
-Mv76/dX9iP07/Sz9F/32/PH8Af0J/Rj9R/1b/Vf9e/2G/V79Zf2T/XH9If0z/W79dv1Z/ef8PPwF
-/Fr8k/x3/E78TPyJ/Ab9b/2V/db9Mv5Z/nH+k/5m/vz9BP6F/s7+x/7H/sL+1v4q/07/A//q/lH/
-qP+u/4X/Vv9S/3X/rP/Q/8n/wv/J//b/VAB9AGQAfgC5AN0ANAGvAdsB3QENAisCOgJ+Aq0CfwJW
-AskCqwMLBM0DuQPdA+sDBQQiBD0EbgSLBHkEbQSMBKkEjARsBHsEowTlBC0FYQWTBbMFmgVJBQYF
-FAVPBXMFiAW8Be4F6AXHBeAFJgZYBmwGNAajBVAFLgWpBB8E6gO4A98DeATMBMoEwwStBLQE9gTY
-BEQE6APZA7IDdwNJA+wCYgL/Ac0BrwHGAeUBsQFwAXkBogHGAecB4wHRAe4BFAL7Ab4BnwF8AUsB
-OwE9ARcB3wD5ADcBIQHfAM0A+AA8AUoBGgEEAf0AwgCBAIsAwQDCAKwAwgC8AI8AoAD0ABkB7QDU
-AK8AUAA3AGAASwAJAPr/NACFAI0AUABBAHMAnQCZAIIAagAhAMP/uf/l/9L/k/+I/7L/y/+k/0P/
-Ev8+/2r/gv94/03/H//r/vr+Ov8j/9j+v/67/rb+nf4R/jj9y/ym/CL8xvsV/Hj8p/zP/Nv84fz7
-/Av9yPwc/Mn7E/wb/Lz7qPu2+1b7/fo/+6z7w/ur+4L7g/sU/KH8cvzh+7r7AfwO/Nn72Pv7+9X7
-1Ptc/NT85vzJ/Mf8+vw6/Wn9Z/0d/br8ePxM/Cr8K/xA/FT8cPzg/ID9sf2h/b795/0E/vb9s/2R
-/b39/P0I/u/98/0B/sP9TP0c/RH9yPyl/NL84fzF/OT8RP1p/WT9m/17/Q/9Of2Q/Uv9tfyl/EH9
-x/3N/ZP9mP0A/jT+BP7J/cX99P32/fT9V/7x/k//Tv9y//P/UgBqAI8A3AAcATYBIgH9APsAIgEw
-AeEArADmAAwB/gAoAZcBEQJfAp0C9gIjAyQDNgMwAxUDFwMPA70CYQJGAjUCHQIBAuMBHgKDAp4C
-yQL4AuQC4QL5Au4C/AJHA2sDgwPGA7IDNAMNA18DawM3A4UDEQQtBAwECgQTBO8DqQNyA0UDIQM0
-A24DgQN5A5EDqgOJA2MDhAO5A5QDRQM/Az8D+gLAApYCYgJ4AsQCygKaAokCoQLGAusCBAPxAssC
-uAKhAoECQwIGAugBlAEuATMBfQF7AUUBXQFeASABOQF8AWYBIAHZAH4ASAAuAMD/LP/x/gT/Fv8N
-//X+6v4b/4X/3v/4/+f/1f/a/9n/wf/X/x8AJgDm/+H/CQDi/5D/bf97/5b/jv+B/7r/JABUAEMA
-OgBLAGcAdQB+AIUAagBrAJkAfwA2ACwAZgCrAJ4ARwBNANEACwGvAFUAQAAqAPz/0v/I/9z/tv9S
-/1r/uP+5/3b/c/+f/4z/c/+a/3v/Av/Q/vn+Cv/g/uT+GP/l/nH+Rv5C/kf+af6I/q/+xP69/uP+
-Dv/v/qr+ef5Q/g/+3/3M/YD9G/2v/CT82vvl++j7svuW+9b7KPxL/Fr8e/yO/I38y/wB/bz8pvz8
-/M/8PPwJ/Pf7w/u3++b7SfzM/CH9Tv1m/U/9V/2V/cL9A/5U/lz+Sv5G/iH+D/4k/iL+Mf57/qv+
-fv45/mH+7f4x/zz/lv/F/13/G/+O/xAAAQDQ/+n/BQD2/+H/1P+q/7z/YADGAIUAgwAIAS8BtAB7
-ANAA3gBrAFcAxQD6AP8A/QCPACwAYAB4AC0ARwDVAAgBsgCJAAEBZQEwAfEAJgGEAaABaQEHAdIA
-DQFlAVwBFwEfAWcBcwFyAcMBAwL0AfEBLgKFAq0CqAKVAn8CjgKWAj0CAgJvAsoCnwJ0AnYCXwIw
-AiACGgIKAtIBcgEwASoBSQE7AeEAqQDzAFEBSQEoAQEBlgBMAJMABAEMAcMAjQCdAOgALAEvAesA
-pACxANgApgBcAFUATAAfABcANwACAG//Pv+U//r/OwBCACsAUAC+APgA0wCpALAA0gDhAAUBGwGZ
-ANf/mP++/+n/MACEAKsA3gBKAZABaQEVAcoAfQA4AAkA4P+p/2T/P/9W/1P/Ff/S/nr+Tv7L/lX/
-Dv9l/hb+9P3R/er9Jv47/iz+Gf4g/gr+lf0w/Ub9a/1N/WX94/1h/rX++f4p/zL/NP9V/4z/oP9x
-/zj/Df8K/zX/MP/X/nz+if77/nH/tf/G/+H/BQD8/9r/p/9H/8n+Yf40/j3+Sf49/jz+Vf6a/v/+
-O/9k/6P/5/8kAE4AEQBY/7/+t/69/k/+7P0Q/mr+sv7X/sz+zf7x/vD++v4s/0b/iv8jAKkA4wDQ
-AHoAEQDI/6r/q/+p/5P/oP/J/8T/mf9O//3+0P67/vL+b//H/97/zf+b/1T/Lf81/zX/L/9q/+j/
-RABtAKkAogAwANX/nf+B/7b/AwAnAFIAlAC8APgAQgF4AZEBVQFaAR0C0wIeAzUDCwPQAr8CbwLa
-AbEB4wEYAl0CUQLrAaQBmgG5AdMB8gFAAq8CKQOXA78DkwNyA4MDjwODA0oD+gL1AlIDowOMA0AD
-6gKdAokCiAKFApYCwAIFAxwD5gKDAjACFQL5AfoBSQKhAssCwgKsAooCKwK8AXcBdAGjAbsBpgFs
-Ae4ARQD6/wMAm//1/u3+Wv/6/5kArQCLAKYAeQAUAPT/3f++/8b/x//I/+f/8v++/0j/A/8k/zv/
-Ov86/0v/b/95/3v/k/+6/9//AQBGAJQAhQAtAPv/7v/n/9H/yf/6/z0AXwA/AMz/S//k/pX+gv6E
-/nr+g/6W/rL+u/6s/rT+xf7//pD/3P92/wn/+f7K/mj+E/7E/ZT9i/2I/af9zv3K/d/9V/72/i//
-6/7I/gn/Iv8I/xn/Ev/W/on+O/4b/g3+xv11/VP9Uv1z/b39F/4n/gL+Ff4v/hX+4v2U/U/9VP2T
-/cT9lf1M/VD9fP2i/Zz9df2F/dj98/24/Zn9qP22/cb91P3G/X/9T/17/V/91Pyi/Mf8zPzh/Cn9
-bf2h/br91f0w/lr+4v2B/a795P0O/m/+pv53/mD+s/4u/0z/+/7M/uD+1/60/qL+rv4I/4T/r/+y
-/8b/z//l/+7/x/+3/+7/PQB4AIMAWAASAOj/AgBMAFkA8v+c/8f/LwBPAA0ABwBuANUAHgFdAWMB
-RwFfAUMB6ADTANgA6gBKAacByAHNAdIB8wEkAiEC7QHvAScCLQL6Ad4BygGLAT4B+wDmAP4AOAGS
-AcwB5wEUAj0CRQIrAkMCrALjAt0C+wIeAyMDPANFAxQD5gLdAvIC8QKxAnwChQLGAggDAQP7AlUD
-qwObA2MDUgNFAwAD0wLnArkCRgJDArcC0QKLAn4ClwKtAtAC0QKuAooCgAKzAtcCowJlAksCMgIS
-AvQB+AH0Aa0BiwHlAT4CHgICAkICUQLsAXQBQQEdAdQAxAAXATgB5gCJAGcAdwBxAEUAWgDCABEB
-JwEaAdQAnwCzAKYAYwBDAFcAXAAZANL/0v/t/+z/1P+o/1D/1/6q/g//jv+W/zj/3P7L/g//Kf/S
-/qf+0P7p/g//Zv+A/0P/IP9Q/5j/o/+a/6f/pv+z/9f/y/+d/2j/Ff/p/gD/F/80/1//Vf83/1H/
-Z/9C/yP/Of9f/3T/k//L/wkAJADr/6L/jf9u/0z/Xf+G/47/aP8z/wr/AP/6/tb+sv6e/nv+ZP5N
-/iD+WP7t/gj/lv47/if+Tf6A/l3+Ev7e/az9sv3j/cL9Zf1T/Yf9kP1l/Un9Lf3x/Ln8ufwA/WH9
-kv2Q/Yr9mv2t/aT9pv3O/Qb+G/7u/bX9uf3j/b/9YP09/Tn9Pf16/dD95v2+/c39HP5J/lT+VP4q
-/hX+T/5t/iL+0P3h/f393/3w/SX+DP71/Tz+g/5//mP+Tv5c/qr+3/7l/hf/R/9p/6L/nv9a/0T/
-av+S/7D/4P8IANr/oP/A/93/0//a/8j/of/a/1EAlwCSAHkAjgCxAJwAXgA0ACEAIwBYAJkAswDG
-AO0A7gDIALYAsgC9APQAMQE9ARUBEgFoAZoBYQEXAe0A0wC+AJUAkQC+AJ8ASwBhAJMAWAAnAEEA
-XACpACYBTAEZAd4AvgDcAAYBxgBNACYAPgAyAPj/2P/p/x4AbwCzAOoAIgE4AR0BCgEMAQIB9QD+
-AOgAnQCSALQAkwBhAGUAfACKALAA+QAjAQgB0wC9AO0ALgEpARcBHgETAQoBHwFEAVIBTQFPAU8B
-IQHWAOYARAE+AeEAuACxAMwABAHVAH8AhwCjAKcAqgCGAFwAhQDlACABIAE8AZQBlgE4ASgBbwGL
-AXMBUgEmAf0A8gD4AOIAvACyAO0AUgF+AW8BWgE5AQ0B4wDkAAMB8QDiABMBGwGyAEoAUABzAFkA
-MwAnACAADwD+/xQAPAAxAAkAHwBmAJIAiABYAHsAvgCJAFYARQABAPn/JAAjAEIAfgCDAJwA7wD2
-AKUApwAgAXkBdgF/Ab0BzQHTAQoCAwLAAZIBawE4AfEAvgC5ALUAnACcAMkA1gDPAAUBMwElARYB
-9ACcAGoAfwCOAHQARAArAFMAcQBcAD0AFADy//H/7f/A/4H/ev99/xP/tv7o/hT/+P76/hH/E/8N
-/9v+mv58/lz+a/6m/pz+Vf4d/gL+0f2b/bX9CP4l/if+c/69/rv+vv7C/qj+pf6+/sn+1/4J/wH/
-xf7w/kn/Pv/z/tv+Bv8U/xT/WP+l/8H/pf9Y/wb/wf6q/sj+3v7K/rT+2f4M//b+1f7l/gD/FP8o
-/2X/oP9O/+H+Dv84/+b+kf5//pL+0P4S/zT/bP+Z/7b/9/8XANX/dv9C/xr/tv48/gb+A/4c/mX+
-pP6+/if/uf+4/27/if/S/yEAigC4ALMAtQBwAPL/sf/E/77/Wv/w/vD+RP94/23/gP/g/08AmQCu
-AJMAcQBoAF0A+f9s/zf/MP/+/sL+m/47/qX9ff3Q/Q3+KP5B/jr+VP7Q/jP/Gf/X/qv+lP6V/nv+
-Lf7p/dP93P0h/sH+Xf+7//L/DwA9AG4AgQCBAFAABAADAD0AcgCAAFIAKwA+AFoAVgBTAG0AiwCu
-AN8A8wDeAKsAWAAaAPr/wv+k/87/KQCHAL0A5wAXAUUBeQGYAaQBzwHhAZEBZAG3AeYBkgE0ATMB
-ZwG3AfcB+gHuAc4BvgHfAdkBiQFrAdEBdALuAjEDYgNMA+QCmgKFAl8CFAKwAUMBAAHrANcAtACB
-AFQATgB6ANsAVQHFARQCGwLwAckBrwGqAaYBiQFRASgBOgFYASkBzACNAEYALwCuAB0BHQE3AV8B
-TAE8AS8B3gCXAOMAlgEAAvsB2QHCAbIBjgFPAQ8B1wCyALoA1ACyAH4AgwBrAAAAzP/6/yAALQBD
-AHwAxgDgAL4AjwCiAAYBHwG0AJUA+AAZAfUA7QDWALgAtwC7AMIA4gABAfcA4QDnAPEAswAzABMA
-bQCmAMUA7QAFASQBAAFnAOj/uf+b/2f/Mf8//2P/DP9R/uv90P19/UL9Tv1D/V/91P1A/nj+bf42
-/lT+n/6N/mf+Z/58/sX+A//U/l3++P3Q/ez9If5N/pP+6P4e/zn/Qv9K/0b/F/8G/zT/Vv9c/1b/
-Qv8Q/7r+h/6D/nT+a/6N/tL+/P7g/qn+nv6v/p/+lP6t/rr+xv7+/iX/7P6S/p7+Cv9N/zD/8/7H
-/qj+eP4t/t39p/2g/a79vP3P/c792P0d/mb+mv7j/hX/Cf8F/zr/Xv8u/wP/BP/0/vL+7f6j/lz+
-Xv6X/vT+T/98/5X/xv/5/xIAIwAaAOL/t//V/+//of9H/yr/8/68/rz+tv6j/qj+2P75/uD+5P4F
-//T+/f5n/6P/Kf+3/g3/S/8g/0X/Wv9L/5v/5//s/wAA/P+4/7j/9//F/0P///7w/vb+Fv88/z//
-V//B/0AAcQBnAHIAeQBkAE4ARwA8AEQAbQB5AHYAYQAxAEAAegB3AGwAvwAjATABDwH6APQA/AAm
-AWEBrwHxAdwBnQF1AU0BDAHPAMUA4AD3AOAAtwDcABoB/gDCAL8AwQC1ANIAEwEzARQB6AD+AHUB
-0gG0AWABHAEgAVgBVwEMAZYAOwBTAKAAtACZAKQAuwClAJ8A4AAvAVoBRgEmAUIBSQEYAQgB/AC/
-AK0A+gAYAdEAqgDYABMB/wDWAPUAAwHyACYBfgGjAZwBhwF1AXQBZAETAa8AfABfAE8AYAB1AHYA
-egCEAJwA3wAmAVABZQFoAWYBfwG4Aa0BTAEqAVwBWQE+AWMBjwGeAaIBpAGuAa0BoAGNAXEBYAEy
-Af8AGQFEARYBoQA+ADgAiADQANsA2ADwAAQBAgEPAR4B7gCFAEwAdgCVAGkANABCAGkAVAAyADQA
-OwArAAcA1f9u/+X+0P7x/q3+pP7T/pj+cf6h/qj+iP5j/lz+mf68/nf+E/7k/Qn+S/5J/lf+u/4M
-/0z/ov/N/+f/EgAVAEAArACpAD4A8P+4/3D/NP8k/xv/Ef8y/2r/nv/a/wwABgASAHUArgBdANb/
-nf+h/53/xf8BAAAA8v8TAD4AUABMADoAVQCOAHMAOQBYAHEAXABtAFYA/P/j/wkAAgDg/8H/p/+o
-/6X/lv+H/2T/P/8r/yz/Of8a/8P+ff6v/kj/yf/U/3P/Kv9L/4v/vf/3/wAA2v8VAKYA3gCIAAQA
-qf+P/5b/dv91/1cAvgEFAg4BvwC4AUICdAFEAMj/KwC6AI4AVP/F/S/93P3A/uT+P/6k/Sn+h//6
-///+0f1p/cn96P37/PX77/t+/Aj9Nv2//Fn80vym/e79qv16/Yv9jP2S/bj9nf05/c78gPxu/IT8
-y/wv/Vj9Vf2d/TP+f/5n/nn+tP6u/qH+q/6U/m3+LP7k/Qj+hv62/o/+tv5S////hADgAAMB8ADL
-AJ8AfgCKAJYAewBDAAwA3v+w/8L/2P95/0//9P+3AAUBDwEjAVIBSgHXAHIAaABlABoArf+J/7D/
-tf+f/7v/EwCqAGABzAHHAaEBwwErAlYCNQIgAjcCOQLdAVUB8ADAANEA+QDzAPcALQFYAW8BggGf
-AeEBMQJvAoYCbwIjApgBKQEXARwBDQEgAXMB1AHxAY4BDQETAVUBNQEDARUBIQEBAdQAoQB9AHgA
-dgCFAKcAtADaACIBNQEGAeUABQE3ARIBqQBpAFUAOwAZAPz/DABDAFsAXABmAHEAiQCnAJsAdQCD
-ALQAxADXABwBUAFAATEBPQFMATMBzAB8ALkAJAEdAdYA1AD3AOoAuACJAIQAxwABARQBJAHyAJwA
-qgACARgB1QB9AGQAowDNAG0A0v9r/1r/2f9iADIA6v8wAJgA5wA7AVwBMQH4AA0BVQEIATkA1f/q
-/ygAfwDGAOgAEgFgAaIBkAE5ARMBUwGXAbYBxwGOAdEAEwD9/1sAmQCMAGoAZgBwAEYA4f+L/6b/
-MABWAA8AQwCnAHEA5f+P/5L/s//F//b/DgDb/9H/3f94//b+5v42/6r//f/t/8j/3f8LADQAFwCm
-/zv/UP/n/1sAJgCA/zf/n/8iADwA1f99/8v/NAAiAAkAXgDSANwAeAD4/7L/2P8cABcAyv/A/zgA
-egANAHn/Of9J/5r/5v/B/1D/EP85/2D/B/+B/mT+yv5O/1P/1P6n/hb/lf+Y//n+SP4M/kf+rf6+
-/mn+cf4D/0f/JP9K/8L/+//X/6v/nP+f/8H/2/+S/wP/y/4h/1v/Qf87/yb/+P4K/3L/vf97/0X/
-zv9oAFIA8//n/zYAXwAIAJ3/cv90/5//ev/d/on+m/6Z/rD+Dv8t/+r+AP+E/7H/fv97/3//H/+b
-/lb+J/7G/Sf9qfzG/HD9Nf6S/oT+kv7f/u/+pv6B/oX+Kv6M/Xz9Av5O/if+HP5Z/oP+q/77/kn/
-lP/Y/+//0/+k/4n/gf9u/1n/ef/j/0YAZwBIAAgA9P8EANn/Yv8c/xr/Ef/2/tv+5v4j/2b/o//W
-//L/FABcAKIAlwBlAF8AMgDR/9H//v/M/5T/nf+Z/5L/5/9YAJsArwCaAJEArADHANkA4gDiAPYA
-DgEDAdgAkABXAHUAwADUAKMAcgBvAIsAfQABAHj/df/a/1QAmwCGAGgAgACLAFMAMgBjALYACwFT
-AVMB6ACTAKMAugB9ACIASgDxAEcBEgHaAMAAnwBpADAAGgD1/+z/SQClAN0AJAExAQIBAAEXASUB
-LgH1AKMAlwCTAEgACAAJAOb/cv8Z/x//Yv/D/z4AyAA1AXwBsgHRAewB6gGXAR4BxACzAOMAAQHb
-AMcAMQG0AZMBQQFgAZsBxwH0Ae8B2gHkAbMBSAElAVQBhQGjAcEBwgGUAWMBMgHsAKwAYQAVACwA
-iQDIABYBXgHoAPH/lf/e/ywAgADiACUBTwFKAR0B8QCYABEA1/8gAJoA4QDxAAEBFgEcASwBQgEg
-AfMAAAESAdYAagAiABkARgBEAOL/mv+w/xUAoQD3AOUAqwC+ABUBLgHBABcAo/9x/zn/8f7D/p3+
-k/7C/uH+8P4w/6r/NwCDAEAA4P8gAKoAoQANAKb/nf+V/3//V/84/2z/ev81/0//p/+K/0n/iv/e
-/9f/zP/n/+j/sP+O/4z/df9g/3v/j/9W/yL/NP80/wb/G/96/7f/x//t/zAALwDA/33/rf+m/2f/
-uv9TAD0Aw/+F/03/Ov+a/8b/Sv/8/iH/0v4c/uj9Mf5c/nb+1P73/nP+N/6r/r/+R/7m/ZT9af2b
-/eL9DP4S/i7+uf5i/5f/cv9C/+n+lf6//hr/3f5L/mP+9v4k//j+y/6//gP/cP+F/0f/Vf+U/zz/
-hP5F/mf+k/7U/hn/QP8y/yT/Qf81/xH/CP/h/rb+6v5W/3z/WP8x/0T/dP9Z/y//Nf8q/zD/Yv90
-/2r/ff9y/yD/z/6l/qb+rf5w/in+N/5W/nT+tv7O/tr+N/+z//j/AQAeAFAAPADo/7P/xf/s//7/
-AADv/+f/AwA0AGEAXABCAEsAUwBIAEQAUwBqAHgAdgBrAGgAbABWAEcAiQDRAL0AiQCKALUAvgCe
-AHMAIwDR/73/5P8MAOv/s/+s/5b/fv/Q/ycA8f/S/x0APgBZALYA5gDcAOgA+QANARwB0gBVADEA
-XABVAB4ANwCBAIMAlQD8AF8BtAEKAhkC5QHAAbkByQH8AQMCuAGMAZ0BgAEuATIBgAGRAZEB0AEt
-AnQCiwKRAn4CLALqAcMBdQEvARQBGQEsAR8B/gABASIBUQFxAScB2QAkAZ4BzQHMAaMBWwEqAQwB
-4gDCAI4ALgApAIIArAC8APAAJQEuASwBWgF1AVIBdgH9AS8C2gGDAVIBHQHjALUAfQBGAEYAXwCD
-ALYAzADFAMYAuQCWAKoA6wARARgB9gDHAN0ACAEIARIBHgEMAfoA/AD8AMgAjQCEAIkAcwBTAFwA
-VgD8/9n/OwBkABQAzf+i/57/7f85AEAAKwAFAPj/FwAHAKL/eP+8/9n/vP+o/5X/av8j//b+Gf9o
-/6P/wf/8/10AowCoAHcAVwByAJMAhgBuAG4AWwAQAJT/Lf8K/wD/C/84/0v/Nv8w/1n/of/f/xcA
-VAB1AF4AMgAMAK7/D/+R/n3+qP7j/hj/Cf/0/jT/Pv/W/on+Z/4y/gX+/v0T/iH+EP4V/kb+Kv6s
-/Y397f0d/hD+OP6P/sD+6f4b/w//yP6R/nn+a/6V/uH+6P7G/rn+t/68/sP+u/66/uj+9/66/qT+
-v/7K/tX+y/6x/rD+q/6n/sj+6P7g/rb+sf72/hf/3f6T/lL+K/41/ij+8v3K/Zv9bf2i/Rv+Wv54
-/qj+uf7a/jX/Yf8+/xL/+/4Q/zP//f64/sX+of48/ib+QP49/j7+f/4c/5X/kP+I/5j/fv9//7n/
-3P/L/4//bP+Z/4///f6b/sz+B/8F/yD/nf8iAGIAkQCzANoAEgEoASABBgG4AF4ANQAmACAAJQAo
-AEYAYwBRAIAADAE3AfsACAFLAVwBSAE6AUABLwHgAK0A0wDjAJAAWgCYAMMAvQDrADQBPAEIAfwA
-EgELAQ8BJgEGAcoApwCaALIAywDWAAoBXgGwAfoBHQL/AbkBnAGRAVYBPQFqAW8BHgHFAKMAnwCC
-AFUAJgABACQAXgBmAEcANQBSAH0AmAB9ABcA3P////j/l/9G/x//+v4B/0P/k//U/wYATACsANUA
-owB8AJEAoACgAKwAyQDSAKAAigCjAKsA0wAIAfgA2wD5ADQBTwFDAS4BLwFOAVcBQAEhAQMB7QDp
-APwA9wD5AC0BXwFhARgB3QArAZMBiAFDARsBDgEAAfQA8gDPAKcAzwD2AMEAmgDPAOoAzgDEALsA
-ywDNAIgAcgB5AD4AIQA0ACYANgCDAK4AsQCxAJcAggCPAKcAxwDHAKkA1QAtASIBxACFAIoApQCp
-AKsAxADRANoABwEJAcYAsADKANsA+wAGAdMApgCTAG0AGQDL/7L/j/96/5r/qv+Q/3P/dP+V/8H/
-AAAmAOL/Y/8z/03/Xv80/7b+L/4O/lX+p/7j/g3/Hv9+/y4AcAA6ABsADQDm/9n/1/+O/wv/y/4L
-/0j/RP9k/6T/wf+m/2L/Xf+9/wsAEwAeAGYA1gAmAUwBjAHPAcoBgAEkAeQAoABUAE0AZgBiAF4A
-aACUANQA6ADKAH4AKAA5AJIAgAAIALf/Xv/Y/mj+yP0k/QL9Ff1S/fv9mv66/r3+6v4Z/zH/EP+l
-/lH+Sv4h/r/9gv2T/Zz9Yf1c/bP94v38/Uj+of7M/rz+rf7C/tb+uv5v/hL+2v3J/Z/9cv1O/Qb9
-wPyl/Jv8fvxY/FT8X/x8/Lz82vzJ/KH8gvyp/O38DP0s/Xj92v0//pn+vP5s/hz+kv5S/1j/7v7/
-/k7/Wv9x/7H/1v/E/7L/BwCIAL4A3ABFAdsBKwJcAqACkAJPAlECegKBAmkCVgJGAlEClgLFAq4C
-zwI8A50D/gM2BA0E2QPqAxMECATKA5kDkQOdA8sDBAQBBOMD3wPEA48DbAMsA9MCtwKWAkACCwLV
-AXcBMAH7AK8AQwASAHkA4wDVALcAfQDg/17/IP+5/ir+uP18/YP9fP0F/Wb8Hfwi/AL8tfuV+6H7
-xfsm/J78pfw4/OX74fvt+7n7TfsK+yb7fPu/+6P7Tfsl+0T7eftt+yb7Afsy+7f7N/xI/AD82fsS
-/GH8qPwM/V79lv3m/Tr+bf53/n/+mv66/uj+Rv+f/4D/Rv9//8L/tP+R/5v/GwA6AXECGgNBA0AD
-cAPPAwgE9AP0A38EXgU+Bv8GdwdwBwAHswaxBtgGLweRB7wHywffBxAIjwgYCRoJ4wgXCZcJHQqT
-CrIKRwqPCfcIrAhECHEHugZfBhUGngUgBQ8FMwUJBcYEwATqBA4F4QRXBM8DHQMcAp0BfAG2AJ3/
-/P7G/qT+ef4s/sz9jv2I/ZX9fP1K/TL9Pv0W/YP8/fvP+6b7Gvtm+hb6H/o4+k36P/og+iv6OvoV
-+vf5PPq8+hX7H/vt+tH66frw+rb6d/pt+p76//o4+0L7b/um+8/75vvo+/X7IPyO/Dz91P0J/hD+
-Vv7g/lX/mf/j/wUA4P8YANcAKgHDAHQAiQDgAGgBuQHqAVoCvQIOA4MDrgNvAzQDMQNFA1UDeQN3
-AzADAAMJAx0DFAMHAwIDHAN6A7UDiQNIAyADCwMBA7UCIQK4AYgBWQETAcYAogCeAG0AIgD6/93/
-q/9Q//j+3P7N/qn+cv4Y/pL9D/2//ID8Tfz/+137I/tk+zH7xvqL+hj6n/mi+ev5O/p4+nz6a/py
-+lz6HfoB+uH5f/k3+WX5nvlU+RL5YPnL+Rn6f/rp+i77aPuv+w38b/y2/Oz8Jf1T/WX9i/0A/oL+
-u/7c/kn/4/9VAKAA4AAoAXsBrQHFARICjQL7AlcDcgNUA0QDNQM2A1EDUwM9A0wDhgOJA3IDpQO8
-A5EDmgO/A9AD+wMZBBEECATZA6cDtgOvA0ADzwLbAgoD1AJ/Al8CNgIGAhoCQQI+AjMCMgI1AikC
-zwFGAcEARQAXACwAKQAiAE4AXQASAML/l/9j/yX/AP/q/tP+pv5a/jL+Mv4Z/v/9Ef43/lb+bP50
-/mn+L/7s/dj9rP2C/cv9Mf4s/hb+Wv6u/tH+1f7e/vX+6v7h/v3+5P6W/nv+sP70/hn/UP/I/0QA
-vwBxASMCeAKeArQCsQK5ArUCkwKeAucCKANNA3IDlAOwA+4DZgSlBIwEgwShBMYEsQRNBPkDygOb
-A3UDdQOTA5MDkgPBA90DwQObA4IDcgNRAysDGwPoAlUC7wE0AmYC9AFOAeIArgCmAKQAmACWAGQA
-PQCBAJcAEwB6/zr/JP8E/+b+wf5u/kD+i/7P/qb+Y/5N/lr+Yf4y/tH9ov3H/ev9+P39/eP9yv26
-/a/9u/3A/cb90f3l/SL+Yf5e/j/+Tv5r/nD+jP7a/hn/Nf9D/0z/Z/+Z/+H/BwAOAC4AHADq/yMA
-eABXAAgA5P/O/9L/AQAdAAYA7/8WAHgAqgBpABkAPwCbAKUAdABkAF8AOABSAMoA7gCrAJUAvQDq
-AOgAxQCpAIYAcwBsAHAAigB9AHYAlgCNAEkA+v/r/wAA1f+y/+b/FgALAA4APwBnAFQACQDN/6r/
-af8X//L+7f7Z/rD+b/4s/t79Z/0g/T39VP1B/U/9Wv1g/bv9Cv7i/aH9kP2g/br9s/13/TH9B/0B
-/Sv9Vv1j/XX9xP1g/vD+MP8m/w3/U//i/yIAFAAPABEABADm/8H/kf9H/zT/a/9u/1b/ev+6/+v/
-FgA9AGkAvADlAMwA0QDbAK8AZAAyAAoA+/8xAGUAWQA/ACIAKACDAK4AjADCAAABwQCbAMgA0wCa
-ACUA8P9RAKgAXwD//yUAZABGADgAXgA7AM//ov+6/7j/nf+R/4D/Sv8R/+v+4v4d/3b/ov+s/7P/
-v//u/xEA+v/i//D/DwAzAE0AQgARAPL/1/+d/5D/0f////r/BQAiACAABgDZ/6j/o//N/9b/h/9q
-/7P/v/+T/5X/mf+a/97/LQBDAFUAkwDgAPQAywC3ANYAEAEpAR4BHgEMAekA5gAQAUEBVwFdAUwB
-TAFuAXUBQgEcASUBTwG4AQ8C5AGWAYUBigF4AV4BXgFgAVMBTwFcAWYBPgHwAOEAPAGVAZwBmQGg
-AYABTgEsARoB+QDKAL8AkgAwADcAbwBAAOn/q/+b/83/8P8EAE4AcABHACUAHwAGANT/2f/w/9P/
-x//p/w8ABAC+/5f/uf/9/zsAWAB8AMUA4gDHAMkA8QAaAT4BWwFXATIBKAExARgBAQH8ANYArADC
-ABMBNAHzALQAoACRAIoAawBLAFsAUwAuAC8ATQBNABUAwf9c/xT/VP/U//L/0f/K/+D/HwBxAIAA
-TgAOAOL/DgBiAEYA5/+s/37/SP8c/xL/F//x/v/+ev/h//X/2v+//7f/tv/C//L/KwBdAHcAJgCH
-/03/gf9y/xf/+v4//6//BwAtAC4AJgAYAAQA+//a/6b/m/+l/3n/8/52/mz+f/5o/ln+Yv44/gv+
-UP6V/oD+f/6J/nL+z/6h/wgA7//Y/wYALwD4/5z/Y/85/wP/zf66/uL++v7C/ov+kv7Q/kf/v//e
-/9j/5P/D/2n/Lf88/1r/TP8U/wH/WP+p/3z/Iv8d/47/QwC9AKQAOQDF/zv/of4s/hX+VP6x/uT+
-3/7X/vz+Vv97/17/qP9zADABfwGMAVYBwAAdAHv/u/5T/mT+g/5z/jv+NP5o/lz+CP7H/fL93/5R
-AIUB9gGxARQBWwBq/yj+Fv2y/Kr8nfy9/P38Af2l/Dn8W/wW/fL9tv5R/7r/yf9w/97+Mf6I/Qf9
-3Pz7/CX9Tv2R/eb98f25/cn9Ov7L/mD/3/9CAH4AfAA5ALT/Jv+d/jn+bf77/lH/j/+j/3v/kf/C
-/6v/m/+2/8j/+P9TAFMA8P+s/4X/Zv9g/4H/vf8SAI8AzwCcAHcAlgCGAFYAbACeAMgA0wCtAKcA
-6AAVARkBLQFcAbEBGAJsApACeQJhAlECIgKmAfUAhQCSANIA+ABUAeIBSAKNArUCwwLGAuYCGAMg
-AxMDvwIXArkBjgENAW4AAADn/2oATAEjAvkCkwPuA2oErQREBLgDgANkA0EDLAMrAzADGgMNAzID
-ZAOgA+gDHgRZBJ4EqASbBNIE8QSiBHYEyQQKBcoEewRtBFUEEATXA8kDrwOAA2cDRwMAA5ACGALV
-AZsBMQHiAPIAQAGMAbABswGeAV4BPQFvAWsBKgHwAHEA0f9w/yj/2/6C/hP+6/1d/gD/PP8w/0j/
-jf+z/6L/j/9l/x3/3v53/un9if1t/Vv9If3Y/Ov8Vf2o/fb9Wf6L/pj+zP4N/yL/AP/G/rT+q/5z
-/j/+KP4b/i3+Vv6R/uD+F/8n/zr/iP/3/wsAw/97/1n/WP9y/5//rP9u/0j/mP8AAPf/zv/y/yEA
-SQBTADsAXgCRAH8AfgCkAIoATABTAIAAlACZAJQAegB3AM0AVwGcAXwBVwFLAR0BzACEAFwAKwDZ
-/5H/b/9p/0T/CP/+/h3/V/+V/5z/dP9M/yX/7P6k/l/+Lv4Y/hD+7v27/Zz9hf1k/U79a/2t/dz9
-7v3//Sf+Lf7L/WT9RP0M/b78qvy6/Kv8ZfxC/I385/zp/NL8//xG/V79VP1T/Tz98vy3/L785/wL
-/Rz9G/0E/Q79Y/2f/ZD9fv2Z/cX9yv2x/b/9+f0W/vP9rP2n/dP9wv2w/d796v2i/WT9bf2R/ZH9
-cP1Q/SH9w/xV/B38Cvzt+8n7tPua+1D7H/tM+2P7Pvs/+0r7OftL+3X7fvtP++/6v/ry+g/76/re
-+v/6Hfsg+yX7P/t4++j7cfy7/MD86/wq/TX9Zv2y/dj9L/67/hr/Nf8+/13/l//f/xQAUQCrAAkB
-fAEpAhIDzgP+AwkEYQTpBEIFXAWFBecFbwbfBkcHCQgqCSsKmgp7CuwJkAkICnsKRQofCkgKbAqM
-CpAKhArOCkALiQsEDKoM3Ay5DMYMrgz5CysLxApACikJFAizB64HYQfHBkMGKwY9BvoFxAXsBe4F
-agV1BF8DaAKAAYcAmP/N/jz+2v1c/df8kPxR/Af80/u4+6z7q/vX+xD8JfwE/J77F/um+l76Ifr4
-+en5m/lK+aL5P/pd+jv6R/qB+vr6jPvV+wH8TfyN/PP8lf3d/eT9Mv60/kX/6/+FAMoA1AAJAYoB
-FgJxApICkALBAkcD4ANQBKsEJAWzBTAGhwasBscGFQc3B+QGmwacBqIGewYUBp8FWwUzBSEFEgXu
-BPcEKwUqBfcEogQoBM4DiwMYA5QCQQLnAYUBdQFXAdQAPwC9/17/K//p/pj+Rv7h/af9o/1U/aP8
-DPy9+4/7Tvvp+on6Dfp5+WH5v/n6+dX5hPlj+YT5k/lm+Tf5N/lM+XT5kPlo+Vf5lfnM+cr5tvns
-+Wn6vfry+mf74/sv/Gv8ofz3/Gr9pf2v/d39VP7Z/h7/MP9g/7n/BABCAGkAQQDi/9b/TACmAI4A
-cgCLAMEANgGnAasBlQGeAbgBGAKCAlkC3AHAAfMBCALrAb8BlQF7AZoB1wHMAaUBsQGrAXUBNgEU
-ASIBFgGdAPr/tf+0/4T/Bf97/i7+Af7G/Yn9ZP1T/TL99vy0/IP8Wvwz/Cz8EvzX+7v7tfvD++j7
-Efwj/Of7kPvT+2/8Tvyt+4/7rfud+637s/u/+w38RPxu/Or8XP1M/Tn9nv0J/kT+jf7X/uX+E/9c
-AHcCaANpAt8AOABXAFkAMAB2AGUBdALCAh8CfAHeAQED/wPwBDoGWgetB0sHmAbhBWoFAgX1A3QC
-9AG4AjADpAL6AeoBPQKsAisDpANQBE0FtAWgBMsCXwEmAPT+Uv7x/WP9NP2p/fv9mf0X/T792/05
-/kv+sv6B//T/rv8A/zP+N/0f/Jr79PuC/NP8Gf27/af+Sf9O/wj/4v7B/sP+JP9e/+v+UP4S/tf9
-Wf0n/cn9uf5P/9v/xQCxAfEBdQHjAJcATQAGALj/OP/m/uP+z/53/ij+J/6h/gkA0QGpAsMC8gLs
-AkACSgGQACIA0f9y/zz/SP81/w3/MP+D/93/UgDMAFAB8QFgAqMC2gJxAjsBFQCN/0//8v6d/sn+
-U/+i/7r/JwDVADABTwGLAeUBBQKqAesA7P/5/m/+LP7r/dj9Fv5r/oj+Y/40/jf+i/75/iH/1v5C
-/sL9j/1d/bv84vuT+wH8Zfxv/IT83vyR/XH+/P7i/nb+Uv7G/nD/k/87/7b+Dv62/cH93P0Z/qX+
-tf/4AJMBbQE6AYgBHgJxAnsCvgJlA6UDHgOLArkCgAMEBNMDhgMUBB4FeAUOBZQEuQRZBY4FGgWu
-BL4EDgVCBSsF2wSoBNMEGwVfBbkFJgaQBrwGsQbgBiIHvgbZBREFnwSuBPYE5gSoBHAEJgQMBPgD
-rgOwAwMEDwS0A1kDXQN3AzcDwwJoAgECkgFPAQgBkAAVAKT/RP9L/5v/xv/N/9H/2v8NADoA5v8o
-/3D+9P2T/Rv9bPy0+1z7Rfvx+nj6U/qb+vz6NftZ+2/7lfv5+2f8svzZ/PL88fx9/OD74vtA/EP8
-Nfxu/L/8PP2//ez94v3S/ff9a/63/o7+a/7f/tj/wgAmASMBGwE2AV4BdAGHAY8BgAE/AekA5gD6
-ANMAowCFALsASQHCAfUB+QHeAbIBvAEKAlYClAKkAmcCEALXAYQBxgD4/4H/IP/H/uD+N/8R/5D+
-Zv5p/lL+Wv44/sH9x/1U/kb+m/0//RX9u/xq/ET8Pvw2/Bv8E/wQ/PT71Pu0+2n7M/td+377cvtp
-+437/vtc/Hb8pfwR/ZT93/3V/b394/00/nb+m/5x/iv+Xf7K/gf/M/9v/8z/QAC7ACwBwAEGA8AE
-wwW/BWwFAAUUBOQCEQLPATAC5QIHA3wCTwIlA1AEAAWKBWsGfgcnCL8HegZIBdEEtQT/A9YCMgJD
-AqsCSAPtAzQEMAQXBNUDzQN9BIMF7AV3BaMEUQNLAV3/Uf4c/oL+Tf8HAGYAgwA5AIf/5f6L/mj+
-Yv5C/s79I/2S/Nj7o/pP+Yj4vvho+fr5zPrU+4f8kfz5+xn7bvpC+nz6tfq++rz6r/ql+ur6Ivsa
-+6X72fzt/aH+FP8r/8X+Av4l/Zf8f/yN/L/8OP3M/VL+q/7c/uj++/6K/5oAcAGPAWsBUQHeAPT/
-5/4a/uP9Lv6G/tT+H/9R/4j/xP/g/+P/CAB2AMIApwAvAGf/jP6w/an8s/tD+zP7SPuu+zj8R/zr
-+/z7f/y6/Ij8Kfy2+xz7bvrc+Wr5Xvnz+ZL6sfq2+vr6P/uT+0L8EP20/ev9VP1f/NT70fsA/AT8
-2fvd+1v8DP1D/S79xf0N/wIA+/+j/ycAFAEPAToA4v9pAAQBNwFxATgCcQOoBKEFVwbXBjgH5Acm
-CaoKCwwvDe4NIQ7vDa4NbQ0NDRMNAg7aDpwO+A3jDZQOtw9fEEcQYhDlEOwQCBC7DvIN/g3vDfcM
-sgulCpMJpAjpBwgH9QVNBXIFkAXfBCQELwRuBCUERgMJArwAzf86/3f+ZP1V/Jz7KPuO+p/5yPiK
-+Ib4M/i09073HfcQ9/f2rfY69tz1sPWB9T/1FvX49Pj0MfVG9UH1lfUs9qn24fbQ9nb2GPZP9vD2
-fPc3+F35g/pa+yD87fyh/UX+8f6g/ycAZQCAAOkAkAEDAkQCpgIQAx0DMQPiA/4EFAb4Br0HWAiz
-CN8I5Ai+CIUIUwgVCKkHRAcvB0sHWAdJBzMHNwdPB38H2gchCAIIoAdNB+EGIwYqBS8EdAPvAlgC
-hwGlABoABwAOAMr/K/+6/sv+m/7C/er8VfzN+yv7TvqM+S/5z/hQ+An4wPc599v24fbr9t328PYe
-9yf3/vbh9vj2FvcO9xH3M/dV94j3xfcs+M34UvmX+c354fm9+a751fkp+sT6ffsd/Jv8CP1s/af9
-9P2d/kT/v/9OAOwAbQHoAZMCjAOqBJkFOwajBu4G7gY1BhcFpQQfBaAFngWJBcoFZQb4BjoHowd0
-CGYJXAriCnwKhgmeCM8HuwZ7BZIEBQSGAxID4gI0A/4DmwSvBMQEKQWUBaAFVAX3BHIEeQO2AZP/
-7P3w/FD85fvp+1v87/yQ/fH9o/3y/Jv8vfzJ/Hb8Bvyg+w37Evrw+BD4oveb9833U/hB+SX6nfry
-+kj7KfuC+t75iPlw+Yj5qPmx+Z35nfnu+Vz6tvpR+3X8tf1q/qL+qP5n/g3++f0k/lP+gv7R/hD/
-Fv9c//T/YwDKAFsB6QF4AtkC4wLKAl4CkwHEAPz/O//L/uX+af/y/zcAWQCTAPIAUwFYAQIB2QDd
-AJMA8f87/4X+5v1//QT9Yfzt+837XPxb/df9AP5q/pv+S/7Y/Vr93/x//CX82/uN++f67Pkh+fX4
-OPmd+Sb6kfqo+sn6JPtt+1X7I/tZ+5v7cPsu+zX7cPuD+1X7a/v5+3v8aPwL/DX82/xH/Rn9vPzs
-/H/9s/2n/Q7+0/5+//T/PQA/ABcANgBmADkA5//8/30ArQCAAMgAhwECAkcC4gLeAwoF+QVwBvsG
-mQeyB/AHrQkzDIcNfg1DDUYNEg2DDPULvAt8DNYNIA48DbgMaw22DrEPPRCSEPsQfxFmEUMQ/w7l
-DqQPhw/6DfULZwqXCRoJbQirBxYHmQYoBsMFhQWRBaYFpAV7BY8EpQLGAOH/hP/J/rf9Hf3c/Oj7
-fPqx+Vf51viM+F742fdO9xX3Q/ei9673V/fx9p72OPai9fz0ifSZ9D31y/Wt9VP1fPUj9qD2ifY1
-9l72TPdf+AD5afkk+iL79vto/Jr88fxi/X39XP1l/dz9pv5b/+3/fwAUAYQBmQGsATkCRAORBLAF
-SgZ/Bp8G1QYOBxsH8AajBnAGggZjBvMF/gWtBkwHiAdjBwYHyQbgBhYHTQdvB2YHdwdgB8kGKQbS
-BbAFbQWlBLUDLQPlAqEChQKhAroCmQJGAtEBGwFdACwAZwBeAPD/Tv+h/iz+5P2K/S797fyG/Nn7
-QvvQ+lz6Hvo5+mD6Mvqy+V75TPkv+QD5vfiZ+ML44PjR+PL4G/n2+PH4J/n++KT4i/iF+Jb41/gh
-+Yr5+vk1+rn6wfuB/LT8Af1w/an94/1A/m3+WP5d/rf+Kf+T/0YAGQHOAUADcQY7CtML2wqbCREJ
-KwguBvoDLQOaBM4GFgdJBfADqATLBsUI8QkDC+MMLg/hD6UN+gmWBycHwwbiBI4CNAGMAOH/L//X
-/jz/OABCAZUCHwTOBGsE1AM7A+0BPP+z+yf5Ifie9yf39fYC9yP3UPeP9w74+/hJ+sz7Dv0v/RD8
-ovpc+fX3XPYf9RL1Hvbx9tD2r/aE99/42fk0+lb6g/qF+jr6rfkN+Z34TfgZ+BT4Pviv+G35hPq0
-+4P8Ef28/RD+af1n/Bn8bPxj/KL7KvuR++T7x/v5+838b/6dAPQB0gETAV8Axv9m//r+P/7F/dz9
-CP7O/VT9Jf2P/ZX+oP8gAFwAqwDeALoAZADr/zT/N/4C/cz7EPs++/v7jfyx/Lf87fwQ/Qz9O/2V
-/Qn+lP6o/uT9nPxb+5D6Svo5+jT6iPoj+4X7svsN/Ir87fwt/Ub9FP2t/If8fvw6/BX8LvxH/GL8
-efyC/Nb8hf07/t/+Uf+K/5D/G/9h/v/9+f0W/kj+kP4o/9f/HABLAPsA/QHiAo8DKAQDBQUGqQb/
-BkgHgQeoBwYIGwmTCrMLlgyVDZUOAg+TDuwNvA1JDlcPBRDqD7wPAhBxELMQsRCjEP0Q4RF7EhwS
-YBH0EK8QRRB4D0MO2gxMC/QJOgnwCAMJYQmbCYgJhQmJCQsJZQiECOcITAjeBm0FGQTKApABkwDX
-/xb/R/59/bL8//uT+4X7s/u7+6X72Ps5/Cb8cfui+gT6h/kP+Wf43ffh9y74N/gN+BL4Lfg6+ED4
-bfjG+PX4NPn5+bL67/pK+/v7bvxr/Hz8GP3R/Qr+B/4b/i3+df4H/4b/9/+JAB4BfAGrAcgBLAIW
-AxsE9gSLBcwF2gW7BXYFPQVQBZAFnQVZBQgFxgSSBJwE+wRuBa0FugWqBZ4FrQWkBVwFPAVvBWkF
-4AQDBDADygKXAiYClQE8ASIBEAH9APsAFQEcAeIAggD0/zf/lf5J/ib+t/1H/Sv90fwP/Fj73fqM
-+l76Y/qF+m/6Efrj+fH5mvny+Lr46Pja+JP4j/i1+MX47vhL+aL5w/nX+cr5fvln+YX5X/kp+VD5
-hPl8+aP5Ffqc+jL7qfsb/Mz8bP2y/cf94P3u/c39kv15/Zb9x/3Q/c/9AP5Q/pv+3f5C/9n/SwB9
-ABABXgLvAx0FRQVrBGgDkgKxAc0AUwDIANIBUgIoAtkBdwErAVEBEQIFA/cDHAXyBcEFygTXAygD
-cQKaAcYA9/9Q/9n+Pf5f/Zb8W/y2/E/93v1D/nv+ov7I/pn+2/3q/Oz70PoU+uT5w/lX+az4CPi1
-9633zPf89xD4Pvj5+OL5Jvrk+ZP5Dfl5+Gr4gfhG+Hf4Qfm1+b359Pkn+iT6I/o1+qD6U/u0+7D7
-rvvL+/X7Mvx9/I38Wfxp/PP8Zv1q/Yr92v3h/cf9v/2f/Xf9fv3D/RT+Nf4r/jD+hv4P/23/nP+0
-/57/kf8LAK0A1QDOAA4BeAGcAVYB7ACtAIYAKgCp/2f/hv+t/9f/AwD9/0IA/gB5AaEBuAHHAcsB
-kAEpAd8AhgD+/6b/gv8M/1P+8/3f/bv9v/0d/o3+5P5K/7P/8//4/8P/ev8n/9X+nv5x/nn+5v49
-/yf//P7X/qj+p/7d/ib/Tv89/zz/d/+n/6T/gf9Y/0r/Zf+u/wIAPACGAOMAMQFyAYkBOgGkAFsA
-igC2AFYA0P/z/3YAnwB4AGwAuAB9AXACBQNBA24DowPFA80DBQRWBGoEbgSSBM0EHQWGBeQFVwZa
-B4kISwnbCWwKwgrwCnkLEQwHDOMLSgy7DMIMigwuDAcMOQxDDDMMWwzKDHcNDA5JDkkOKw7ZDVoN
-0AxdDBMMqwsWC40KBgprCbwICAiIB3UHmgdtBy0HeAe9B3QH+QZ2Bv8FpQU9BcsEXQTiA14D9wKT
-AkcCegLsAh8DOgN+A70DmgNBAwsDvAJRAuwBawH5AM0AwQDEAMYAiAAsAOX/pf+I/5n/Z//m/sb+
-4P6Q/g7+r/1N/cr8Tfzs+6D7mvvp+zT8XPyV/Pf8I/3l/Lv8z/zP/Lv8pPxf/O/7lft5+3/7W/sN
-+w37ZPvf+6j8ev3e/Rz+d/7L/hz/Sv/2/lj+9f23/Wj9Jv3s/If8JvwY/En8k/zf/BX9Mv1Q/Xf9
-g/1g/R/9xPxf/ED8V/ws/Nr7pPt8+2r7ivvU+zj8jvyq/L38+fwg/Rn9F/0k/Q/9yfyk/J38Vvz9
-+977wfte+wD7OPvQ+wn85/vY+9L7y/vx+wH8yfuQ+zr73frK+pj6Fvrc+eL5xPm++Qj6Yfpu+k76
-ePrR+uv60vq++tH6hPsG/ZX9qvsV+VD44fnA+5r7EPuP/Ov+pP/s/Wf7rvpA/Kn+lAArAa4A1P+a
-/jn9SfxF/GX9E/9IAMYAxwAyADD/mf49/6YAhwG0AcYBlAHTAKT/Pf5w/ev9x/7u/pH+Nv5D/r3+
-+P7o/iD/rf9OAOgAOQEPAbgAigCEAJoAqgCDABYAdf/7/gb/af/K/wMAIwB+ABwBiwGQAX8BmgGW
-ATUBlgADAJv/Kv/J/sT+0f60/qH+jf6D/t3+bf+l/2D/A//M/pj+Uv4R/uH9if06/VL9R/3c/MX8
-Jv2X/dv91/2+/cf9zv28/cb9xf17/Rf9xPyX/KP82PwT/VP9pP0N/nj+nf6d/r/+7/4e/zL/K/9F
-/3j/jv+F/5z/5f8iAEEAZgCQAKQAwgD+AAgB3QDYAPQA6gDaAAcBIAHzAMcAtgC1ANIA4QDRAO8A
-PwF6AZABlgF0AQcBqQCuAKMAZwBhAGYAfQDcABIBBgErAXABrwHzAeMBmAGmAfoBJwINAtgBpQFk
-AR4BBQH2AMoA2AAXAUoBfwGgAaoBxgHlAfQB9gHnAboBYQEFAZ0A6v9z/5n/uf+L/1b/Qf84/y3/
-Rf9i/3b/of/L//P/AQDF/6P/9/9kAKUAqgCHAOYA4AGEArcCSwMsBNAEUAWgBcEFIQZ/BoYGsQb/
-BucG9QbAB8sIxAmXCjsL1QuJDIANZg6VDjcO2g10De8MaAzgC5ALgQt7C6kL/gsTDEQM5QyMDfMN
-Mw5qDpsOvQ6qDtsNdAwzCywKKgl2CCUI4gfFBx0IpQjeCNUI9QhbCcwJIQpBCtYJpghUB6UG7gWK
-BGcD7QJ7AkoCrwIXA1EDeAOXA6EDOANkAq4BLQGBAJD/ef4m/an7aPq1+Wf5F/nb+ND45/gz+Wz5
-UfkR+br4Ofin9yP3kPat9Zj01/OK82HzQvNR86LzKvTe9JT1J/a19ij3TvdZ9zP3mPYF9sL1UvWp
-9EL0HvQR9Dv0g/Sl9N/0gPVx9l73w/e599j3Kvge+IP39fbV9sD2tPb89jn3ZPfy95X4FPm++WX6
-1fpT+/L7a/yS/Jz8o/yF/Gz8hPyg/Mn8Ev1Y/b79Y/4L/3L/wf86ALcA1gClAIAAdABlAEkAEwCy
-/1r/Tv9d/2b/nv/7/1EAfQBgAAcAqP91/1//VP9Z/zb/qv7Y/UD9AP2s/G38m/zM/O38Gf1S/aT9
-qv16/a799f3C/YT9q/27/VD9Lf23/TT+Nf4m/o7+Uv/g/woA9f/k/yUAQQD2/+j/OgBbADwAOAB9
-ANsA7gDHAKwA1QBIAawB/wFOAkQC6wG5AcQB5QEgAioCzwGIAZcBygELAlYCkQJwAuYB2QGjAioD
-4wJvAkACRAJLAj4CcwLZArcCPQIzAl8CQAIUAicCcwKbAoECbQJLAkICbwJxAlwCRgLwAZUBbwFm
-AWgBSAE3AYIBzwHSAcEBxgHJAbQBhgFRAT4BHgG0AEcA/v+e/yv/5P7I/tD++f4N//L+wv60/ob+
-Df7m/RP+7P2J/VL9Hf2K/CH8d/yr/Fr8R/x5/Kv87fz5/L/8s/zo/DD9i/2+/Xz9I/0m/Tv9PP2H
-/ez9x/1w/bH9NP5W/i/+HP4e/iH+Jv4y/k/+Xf5k/oD+of6h/oD+d/6b/r3+vP68/uP+//4M/0L/
-af9v/5H/1P8QACkAMgA6AC8AQQCCALUAwQC5AKsAYAAEAEEAvgCbAE8AZABpAIAAywDbAOcA5QCp
-AMwAGQHcAGkAVwCTALsApwBBAJ//VP+T/9b/6f8uAH0AagBZAKUA9QD1ALcASwAPADcAKgCb/w7/
-+f4x/1P/dP++/9z/pf9q/1r/bv+o//z/fgA/Af4BdgKhAtwCYwP9A1YEJwS2A50DAQREBO0DvwNs
-BHIFiAbMB9QIcwksCkoLegwoDScN+AzcDG0MhQunCksKIArICYYJjQnGCSMKuwpjC9kLWgwGDXUN
-kQ1wDQcNeAyWC2AKagnECD8IDggACLIHlgclCOsIgAkNCpwK+woqCy0LyQrTCWoI+gbQBd0EKARx
-A6cCYAKbAscC4AL7AsACZQKhAsMCxwF0AFH/yf0T/Kr6i/ni+IX48/eA96j3/vc2+Gb4a/hh+Jn4
-5Pib+MH3Ife69uz12PQJ9JPzNfPt8tzyGPPJ86/0P/Wn9Uv27vZU93z3dvdm91f3Pvf19ov2Nfbo
-9cn1EPal9iT3cff597X4aPni+fz5Gvpe+kv68PnG+XP5uPib+Hn5MPpQ+ob6GPvZ+6b8Of2Z/fr9
-Ev71/Sr+af6A/sD+0v6f/tL+bf/O/+f/JwDQAKkBTAKyAgUDUwOiA7oDZwPkAmcC5AFyATQBHQEa
-AScBJQEMAf8AEgFSAZ8B4AEtAjUCogHiAGcAHQDQ/3r/Wf8a/4z+Pv45/gv+4v0a/oz+2/7U/tv+
-Jv8c/4r+5/1//VX9VP01/d38xfwf/Wv9fv2L/Zj9tf3z/VX+nv6X/sP+bv/k/7f/W/8k/wH/GP9v
-/6n/lf+L/zQAgAGsAlYDcANMA4wDUAQCBeMELwSsA20DewPUA/0DlwOoAusBNwJFA04E4QT6BP4E
-HgU/BVYFbAVZBbsEowO/AoACdwIKAo8BUQHhAF4AYQDiAJcBQQJ4AkkCGgITAjUCLQJ8AS4AF//G
-/q7+Pf6//X39Wf1p/QD+2/5G/yb/EP89/0H/3P5Y/r/9t/y5+2P7M/u2+if6qflL+TH5ifkY+lf6
-K/rt+fz5R/p6+nj6M/qz+UX5//jL+Lj41vj4+AD5G/mJ+Rf6bPq9+jb7dPtf+4T74fv0+9L7qvua
-+5/7ivu9+1781fzk/Ab9m/0//pX+7P46/y7/Av8J/zn/ZP95/1L/6/7D/gb/Sf9+/+b/QQBtAMkA
-UgHGARYCEQKmAUoBZAHBAcoBVgHeALYAvQC2AJkAiwCTAIgAngD9ADUBGAHpAMoAnABiAGAAWgDq
-/5H/wf/W/5n/dv9i/0P/OP8p/wr/3v6r/rT+1P53/tr9uf3X/cj9r/2O/WL9K/0j/YD9yf23/XP9
-Lf0f/V/97/2u/lH/2P+IAFkBJgLpAoIDCwSUBPUEQgWGBXsFLwUPBVUF0gVaBi0HnAhiCtgL0wzB
-DcgOeQ+nD48Pcw9bD+AOxw1+DKoLVQvJChwKJwriCt0LzQxvDf8NtA5ZD8cP3g9/D7gOxw3eDO0L
-Aws+Cm4JvQjxCBEKDQuHC+wLVAzVDHMNzA2UDQENZwyOC1UKLAktCBkHLgaSBSwFHAUwBQ4FzQSe
-BIYEUwTDA+QC8AH4ALL/Bf6L/IP7jfqo+RL50/jt+En5w/ki+gj6tvmk+cD5pfkb+Ur4ZfeV9vb1
-ffUN9ZD0UfSs9Ff1wvUe9sX2Zvfa9zX4avhU+BX4Dfjx94f3C/es9oz2n/ba9i73vveo+Ib5IvqP
-+tn6/foN+wT73PrL+rH6lvqz+ub6MPue+wT8efw//Sb+1f5Q/7P/BAAfAP//1//D/8H/w/+1/0D/
-qv6u/tb+t/7g/mz/4f9vAEAB5AFNAl0CAwKiATABfgDi/4f/B/9X/vf9Ff5t/rb+Cf9i/3//l//7
-/2AAXADa/zf/7f7s/rf+Pv7U/W39+fza/Bz9Pv0W/c78kfyN/Iz8Ovyu+0T7/vq1+nf6Rvol+iv6
-YPqg+tD6DvtO+3/7xPsX/FH8U/wS/NL7+PtR/Er8EPwJ/DL8sPx1/RL+ZP5r/in+//06/mn+Xv6D
-/tn+Yv9oAMgB2QL8An8CKgJKAtkCcwOUA3gDhwOUA3MDOgMdAwMDzwKsAsgCegNqBKUESQQGBBkE
-hgQ2BaMFiwVPBQoFcwS2AyMDdQJ6AZ8ATgBeAIoAxAD0AAoBEwEZAScBRwE/AdEAUwAhAPr/s/9t
-//X+Pf6f/TT9+fwL/Qr9efzN+8P7KvxZ/BL8c/vD+l/6cfq/+vr6D/vm+oj6MPrg+aD5q/nW+cz5
-rfmh+Z35lPll+fD4ffhx+OD4gPnp+Rr6G/rN+Y35u/kc+n/67/pi++77vPxr/Z79ev0g/bn8ovzt
-/GH91/3z/Xb9Fv0n/QP9zvz8/HH9Fv7f/rP/hQD0AJ0AMABJAFgAMwBQAJEAuADEALMAiwB1ALYA
-MgFyAXUBlAHrATQCNAL0Aa0BnwGhAZcB0QEVAu8BsAHgASsCDwKjAVwBjQHTAZEB8ACWAGQA8/98
-/z//Nf9V/5D/pf+X/73/4//K/+f/PABdAH8AuACSAB8AtP8w/6H+Tv4g/uv9w/20/cj9A/4U/j/+
-7P6h/9v/vP+y/9T/CQB3ABMBmAESAucC+wPTBHMF7gUdBjoGhwbrBl4H3wcuCEIIiAguCSYKUgtu
-DHENmw7oD/4QnxGzEYURZBEgEZUQ1A8fD3wOpg3oDKkM0wxLDegNjw41D60PVRBMEZoR/RBOEM8P
-OQ+GDr0N5wwWDE8L1wrQCtYKpQqlCjYL7AtgDMoMHA29DNELIgt+Cm4JTAhGByIGDAVpBCIE8gMe
-BIwEYQRwA70C1ALYAiECLAFgAHT/FP5l/AD7LPqC+aP42fe+92P4JPlX+Tj5ZPmk+YT5DPlx+Nv3
-PveD9tH1TvXw9KX0TvS+81nzuPOR9Gj1OfbM9gn3TfeS95b3dvdD9832Jvaz9Zv1ZfXm9Ln0IfWq
-9SX21PaO9x34tfhM+aX55vkn+iz64vmK+WT5avld+TX5OPmK+Q/6l/oI+3X7/Pt0/L/8Af1G/X/9
-qf20/a/9k/07/d786/xW/bn98v1I/sr+Bv///vb+wP6S/pz+hP5a/lf+V/5R/kL++v2h/X39Vv39
-/N/8Lv14/Zb9pf2F/RP9ovxy/EL87vuw+5T7mvvS+/X79/sC/OH7xvsn/H38Ufw9/Jz81/zG/Nv8
-8vzS/Jz8YvxA/Ef8aPzD/Fj9hP0f/dv8xPx1/An8tvul+8/7FPx1/NL8Hv2Q/TD+rv7m/g7/Jf8o
-/2P/ov+J/1v/QP83/4b/BgBqABgBEgK+Ah4DqQNYBK4EwAT2BBoFvwQxBNcDcwP3AsEC+AJTA6sD
-HwR9BLUE5gQPBS8FFAWsBEsEEgSyAyADmwL5ASMBiwBrAIsAtwD4AGIB5gFWApUCtgLIAqYCKwKC
-AQEBdgCX/7r+UP4y/hv+Df4H/kP+6f5c/xz/t/6k/qz+yv7E/gj+2Pzj+0D73/qx+of6UfpD+rb6
-g/sU/DX8G/wB/Az8NPws/NP7b/sr++f6qvqB+l36afqw+vD6QvvW+4f8Sf0c/q7+zv6u/nj+QP4D
-/s79qf2X/dv9b/7p/kX/yv9DAIsA+gCEAcQB8QFsApsCHwKqAU4BwgBhAD8ALwA2AHYAKgH5ATYC
-AQIJApkCIAMdAxsDZgNrAwYDlQJTAkQCTQJKAkECbwLyAmMDhwObA4ADRgNIAzQD2gKQAmICAwJ7
-AUIBWwFJAekApQCrAOMAOAF9AX8BQQH+ANQAsACBADQAw/9f//3+lv58/pD+V/7N/VL9Vf3X/Sf+
-Cv7r/eL9/f06/l3+ev6n/gH/5/8lASYCzwI0A4QDJQTcBCIFHQUEBQgFcQUKBloGWAZ8BksHigiP
-CZkKDwx4DWMODw+4DyoQRBATEGQPIw7aDOsLUQvvCpIKfQoHC/cL7QzWDe8OEBC6EAAR/hBxEJYP
-2Q4dDg4NqQs6ClAJEwnRCIYI7QjBCWAK6wp1C98LOQxTDBMMgAtLCqkIQQcUBr8EYgNnAt8BngGW
-Ad8BQQJ5ArIC3wK2AjQCYwFAAPv+jP3r+4L6h/mj+LT3E/cm9+z3zfhB+Wz5rPkV+l/6E/ox+RD4
-3/an9WL0MPNN8rzxVPEm8WLx9fGf8mHzXfRg9QP2P/Zs9or2Qfaj9eD0JvS783fzGvPc8vPyTvPy
-87P0YvUu9gb3q/cL+F740fj++K34c/ie+Jb4Lfjq9/73Uvi7+P/4Vfn3+aj6WfsX/L38Rv3z/Yn+
-kP5g/nn+q/6a/lf+G/4a/mD+xP5F/+H/WwCbANcAFAEtASAB0wBRAAwACQC2/xT/tf6H/hb+hP06
-/UH9WP1g/VT9Uv1m/WX9cf2d/aL9iP2E/W79I/3h/ND8iPwN/Bv8iPyW/E38Kvxm/K38m/yL/N/8
-E/3R/LT88vwc/Qn9yfyD/IH8jfxO/BT8RvzC/AL98fzl/Pv8Ov2I/cP9A/5i/u3+Yf9//6X//P9J
-AJ4A9QAoAT0BAwHYAIcBhgIVA2oDmAOrAwMEjQTfBPkE5QTRBEUF8gUoBikGaAaOBk4G8QW6BawF
-sAWuBZ0FmgXLBQEG4QXDBfMF+wXMBZ4FWgX7BKEEWQQEBKoDiAOUA58DwwM1BN8EKgXKBD0E2QNx
-Aw8D2QK1AkkCkwEWAdIAcwAoACMADgDf/9X/uf94/3T/kP8+/6b+Gv59/Rr9Dv3f/JH8X/wX/Mj7
-p/t1+yD75PrD+qX6sfoT+4D7jPtW+zj7Ofs1+0X7QvsV+zv7l/um+7/7JPxz/K/88Pw4/av9DP46
-/jj+B/7//R/+//2r/YX9n/3j/Uj+mP7k/mn/CQB4AIQAaABvAJQAoQCIAKUA5gCPAM3/vf90ANMA
-gwA9AFQArQAwAZ0BtgGzAdIB6QHgAdoB+wE6AnQCcQIzAgcCyQE9AasASwAKANv/s/+Q/4L/uv8A
-AOn/if8S/4v+Lf4k/iz+Gf7g/XD9A/3Z/M38p/yQ/LH8Cf15/cb9xf1y/ff8mvxK/M37b/tr+477
-rfub+zX7rvqA+tD6OPuc+5f8O/5//ycAwwA6AZgBDAJ6AscC1QLAAr8C1ALaAtoC7QILA0wDDQSa
-BaEHnAlqCw0NhQ7AD4wQ0hClECoQSA/oDXQMRAtnCuAJsgnaCXYKgQulDKgNrQ7qD+QQJhEJEasQ
-2w/XDugN9wzkC7sKjgmJCOkH0gcbCI8ISgltCsAL1gxVDRkN/wtiCtQIPgePBQ0E2AIeAhICaAKI
-AlwCLQIiAmoCsQJ6AhMC0AFqAY0ARf+9/eH77fmB+KP39PZg9hX2QPbb9pT3Kvi9+GH5y/m/+VT5
-nfiz95n2TPUa9FfzGfMY8wzzQPPp86X0JvWK9QL2tfaP9xj4Rfhf+GX4NvjC9zX3uPYp9rn16vV/
-9tr2JPew92n4Pfno+Rf6+fnw+e35I/qs+r/6dPqZ+hb7cvuX+9P7XPy+/Mn8I/3P/Vf+1P5K/5T/
-vv/Z//3/QACIALsAxwCJAFYAmQACASwBUwGvAdsBzgH0AR4C4gGBAVIBKwH3ANMAfgDY/4L/qv+b
-/w//mP6p/vD+FP8X//n+1P7X/uj+1f6L/vb9Yv08/Tn9/Pzk/An9EP0j/XH9df0i/Sj9Y/01/eT8
-+Pw//U/9Qf1c/Wb9Qf0r/R79Hf1N/VX9EP3s/Ob8+vxT/av97f09/mP+WP50/t7+gf8QAFYAlgAi
-AdUBNwITAt8BKQKxAtoC1AL8AmADNARBBd0FywWeBcEFCwZ8BrgGTQbtBQYGMwZoBp8GzAYeB3AH
-mwfCB9IHpAdpB1gHRAfoBnsGTgYoBr8FYwVYBVMFNwUhBd4EiASfBOcE0wSNBDsE0AN6AxoDhQL+
-AZEBHgHFAKsA1ADmAJcATgDqAJEC5gPKA9gCrwEVADf+Kvzp+WT4m/h6+p/8HP57/7wAHgF5ABP/
-QP1Y+6n5ZPgw9+f1N/Vd9dD1WPYV9/P3pPgJ+YD5Jvpg+vb5a/n5+Fv4gPfT9mn2Afak9bv1Q/b8
-9if4nvmz+mf7Mvw4/Tf+1v7w/lv+Xf3B/ML80vyH/Af8uvv3++n8C/7D/mH/OAAaAdcBOwIMAjoB
-LgBb/6D+2v1B/SH9jf1V/jb//v9YAF0AigCwAGwA+//K/wkAbABsAPD/Qf+8/lr+0f0o/YT8I/xr
-/Fj9R/7P/hz/Yf+a/6L/Ov9U/l/90Px5/BL81fvo++/7yvvA+7D7a/su+w/77fre+hH7cvvC+877
-jvs/+/T6ovpQ+vr5svmp+e/5Vvrq+kX8gP58AJUBTgIpAwcEdgQZBAoDcgJRA7kEKwXTBA0FigbD
-CJEKKAtCCycMtA34DowPdw88D6gPhRDkEJ4QMRAXEEAQYxBREOgPrQ8kEO0QfBGMEUURNBF/EXwR
-zBDED+AOcQ5cDksOMg4yDnEO5g4sDwMPSw4yDSwMVQtqClsJmQghCI0HIgcxB2QHPwfQBpMGZAb8
-BcQFXgVOBFgDsALEAaEAYP///Rv9xPxR/M77XPvZ+sD6N/t5+w37dfoW+nP5VPg192z28fWw9ab1
-kfVB9Qb1MPWb9d31uvWG9b/1MPZS9i72F/Yk9kX2ZvZt9k72W/bV9nT3+feL+GT5YfpD+9b7LvyO
-/Pf8Nf0C/Yz8SPxL/Hz8zPwj/XL9s/0N/pL+3v73/in/Ov9f/xwAGgGiAbEBigF2AbkB1QFfAd8A
-5ABJAZkB6QFlAsIC5QIdA5ED8wMDBNIDsgPfAw8E/AP0AwYExwNpAz8D3gL2Af4AYQDx/57/mv+4
-/8b/qP8s/7T+dv4M/mr91/xw/Bb8uft2+0f7+PqW+lT6BfqA+SD5Ufmb+Xj5avm7+fj54vmP+SH5
-5fi++Fz4HPgi+O33k/e891z40fjo+Bf5dPln+R75Ufm4+eT5Gfp0+s/6Jftt+5D7m/u++wT8Zvzm
-/Ij9bP5I/3v/U/+s/3cAEwE5ASMBLQGeAWYCDANMA1sDRQNcAzcENAUkBUoEAATVBD4GYQfCB44H
-TwfCB9QIIQkbCOsGUwYQBhMGPAYRBsIFxgUHBhwGdgV+BEoEjQSNBHcEWgQWBK0DQwPyAmUChwHA
-ADAAqP8G/23+J/5E/oX+nP6a/sD+xP53/kP+8/3//Nr7Lfvy+tD6S/qa+Wr5fPl++YD5jvmz+dj5
-9Pn4+dH5pvle+cf4Nvj597v3ZPdr9533mvew97z3nPf399v4lPnQ+Yb5Jfk6+U351/he+H/4A/lr
-+bT5DvpP+oD6Avup+y78wfxi/QL+nf7b/qj+iv6l/rb+6f5e/8b/AwBgAOAAPwGIAd4BPAJ/AooC
-dQJjAlgCMQLiAakB2gFMAnoCiwLXAv0CswJoAnYCjgJdAhAC3wGfAVABUQFTAesAlABnAPr/jP9f
-/xL/r/5f/vf92v0W/sv99PyU/Nn8Gv3x/IL8MPwq/IT8z/x4/Of7z/s+/KH8bvzW+5b7APyY/NL8
-c/ym+yL7Wvuo+3T7N/tU+6D7DfyS/P/8Vv0P/lf/fgA9AekBeQIBA5wDnAPJAhkCegL1A8gFJwfp
-BzwJzAvwDWgO+A2VDcINcw4ID1cP4A/gECYSRhPfE+oT/xNtFHwU+ROdE5gTnRPdE3QUshRPFPAT
-8BO7E7cSJhHADxkPQg+6DxQQhRBcEWUS/xK3EpAR4w8VDkUMawq/CHEHcwbfBe4FZAbRBgsH7Aac
-Bo4GsAZYBnIFvwR1BB8EYQMQAvH/Uv1u+5767PkX+cX4MvkT+t36P/sf+1n6NfkV+OP2d/U39Kzz
-vvPu89PzivOY8+XzKfRy9KD0tPTc9Az1T/Wv9c71bvUW9Q317vTQ9Pz0W/UF9uT2wffF+OX59frd
-+3385vwz/Vv9WP09/QP9u/ys/Nb8Cf1E/Yv93P07/qL+Bf9//xUAcgCnADoB0gH3Ae4BrgE0AfcA
-CAH4APQAVwHMATACmQK8AnECDQLEAWEB/gDcALoAqwAeAdIBLgIVAr4BaQFJATgB1ABgAEgATgD8
-/1X/zf5E/kP9Bvwd+7L6gfox+t/55PkL+uP5Z/ny+J74Jfid9z/3Afe69lD24/Wf9aL18PUk9hX2
-S/bI9gD3q/b/9ZT1qvXB9Z/1pfXf9ST2g/by9jP3WveG95/3v/cm+M/4bPkK+qf6zfrN+hT7NPtE
-+8D7ePzq/OD80PwZ/WP9cv2W/Sz+Kv8pAOsAmwFpAhEDHQODAvUBPAJrA6AE1QRSBFMENAU/BuMG
-5QY4BtQFxQY+CKsI5QcwB5UHCwl1CnYKhglZCRYKygqhCkUJugdZBwoIfwjOB2YGmQUSBsMGdwZ4
-BccE8wSfBdYFKwXsA+0CzALuAlUC7wB7/6v+QP6b/cD8KPwy/Lz8cf3+/QH+if0g/QL99Pyw/Cj8
-cvu4+lH6U/os+o75/PjZ+BT5dvnD+Q76jfoo+637DfxZ/Gj8JvzR+2T7r/rc+an5FPoz+iT6X/qq
-+h37yvtd/L/8/vxV/f39k/56/sb9V/2E/aP9c/1c/YH9yP1R/jD//f9+AAMBrwEyAkUCGQIIAi0C
-NgLgAXsBagGrARECWwJwAqoCPwMSBK4EuASTBJYEsQSmBDgEtQNjA/cCjAJoAlYCNAL/Ad8B7QEM
-AgUCrgF3AWgBBQGMADEAlf/f/mL+9/2t/Xj9GP3C/JL8MvzW+/n7NPwZ/Ov70/uf+z779/rh+p36
-EvrO+S76jfpL+u/5Dfpt+pr6ZPoT+hD6dPrw+vD6avoi+sj68/uC/E78Yvx5/Tj/wQBXAQ4BQgHl
-ArAEFwV2BPMDVATrBfUH9AiqCMYIgwrbDEkOxQ7uDjcPKBCSEUMS+RHiEagSpxMHFKIT8BK4EkgT
-CBQ6FA4UOhTHFFAVPBVJFDQTnBJIEswR1hBrD0wOFA4eDrQNJg3TDAoNwQ02DuoNCQ33C+QK4wnM
-CGsHQAaIBdAEGwSSA/QCFAJJAeYAnQAxANP/af/U/mz+Nf6I/Sv8Bfs0+r34E/dJ9sP1wfTl85/z
-fvM58+PywPLd8sPyYfIR8trx3fFN8nLyuPEU8VXxu/GF8TfxhfEu8qny+fJf89fzZPQU9dz1uvaf
-92j45Pgw+Vb5XPmg+Qr6Rfpi+rH6ZftK/P/8ef0J/qf+Mf/T/3UA9QB8AfYBLAIhAvkB8QHvAakB
-gQGnAcEBzAEPAn8CrgKnArQCsAK2At4C9AIoAz4D2AKrAu0C1QI9AsgBoAFRAdkAZgDf/1X/+f4B
-/0P/Uf9I/zL/8f7V/sH+Of6K/TP98PxO/IH7x/rZ+eL4WPj99673jPdj9yv3Nvdz90T3k/YO9gr2
-PvZR9iP2yfWW9Y/1R/W09FT0dfTL9A31TvWd9Sz2EffW9zf4evil+J74u/gI+TT5Zvml+d75O/py
-+kP6Gvpn+gP7p/tq/C39n/3q/ZT+ef/3/yQAaQDbAF0B4wFWAowCpwLyAmAD0wNGBJ0EAQV+BdkF
-IQaOBiQHnQffBwwIGwgoCJoIaQnRCWwJHgmrCagKRAvOCl8JighhCbUK6wr/CRkJRgleCicL0gqQ
-CbQITAkICm8JLAhfBz0HVwf2BvkFMQUZBSoFyATcA7IC8wEaApkCcQJjAVYAOwCqAJ8Azf+p/sn9
-Uf0p/R/9uvzU+zH7kfuA/BT9F/3m/P38TP12/X/9Xf3v/JL8pfzC/D78ePtf+8f7Bfwv/Iz8D/2n
-/Tf+mv74/lf/av+C/9L/wP8//8X+U/7R/WX9F/3+/C/9kP1Z/k3/o/+J/wQAIgHjAdsBmgGjAaQB
-SAHDACIAgP9A/zz/7v5m/jP+oP5u/0cA9wB/AUMCJQOHA0sDvgIpArsBRQFkAHP/Af/u/hX/Qf8K
-/5z+1v7A/04ALADE/3v/c/9V/9z+E/5P/e38e/yg++b6pvqb+l/69vnR+Rz6gvrP+vj64Pq1+rL6
-ffq2+cb4NPjc96H3sff/9yb4D/hG+P74xvlD+jv6wflw+WD5M/kQ+e74Xfij94D3+vdq+IH4ePhn
-+KP4vflf+5P8GP3T/WT//gDSAf0BBAKYArQDVQQcBOcDhAS3BbUG7QbpBhcIYAr4C3EMAQ1bDjoQ
-2BFmEjUSUxLxEoETiBPlEicS7hELEhUSGBICEqoRchHXEZ4S4xKGEnwS7xIjE/ISZRJEEQcQNA9q
-DhcNeAs4CnQJ1QguCIAH5QaOBm0GRQYHBrMFRwXrBIgEwgN4AhEB6v/V/qr9bvwN+8j5F/nl+ML4
-nPie+M34FPk0+f34iPgh+Lv32PaH9Uz0RvO08o7yXfIf8u3x5/Fa8g3zVvNH85DzavRv9Q72NPYz
-9k/2kPbM9r/2cPZQ9qD2KvfU93j4BPnH+ff6bfyr/WD+3/6Y/3MAFgFqAX0BgQGyAfwBOwJwArQC
-LQOsAxsEoAQ4BesFpwYXByIHOgeFB5gHTQfGBhkGlgV0BT4FwwRYBA4E7QMHBDUEZwSQBGoELwQj
-BNUDOAPAAnkCFAJqAeMArgBgAO//mf9Q/xb/9v67/kL+of0V/aj8IPyG+0D7Wvsr+336A/oO+iD6
-0/lA+Zb4EvjM92H3qPbP9Qj1rPSw9J70dfRx9KD0FfWc9f31WvbJ9i/3i/fs9zz4VPgT+OH3GfgY
-+Lb3uPc++PH43vnG+nn7P/wM/bH9Sv6+/u7+VP8SALoAWQElAsACzwKYAocCwwIUA1ADvQNWBOwE
-dwXJBecF8gXtBe4FNQbBBjYHXwckB7gGjQanBsQG0gbiBgIHUQfABwcI8gduB8oGyAZ6B8gHLwed
-BuoGwAdcCCEIxAZBBRMF8wU8BjkFygM0A/IDFQUcBeQD3QIQA/EDTgSCAxQCdAEeAoECfQH9/+n+
-Yf5F/g7+T/2O/Ib89/wv/SL9Fv05/ZL97/3g/Xr9Vv1+/W/9m/w6+zr6Lfqx+hj7LPsB+xX79Pvi
-/BL9Gv10/Qj+5/6x/+T/yf+u/33/Mf+w/iX+2f3R/Rr+Of6n/Tb9p/0//mr+mf7U/gn/qv9lAIkA
-LQC3/3r/qP+l/+L+E/7//XX+9P76/o3+K/4T/rT+zf9JACAAIACeAP4AjwCD/5v+Gf7C/ZT9Uf3F
-/HL8pvy9/ED8r/uh+w/8m/zR/JH8OvwN/PL7qvsR+2f6DvoT+jX6EPqO+Q/5FPml+d/5bvl2+Ub6
-qPpC+sb5YPkd+R35Dfmm+BP4z/cT+Gz4WfgF+Ar4cPjc+B/5Jvky+VP5Q/lK+Zb5r/lg+Qv5Hfln
-+Zf5sPmw+ej5k/ox+2v7mfv0+z38Xvx6/H38QPzZ+4H7lfv3+xr8bfyv/XD/3QD4ASADZgTlBSoH
-UQcgBwQIYQnmCbgJdwkzCYoJxgouCzoKVQpaDEgOQA9AELoReBNPFa0WDRf3FvIWzhZdFnAVFRT6
-EpMSVRKZEcEQgBDGEBgRLxEWERARSRGZEc0RuxE4EV4QfQ94DugM7gr5CEgH4QWmBIIDdwLfAQwC
-bAJMAuIBjwGGAdIByAEdAXQAEwCf/9n+wv2B/EH7Efrw+Bn4kPcY9/j2Ifcw94H3U/hF+ev5N/pe
-+pD6rfqD+ir6oPn4+H74Sfgl+PX3sfel9yL4xPhV+Qb60PqU+2H8Xv1m/hv/d/+m/+T/PwBsAE4A
-CADE/8H/EwCaABYBdgEhAiYD3QMvBLkEqQWdBlIHrQedB6kHHgg/CNEHbgciB7sGbwZhBk8G+QXL
-BSUGWwYjBs4FUQXuBN0EpATwAz0DvwJAAt0BLwEYAGL/If+7/hv+iP39/Hf8HvzN+2H7C/vQ+nj6
-+Plp+dP4Vvj594f3Gvfu9tP2nvZs9lX2YfZc9g321PX29Qz22vWH9Sj1x/Si9L30zfTD9L/0wvTk
-9Bn1CvUD9YH1LPZZ9hn2Ovb29qT33Pfn9xj4avjx+HL5oPnT+VL6DvvT+2H8qvz0/H/94P0R/sH+
-zf94AOMAgwEsAtICiwO+A2kDfQPAA6YD0gNpBLkEvwTaBNAEngS5BBkFRgUdBTUF0AUlBtUFagUu
-BfIEaQTQA54DmwNkAwUD0QKNAtEBLwE4AWYBlwGgAsoDUQMHAu0BagIRAoUBKwFMAL3/fAD/AAkA
-0f5Q/mL+i/58/qb+VP8WAFkADwCr/1j/N/+2/48AuAD+/2b/Xv8p/2r+sP1T/Tf9b/3Q/Qr++f3g
-/TD+pf7e/jX/zv8HALD/Ov/s/uH+Df8C/5P+Cv6v/a/9I/6l/rD+n/4S/9b/SABnAMQATQFbAQgB
-GQG4ARkC1QF7ATQBfgCs/8j/jACwADwAYAA0AaoBfgFCAfwAdAAgADUARgAMAJn/Vf9T/xL/lP5n
-/nP+Q/4D/un93P3O/bv9qv2J/Sb9vfyh/K38g/wU/LP7l/uZ+3j7ZfuU+6X7gPuV+wH8afyV/Jr8
-gfxO/PX7h/tU+z/79/qq+o/6evpd+mf61/pN+z77Ift5+/r7R/yG/NP88fy8/Fn8FPz6+5X71vpp
-+pP64vog+4P71fvm+x/8nfwM/UX9c/3P/RX+2v1O/QH9GP0O/dn8CP1x/aj9t/2z/cX9B/4p/lH+
-5/55/3T/VP+q/8j/Tf8v/wAAFQGuASECOAOcBG4F8gXXBn8HoQecCLQKFwwCDMoLYQwsDUcN7wzt
-DDsNbg2fDRIO2A6+D58Q0REXE8QTNhQLFcEVnRXuFI4UfhQPFDETlhImEiUR9g88D8sOPg6NDUcN
-YQ0zDe4MOA24DZwN1wzZC+IKyglsCOMGUwXSA5gC2AEwASEA5f7g/Sj9jvz8+6D7fPtr+2P7iPut
-+2b7Cfv++ob6KPnj9233S/f99or2N/ZL9qr2CvdG9yz3+/ZH9+z3UfiQ+EP5F/pj+mj6uvpA+2z7
-WvtW+z77Qfuf+zP8tvwJ/XD9G/7i/ln/Tv9O/6P/9v80AJgAFgGcATYCqQLtAj4DkgO6A+YDKgRP
-BHwE5gRbBZgFowW3BfAFKwbgBSAF1ATwBMsEegQLBF0D8wLxAtUChgIaAp8BWQE7AQkB1AC5AIkA
-CAB3/xf/sv7r/d/8Bvw++2b63vmW+T/50vht+Cn4Bvjy97n3Mvey9qn24vb39rv2Tfb59b71YPXe
-9Gb0/POo83jzS/Mz81PzivPk80v0cfRw9IP0t/QK9S71DPX/9P304PQX9c31Xfaj9gb3ZPen9xj4
-0viJ+er5JPq1+q/7a/zJ/HL9UP7O/gL/RP9//5n/6v+IAPQAMgGeAQcCRQKUAu8CNgOjAxkEYgSu
-BOIE3gTxBCEFMQU6BT4FMQUnBSAFMwVXBUsF+ASJBDgEDgTDA1UDDQPZAnsC+gGhAYcBYwFEATsB
-DwFJAScCIwIbAe8AKQG6AMoAdgGAAR0B9ADYAJUA7//Z/lX+y/4x/4H/egBGAcYACQC0ADQC7QL5
-Am8D2ANYA4oC9wGLAU4BOwFVAVkB7wCdACAB5AHiAZEBiAF+AYcBqQGYAVUBJgHwAIEAPwBKAEUA
-WwDAAAUBIgF+Ab8BhwGDAQMCKQK6AbEBNgJdAg0C9wFFAoMCXgIZAh0CNgLnAZABkAFVAdcA+QDK
-AVkCVgJaAmwC/QFYAUQBtwHkAWoBsgBCAB4Avf/4/mf+K/7W/Yf9j/2x/Yr9Rv0+/U79L/3u/OP8
-E/0X/fj8B/38/Kz8WvwL/JT7D/vU+tf6ufp++mj6kvrS+gr7Rvtx+5H78/ul/ED9Z/1Q/VL9U/0u
-/cT8Hvy6+6/7yvsx/In8XPwz/I/8+PwF/fv8Ef0N/fr8WP30/RH+4P3m/eD9zP2k/RT9lvyo/Pj8
-Ff0a/RT9/Pwu/bT9EP4f/lD+x/4l/0j/XP8i/2b+wP28/c79Zf0e/Vf9uf1C/vj+m/8+ADUBkALo
-AxgFXwYzBzQHagdpCFsJlAl9CbYJSgoKC6ULswt3C3UL1wu2DNkNog4vDwkQHxEkEvESZxNsExcT
-wRKtErASYxKsEfsQfRC8D5UOeQ2hDNILDAufCogKcwobCswJ0gm1CTsJpQjxBxQHGgb4BKYDXwJc
-AZ8ADABW/zH+2fze+2D77fpQ+qr5KPnZ+PP4lvnR+Sb5SPir90r34vY/9pr1RfUX9QL1dfUX9iX2
-JPay9ib3OPdj95P3nPe89zL4u/j6+DD5g/mf+Zz5xfnu+Rj6pfpU+/77E/1E/jL/6f9UAIMAjAB8
-AKYACAFwAf0BdQKeArcC8wIhAyIDFgM2A5UD5APWA9YDbAQSBU8FmQX2Be0F2QUHBv0FxAWTBS4F
-sgRtBFUEOgTGA+kCSwIpArwB2gBJAEUAWwA+AAAArv86/7/+d/45/qT94vxH/M77ZPv4+nn66PlD
-+bn4b/gG+ET3kfY09hr2JvY19kz2ZfYy9sD1Z/Ud9d304PQe9Vf1ifXK9fb18fWu9VT1T/WX9c/1
-L/a89tL22faH9zT4Y/il+Db5z/lp+vX6afvg+z38ifwA/YL9w/3a/QH+Mv5p/qj+9P5H/6b/UwBC
-AfQBZQLIAvwCKAOcAxIERgRmBI4EwQQiBYIFjQWVBbcFgQUjBSEFSQVNBXsF0AXxBfUF6AWWBTcF
-GwX7BHsEAATxA+oDsgPEA1EErQSFBHMEHgQ3A+4CYgNcAxADQgN/A58DrgNaA+cCjgI+AiACNgIF
-ApEBqwF7Ag4DvgItAiUCaAJgAhcCGAJLAiwC+AHeAYkBFAHLALYAowBaADEANwDu/4n/qP8uAH0A
-oQApAeQBOAIuAgUCCAIrAs0BIQHBAJYAegBKAOj/eP8q/xr/KP9V/8v/RQDeANEBXgI5Ah4CGQLR
-AXQBNgESAccAOwDq//b/2f+D/47/3v/b/8j/FQBiAC4A7f8bAEoA9P9y/07/Mf/c/o/+N/7c/Y/9
-Kf3m/Mj8fPw2/Dj8PvwJ/On7Ifwq/Lf7Vfs1+/L6Z/rR+aL53vkA+vj5CPov+kv6U/p3+s36DfsK
-+/f6y/p4+o76/PrW+lf6KPoa+ir6dvqq+rX6BPuD+7v7t/uy+5P7TPsJ+9r6rfpn+g76wvnE+Tz6
-1foq+1n7t/sO/Cb8XvyZ/G/8SPxv/KT8y/wL/YD9uP1S/dL8z/wO/Rv9C/1V/db93/1b/QT9FP31
-/IT8mvzJ/S3/8/+TAHQBIgLRAhUEbgVWBiEHSQjtCVwL7gtCDLEMrgxGDBsMdwz6DAENyAxeDVcO
-RQ6vDfwNzQ42D6EPXBCtEH4QtRB5EcQRKhGZEHsQNRCOD7QOtQ22DKQLLgq5COwHYQejBvYFfwUh
-BdIEpARTBK8DVwOgA6YD2wIPAscBggG2AHz/fP7A/Y388Pqz+UT5GPl3+Jb3/Pax9lb24fW09a31
-pPW/9cr1uvUY9uP2gPfX9/v3DPhs+MP4Q/h094H3BPgQ+N/36vdL+P34z/mA+hn79PsC/b/9TP4X
-/xgAJgHpARsCHAJ7AvkC/QKLAioCSAK8AiwDvAOXBFYFhwWZBTYGDQdxB3YHkAfhBzgIYghVCO8H
-Xgc6B0YHwQblBcgFhgbSBlwGJQZeBo0GeAYPBqkFhQUtBaAEWAQrBN8DiQMAAzQCfQEeAbcAwf+U
-/vH9u/10/Rf9q/wJ/HP7HPvP+pj6bPoQ+q75ivmb+bH5rPlr+RL54fix+Gj4Avh99/T2gPY29uT1
-avUi9Uj1fvWN9cj1S/ao9qH2tfY39+33hPi++Kj4xPhY+bz5kflv+ZX55/lI+rD6E/tP+7v7hvxH
-/b39DP6G/i//yf+OAJYBTwKZAs4CQAPmAyQEzgNmA0ADVgNlA04DUgN2A2oDZgPdA1cEeAS2BBAF
-NgVQBX4FcwUSBbIElwTjBEsFJAW4BM4EEwXwBKsEvwQOBVcFcQUrBeQEBQXIBLgDJgOMA64DWAMG
-A4UCLQKhAi0D7QJVAjQCcgJmAtwBigHpAQECCwEAAMX/fv9+/s39z/2d/Ub9SP0t/Zf8Ofxb/Ev8
-1vus+xv8o/zd/Nz89vxK/WX9N/1T/b/97P3K/cf96f3k/Z79Of0m/YH94/0h/ln+bf5V/nr+1f7x
-/tn+Bf+J/8b/X//v/kT/8f/U/y3/2v6t/n/+xP5f/5j/Q/8M/1D/fv8R/3P+C/6b/Ur9eP2q/U/9
-Av1Z/c391/2S/W79h/1n/Sb9R/19/WD9Iv0C/fX8w/xj/B78+vu0+2v7V/tZ+zz7Efv6+un6/Ppj
-+7L7a/sc+0/7m/t8+/z6gvp++r/6t/p2+jP66/ng+QT61/me+dL5+Pnz+Sr6X/pn+nD6WPog+gb6
-5Plc+dL41vj9+Nv4zvg2+fL5j/rf+hj7fPs7/AD9YP2b/aj9ef2I/bv9m/1E/SP9Q/1d/Xj9wP1T
-/iP/+v/5AE8CnANIBIQEEgUgBkcHUwhbCW0KtwspDXgOiA8+EM4QdRHxEQ0SBBLoEa8RghFGEdgQ
-bBAYENkP9w+oEGkRpBG5EVASJBOJE5wTqxOXE5ATtROmExQT6hFwECsP5A0YDCkKnAhaB0gGggXl
-BAoE4QLtAWYBAwF+AOv/qf+Q/xn/aP7N/Rf9M/x1++n6VfrJ+Vv57fg8+BP3x/XT9GD0GPR/8/Hy
-8PI885bz1vMF9FH0jvTd9IP1MvaY9uH2N/fJ95n4Gvku+TT5S/mP+Rn6d/pa+nv6PvsJ/Iv8J/0L
-/vj+4f/AAHMBCgKtAlUDBATPBIoFGQa9Bm4HAwiOCPAIEAkxCagJMgqNChcL3guNDBINjQ3fDcUN
-aQ0BDXkM+AunC0sL5AqeClcK1gkhCYQIGgjSB5EHTwf4Bl0GmQUQBaUE1APqAkYCqAE5ARQBpgCj
-/1D+Iv00/Df7Fvoh+YP48Pc494T28fVf9aL0KvRr9Nf05PTm9BX1B/W69ID0O/To87Xzm/Od84Dz
-EvOx8nTy+/E98bjw1fBb8drxUPLa8lfzrPP984P0PvXs9WT26vbL97j4UPnN+YH6EPtN+/z7CP1Z
-/Sj9hP0V/kz+q/40/5L/7v9VAMEAPwHCASwCjAJDA0AEIgXYBVAGfQaTBsMGvgZOBtkFdwUoBTUF
-TAUABbgEBwUnBm4HvweIB+kHXwgYCKMHrQfoB9MHQgdvBrsFJwWABMQDCwNJApcBWgFbAQEBsQDi
-AL0AAwC1//L/HADq/0//2v79/hH/c/5m/Xf84/tn+4T6W/ml+KL4r/hc+AT4Dvh3+LL4hPit+IT5
-X/qS+lj6vPqt+/f7lftY+1r7d/uV+2b7Cvv0+gr76Pqq+qf6BvvH+3v82fxw/Y7+gv+v/4P/u/9F
-AKEA2QAyAa8BMgJZAhQC4wHcAccBnQFGARoBfQHOAaUBogH6ASwCKwL3AUcBqACPAJgAmQCXAGsA
-NwABAGP/dv72/fL9sv0g/fn8av23/Zb9mv0D/mr+sP7T/oj+PP6G/rH+C/5R/TH9Mf3G/DD8CPw4
-/CD8bvut+qv6Lftk+0/7dvvw+2H8h/yJ/Kv84/zq/KH8Qfz8+9H7pvtf+w/73frH+sT6jPr8+b75
-EvpF+k76/PoP/Nb8sf2j/kD/s//l/8f/1P/3/7n/U/8o/wz/4f6q/l3+Jf4C/ib+6P4JACIBOwJ5
-A7AE1QURB3AI6QmLC0QNyA4CEDsRfhI0E1sTgRO+EzMUzxT0FKwUoBTFFJ8UKhTIE40TSxMWExAT
-GxMHE/MS9RIEEw4TwhKIEr0SqRLOEYMQPg/2DZoMUgsgCggJygd+BosFdwTiAmMBagDU/1f/6P6R
-/kD++f3G/X39+vw0/DL7Jvou+UT4fffi9lP2pfX19ID0KfSn8xDzofJU8k/ysfIi85TzD/Q69Af0
-oPMi8+jy+PLv8tzyPfMl9AH1gfUg9in3Mfj4+LX5g/pO++/7nfy5/df+l/9uAHEBRwLPAiwDpAMC
-BPID5QOPBHYFqQWjBSsG/wZ0B30HqgcYCMAIygnmCrQLRgy0DBMNcg2oDZkNVA31DJAMBwxCC1EK
-YgmdCOwHMwdsBrgFOQXKBGME+wM+A2cC9gHRAdMB6gHJAUsBpQADAFH/Vv49/XT8wvvB+rz51vjZ
-99z2zPWZ9KLz8fJW8vvx//Eg8hryB/IT8hDy7PHM8cbx5vEM8h3yNPJY8mfyVfJc8pry4/ID8wjz
-NPOj8zr0pvTT9Bv1kPVK9i33uPfw90P45/iU+Rb6t/qE+0T88/ye/Tz+3P6V/1EA7ABvAegBXgLw
-AoID3AMBBCMEWQSfBLcEjQRRBOIDmgPpAykEEwQ3BHQErwR8BZYGDgcQBzUHWAeUB+EH4gfPB8oH
-igcyByEHIgetBtwFSQUHBcAEXATDAywDEAPmAg8CJwHNAK0AUQDf/3H/Fv8L//3+hv7k/ZL9p/2e
-/Rf9iPx0/HL87Pvj+vr5z/nI+QX5I/gr+Kr4qPhX+HD45Pgl+Wj5Avpw+qT6Dftf+2P7l/vr+/H7
-wfuP+6z7Nvy6/Mf8ufwk/db9av7Z/iH/VP+b//L/PQCeAAMB3gBNAPH/yP/C/wsAcQCqAN8ASAG/
-AfwBIgJ2AsgC3QLeAhIDTQNLAxsDtAIaAowBAgFgAN//qP+m/63/iv9x/9H/TQBaACwATwDaAEYB
-DgGYALAA8QDAAFsA6f+P/4D/fP88/+T+sv6l/pP+Wv7x/ZH9X/0u/QP9Iv2L/aT9Uf1I/az9Af4c
-/gX+zf3P/Rj+LP7W/W79cP3F/dP9cv0j/UX9lf3G/fv9Q/6E/qz+mP5d/kH+Xf5t/ln+Xv6K/pb+
-Xf4R/t395v0m/hn+sv3B/UT+i/4O/yQANwE6Ak8DWQSBBfsGkQjgCfAKIQx9DbgOxw+sEJkRlhL9
-EscSxRIgE1ATORMzE0ETJxMzE24TdBNuE2UTIBPQEuISLxM7ExsTBROzEiASoREFEQAQ1Q7ADacM
-awspCuEIbgcRBucEwwOeAosBiwB1/1b+Xf18/MD7Gvtt+uH5bvnC+Az4lfft9uT18/Qp9BzzBfJj
-8TXxTvFk8Y3x8PEU8tHxtPEQ8mjyVvJL8mryRfIn8ojyA/M485DzPPTu9LX1l/Zq9zr4/Piv+X36
-TPsO/Nn8rf2m/uL/KwEnAsACGwNZA5QDqwOiA88DIgRLBH4EEQW+BSMGaQa1BvAGVQfXByUIcAih
-CJMInQi6CLYItQijCFQIQgiQCLcIjwghCHgH2gZPBqEFygTMA7ACxgEFAU4Arf/+/oX+mP7m/hX/
-G//u/mb+kP3Q/HD8OPza+1L7mPrP+Wf5Vvn8+C34S/ec9in20/V/9Uf1I/US9RX1yfRI9BP0FfQJ
-9N7zwPPg8zL0rPQh9Xb10vUk9jX2Z/YQ95X3zvcr+KH4Lfnh+WT6j/rC+gr7X/vf+yv8TPzM/Ib9
-Lv7R/kT/Wf9H/2D/ov/t/zoAlADmAC8BzAGWAvoCNgOjA/QDNQSnBNUEsATUBCgFZAXGBUMGqgYk
-B3EHOAcPB2YH2wcQCO8HfwcIB78GnQZiBqwFsQS6A7kCFwL6AcsBMwGNADQACwC6/13/Yv98/07/
-AP+h/mL+Uf4w/hv+AP5o/YX86vuJ+yz74vqZ+ir6xPnT+XX69fr0+hP7fPv5+6X8NP1j/Xr9k/2t
-/d790v2N/Z795P3F/Wn9av2+/Q/+Rv51/rL+9/4//2z/of///zQAJAATACoANAAQAAAAFgAcABAA
-+//K/17/o/4U/gH+8f3S/QH+Pf56/vr+dv+x/5P/HP/W/tv+pv5M/hr+6v1//RL94vy0/I78i/y3
-/Dr9x/0P/jf+YP6O/sD+Ff+o/wAAwv+G/6f/r/9W/+X+mP5N/gz+/f0S/kj+l/6+/o7+NP4B/gf+
-Zv4g/7P/yP+X/4P/rf+s/23/iv/e/6//cv/t/1cAzP81/33/1v+2/53/sP+l/3r/nP8TAIEApgB0
-AEwAfACsAKYAgwA/AL//Ov8B/97+uP7M/kP/PAClAR8DjQT5BV0HuwhMChkMug34DvEPzhCvEYMS
-NxOsE7wTqxPSExAU4BM4E60SdRJIEvERqxGpEXUR9hCeEGoQMxD0D28Plw79DfgN2w0nDS4MKAs/
-CnoJaQgGB84F7AQ8BJkD3wL0AQkBOAAz/wj+Ov2P/F/7Cvo7+Zj4n/et9vP1N/WJ9PPzffM+8/jy
-ffJE8m3yhPKv8jXzsPPY8xD0lPQR9Tb1JfVB9XT1XPVA9Vr1QfXS9Hn0oPRK9Rn25Pb191H5q/r5
-+yX9B/7f/g0ANAHaATwCjgL3AooDBAR9BPoEDAX1BEcFigVOBSAFWQWvBfkFRQaIBpMGSAYEBg0G
-JgYZBtgFigWLBe8FXAZaBvwFoAViBUAF+QRsBNEDUgPuAokCCQJpAc8AZAANAH7/sf7o/T/9vPxe
-/AD8ifsR+4H6uvk6+Uf5Rvno+IP4Nvgi+IX48fjK+GL4Wfhz+Fb4MPgV+AT44fet97z33/eV9yX3
-CPcx95L3Bfhf+J340vhE+Qj6qPr9+qT7ufyS/Sn+pP7h/jj/0P9cANwASgGJAbUB8gE+AmMCOQIX
-AmgCAwOkAzgEgwSjBO4EFAXVBHgEIgT1A+gDqQNhA28DhwN6A5cDtQN6A2gD3wMwBCoERwRzBJoE
-5wQOBecEwwR4BMUDNAMqAysDvgIlApwBEAHDAJAA6v8J/3/+P/7t/ZD9dP1l/RT9s/x3/JL8/vwn
-/dH8Z/wu/BD8F/wv/Pz7jvtI+0f7evut+6b7bPsG+6/6uPr9+lD7qvvy+zD8gPzh/C/9Uf1h/YX9
-hv1R/V796f2a/t/+vP69/uT+/f5I/9H/LwA4AE0AsQDyAI4A7/+4/77/wf+4/0//l/4l/jn+gv6s
-/r3+3v4W/z//R/9X/2v/kv96/6H+Cf7S/qn/+/7Y/cb9LP7o/TH9kPwk/Fv8LP18/dj8Kvz6++37
-BvxY/Hn8cPy4/D/9Xv3X/DT8Afw5/Kb8/vzG/GT8vvxW/V396Pw3/Mj7//tT/Df8H/x0/M/8vPxH
-/K37bvvf+2L8WPwP/Ab8EPwT/H78//zX/G78Yfya/BL9tP0v/lf+Xv6W/h3/s//Z/4X/Jv8H/0X/
-q//Q/6L/ev+U/6v/ov/e/0EAjQA0AVYCqANxBY8HBAmpCWIKowsRDUEORQ9fEHYRPhLuEtoTahRK
-FE0UqRT+FFkVtBXeFcgVpRWiFaQVjhUiFVQUiBPcEhYSMRFwEMwP+Q46DugNnQ3XDLILnAreCUAJ
-ZQh8B50GYwXxAxUDvgLOAff///1U/MP6afmM+K33k/bx9az19vT08yTzf/Lv8VzxrvAm8P/v8O+z
-76PvCfBj8E/wVvDl8Ibx8PFi8t7yPfOD88DzI/TA9CX1M/We9WX2Bfe696j4afkJ+gT7T/x+/VX+
-DP/s/+EA0wHNAtUDAQVGBkoH4Qd0CC0JuQkWCmMKmArRChkLRwtQCzULCgv0Ct8KrQpnCiwKywlF
-CR4JLwnMCAcIdgdQBzcH4AZ3BvQFcwVPBRIFTwSXA2oDLwNGAiMBPwBO/xv+8PwE/GP72PpZ+gz6
-pPnK+Of3gPdh91H3YPdS9/r2vfbm9gv31PaH9lX2IfYZ9kX2X/Zq9ov2vPbC9vj2i/e597X3MPjT
-+CD5Qflr+Yn5v/ky+rT68/oD+237E/xn/Jr8Kf0R/vf+p/9UABEBtwE7AmwCPAJbAjID9QMqBEQE
-cwSzBAEFUQWxBecFuQWQBcgF8AWrBWEFOwUABd8EDQU3BfUEhwRTBCcE8gPoA9MDmwOQA9YDDgQq
-BI4E8AQGBRIFGQU2BbIFJwbpBfwE8gNUA/ECZQK2AQIBNwBI/4P+Iv7R/TD9fPwa/P375/u4+5z7
-rfun+1b75fpz+vn54vkn+jn6I/o2+oL6D/ug+8H7o/ub+6776/sO/Jj7sPoi+hb6DPrh+Z75ZPlZ
-+ZL5L/ru+nr73/s3/HH86PzM/Wj+mP7G/t/+4v72/gD/yf5m/iX++v3U/dD94f0U/l/+mP7S/gj/
-G/8g/zH/O/8Y/+n+tP5A/q/9TP0I/aL8JvzR+/T7e/yr/I78rfyl/En8Vvyw/Lv8ivxI/Cn8J/zg
-+4D7dPuV+1/7/voo+9z7lvwq/Yv9nf2c/c79/P37/e/9zf2H/YP9+f1q/m/+K/7Q/aT92f01/mf+
-aP5y/nj+Ev5+/Vb9Zf0M/Tn8ePso+wr77/o7+xT8nfxq/CX8NPyX/BT9Tv0X/ZD8Yfze/D/9xPzt
-+1z7A/s++078Of0r/aH8jfwb/dj9kv6U/xIBwQJABHQFtQYuCJAJsApwC90LpAweDssPJxEVEqYS
-DRO/E9QU3BWcFhwXOhcIF+4W4RZ9Fs8VLhW4FD8UthMcE20S+hGyERsROxCRD0YP9g5sDqcNxAwV
-DIsL2AoHCjYJPAgCBwkGewW3BLwD/QIzAjABJgAK/9T9dPzt+pb5e/hD9wj2EvV79CD0q/M486ny
-1fFl8dDxXfJs8nry0/I585bzvfPC8xH0pPQs9Zf16/VL9r32Ovfc94P4Dfmc+U/6NPtJ/Cj9ZP1L
-/Yr9Nv7b/oX/bQBmAVQC9AIzA5YDVgQQBagFZwZNBxwIgAiyCD8JhQkACXsIagiYCPEIUwmoCfMJ
-GgpFCocKaArXCXQJjQnSCd8J0AnZCZUJvQj1B64HmweGBzgHmwb0BVAFiQSxA+cCQALYAcMBoQEj
-AZYAAAD4/s79//xS/JX7G/ve+of6Gfpt+YP4r/cT96X2VfYh9gL25PXS9cH1f/UP9aL0mPT39BX1
-+PQm9WT1fvWb9bH10/UI9jL2jfYj96D3EPis+ET5sPki+r36Q/tW+1f70ftz/L/80/wa/Y398/1j
-/tn+Mv92/+X/jgAtAcUBcgIRA7cDfQQrBXMFawWFBbIFugW3BXoFAAWqBIIEYwQ0BPQD7AMWBCAE
-OATFBKQFLgYjBs0FXwURBTAFggVgBbYE4AMZA7wC2QINA/kCfQLjAXkBFwGCAOb/hP/n/rX9o/wq
-/Mz7QPvG+lz6ufk6+Vj5qfmt+XH5J/nz+BL5qPks+iv67Pm9+cL5Bfpi+ob6Ofq7+VL5Hvll+RH6
-cvo4+sr5tvkE+lP6n/rv+vb6vfrR+kD7cvtX+zz7CfsG+2v7yvsM/C/83fti+2/78Pt0/LH8jPxj
-/Gj8Sfw7/KL8Cf3r/KL80fxO/ZP9tv3c/cv9l/18/Wr9Ov0H/fv86fyr/Gb8Wvyr/Af9Jv08/Vn9
-ZP2G/fP9cv6j/q3+w/7r/ir/N//5/rn+ov7G/uP+7P4j/zv//v7N/uz+Fv/2/r7+sf6K/vP9TP0g
-/SD9vPwy/MX7jPvS+1r8mfyd/I/8ivzl/Gz9f/1t/cn9Jf7U/RX9uPyr/ID8g/y6/OL8B/0u/Vj9
-iv2y/aX9df2C/Yf9Ov0n/ZP9R/4i/xQA1QBbARcCKQN/BCcG5wdMCV0KYAuFDLkNyg7CD5wQNhHA
-EYISZxM9FAQVcBU+FR0V0RXJFggXkxbPFecUFxSAE+cSKhJNEUIQVg++DjkOxQ14DSgNhwzSC48L
-kAuHC20LGQtYCmoJpwj2B1EH/ga6BgEGRgXfBFsEqgPYAsgBpwC5//j+Kf5m/dn8JfwE+9H53/j9
-9yH3gfbl9Tv19PQi9Wb1dfVL9Tf1bfWr9dX1O/br9l33PvdA99v3fPi5+LX4C/n3+bf62Prn+kL7
-kvvX+0z81PxM/bj9G/5B/g/+6f0E/h7+af5j/3AAxQDbAEoB7gGGAgYDigMfBLkEfAVRBtcGAwcb
-B0sHmQf9B2gI1whOCdgJTAp4CmkKRAohChAKJgofCroJPAnRCE0ImwerBrIFGAW1BDwEqQP+AnAC
-TAJKAs0B8wBEAOv/u/91/xb/xv6O/mr+MP6m/cj8+fuA+yf70/qf+n76N/rR+XX5D/mI+OT3RffC
-9mf2T/ZD9vH1ePX29Hr0T/Rh9EX0EPQP9Ej0hfSP9J704/RL9bf1/fU49qv2RvfY90X4lfj++IX5
-3fkZ+o36EvtY+4z70PsW/EH8HPwK/Jb8N/1d/V79Zf2P/Wf+b/9U/57+yP55/6//av8B/+T+XP/o
-/wAA9v9DANEAUgHjAcUC1wO8BEcFpgUKBkIGIQYqBm4GJgZkBfME5gTDBDkEigNHA3wD1gMaBCsE
-/wOhAwwDRQKEAdEAKQCn/0r/8f5E/jj9Jfx3+7T7dPxv/Hn7+Pp9++z7xfub+2f7+vrc+g/7IPsm
-+xH7zvoF+4z7fPs2+2L70/sy/Ev8Pfw9/Bn85PvF+3D7E/sK+wH7o/pK+jP6+vmw+an52Pln+kz7
-BPx2/M38GP1u/cH94f3e/QL+Wv6w/sH+pP6q/sH+3P4b/47/BABEAFwAcwCBAIUAlAC6AAIBUAFT
-ARUBsQDh/wn/qv5h/kr+qf7b/sP+1v7b/qv+rP7e/hj/m/9OAIwALwDY/9b/+v8eAEgAhADLAPsA
-8gCvAHMAhwC6ALgArADXACkBTwEQAbEAdQAxAOX/q/90/zj//f7c/tj+kv4F/rT9qP2Y/Xr9if20
-/Yv9Rv0F/Wz8/PsT/Bv8K/zY/JD9Zf3d/AT9qf1h/hz/wP9xAA8BdQENAtICbwMSBN4EewXpBZ0G
-pQeSCDoJ0AltCvgKowuiDJUNTg7gDkIPfw/ADzgQwRA1Ea8R7RGxEVMRORFcEaIR8hHbER8RSxAl
-EHgQOxBCD1AO0w2UDTsNCQ0GDZgMqwu7ChcKtwlzCRMJbgiWB5gG5QXXBe8FkwXKBPgDagNAAxYD
-YgJnAYgA9P+4/z//Zf7Z/Zf9Bv07/Jz7Evt8+vj5nvlI+cT4SfgK+Ob3tfd190n3LfcK9wj3Fffi
-9mz2+vXT9Q32ffby9kf3kvcY+Mv4ZPm1+ab5Vfk4+W754PmI+h77a/uV++j7efwy/c/9A/6//YT9
-6/12/oH+k/7O/oH+H/6Q/mH/4f8uAIkA6AAoAXMBBgKKArEC4gImA0QDbgOsA+oDMgRhBGcEkQQt
-BekFGQbbBdYFGAZMBkIGBgbHBYcFTgUhBeUEvQTJBMMEZwTMAykDawKCAeAAygCMAMj/OP8f/+T+
-Zv7o/Wj9/fzr/CD9H/2w/PH7AftW+ib60vkK+Vv4Rfih+Of4x/ho+Br4yvd793v3g/c49xr3i/ct
-+JP4q/iC+Ab4bvc790j3C/fH9sf2s/ai9rj2ufa19sL23vYk93L3pvfZ9/j3AfgM+Bv4Qfhr+IX4
-w/hG+e/5ffrZ+j/7r/vn++z7/PtS/N38Qv1v/bb9LP7H/oj/FgAvADgA1ADJAUkCjQIKA20DdgNq
-A3EDTgMWAzUD1gNuBEkE5wPxA9QDiwOTA54DoAPAA8oDtgOiA6QDiwNIAywDUwNWA/8CwwLHAswC
-rwJjAvQBmQGiAeMB/gEDAhAC/wG5AYwBrAGhAVUBRQFPASQBBQH+AN0AngA2ALD/I/+1/rb+Av8Z
-/+n+lf40/iL+JP6k/dn8RPwI/A/8YvwK/W/9DP2a/NX8QP1L/S/9SP2W/fz9b/63/pH+LP4q/ov+
-lP5q/qX+Ef9R/3v/pv/h/0QAfACJAK8A5gAVAQwB4QCnAEsA9//t/yYAOwA0AHoAvQBuAPf/4f/V
-/43/Xf9u/4P/yf82ADYAGgBbAGwASwC0ABwB2QBrABUA2v/r//H/l/8y/xj/VP/L/zAAQwA8AGIA
-kgCjANAABQG2ADcALAAfAK7/Wv8Q/0H+ev2P/fn98P3B/eD9Nv6Y/v3+Qv9V/1r/S//w/lr++P0C
-/kr+bv5V/k3+jv7h/iT/nP8xAKgAJgHFAXICLwMLBN4ETwV7BdwFNAZ/BlIHIQgcCOEHKwjVCLAJ
-YAqFCoEK1QpgCxMM2wwVDZcMIQwMDAkMAwwyDFQMCwygC5UL6wsdDOULdAvjCjcKtgl5CTMJ2AhW
-CKoHFwfSBugGCQfkBm4GtAU4BW4FtgWIBScFswQ0BOYDwgNhA6oC/QGCASIBqAAXANT/uf9Q/9T+
-bf7d/Vv9Hv23/Ov7HPuE+gr6y/mu+Vr58PiP+E34Tfgq+Kv3JvfK9p32pvb+9oD3nfc/9xv3dPfU
-9yv4hPi0+Ov4OPlX+YD56fkg+hD6MfqT+vb6Ivs6+377uPvH+9X7Gfys/En9qv2q/YX9s/0Z/mL+
-jv6+/uP+wv6l/u7+Tf9G/x7/Qv9Y/0D/hf8aAEoAJQAiADEAXQCsAOUAKQF/AbYB9gFFAkQCHQJF
-AnUCdgKsAiUDVQMPA9EC3gLeApUCbQKFAosCZQISAssBzAHjAdEBiAESAakApQD5ABABpwAeANH/
-uP+U/0D/r/4F/o/9Z/1j/UH9/PzN/K38Xvzt+6T7v/vq+9H7p/tr+y37YvvE+5L7Ifvs+ov6RPp2
-+oH6R/oa+ur57PkH+tv5iflz+Yb5bflw+cH5/fn8+SP6h/qf+l36Lvoz+lz6n/ro+jj7lvvW+wD8
-Wfy2/OL8H/10/Zr9sv0J/pX+H/+M/+D/IgBCAE4AdgDHADIBcgF5AcIBRAJtAm4CowLDAv0CiwPd
-A8QDqAPhA1EEdQRGBC0EOQQ6BDAEDQThA+ED9wPjA8QD6QMVBOQDowN9A0UDOANIAxID0QL9AoYD
-9APyA64DdwNOA0gDgwO6A8oDzQPPA9EDtQNAA4kCCwL8AQsC9gHJAbgB5gEbAhYC2QF8ARIBnAA6
-AAIA3//E/4P//v6V/pr+1v4X/zz/9/5e/h7+XP58/kX+9v23/a39xf3C/bj9yf3R/eT9K/5J/iD+
-Av4d/kX+OP4f/hf+5f23/ef9JP4B/rP9jv2B/ZX92P0F/g/+H/4P/s/9mf2B/XL9if2t/X/9S/11
-/Zr9if18/Yb9q/3E/e79aP71/lX/df9h/1H/Uf84/wj/0v6l/pb+qP66/sL+3f7q/sH+nv68/un+
-Av8h/1D/vP8xADgA6/9n/wT/Lf9b//H+Vv5K/oD+c/6O/hX/kv+7/9r/TQD5AHUBrwHZARACUAKU
-Av0CfwPOAwcEfQTxBCQFaQUTBtIGWwfnB5EIFAkxCTQJlQkWCi0KBgoECu8JiwkxCTUJPgnrCJwI
-lQhvCPgHrQfnB/4HaAfNBrgGzAanBjIGigXoBGsEHgQPBAAEowNCAzEDPgM/A0MDPgP/Ap0CXwJI
-Av0BfAFRAVkBAgGSAEQA8f/t/wkAyv+x/+z/y/9q/37/o/8W/2/+Tv4y/vP9vP1T/Zb85/u0+3/7
-w/oN+rr5nfmg+YH5V/lt+V/57vic+NP4Nvki+bD4cfht+FP4Jfje95r3x/cm+DH4W/gA+Y75uvnc
-+RT6Pvp9+sH67/qE+2L8ofxg/JD8Kf11/W/9g/3n/X7+6P4V/0H/Xf9x/8T/MQBgAIAA3AAiAQkB
-3wDLAMsAAgE7AWcBrwHYAfcBPgKJAscCDANUA20DcAORA78D1QPTA8YD0AM5BNYECQXWBOcEDgXL
-BJwEqgRlBAkEBwT8A8gDkwMpA74CvgLhAqcCWgJCAvwBbQH8ANQAugCMAEcA2v+A/0P/2v56/lP+
-Pv4v/iz+Cv66/Yz9oP2e/Ur9B/0W/Sn9Iv0Z/Sf9P/0e/dX8p/x8/Er8Rfw8/Bj8F/z6+8b7zvvR
-+8n74vvG+4X7uftS/MX82/yf/EP8OfyC/Kb8fvw9/Dz8mfwi/ZH9uv3Z/R7+Vf6D/un+S/9X/z//
-a//n/1sAtADeAN8AIQGWAe0BNwJtApMCwwLCApACdAKpAgkDIQMgA24DzQPtA/ED/QP/A+sDmAMl
-A+oCzwK9Ar0CtQJ4Av4BlwGKAbEBzgHaAdYBAgJ1ApACHAKeASgBtwCzAPgAMwFtAYMBfAGVAZ0B
-aQF0Ac4BygFHAeUA/QAdAeMAewAJAJT/XP9//7z/5v/h/7X/mv+T/2f/Av91/uP9sv31/Sr+H/4K
-/uz9uP2A/VL9Gf27/GP8UvxM/A/83vvq+/b78fv9+wz8PvyU/Lz8vfzg/An96PyF/Er8U/wn/OL7
-/vsf/C78jvzu/PH8zvzC/Mz8yfyx/Kr82/w3/aP98v3l/Yf9Of1M/aX91/3Q/az9if2D/aL9uv15
-/Qb93/wa/YP96/0o/lv+s/7W/o/+SP5r/ub+TP9p/2v/Tv8E/9n+7/4C/9T+g/6P/g7/j/+4/37/
-Q/9E/0H/If8E//L+Hf+O/+X/DABXALwAEwFwAcoBQwLoAlEDvANzBNkEqgSFBMsECgUYBW4FGgaa
-Bs4GLAfbB4oIEwlXCV4JkwkPCncKpgqaCk8K8AmLCR4J4gjhCNMIfQgOCNoH8gcBCKAH7QZRBu0F
-xwXHBdMF5AWuBRoFtgSmBHEECATBA50DiQOBA4QDeQMGA04CCgLyAWIB4ADeAPcAGAFrAXYBCQG3
-AKcAfgACAF//9f7Q/r7+l/40/qL9B/1j/Nv7pft/+xn7xfq/+sD6p/py+kD6F/rg+d/5O/p/+l/6
-J/rs+Zj5bPl7+Zv50fkq+oP6n/qv+uP6CPsq+2/7vPsK/F38nPzI/OH8/vxA/Vf9KP2O/aH+Hv/n
-/v3+V/9w/2v/W/9k/6z/2v8DAIoADgFIAaMBQQKsAsYC0QLqAgMDAQP0AuQC4AIQAzgDJgMTAxAD
-AgMyA8oDZgTVBCYFbQXABRoGUAYdBrEFbwU4BdIEewRKBBAEzwO5A+sDEgQGBAME+QPFA44DRAPE
-AlkCGQK7AS8BewDB/1j/bP9o/87+L/7p/az9jv2R/Xf9Rf0H/ej8AP3p/H38HPzv+9j7sfup+8/7
-wvuT+637+/sT/O37w/u1+7n7lPsx+9363vrr+sv6uvrA+pr6cfp3+n36iPqr+sn6vfqO+mv6Xfph
-+o76yvrl+gD7Sfur+wn8TPxo/LL8Sv3b/SP+Lf5B/rf+fv/4/ycAbgCMAJMA3gA8AaMBEQJOArQC
-cwPwA/sDFQRhBHsETAQ1BE0EWQQuBPcDAgQ3BDQE9AO+A9gDRwSVBFUEzANkAycD9wLEApYCcgIr
-AsQBhwF+AWEBLQENAfoA/gAgAUUBUAE/AT0BOQEYAfAAowBJACQAIwATAPn/4v+Q//T+jP6J/mD+
-1P1z/XT9kP2h/Yn9OP23/Br8m/ty+z77vvpo+kz6IPr7+er54fnY+eH5Ivpg+lP6S/qS+sD6qvqs
-+sD64/r++vf6E/sz+zX7XPvM+zf8UvxM/HT8vPzk/Of8zfyV/I/8z/z9/A/9KP0s/Rz9L/1C/ST9
-DP0u/W/9r/3q/RX+J/5E/nj+kP5w/kL+Qv52/qj+yv7s/vP+//4v/zb///7p/hn/TP9t/7L/MgCO
-AI8AfAB3AHUAbwA8ANb/h/97/6n/EwCIAKkAaAAiAAUA9v/0//P/4f/x/xkAKwA5AEUANgD3/87/
-DABvAL4AAAEyAYcB7wEkAloCygJMA6cD1wMcBJIEEQV9BfkFmQZDB8MHFAhmCOoIeAmeCaYJFQqp
-Ch8LbQtvC04LZAuJC3cLTQs0Cy0LFQsOC1gLfAsGC1oK4gmkCYwJRQnXCLMIwgi7CIMILQgFCAAI
-1wdpB8gGMwbCBYsFpQXfBe8FtgWUBX4FDAWiBHEENQQPBBIE8QOMA/wCbAILAtoBvQGEARkBxgCS
-ABkAcP/c/jn+cf2t/B/88/sC/P371fuO+/36T/oE+vX5w/l2+UL5M/kb+S/5hvm1+Zj5Tfke+Uz5
-ovnX+ff5JvpD+lf6p/oR+0D7Nfsy+z77Q/t5++z7XfzR/Dv9Vf1I/VT9kv3l/SL+af64/uT+//4V
-//3+zv65/rn+x/7y/kL/d/9Y/0X/xf9/ALcAuQD/ADMBXwG1AfQB9gGxAYQB5AE4AuwBrAH3AU0C
-cgKlAs8CxgLUAhsDYgOCA4IDiwOnA5UDTgMCA8kCoAJMAtoBwQHlAb4BVwH3ALMAfAAhAOD/1v+O
-/xD/0/7T/sD+ff4C/mz93/xo/Az8svtV+xf7Kfts+zL7hfqB+gH79Pqa+mf6LPrp+cn5vvmi+U75
-7vgB+U/5JPm5+Lf4+fgK+er48vgP+cv4Y/hW+Ij4lviF+Jv43fgr+WT5cvmE+cH53/nO+dT5C/p8
-+vP6EPvp+ub6N/uY+9f7Q/zC/PT8Cv1b/bP99/1c/tj+gP9uAFcB8AFYApECjwKyAkkDBwRWBF8E
-4QSkBecFDQZ9Br8GuQbeBhcHBwfVBp4GWwYGBmUFswSLBP0EdQVnBbsE2QNVA1EDaQPyAvYBWQE0
-AQoBAQEcAQMBugB5AGcAeABWAPT/5f9KAI8AlACcAMUA7QDBAI8AsgCsAC0AoP9W/z7/K/8d/y7/
-Wf9m/xr/tv6q/rD+MP5h/Qr9Jf3y/HH8DPyg+xn7vvqS+o36tvro+hz7LPv2+sX67Ppg+7b7wPvg
-+zH8UfxS/Hf8mvyu/PD8cf3r/VT+uv7t/gv/WP+v/7T/gP9r/3v/n//Y//z/4f/t/0cAOwDM/9f/
-SABaAAwAAAA4AEAANABcAGYAMwAGAO3/2v/j//r/GQAmAPH/9P+iAEYBcAGkAcIBlQGXAccBwQFa
-AcQAwgB8AeUBlwFYAYoBlAFDARQBCQH5APIA+gAAAcIAaQBPAEQAMgAxAEcAYgBRADAAHwAGAPT/
-DABPAJAAowCkAN8AOwGkAToCygIfA1IDjgPWAzcEqQQPBZkFYAYHBz0HYwerB8cHxQfbB/oHQwjj
-CIwJ4QkBCvwJswmICawJ2QkpCrwKNwtsC2ULEAuzCrAKwgpqCvIJ8wlFCiQKkQkiCdwIpQiFCGsI
-TAhPCF4IQAgTCPwHzwdVB7YGUQZWBoEGcAYjBskFYgXfBEAEcwN0Ao8BHwH7AMgAdgAWAL7/Uf/K
-/j/+r/0t/aP8AfyI+0j7z/oB+oT5aPkL+Yn4QPj296D3kfef95X3mPd79zr3H/cK9+n2CPeG9xf4
-Zfhu+Gz4XfhG+Gv4vfjt+AT5Mvlw+cX5BPrP+XH5ePnn+Vz6uvop+4b7u/vU+8j7zfsc/Hj83Px1
-/e39W/77/nX/lf+H/47/t//i/xUAagDHAPkAGwFpAbABmQFIAUQBzgF8AsoC+AI2AygD9gLvAuIC
-yAKpAq0C4QK9AhYCcgEmARIB5wB3AAkA1//A/9b//v/j/5D/bf92/27/W/8W/67+WP7X/UH9Df27
-/O77Vfs1+x775Pri+ij7Nvso+037Wvtj+337SPvb+qT6j/pC+sD5Uvka+f/48fj/+Df5ZflW+Un5
-Pvms+Ln3MfcC9532NfZF9r72avdA+Or4Kfkx+UP5dvmN+XT5ovk5+tj6ZvsA/Ij80vz7/GL9Cf6i
-/ib/qP/9/zQAigDTAPgAGQFEAZABVAJXA8gDtQOtA7kDwQMaBNgEWwVhBXwFEQbQBkoHaQddBz4H
-MgeLB0kIKwnPCQAK9wn3CfkJEgp7CuMKnArMCTEJ1AiPCFII0AfqBtEFDQXyBBwF2AQcBFcDlgLb
-AW8BOgHIAAEAQv/t/sX+dP4j/uD9nP1d/Sr9JP1e/b/9IP5Z/nv+xv5A/4v/bv9d/4X/k/+G/5D/
-hf9O/zP/Gv/t/uP+2P6g/jL+vv24/fP94P1x/fL8tvzT/Cj9Y/0C/R38vvsp/H38hvya/Jf8ePya
-/O38Rv2g/dr9If5+/pH+d/6V/s7+v/6m/tH+2P6m/rT+Df9B/xT/tf55/pf+5f7n/n3+/f3C/dL9
-CP5C/lj+V/5//sH+6P74/hb/V/+T/8v/IQBlAHIAcQB/AI0AkgCZAMIA4AC3AJEAtwD8AAUBsQAR
-AHj/Tv9v/3T/M/+9/lD+H/7//Yb9zPw9/Cf8q/xC/Vr9Pv06/Rb9qvxI/Fj8n/yz/Jr8e/x9/Mz8
-Kv1B/TH9Yv0E/rP+Q/+s/8H/qP+f/6z/HgAnAQMCGwLZAegBdwIsA9QDlARxBTMG9AblB7wITwm9
-CfQJCApgCiYL8wtADCAMFgxxDPYMXA3mDXoOYg7PDUsNwwyFDKgMfgz3C3ELKAtQC5wLYAt8CpAJ
-KAkQCdsIVAh8Bz4GtAS+A8gDKgQxBLwD/QIeAo4BnAG0AUwBswAhAG//1P6u/qP+EP7u/L77Evv5
-+g773foY+gv5YPg8+EP4JvjX9zv3QvaP9Zf1tfVX9dX0nvR69Fn03/QX9tX2qfaD9s/2Wvca+L34
-BPkt+XL55/lj+tz6Wfuj+7r7Bfyj/HP9UP7A/sj+/v5c/6H/9/9rALcA2QALAVEB2AGSAv8CCwMz
-A4oDwAMjBO0EcwVeBS8FIwVYBQYGoQaeBjUG0AXBBRUGdgaFBnIGbQYsBtwF2gXNBVcFuARWBC0E
-2AMhA4ICQQLFAekAGwBr//f+1v6J/v39nP1e/TT9IP22/PL7Xfsc+/P60frL+pn6FPqa+YL5pPmW
-+VP58PiA+Gf4xvgu+Sz54vis+Jn4m/i++Pb4FvnW+Ij4qPjj+PP4Mvmp+eT53fn0+Vb61Pon+0z7
-kvss/MX8Hf1V/XP9ef2L/cv9Nv6W/uX+Yv/4/3MA7ABPAV0BTAFVAVEBfAEAAmkCfgKFAnYCUQKL
-AhMDVgN6A9ED6AOtA68DKAShBHoE5gOJA6ID+AMoBDMEfQQoBccFGgY8BlAGqAY5B3YHJweUBioG
-TgbqBn0HmgcsB8QGuAagBoAGlQaQBi0GrwU7Ba4ETAQ8BPUDDQPXAekAewBoAHYAIgAI/8j9Tv2J
-/d396P2M/Sb99fzB/L78Hv0x/Yf8yPu0+xz8avx6/Fr8Hvwe/I78E/19/c391v3h/ST+Qf43/lT+
-W/7q/X39kv3U/ej9rv1P/R/9Wf3h/SX+9v2t/Xj9pv1J/qj+T/69/Zr9u/2a/X79n/1v/fL8zfzt
-/MX8aPxe/HL8QPwU/DX8evys/Kz8evxq/JH8rPzE/KP8Ifyy+6j72Pv9+xv8Kvzh+4f7z/up/E39
-SP0V/Vv98v07/tT9Gf3Y/BT9Ov1O/aL9Af4R/gf+Mv5g/mP+bv6X/mv+yf1e/XH9jP1A/aD8Fvy7
-+5b73ftL/F38Lvwk/Ij8Lv2g/aP9M/19/AP8QvzI/LP8WfxC/C38KPxh/Ir8d/xa/EL8Wvyl/L78
-n/xp/E38fPzX/Gv99P3s/YL9Of1b/fb9nP7F/o3+oP5l/5wA2gG4AhADMAOBAz8ENAUHBrkGOgd5
-B88HsghUCoAMUA67DusNPg3JDVIPjRDBEIAQYhCFEPYQohEhEtIRgBBAD14PSxCoEE0Qjw+CDqgN
-cA3JDTIOrQ0VDIkKyQmcCaQJhQntCPMHCweRBkEGygU/BXgEUQNJAtMB1QGsAdMAYP/M/fT8Mv2z
-/Xf9Kfxa+hX50PhD+dr56/kx+UL40vfJ9/v3J/iv97L2HPZ59mH3B/gZ+Ln3Lfff9h735vev+K74
-EfjJ9/f3dfic+dr6Mvv4+tr6DvvJ+8T8Jf3m/Mf8QP2A/goAxQCVAIcAJAEVAvUCeQOOA4EDvwN6
-BGMFIwa4Bv8G/Ab6BiMHmAcjCEQI2gdgBzwHUgdkB4MHjAciB5AGdwbjBlsHTAenBtEFLgX6BPME
-pQQRBJADBgNFAtsBDAI4AsUB2QAGAHj/Lf8N/47+mP3S/F/84Pt5+zz78Pql+lL6/vnd+cn5d/kf
-+fP4j/gM+Oz39fex9073Zffd9/r38vc5+HD4Wvg1+DX4bfjc+E35dvlp+YH5xPkx+n76K/q2+cf5
-L/qd+uv6A/vg+qb6rvox+xL89/yl/en96f09/vb+y/+bAAIBswBXAMgAygEsAnwBzgAgAUQCCwOi
-AiUC2wLRA6QDrQJaAlMDYARKBPwDxQREBlkHhwf+BnsGtAaLB/4HJAexBSUF0AWVBlIGTQW1BN4E
-7gSaBI0E2QTBBNcDsAI5AmICoQKyAvwBWwA9/7H/xQDjAKD/0P2f/JT88fzN/ED8wPtw+1n7g/ui
-+3D7F/vH+m36PfrC+pb7gPun+vn5mfmG+ZX5hfle+Qn5y/gv+bT5l/k4+SH5YPmx+eX5I/pZ+mj6
-d/qn+g/7Avwf/U79mPwc/GL8G/2j/Y/9/fxl/Cn8Rfxo/IL8k/xs/DH8IPxK/H38dvxS/DT8GPw4
-/I38u/zi/CH9N/0U/cb8dPxd/Jz8Cf1r/ab9d/3a/HP8ffyh/KH8ivyD/MP8W/0l/uf+Nv/S/iH+
-t/3S/VX+1v76/t7+x/65/rP+i/42/hX+Y/7p/mL/yf8BAOr/iv8N/9T+Cf9Z/4z/rf99//P+kP6M
-/qD+mP6R/rL+Av9a/2T/7P4e/nD9Uf3P/XL+rP5l/vP9u/3h/U7+1P4k/yz/LP8b/yP/rf8fAPX/
-mP9F/zD/pP8yACcAa/+U/nr+OP/x/0QAdgB6AEkARACkAAwBJgE2ATcBCgE/ARUCJgMxBAcFewXR
-BZgG6gdmCSsLZg04DxQQhRDlEEAR1BHaEuwTchSiFOkULhU5FREVBxUoFU0VZBVVFUsVGRU+FBoT
-LxJrES8RihGsESERGhD2DhYOrQ1vDd0MGAxwC9AKGAoyCVoI+gfTBzgHDQbABJkDlALFATYBbAAl
-/zP+6v0+/Qf8Cftu+in6Efqp+e/4ZvhH+DH4tffz9j/22vWu9V/1CfUT9WD1i/V+9bb1efYX9wv3
-g/bq9dr1fvZT9+P3Lfg/+CH4Xfgt+f75ivoy+xP8hPx3/Ob85f2p/jL/6f+bADwB2wFcAukCaQOl
-A/ADoARVBZYFqQXiBRgGGgbdBbwFAQY8BhYG8gUfBoEGxwaqBmcGRgY6Bk0GXAYfBrMFcQVmBWcF
-QwXPBBkEXQPUApkCgAIeAm4BvAAlAJ//H//m/r3+9f2l/In7Afue+hD6o/kz+XH4zfeX91L3w/ZS
-9vX1lvWI9Xf1H/W39EH0CvRI9IP0S/Tn8+nzK/Q+9DT0MvQt9DX0dPT59GH1dPV+9bb1DfZR9oz2
-+PaW9yn4qfg0+Zr57/mv+n/77vt7/Gb9MP67/jD/cv+x/xIAqABeAfYBjQLgAsACFQM/BJYFyAab
-B7cHWwchB0gHuAdOCLoIugivCMEIrQiPCFcIpQe+BlsGxgalB+4H1wbCBLUCbQEaAXwB3QFoAScA
-Af9r/ir+6P1c/W38Vfuc+ov6svqo+kT6VPk8+K33ivef9/L3AvjD97P32vcD+PP3zffO96f3Rff/
-9g73Yfez9xT4evhp+Bf4M/ij+BL5evnR+c75HflY+Hr4g/mP+uH6e/rt+c/5IPpw+pn6vPrK+sz6
-LvvO+wv8AvwF/O77wPvP+w38I/xM/OD8kv0U/nb+v/7S/sf+0P7d/gD/gf8YAGQAjwDYACgBRgE0
-ATEBWwFuAY8BEgKjAqUCQAI/AqIC8gIRA/0CywK8AuUCIAM2Aw4D9QL1As4CmAJ8AmUCVQJpAoYC
-ZAIgAhUCCQLuAQcCFgL4AcgBfgFLAR0BjwAQADIAVADn/4P/rf82AKUAkQAlAOH/EwCIAL0AtgDD
-AN0ADgFXAU8B4AC/AC0BfwFoAToBUwG8AQIC6wHQARACtQJ1A9EDegPtAhgD5AONBN4E7QSyBHME
-iAS6BIoEIQQUBIQE/wQ9BcIF3QblB0gIEQiJBz4Hbwe0B4gH4QZOBhAGygUbBdkDggJYAvYDcQZ6
-CIoJfwliCP4GnQaVB+8I+AndCqkLCAwrDKIMLg1bDZgNaA5fD5UP2w6IDegLUAozCfsIxQkRC7wL
-CQt8CUsIGAilCDsJSwnUCCAIgAcGB5MGVQZKBgAGXwUJBVwFggXpBCMEhQPdAjcCmgG3AIv/W/6Y
-/Zn91v2z/Vz96/xN/MD7a/sf+6L6Mfor+ir63/nN+SP6QPoV+k763fpJ+3P7GvtO+r35v/ke+nD6
-S/rC+Tj56vgA+XX5D/p/+nj6HvrF+bD5L/re+ir7G/sI+xz7TPu4+z38p/xA/TH+7/4Y/xz/Tf9J
-//v+zf6//pr+k/61/sX+6P4e/zP/LP/k/oX+mP7Z/vX+Tf/e/2cA0ADqAN4A8gDkAH4ACQDb//X/
-EgD//6b/I//O/t3+M/9V//7+gP4d/s79iv1a/S394/x3/Pv7wvvI+3j7+/r7+lb7e/uA+6H7sPuz
-+9L7yvt0+yD7tfoE+p75sfmZ+Un5JPkT+QD54viU+Fn4fPj3+Oj5uvqX+gj68/mN+tr7Vv0T/uz9
-dP0J/df8Ff3d/dj+Xf8t/8/+xP7r/uz+kP71/dj92P5lAHYBRAHF/wX+If1j/Vr+Xf/5/+X/SP+H
-/vT96P1Z/oj+Cv6E/aH9Hf4+/sD9/fw5/JX7dvvu+2/8yvwe/Q79gvwt/Ej8X/x1/Lj83/yw/Fn8
-T/y+/AL9p/xV/Jr8EP1f/a797/2j/cL8/vu6+7T75ftx/NX8lvw3/G38+vyA/fP9G/4j/lP+Zv4+
-/h3+D/76/eb9Fv6g/k3/3P8gACEA7v+k/5D/m/+D/3X/pf8BAIMA5wDMAFwADQABAP3/FwCuAFcB
-dQFGARUBygCdAKgApgDLAIoBkgJGA2ADCwPJAt8C0wJWAhUCZAKkAoICdgK3AukC7QLqAv4CCgMA
-AyEDcQPEA+QDnQMUA4gCNwJYAqcC1gLoAggDUQOLA3QDBANrAhIC2wFVAcwAowC0AOIAGgH1AGAA
-7P8LALUAYgHEAckBTgH7AHABzgF+AQYBtADfAI0BPQKcAngC3AGVAe4BywESAREB0gFJAloClwID
-AzcDJwMOA+QCqwLEAgID1wKJApkCEQODA4ADQQMsAz0DfAP5A10EUQQ1BGIEcgQ4BMMDGQPHAh8D
-sgMVBCgE8AN/A98CMQLoASUCQgLSAWcBXwFmAWMBVwEOAbEA9wAVAiwDjQOAA2wDeAPsA7gEbgW+
-BboF0wXoBbkF/gUaB/YHuwcEB7IGBQelByUIXwg5CB0IwAjOCUkK7Qk0CasIrwhDCe4JMgoSCoYJ
-cwiGB1kHqgf+BwsI4AesB40HZQfZBuUFOQUiBREF2gRxBL4DEwOJAiUCBALhAWsB1ACWAJUAYADp
-/zn/g/7C/dP8VPw8/MT7SftR+3X7V/sw+037U/vB+t35b/nA+Tz6UvoL+qb5K/nI+Mb4Efla+Wn5
-Hvmg+Iz49vgb+fD4BPlW+bn5/Pn5+dn5yPnA+Zb5Pvkj+UX5Ovky+Xz52Pns+cD5t/nx+T76jPrj
-+jD7ZfuY+/P7hPz+/Af9wfzU/KP9d/6F/kT+Wf6L/rb+6v4d/2n/if86/x//f/+r/5n/wv/k/7//
-uP8TAMUAeQGrAS0BbwD2/yEA4ABQAfsAWgD3/w8AXwBoAE4AdACeAJEAfwBGAMj/Wf/R/uL9PP1R
-/cf9EP6M/Wr8kvtq+8H7Hfw2/DD8Fvzc+6L7avst+w770/pp+nD65/rk+mz6G/qp+Qz5tvi++Bb5
-ffmi+Zb5evk4+eD47vhu+ar5ivmR+bv51PkN+lr6fvp1+nX6ufoP+3X77vsH/ND7wPvb+wn8QfxG
-/Bb8Ffxe/JP8z/xc/e39R/50/r3+Wf+x/3f/Pv9Z/6j/6P/i/9T/CwA6ABcACQBjALQAsQDiAGcB
-iAEgAe0AEgEKAdoA4QAsAYcBvQGyAZUBkwF1AXABwQEPAkgCowK4AhgCUQH5APAAAAFIAbcB0AGL
-AWMBjQHUARACLQIMArUBZgF4Ab0BwQHWAUQCogKeAhsCbAEoATEBGQH1ACAByAHYAn0DvgJQAaUA
-zgAgAWABgwGiAdsB2gFHAVwApv+4/5kAmwFBAlcCxgEfAe8AEwF7Ad8B5gEEAlUCSwLbAWgBAgG0
-APQAywGOAroChQJnAlECMQJJAnsCxwJAA7sDGAQRBI0DEAMOA0QDSgNVA6MD8QMEBNQDiQOKAwIE
-kAS3BGcELgRwBL0EngQjBLEDqwMGBBsEmgP9ArIC5AJXA0kD8wI1A4wDYgMeA9QCUALKAZABxAEu
-AlUCNAIaAicCbQLYAt0CZAI3AqMCTAO9A6YDVgMuAwUDxwKbAqsC3ALCAlEC1wGAAUUBBAGvAE0A
-BgAfAHUAgwAtAL//bf9d/6T/HQBbADkAAADD/37/Vf9J/3D/yf8MABoAJQBdAHkAMQC3/2j/Jv+k
-/ij+6f3C/X/9K/0V/Un9bv2Q/dP90/29/Sb+nP56/jv+g/7z/tn+a/5n/sf+/P4q/8L/UQB0AD4A
-3P/I/0oA9gA/ATQBVQHMASwCEALUAewBJwI+AiYC9wHtATMCqgL/Av0CzwLeAicDBAOMApUC7QK5
-AvsBawGMARYCUALwATYB0AASASsB7gAkAYkBlAFhAfsAqACnAIEAHAAbAJAABgEuAcsA+v9M/zH/
-ZP9x/1z/Wv9Y/zb/EP++/hD+df1I/Vb9WP1t/b396f3P/cj97f0w/nH+vP4v/2T/Hf+s/l3+g/4x
-/87/yf9G/93+3P4q/33/mf9//1P/Zv+i/4r/JP+0/lf+Bv7R/Rv+3P5S/xH/g/4n/jn+w/46///+
-q/4C/4v/w/+W/wX/l/6Q/mf+4f13/Vb9Nv0v/XX9e/3r/OT8KP6q/08AEgBA/2v+Q/6O/t3+B/+u
-/vD9i/2y/eP9iv2h/Bv8y/wc/sf+Lv7g/B78lPxz/c/9yf18/az85fvh+278r/wY/Gn7l/uN/H79
-Vf34++36Mvsg/NL8jfyY+0P71Ptd/Mz7LfpU+Vr6svu4+xr7IPsR/Fz9Ff6o/R/8xfpe+9/9JABg
-ANL+Gv27/NP9+f7P/rL9UP2O/j4ALwBZ/j/9LP7N/84AnQHdAmcDywHj/iz9B/4AANYArwApAZgB
-MwAI/jz92v3r/iYAvQFsA2cEXAMWAFH9ev1w//kAcgFGAUMBVwFvAM3+7f1v/pH/hQA3AQoCKANR
-A5kBsv+4/x4BFAJOAqECSwN8A1gCfABG/zf/xP8ZAGAATgGSAq8CwQB6/l7+PgDfAVsCpgIrAw4D
-gwFl/+P+PADpAPf/ef+0AH8C5gInAez+gf4jABUCyAJSAqoBOQHxANAAnAAbAP3/7QDxAe4BegFS
-AV0BhAH2AdICHQPGAQAAEABQAp0EqASiAgIB+QCjAVwC5QLKAhwCrAFHAsED6QSmBNMC+ABSAcAD
-rwVpBdgDAQOSA2AEMQRDA9ACUQMtBOoEHwU+BOgCYwKpArECAQKXAZUCOQSuBDsDMAGMAJQB1wL/
-AiACVAF9AWACeAK2AEH+bP14/9UCVwSdAmj/1P1L/8IBNwK1ANv/XQB6AFz/6v1X/ej94v6c/w8A
-mwA/ASoB8//V/gv/DgD9ANABkwKdAkwBKP+0/eX90P5q/z8AowFWAgcBYf7T/Lz9HwAUAmgCjQHp
-AEoBGQIwAkEBHwAJAGIBtQIkAiwATP81APIAlwA9AGIAsAAjAZsBxAHaAQ0CFgL0AfMBIALbAWwA
-V/6U/XH/XgK/A6MCZwBC/9v/RQGOAh0DDgMHAxkD8QJkAhcBcP8M/7IA/QKeAxUCZgB1AOUBqAJy
-AZP/LP9NAKcBvwEFAPv9X/32/Ur+vP1K/Rz+7//lAHT/zfzT+1H9Jf9T/zT+6vwi/Kb86/0M/i79
-J/0I/qf+ov4n/uD9HP46/pz9bPzV+9v87/43AJb/Iv60/Zb+eP9I/17+n/17/db9Hv72/Zj9Gf2r
-/AX9vv2O/bv8vvzV/er+LP/S/m/+I/5k/Xb8YP35ACAE/AKt/tn7n/xU/yoB3ACi/4b/oQBrASwB
-OgDW/nj9qv0rAOsCsgOXAkkBRAGfAXEAmf6a/mkAdgEIAGT9OvxW/fX+C/+b/Tz8FPz0/BD+Hf/9
-/73/3/0P/Gv8kP4LAJH/K/5d/ej9gP+hAPT/sv1s+8D6DPwV/lL/Ev9u/an7rfvP/eX/v//K/RD8
-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
-h/9MAZMCDAKuAL4A1wKuBKwDaQBD/nv/GAKjAicBagDfAa4DJQN9AFn+iv6OAJsCQAPuAYP/Jf60
-/vH/UgA//9n9/f2n/xcB7gBn/0D+1f53AKYBpgGFACj/Ev+aABECjgFC/7L97P6YAa4CGwGQ/pn9
-+P7lADABVv8x/ZX9jwAdA/kCpABs/gP+LP92AHcADP/Q/Vf+YADbAbgAeP0S+wj8WP+oAUIBVP89
-/tP+jf/d/iz9b/w6/q4BoQMUAp3+MPwn/Mv9dv8YABYAJQBjAEYAu/4M/NP6JP1bAY4DSAKY/+H9
-5f0H/10AKgHEAEX/Jv7i/pgA/QBW/x/9UfzV/cMAjQK/AaP/Xf4I/6MAQQFJANb+eP52/6oA8AD0
-/4r+Rf6v/xwBbgA8/ir9Qf4eAP8AgACT/+L+Gf40/V39q/5y/2z/lP+m/x7/Uv7Q/TL+Rv/g/8r/
-t/+n/3P/I/9k/pz9I/4QAE4BdADn/pn+Fv/Q/hH+ef4uAIYBHgFM/6v9aP1w/tD/SwCn//3+Gf+f
-/7P/M//c/vf+K/8t/yT/cf/E/7n/u/8+AOQA2gAQAG7/mv80AIoAYAAZAI0A/gHXAnoB7v5u/dj9
-Xv8+ALj/GP+Q/3IAbABH/xr+Mv6L/wQBGgJ8AnwBmv+s/nH/VgAfAG//E/9H//j/ewAYAEf/TP8u
-AO4AJQH2AK4AigCDAMoAVAFkAdIAiADyAGgBVAG5ABUAKgD1AMoBXgKBAgoCWgEBARwBEwGGAAwA
-iQABAi4DzQL7ACr/5v4OAAsBMAH2AOEAawEbAtEByQDT/zD/ef/TANoBgAF9AMP/hP+I/7D/BgAx
-AD8AzACYAeEBdAGxADgAKQAmAIsAswGJAhkCGwGlACsBXwL3AvUBmQDYAGoCXgOXAt8ANgBXAc0C
-+QKyATcA4f+2AKYB+AHpAfQBDwLVAS8BsQCXACsAd/+R/54AwgFUArwBNQAj/wf/Pf9t/8f/gwA5
-AQQBJQDa/woAdf9L/jn+yv9YAU0BfgCFAGYB/wFYAd//G/+w/8EANwH8AH0A3P8u/47+TP6//pD/
-RgDOANoAOABx/9P+av6Q/kL/DAB6AIsAggA6AHf/cf7M/Rn+dP81Ac0BtgBP/57+Wv4R/uX9Hf7m
-/mYA3wHwAToA6/2q/DH90P5TAOwAQQAS/8z+X/9H/xL+J/3z/bz/wwCXAOv/bP8K/7r+r/7k/on/
-pABlARAB1P9b/o/9/v03/zYAKwBj/xT/q//9/wv/fv3D/H799P7s//b/qv+b/5L/C/8p/rL9Cv7j
-/sT/LgDr/2n/Ov9Z/2j/Uv8F/43+l/4e/1b/Nf8T//b+zf57/uT9cv2x/UP+ff5//rf+zf5E/of9
-Av3J/Dz9OP7h/sb+O/71/VL+1v7l/pD+Z/7W/pb/DgAzACEAzf9j//r+s/76/oP/lf9n/6//SgCD
-AB4Abf/H/oH+3v6t/2IAswDCAKgAVADV/3X/a/96/1n/Y//C//b/3f+N/xz/HP+Y//T/FQAcAA8A
-CQDX/3L/nv9jAGsAnv8d/xD/D/8K//j+nf4k/kb+Lf/3/yAADAAaAEgATwAlAC4AlADOAHMA+f/b
-/yEAhgClAHkAQAAdACgASQBWAGEAoQAEATQBJwEEAc0AmgB0AC0Apv8r/zz/HQBLAa4BHAG3AC4B
-rQHEAQcCawJsAiwCBQK3AeIAgv9r/rj+4f+AAHkAQwDv/9P/UgDyADgBWQGdAbYBMQFyAAoAz/91
-/zz/af/G/+n/sv9q/2n/o//o/1YA4AA5AVgBjwEBAlMCPwK2Af8AsgAeAakBiAH3ALwAEAGEAY8B
-JQHzAIsBgQLvAoECvAFQAY4BHgIjAj4BTQDh/6n/l/+k/+H/VACXAL0AKQFqATgBDwHuAKUAqAAR
-AT0ByQAoACAAmwDWAHYAz/90/7b/QwCuANsAzQCbAJUAnwBNAAIAXQC/AHwAVQC1AAYBAgGYACAA
-YAD3AOAAZgB2APIAHwHGAEYAGQB8ACYBUAHTAJ8ADwFDAeEAdABWAKYALgE8AaYAHgARADkAJgDf
-/+b/agDDAFsAx//H/xMALQD1/5f/nv9eAAkB1QBTAIAAKgF1AWkBfAHTASMCIgIBAu4B9AHYAVEB
-xwDjAJAB9gGvASMB3QAeAaIB4gGTAQwBzwDKAKQAOgDZ/8j/wf+U/1j/av++/7b/X/9D/5n/9P+4
-/zj/+v64/j/+3P3I/eP9F/5X/mz+ev62/rr+ev6Y/ub+z/6J/lj+Jf7E/Xj9tv01/o7+sP55/u39
-cP1r/b/94/2z/Zn9z/0i/mv+gP4u/sb92P1l/uv+4P5D/rv9yf32/cn9k/2f/df9Jf5I/iv+Dv4P
-/hj+A/4C/l3+Av9J/4z+k/1c/Vj9LP0X/dL8sPx0/Yv+8f63/mf+Xv6h/of+8/3o/WH+IP4k/dH8
-gv0u/mT+Zf5J/o/+lP+ZALsAMwDx/1wAFgG8ATkCiQKoApgCggK5AkgDugOSAyQDJwOCA5sDWgMl
-A24DNQTLBLQEYASRBDoFoAWNBU0FJAVaBXoFBwWlBKsEhQT+A4gDNwOjAj8CfAKFAvQBjwHHASUC
-BQJZAZsAOwAmABAA//8IACIAQgA4AM//VP8O/77+NP6v/Xv9Wf0D/aD8Mfze+xP8lPyt/En8xvtt
-+6r7avzT/J38VfxY/Jv8xfyR/Fb8Xfw7/MP7b/th+0D7IPsx+1n7lfvI++T70Ptz+yD7Fvvv+nf6
-Yvof+/b7I/zp+637jfuX+1L7wPqI+t/6m/sj/O/7cPtf+2T79/qo+gb7wPtX/MH8Qv3A/fH9FP5m
-/q/+2v77/vL+1f7i/gb/EP8M//n+2v7T/v/+Tv+D/6b/AACdANkAGwAl/xf/pv/a/53/iv/l/0QA
-NQDA/0D/H/+D/xsAfwClAMcAxQAsACb/Zf4U/iz+E/8KAOD/Pf9L/9P/DQCW/8b+sP67//4AzAF6
-AioDiAMLBHMFHgePB+gG+QZNCHUJqAmPCcQJWQosC7ELTQuBCqAK+ws+DXINcw0BDuYOwg/xD0MP
-xA50D6AQ8RBDEIMPPA/1Dh8OuwxeC+wKRQtcC8YK+glqCeEIKgjKB98HeAeTBicGGgazBcoEmAOp
-AnACNgI8AR8AsP/a/+//if8C/7H+jf5C/mX9E/zp+oL60voM+8b6O/r0+T/6evoK+lf5PvlD+mX7
-ePs0+1r7j/tT+5b6wflA+R/5Nvk6+Qj53/jr+Bn5XPm5+fz5Dfpi+iT78PuB/Nb85vyq/Lz8Nf0J
-/UD8CfyW/Dv9hP2D/Zn9+/2r/kz/Rf/f/gL/y/9UACUAAABnAMcA9QBXAdgBJgI6AmMCwAL9AtkC
-dQIKArABkgGAARgBcgCs/9X+a/6v/u3+0v7F/tn+yf6H/kz+Bf6R/Rz93PzW/AH9C/2n/Bz8sfuD
-+2f7BPt0+jv6Zfps+hX6f/kX+Vf5wPmm+Yr5q/mE+WL5i/mn+cD58/kV+gP6yPl2+Vf5nfno+er5
-0/nS+cj51Plm+ij7aftc+3P7s/vs+x38ePwO/bb9Mf6M/vH+MP9E/4L/5P9DAKsA4gDyAFEBHQIJ
-A5EDdAN3A3AExQVfBlMGiQZEBw4IhQiFCDEIEgh0COEI7wiPCAkI7QcYCOMHZQcpB14HsAe9B5UH
-dgdZB9AGvAXMBC0ElwNMA1YDLANTAvAAlP+G/gX+7/2N/fP8B/26/RP+ZP2s+y369fla+oL6U/oA
-+rL5d/kk+Zr4Nfhh+A75pfnU+Qn6dPqn+jf6dPkf+TL5V/la+e74Rfjz9zn4zfga+UP50vlD+gb6
-CPrR+uP6qfmy+Mf4Rvmq+av5UfkF+QH5ZfnL+XT55fhK+Vb63fra+vH6CfsA+yD7Vftb+2v7z/tA
-/Hr8rvzJ/Lb8G/31/Wv+qv4k/07//v4E/6D/IgA8AGEAFAHrATEC/QGWARsBtABqAIcAXgFOArAC
-nAI7AtwB2QHrAbYBWAEpAXAB1wG4ARoBYQCn/yX/T/86AK8BQwOCBMIFkQdKCVUK+QoXC+YKnQtH
-DXMOfQ4nDiIOTQ5uDpsO3w4yD9oPAxE+EikTyxP3E8YT8xN+FO8UBBVNFA8TKBKQEawQUQ/qDREN
-wAxgDHwLGQrVCDAI+gfNB30HGAfBBlQGcwVpBMADXAPvAogCRwLGAasArP84/8n+Kf5u/Zv8GPwD
-/MX7Jvts+tn5yfkx+nz6bPpZ+oj6xPrb+r/6RvqV+WH5//nC+gL7/PoB+wj75fpW+nf5w/iW+OD4
-W/nZ+Qv6Fvpj+rP6zvrv+jP7nPtk/IX9TP6d/h7/ov+R/yX/8v4H/yT/Wv+d/7T/2f9BALwA6ACl
-AFgARABmAOYAoQENAjICfQK0ArIC5AI3AykDmwLeAU0B4AA+AEf/fv5C/iT+5/2n/V/9Dv3Z/OL8
-9fzZ/Mb8AP1Y/UH9j/zR+337PfvK+nj6avqF+rX6lfoS+sT5mPk8+RH5Svmh+df57Pnm+cz51vkL
-+gn6wPmr+SD6xPrz+sH6vfr1+uj6hvqZ+h77LfsN+0H7Fftc+uP59/lr+ub6Dfsn+577+PsB/Gz8
-Q/3V/R/+rP5D/1P/L/9r/7b/uv/c/z4AnwD0ADEBXAHGAXIC/gJhA7kD2QPiAyYEbwRVBBQEIQRX
-BGoEdARvBDME4wO8A+cDFwTiA3IDYwP+A3gE8gMjA2QDbATOBDwEtQPyA70ENQXlBEAEtgN+A6UD
-ugOHA2YDawN+A48DawMbA+oC2AKaAlsCkQL7AqoClAHZAM0AnwAcAMr/vP96/8T+If4T/gT+Mv0d
-/NH7UPzO/L38Hfxv+0X7fft1++L6Kfr++Yv6QPtZ+8b6bvq4+gz78vqY+pf6CvtJ+yH72Pqe+qP6
-xvq6+sn6+/q9+oT6pfqE+oD6Aft5+5f7kvu6+xH8C/xe+7H6ofrr+uL6gvp7+tv6D/sN+wj7+PoQ
-+2D7avtC+6L7Q/xe/A/8vPuS+9v7Zvx0/D78f/zt/Pz8zfzo/JT9Yf7D/rz+nf7N/kb/jP9g/wH/
-4v76/u7+yf7k/nD/EgADAFv/Tv8fAMYA3gDqAO8AsABeABMAzv+5/7X/kv97/4f/1v9hAKAAPAC7
-/7X/7f8RACcAKABQALoARQEMAiIDbwTtBXMHugiLCfcJgAqSC6oMAQ3aDOQMFw1UDeANkA7KDp4O
-sA5lD20QNhG9EU0S3hJoE+8TdxQUFXUVUxXGFO4T1BJ3EQwQrQ4WDZsL6gqOCqMJSghnBxsH+QbK
-BjUGhgVRBWYFVwXYBP4DUwP/AmwCbAF7ANj/Vv+k/sb9E/16/N77qPvW++j7wvtz+xz77vru+jH7
-e/s6+7D6mfrQ+qT6C/pw+QL5zPiZ+DL4rfdP90L3SfcR95/2TvY+9mf23vZp99T3VfgC+bv5hvpS
-+8v73/sZ/JT85vw1/cT9IP7i/Zz92/0M/qj9Sf2p/bT+yP9NAH8AIgFLAhID5wJZAi4ChALfAtkC
-iwJvAnYCTQL5AVoBjwAPAMz/Uf/L/qv+pf6Q/qz+2v7B/lj+3P2V/cH9Lv57/pH+kf6n/q/+Of5Y
-/ZL8OfxQ/If8X/wa/Bf88/uT+0n78frD+kX7yfus+5H73fsd/NP7Uvte+9P7DPwR/Bz8Cfyn+z/7
-7/pv+hb6OvpK+tb5jfkw+jT7tvu++9T7Kvya/Dj9B/60/ir/jf/M/+v/CgAZACIAUgC1ACcBfQHW
-AVoCyQLeAtcC+gIiA1gD8QOyBCsFbAWcBaIFgAV2BZ0FlgWUBQUGfAbABiUHaAfiBvwFpgWkBWgF
-TwWfBSkG0AZDB10HFQdFBnAFAQV+BOwDBQTMBH0FewXSBDEE5gOuA3oDdAN4A/wC9wH8AD4Aov8s
-/6b+0/0d/QX9M/0B/Xv8A/yr+0v79/r8+kb7bfs5+6L6y/n/+Hb4Gvj49/X3zffT9z74ifhq+BH4
-0/cF+FT4ovhc+RD6H/rl+eD57/m4+W/5gPm3+bn5tPnk+f75v/ma+fP5dvq4+t76IvsE+0P6xfkD
-+jz67vmV+dD5hPr2+tX6lPqG+rz6MfuP+6z71fsj/Df89PuG+wH7jfp2+qz6/vpj+8b7JPxc/Hv8
-5/xx/X39Lv1l/Vj+A/93/l/9I/3S/Vf+8/0J/cv8gv3v/bz90P0w/in+wP2K/dr9m/5f/77/pP8E
-/0b+Kf6r/gn/wf4w/ub97P1y/n7/KQDn/zX/1f5J/y4AigBGAAAA+P8kALwAFwIWBCkGjgcpCAoJ
-9Ar7DOoN9Q0LDn0OAw9yD6APWQ8MDzMPkA/PDw8QsxC9EcYSjBNJFEAVKBaQFnMWBhZqFc4UCBTY
-EpsRehA9DxcOFA0zDMoLngsPCygKqQmnCXMJCwnICIoIGghyB6UG/wW3BTQFJwQbA18C4gFqAbkA
-uv/E/jX+ov3S/Dv8E/wO/M37TPvX+pH6n/rt+uT6QvqC+Sb5Ivkf+fv4uvhv+BP4nvd597j3nPfn
-9hj2lPVg9Rr14/Rq9Xf2PffR96n4tPne+vz7hfx+/FP8Rvyh/An9x/xI/Gb81fzR/Hf8WPyJ/PP8
-sP2o/qv/tQC1AVkCawIfAtYBBgKhAvYC6gL6AlEDnwN/A/ACTwLfAbkB4gEPAgcC5gGuAXYBWgET
-AacAjgDlADUBKAHuAOsAEwEBAbgAegDz//H+d/7p/hX/oP48/sH9Ff28/Ln8sPxt/Ar8CvyJ/Nz8
-2vzz/CP9R/18/bb9qP1Y/Sv98/x5/BH82fui+2H7L/sT+zL7lvvi+/f7Gfx2/Mj8yPze/Hr9OP5/
-/rL+VP+v/0v/A/9P/2r/CP/R/g//kP82ANAALgFtAbcB7wHrAfMBZQImA7IDygPzA2QEcwQmBCoE
-NgQ2BCQFrQb1BpgFtQS9BTwHTAcDBr4EbQT5BMIF9wUCBYgD7AJsA0MEBwWSBYAFzAQMBIcDlgNC
-BGMEOwPLARcBowDc/wr/Vv5F/dj7R/sC/M38rfz7+1r74Ppj+gL64/nw+Rj6Nvrc+fz4Efh19y33
-9/bi9hD3H/f99u329/bm9qH2q/bf9n32TfYj9wb4Vfh++MT4+vi5+ED4bvgo+VD5uPhC+Cz4Gvgc
-+In4+Pj1+Av5gvmp+Sz51/go+Xn5R/n4+ED5C/qx+tv6p/qQ+tT6G/sW+/f6KPuj++771/tw+wf7
-Mvvt+3f8cvyd/Ib9Mv72/b/9Df5k/nj+Xf4O/pD9Ev2q/Mr8Zv2N/Vz9aP1Q/Uv9H/4X/x7/a/7+
-/af+of9V/yf+6P2o/gj/xv65/vj+1v6Z/uz+f/+r/3P/Yf/G/3QAuQBBAM//tf+g/73/PwCjAGEA
-//80AJsAfQBPAOgApQF7AQYB8AF1BLgGiAe6B4AI+glGC9gL6gsSDNIM3w2aDtkOEA+8D10QWhA0
-EHMQFxEREuwSXBPwE/MU4hVlFn8WGRacFVYVwhTAE9wSChKUEPEOaQ50DtMN/Qy3DJAM8ws3C7IK
-Hwq6CcIJoAn4CDkIvwdoB+IG/wUGBVoE8wNFAysCRQGaAK7/gf6G/Rn9yfwk/IP7S/tX+2/7e/tO
-+/z6xPq6+oP6uvnz+MX4yfhN+Gr34Pbo9h33Mffk9n72s/Ys9xX3sfbB9lP33PcJ+C343fjg+YD6
-d/o3+qj6wPtd/EP8G/w0/Iv84PwN/Tr9if3q/Vn+5v6W/4MAdwHbAQMCpQJSA2YDRwNhA4UDeQNP
-A1cDrQMKBCgEBwTTA5kDSQPzAq0CeQJ7AscC3gKAAkcCPQIzAkwCEgJrARABJQEHAZAAFwC3/5v/
-lP9A/+z+/P5L/2//LP/J/qL+pP6d/lz+5/2U/Yj9fP0X/VX8zfvn+zP8QvwJ/Nb74vvE+2D7Gvv3
-+r36bvpH+jj68Pm5+Qb6aPpm+lP6ePqx+ub6EPtA+3H7Xvth+837NPxe/Iv81PwQ/VH9u/09/r7+
-Mv9o/0j/Z/8VAOAAcwGxARACfANwBfQF6AR8BKsF/wZAB5QGaQWtBDsFcwb9BmsGygUYBuUGcgem
-B5wHaAdVB04H8Aa1BiYHiQe2BvsE1wOcAw0D1AHKAOb/wf4P/jj+Uf6h/bX8Svw//CL8zPtO+/T6
-4Pq7+hP6+vjt9wv3SvbJ9bH1zfWD9d30pvTr9AT19/RA9W31EPUe9f31vfbL9o32lfam9j72svWk
-9QX2VPY89hz2qvac9xD4CvgB+Az4S/jZ+Ab5SfiC95P3NPiR+Cr4cfdd9y/41/iI+AX4KvjN+Ib5
-Sfrk+g77G/ur+5T81vxu/Gf8+vyQ/dn9DP49/jr+LP5L/pT+u/6p/vf+iP9z/yH/RP9R/z3/Nv/A
-/kv+nv41/3H/mf+3/5X/ff/N/zAA4P/w/on+6P4K/8L+u/4G/yL/sv4w/oD+SP+W/5b/AQDgAIMB
-jgFuAYUBcgH1ANEAbAEEAt4BEQE2AL3/yf8ZAD4AHgAJAIUAmwFeAiwCjwFZAd4BpQITA9YDtAW/
-B60IfggzCNcIVApDCwsLyApJC3wM6Q2VDiAOeA16DQ4O0Q7VDw0RBBLsEmIUHhY9F5oXpRdwFyEX
-yxb9FdoUwBOvEsMRxRCID7UOpg7MDrgObw4aDucN0A2nDVIN1AxCDKYLKQu9ChcKGAnVB5sGpwXg
-BBAEGgNcAigCCAKDAdIAHgBI/7z+kf4q/s39F/6R/rT+a/60/ev8KPwl+xf6ZPny+JP4Yvg9+Az4
-BPg/+En4kven9lv2mvbf9vD2APdk9yP4t/jf+Ab5efkF+lb6Yfp/+un6dfvD+7H7g/ul+y/8pvzE
-/Pr8kv1M/vn+jf8HAI8A/QAdAScBSgF9AbUBGwJZAgsC5QE/AnACMQLHAXEBWwFkAVwBZQGPAbYB
-/gGqAi0D7wKXAq4CvAJ8Aj0C/gGlAW0BRAELAcwAnwB7AC8A5//a/+r/7v/s/9D/lP94/3H/Hv93
-/qX9xfwv/An8BvzY+5b7n/vm+9D7c/tD+9v6CfpS+Sv5m/kK+vP5hfk3+S35VPly+Uv5DfnB+I74
-/viW+cz5+/kB+sb58vnJ+sL7VfxY/GD8Pv2T/pP/AgDB/zX/bP+vAAsCRwJ8Ae4APgE1AkcDywOR
-AxwD/AJGAwoEGAWSBQUFNwQpBMgEhAUdBvAFggTqAmkClAJcArIBFgGrADwA0v/U/wAAyP+D/1f/
-+/7N/uX+nP7i/Ub9t/wL/HP7w/r7+VD5nPge+Df4QfjN95H3kvdK9x73R/dR9/32gPZN9m/2mvbK
-9s72PfZ09S/1avW49cn1VvXA9L/0QPW59d711/US9mf2T/br9cT1A/Y99lL2avZZ9kb2yfax9xz4
-1PeO9+73e/id+JD4sfg2+eL5E/oI+lf6qPq5+uT6I/sx+0b7v/tg/Jf8tvw7/ab90v36/dr9pP3k
-/W/+0v7t/sX+lf7a/n3/qv82/+D+8f4K/wT/GP9f/7H/7v8AAN//uv/B/9f/3v/U/6j/kv/l/2kA
-mwBQAOz/JwA1AVMC1gL1Ag4DMgNfA3UDDgPfAcQAsQAuAUgB/ADqAH0BiAJGA5IDxQPWAwcETAQW
-BKkDwwP7A2wDigIrAkECsQIuA2QDyAPJBHcGhAjECcYJCAqfC4gNRg7DDVIN7w0zDzYQUhCvD2MP
-LxB3EVkSoRKcEtkSmROvFMAVeRYCF6QXIBjyFx4XMBY8FSQURhOZEqsRrBATEPkPEhDkD28P9Q5q
-DuYNpA15DSkNhAx4C0UKOAlhCGMHJQYzBYwE0QMwA7kCcwJ8AloCugElAbUA+/81/9P+qP5//nX+
-SP6X/a78Lfwd/NT70vqI+QD5Xvnb+dn5QPmt+LT4EPkB+Sz4C/eN9t/2Mffd9jb2DfaW9jb3ePd3
-95L3Pvg8+dP5Bvoq+oX6H/uH+377NPs2+9T7i/zg/An9Pv2M/UT+TP/o/83/jf+o/9r/uP9j/3P/
-MAAIAYcB1QHgAdIB8gHsAY8BKQEHAf8A1AC8APsAYQF1AT4B/QC8AKgA5gAxATAB6gC/ANcA8gDN
-AI4AfgBZAOf/j//F/1AAjwBcABoA8/+c/wD/Uv6+/Vb97fx3/B/85fu1+4H7UftD+yr73/qm+lr6
-q/kt+Vj5bPn6+K34sPic+JX4yvj5+AH55/jP+CX56/le+kD6TfrM+jD7aPv0+5z8Af2u/aT+C/84
-//L/6wCIAY4BOQEAATsBqwG2AWsBbAEAArcCDwMeA0MDnwMZBIYEoQSLBN4EaQUhBQ8EZwMcAzoC
-GAGUAHwA8f8M/wT/l/9t/9X+Ff/U/4//cf7W/aX9E/1L/JH79fqJ+hT6cvn1+M/4qPhC+AT4R/iN
-+FH48/cP+HP4U/jR96b3v/eL9xr3Hvdj9xr3f/Zd9rP2x/Zr9hL2E/aF9gP3FPfY9sX2A/c99x33
-1vaf9lz2IPYI9sf1R/UP9cH18PZB98j26/bA9y/4C/jz9wn4Hfhy+DX5nfk6+Qj5cvm1+cv5OvoI
-+/D7rfwl/Yb96P01/of+zf67/nX+gv7t/jz/Sf9h/6z/+f8uAH4A1wDqAMYAqwCdAJkAlwCQAKYA
-twB9ACoAJQB3AOYADQG3AGIAqgBDAXYBNwH5APwAPwGHAXABRAGTASkCdgJ4Al8CVAKlAg8DAAPF
-AqsCFAKGASACNgOBA8MC0QHLAY0CAwMnAzcD5wK2AhEDYANoA5UDAQQ3BPYDgwNzA2sEWAY/CAAJ
-sAjfCEcKAAw0DYoNOg0FDWQNdw6mDwkQvg9/D9oP3RD1EcgSehMSFJAUGhX1FRAXFxjRGMoYvRdp
-FpsVOBW+FM0TihKJESARSRFxEfkQeBCsEMEQ6w/hDkcOBA7zDZ4NtgycC7QKIgrFCfIIbgcwBsUF
-eAXkBGcEJgTUA4MDfQNUA6sCEgLRAWUBvgAHADz/mP4m/p/95/wW/Er7ufqG+lT6rPnJ+In4HPmx
-+d/5pfnm+A/4cPfB9uf1EfWP9J/0KvXH9Sz2g/YO98T3A/h69x33svet+FL5mvmN+Sj52Pj4+FH5
-bPk1+TP55vn5+tj7gvwo/bb98/3o/RX+vv6C/yYAsQDuANkAzQDuANwASgB8/9/+ov7D/h3/d/+4
-//n/UgC9AAIBFQEsAUIBRwFtAXUBFwG6AH4AAwCR/3b/Z/9p/2z/GP+J/lD+p/7j/qH+Y/5R/u/9
-Qv0U/UL9yPzq+5L7kvuU+7X7yvu5+5D7PfvT+mz6CPqq+X35hflN+d74mvhU+Pb3vfez96f3kve5
-9yb4pPgR+U75cvnX+Yj6DPs5+yz7MvsF/Kf94P5u/uz8i/w2/nYANwEOAJP+X/6g/0YBxAG1AHf/
-iP/2AIkCZgOFAxgDfgI/ApICYAOpBKAFuQQhAioAAgBEALr/yf7h/f38svyg/eX+PP/K/nH+f/5r
-/uH9Zf1N/Tv9qfyp+wz7O/uD+xD7BPpX+Yn58/n0+dL5xvmR+YL5Nvrb+h36vPiD+Dj5avkT+eH4
-svg7+Nf33/cE+Ab44Pd79x/3UPf69134HPjJ97/3p/eG95b3U/eB9uz12PXb9dL10/WJ9uX3bPjr
-9/j3/fjk+Rb6wfln+Zb5F/ot+tL5gvms+Xz6gfsj/HP86fzH/cr+dv+k/53/vf8HABMAtf+J/9b/
-HgBOAIEAdwB5AAsBuwHNAWcBPwGhASoCVAIOAsMBvAHYAQEC7AFmARkBeAH/AQsCkwEuAXkBNgKY
-AlQCFwKpAp8DDATeA6EDqwPlA/IDwQOWA40DnQObA1cDQgP5A/AE4QSiA7YCWwOfBAMFggTDA0sD
-kwNJBH4EAwRqAwsD3wL3Ai8DKAMAAywDxQOPBIIFsgbnB58I7AjYCbsLRg1QDWQMDAz2DEsO9w6s
-DvoN8w3hDvIPghCwEN0QXxFREngTaxQ6FVIWDhdMFpgUXxMZEyQTxxIAEisRZBDrD1wQOBEsEVcQ
-xQ9+D/gOSA7nDbYNIA04DG4LhwqhCUQJAglZCM8HzQeuByMHtAZoBhYGvgUlBUAESwN4AvIBqAEp
-AUwAhP88/yD/cf5W/a78nvyd/Ev8lvv6+vn6NPsO+2T6lPn2+Bv41Pba9Tz1kvQO9KnzL/NK80j0
-NfW69RH2P/aw9nH3xfeC9yf33PaJ9kP2LfYn9h32fPY99+n3f/hE+Vz6kPuQ/DX9bP1p/Yb9vv2m
-/Tz93vzJ/Mr8l/xp/Iz87/xf/cn9E/77/cj9Ef6y/hz/Qf9t/6v/9v8zABQArf96/5r/k/8r/+v+
-L/9r/3P/uf8WADgAXgCMAGAA/P/B/7T/mP8d/1L+nv38/EH80vv3+x78C/xA/K38xPyb/L383/xL
-/FL7wfp7+if65PmE+RH59Pjw+OT4Gvl++e/5Xfqc+sf6K/ug+8/73fvF+3P7TvtD+wb76foy+4H7
-b/tj+xn8eP16/pr+WP5n/kP/cQDDAAAAP/8q/1n/j/+9/6f/a/+A//L/jgAnAb8BrwJDA2gCFQH0
-AIwBiQEAAXcA2/8t//T+Uf+J/0b/9f7K/qz+rP7T/hT/MP/Z/kf+vv08/dr8ifwZ/K/7rvv8+0D8
-a/xj/Df8C/zd+9n7z/tp+wb7UvsJ/C38uvtj+zb79vqp+lj6Fvrw+Zn53vhW+Ij4yfhw+NH3dPeA
-94f3NffU9p72e/aA9tX2EPe69nH2/Pbq90b4CfgO+J34Hflo+dH5HPo6+oX6uPqw+sT6OPvp+3H8
-u/z0/FX97v2a/hH/Gf/k/r/+w/7Q/tH+8P5J/5H/ef8w/0L/7P/PAHUBlwFQASoBfwElAocCMAKJ
-AWABxAFbAs0CswJiAokC4gKyAkYCSgLBAlgDlwN1A6IDPwSvBKMEQwTTA4sDswMYBPUDRwPtAk0D
-0APoA+MDIQSOBPMEFQX+BNkE6gRnBb8FIQUMBOkDygRWBQsFfAQZBB0EkgQjBWUFRQUKBQMFZwU1
-Bv8GWQdXB1AHsQeyCNgJnwroCsMKvQqFC8AMPQ3ZDIgMmAz7DN0N0Q43D0sPhQ8YEA0RHhIDE4YT
-cxO2EqQRABH5EOkQiBAdEJsPBA/0DrAPRxAFEFwPzA5eDtwNPA2uDCwMdwuhCu4JgwmCCZQJMwmO
-CB8I4QewB08HhQaSBQYF2wSDBMAD4QJMAgwC6gHKAY8BIgGrADUAj//L/uP9+PyI/Bj8M/uR+mj6
-Mvrf+YX5/PhQ+Jj32PZA9tf1VPXG9GH0BvTc8yP0rvQD9eL0y/RG9Q/2k/aX9k72FPb49dT1y/Ub
-9pb2Cvei9234LPmj+eP5EPox+kP6Ovok+iv6U/p3+oH6xPpl++D75Pu5+5v7uPsu/Gj8+fuF+377
-nvvU+yX8RPwj/GX8HP2E/aj97f02/p3+L/91/3T/l/+w/4r/gf+G/1//V/9W//H+nv7e/hn/pv4T
-/mj+j/9lADAAi/93/9H/ov/C/vH9jP0s/YH87fu/+677p/sG/Pz87P0j/tL9lf2o/WH9OfzW+hj6
-/Pn8+RT6gvo5++P7Kfww/Br8zfuj++L7O/yc/OL8vPyo/N78yvxE/I/7GPuF+9b8D/6O/rL+9/6j
-/7IAWQEAATEAsP/Y/1sAnACYAIIAeQCHAKQAHAEFAnoC6AEnARgBfAGxAaUBlwFcAcEAQQAwAD4A
-LgDg/3P/e/8YAJoAXwC8/2f/Rf8e/wf/5v6x/mr+EP7P/cf9sf1k/Tz9Af0u/Fv7hfs//EP8pvtQ
-+3r76ftX/Hj8O/zo+6r7gPt7+zz7pfpD+iD6Avr2+ez5u/lt+Tj5K/kz+S/5GfkK+f349/jo+NX4
-9vhG+ZD5uPm3+c75Ffpd+nb6PvoW+mf69/pj+4z7ivuX+wD8t/w9/U39QP2E/RX+l/6y/mv+KP44
-/nv+ev4w/nX+f/9dAJ0AoQCKAHYAmACbAGEAFACy/4r/6v+IAA4BPAHfAI4A5QCTARgCTAKFAgQD
-ewONA24DnwMUBGQERQQSBHUEOAWwBbMFUgWyBCME6wPzAw4EUATMBDoFKwW6BH8EnQSeBDkEsANp
-A58DbQRoBcUFMgUwBKIDqwOaAyID4QIgAykDywLPAlwD3AMdBEIEmASoBUUHWAijCBEJ3QmeCh8L
-AgsvCpgJIwpaC0IMlwx9DC8MTwxeDdAOqg/QD94PFhBJECIQrw9GD94OSw6qDUgNJw1SDecNPg7H
-Df8Miwx1DGgMMwzIC0IL7graCqkKOwrjCdEJ1wmhCeEIwgfjBogGVAYMBtgFjwX5BHoETQQsBCkE
-PATfAx4DZAKiAZoAav9T/mv9xPxL/Mr7eft9+2T76vpp+gr6l/k3+SX5EPmU+P73tfeU9273U/dG
-91j3rffz98f3XPcQ9wz3GPfa9jr2vPUH9rT2+PYN95b3Xfit+KD4wfgM+U/5h/ma+Wj5Gfnx+AX5
-Hvn++Oz4IPlm+af52fn/+TT6Z/p3+ov6tfq9+uH6ivte/N387fzP/AD9YP1d/R39DP0K/QP9Nf2S
-/df9CP58/kv/6v8BAPX/GgBpAJwAiQBhAEoAKADj/5r/af8z/wH/Av81/13/Ov84/53/zv+b/0r/
-Fv/9/q3+IP6e/VL9Jf3x/ND80/z0/CT9Sv1M/VH9o/3v/ef9xv2Q/S791Py4/Kf8fPxM/Cb8RvyZ
-/Mj86Pwy/Yj9+/25/ov/CwAZANL/p/8DAKUAzAAKAOX+Wv7D/rn/bABmAAwACgC3ANYB2QJnA4cD
-YgMQA8ACmQKCAmcCLwKtAeEALgADABIA/////yYASwBwAJoAxAC6AGkACgDO/8T/iv/n/mz+LP7C
-/W/9Vv0T/cv80Pzs/Aj9Rf2f/dv9sv02/d38Ff1//Wn9AP2+/Jv8Zfwl/P771PuK+1z7aPt4+4H7
-dfsm+9b6o/pG+gb6Efrt+Z/5fvlf+f/4xfgJ+VD5Tfk5+Sr5JflW+d75bvqM+ln6Lfog+i36Pvo4
-+hf6Bvoi+kD6iPo2+7P7vvvj+xz8Rfyx/B/9I/0p/Wf9lf3G/fj9GP5l/qz+jv6B/g7/sP+c/zf/
-Q/+l//7/GQAaAFIAxQAXAR4BQAGmAeABxAGpAdMBMAKoAh8DWwNVAyYD9wISA2gDtwPMA4QDSAOP
-AxQEXARfBHIE3wRgBW4FPgVBBWEFZwU4BdoEaQTzA4gDeAO2A5UDCgOIAh4C7AEWAm8C4gIpA+UC
-lgK2AtwC7wJNA7wDCgSQBF8FLQbIBkMH9gfXCEcJLwkECfsIMQmzCTAKfArpCqQLjQyYDYwOQw/B
-D74PRA+/DlAO8w29DZQNNA2aDDEMJgw7DFsMdAxIDOQLgwsdC5UKAAqHCTIJ4giPCJoIFglnCUAJ
-7AiVCA0IYAerBusFYAUNBcQEbQT5A7sDIQTRBPoEwgTeBC4FEQVxBK0D1ALZAfkAKgBJ/3r+7P2y
-/aT9f/0m/ZT8CPyf+0v7CfuG+tH5WPny+Gr4+ve/96n3y/cE+AP49Pc6+JL4hvhI+EL4V/g4+AT4
-//cg+Er4e/iY+HD4Mfh6+DX5afk0+T35Q/lf+Zf5jfl8+W35Xfmk+SL6Ufoe+hf6X/p3+kP6B/rN
-+an55vmN+k370Psw/LD8Kv1m/Vn9PP1K/Wv9r/0e/nb+n/6//s/+xf7I/u7+Sv/b/3MA0wDPALsA
-GwGiAaMBVAEsAUcBiQGgAUQBfgAIAEoAigB5AEoA0v96/7D/wf85/6b+X/5Q/ov+wf6F/jH+Lv5o
-/qP+k/4x/v79U/6u/q7+kv5//jL+3P0V/rX++/7i/uT+FP+V/2sA0QA8AED/yv45/wsAZgAdAOH/
-/P8WAAsACgBXAOsAMAHNAGIAiwA9ARECIwI3AUcANADcAEQByADK/wj/4/4t/13/If+b/h/+BP5p
-/u/+E/8J/1H/sv/k/+P/xf++/6X/G/9X/uD9uv2u/ZP9Lf2F/B/8gPxb/dT9jP0k/UL9pP3d/e79
-yv1O/c/8pPyn/Hj83/s7+wn7Cfva+rT6x/rh+tn6vvqr+rP6zfrk+u/69frr+qj6a/qO+sH6nfop
-+oj5I/lF+ar50flo+dL4q/gM+Vv5Qfk5+VX5d/m6+fD5Mfqp+uv6wPqa+o/6f/qm+v769/qG+n76
-LfvO+wP8JPx8/Bj9hv2h/cP97P0I/ib+Tf5Z/kH+Uf6H/sf+//7d/q/++/59//j/hgAEATYBTAGB
-AaIBggFdAWABfgGYAZ4BjgFwAV4BkwH7AVUClwKlArEC/wJbA7EDvAMbA3MCVgJsApMCzALFArUC
-5wIgA04DbQNeA0kDTQNSA1QDWAMeA5oCVALGApADCARfBBYFAQbiBsEHcwj+CIkJvQloCfsIrAhk
-CHUI4whfCe8JrAq+CxMNRQ4nD58PpQ9xDyAPuQ5PDtgNXw3kDF4MHAxfDLAMmgxwDH8MkgyXDF0M
-vAsWC60KUgoTCvcJ4AngCcwJfQlRCVYJ7ggFCEMH0waOBokGhwZNBgUG1gXYBfAF9gXoBaMFIAWq
-BCYEcgO/Ai8CxQFxATQBGwEbASMB6wBeAPD/tf9E/4n+xf02/bP8/ftU+xf7Jvsr+xj78vrM+sj6
-yPqf+lH67Pmd+ZT5ifkC+VP4Q/iI+Gz4TfiB+Ln4Dvme+Rf6XPpi+lX6qvoW++v6dfp++sj6tfqC
-+nz6bPpB+kr6gfqh+sP6B/s5+137r/sc/G78s/z3/CH9TP2M/Zn9Yf08/UH9Bv3G/CD9yv1b/u7+
-jP8bAHoAqwDiACMBPAEkAfUAswBUAAUADwBTAHEAHwCE/0X/rf8gABQA7f/Y/8D/yf/Q/7b/c//+
-/pb+j/68/q3+bf5M/kL+L/4k/ir+Jf4d/lj+t/7Z/u/+Rf9v/yP/5v76/kj/rf/F/5f/jf+l/9L/
-UwDDAI0AAwC4/8v/HQB4AGcA0f80/+P+Af+J/woAKQAIAOv/+v95AEABqAFfAaQALQA5ABkAkP9o
-/5n/X/8K/wr/Cf8F/0//z/8OAPH/5f8gAEIA5P8u/6b+gf6L/o3+Xv7m/Wr9Zf29/cv9c/0G/ZX8
-V/xy/Lv88/zl/Ir8HPzj++37Evw4/Dz8DPzp+w78aPyQ/Fn87Ptw+wL7vPqt+pL6Ivqs+XP5XPl9
-+Zv5YPkE+dP4xvjG+PX4LflM+Xz5kfl2+U/5Ifnm+KL4bfhW+Hj4uvjw+Cv5Kvm6+G34qPjo+M74
-xfgD+UL5bPmk+Qj6bPqC+m76ePq++iP7f/vk+0n8lvzq/D39Xv1T/T39Kf0Z/Qz9Hv1e/Yr9f/1n
-/WX9wv2S/mr/4//q/87/BADOAK0B6gGIAQMB0QALAWIBogGvAU0BjgAXAE0AzgA+AZMBlwFUAWgB
-IAIkA7oDkAMtAw4DNwNxA6EDpgMqA08C2gEHAl0CjwKqAsYC/QJxA9oD7APKA8YDNAQYBQEGkgYZ
-B/oH3AhKCXIJfQk0CagIJQjcB+QHPgjSCIkJXQojC+UL8ww/DlcP3g/CD2IP7w5zDjUOAw5uDY8M
-/wsKDDYMTQyBDIAMNgwcDCoMHQz2C6YLSQseC+YKeQpQCncKYQobCvMJwwlzCQsJsAhsCPkHaQcM
-B8wGeAZHBkQGKgYOBuwFswV2BSsFvQQoBJcDEwN8Au0BkAFwAW8BRgHiAHgAFgCK/8L+6P0c/XH8
-6Pt4+x371vrC+vD6Q/uE+3P7FPvs+kH7bfsg+7n6R/rR+Zj5i/lV+Qn52/jD+PL4Z/mm+Zr5yvlO
-+rf6Cftl+4v7X/tZ+5/7svuC+0v7A/vb+gT7H/sT+xr7DvsD+zn7iPvR+zn80PxJ/V79N/0s/Wj9
-m/2c/bP92/3r/fP9Jf6G/t/+Gv9Z/6r/BACJABsBTAEhAf0A9wAJAQ8BxwCbAMUAkQAHANz/BAAs
-AB0AzP+k/87/yv+Q/3//hv9//1X/G//l/oz+P/5J/mL+R/46/lT+cf6a/s/+4v7l/vD+/v5E/83/
-IQD4/6v/hv9c/yv/Cv/1/t7+rf6i/s7+6P7m/vn+R/+x//f/DQAZACYALQBAAGQAXgAhAPH/v/9Q
-//P+J/+d/9z/6v/K/6j/3v9fAOwAagG6Aa8BggFOAeQAogCZABUAJv+V/oz+pv6i/pL+d/5M/kv+
-YP5H/gb+wP2A/U/9N/0t/RH9/PwN/RH97/zD/Hb8Gvzd+5T7ZPuC+5T7jvu3+8T7gftO+2v7pfuX
-+0376Po/+nf55fhz+B74HPgh+CH4m/gy+Tb5z/hG+Kf3U/dh9z/38Paq9kP2+PXm9dn15/Uk9kj2
-NvZH9s/2hffS99r3E/ht+L/4MPm/+RX6QPph+lH6Ufqb+tH6nvpH+kL6ifqn+mr6T/rf+sr7UfxJ
-/Cr8P/xX/F78g/zj/HT9Dv5u/mb+P/48/mn+0/4m/yX/Mf99/8T/JQDBANMAOgDP/+T/YQAbAZUB
-oAGiAQkC9ALeAxsEuANJA0MDsQNzBCcFNgV4BHoDIAORA/wD4QNkA/ECFgOeA+8DFwQuBAIEsgOr
-AwsEnwRpBTsGyQZwB18ISAnmCTAKXgpWCtwJLQmfCE4IXwjKCGgJRgo3C+oLjgxrDVMORA9QEAER
-9RBUELoPVA/CDjsO9A2EDRENHQ1jDYwNhw00Dc8Mdgz+C58LogvWC+4L8gv0C98LtQusC8cLnQsc
-C4wKFAq9CXYJHgmRCA4I7gf1B+gH3AfCB5MHYgcYB5MG8wVaBcAECARoAykDBwPgAsoCrgKXAosC
-QgKYAdYAGABD/1P+TP1b/MH7UfvP+mP6IvoC+kP6pPqq+r36Dvs/+3T7tfuZ+y37ufo9+uH5uvmD
-+Rr5o/gy+PT3CvhF+Hn4u/g9+fz5pvoL+137uPsE/DT8Nvwc/Aj83Pt/+y777PqU+kf6K/o5+mr6
-0/pT+9L7Zvzr/FP9ov3A/dr9CP4x/k7+S/4t/hX+Cf4i/mX+ef5c/pn+PP+s/4v/Of8M//D+Dv9Q
-/2H/bf9+/5L/yv/R/4z/Yv94/6f/vv+6/8D/u/+5/+L/+/+4/z//9/7k/sn+pf5P/uz9+f1R/pH+
-sv7p/kH/fP9p/yT/5f6i/lr+Bf6W/V39Xf0z/fT87Pw6/cv9QP5n/qf+Kv9x/1//Pf8S/8b+ff6L
-/sz+3v4D/2//jv9s/7f/OwCrAAABswDY/2P/n/81ALIAZwCO/yb/ev8WAJ8A+ADhAEAAvP/2/24A
-YgDa/y//u/6//hn/TP8O/4v+Jv4e/jT+/v2P/VD9Wv1j/VH9ff3S/c/9ff0m/ff83/y//I/8Ifyh
-+0v7GvsA+9z6r/p/+jP6yfl++Zr5wfmt+Yb5/vhL+DX4dPhR+NT3Pfft9g73O/dh94n3W/fx9uH2
-P/d/91P37/aL9in26PUL9mX2mPZ89i72B/Y99s/2b/fQ9/33C/gs+Kr4Ufmn+Z35YPki+Un55Pl7
-+rf60foX+3f70Psk/HT8wPwL/WH90v1D/pX+qf6L/of+jP6Z/tH+xv5b/kr+tv4I/zz/hP+5/+D/
-KwCwAG0BKQKJAqUCxwK7AnwCcwLJAhYD5AJcAhcCRQK8AngDJgRuBJUE7ARsBeUFDgbcBXkFKQUr
-BUgFUgUxBe8E0wSqBEsEKQRoBKsEugTDBCMF2QWuBqMHkQhRCd8JIwpLCnQKVArsCaIJnQmpCdcJ
-LQo3CkIKHwtZDCUNtQ0uDnkO5g54D5wPIA9cDqMNKA3fDIoMVAyADMoM5QzsDBkNTQ1JDTMNNg0v
-DRoNOQ19DZQNZg33DG4M9At8C8sK7QkvCasIbQhWCCUI6gfWB+4HCQgjCEoISAguCBEIgAeMBtAF
-OQVwBMQDcAMsA+YC0gLFAn0CNQLuAU4BiwAVAJL/rf7V/R79bvz8+6n7ZPtQ+z77IftT+7v71vu+
-+8D7u/ts+/v6ovoO+i35ivhi+Fb4Ovg4+F/4mfjF+AH5b/ny+UL6WfqF+s76Bvsl+zL7HvvH+nb6
-YvpW+jT6E/oB+g76U/qO+pT6ofrB+iP7xfst/Dj8JPwp/Dn8Ivz/+w78M/xP/Lf8b/3W/fL9Ff4G
-/vv9Sv6U/pD+Wf4L/gf+Q/4c/rn9z/0z/lH+f/4I/2r/cP+L/+z/FQDD/27/UP8u//X+pf44/vD9
-Ef44/gX+rf1e/Sf9K/1e/Zj9zP3f/cL9pv2d/Zn9gv1l/W79n/3D/dX98/3o/a/9lP2i/aj9jf13
-/Yf9of2j/bT91/3x/Sn+Qv7v/Zj9l/0R/vb+v//7/+D/uP+9/zYA4ADpABUAIf+c/n/+m/7e/vD+
-fP5U/jf/jAB1AbgBdwH1ANQALgFRARUBugAmAIv/Wf92/3L/Jf+W/u79qf3a/fr99P30/Z39GP0f
-/aL91P1o/e38q/yD/LX8GP0o/ez8hvzE+xj7Zvs1/P771PoW+kv67/pB+xH7xfpm+sn5afl5+V35
-DPm/+Cz4hPdC92/3kvc999v2zPba9vr2Nvdm9zv33vbQ9gb3RveV96X3hvep9wD4avjc+D35evmT
-+bv5HvqH+r762frr+s36r/rV+gj7I/sg+xf7WPvT+0D8ePyA/Ir8v/wg/Uz9Kv1m/SL+mv6W/or+
-kv6g/tv+Lf+H/wQAXgCvAD8BwAEHAkICiwLfAkQD2AOKBPkE8QTiBCIFaAWaBdIF1AW0BdQFIQZk
-BqgG1gaSBu8FrgUrBsMGxgZNBrwFZQWKBf8FXwZ0BuYFxgQ+BPYE1QXeBYwFigXXBW0GWQc4CNAI
-PAmXCQgKaAqACm8KGgqMCUcJWAl1CZkJCAriCtMLbQzrDLUNag6UDqQO/A4TD5wOCA6JDfAMQgzC
-C60L5gsADNgLqgupC4oLRwtTC2kLMgsFCx8LTgtqC4oLowt6CyYL9QrWCpAKMgrKCSsJaQjzBwYI
-LAj0B6UHfAd2B4UHQgeMBtQFVAXmBGgEuQPZAkoCFALHAYgBLAFjANf/yf+C/+D+JP47/ZL8kfx8
-/OH7TPsG++T6w/qO+kz68vmk+aX5sPmW+Z/5qPl4+Un5N/kp+SH5LPkx+Tz5Yvl0+Xf5ivmJ+Vb5
-EPkW+Vv5efln+WT5lvnL+c75yPnn+er5rvmF+XX5QPkY+Tz5evmi+cn58vnv+fr5bfr1+hH7EvtK
-+4X7yvsh/FX8UPwo/Cf8ePyy/KX84/x2/aH9Y/19/fH9Ef4A/kL+if6J/oL+pf7h/gL/7v6c/lP+
-bP7O/jj/bv9F/8X+Y/5b/mz+ev6L/p7+tv7a/sr+ZP4O/t79gv0H/dL88PwY/Tb9V/2X/dr90P2V
-/Zz9H/6O/kz+2v0d/hL/n/9E/77+Zf4z/n3+E/9E/+L+UP7V/aH93v1g/sD+vf6e/gz/LQA4AX4B
-NgGoAPX/eP9h/1z/G//c/rT+jf6w/iX/dv9X/+/+ov64/gP/Ev/u/tX+xf7K/vD+HP8+/zD/1/5s
-/jf+IP4A/v79Af65/VX9Kf0a/ST9QP0T/cL8uvzE/Nj8IP38/Fb8xftm+2/7tvuH+w/72vrp+jX7
-lPun+zX7pPpT+g762fm0+X/5RfkC+er4O/mj+br5efkT+eP4Iflg+U75UPla+TD5Evnu+Nf4FPkl
-+dP4pfjh+F75zPkQ+kf6hPq9+vn6MftQ+377ufvR++v7TvzD/OP81PwA/U39cv2N/aD9av0Z/Rv9
-Zv2j/fL9Yv6Y/sL+Cf8l/23/8/8+AJYA/QDwAMAABwGfAf4BJQJaAp4CCAPKA74ERQU5BT8FlAXu
-BTIGQwYCBqwFdQVLBV8FuQXHBXUFYQWaBcYF8wU1BmAGNgYABhYGCQaOBQEFnwREBPYD/wNTBLwE
-GgVaBc0FkwZIB+AHqgiqCUAKWgrLCkALBguTChkKjwlOCU8JgAnwCVIKhAoMCy4MQQ3fDWIO6A4R
-D70ONg6xDSQNqQxHDLkLJgvmCr4KvgokC1kLMwtWC9ELKAwbDLwLYQs/C/4KoQpzCk0K8wmICS4J
-0QiLCGUIGAiABxMHAgfjBrkGkgZUBiQGEAbhBYYFDAV0BAgE3wOgAxYDJAIYAaEAlQBcAO3/bv8U
-/9j+TP5//ef8evzp+1/7S/uJ+2f7vPo9+mT6n/p/+lL6Ifra+cj5vfl1+S751/hn+Cn4Bfj/9xT4
-/ffR9873//cy+Db4SPiJ+KP4nvi6+N34FPk8+SD5APkX+Un5Svkc+Rr5RflB+QP57fgt+Wf5UPlU
-+bH53PnE+dH5IfqP+tD63foS+2b7ZPtV+7L7Hfw2/C78U/yk/N/88fwQ/TP9Pf1+/QD+j/4C/yX/
-Jf9O/5X/z//1/wAACQAXAPb/s/+K/4X/ff9s/2T/T/88/0L/MP/t/rz+yf7b/s7+wf7O/tL+pP5i
-/if+9/34/Rz+I/7o/cr9Cv43/mv+1f4A/w7/U/+J/5L/xP8HAAMA0f99/+/+tf4x/7r//P8cAAIA
-6f8nALoAUgFcAeQAYAACAP7/9v+D//X+uP7H/t/+Bf8s/zP/V/98/0T/+f70/vH+xf6V/nX+kf7m
-/lf/q/9u//L+2P7b/rH+Xv7H/UP9N/1K/Wf9tP2m/V39ev2t/af9mv1Y/aT8GPwV/C38KPzv+5T7
-lPu4+2D7DftO+6T7kPtB+0D7bPtL+zL7Y/ug+9n7APzZ+6X7uvvB+3L7C/vF+nj6DPq5+Y35dvlh
-+Sj5BflP+fT5rfr2+qX6Wfp6+pv6efpv+qn63/rt+gz7Tft8+4P7bft6++n7YvyG/HX8Sfxb/AL9
-lP2g/ab94v0w/oT+1f4G/wP/0f6k/sv+Nv+t/xkAUgByALEADAE1AdoAXwBgALYA9wBNAdgBSQJu
-AmwC2AL1A/wELwXrBNsEQAUBBpcGmgYjBnQF3wS/BAgFPQUJBZsEcgSyBCUFnQXfBeIF7AUOBhsG
-HgYlBkIGgQaXBmwGDgZ8BUEFuAUWBhoGjgZdBw4IoAjPCKgIlwimCNsINwlGCeEIrwgVCYsJrAnC
-CcgJ0AlhCpkL4AyUDboNnQ2CDWgNDQ1wDL8LHwulCnAKZwpRClsKjgqHCkUKGgoQCvcJywmvCawJ
-vwnRCdIJ2AnXCcAJnglACaEIEgi0B1sH7QZcBp4FAwW6BJUEOASzA6YD2QOqA2wDYQMwA+UCsgJ1
-AvYBCQEPAJL/Ov+g/gP+lP0l/bL8bvxk/FP8EfzY++L71fty+yP7APv4+h77GvvZ+pn6Mfql+S75
-p/ge+OX33Pfq9x34RPhl+KX46Pgf+Wv5kPlb+SX5DvnY+I74Ufgr+DD4QfhD+H34+fg0+RH5O/nO
-+RP68vnf+eH5w/mY+YH5X/k2+Un5nfkK+nH6o/q++g77dvu3+xb8zfwp/bT8Rfyp/Fj9s/3T/Yn9
-Kf1k/db9LP6Z/vv+Iv8j/0b/w/9XAJkAXwDc/77/KQBVAPH/lf+H/3n/Wv8w/+7+t/63/tz+Hf90
-/4v/LP/W/vr+I//w/sD+tP6J/pX+A/9Y/5P/0f/q/x0AjwDNAMoAvACWAHoAggB5AE0AZQD5AHsB
-rQHNAc4BnAF4AZUBmQFJAeAAeAA9AEgAMwCr/zD/R/92/1r/Hf/q/g//c/9z//v+l/6f/tD+xf6i
-/qH+nf6i/sH+q/5l/j7+PP4o/gX+CP4//mb+VP5M/lb+Kv4U/jH+wv0T/fP83Px0/AT8qPuh++b7
-8fvv+yT8Hfzt+/L78Puz+4D7SPvK+kn6Fvoh+i36RfqI+vn6cful+7H7xfvZ+9v7nvs6+wz78PqZ
-+lv6ivq8+ov6bPqm+tX6BftU+2H7FvsG+4P79fvr+7j70PsR/Bf88/vx+w38I/wd/P379vv1++f7
-JvyW/ND88fwj/Uj9jv0b/pn+zf7O/tj+M/+v/6v/Rf89/2P/Iv/x/mH/+v9BAHwA4ABHAasBBwJL
-AooC5wI/Az0DJQNRA4kDogOfA6QD3gP3A8gD0AMmBGIEcQSbBNgE5wTxBB8FRAU8BSYFHgUCBd4E
-1ASkBFAEQwSDBMcE4gTQBAkFpwW9BTwFBAUVBQcF5QTmBD4FvAUeBpoGOAeqB+4HIQhDCGgIaghc
-CJQI4AgxCboJNgpvCqgKIgu0CwUMHgz3C30LIQvpCn8K/wmvCaoJqQl/CX0JngmLCWEJYAlhCUEJ
-CgnCCKAIjghJCOMHZQf+BvEG9wbBBngGKwbqBd8FxAVuBegEKgS0A+cDDgSaAwYDnQJIAlUCgAIq
-Ar8BawEBAfEADgGlAN//af9P/xv/jP7P/UH9y/xL/Pv71vua+0P79PrL+tr68voF+xb75/q4+vP6
-GvvK+nL6MfrH+V75KvkV+QH58/j++Pz4yfiR+I34w/gU+Wv5vvkA+i76I/rX+Yf5UPk5+WT5u/n2
-+Tf6ivqQ+nf6kvqY+lz6MfpE+pn68Prx+ur6Oft0+2/7qPv6++j7zvsd/If8oPy7/Er90f3W/bn9
-w/3i/RL+Rv5t/rP+GP9X/3X/df9G/yb/XP+X/5T/wv9QAMUA1QDAAMwA6wD9AP4AFgFtAecBVgKX
-ApcCdwI/AtoBhQGZAbcBTQGmABIAtf8MAN8AMgHUAH0AjwA1AWYCawPHA5AD3gJrAsYCDgNvAmgB
-twB5AIEAjwBnAPb/k/+v/z0AzQArAWQBegGaAa8BlQGgAY4B3QAOAKv/dv9B/wn/y/6P/l/+UP5x
-/sP+KP9Q/zL/Ef/t/tf+7f7i/qH+W/4T/vj9Jf5e/m/+Tf7V/Sj9Gv2x/cD9FP1w/OX7jPug+7L7
-nPt/+0f7N/ul+xX8GfwL/A387vvM+8D7nvtl+zL7zfo0+vj5H/o6+lj6efpi+lT6q/oQ+yL7Mftm
-+3j7bft3+3P7Xfto+2n7QPsf+zH7bft/+yz71PrV+vf6+Pr2+hf7VvuO+6r72/sh/Df8PfxS/Fb8
-bvyB/HL8j/y9/M78v/yW/M/8g/0b/k3+Sv5K/l3+df6K/qX+9f5v/5X/gf/k/5gA0gCZALUAUgHY
-ARUCPQI6AhQCGwJLAnUCpALOAtkC7gIzA3oDjwOVA8EDGARMBDAEFgQ0BE0EMgT/A+MD6wMDBDoE
-igTCBOEE/gQzBWgFbgVkBToF9AQsBcYF7wW9BXIFHAVNBe8FZAarBtYGzgbRBhAHOgc9B24HswfB
-B7MHxQfvBw0IIwhoCLgI1gjzCCwJZAl2CVwJTglWCTQJxQhoCGcIaghWCFkIQAgACNwH3wflB9IH
-qwd/Bz0H2waLBnEGXQZKBjUG+QXGBbwFqwV+BSUFwQSBBFIEHQSaA7ACCQL+AfQBkgEcAb4AoADA
-ANQAtwCGAFsAagCMADcAof9f/1T/+P5N/tv9sP1N/Z/8Gvze+7j7nPuI+1T7Dvsj+6L78vv2+xH8
-Gvzn+7z7qPuQ+1v77PpZ+gH6Dfoq+iD69vkB+n363vrU+un6SPt9+1b7I/sl+177Zfv0+pf6pfq1
-+sr6BPvo+qb63Po5+0D7Nvtw+9f7Lfw7/Ez8vPwB/b/8gfyP/JP8Yfxr/NL8R/3b/ZD+D/8k/yH/
-i/9IAKEAagAwACYAQgBYAC8A+v/S/8n/JwDZAHwBugGcAXgBfAGAAWQBKQHhAMcA4gD+AAAB7gDT
-AOYAFgEhATUBjAHiAfkBPQLxAlwDSwNhA1wD4gKEAksC3QGGAToBtABwAMEASQHJARoCBALMAc0B
-2AG3AZcBlwFYAa0AHQAHAPH/cf/5/uz+LP+S/9z/vf9x/13/Y/9N/y7/B//v/vD+zP5U/uX94v3n
-/cX95/0E/rn9nP3i/R/+F/7k/cv9zf3f/dX9Y/3Y/JP8lPzG/Pn8+Pyu/GP8Tvw2/Ar89Pv0++77
-6vvy+wH8C/zU+1j7+vrC+lP66fn/+Sv6Bfr9+S36GPrx+WH6IPt4+4H7k/uc+7D7x/uS+y/79voD
-+zX7Ufto+5776vsh/C/8SfxZ/Ef8Zvy7/Ov84fzR/ML8jfxO/DL8Gvwd/EX8SPwX/An8S/yJ/J/8
-tvzF/Mf81fzz/Az95/yX/LD8GP01/S39Rv2b/e798f0j/q3+GP94/+r/SQBiADYAMABfAIIAxwBY
-Ac0BtQEtAdEA9AA7AUoBUgGtATsCgAKDAqoCwgK6AtMC9gIuA5MD4wPtA7MDVgMOA+8C0AKWAoMC
-swLoAgUDGANPA8kDOQRmBJQE7wRWBZ0F4QUrBhUGwAW9Bd8FBAZKBmEGNQYMBiMGmAYBB/8G8QYp
-B4UHtwe2B8gH7wcECP0H3wfaBxIIWghVCO4HjgdzB3QHiAe4B8YHyAcFCPsHgQddB3oHVQcxBy4H
-GQcKB9oGaQYGBq8FTAUYBQ0F9gTeBNQEoQQ6BP4DzgOIA4QDbQMTA+0CrAIaAtkB8gHsAZUB+QCW
-AK4AlwDs/17/Zf+l/+L/5P+S/zz/GP8U/9j+af5M/nT+af44/h/+8v2N/Tz9If0A/e788/zO/IL8
-NfwU/Bj86vuq+8f7RPye/Iv8Xvw8/Az82Puv+5f7lPu5+/X7GPw+/IT8svyw/NL8Tv21/af9eP14
-/Wb9Rv13/ZH9Tf1Q/ab9u/2s/e/9af60/q7+o/65/qP+bf5b/ln+UP41/k/+2f4c/8H+lv7t/kz/
-k//I/8z/4v89AIgAswDsAPkArgB8AMUALgFlAWMBCwGhALwAXQHOAcIBqwG4AfwBdgKwAogCXwIt
-AvAB4wH9AfkBggHPAF4AOAArADIASAAxAOv//P9jAGcAMQAtABMA5P/t/w0A/f+o/zn/Gv89/xn/
-m/5P/nL+i/5Q/gn+Ev5R/o3+w/7g/gD/Kf8j/wr/6v6l/mL+S/5Q/kL+I/4e/ij+H/4h/j7+Y/5f
-/j7+N/49/kj+Rf4h/g3+BP7b/X79A/2s/HL8Lvzi+7z73/sP/CL8Bvyz+237hPuq+3z7Nvv9+sz6
-ufp++g762PnI+a356/l3+tP6MvvC+xD8A/zk++T7/vvw+9D7+fsu/C78N/xC/A/8tPud++P7P/yn
-/PT8EP0g/Rj9IP0u/ff8yfzp/BD9Cv33/O/87vzz/OT8v/y9/NL84PwM/Vn9i/2A/Wr9m/3x/Rr+
-K/5b/of+Wf5U/vP+cf+X/8H/2f/2/zUAVgBLAGsAqwDVAPYA9ADAAHAALQAmAE8AbQBiACsA8f8e
-AMMAagHTAe0B+wFQAoICdwKcAs4C2wLTAsUC6AJSA8MD+AP0A7UDcAOPAwgElAT1BAoFAAX5BP8E
-EAURBQgFDAUQBQIF+gQYBToFOgVDBUkF/QThBHoF9wW5BWEFRAVBBYMF1wXhBbwFlgWdBfMFNQbk
-BXsFwQVfBqMGtQb/BiAHvAZjBkQG9QVqBQYF/AQTBSoFDwXmBAAFCQXuBPAE4gS3BMAE9QTqBJIE
-TQQ/BBgEtQNPAwgDEgNwA68D0wMQBAYEqwNaAzQDBwOiAjoCywFIAfQAwgCRAEYA1P+m/+L/BAD0
-/wYAJQA6AGMAYAAoAPL/j/8S/9v+x/5p/u79tv2K/UT9N/1r/Yv9t/0q/q7+Ef83/zf/Lv8G/8T+
-cP47/j3+Ev6s/XL9fP15/WP9af2O/b39/v1O/pH+2f4k/1b/Sv/1/sz+B/8q/+7+nf5R/gD+8P0l
-/lL+V/47/jb+mf4u/1//Kf8c/0r/XP9y/6T/wv/R/8f/r//G//D/5//R/9b/w/+l/+H/YQC2ALIA
-jACSAN4ARgGIAWIB6wCUAHMAagBbAA4Ajv9B/1z/oP/S/9X/wP/G//D/LQBlAGQARgAkALr/VP90
-/5b/QP/j/s3+1P7k/tD+jv5v/oz+x/7+/gX/5P6Z/jP+AP71/dn9df3i/Mr8FP0d/QX9+/zQ/Lf8
-4PzW/I78jvzI/OL89fwW/Sr9Cf33/FT9mv1O/Rb9Kf0O/ez88Pze/LH8uPwM/VH9Qv0e/SX9Q/1T
-/Sn9yPyA/GL8aPx4/Ev8CPz5+wX8G/xJ/FD8Jfws/Gn8aPxI/Gn8VPz6+9/75fv6+yb8Hfzy+//7
-HPwI/Pr7Afz3++T73PsA/Er8Vvwk/Cv8Xfx7/IP8gfx+/IX8nfy//O38K/1l/Wv9L/35/Bj9Vv1t
-/Zf9xf20/Z/9s/3J/eH9KP6E/qD+fv6O/gb/p/8NAAAAtv+A/3D/iP+l/6L/rf8AAGQAfgBMACkA
-UgCKAI8AeAAuAMT/xP8mAFUAMgDv/8b/DACAAMQABwFNAVgBYAG/AQAC6gESAlYCKQLRAcMB8AEJ
-AhQCKgIlAhMCPwKLAswCIANLA2UDxwMVBA4EBQQ0BGQEbQROBAsE4APNA7QDrgPFA+wDDAQsBJEE
-JgWQBeUFJAYqBlQGpgaJBhYG/wVEBlEGDwagBQcFvgQUBXYFZwVFBUcFUwWVBd4FEwZTBkIGzgVd
-BQcFyQTABKMEBARWAzcDhwPMA74DqwPtA2UE1AT2BKgEIAS+A6gDhgMYA48CGgLKAbMBxAHnAfsB
-6gHdAQQCKAL+AZsBTQEzASAB3wB4ABgAyv+m/8X/+f8MABwAVgCWALcA6AATAbAAAgD//2MARACy
-/yD/xf6d/pL+mf6S/kT+5f33/Uj+Uf5I/ob+wf6//sn+BP8K/8n+v/7T/pT+K/7i/aL9gv2z/f79
-GP47/pj+7P4s/37/xf8EAGMAowCeAKoA1ADdANsAAgEVAcMAWABUAI8A4wBbAaYBuQG7AasBgwE5
-AfQAwAB+AGQAcQBxAKMA5gC6AGgAUABjAMYARAFtAXABfwFlASwB7QB+AN7/Zf9R/2b/U/8f/+f+
-x/7q/kP/e/9k/z3/N/9N/4X/sf+r/6T/of9x/zv/LP8L/8P+jv5t/jD+7/3h/SH+X/5K/hj++/3k
-/df90/3M/bv9k/1//Z79yf3K/Xb9GP38/P788fze/OD8ufx2/JL88PwV/QP9zfyR/M/8Rf0n/cj8
-vfzW/O/8/Pzl/Mr8zPzm/PL8+vwW/QL9ofx4/KP8q/x//E38Kfwk/D/8U/xM/HT8sPyv/K38+PxM
-/U39Q/1T/Tz9OP11/aj9mP1u/Yz9tv2e/Yr9iv2R/bb92P3f/dL9pf1U/S79Wf2Q/Z/9kf22/fb9
-xf1H/fv84/z4/B/9+vyu/Ln86Pz6/Bf9BP3S/O78GP0d/VP9vf3Y/XL9Nf2Z/Q3+Ov5S/if+6/0k
-/pL+sP6R/qP+5f4X/zD/VP+h/8j/i/9l/7b/8v/C/8P/KgBwAJEAzgDmAKoAegB/AGYASwB8AIcA
-KAAUAHoAuQCtALkAzQDaAEIB0wElAi8C4AF1AWkBkAGQAZEBgAFuAaEB5gH5AfEBBQIlAkMCngJQ
-A+8DzQMrAw8DYQN1A4gDyQPfA+ID9gP8A+4DzwPFA+QDCwQhBC0EJATwA6UDeQOYA9QD9APqA7gD
-rQPbA9UDlwOCA6EDvAO4A7YDxAOjA1UDKANLA6EDtQOfA78D0QOvA4kDQQPqAtoC2ALQAusC7wLY
-AtACrgJ5AqMC+gLzAqcCPwK1AUsBGQEJATYBXQFLAUsBmgEcAmoCUAIEAsMBxAH2AR8CMAImAggC
-9AH+ASECMAIqAikCKQJAAmECXgJGAkkCaAJfAjACMQJAAg0CqgFWAS0BFAEAAf4A4wBtABAAVQCg
-AGsAMwA2ACoAEgAdAFEAiQCZAJkAvwDWAIEAHQA5AIwAvQDHALYAxQDaAO4APQFWAR4BLAF2AZ4B
-jwE+AfYA/wAeASMBIwERAfIAIwF+AWIB9QDVABQBLAHzAM4A9wAjAeMAbQA7AEgAXQB3AI8AYQAM
-APP/xv9b/xP/7v61/n7+uv5U/5b/hP9g//z+av4h/ij+Ff7J/XL9dP3I/ef98v1I/qD+of58/qT+
-8v7m/qD+d/5S/g3+r/0i/Yz8Nvwg/A/8Evxl/Jv8fPxr/IT8xfzt/Kn8Zvxy/JD8pPyK/Ev8Hvzr
-+577ZPtw+6n7wPu5+9P7DPwW/N/7uvu3+6P7mPuu+7z7rvvJ+/X7vfuG+7777/sU/F78avxf/Jr8
-4fwI/Rz9MP1T/Yv9u/20/ZT9dv0W/YT8ZvzO/Br9Q/2i/QP+K/5e/p3+lP5p/nX+rv7D/ob+G/6t
-/VT9LP0R/dz8u/zw/HX9xv2m/bf9Kf6s/gj/Kf83/zH/Mv90/6//nP93/4D/o/+7/+r/AQCM/wf/
-K/+C/1z/Gf8e/yz/Dv/J/nX+Rv5s/sT+EP89/0b/V/+D/3z/Qf81/x7/vf6r/kz/GgBwAFwATQBk
-AKAA0wC1AHUAcwCpAOQAMwGJAaEBgQFgAUkBLwEsAU0BdgG/ATACfQKxAtwCzQKiAnoCWAI8AhcC
-/gHxAdEBrwG4AdIBqAFhAVABQgEZAUgB7QF/ArsCwQKmApYClwKDAlkCEQK+AZwBnQGiAZ0BgQFj
-AV8BggHhATQCNQJcAscCCgMVAxEDNANwA3sDQwPjAqkCqgKUAl0CMAIaAj4CkQLJAtoCygKiAqIC
-wgLyAiIDGwMDAwEDCgMgAzoD4gIrAgQCTQIvAv0BTAJ0AvkB0QFHAk4C3QGUAVoBPQFsAZgBrwHK
-AbMBgAGTAaoBgAF3AXQBHQHJAOQAKgENAb4AqwClAIMAiQCoAKAAowCrAK8ADgGqAfIB4QHDAa0B
-vAH9AS4C+wGYAZ0B/wElAugBjgFsAZMBwAHIAbIBpQGpAaQBswHZAboBTQECATYBrgHzAegBiwEj
-ASYBcgGKAVUB4gB+AK0ABwH/AOkA9wAOAR8BCgG1AHQAhQB+AEoAWwCxAMIAawAtAF8AqwCmAH8A
-nADSAMMAiQB2AGoAFAC5/5z/d/82/yH/If/y/s7+1f7H/qf+pf7B/t/+3v6w/n7+Y/47/gr+A/4R
-/vP9sv2p/Qr+U/4m/u393P2t/Xf9VP0q/RP98fy0/MP8Cf0R/RP9Nf0A/cb88vwW/RD9E/0F/eH8
-x/y7/KP8Zfw3/GT8oPyl/LP86Pwl/VX9Zf1p/Y39s/2s/Z79m/2G/Wj9Vv1s/ab90/38/ST+Nv5Z
-/n3+bP5N/lf+YP5G/kb+fP6X/nP+UP5H/j/+Pv5e/oP+M/6V/Yr99P0Q/gL+MP5O/jD+M/47/iL+
-PP5W/j/+U/57/mD+OP4v/jT+Qf5I/iX+2/3V/U/+0f7P/qT+3v5D/2L/Hf/N/uL+E//p/qf+t/4G
-/yb/6P7a/hz/Bv/G/g7/tP8qAF0AjgDOAM8AlQCSAKAAQwDh/+j/BwAdADMAMAApADkASQD6/3f/
-q/9kAJwAUwD+/77/n/90/0L/Uv+b/+z/PQBoAGMAkADwAP4ArgB+ANEAZwGLAWkBlAHBAaYBdQE8
-AeAAlgCKAJQAsgDXAOEA9gAyAU0BHQHmANEAwgCtALAAywDTALAAkgC2APIA3QCpAMcAGwFuAagB
-xwGhAU0BSAF9AX4BVAFEATYBJAFIAY8BkgFFARMBCgERAVgBrgHPAdUBzwHXAe8BvAFgAVEBcAGE
-AXABLwH0AIUA+v8LAIEAwQDzAEABeAGiAbkBqgGqAZcBTQEWAQYB9wDWAKsAhgBaACYAFQBLAKQA
-8AATARABDgEfATEBLAEcASwBPwErAQcB4gCvAHoAiQDzAEUBOAEcATcBhgHLAcwBeAH0AK0ArwC4
-AK0AoACqAMAAAgFJASQBzwDaACgBQwEZAegA2gD3ACIBRQFYATIBCgENARUBSgGjAbYBiQF1AXMB
-QQHNAHgApAD9APIApgCZAOQALQEuAfEAyADnABcBQwGNAeIB8gHJAbQBpwF5ATEBEQEwAUEBHwEH
-ARUBDwHfANoAEQEvATsBRAEdAfEA7ADaAKUAdQBaAFcAeQB0AAUAkv9H/w7/Gv9k/5z/m/+e//r/
-bwCRAHIAbgCkAN0AygBnAAIAsv9s/2z/nv+b/17/Q/9M/y3/B/8y/6D/4v+8/6D/5/8cAPT/vv+p
-/37/Mf/u/t/+7f69/mr+eP7F/rj+l/4S/5P/TP/o/t7+sv6N/rT+w/6c/mX+Qv5X/ln+Df7P/d/9
-5/3R/eH9/v0a/jv+Nf4F/u/9EP45/jz+J/4h/jD+Pv47/jX+Jf4f/lb+lv6v/rj+lf5c/kX+av7D
-/vP+4f7d/vL+2v6g/n3+ZP5B/jv+ZP5t/j/+Qf5l/jn+DP5G/nP+Q/4p/pn+HP8l/xL/6/6G/m7+
-pv6y/pn+pv7K/uH+C/8m/yD//P6o/mX+jP4E/0f/LP/4/tb+y/7W/ub+4f7Q/tj+3/7A/rD+zv7+
-/kX/of/W/+v/CgAbANP/WP8t/zz/W/+F/3v/Tf8i/wn/MP+U/9n/zv/C/93/0/+w/7D/mv+N/9b/
-7//N/xoAcwAeAJ7/ef9x/3D/iP+O/4r/m/+w/77/wf+2/8z/+P/t//X/PQArAKn/R/87/23/kf+C
-/5j/xv/I/7z/vP/W//b/BgAYABsAHwBBAFwATABOAJgA1gDFAKUAvwDuAP4A9wDlAO4A7ADKANYA
-4wCwAIUAVwALACIAhgDDAPIAFgH+AL0ApACXAHIAcABPAPb/0f/4/0EAagBjAGAAjQDgAPQA1gAC
-AUUBMQEVAUMBPgHaAJkAmgCjALsA5QD1AP8AEAHxANoAAAEfATsBlQHKAXMBRAF7AWIBJgErATEB
-LQE+ASwB4ADIACQBagFUAUwBaAGKAaUBiwE1AQIBPgGhAeUBAQLIAVQBKQEuAdkAZAA7AEsAogAf
-AVYBXAFFARMBCwHrAJcAjQC/AMYAqwCiAMQACQEhAf4ABgFXAZ4B2AEdAjsCJQICAv8BJQJWAnoC
-fAJgAnQCzwLxAqQCLALGAZcBfgFCAeYAmAB8AIEAdgBxAJsAxwC/ALMA7QAwAT4BXwGQAXUBWQGW
-AYABuAAYAD0AigByAGIAjwCoAMcA+QABAQEBIwE/AUUBOwEuASgBOAFeAW4BbQFcARcB4gC9AH0A
-XABKAPj/pP+s/7X/cP9R/5//zv+g/4//j/9q/1b/bf+h/93/OgClAMYAogB7AFwAKQD9//3/IABO
-AGwAWwAsAAcAy/9g/yL/TP+j/97/5/+z/4L/sf+s/yb/2P7p/h7/Yf9X///+pP5B/uD9o/1u/Uv9
-T/1a/Tf99fzf/NL8fPxT/Lv8Rf1x/Wn9nP3U/en9FP4z/i/+LP47/kX+Uf5l/l/+df6y/qX+cf5m
-/k7+I/4p/kf+XP54/qP+3f4c/zr/Iv/0/tn+1f7C/pf+dv5S/iD+8f2r/W39U/0V/f78VP1+/WP9
-Yv1a/Vz9k/3O/fT98/0J/lb+jP6Y/oH+Uv4h/v/9EP5m/rf+qv6L/tP+Mv9P/2b/ef9v/3b/kP+o
-/5r/Tv/1/qb+g/6S/rD+3P7o/tH+4f4a/2b/oP+S/4z/wP/k/9n/r/+E/37/hf9s/1b/af+G/7X/
-EwBkAGwAdwDjAEoBKQHcAJcAFwDA/7L/YP/5/u/+Mf+g/+7/5v/c/xMAUgBTAGcArACtAHcAdwCI
-AIsArACnAGkAUwB3AKsA0gD8AD0BdAGjAewBMQI/AvoBnQFcAToBPQFNATUB7QC4AKMAjgCIAJgA
-mAB/AGkAYABTAFcAPgF2A4EFLAYCBkYFuAPeAZYADQDd/+j/ewBhASsChAIRAvkAzv8I/+v+fP8l
-AEwAbQDKAJsA8f9y/97+0/3q/Mf8Jf1//df9Uf6R/qT+//5c/3D/W/9E/4z/TwAXAawBBgIAAsIB
-cQE1AVkB2AFTAokChgKMAqoCmAIiAo4BWwFaAR0B0ACgAIcAlQCvAMIAlQBRAI4AzQC0AMYA1wDL
-AO4ACwH6AOAAsgCSAKUAbADN/4T/t//1/yAAZgDgAFQBiwG9AfMB/wEFAgoC9wEIAkgCUwLwAY4B
-rwHOAZYBjAG4AbgBPQFzABkAZgDVAPIA5AAYAW4BjgFvAUgBRQFGAS0BLgFoAaEBcwHhAI8AnQB8
-ADwAJQD5/8X/2//7/+r/3v/a/6z/ff+V/9L/2/+L/z7/j/8FALH/Dv8K/0v/GP+x/oP+Nf78/YD+
-Lv9Y/xj/2f4R/4r/vv+k/37/uP85AGIASgBSAEUADgDb/7//yv/W/8r/wv+6/9D/DQAgAP7/3v/U
-/+D/3/+d/zD/y/6O/qb+Df83/7j+Bf6z/cj9Pf7E/r/+Z/5r/qr+uf6G/iv+9f3t/c/9y/0S/hb+
-tP2w/SH+bv57/pn+7f5L/5D/w//t/wQAGAAoAP//Z/+k/iH+E/5Z/oj+bv5d/qz+I/9G/9T+F/7J
-/Tj+Ev+m/3f/5f6K/mX+KP7a/br9wf2//f/9xP5e/yj/e/7q/cL99v0h/jL+Lf4i/mP+mP4p/qj9
-1v1M/rT+Pf+//xgACwBn/6/+fP68/hv/cf+5/93/qv8m/2n+cP3I/Aj9zP1z/v/+jv/d/8T/V///
-/i3/r/8YADsAHADi/4z/Pv85/0H/HP8C/xL/Xf/t/5oADAEWAR0BgAENAm0CcQIVArwBrwGJATYB
-WgEBAl4CDwKAAUQBUgE+AUsBfwE+AfYAZQEFAkAC8wHaAID//f5I/9z/1gC4AccBlQHBAdYBMAES
-AIP/AQAKAQ0CwwLMAj0ChAH/AMcAhwBDAEMAtQCUAWcCxgJnAmsBlgBJAEAAVgC3AGUBIgJ0AiAC
-ewEnAVMBegFqAWYBawFqAXEBgQGUAXwBCQFbAKD/Bf8G/+L/vgCvAFsAigAKAZcBjQGLALv/KwCA
-AaMCZgLcAIj/df/8/7j/rv4s/uL+bAAnAk8DEgPHAewADAGKAeIB5AHIAa0BVwHxAOQA/gDWAE0A
-tv9//4//sf/7/00ASAAXAFcA9QAzAcEAOwAgAOT/MP8F/wEAFgEzAZAA7P/J/9P/Y//D/l3+Vv5s
-/38B0wJeAsQAU//v/j7/OP/a/vH+1/8jAegBgAFQABr/O/4P/qz+af/c/1gANAEWAj8CTwGc/0b+
-H/6t/i7/h/8pAIwBLwOuAzsChv9g/TT9q/6cAJECGgQkBMUCYgF/AJX/r/5A/o3+EADIAiEF5AQF
-Atn+av3x/QD/PP/W/ij/vwASAoUBsv8P/lv9p/1d/u3+ev/1/x4AGADF//j+Dv6r/d39EP5J/gL/
-9P+OAJ4AGwB0/x7/7v6k/sv+2v+1AE4AQv+h/r7+Fv8a/9X+b/4r/qb+zv8HAa8BKwHi//X+1v7m
-/r3+pv7X/jX/cf84/7/+zP69/4oA6/9T/j39T/1F/if/9v4k/v79gf6D/u39IP7D/+oBlwP5A7MC
-1QCJ/9r+Qv6k/cj9KP89AbkCMwIEAEL+Tf5I/4b/B/8K/xsAZwGqAYEAp/5Z/UP92/0j/sH9O/04
-/Zv9y/2D/d78QPwX/E/8kfy5/Pf8ov2e/l7/s/+Y/9X+yP0o/fL89PwW/hIBzAP6Agn/1vt9+6n8
-ev2G/Wb9/v1s//sA5QF1Adf/a/6o/jQADAGfACEASwDcAOkArf/k/Rz9yv0i/xUAHgC7/7f/pQBE
-AgkDEwKdAGEAowEUA0cDMgIuAXMByQLKA0kD+gGEARQCqQJiAlEB4AD3AVcDXANjAgMCpQJUAwED
-bgF0/9/+swCEAzgFyQRxAt//1v4y/6D/af82/2sA/QLtBHsE5QH0/n799f37/pn/SwBXAU4CoALX
-ATYAvf6D/uf/+QGYA1sEOQRTA64BUP9a/WX9Nv8aAQ4CKgLYAU0BkAB1/yP+1/2A//4BRANZAgQA
-+P1O/d/93/6//2IA1QAYASUBAQGHALH/AP8S/+D/8QANAqgCswF9//f94P1K/ub+8/9FAW8C0gI7
-AiMB8v/u/hD/pAAWAkMCCwJ/AtACqgFi/1z9ufzJ/c//rgE8A24EaQT8Au0A+f75/Zb+MACqAaQC
-+gJyAiMBff8t/qj9Cf4W/2IAxwGqAiQChQAo//P+bv/H/+///v9FAOEA0ACe/1f+Nf4h//X/4f8E
-/4L+Kf8ZAA8A5f6I/WH9zP5eAKQAlf9o/kH+9f5X/6/+0f3q/aX+uf7I/R79ov1+/s7+pP5H/gj+
-Af78/TT+8v7t/2wASwA1ADUA+f+r/2X/Pv9M/3n/x//c/2X/sP5R/n7+8/5l/63/yf/8/3EAxwDI
-AMMAzgDbAAMBBwGOAMb/8P4+/jz+4P5P/2n/b/9L//7+jv4f/h7+Zv6B/tf+uf9fABgAQ/+e/lb+
-WP6B/pL+q/5C/zwAywB/AKT/zP57/qn+0v7m/kL/nP99/y7/+v6n/kf+NP54/gX/r/8fADgA7/96
-/1//fP9c/xf/6v64/ij+Yv36/Af9Pv2O/TH+F/+c/0n/z/78/kL/V//B/x8AGAA9AJoAqwAbAA7/
-cP6k/gX/Lf8r/wX/vf6Q/p7+jP47/l7+Zv+BANYAhwDg/07/7/5r/gb+PP7N/lP/+v+KAGAA5v/c
-/wsARwCzAPUAzwC1APAAEgHOAGIACwD9/0EAzABoAaMBXwHVAGsAaAC2APwA9QDQAMEAqgCbALAA
-lwA3AAAAFABIAL0ATwF6ATkB/ADuAPUA4ACvALEA6QAGAecA0wANAS8B7QC7ANoAFwFoAa0BgAH5
-AMoAIAFwAZUBywEHAiQCDgLhAZ8BQgEYATQBVAFKAQYBpQCDALYAvAB9AIAA1QAaAVEBowHnAQsC
-EgL+AfkBAAITAiUC9QHeAd8BewENARIBLAH6AL8AeAA0AE4AeQCUAO0ANwEnAQMBCAFDAZMBvQF2
-AeEAxABJAaEBUgHaAJ0AlgC0AKgAWAAGAPD/MgC7AFIB0QEyAmgCSQLmAaEBjQFaASUBIAEiATAB
-DwGPACQAEgD8/6//lf/X/wkAGwA9AFMAgQDrACgBDQHPAFkAxf+Y/9L/0/9j/9P+gf6i/u7+2P52
-/j/+aP4D/8//PwBtAKsAnAAKAJH/r//D/1X/Mv+Z/93/zf+9/9H/xf+P/5j/x/+w/2b/Df/Q/uT+
-OP+f/9r/zf+i/5T/lv+U/6T/1/8iAFMAZQBpAD8A+v+q/3T/i/+U/yv/ov5c/kL+/v1v/TD92/3s
-/qf/AQDi/zn/uP6v/q7+lf5L/tb90/1O/mX+//2r/WL9Lv1w/Rf+uP4C//z+D/9g/8f/NgCYAOIA
-8wDHAL0A3gDAAGEA7/9X/+X+tf5f/gT+9v0s/q7+Yf/C/4H/Hv/3/t7+y/7w/mD/u//E/9T/6f+d
-/y7/D/8v/0z/Zv+G/4j/Wv9F/17/Hv99/i/+a/7Z/h7/Mf9S/4P/Z/8q/zz/aP9Y/0j/eP/A/+v/
-8P/q/7f/Nv/E/qX+kP6D/q7+yf68/uL+K/83/yT/Qv9u/6L/DAB0AKAAtwC5AG0AGQAWACAAAgD6
-/xsAJwANAPD/y/+z/8z/AwA1AGAAngDJAM8AzwCwAHQATAApAAoAKwBpAG8ATwBEADAAEADz/9D/
-4f8TADsAWQAoAMv/pf+v/9T/2f+P/2f/mf/f/1MA+gBNAUcBYgGfAbEBkwFjAR0B6gD+ABUBBwHQ
-AHkAagCXAIoATAAwAFwAqgADAWoBqQGzAb4B8gE0AjIC7AGxAZYBngGzAY4BLwHiAM0A4ADjAN4A
-rQAlAP3/jwAJAQcBQAHbAUsCnAIFA1ADOgO3Ai8CCQIDArkBJAGYAFYAMwAgAEEAdQC5AEsB/AF8
-ArUCkwI8AusBogFxAXIBewFIAdoAfABIABkA8v/n//j/IwBuANIAGQEcAR8BVAGDAUQBvQCOAKQA
-kQA6ANv/0P8cAGkAhABlADgAlgB1Ac8BgQFAARYB6ADIAKwAnwCPAEIAyv+k/93/+P/x//z/+P/q
-/zsA4AAsAd8AhACVANkA2wCrAG0A+v+K/4P/yv8UADYAJAAsAHUA1QA1AVgBAAF8AGQAgABDAOz/
-0//P/8v/HwCRAHgA6f9i/yb/Pv92/23/JP/2/vb+AP/s/sr+wf6c/mz+jP7a/gv/9f6R/k/+h/68
-/qT+lf5v/jL+Qf5s/lr+L/42/mX+kP7h/iT/5f6d/tP+Jf8c/9r+o/6B/o3+vf61/nD+V/6E/qz+
-mP4//tH9nf3C/Qb+Ff4T/jX+fv7Y/uL+iv5Q/mn+i/6W/p7+mf5//lz+Uv6W/uD+yv6U/mn+Lv43
-/nv+Uf7y/eb94/3t/R7+Iv4a/v79u/3z/YD+j/5h/n3+wP7k/tj+r/5v/jH+L/6J/vL+EP80/3P/
-Xf9I/7X/MAAvAAAA4//M/9P/z/+q/67/0//W/9X/BgAkANL/Z/91/83/AwAnAE8AVQA8ABMA7v/p
-/+b/yv/Y/wcAz/8r/83+1/62/kH+A/5l/u3+Gv/t/pb+jv7r/gr/4P7u/jH/nf8zAGoADwDK//b/
-EgDz//D/DgAXAP7/5P/L/5j/Rv8j/2j/3P81AFcAlgAKASYB5ADBANUA7ADMAFUA0P+q/+D/IQBL
-AFUARQBrANIAGQEmAScBWAGVAZABWQEbAd8AsQCzAM0A7ADxAPkAcwHeAXkB8gDhALcAeQB0AGcA
-gADUAO8A6gADAegAmABQAC4AWACqANoA1QDAAMsACwFTAXkBnwHvATYCUwKQAhMDcgMgAzgCYgHQ
-AHEAlwAuAYYBXQERARMBYQGfAX0BDAHMAPQAbQEZAmcCBgKTAXEBaQFhAUIBEAEoAXoBogHCAeQB
-jAEPAS8BbgFJAQ4BEAFDAVoBPwEbAfwAsABpALoAbwHWAeoBFAJaAm0C/QEgAUcAt/+G/6L/zP/0
-/xcAKwBCADYABwAWAE0AagCOAO0AjAHzAd8BhgEHAZoAZgBkAJAA1gDsAIUA+v8BAIcA6gDyANQA
-3wAVASoBEQHPAGAAJgByAL0AjQArAOL/2f8oAGYASQAEAMr/wv/G/4P/Fv/S/qr+uf4z/3b/C//W
-/j//Xv8j/yP/Mv8f/yb/ef/N/9T/2//V/4H/Jv8i/2L/hf9g/zb/S/9w/5v/4//7/43/7/67/sr+
-wv7H/vb+Pf+L/8j/+P8lAFUAfgB0AEYAPAA1AML/C/+Z/jj+uP2S/bX9p/2O/Zj9fv0h/fH8MP2w
-/VD+3P4R/x3/Lv8z/0z/Pf+8/h7+xP27/ab9Zf1L/Vv9YP12/fX9tf4Y/9X+Uv5I/sz+Lf8a/9H+
-af4D/s79yP3I/Yz9Rv0v/TP9h/0n/rP+Ev9D/0//Wv92/47/cf8W/7X+if6R/sL+//4g/zf/T/9M
-/yj/HP9b/6D/p/+m/5z/YP8k/wv/EP8M/9D+eP54/sX+4P70/lD/jv+S/9L/SwCrANEAtwBXAOH/
-0f8mAEgALQAlAAAAw//U/yUAfADHAP4ATwGeAYkBLgHlAMYAsQCZAIcAdQB0AIwArwDHALoAmwCK
-AH0AdQB+AIwAbgBGAG4AegAwAB8AHwCj/xf/Q//E/+r/9f8IACcAegDVAAwB6QBtACwASABLACgA
-HQAhAPb/xv8iAKIAbwAEACgAaQBIAEEAjgDMANwAzQC1AMMAwwBrADgAmAAAARYBRAGiAa4BdQGH
-AcIBxwGxAZQBdgFiAVkBVAFNAVIBZwGBAZgBrwH3AWUCbAIVAugB3QG2AYIBTAEBAc0AxADYAB8B
-VwFBAQsB6AANAWUBcQEQAboA5gBOAYEBswHNAWcB6wDmAAUBEAFHAY4BogGvAfUBIgIOAvkB0gGL
-AXgBmAF3ATQBBAG4AH8AgACfANAA8gDxANgAyADbAPQA8QD7ACkBKAHWAIIAawCGALgA4QDlANMA
-yACIAOH/h//c/yEA9f+7/7P/tP+5/9z/LACIAOsAfAHJAVABfAAUAN//Uf/u/vH+g/6u/cj9+P4G
-AIEAqgCnAMEAIAFkAUMBGQEXAdoALQBg/yL/pP9FAHgAQgADAOf/8v9AAPAAwAEkAuIBOgGnAJMA
-5gACAagALQDZ/8//EwAqAIz/kP7s/eL9c/5B/5D/m/8LAGAAMgDL/0T/zP50/jL+RP5p/kb+Pf50
-/nD+Hf7z/Tn+i/5t/jf+cP7z/j3/Af+L/lj+Xf5a/kP+Yf7k/mX/jP9S/+X+v/7X/rP+Qf7q/fv9
-WP6y/r/+af7O/Xj9p/3I/bz99P2a/kj/cv9B/xL/6P7V/tL+zf6//pP+N/6//Zf9nf0r/W/8+vvl
-+xz8lvwP/VD9g/2h/Zf9ff1J/Sn9f/0O/jr+Ff4e/if+qv0D/bL8lfyu/BX9if3z/VD+hP6U/pL+
-eP4j/rv9tf0P/n/+5P4N/+r+2/4h/2v/av9Q/4X/3v/X/2X/7/7R/vL+Hf9Z/57/4/8hADYAHgAc
-AFIAtwAvAV0BbQHaAR8CtQEvAcoAYwBHAHYAvAAUAUUBUwFeARoBjQBPAGwAcwBMADEAWQDXAEwB
-ZgFnAUsBBwEVAWYBqwHwASgCKgIMAgUC8wHMAZUBPQEYAVUBlwGWAX0BbQFXAVUBkAH1AToCTAJu
-ApkCmwJ4Ak8COAICAqgBdAFcATYBCgHVAIMAKQDO/4L/rP8PAPv/y/8IAFwAqAAeAXkBmAGsAbcB
-0gH6AdABOQHEAKIAUADV/8j/JgBBAEIAxgB9AfgBTwKWAskC6gLzAuICrwJaAhkCGgJGAlYCLAL0
-AQcCdQK7ArsC5AIrA10DrgMTBA0EnAMoA7oCXQIhAtEBcQE2AUgBsAEVAhwC/gE4ArIC0AKlApcC
-kQKVAo0CWAIhAtsBfwFiAXQBVwE8AWQB3wFSAmUCfwLJAuYCzQK7AtMC8ALjArICcwI8AgECxwG4
-AbUBsQHNAQMCLwJlArwC6QLcAtIC3gLcAroCigJgAigC0QGeAawBqgFOAdcAnwClAJcAVgAZAOz/
-AAA6ABUAiP8N//T+Iv9a/0L/xv49/vD95/3v/c39hP04/RP9GP0h/fP8q/ym/LH8mvyx/AT9Hv37
-/BD9Uf1d/T79Bv2S/D78Rfwo/LP7TPtS+7/7Cfz3+/P7IvxV/Hr8bfw0/Bz8J/wu/EP8Ufwr/Nn7
-qPus+7T7z/sR/Ez8c/y5/P78D/0O/cf8PfwN/Fz8cvwB/Lr7vPuF+z77/Pq2+qP6uPrQ+tz61frD
-+tr6CPvj+on6f/qw+o36O/pF+oX6cPom+jj6XfoP+t75SPrF+gH7I/sp+zD7UftG+zD7X/uI+3r7
-hfv5+5L8sfxD/Lj7bPuJ+xH81fyH/eP9Kv6M/qz+rP7U/gj/Ov9f/2D/Tv8b/7z+jf6y/tv+5P79
-/kX/hv+I/2D/Vf+W/+r/NwCVAIIA4f9q/1n/X/9F/yz/HP/T/pn+0f4X/yP/Ov9h/2n/mv8vAK8A
-swCGAGQASQCCAPMAHAEqAYcBEAJxAs0CpAPaBMkFdAagB0YJeQrtCrUKDgqyCeQJQwpJCtwJowm3
-CakJ0glDCmIKpAqqC7QMRw3KDf0NeQ2lDPMLYAurCtQJTgkbCbIIGwivB24HEAdiBsoFrgWhBVgF
-5AQcBFQD9QKxAkkC/gHGAZkB1QE3AvkBTwGQAH7/iP4P/pD92fwO/Ff71vpr+h76+fm5+X/5w/lr
-+gr7jvv6+1T8ovy6/MD84fze/Lr82vwS/Qb9wvyV/PP8mv23/XL9h/3d/S3+s/5t/0sAJgFpAV8B
-rQElAo8CJwMTBOQEUgVwBTgFrQQXBKQDMwPaAtsCGgNuA+IDHATrA7gDoQOmA9MDMgTOBIQFAwbj
-BUcFmgQBBIoDQgMZA+MCpQJBAowBDgEjAQQBUgDE/5//eP8E/4L+X/57/rH+6f7Q/lr+6v3b/ez9
-uf1q/Rv9ovwx/Oz7nfsv+536I/ru+Z/5Lfko+ZD5AfqG+gj7Ifv0+vn6W/vb+0787PyH/eL9Iv5M
-/hT+pf2s/Qf+CP7Y/fr9Z/7V/v3+0v6P/n3+xf46/5T/BwDCADkBQgFUAYoBxAHpAecB6QHIAU4B
-2gCtAJgAbgAwAO3/pv9u/3v/wP+m/1L/cf/F/wUAUgBjAEkAbAByAEQAKQC5/x3/1f6F/gL+gP0Q
-/cL8qPzr/In9Qv7G/s7+lP6Q/sj+6v7Y/r/+pP50/lH+af5k/g/+1v0Q/tn+w/8iABYAEgAlAEoA
-lgDTAJgAEwDK/7v/vv+a/3L/mv8EAK0AdQE3AsUC0gKwArcCdgLgAZABewExAcMAdgBUACcA0P+L
-/4r/p/+Y/5//8v/3/5z/a/9m/x3/a/73/Qz+Gv7D/TT9xPx9/D/8+fvR+w78dvzL/A79AP3Q/Pn8
-Cf2S/FD8o/wI/Tf9QP1c/Yz9e/0s/QT9Fv0l/UX9mv3s/ev9g/0m/S79Rv05/U39av1Q/U79mP21
-/X79Ov3g/MT8UP3s/Sf+Qf5M/kr+bf6r/sb+rf5x/iT+8/32/f/9q/0N/eX8Vv2l/aT94f1r/rf+
-0v4K/wf/tP56/lf+B/6E/RX9Af0r/Sf93/yK/G38svzs/OP8Ef1d/Tz98/wT/Vz9hP2v/eL9Ef4/
-/pb+8v7e/nz+cf7f/lD/f/+B/5P/0v/5/+D/uv+v/9r/GwBTAM8ARwEJAd4AqQFhAkICLwKNAugC
-EANMA74DFQRWBKwEyASvBPAEYQVRBSIFmgVWBtAGQgfhB5kIMQmUCVMKtgv/DI4NeQ00DTINOw3k
-DGkMXgy1DLYMQgzqC+sL/wvYC4ELRgtBCxoL1QqSCgcKXwkICa4IzgenBscFXgVBBQoFWwR9A94C
-YgLwAVEBUwB3/+b+GP4Y/Vn88fuu+5D7r/vc++L7/vtd/KP8m/xB/Nr7vPug+1n7+/q0+sD68foN
-+xj7FPst+6b7RPym/Bv94v2I/tP+GP91/7D/5f8pAEsAkwAqAZcB1QETAkICeQKZAl8C9wEKArIC
-PgNnA0ADDgNOA9gDKwQ9BDQEGAQXBGgErASZBKoE/QQNBdgE2gTqBHcE4gPRA84DbwPyAlECgQHK
-ADoA0//B/8//n/9C/wv/Cv/r/oH+CP6v/Xz9Uv37/J78cfxE/Nv7Qvuy+j766/nB+bH5zfkV+kH6
-Ofo8+mH6jPqq+qT6cPok+hf6afqb+o/6pvr5+lP7oPvq+yX8Z/yf/Lr8+vxT/Xv9ev2c/fH9Ev7t
-/eP96/3M/bv9A/6L/gP/Rv9i/3D/g/+S/7f/6v/X/6P/l/+m/5T/Rv/j/n/+Mv4m/lX+n/62/mn+
-Kv5b/qL+hf42/h/+Jf4E/uL9u/06/bf8q/y//J78hfxl/Ab80Pve+6r7Y/ug+xH8QPyL/PH8D/31
-/Lf8rvwT/WH9X/18/cn98f0P/iP+7f2v/fT9xv5p/2T/MP9Q/+//CwEKAjgC0QFtATcBPwGcARYC
-bQKGAj0CxQFlATIBJQERAQwBTgGrAdcB5wH4AesBnwFTAV0BcAE9AQAByAB3ACgA5P92/+7+gf4j
-/gH+Rf5v/jP+/v0V/jr+ZP53/kb+EP7D/Xn9tf0A/qv9DP2y/Ib8efzd/Gb9b/1D/Yf9Gv6A/qX+
-o/6c/tL+Kv9Z/17/Uf8+/yX/HP80/0P/Kv8z/3P/nv/K/xQATgB0AHgAPQAFAPb/5v/X/9X/w/+E
-/xr/sv5u/kL+Vf6l/rb+iP60/hz/J/8G/wD/+/4W/z3/Lv8D/8z+gv5r/pL+fv4Z/v79Wf5q/gD+
-4/0p/hH+wP3U/ST+oP4S/xD/8/4C/wT/Av8b/xf/Ov/Q/zYAPgB9AMoAoQBQAJQAZAEFAkIChAK2
-AoECJgL2AeYBBAJ+Av4CPwOWA90DoANjA8gDnQRgBdgFPgalBg0HlwcPCD8IdQgFCcsJywoeDPUM
-1QxoDBcMDQyKDCUNPA3TDF8MIAzhC4ELSQtZC34LlQtrC/gKowpxCvkJLAklCPkG1AXrBCkEWQNy
-AqMBCwGEAPX/Xf/L/kL+vf0m/U78W/uG+tv5XPnm+HX4C/i+9+33aPif+N/4TPlN+RH5Jflk+Yv5
-pvmS+Uv5Tvmp+fP5PPrH+m/7x/vy+4b8aP0y/u7+wP9YAGoAfgDhADMBYgGcAQMCeALGAiMDzwON
-BAIFVgXCBT4GzQZZB64H1AfVB4oHHgfLBnkGQwY8BhIGmAXzBHAELQTwA5wDKAN6At0BfgEkAc8A
-bgDb/zj/mf73/Xz9MP25/AL8eftM+wP7R/qh+V35HvnW+LX4wvjS+Nb4CvmX+Rf6CPq3+bX52vmz
-+W/5ZPlk+WL5ovkQ+nv6DfvO+3v8D/20/TX+f/7m/mr/6v9kAKgAqgCRAHQAcwCXALkA0gAWAW8B
-mQGzAQYClALzAuACvAKiAj0CpAElAYwA4v+P/47/mf9p/+r+ov6c/j3+4/3G/Sb9S/y4+yT7xPqt
-+nD6Y/ql+p36UPpQ+pH6hPo6+gf6uPkx+fX4WPnI+df53fkt+rT6QfuU+8L7Pfzq/GP9iv1D/fP8
-NP3X/VH+nf4M/7H/dQA0AdUBTQJxAnICtAIJAzQDLgPfAooCjwLCAswC0wIVA5gDNgTTBHIFiAXF
-BDYEVAQoBIEDGAOeAq0BFwELAesAlAACAHv/Y/93/1z/Nf8b/+T+f/4E/qD9OP2l/Dn8G/wI/NT7
-kft8+5f7xvvx+/r75Pu++8T76/vn++L7B/wk/DD8i/w5/eD9Yf7a/mz/9v83AC0ANgCQADIB9wF9
-Ar8C5wLqArYCSAIIAlMCwQLIAqAC1gJaA3wDEgOpAn0ChgK+AuMC4ALpAuMCmwI4ArYBMQHcAIEA
-HADq/8X/Zv/B/hT+rv2R/Xv9cf28/TX+e/59/ln+NP4n/hX+wv0o/Yf8M/wo/Of7UvsL+3r7NPzH
-/CX9Nf0o/WD9nP2J/Xz9k/2V/ZH9xP1G/sn+Bv8N/xT/F//z/ub+Mf+v/z0A5QA4Ad8AfACzADQB
-cwGCAWsBNwFXAdQBZQLJAp4CEAK+AbwB7gFUAosCNQK4Aa4BFgJ7Ar4C/wJdA94DMARKBLUEegXv
-BeIF5QU2BooGzgYbB4cH2Af0B48I9gmQC+kMqg2TDc0M+gvHC/0L8wucC/sKBQo1CcEInAjgCGAJ
-xgnrCfkJzwkACf0HfgchByEGeATWArUBwADt/5P/Qf9c/or9k/3R/ZD9F/2k/O/7B/tQ+qX5yPgI
-+L33svdm9wz3H/eG91L4VPng+QT6IPpj+tv6N/s6+yT7IvsK+/r6QPv4+/P8v/1O/vP+qP9ZAPIA
-RwFkAYEBoAGYAasBIwLHAmID2QP9A/YDRAT+BHAFTQXqBHMEEwQGBCAE4gM2A5cCVgIgArIBVgFK
-AW0BewFDAREBBgG+ADoAx/9M/5P+o/2+/CX85vv3+wr8nPvc+oP6qPrD+rn6zfrE+mT64PmX+c35
-E/oY+hT6HvpO+pH6yfpH+wP8ifzG/MP8rvz3/Ij9Ef5D/kn+rv4B//H+Lf/D/yUAdgDzAGkBugHC
-AcMBJQKVArwCvAKjApQC7QJZAzgDxwKXAm4C5QFlAU8BXgE1AdgAfQBSAEoAEQCY/wr/oP52/lL+
-Gv7Y/Yf9Nf3Z/Er8tfta+yL7IvtB+xz77frz+tn6m/p4+nL6c/pt+n36vPrv+vn6D/tD+2D7d/ue
-+6P7m/vS+1n85fwp/Tn9bf0T/v3+kf+9/+T/FQBrABQBhAFKASABiQHqAQ8CYALBAvUCLQN9A7UD
-9QNrBKgEgwRmBFgEKwT2A9ADtgOYA1QDAgPxAjMDwgOPBP0EiARzAzUCbgHCAeACggMaAy4CQQGP
-AGkAWQFNA0EFbgaaBs0FnwR3A2IC9gFQAoQCFQJAAR8A4P4p/kr++v7g/5gAtQAuAIn/Af+B/g7+
-uP2c/cb9GP5J/kz+a/6k/qn+sf4n/67/q/9Q//b+Pf4r/Wr8Cfzb+yb8Df0K/s/+fP8eAOwA2AFn
-ArkC8wLEAk8C1AE/AZAABgCz/3j/Rf8N//f+JP9///f/ZQCZAJkARQCM/xn/Ov8t/8z+oP53/lv+
-s/73/t3+2f7Q/pb+YP4V/pX9K/0B/cb8Ufy7+wf7ffpt+sP6Mfun+zj8pvzy/Hj9HP6X/ur+/P6g
-/uf9If3A/P78d/22/bj9g/1E/Sn9G/1A/bv9Tv6f/qf+sv7y/ij/Gf8t/3z/eP8l///+I/9W/3D/
-cf84/5r+7v2j/W/9F/0P/V/9Zf0G/an8dPx+/Pr8k/3u/fz9m/0u/S39W/1x/Zb95P38/cf9u/3c
-/cz9zf08/rP+B/9l/23/2P4x/vj94/2j/YP9vP1G/hL/wv8RAFMA0QBoAQsC0QKMAxAEeATbBBgF
-LgU3BUAFhwUMBlgGVAZdBvoGZAghCtgLTg3CDTcN0QwSDYkNEg61DuQOjw4aDkINEgwWC44KSgr0
-CTkJBwjTBtcF5gQuBMIDLQNtAuEBmQFbAQABtABlABYA3P9k/57+yv3u/OX75foM+jL5ifhB+An4
-3Pcc+JT41Pga+cL5k/pK+7T72Pv4+zP8b/x1/Hn80vxK/Z/9HP7g/mD/fv8AAPsAkwGtAesBWQKz
-AgMDLAMqA1UD3wOrBE4FbAVhBbEFIgZ3BpEGaQYtBtEFXQX8BJUEDgSZA04D9AJzAugBmwGpAcUB
-qgEuAX0AIwD1/4//9P4U/iz9e/wC/Nz75vvn+wH88/tp++X6zfrb+vX6HPs8+1D7/fpl+ij6ZPrb
-+lj75vtF/E78u/yw/Xr+3P4B//n+/f5g/w0ArQD2AOQA/ABpAZsBiQGlAekBVgIDA5ADwAOjA4kD
-yQMFBM0DZwM/AzoDJAMHA8wCkAKEAloC4wFuARMBugBfAO//cf/5/mX+sP0i/dT8dPzs+2b7D/vU
-+of6N/q4+SD5Hflp+V35RPlA+Sb5HvkR+fv4N/lj+RP56Pgq+Wj5nPm8+bL57fmp+nX77Psv/JH8
-Mv3//bv+XP/R/w0AYgDPAD8BwgH8AewBIwKoAkUD1QMyBHEEoAS/BOwENgVuBWYFOAUYBfcEswRq
-BEEEEwTQA6cDmQN7AywDtAJmAk4CFQKrAVgBLwHKABAAbv8M/8L+a/7t/Tz9nPyn/Ff96/0X/gH+
-q/1x/X79Yv2A/WP+h/9OAK8AjADV/2r/6//BALUBzAJcAxYDlwKVAtkC6AL/AnkDSwQ7BRcGzAYi
-B58GYAVqBE4EuwRCBXcF8ASoA0ICQgGfAGgAjwDJAN4AzgDDALIASACJ/8H+B/6E/VD9Kf3a/Fn8
-wvs8+8b6qfo7+8D7sPu2++T7y/vL+wn8JPzK++H6Kvpo+uX64PoP++v7qPz3/FH9x/00/n7+o/7H
-/vH+Lv+P/7b/cv9c/4T/eP9s/73/PQCpAO4A/QAQARoBxwBYACUAHAAXAOb/a//s/r3+qf50/kX+
-Kf4a/hX+Gv5C/kP+z/1S/R/99Pyr/Fb83PtC+y37oPuM+/v6wfrB+t36V/vk+zT8Nvz1+6z7bfs/
-+0T7ifvi+yz8gPze/Bv9Jf0h/Tf9Qf0r/SD9Kf1e/eH9I/6l/TD9XP3B/TT+ov7R/tH+6P41/5H/
-q/9r/xX///5d/wwAmgDFAK8A0ABLAbQB9QFsAgsDVwNAAzMDNwP/AnsC9gGyAZsBvgFSAtwCtgIr
-AsABjQHcAdYC0wNjBHoEJQT8AzQEXwSsBGAF2AXhBRMGcAamBswGLwf5B2gILQhmCJ8JRgu0DKcN
-Nw5VDhAOBg59DuoO7Q6oDgoOzAxuC9AK7AoqCxoLogrpCRcJUgi7B2AHAQdqBp0FswTBA8kC0wHg
-ACUAxf98/yz/wf4N/jf91vzQ/D78eftH+xv7wPq3+tL6nfpG+lD60vpx++L7K/yE/Nv8AP01/b79
-av7P/gL/av8pAA4BlQG0AfcBfgLXAuECFAOBA70DsQOiA68DxgPxAykETwRgBJoECgUoBf8EHwV6
-BXUF1gQdBKQDPwPPAn0CSwLCAdIACABy//r+tf5g/hr+Ff66/Rj99/z5/Iv8A/x5+/P6hvrp+Wz5
-kPnN+Xj5y/hd+D/4Tfi8+Cz57Phc+Cz4d/j++HX5w/nj+cv5wfkP+p/6Pfu7+zb87fyU/fL9Iv42
-/pP+Tf/L/wIAQABzAJkAzQAFATwBjwG6AY4BVQE6AUUBOQG+ABQAtv+x/9j/4v+A/wD/8P74/nr+
-1P1n/fP8gvwp/Mr7avvv+kf65fm4+TX5nvhL+Cj4Lvh0+MH4tviD+Iv4wPjX+Mf4wfjN+Oj4J/lu
-+bX5Bvo9+oT6/fpE+1P7oftD/Pn8if3u/V/+0v4S/0v/zP9rALAAwAAWAaIBLgKfAgcDaAOMA5MD
-qQOfA4EDgAOKA3EDSAM4AwQDlQJCAvMBoQGUAasB0AEBAskBOQHsAMYAogCfAI4AUQAWACIAZAA1
-AFn/T/5d/dH8EP2+/R7++v19/bn8EPwe/OP88/3Y/sX/CwH3ASIC5AFmARgBhQF3AmYDHQRFBJkD
-mAI7AuQC+wPQBDEFSwVUBUAFFQX3BN4E5gQRBfwE2wRiBRIGEQagBSQFywTbBCgFKgXKBEIEdQOP
-AiUC7QGOAWABKAGgAAUAmP+B/4v/yP9JAIYAUgADANf/rv9F/7/+eP6E/rj+zv6n/lH+7f3S/ef9
-tP1Y/R799vzS/L781fwM/U79qP0X/nX+of7B/gP/ef/S/6f/I/+6/oz+P/6s/RP9pPzb/Ob9xv4C
-/zz/fv97/37/o/+a/0//Ef85/6P/yP+W/17/D/+//rT+1P73/t3+mP5y/jr+Dv4n/k3+Wv5S/kD+
-/f2y/eH9QP4u/sj9hP1V/Sf9Hf39/Kz8c/yI/LD8evwD/M372PsP/Ir8E/2A/bb9vP3F/aL9T/1X
-/dL9M/4j/t79tP15/VX9qP3d/YD9Lf1P/an9D/5d/mP+GP54/ef89vx7/ez9Ov6V/vP+Uf/d/4QA
-ugCJAHwAfwBLAPT/ef8Y/17/PAAXAXQBLgFaAGj/9f5Q/1wArgGLAloCWwGAAF8A9gARAjwD/wNz
-BOcENwVFBWkFEgYhB+wHJwhQCDIJ2gqEDLcNVg6IDlwO8A0qDhYPmw9tD9EOxg3BDGcMWgwlDOML
-bgveCl0Kpwn4CL4IqAgHCMwGcwVCBCQDUwL+Aa4BIwGvAEsArP8X/67+Cv4p/XL8+Ptw+9b6WPr4
-+aL5HvlY+Mj36PeA+C352Plw+ur6UPu9+x38IvwE/CD8Qvw5/DD8cPy+/Or8QP23/T/++f7M/0sA
-egD4AIkBwAElAqwC2AIJA3UDqgPIAyoEoQTgBMcEVQSSA8UCRQIjAmACsQJvArUBWwGKAYQBIwHm
-AMgAjgAEADr/yv6+/k7+V/1Y/IL76vqo+qf6kvpd+kb6SPpD+iL6+Pn0+er5sPla+fr4q/iM+Kb4
-BPmI+e75H/po+vj6cfvJ+6H8xv0g/sP9ov3N/SP+gP54/mP+fv5u/pr+Z/80AJoA6wBhAaEBpwHj
-AQ0C3QGtAZMBbQFHARsB8QDpAOUAvACJAHEAXABKAGsAowCNAP7/Sf+2/mv+UP7y/Vr99Py9/GP8
-8PuD+yD73/rF+sv6xPqV+oL6gPpC+v/5+vkd+mL6sPq5+qP6+/p9+437fPuX+7n78fuJ/F/95v0m
-/mn+v/5l/ykAbwCUACkBpgHFASoCwwLtAuUCOgOTA5gDwgMoBIQE/wSjBRwGOAZNBpkG0wbdBp8G
-SQYpBu8FdgUrBUIFaQUoBZ4ELQTKA1QD+wLTArcCoAJSAr0BTAEPAc0ArwC2AJoAXwALAKf/iv+d
-/2H/Ff8e/x3/6P68/rH+Qf+hAAMC3QJJAxcDVgIkAicDNwR6BF4EzgOAAl0BlQHIAqgDvgN5A58D
-UQQMBYEFnwVqBewEkwSQBI8ErwTIBDUEdgOUAzoEPQSXAx8DFQMNA7oCWAL9AVIBZQCt/zr/9P76
-/gz/8/7m/v/+J/9F/xn/qP52/mj+Dv7N/dT9uf1d/df8Svzx+wD8Z/y+/Lz8XfzO+3P7Uvs1+yn7
-PPtc+4n74vtF/HT8vvw+/Zz95v0q/hL+pv1o/YX9of1+/Wf9gf1//Wz9fP2K/YP9s/01/or+dv5O
-/kn+WP5f/lL+Iv6t/Qr9nfx9/E/8Avz7+wv86fvD+3P72PqK+tb6Kvsm++f6mvp8+qP6rvqL+nL6
-Qfoc+jX6cfqw+hH7lPuv+zj71/rs+jL7dvvJ+yX8Pvws/FD8fPx1/EX8Bfzv+wL8+/vZ+9T7Hvyp
-/Br9GP2o/D38Rfyo/Bb9ef2m/Wb95fx1/DT8Rfym/CT9nf38/Tb+q/6g/2cAhACJAMAAhQD1/0oA
-OQEjASkAff9M/4v/LwCHAFsAWAClAL0AygAxAbAB5wGnAWMB1wHtAukDLwQpBKwEYAXGBTsG2AaC
-Bz8IowhUCPsHUQhiCRkLNQ3BDhwPFQ8PD7EOuA6mD4kQiRDwD18P0A5eDpAOFA86D+kOLg4yDV0M
-8QuCC2EK8QgJCIEH1AYJBiwFPgSdAxEDGQIIAWIAAwCW/wv/QP5K/ZH8HPzI+5L7H/s/+tD5G/o9
-+h/6M/op+rX5evn6+cn6VPuu+wj8TvyK/Kz8o/zI/D/91v1H/nD+nv4M/5n/MACgAMUA8AA5AYAB
-8QHUAu8DkQTEBBIFfQXhBU8GrgbNBocG/wWcBXUFdwWfBaMFRgWgBNEDWQOhAw8EFwTcA14DzQJ9
-AjwCvQEVAV4As/8x/7f+Hv6D/R396vyW/Cf85Put+3j7pPsc/Br8gPvg+oH6Z/px+ln6K/oF+rL5
-N/n1+A/5YfnG+Rj6P/pq+sv6UfvY+0D8efyy/Av9X/2o/SD+e/5J/u/93f3l/eT9Hv6Z/vj++f7y
-/pn/eACoAJgAxQDpAP0APAFcAR4B2wC+AKEAVwDe/43/l/+6/73/sv+//8D/cP/0/rn+tf6M/lH+
-B/6O/Sn9Bv3f/MP86/zk/Kr8x/wQ/TL9K/3f/Ez82fvG+/f7QPxr/D786vvb++X72vvu+xP8Mfxv
-/M38AP3U/JP81fxm/bn98f0M/s/95f2i/hv/E/8b/0H/ZP/C/18AxgD4ADsBiAHNAdcBfwESAc8A
-tgD1AJkBLQJsAnMCfAKdAq0CwQIDAzoDGAPFAmkC9gGYAXEBcQFnASIB1ADvAEQBUwFbAewB2wKf
-A+4DoQO+AuwB0AEcAmoCtAKNAoQBPQCh/7z/UQDsAO8AdwAmAPr/3f/C/yf/T/7m/dn9BP5Z/nz+
-Yf4o/uf97/1n/vj+X/+s/7n/bv8e/+P+c/7X/Yv9g/1+/bH99/0V/iL+P/6Y/hf/m/8iAIYAiAAi
-AOb/LwCJAIAAHgC2/13/Bf/8/ir/Dv+5/n7+UP4w/lT+nP63/qv+nP5V/tz9l/2K/ZT9tP3A/Yb9
-9Pww/Mr7Kfyl/I38NPwK/An8L/xx/Jj8cPwn/FX81/zY/Gr8UPx4/D/88fs4/Jv8Zvwa/FD8tvwe
-/ZH9y/3I/av9fP1c/XL9r/3N/bX9mP2B/WX9h/3R/fL9D/4X/gP+TP7G/gL/Ov+h/wkALQAEANH/
-o/9v/1X/Rf82/1D/cP9z/zn/yf7G/mX/1//J/9j/8f/F/9f/OABUAP//n/+T/6r/g/8d/6n+X/5F
-/jn+dv4t/9T/7P/S////SgC4AHMBMQKBAiwCfAH2AOYAPgGyARwCfQLaAikDSwMvA/MC9AJiA+ED
-FATdA1ADxwJZAtUBdgGlASsCiQKnArICowKGAp4CFQPEAx0ECATdA8UDJwTxBEoFDwXuBCwFqAVO
-BiwHowiiCnIMrQ1BDicOvg3ODX8ORw/SD+0Pcw97DnkNKw2tDVkOrg6TDlAOKw7/Dd8N9Q0DDroN
-Fw1TDJwLAAuSChsKVwmACOYHfQfxBgoG6wTGA4gCVQGcAFAA7f8u/1j+ff2N/OL7j/tV+x/7Ifsz
-+6/6z/mK+a35WfnT+Lb4s/iB+F74W/hX+DX4F/gm+Cb46ffU91n4Avk3+V/5sfnJ+fT52fol/Nn8
-DP2W/Wf+Lv/r/2oAZQATAPv/SgDEACUBUwFWAUgBLAEXATgBeQHZAUECZwJwApECuALOAusCDQMb
-A/YCgwIPAvoBBQLHAS4BigAaAJz/Ef+7/lf+D/4X/rT9y/wZ/MT7o/ux+777uPt1+9r6j/q3+qD6
-Pfrd+Xf5CPnY+Pj4+viw+Fn4L/g0+EL4H/jH94b3lvfk9zD4YfiV+L344vgm+Uz5TPmG+f35cvrE
-+g77cPvH++r7A/xf/LL8p/yd/L38v/zR/Dn9of2r/aP94P1u/jn/v//B/+b/cwCZABkA1//Z/5X/
-RP8O/+T+A/80/y3/Rf+O/6n/iP9//8n/VADcAN8AMABs/xP/AP/u/sf+lf46/t39sf2E/XT93v1b
-/oz+tP7s/iT/Sv8t/93+gf4h/u39BP4V/uz93P3o/fb9R/6//u3+zf61/tH+F/86/xr/AP8V/0z/
-k/+0/7D/3v9yAEoBMwL+Al8DdAOaA9wDRgTNBEUFsgXyBa8FIgXrBCMFfAXRBUYGzAb3BrcGkgac
-BkoGugV6BZoFqQVzBRQFrARxBFUEJgQkBCMEngMPA/oC+wKbAt8BCwFXAPf/z/+O/0D/P/+T/8D/
-k/92/47/bf8U/9P+nf51/mn+Tv7u/Xb9fP3W/cb9cv06/er8vPzp/Ab9Gv1I/TP9Ff0a/fX8Dv2l
-/Sf+Kf4W/mP+oP6H/pH+8f5A/0f/Rv9b/3j/uv/+/wMAEQBCAGIAbwBiADUAAAC9/3j/Vv9m/3T/
-Yv9y/6b/sP+2//P/8v+c/3T/iv+O/0f/5f6c/iz+wP3l/VP+Vv7//cr9lv1Q/az9cP6N/in+6/3U
-/f39Xv5q/hn+6P0Q/n3+5v76/s7+rv5+/jL+R/6c/p7+cf6Q/g//Tv8F/9T+Cf9y/8v/5f/X/7b/
-n/+f/5L/d/9m/13/P//t/rP+wv7S/sX+0f4o/7L/FAAoAAIAxf+V/5T/tf/A/5r/Vf8y/3L/1P9G
-ANUA1QBgAIQA/ADuAMIADAF6AaUBegErAfIA1wAaAdABKwLmAecBbAKyAncCTwKyAjkDQwMJAwMD
-/gLOAsIC6gLuArwCegIqAuwBzwHYAecBrQFxAZMBxAGZARkBtADIACwBfQGTAX8BegGAAXoBqwEO
-Aj4CRwKdAiYDnQNNBFgFKgZXBkYGSgYbBsoFGQb/Bo4HjAc0B8AGzgaKBxcIEwhBCIgIZAhqCNkI
-GAnZCHAICgiRB0IHHQeZBtYFdgVYBTQFOgVVBVsFSAXtBFAE/AMWBPkDgQMiA6QC7AF8Af4A/v8a
-/9H+tv5c/iH+Vf53/jj+7/3m/Qn+M/46/tL9K/2o/AX8EvtF+hv6U/p7+pn6d/r8+cr5Bfr6+ZL5
-WPl9+cn5y/lx+Rr53vix+Lr41fil+I/4JvkL+pz62PoM+w77t/qw+kz76/sO/Ov73/sJ/Gn8rvyg
-/Lb8NP2K/aP9Av6q/kb/av8v/y//jP/q/xkAEQDN/4v/jP8GAPEAsgGwAQoBiAB9AJAAjwCMAGoA
-7/9g/yD/If8q/xv/K/9+/5X/Yf+Y/zIAjQCsAJgAPQD0/+P/5//M/4L/Uf9w/6L/cP/V/mP+Xf6d
-/hf/vP8/ACgAcv+6/qr+Wv8QABcAjv/7/n3++v29/eP9D/4P/tf9hP13/dv9YP6O/kj+J/6Q/u3+
-4/7F/rf+jf5B/in+Y/6N/nr+T/5o/hL/AACUAJwAUwD6/+D/iwDPAawCqALyAQIBrgApAdABWwJ3
-At0BWAGJAc4BnAFGAR0BFgEwAX8B0wH2Ad0BgwEWAQQBaAGuAZUBTgHgAHkAbACGAD4AxP+X/83/
-SQDIAOsAnQA8AP7/7v8/AMwAGQHKAOD/3v5k/pL+5f7M/lf+Dv4m/lD+Mf70/dT9vP31/Xz+sv5h
-/tv9Tv0b/Z/9NP6A/pP+Vv5N/oj+eP48/kn+kf6b/m7+lP78/jH/Rf9b/yv/wf6G/ov+kP51/ln+
-JP64/Vn9Wf3P/Uv+XP6B/gD/SP8x/xv/HP8i/2z/vP+L/w3/vv6n/o3+mf7p/iH/UP+n/+v/HgBB
-ACcA6f+e/2L/jv/j/8T/cP9k/1//Ff+4/nX+Yv6o/hn/gv/m/wQArv9T/4v/EwBhAE4A8P+S/3L/
-mf/B/7b/w/8NAF8AngDLANEA0QDrAPUAGAFsAZoBjwFzATgB9QDSAJ0ASwARAPf/8/8YAFUALgCz
-/4P/wv8dAFAAeAClALEAlwBMANn/av82/zH/9P5u/jn+df6X/p/+pP6M/qX+KP/J/xwAAQDD/7v/
-4P/K/3n/f//T//T/8P/s/7D/Yv+k/1AAsQDMAP8AOAFQAXYBpQHEAeoBFwJUAo0CmQJ/AnQCkAKH
-AjMCCAIvAnIC0gIiAx0DBQMpA3MDsQPGA6cDigOWA4cDOAPKAm8CcQKqAsMCqgI/AgECbwLUAr0C
-ewJMAmkC4AItA+QCVgLJAWABSgFiAYsB4AEjAgIC5AERAkUCWgJbArcCVgOVA4sDbwMZA5YCKQIJ
-AlwC9gJaA1kDKAMFA9MCcQL/AasBkQGgAawBlgFGAd0AowCOAG0AfgDHAO0AAAFOAfMBegJTAu4B
-8AE2AnQChQI5ArABUAFgAYQBMwHCAKoAygDcAP4AXgGLAU0BNgFtAW0BMwEcATgBWwFcAUQBLwEi
-AQ0BxQBrACwABwDv/8f/wf8PAHgAqgC8ANUArgA7AN7/8P95AOcAyABqADIAEQDj/7j/0f88AI4A
-hABoAIwAyQDUAIoA//+F/zH/8f7V/tT+9v4t/1L/gf+8/wgAYABIAMr/c/88/xz/Mv9a/4L/Xv+8
-/iP+D/4V/sn9kf2s/cf9of1V/fr8nPyP/CT9yP3r/eP92f3i/UX+l/5M/sj90f1H/oD+Rf7o/dX9
-C/72/Ub9kPxp/Lj8Ov2t/QT+h/4H/wD/cf6//WX9vP2c/lH/JP87/mX9Gf0x/Sn9uvyC/Pn8Wf0n
-/fP8hfy4+7z7tfx7/b39z/3H/Zr9gP3B/Wb+3P5V/jb9n/zU/Dv9XP04/Qj9Jv2N/er9Lf58/tH+
-uf7i/ST9Vf0y/iT/ff/H/ob9rfzC/Fj9kf1D/dn84/yo/Yb+nP5S/pD+8P7P/mf+M/5i/p7+kv5x
-/o/+v/5n/pL9Uf0t/mj/HgDu/wL/Sf7B/jAA3QCL/2r92PxR/s7/i//z/dr8Z/36/jkAFwDb/l3+
-fP9lAIj/U/7n/r4AswG5ANz+TP7s/88BeQEO/yn9AP6kAFAC8gG8AG8AMwFYAREABv/f/7sBjQKi
-ARUAdv/c//T/V/8N/6r/wgBfAQYBUgDS/4X/2P9ZAeoCZALF/8n9cP5kANUAHv++/d3+SAEYAmAA
-mP4J/4UAbQCz/sv9yf5dAFYBXwGTAOD/KAD9AEEBpwAkAH0AIgFbAU0BLQHqALIAwgD7ABQBRgGp
-AZMB8QAZAc0CSARIA2oA5P6aAGYDHASfAjkBdQFqAksCNQEsAUgDdQXDBGgBAf98ACAErAXZA0IB
-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
-TwAEAQwBXAC9/3z/Zf9//w0A6ABOAfcAtQAhAXUBvwCQ/3//wgDGAdoBtwFmAVoAc/8aAHcBzAF3
-AZABaQHQ/8b9uP3p/8MBXwHT/23/8gA5Al8Am/ym+1L/1gPDBDkCKf9L/Uj9AP8uAE3/Sv7//lEA
-XADn/oz9cv2y/Z39Gf68/30BUAGM/jf8dP09AOIAjf+t/nL/9wB9AQYAn/3C/GP+ngA6Afb/D/5a
-/df+jACZ/zT9d/37AMMDFgIL/Rj6zPzaAaoDXQFx/lL+ZQB+AHL9kvvv/Z0BBwLJ/qv7Jvxg/3YB
-XwAJ/ub9DgCRAOP98fuA/QEAsQCZ/yT+lP4XAfUB8v6f+0j8hf/KAFX/Dv5x/lv/Mv9l/Tv7Lvsj
-/rQBgwK1/+/7B/uA/ar/x/6l/BX9aQBQAmUAv/1A/Qj+pv7w/vH+9P5H/1//ov6H/Tz9IP4t/3L/
-Ef/6/v//aQFYATX/ev27/hABxwBR/k39Vf+8ATQBZP7C/Pv9dwBNAYH/gf0V/pYArgHq/6v9dv0r
-/2MBxwIPAoT/7/1P/4kBLgEM/k372fsn/wQCRgJZABv+Wf1T/sj/wQAvARYBUwB4/5f/IQBa/6X9
-IP2u/iEBcAJeAdb+h/2m/lQA3ACqAKMACwHVATMCFQEH/9/9hf5YAPAB4wEEADf+5f6RAQEDzAH9
-/0f/ZP+DAGsC0wLLAGf+Kv5pAJECGQKD/5P9VP4BAcsCvAFr/w7/ZgG+AxIDQwAD/6cAyALQAgoB
-hP8Z/y7/aP/0/58A+ABIAQYCygJ7ApgAu/7M/68DxgVYA6v/0v6vAEsCowGL/37+JwAKA7YDlwG4
-/yAAeAHSAVsBUQH+AW4C7wEBAY8A+ACfAWQBbwAaAKIAgQEhAsIB3gB8AKAAQQFMAugCgAI3Aa3/
-Nf+ZAGwCdwLUAJD/yv/yAMcByAGgAZgBHwF/ANIAFQL2ArgCvQGGANP/qACcAlMDxwEYAE8AzAHZ
-Aj4CEwDU/pIADgPQAkYAcv4f/1wBmAI/AY3+xP04AMsC4AG6/qH9Vf/uAPwACQDH/lP+nv+aAckB
-pv/9/TL/5AHeAnwBof+i/gD/igDNAT4BTf87/hX/RgCYAKUAhwDO/1L/9f/iAMcA8P+l/+7/mv9q
-/vv9nf8MAt0CMAGk/tD9Ov8LAa4BCAEBALf/WgDyALwA7/9O/6b/8wDvAXwBJQAD/4D+3f6g/3n/
-ev5O/iz/cP+V/m/90vx0/TX/iAD//zf+of1O/8cAn/8T/Q78gv3b/8oAKv9u/Jn79v1VAcsB5/6Y
-/LL9ZQAuAXj/e/1f/U3/XwFsAf/+//tx+z7+cgGxAUv/BP3Z/Hf+6//a/6L+2/2f/hgAcABG/13+
-wf6O/+n/cP86/nL9IP5z/3b/2/1w/Ob8Rf9sAb4Aq/1p+038Sf+2AO7+ZfwU/Pz9z/+U/5b9Sfx+
-/dD/twAsAJ7/dv+N/w8AdwCQ/+79xf1y/7gAwv9a/eX79fyz/5sBPwE3/2T9xf38/zoB8//a/XH9
-1/41ABwAnP5S/cj9Ov+l/8T+ZP5//+MAMAE9APb+m/5i/18A9QD8AGwAaf9h/sX+yQC5AR8AXP4H
-/7gBTgMHAdX8l/tM/l4B4AEfAAv+Pf0n/qH/FwCI/9b+fv7O/sv/fwADADT/0P+QAVwCcwElABUA
-CQEjAbH/qf4/ABEDUgM2AHb9f/5gAgsF1ANrAMH+dwAZA1IDLAGX/18AGwItAv//Cf7G/pYB+QPQ
-Az4B+/4m//sAMwJcAT7/h/7bACsEqQSFAVj+xv7CAX4DxAJCAa0AVAEpAhcCCQG5/17/tgC6AmUD
-6AGC/2X+2P9qAiADLgHh/h7/DgJwBE8D2P8O/iIAuQN5BI8Bmf7b/qABqgMzA3kBsgC6AXcDCQTj
-AicBfwCcASIDNQP7AfQA9QB7AcoB1QFxAb4ApwAzAXYBDgFUACsAJQFVAksCnQBW/lz9wv7zAB4B
-Gf+g/V3+FgDLAN3/kf7B/gUBpwPZA2EBRP+y/3UBNwKAAbcAzgD1AD0A9/71/SX+yv+QAbsBQgDh
-/gD/GgB/AIn/jv6H/ygCvgN+AnT/Lf0Y/Xv+nv/C//H/4QAZASz/vfzP/EL/IAEKAQQAMP/p/tX+
-u/4x/y4A4wAsAT4B4wDk/1v+tPz3+0L9DgAsAvkB9v///ZH9cv4w/07/Rv8Q/4X+9f3M/Q/+jv6E
-/4IAUAAk/5z+g/+6AO0AXQADABQAEwCx/0n/Yv/n/zAA/v/n/0cAmwBRAGr/ff5O/vD+j/+D/wD/
-n/5g/sj9zfws/B39hf8AARAAKP4z/Wf95P0S/i/+nf46/8v/+v+M//z+3f4K//j+r/7O/nD/DwAe
-AIn/4f7L/kv/4f/c/3X/aP9i/wj/m/5F/hr+L/50/pf+Uv4n/rb+Of+n/o/9MP3N/dD+jP+a/1b/
-jP8XABsASv+M/iL/oQBLAW8ALf+z/gH/cv82/23+d/6h/4gAPQD7/t/9G/5W/xQAsf/A/lr+6v5t
-/wv/dP5u/rv+yf6d/uH+z/9sAOL/6/73/h0ATgHAAWgBtgD2/zn/+v5//yoAYAA5ACUAUgCAAF0A
-GgAxAKwARQF4AewAMwASAIAAzgCnAGEAXACmANoAfwDt/9r/IwBZADIAfv/w/kf/EwCoALoASQDR
-/9T/dABGAWUBuwB4APUAMgHnAIQANgANABIAPQBvAH8AkwDKANUAsQDoAJMBJQIkArgBWwE9AV0B
-ngGwAYIBXwFNASUB6AC2ALcA+QA2ATUBNgF+AesBSQJyAjYC3QGlAWoBLgEaATsBagGSAaEBjwFn
-AT0BYAG8AcYBhQFcAUwBRwFfAWwBQwHmAIQAcACZAJIAcgBzAK8ABgEEAY4A+//u/5UAQAGNAaQB
-4gFLAnYCTQLZAVsBRAFyAVYBCwEvAWsBMQHkAK8AdQCGAA0BrwEIAgMChQG8AGkAvgACAcEAUAAh
-AFsAxQDEADgA3/8PAGAAdQBgAFYAEABh/yL/o//w/9r/1f+p/37/kv+A/1//l//+/1AAkQC9AOoA
-HwHzAEkAu//e/zsA6P8k/7v+nf60/ir/f/9R/0v/yP8mAAYApv9J/z//qv8nAFEACgCL/wj/oP6T
-/gf/tf/y/4f/9f66/r3+vv7f/kD/v/8PAAoA9v/6/+3/qf8r/9L++/4z/wL/xf7l/iv/a/+c/17/
-rf5F/mD+av5E/iT+IP5Z/m7++/2B/Wf9ZP1p/Zv9Df6m/vP+9P78/vP+0f7Y/gz/Q/96/5L/f/9o
-/z//CP/u/rH+TP5S/sP+FP8W/9H+iv6h/gv/f/99/wf/1f4d/4P/xP/P/63/jf+6/+L/Z/+k/lD+
-Zv54/l/+Sv46/i3+dv7K/pf+Xv65/kL/g/+o/8n/3//I/0T/5v4U/y7//v7N/oP+FP7s/SX+Pf4j
-/pb+n/89AEEAGQDg/+//ZgCTACgAAQA8AA0ApP92/0j/Af8D/0L/Qv8z/37/wv+S/4n/PwALAQMB
-QwCx/7H/zP+M/xL/2P4R/2T/kf+b/3r/bP/5/+EAMwHKAEoARwDZAFIBGQGWAGEAigC9AJwAHwCP
-/6T/YACrAFYAJwBVAJwAswCnANEANgFzASQBaQDJ/6T/+/9lAIwAfABuAIIAgABaAG0A4gBQASMB
-cwDv//z/cQD8AEsBUQFFAToBIQEOAf0A9gAWAUkBXAFHATsBKQEGAQcBPQFYAScBRwHKAdABYgEi
-AfIArwC3AAIBDQHVAK0AxgDZAK4AmAC9AOsAFAFdAc4BDQLfAZYBjAGWAWQBEwEXAX0B7gERAscB
-XwFOAZ4B1QGgAVUBawHfAUkCUwIJAtYB3QHVAb8BowF3AUMBDgHOAH0AhQDzADsBPQE6AYkBCAIL
-ApwBcAGAAXQBkgG2AW0BCgHBAGcARwCCAKEAjQB3AGYAiACqAGkALQA9AEAANQBeAKcAzwCWACgA
-7f/b/+D/HQCaAP8ACwHdAKoAqADfAP0ACAEkAfgAeQAsAC4AUACcAPgAHwHxAMkA3wDIAFgA5P/i
-/0MAgABpAB8A1v/G/+D/wf9r/13/2/9dACwAeP8K/wT/6/61/ob+P/74/en9OP7R/hn/s/5r/vT+
-kf+C/y7/9P67/pH+l/6a/mH+MP5I/jj+3v0P/rP+4v6j/nD+kP7v/i7/Mv/5/rX+x/4H/wr/qf4x
-/gz+Ef4M/iP+Qv5E/kf+if7n/v7+w/5m/jX+bv7d/jT/Mf/W/kn+1f3O/d79lf1W/cL9d/7A/sz+
-0P6v/nj+F/6u/ZP9j/2a/eX91/09/fL8Hf1L/Zb9HP6N/pn+bP6C/sv+0P6r/tr+HP8F/+P++v5S
-/8b/0v9T/9/+3P4f/yj/vP5E/jj+rP4x/0L/yv4o/gf+ZP51/lD+i/4I/33/1P8XACYA4v+n/7f/
-yv+0/6z/rf+H/5v/+f/u/2r/Dv8K/yn/Zv/Y/1sAmQCCAFQALgACAOL/7v8UAFAArgDpAJsA6f9o
-/zf/Hf8N/wf/Gf9j/8D/1/+q/43/g/9d/0z/bf+z/1AAAQEcAcgAfQBxAIkAowC4AKoAeAA9AEsA
-qQDcAAIBRgFPASQBGwFWAY8BbAEwAXEBKAJAAnkBJwGSAbgBYgE/AYIBwwHfAasBAgGTAM8A2gBq
-AFwArAC1AKIAtwCuAIIAbgBqAJ0ANQHLAewBlQFgAeQBpgLYAp4CdwJDAsQBcgGrAcgBgAF/AckB
-zQGbAYIBYAElATQBoQEBAicCGgISAkECYQJpAjoCsQGJAdMBvgFVASABLgFNAToB+gC9AHEAcAAL
-AVUB8wD5AJcB5gGrAXUBbgFYAVcBVQExAR4B+gCqAD8A4P+i/3//kP/L/w0AXwChAKQAxAAtAVQB
-GwHcAOgAMwFCAeYAggBbAFoASAAvAC0ANABYAJ4ADwFcAUIBKgEgAccARADz/9z/1v+9/5j/hv95
-/4D/1f85AGoAgwB6AHYAxAD/AK4AIgC1/2b/Sv9F/zD/AP/c/ir/2f9BACMAIgCuACQBMwFRAWgB
-OwHlAIIAFwC+/6L/kf9r/1n/Yv9z/5j/yP++/4X/hP/I/woADQDP/5D/m//b/+D/kf8//xL/E/89
-/1f/Ov8c/1T/qf/R/9T/sv+F/2T/Pv8g/xz/Kf/y/l7++P3n/fX9Bf7k/aH9sv0U/mT+zP5A/0D/
-HP8v/xv//v4P/9r+ff5t/nv+Vf76/bH91f02/oj+9v5O/z7/F/9A/5j/pP9Z/y7/YP93/wj/mP6W
-/r/+8f4Y/yH/Nf9E/1P/kf+5/4L/MP8l/1j/ZP8S/77+u/6+/qD+o/7U/tz+vf7O/tT+nv6P/o7+
-Yv5K/k/+Yv5z/mf+Zv6D/rD+8/4l//f+oP6H/nf+U/48/iv+Qf6C/qD+gv52/sn+Qv9j/yz/P//E
-/xQA0P9Z/xf/I/9u/4f/Qv8B/9b+o/60/j3/tP+q/53/AwBGAPj/m/+S/6j/rf+t/6r/yf83AHsA
-QgD3/9H/1P8LAEEAIwD1/ysAZwAzAAEABADg/7n/1P8AAC0AVABmAJ4AyQBiANX/2v80AD4A8v+0
-/7X/xP/g/0MApADbADsBrgHJAXwBLQEbARcBFAEvASkB1ACNAKgAAwFnAa0BpAFnAU8BeQHNARkC
-LwIeAkICgQJjAu0BbwEyASsBDQH7AAEB8AD4ABsBCgErAc0BGQLIAYoBhwFYAfsArgCLAJkAoQCY
-AK0AxAD8AJYBMQJgAkICKAI9AkwCIgL6AdUBmwGPAWsB5wCLAI4AmgDOADsBagFeAXkBtQG7AZ4B
-pgGOATsBIgFgAWsBHgHXAM8ADQE8ATwBTwFRAUYBnQEJAuQBVgEcAV4BgAFHAQEBzgCdAKwAKgF+
-ATwB4ADcAPEAAgETAdEAcQBsAJwAqQCVAH8AdQBgADcA5f+M/4f/nP+R/7f/JAB0AFYAEwD+/x8A
-eAC1AKMAiACSAK8AuwCrAI8APwCy/2f/p/8GABEA1v+v/+n/bwC+AJYAUwA3ACwA7f+L/3n/mv+X
-/3v/gv+5/+j/0v+0/6b/Rv/y/hL/Kf8e/xX/0v6F/nD+U/4g/gH+2v3i/WL+1/7+/k3/oP+R/2//
-gP9X/9b+jP66/s/+hv6b/gT/Iv8q/yX/Av8c/2T/nP/c/zoAVADF/xD/vf6V/mT+Ov4k/jf+if7d
-/v7+//4w/6r/EQAoAO3/qP96/0P/6v6K/nH+k/68/uH+H/9P/wD/jP68/j7/ev+M/0//2/7z/nL/
-mf9S/97+V/77/er9u/03/d78Fv2H/e/9Ov4T/tb9MP7g/iD/2P6j/vD+d/+P/w3/ZP4F/uP92P3s
-/ff95P0H/on+/f4I//H+9f4b/4r/AAAAAKf/ev+Y/4f/Kv/z/vT+Dv8q/x7/EP8U/xr/Iv9I/8n/
-QwA0APz/9v/o/9//1/+p/6r/w/+P/2P/g/92/x7/Kf/C/xgA6v/A/9f/DAATANv/sP+k/6v/0v/v
-/8r/df96/wsAfQCBAHsAlQC4APoAKwEAAbQAqgDiACkBSAEHAXIADwAlAHkAzgD+AAwBGAFCAXYB
-aAERAasAeACSAJcAXQAjAAIAQQCtAL0AmAB6AF4AbQCnAMcA2wD+ABEBJAFCASQB0gCrAKAAlwDO
-AF8BxQGVAU4BgwELAlECGQLEAaQBpgG7Ad0BzAGNAZAB2gH2Ab8BjwGuAdgB3gHeAdMBqwFuAUcB
-QQFMAT4BAgEAAUsBdgFRARgBEgE5AVoBdwGrAbIBfgFYATgBQAFyAT8B3QCoAHEAhwDZALkAZgBQ
-AFoAjACrAF0A8f8IAHIAeABOAGUAlgBwABAAEgBcAGwARgA9AFgAjgC7AIcAMQA7AIcArACaAHkA
-dQCrANoA2ADiAOYAoQBGAFIA3wA/AfkAdgA5AFEAYABXAFAATABjAFoAIwAUABMA5v+l/4b/cv8g
-/9T+8f4S//b+/P4S/z7/qv/7/xcAIAATABYAKADc/1D/R/9+/z7/5v7k/ub+3P4g/4T/ov+9/x8A
-ZwBSACoAJgBAAF8AbABXACIA6v/c//n/5/96/yT/Qv+S/8v/+/8TACEAVwCIAHgAKQDA/4P/g/99
-/z3/6/7I/tX+3f7m/tP+b/5R/rv+8v7f/uD+5v7p/vT+2v6p/nn+/v1P/Qv9Mv1t/dz9Uv5Y/iD+
-Mv56/of+jf7n/iD/6/7T/gH/B//w/vT+6v7r/jf/sf8GAPv/nf9P/03/Rv/h/mz+Nf4V/gL+//3c
-/YT9Rv1h/Zn92v01/l/+Uf58/t3+B/8D/x3/Pv81/x7//P65/lz+Nv6B/pb+Mv4w/pT+ov56/nn+
-ov7x/hP/+/4s/4T/j/+L/7P/sv+c/8X/6P/L/4X/If/V/sj+yP6y/qn+3/5L/53/tf+s/4D/Wv+J
-/9L/0P+u/6z/tP+4/8n///8uACMAJgBWAFsAQwAhANj/qP/M/zEAbABgAFsAXgBmAHUAdgCJAKgA
-nQCkAOkAEgHwAJUADgDC//3/OwD8/5P/hv/q/1UAUwD9/+b/HwD0/13/Jv9h/3T/Xv+K/+P/IgBg
-ALIA8wAKAQcBBwFGAbIBHAJ2AngC4gEUAZoAWwADANL/FgB5AKsAsACqAMkA+AA+AaUBCgJvArgC
-lQIhAscBhQEzAdUAlQCOAJkAiABLAPr/3P9BAMUAuwCUAP8AfAGjAd8BGgIGAtsB+QF4AvkC+wJu
-AuQBvAGqAXsBagFtAUoBSgHRAY0CwwJ9AmACjAKLAjIC8gEUAjAC9gH1AVwCggJkAnwCjQJQAgEC
-AAI4AjECAgILAg8C1gGnAYMBVAEgAckAhgCtAPIA0QDCAEsBnAErAfgAWwGLAX0BcAFTAVABTAHv
-AG8AIQDt/9//7P/C/6P/9P9UADUA2v/n/1UApACyAJcAWAA8AFUAUAAWAMz/kf9i/0f/W/97/4L/
-kv+4//P/VgCcAHUASQCAAL0AhQAaAPr/5/+z/5v/fP9Y/3f/kP9P/+3+v/7F/sj+zf75/jD/Q/8t
-/xL/C/88/5D/kP9J/y3/G//L/nT+Vv5u/qf+t/6s/tb+8v66/ov+wv4g/zT/Uf/T//L/Zf8f/0X/
-RP8p/wH/zP7w/nf/xv97/+D+mv4W/93/AgDD//P/SgAWAJf/Zf9o/2n/Vf/9/qn+x/4j/3P/tf+/
-/6L/kv9x/27/rv/M/3j/B/8Q/y3/zP5s/lT+Sv6Y/vz+wv5m/m/+kv6p/qn+gf5q/nL+cf55/o/+
-d/5H/lf+nv7U/r/+df5F/j3+Uf5s/lj+F/7o/Qr+S/5n/oH+u/4k/4T/gv9B/xH/9f7N/sD+5v4I
-/yj/Tv9L/xv/5/7i/g3/Tf+W/6//jf+M/5n/of/S/9r/kv9o/47/ov9P/xv/aP+U/3H/aP9c/0f/
-Z/+g//L/UgBhADwAWQBlAPP/eP9j/2j/Nv/4/uH+z/68/ub+NP9c/5//FgBwAIgAbwBIADgARQAo
-AML/p//o//r/1v+o/3L/W/+B/5b/hf+k/wMAWwCAAKIAwQC7AK4ArAC/AMoAgQAbABAAVwBxAG0A
-rQDTALoA7wA/AQQBmgBrAFQAfAC7ALsAkwBUABYAOgC4AO0A4ADfAK0AgQDPAEYBdgF+AZ0BBAKB
-AqsCkQJgAk4CdgJ0Ag0CnQGBAYABRQH2AOkAJgFeAV4BVwGKAdwBGgIEArYB0AEeAu0BgAFOATQB
-JAFFAV0BEQHIAAMBmwEQAgsC1AGMAQYB9wCNAaUBRQFCAWoBdgGlAd4B0wG3AdgBKQJdAkkCaQJG
-A2EEDAUaBZAElAM4AvUAXQARANL/0f/3/1kAxQCeAMz/5P5e/hn+PP76/rj/KABIAPX/Zv+L/nj9
-xfyh/PD8f/3S/dD90P3V/a79if3F/Tn+0/6y/20AwgDHAF8Auv9s/4X/o/+l/7f/tf+C/5r/7v/k
-/2//+P7J/s/+6f7g/tP+A/8b/wX/KP+K/8r/u/9//zf/P//k/3UAVgAYAEcAjQCCADEA6f+x/4P/
-f/+M/6b/4P8GAAkAEAADAPD/EgBUAI4AuwDVANIAkQBCAFkAqgCFAO//lP+L/3j/Uv87/2P/xf/2
-/8b/nP/R/+3/lv9w/9r/IwAAANb/tf99/4L/2f8GAKf/+f6y/uv+Hf/4/qf+ff55/qj+BP9J/1z/
-R/9H/3b/w/8TABEAmv8q/0n/tf+q/9z+0v1k/ev9tf79/sb+af5A/nj+3v4L/+3+vP63/if/s/9+
-/8L+X/49/gP+o/0m/SL9Hv6R/0wA4P8b/9v+Nf/f/zEA6P/J/+//qP8C/2j+Gf4d/vL9kf3C/Yn+
-I/8+/93+Y/5//jL/x/+Q/9r+kf7n/h7/j/65/a/9o/6m/8z/S//y/i//IQA9AUsBHAAr/7H/HAHL
-ARgB3v8r/5//ugD3AOv/AP9t/6YAPwHIAEAAfAAAAbIAWP8j/lX+rv/NALwAy/8w/53/dgC9ANT/
-SP7U/SX/9gDRAUcBLwDi/3AAuAA1AG3/Hv99/0sA9wC7ALf/4/5I/xEBjwIfAloA5/7k/jkAZgEz
-AWkAlQDvARIDhQKaAF//BwByARAC3gGwAd4BDwLRATcBqQCXAEEBKwJ1AsYBsAAyALAAdgGiARwB
-xgBSAQECsgGHAJP/s//0ABgC0wG7ADkAnwBIAV8BlgC+/87/xwAaAu8CdQICARsAgwBbAaYBYgHr
-AIQAfQAAAX0BRwHCAM8AXAHBAb4BTwG7AHQAfQCfAOwAeAHmAe0BcwGBALv/2f/HAJIBhwFNAaEB
-NAKJAoECOgLvAZsBJAH2ACcBMwEiAVEBxQEcAsgBqwBi/7v+NP9EAPMAUgG1AbwBCwHP//X+QP/p
-/8v/aP/f/8EA3gD9/+T+g/41/54AoAFaAXMAAwA2ALgA7gB7AOf/zP8uAKoA7gDoAG8Amv89/w0A
-XAHaASAB+v+R/yAA2QDVABYAhv/X/5MAyAAvAFH/G/+X/8T/Qf+z/rH+5f6V/j3+5P4JAH0A8P/X
-/ij+rP60/6P/PP6+/G38pP1D/87/S//F/pb+lv6z/tX+uv5U/pj+7f/CAOP/S/6W/fX9j/6x/pj+
-7f5u/2P/WP7L/K387f59Ae8BfwDT/uv9EP6x/r/+Xv6T/iP/LP/I/kv+5v0R/tH+nP8kAHEATABb
-/+395Pyd/AT9Rf77/70A0f9D/mL9of3O/rX/kv84/3b/KQCcAHwABAAu/07+M/7z/qX/Kv+l/cT8
-bf2I/sX+HP5x/ZP9gv5x/7r/xf8IABwA3/+0/8f/0f9U/2v+Cv7o/mYACAEjAMT+O/6c/lf/6//0
-/7P/zf8OAMD/Rv+6/7wA8AAxAI7/pv8oAI4AbgDH/0f/XP+0/zUAzwCqAIv/iv7b/koA9QDU/1f+
-Dv7V/rn/6f8Z/zL+qP5RAIMBmQE7AYkAev/S/mn/tgAlASUABP9E/28AngBv/4L+Ev+7AAsCxwFM
-ACz/UP/e/7D/IP9P/4QAugHWARgBuwA7AacBKAFqAIkAYwHLAQgB/P9PAAACJAOJAskAJP+y/rj/
-6wAFAbIAFQHsAXACRwKaAUcBfAE/AX0AFQBFAIAAbwBgAI8ABgF4AWIBEwEjAVsBEwGHAM8A+AH+
-AkcD7AKEAjkCfQFDAHb/MgCJAl8ElQMMATb/TP/1AG0CDgK0AKEAEAJHAwwD6AEmAR0BOAElAScB
-bgHFAesBzAE/AVMAAgC2AD4BJAEpAVYBdgHcAZUC6wIKAjUACP+s/z4B7gFpAcYAtQDyALgA9f88
-/wj/hf8CABoAsgAlAlED3wL+AFT/Hv/W/w8A5v+jAGoCxANcA2UBdf/f/mL///9wAA0BtQHhAYAB
-4QAvAHr/3f6b/vn+6f/5AHgBzwBy/4r+iP7F/pv+rf7S/yUBYAHbAEQAX/82/p/9Gv49/0EAmwA1
-AJH/L/8N/8j+Kv6i/ev9MP+xAK8BzAEYATYAoP98/8//QABHAOv/3f9IAGMA2/9M/xT/Hf9W/8z/
-XQCFAB4AyP/I/8n/sv+7/9v/qv8O/27+f/5s/yoACgB3/yT/df/M/z3/Lf7e/Zn+cP+8/4n/6v4v
-/tj9wf2U/ZL9Gf5L/44A2ADY/1D+Qf0F/Vn9uf0L/rD+eP+m/+P+cv0q/Pz77PwQ/sz+TP+9/8//
-O/9s/gH+Iv6u/kj/n//O/8z/hf8p//D+7v7v/rL+ZP5t/tL+K/8d/8H+Z/45/mv+/f51/1v/7f7P
-/v7+H/8V/67+CP6I/W797f1x/hX+Rf3K/J/83/yZ/Sn+V/6g/mb/pAB1AdwAL//e/c/9cv64/j7+
-jv1N/Y/93/0E/mD+5/48/1v/a/+Y/7z/z//9/08AuAC3AO//3/42/v/9KP6r/jL/m//0//3/vP9v
-/0L/hv8lAL4ALAFkAT8BpQDQ/2H/of8jAJsAxwBaAL3/k/+O/zH/7f4u/+H/2ABnAUIBEQHnAGMA
-1f+g/9f/eAAVAeUADACi/+r/BgDA/+j/bgC0APIAaQHwAR0CuwEqAf8AUwGSAXsBNgH0ABMBkwG5
-AQ4BUQA+AJUA9ABFAU0BywAsAB8AoQAxAUwBUAHjAXUCZQLaAUQB/AATAW8BzgEWAlICBgL7ABoA
-zf+C/0v/ZP+e/xwA3ABhAWQBBAGwAKUAygD6AEQBqAHKAZcBhQG8AbkBCgElAOX/OgChAPEAIwFf
-AbYB6wHLAZUBdgFXAWMBrgH0AQoCvQHtAD0ARwDIAC4BawG5ARICbgKTAloCDQLcAbYBhAFZAWEB
-cgF0AXwBZgE/AS8BIgH+ABQBeQGpAdEBRAKFAokCdgIAAkUBtABsAH0A7wAvAcIAQAAaAPz/vf+X
-/8b/JQB2AOYAYAFuATkBEgH+AAcBCgEWATABHgHlALkArACCAEYAUwBdADEATQCPAGkAEADz/xwA
-XgBzAHgAowDEAKYASQDf/67/zf/j/4L/5/6+/gT/EP/R/rz+s/6b/tP+OP9g/1T/Kv8C/xz/Sf8s
-/97+of6m/gr/Vf/3/lL+Cv4z/qn+V//1/0AAQAA+AGsAfwAoAJb/O/8n//X+h/5a/nr+V/75/fj9
-b/7u/j7/av+x/xQAOAAsACYAAACz/2v/Ev+T/jX+KP4P/s79vP0Q/rf+Nf80/wr/Nf91/2n/b/+/
-/8P/c/9W/yr/uv5M/u39wf3D/Zr9Wv0t/Qf9D/1k/dr9OP52/rr+/P4H//T+5P7Y/uL++f70/r3+
-c/45/u/9rv3M/TX+tf4p/0j/M/9C/2b/hf+0/+T/4f/A/9T/8f/I/4X/LP/J/rX+5f7u/sz+EP+E
-/3T/Kv8H/+z+Jv+X/5r/aP9g/0n/Gv8t/2n/Sv8B/wj/Jf8i/zL/Sf8s//7+KP9k/y7/6v4e/3v/
-kP+k/9j/6//6/wQA0P+k/9f/IgA4AAAAlf9t/8L/FQDw/6H/u/8ZAEUATgA4AOf/0f84AHEAUgBX
-AF8AdgCxAKMAYQBwAKUApQCYAKIAlQA7ANz/uv+5/8X/2P8eAJ4A1QCqAG4AMADv/9T/BwBLAFEA
-PAA1ADIANQBMAJ8AIgFiAVMBTwFdATcB6QDYAMYAdQBmAJEAkQDDAFYBlAFhAVYBdAGaAcABoAFP
-ARsBCgH4AN4A6AAZAUsBagFhAWABqAHmAcEBZAE3ATkBKgE6AVYBOQEGAeEAyADAAMcA8wAuAf8A
-pgDlAFIBOQHWAIEAYgCzADkBfgGDAYEBmAHCAYwBxwBVAKwABwHPAGoAXQCKAKYAsQC2AOgAZwHN
-AdgBqQF0AV4BeAG6Ad8BxwGgAZwBogGBAVgBUwFKASYBFgEGAdsA0gD9ADsBUQEdAeYA7gD/AAgB
-EQHYAIIAdwCaAJgAYgAJAKb/fv/o/20AbgBbAE4ADwAMABYA3P+q/4H/gv/p/z4AUQCgAAkB4QB3
-AIIA0ADaAJUAZAB/AKwAqgBjAPr/qP+E/3f/cf9p/1L/ZP/S/00AXQACAJr/d/+b/9T/9/8AAAIA
-9P/J/3//Sf9g/3L/JP/P/u7+Kf8e/y7/g//d//v/1v+7/67/W//2/gP/Vv9v/0j/AP/R/gb/Vv9r
-/5H/wP/b//n/3v+V/3b/Z/8+/zX/TP9L/xP/0v7o/kr/w/8yAIcA3QA+AVkBJwENARMB8ADQAO8A
-CAEDARkBNQEiAfQA5QAVAXgBwQGgAV8BcAGkAcUB6AEfAkAC4AFAAfEA9QAoAVcBVQEYAd4AvgBP
-AL7/fv9T/wr/2/7M/p3+Uv4s/hj+5/22/b397v0H/vT9/f1Q/lL+0P2A/Yr9ef02/Tb9bf1W/Rr9
-G/0p/SL9Fv3s/JD8TPxd/IP8evxg/F78c/yF/Hf8e/yh/Jr8bvx7/ML83Py5/Kz80vwZ/Uj9Jf3x
-/Pr8C/3u/NX80/zi/Pr8//z6/Pb8xfxs/G78/fx+/ab9vP3U/Sb+uv4E/+D+mv48/ur96v3o/aD9
-eP2S/cr9Lf7K/lL/bv98/8//PwCXAKUApADLAPsA+ADVAOUA5gB2ABcARgB9AGwAYQBwAG8AcgCw
-ACQBiwG5AdEB8gEOAiQCKALoAXkBIQHhAMwA6gAUATgBEgHPAOIABgEfAWUBfQFoAbIBBQLVAWQB
-+QCzAMgA8wDCAIAAbwBRAEYAewCKABYAuf/q/+7/gf+B/+r/AADu/wUACADf//D/LQABAJf/e/+g
-/7z/zP/W/9f/vP+M/3f/iP+9/+j/zv+q/7n/z/+4/2v/J/8n/1v/nf+y/5P/Zf87/zv/Zv+H/5j/
-qP+N/3//3v85AA0Ajv8Z//T+KP9m/5//6f8PADwAkgClAIoAqwDMAKQAfwCmAP8AbAE/ApQD1ARr
-BX0FlQXpBTYG4QUCBa0ECQVLBVQFeAX6BQoHdgiCCd4JMQrSCkkLPQvZCnsKQwr3CTwJHQgbB4oG
-jgYVB7AHDAhmCDkJVgomC4wLdAvpCnkK6QmTCBwHRAa9BVMFAQW5BNUEagXkBfIFwAWYBaAFzAX4
-BasFmgRjA5MCrwGaAPj/of8e/77+sP6U/n7+yP4W///+jf77/ZD9Nf2Z/N/7YvsW+7z6WvoG+rj5
-dPlF+Sr5B/nU+Kj4dvgt+Oz3v/eY95H3evcv9+P2gPb99b/14/Xs9WP1wPSu9LX0cPRW9Gr0a/S3
-9Gj1DPZ09tP2aPc1+Lj4qfiH+GP47feV98P3Q/im+N/4Y/kR+o/6/vp9+0n8Uf3z/S/+nf4g/17/
-S/8I//b+EP8A/6n+Uv59/ir/0/9SACEBLgLlAmQD7wMxBAEErwNvA0IDKQMUA/oCGQOKA+oDBQTp
-A5sDbgPIAywEFwQYBFEENAQBBCIEJwTbA1MDngIhAtIBcgE7ATIBCwHkANEAygDIAHQA9P+4/8b/
-DQB8ALgAhwAqAN7/1v/9/6T/z/5E/jP+Lf4A/q/9OP2o/EP8avzT/Nn8a/wR/C38cfxp/P77gvtI
-+2L7nvu1+6j7p/uz+5X7ePu2++T7kvtn+9H7Ivz7+7H7evtV+137rfsY/H382fw8/aP91P3A/cD9
-EP6E/vr+dP/Q/9z/y//+/y8AEQANADgAOwBaAN8AhgH9AUkCgAKnAtoC3QK/AukCUgPMAwYEEgRk
-BMIE2wTmBPgEGgVxBfYFZwaJBoIGqwYcB9YHpwgBCbII/wc9B/cGUweYB2wHOAcFB7oG2wasB3QI
-xAjQCLQIsggDCVoJOAlBCJAG6wQzBGsEtwR4BJADZwL1Ab4CLAQVBf0EdwT7A64D2AMjBNIDCAMe
-AgYBGQC4/6X/iv9J/8T+T/6h/n3/2v9l/4X+Cf5n/hD/Pv+k/qf9z/w0/Oj7B/xI/Fv8KPye+xb7
-Bvte+7L7mfv++k/6I/pZ+lv6M/oH+t35IPrA+g775vq7+tv6Nvtl+1X7evuq+3r7APuc+qX6Dvub
-+zv8yvwD/ef8x/zO/Pv8Hf0W/SX9QP07/Vb9kf2+/Qb+U/54/rn+B/8Q/xX/N/8i/x7/fP+g/0f/
-0f6T/p7+tf7y/oH/EAA/AEEAVwBsAIYAfQBCABUAEgAxAEIAAQCD/1b/jf98/xv/zf64/vz+O//0
-/rT+Mv+q/2b/A//6/v/+vP5g/i/+B/7L/aD9k/1s/Sb9Ff05/XP9tv2t/UT95fzu/D/9a/1I/f78
-8/wz/Sv9oPwN/BL8m/wo/YX9jP0y/aT8QPwO/PD7Jfyx/Cb9Rf1h/bz9CP4t/nP+jf4k/sz93/20
-/Sr9BP0+/av9kP6c/7kAKAIpAzUDIQOPAycEgARrBMoDBAPdAlsDBgSuBEIF2AWeBqoHyQjnCeAK
-Jgv3ChQLawteC5sKbwmICDMIPAiICPQIOwmECREK9woYDAANbg1iDdYM9AsICxoKLwmkCKMInwgz
-CNgH0wfiBzMI1AgVCd0IqwhFCGwHmAb+BW0F1QQGBBcDZAK6AeQANADr//n/QgCPAGoAm/+Y/hL+
-9f20/Sr9cvzK+3z7Qfu7+g36lfli+Tf5EvkV+Q/52/h2+Aj4v/eV96P3xve596f3yPfj98/35Pcr
-+E34Nfjq95z3g/dm9yf3Kfdw96v36fc4+Gz4mPgY+df5WPqV+pH6Ofrn+ef5Nfqo+h37fvsD/Lv8
-NP2H/ST+9/6k/wAASwCqAM8AzAAPAWoBpAEDAoACswKiAqwCEwO9A08EywRgBcYF+wVQBoIGRwbj
-BaoFtgXkBQYGIQYcBukFCgaZBuQGywauBnkGHwblBaEFSAUeBQEFBAUeBbQE+wPmAxUEqQMCA4YC
-DAKtAWgBDQGsAGgAagBeANr/QP81/4X/eP8m/yT/V/8g/33+O/5s/k/+5/29/br9qP2a/V392/xU
-/Mb7Kfud+kX6IPoN+vP5wvmS+Y35r/m4+Yr5WPlG+Un5ePnE+dv5z/nU+en5GPon+tH5kPnO+RH6
-VPr1+lD77/qh+gn7uPsY/C38TPy7/Gz97/0U/i3+Y/7P/lr/p//K/z8A7wBLAU4BPQEkAegAqwDC
-AAwBNgE+ASUBBAFOAQoCgQKqAhMDpwM7BEYFyQaoB1EHZAbKBS8GNwd0BxsGUgTrA7MEBgWzBLAE
-eAXABogHeAd+BxwIewiQB9IFswTtBMgF0wVMBAYCDAETAmsDwwOOA00D4AKOAoUCbAIJAj8BYQCO
-/2f+kf3D/Rz+mP2v/Gr82vyO/eT9Xf2e/H784/wW/br8MPzA+zD7k/oX+rD5sPkG+v/5efkQ+Rn5
-R/l4+ZH5gPl9+Y75zPk4+m76b/q/+jT7Hvu2+n76ZPpz+nn6QPpD+qf66/qg+uD5gfnD+TT6/frZ
-+/X7zPsh/I/88fyI/Qb+Tf5v/kP+D/7r/bP9nP2c/ZP93f2K/kP/6P9lANYAcwEvArUCmgILAq4B
-vAHDAXcBJQH+AOAA2AAWAV8BhQHGAS0CbgJzAoICiwJCAgMCJwJdAmgCUgIMAn0BBwEoAZQBvAHE
-ASECtgIVA+kCHQJsAY8BvwE0AZsAhgCuAJ8ACgBg/1v/vf8JAD0AFgCh/2D/XP8x/73+of4a/zf/
-wP6H/qr+vP7B/tj+DP9N/y//qP5b/pb+8v4b/zL/Vf+B/9L/BwC7/07/Qf9n/4z/0v8RAPr/q/+Q
-/9n/PwBzAIUAkwChAPQAWwEqAbkAywAgAUQBXgG8AQIC7QFCAhUDCQSLBRoHewcZB0sHRAg6CTkJ
-EQjVBpkG3warBnUGPAfbCIQKmAsCDFgMLg0MDhkOlA1WDZENpg3iDEILown5CEcJxgkoCocK1gp3
-C5sMrg0/DmAOMA6lDb8MVgt+CQ4IbQcKB2wGxAWCBa8F0gV3BfYEIgXIBfoFcQWNBL8DGgM7At0A
-a/9R/nX9pvzm+1r7Svu2+x78Vvxr/CX8fPu1+iH6uvko+YP4A/ie9z/3wfYj9qz1tPUB9gT21vXA
-9bX1efX19K/0BvWN9ar1PvW19G70fvTU9Eb1k/Wr9Qj2mva59nj2WPZ29qn28/Zv9xr4u/gQ+U/5
-t/lL+vn6c/tb+8j6Pvoy+qD62frZ+jn7yftb/Bz93P2h/oz/PQC3AE8BnQFtAVcBdgFhAUUBawF6
-AU4BTgGYAeABRgIcAzAEAgVcBYQFwwX1Bb0FFwWJBEoE/QOtA38DEwN0AjUCZQKhAtACCAMtA0ED
-MgPLAlECBQLTAX0B8wBtAOj/b/8q/+r+qf6F/i7+nv08/fT8jfwr/MP7Rvvh+pf6Rfrz+aP5c/mc
-+bH5WPkN+RH5FvnK+Fv4RPhL+CL4QPib+MX43vgB+Sn5UPlH+R35BvkE+fz4/vgn+Vf5hPnJ+fL5
-zfmS+Xb5x/mk+nD7vPvZ+zH81fxl/ZP9jf2h/fT9iP5H/8//2v/d/zIAowAEAX0BEwJVAnwCUQMV
-BN4DuQNLBOAESQWkBdcFEwZCBuoFgwUFBvwGVgfkBiQGtwX5BZAGgQaaBT0FPQYlB9sGeAYpB64I
-mQkKCTAIXQgFCdkIkwdWBiIGUwa7BXEEwwNgBHMFFAZXBq0GOAebB0kHTgZSBeIEygRDBBUDqQFY
-AIz/jf/8/1MApgAsAZYBrgGWAR0BQwCa/w3/A/61/O77dfud+rz5oflH+vr6Uvta+4L7F/yq/O78
-B/33/O/8KP0Y/WL8kfsz+zX7Vful+xT8Tfxk/Mv8VP11/XT9zv1H/on+hv4//vv9Fv5z/sL+0v7M
-/hz/uv8tAFoAiQC6AN0A2wBxAMv/pf8gAIAAXQA9AJ0AKAFSAQwB6wBDAZ4BtwHMAdsBzgHQAcIB
-ewElAfcAKgFCAcgAaQCEAKUAoAClAJ4AaABKAGQAfwCvAO0A1gCnAPAAeAGjAVkB8ACSAEYAKADt
-/1T/uP5e/kf+Kf7W/cb9Ov68/uX+zP7h/ir/Mf/V/lX+Gf4h/sT99fxn/GP8pPy+/JT8Vfxh/C/9
-S/6E/t/9if2w/dP95v22/SH9tPzT/Cb9Vv1E/TD9qv1M/jD+9v2y/qv/sv8S/+n+d/8IABwAqv8v
-/zb/gv+e/57/5/9rANYAKAF1AbwBzQGnAYABXwF1Ae4BaQJjAh0CLwKEAn0CFwIWAoUCpgKeAuYC
-RgNUAxYD/wIMA+wC4QLjAo4CUAKiAv0COQPpA+0EoQX/BVMG7wbVBzAIhgd9BsEFdAVlBWYFzAX4
-Bl8IDgnrCNQIdQlWCnMKywlYCXIJlwkVCd0HswYBBpUFjwXtBRAGAwZgBgQHmgcqCJ8IxQiSCOAH
-lgYUBfwDgQMCA/8BDAHVACQBfgFFAXMAJQCzABQBtQD5/0//5/52/ov9YPx0+5j6sfkX+b74qvj3
-+Hn5B/oU+ob5I/k6+TT5qvgG+H73IvcU9wv30/bC9jf36fck+OD3o/eV94r3X/cr9zb3hvcD+Hf4
-kPhw+ID4nfio+Pj4hPkO+rr6bPvF+8z7xPvc+xH8N/xO/Jv8Nv3G/Sb+nf5O/wgAtABZAasBewE6
-AU8BagFcAXUBjwGWAdABKAKIAv0CRQNfA7kDMgRkBHIEiQSSBJIEtQTFBGYE4gOeA40DlgPdA2EE
-yQTvBPEEwQR9BFsEGQSZAywD3AKKAj0C7AF8AfEAhwB6AHsALwDQ/3D/Ev8F/yX//f6B/uf9WP3/
-/KD86/td+2L7vfsF/Pr7mvs/+1f7hPtc+zz7Rvsq+9f6e/ov+vf5uPlT+Tr5ofkC+kL6oPr7+gX7
-+/pG+8n7JPxd/NH8Y/2y/dn99f3n/bL9lv3u/av+Sv+Z//P/awDNACIBTAE0AQgB8QAcAV0BmgHh
-AewB2gEnAqMC0gL3AloDvQMmBJ0E0ATzBFsFmgVRBQMFAgXgBKMEogSKBDkEKQRaBHUEjQTBBNgE
-qARPBCAEWwSTBDIEfwM/A6IDPQTKBEkFjQVoBREFagSCAxkDAQONAvIBVgGXAAwAGQB6AMgABwH/
-ANsAWQEjAlACzAEEATsAnf9X/zT/n/6B/XD81fvg+3T8/vwu/Qr9w/yb/Lv8B/0O/b78Xfz7+4n7
-Rvt7+8n7pPtG+037nfvb+wD88/u8+4/7jvvg+1X8gPxn/Hf8sfzd/B39cv2N/X79of0Q/mf+cv6N
-/sz+7f7Q/mv+FP4c/lb+qP4b/37/lf+v/xwAfwB8ADMA9v/d/+n/HgAZAKX/QP9D/5r/BAAxACEA
-KgBIAB0Apv9D/0r/i/98/yr/2P5n/rj9D/3u/Aj9wvyM/H/8T/yM/BT9Jv3//O38/vwr/f38bfwl
-/FH8f/yE/JL8wfza/M384PwJ/f38zPy3/Nn8Ev0i/Qb9Cv00/Sj9AP0i/Wf9iP2a/b79Cv58/vL+
-L/8a/9n+fP4D/sn9FP6W/s/+sf61/hn/q/8xAHwAswAoAb4BCwL5AeQB/wH4AaMBYAE/AfUA1gDz
-ANIAtAAKAbgBdwLpAs8CoAIGA58DvANwAxED5QLdAsMCiAIeAscB1wHtAc0B3gEVAiwCOQI5AkAC
-pQJSA6YDdQMdA+kCDgMjA5MC3QG0AQUCKwLEAUkBMwFnAY0BbgFbAdIBcAJvAvUBzwENAjICUwJx
-AlECpgIVBNMF5AZRB00HVAcECOsIGwl5CM4Hwgf0B80HtwdmCGoJ0QmlCcIJuwoODLIMgwxNDI8M
-Hw1RDZgMaQtoCtUJpAlQCaoIKggWCB4IEQhcCO0IGAm9CCIIVgeQBkIGIAaXBasEwgNdA3gDUQNO
-AgsBeABzADMAkf/d/kT+0f1j/aL8tvtO+yL7gfrG+WD5Q/mA+bj5pPmJ+UL51Ph0+Kn3b/al9ZD1
-pvWK9S711vT79Lv1qfZD97D3avhG+cf59/kj+kf6UvpN+i36OfqH+pT6fvrF+j37u/t6/Gr9Sf4G
-/83/vwBvAWcB9QCrALMA5AD9AAcBSwGuAfcBHwJCAn8CsgKoApcCggJSAmMCxQIDA94CmgKRAtEC
-CgMLAxcDIQMBA+EC2AKXAvQBVAHnAGgAv/82/+3+p/6Z/gD/bf+E/37/dv8v/6f+E/6O/Qv9jvwf
-/JX7F/vn+rb6VPoG+t35hPnp+I/46fjN+YT6M/r3+B34nPic+XL5GfgJ9zL3TvhO+Vr5xPhJ+Ef4
-r/hH+dv55/mJ+bn5YPqG+j76MfqI+lT7APwI/CX83fyr/Sf+X/51/r/+lf+9AGYBNwETAYsBHAJ5
-ArICuAKbApgC1AIbA0QDUwNrA7MD6AP6AycEPwT3A3QDPAONAw8EMwThA4oDTwP1AqICcgI1AuIB
-7gG/AnwD9AKlAQUBNAE3AZ8AwP8G/3/+Cf70/X7+L/9O/4/+oP2R/Vr+B//6/kX+kv2u/Sr+8P1A
-/e/8rvzf+zz7EPzq/eD+lf40/iv+c/4w//v/IAB8/3P+wf0e/mX/igD3AMcAZAC0AOsB1AJ6AnsB
-AwFMAeMBhQIFAxcDgALIAacB+wFJAnICWgLdAWMBkgFIAuACJQMKA2YClQFWAaQByAGZAWYBSAFv
-AbwBfQHaAHcABwB1/1//rf/r/y4AagBOAPv/5P8uAH0AgwByAHsAZgA2AGAA3AAfAbUAu//w/rP+
-kf6B/tT+Hf8Y/zX/mP/m/6r/3P4z/kP+wv4x/3X/nv+u/5j/dv93/4P/hf9u/y//+f7P/rb+qP5m
-/vn9z/0B/vT9of3n/ab+6P7m/kn/1v8/AIEAhQBPAA8A3//O/7T/Jf9l/vH9pv2J/cr9ZP4I/0r/
-k/9kACoBWwEzASkBYAGeAcAB1wHQAXgBAAGnAG0AfgDGAOkA2wC8AM0AGgFGAScB/AAvAYUBVgG6
-AG4AiQCQAIQAmwC3AJ8AYwBvANsAHQHOAJIA8AA5AfQAsADQAPIA9wApAUkBHgHqAMkAuQCtAKEA
-wgAXAUIBHwEkAXwBpwFmATgBfgG+AaMBfgFNAfEAvQDsADoBSAEyAToBRgFtAdcBJwIdAtsBrAHU
-AS0CMAKeAdgAPAD9/1UAGgGTAWcB2QCEAMUAUAGKASoBkwBFADYANABPAJ8AHgESAqIDNQVPBhEH
-dweZB+sHfAgDCToJ0QjoB0QHQAdaBzoHPAeUBw4IggjbCCsJkQkFCkwKUQpoCpgKTApcCSUI5Ab2
-Ba8FoAUzBYgEzgMuAwkDDgN8AncBtABdAAMAaP/Q/kn+n/0O/Q39V/1H/bP8x/vu+pj6zfrk+mb6
-hPmX+Nr3Z/cm96n2APac9XX1lPUT9nz2hfad9vP2Zffz90r4HfjX99T3+fdr+Br5b/lU+Uz5rPk7
-+pH6vPr++lT7tfsz/Mr8f/00/pz+1v5V/wEApAA7AXsBbAGjAS0CpQIAA00DZQMdA6ICSgIJAsoB
-xgH1AQsCGAIzAjwCAQJyAe4AwQCyAG8A8P9b/x7/WP9m/wv/yP6+/rz+hP4E/pT9R/3b/IL8dfxM
-/Lv7Ffu6+oX6O/oX+iT6HPo6+qL69fow+5j77fvm+7D7jfuJ+477ofuc+2L7UfuK+7f75/st/EP8
-XPy0/Az9Xf2+/S7+kP72/pz/KAA0AA8A+//y/xMAPABDAGgAxgAjAU0BKgE2AfABfgIxAucB9gHZ
-AcgB9wEzAmICTQIxAnACiwIqAtMB9AFeArgC8wIdAzgDMQMoAxYDwgJ0Al0CUgJPAjYC4AGMAVUB
-EgHbAMIAjABOACMA4v+f/3T/Qf8w/23/qv+6/43/9P49/t792v0n/n3+hv5w/nf+mP7s/nL/uP9t
-//T+8f4e/yb/vv+9ACMBbgEqAl0C6AHFAQ8ClQKzA40FcAc3CJAHmgZ7BgwHtAf+B3YHOgYtBeYE
-/AQCBUIFfgXhBB8EoQTPBfQFpgT1AvkBGAJAA5oE4AShA44Bp/+n/vz+NADrAFIAI/9Y/uP9W/3c
-/J/8cfwN/Oj7bvz9/Nv8R/zn+/77k/yP/YT+x/5Q/qn9xfzb+9/7yPyn/QP+u/0a/ZP8Kvwr/K78
-Ff0w/XD9wP28/eb9hP7c/qX+mf40/8f/o/84/x3/LP9C/5j/HQBwAEgAu//3/h/+qP29/cz9u/0L
-/qn+yv4t/o79PP2u/BH8JfzM/Gn9jf0t/av8Vfxb/Lv86fyQ/BX8xPtx+wP73/pG+5f7evu4+2z8
-uvyN/H38p/wX/f79sP66/rn+1v7F/m/+sf3r/NP8O/1o/a39eP7v/pn+Y/77/uj/cAB1ADUA0f9w
-/1L/VP9M/1f/Yf9T/2n/wP/4/7T/Xv+A/wYAvgCWAS8CGwKoAW4BZgFVAVsBlAGvAXUBRgGRASYC
-QwLKAWcBFgGBAFsAIAGeAQIBYABlAIMAcABYADwAyv8Q/7X+B/9E//D+yf4d/0L/LP+K/y4AXwBP
-AG4AhQBxAH4AjQAzAMD/oP/A//P/NgBwAIsAtQABAWMByAEUAiwCIwL+AaYBSQEOAQwBSAFdAU0B
-YAGUAQ4CwQJBA3ADWAMYAwkDjgPkBIwGygebCEcJiQmVCWYKpgs7DDwMCAzVC0AM/AxGDUEN8Axj
-DBAM/QvZC4QLKwvDCkEKHgp6Cp4KCQowCYcI8wdYB8IGQgbfBX0F9gRgBOIDWQORAmcBKwBu/yz/
-C/+v/ub98vwx/Jn7KPvc+nH60fkk+bD4n/jY+Cr5jPnt+f/57vkf+kv6NvpL+pL6x/ob+4/7ovtm
-+1P7YvuA+7D7+/tz/OL8S/34/cz+cf/z/5UARQHEARICKwIOAhACaALwAl4DmwO7A9wDPgSQBFcE
-1gN6A2EDagNwA4EDdwMDA2UC6wFsAdwAhABpAD8A2P9W/wb/4/6i/j3+AP7k/Yz9Ef27/Hr8T/wc
-/L77X/sf++r6hPrY+Tz5DPkK+bb4OfgX+Gn4+viQ+fX5N/pd+nz64fpH+0D7H/te+9b7Dfwo/Kr8
-P/2B/c79Rv6V/sX+Cf9r/+b/TACKAJEAfwCbALoA1gAkAXUBtAHaAb0BoQHPAQACBAIWAjICOwJP
-AksCFAIHAiIC/wGjAQ4BOACE/wv/mv5A/uX9df0b/eX8FP1x/T79z/yI/Aj8nvuj+6X7avsT+8/6
-0vri+qD6U/pP+on63voq+3H7iPt6+8n7dPwS/YL9tv2x/bf96f1D/rL+3f5z/pb99vw3/Qr+y/4T
-/+D+5v6F/00A3AAZATgBXgF0AZQB8gFKAmMCMgLTAbwB9wFCAr8CPgNCA80CLQKMATUB6gHTA5UF
-JwbhBU8FzATLBMIFJgeuB9gGOwUfBDkEzAQKBa4EsQOaAiYCPgLZAXAAhf6d/A/7gPpU+578+/zf
-++H5V/hA+Dv5fvqL+/D7+/v/+7f7UftD+3z7fPs3+0P78Pus/NT8p/ye/NX8dv2M/rD/jQDuAKoA
-IQDK/8b/XwCbAaUCvAJJAhsCMQIVAq4BYgGLAd8BzwE+AaEAPQDU/0b/0f6l/sr+Gv85/+3+e/44
-/uP9Mv3M/Cv9l/18/T/9Mf0m/Qj92vyy/L/8CP1q/WT9gfxg+xj7mfsZ/ID87Pwx/UT9P/1i/er9
-j/76/iz/PP9A/3P/1//t/6n/bf9S/0b/Sf99/+T/NQBZAFYAEAAAAJ0ARAGMAeABHQLrAboB1AH0
-AQUC+gHFAYcBSQEcAfMAhwAwAGgAxgDnABUBnQFvAiMDRQMEA/kCQgOWA54DSwMwA1sDNwO1AiYC
-wAGgAesBRwI5At8BmwGsAQMCVgJDAtMBVgHVAFEA5P/V//X/sP9X/3P/vP8JAJwAbQGyASkBBwHp
-AasCcwLiAXABIwE5AXwBsAHtAdoBiwGWAeABTgLtAnEDtgPfAxcEXQSHBGUEDQTFA6YDnwONA0YD
-xgIvAsMBsgHbAQQC+gGwAXoBtAE/AqgChgIUAvABJwKDArsCaALuAe0BPAIGA6AEdQa+B0kImggl
-CbMJUQofC7gL6AvSC7ILlwuyCyYMPQycC9oKXAofChcKCgqyCQAJOgiqB1EH6AYTBvwEBQQQA0MC
-8QG+AVIB4gCkAFcAx/9J//n+lP4a/qf9R/38/Mj8mvwm/Gf7r/ot+gH64/lw+ev4s/i6+NP44/jN
-+JL4iPjO+AP5Dfko+Wr5tPnt+R76Rvqo+jn7bftn+5/7IPz1/NH9Kv5O/qr+5v7y/hP/IP8O/xH/
-If8//4P/o/+E/4b/mP+R/63/8v/t/3r/Kf8+/2H/Vf8l/xf/QP9c/zr/3/6e/ov+cv5Q/in+Df7u
-/Y39x/zx+6H7wfup+y/7s/pt+h76ufmn+fH5M/oY+sz5pfmY+Zf5ivlb+V/5qPns+R36Zfqm+qD6
-v/pA+5f7ovvE+w/8cvwT/d39c/6P/m7+nf4P/zf/Df8Y/1r/Y/8//17/of+1/87/7P/f//r/aADE
-APMAGgEVAekAywCsAFoACADn/8P/kf9o/yr/uv5s/oP+tv7O/tX+z/62/oH+Pv73/cX9v/2u/Vr9
-0fxI/Bf8SfyI/K38wPyS/C78bPxf/QD+F/70/Z/9bf17/ZT9vP24/ZX9u/35/SL+sP6m/18AlQCo
-APgAYAG+AU4C1AK8Ak8CQwK+AnADxQNgA88C0wKBA2cE+AQMBfcECQUnBSAFCgUzBWYFEgVhBN0D
-EgRLBdcGtgeHB30GVQX7BL4F7gZcB6QGagUzBKcDWARHBRYFTgTgA3oDBAPAAlQCkgG7AAIAhv+B
-/9z/KAD//wD/m/3c/OD8FP1v/d/90f0F/d37AfvP+h/7tPtt/Bb9xv14/sr+y/7G/sT+8v5l/7L/
-6v9LAJUAlABKAAkAPgDqAMUBewL0Aj4DSgMqA/QCqAJuAmcCewJqAggCmAFWAfkAXADs//H/JQA1
-ABYA0P9E/5b+Cv6Q/S39If1N/WP9b/2D/Zb9f/32/FL8aPz+/Bz90vy1/KP8c/yB/OT8JP0W/Sr9
-d/2w/Sf+0/75/sn+mv5g/nj+5P46/3v/xf/f/6j/YP8u/x7/Zv/w/ygAGAAVABAAHgBIAFwAXQBv
-AEoAvv9c/1T/Yv+G/6j/lP9U/0X/T/9Q/8P/PwADAK3/xv/x/y4AkQClAC4Afv8G/+b+wP5g/if+
-Uf6m/t7+BP87/2f/p/8bAJ0ABQEPAagAHwDO/73/t/+t/43/I/+n/oX+k/6c/rb+uv59/k/+gv4K
-/7X/HQAJAMj/rP+Z/4D/qv/r/9b/gf8h/+7+EP9U/3f/nf/w/xEANADwAKEBmQFpAW8BeQG2ATYC
-SALhAZwBbgEmAeEAngB+AKsA5gDjAJwAUgAyACIALgBaAJ8A4gDyANQAkQBSADUAKABOANEArgEO
-A9sEWAY4B3cHUQeqB9EIEwrECuEK8wpGC/YLHQ1NDgEPBg9XDmQN3wzrDK0Megv2CewIdwg4CLMH
-vgZYBcgDmAK7AQoBlAALAFL/mP69/eP8afwS/JH7GvvK+q36HPvt+2L8O/zg+5H7Kvvl+jr7sfuW
-+zj7D/sI+zL7f/uL+zb70vq0+tD66foU+2X7svvV++L7DPxU/MT8Y/3m/Tf+p/44/7j/EwBlAMkA
-OgGrARYCfgLqAm8D6wMwBHgE0wT3BP4E7wSiBEwE7QNVA6UC3AEdAaAAIwDB/77/pv8v/6L+Mv7Y
-/Wj94vx0/Ar8hvtD+4D7tPuh+6/7z/u4+3b7Kfs2+7H7Kvxx/Kz88PwA/bL8Svz4+9z7Gfx2/Jb8
-hPyL/JT8i/yN/Hr8WfxF/Cz8Ufz2/Kv9EP45/jz+TP6D/uT+Tf9c/y3/cf8+AOIAJAFYAZMB+QGn
-AkwDsAPbA/ADCAQgBAgEoAMnA6kC8gErAbQAdAAXALz/s/+4/4X/Xf9K/yL/9P7N/qL+b/47/v/9
-vf2i/cv95/2y/X79nf3e/e39zv2+/c/93v3l/Rf+af6U/pz+iv5M/hD+4P2I/Tn9WP2Y/bX9xv15
-/f78IP2T/dT9Tf76/kr/i/8kAJsAsgB4ABMAFABwAKcA4QBuAdkByQGyAfsBpAJdA/UDUgRTBEEE
-PQTzA3MD+gJ8AhgC9wH3AeQBwAGgAXMBQQETAcYAXAAAALH/Uf/5/s7+xf6v/of+e/6Z/rr+Lv98
-AEECnAP8A2IDkAJuAhUD0AMUBLQD5QJvAsYCaAOrA40DWwP/AqACjwJtAtsB3AC0/x7/Zf+7/4X/
-Ff+H/q393/x2/Er8Gvzr++r73fti+576EvoK+lv6uPoh+8j7pvxi/b39q/14/Zn97v0+/qP+Lf/W
-/1sAaQAlABUAWACLALQADgFQAU8BFwGcAPL/PP+u/lT+PP6T/jL/lv9X/8f+gP48/q/9ef2o/aD9
-dP0z/Z78Afyh+2j7cvua+677CPyp/Nj8UPzD+477Qfvp+hD7nvv++1D84vxi/aH9rP17/R797fwa
-/VL9ev2j/bf98f13/v7+X/+i/87/+f8aABUABAAbAG0A4QBHAZsBxQGeAXIBbwF5AYkBZgEMAc8A
-qwB1AEsAKQDN/3X/Wv/5/pP+tv45/+D/dgDKAOoA7gDGAMEAEQERAZUAUQCFALsA2QA+Aa8BygEB
-Ap4CGAMlAxQD6QKwAqQCogKUAqQCsAJ8AlwCmQKrAk4CBALrAbcBiQGkAegB+QGgAUQBTgFDAcIA
-SwBVALoA+gAMAQ8B4QDNADABwAEMAhEC/QEVAnACxALyAvwC2wLmAi4DYQOWA80D1gPJA6YDSwPo
-AtMCDAM4AywDEQPyArACUwIgAhgC4AFuAeQAaAA/AIUACwF2AX0BPAE8AcsBkgIlA30D8wPPBMwF
-hgb7Bj8HdAfoB5QIRQn3CXQKowqmCrAKNAs+DB8NTw0GDcIMrAyVDBQMDQvdCfYItgivCDoIagc/
-Bs8ElgOBAlsBqQB2ACYAsP8M/zv+nf0y/aL84/sz++T65/ra+gH7gfu9+3f7I/v/+vn6OvuC+277
-W/uu+0D8n/yE/Cb81/uG+yD7+voo+2P7ivu5+/L79fvH+5P7Z/ts+5z7x/sN/HX8wPwH/Wb9hP1d
-/Wb9kf3l/Zz+PP98/8X/QACRAK8A0gDcAOwAMAF+AaoBnQFgARMB7AC+ACMAiP9H//P+UP7B/Zf9
-bv0G/aH8Ffx0+xP7yfqQ+mz6EfqW+VH5LfkO+Rf5LPkk+UT5rPkX+n762vrw+tn6zfrO+vj6QfuQ
-+/r7cPzO/AL9A/3K/JX8nfzR/Bz9X/1c/SD9E/0+/Tn98fyg/HD8ifz+/JX9F/5z/pD+l/68/rT+
-Y/5I/pH+4v4d/3P/2/8UAEEAlADFAKIAqgD7ABsBDQHuALQAigBoADoA8/+d/1j/MP8b/+n+bf7f
-/aH9hP07/Rj9Gf35/OX82vyR/DD8A/zx+/X7Lvxb/GL8gPzH/A/9Kf0F/cX8zvxY/f/9Sv55/sf+
-Av80/1b/Rv89/zn/MP+f/0kAcgBmALIACwESAQwBPgGNAe4BcQLFAq8CiwKNAoECVwIjAtcBhQF1
-AcYBOwJ/ApACtQIAAyYDHgMoAy0DHQMjAz0DcQOrA98DVgTmBAcFsQQmBLUD6gPlBPEFdQZSBngF
-fAQjBB8E1AN/A68D8AOBA48CgwGmAA4Alv9M/3D/EADLABABWAC8/jn9jfyK/IX8VPw5/Bz8yvtv
-+y/7+PoH+3z7A/zS/DL+lf9iAIoARwAKADcA7ADpAcgCUwOUA8MD7QP3AwgEQQRmBFIEFwT4A0IE
-rQSZBOYDLgPsAqQC3wEjAeMA3wDFAGUAwf8D/3n+Yf5E/rr9R/1W/X39S/3q/J/8efx0/KH82PzR
-/Kn8pPz5/IH93f04/oj+Pv7C/Qr++f6Z/4r/ZP9p/2v/jv/L/8T/cP8o/y3/d//Q////GABbAKwA
-ugB3ABUAv/+W/9b/WgC6ABABlAEIAjECDwK6AWIBLwEJAdAAjQB1AKgA1ADAAKAAdAAcAND/3P8a
-AFYAqgDeAK4AYAAlAAkAAQDZ/63/u/+v/1j/LP9C/1j/dv/F/y4AVABHAIQABwF4AcIB8QEUAjcC
-RAI/Ak4CSALdATcB1QC9AK8AqQCvAJwAgwCmAOkA6AC7AKEAgQBZAF8AmACOABUAnf9t/3f/gv9t
-/1T/Z/+V/4//cP/T/68AKAHnAIIAiQDoACUBFgH3AAgBMwFeAY0BhAEyAeUA0gDTAKsAZAATAKn/
-IP+k/mj+Wf5E/gj+qP1T/Sf9Mf12/cX97P0O/mn+9P5j/4v/mv/U/2MASwFAAvMCewMSBMIEiwVi
-Bg4HkQdHCAwJkAlFCl0LIgxbDGQMQAzzC5cL7gr/CUsJMQlDCe4IZQi2B7kGxQXzBOADtALHAecA
-LwCF/2v+S/2o/Cn8XPt3+uj5q/mC+Wr5lfnL+cT5pfl4+Vj5bPmS+df5WfrP+hb7Yvuu+8r7x/vM
-+8r7svu1++b7M/x//KT8kvxd/Bv83fvN+8b7gPtF+1r7f/uQ+577evs0+yv7PPtM+7r7YfzF/Bb9
-hv3R/R/+m/4H/13/rP8KAJ4AOgGfAfsBjgL/Ah4DUAN4A1gDLQMeAzgDUANPA1YDJQO8Am4CFQKW
-ASYB3ACQACsAx/9K/6H+E/6O/QD9vPyv/Jj8e/xi/Fb8VPxK/FH8j/zq/En9q/3v/QP++P31/Rv+
-Xv6a/q3+tv72/i7/Mf91/9H/zP/F/93/tf+N/7D/1//b/8v/w//O/8X/Zv/e/qX+qv6b/nT+ev6p
-/q7+p/7Q/g3/Pv+P//H/PACRAM8A9wBUAd0BQQJlApAC4gI1A0wDEwPUAtcCCQMWA/kC5QLDAp4C
-pAK5AogC/AFfAQcB3gCIAO7/Pf/0/hX/Bf+z/kz+4v3u/U/+Uf4M/tn9rP2i/bv9u/2T/YD9qP3u
-/Tj+Y/6T/v/+dP/I/xkAhwD3ADQBjAEwAq4C6gIcA08DhgOaA1MD+ALiAu4CLwPzA9gEHAWYBM0D
-MQMuA9oDlQTsBOgEoASEBOoEdQXTBQEG/AXqBdMFhgUABWoE6AOPA50DEgSFBHMEcQO1AT8Avv+1
-/2L/yf4y/pL9BP17/J/7w/pJ+j36mPrv+gb7D/sm+wL7cPrA+Tj5y/iK+LT4SvkL+rH6Eftd+8f7
-KfyL/PX8Zv31/bn+of9IAJQAwADfAPEACgFNAYsBbwE0AewAQwB8/yX/Lf8m/xb/F/8s/2D/O/9y
-/nj9m/wR/PT7/fvu+6/7L/vH+q36iPpx+pr6tfrI+gz7R/tj+4v7kft0+5L70PsI/ID8Gf1x/ZT9
-v/3k/e79Cf5S/oj+gv57/ob+ev57/pL+b/5A/mb+rv62/nz+Ov4U/u79sP12/Vv9dP22/Qb+b/7y
-/mP/o/8DAJQA6wDnALEAigB8AGQAKwDW/5//lf+V/67/7P8iAFQApQDzABIBJAE7AUgBbAGiAZYB
-SAH4ALUAhQBJAN7/k/+5/9n/qf+w//D//v8DAIEATgGyAbIBvwGvAX0BVgEsAS8BZgFuASQBxACV
-AJUAjAB3AHoAxgBdAe8BPwItArUBUgFjAXQBSwFKAVsBSAE2ATQBUQF9AbAB6QH9AfoB6AHhATQC
-cQITAqkBrAG0AakBxgHwARkCKwIMAu0BwQFtAUoBgAG1AcEB6QEmAi0CBAIYAosCGgPdA7QEGgUt
-BTAFKQWCBWQGaQdlCE4JJArpCm0LxAsiDIYM4AwvDWkNeg1nDVUNQg04DYMNGQ5wDjcOjQ2hDLwL
-+wosClIJiwihB4MGgwWZBKoDCQOdAr4BfABc/3z+6f2w/W/9yfz4+zX7hvr0+VD5pvht+Kz47Pgo
-+bX5Qfol+rD5yvlN+pD6wvos+377pvv7+1r8d/x0/Jn8zPzO/LL8wvwL/UL9Yv2O/bL9sv2Q/W79
-Qf3g/Hf8cPy5/PL8Ff0i/R/9Pv2Q/dv9+v0O/iX+Y/7A/gv/Yf/E/9v/tf/I/wEAPgCdAPYATwGx
-AekBIwJ3AqMCogKuAsUCwAK7AqoCNwKNAT4BTwE5AfMA3ADbAJgALAC9/x//ff4R/qH9B/2c/HL8
-Kvyq+yH7nfo7+hj6BPrk+cD5v/ng+dn51fka+nH6j/pz+l/6g/qo+qX6r/rX+uX6C/tq+277Kvtp
-++v7G/w3/Ev8FfwM/Hz8zvzt/A/9Iv1l/af9aP3x/Mb8yfyR/Db8JfxB/Eb8jPwO/U/9XP2E/bn9
-8f1D/oH+nf7R/hb/PP9d/4f/tP/4/zUAWQCIAJkAdwB7ALEA4QAEASsBPgFRAXYBbwFPAVgBawEm
-AXgA1/+E/0j/+f7O/sz+vP7a/l3/vP+L/zL/6P6V/mf+Tv4p/hH+2P2Q/Zb9s/2y/eD9JP4//m7+
-2/5G/3z/o/8xAFQBdwItA3wDWQMUAycDggPpA0AEYwRSBE0EgATfBDIFWQWlBQwGQQZYBhMGTgWD
-BDQEiQQiBZoF3AW7BQsFDwQMA/EBzQDj/2b/Ov8e/+H+T/5c/YH8L/wJ/I/7BvvC+pz6j/qT+mz6
-GPrI+bD54flO+gT78fvU/Hj9vf3B/cP9wf3K/Rr+k/7Z/vP+T//p/2sA2gBRAe4BrwJZA8YD1gOF
-AysDFgMkA94CPQLEAZcBggFtASUBggCt//j+mv62/hT/Zf+a/4P/LP/H/mX+Ff7b/en9Tf6//t/+
-hf5T/pX+jv49/jr+cv6z/vP+G/83/y3/BP8y/6z/xf+b/9L/MwBBABUAEAAGAOL/LQDcAC8B+QCs
-AIoAdgB8AJYAbQAmAB0ANgA6ACUAAgDh/8b/rP+S/4T/rv/s/w4APwBvAJgA6ABmAe0BOgJjAp0C
-pgJ7AlIC6wFIAdcAygDjAL8AkACbAH0AVADWAHIBdgGJAeMBCgIuAmwCagISApABRgFsAXkBDgGe
-AHgAYAA3AAoA6f/Z/+v/fQBqAeoBCQJIAocCjQJ2AmoCdwJlAgcCnwFvAU8BHQH/AO0A4gAGAVkB
-2AFoAtECAAPrArICdgI3AvEBogGNAXUBCQHNANoAwAC4AAUBJQHZAMkAKwFTAWUB4wFdAqIC5QIB
-A/8CDgNCA6ADFwSDBOYEdgUpBrwGUgcRCLYIBAk6CaMJAwoTCusJ3AkBCl0K9ApPCzkLHQsAC74K
-lQp5Ci0KrwkOCW0I2gdCB48GyAUZBWkEcgNkAo4B4QAoAGH/k/7N/Tn9uPzu++76EvqF+SP56PjX
-+Hn4/ffy9+H3dPdE9073DvfJ9tr2LPeh9/L38vcI+Dj4M/g3+GD4afhx+Ln4FflS+Xr5yvk3+k36
-AvrO+dv5FfpS+lv6Wfp7+pv6pPqo+rb63fr8+uj61Pr/+kH7TPs/+137hful+8j7CPxo/Lb8+/wq
-/Vf9z/1D/o3++f5z/9T/LgBiAHEAswDgALIAzABeAccBBQJVApoC4AIMAwQDBAPfAlUCDAJlAqYC
-bwIIAr4BeQETAdEAogA9AM3/mf+J/1H/DP/Q/lP+0f2T/WL9S/0//Qj9xfxv/BX8AfwI/O77zfuu
-+5n7kPuO+4X7b/uG+8r7EvxS/H78qfy7/JD8evyq/Mv8zfze/Nr8pPxg/Ff8q/za/Kn8iPyh/O78
-ZP3Z/Tj+f/6m/rv+4P7w/sb+sv7I/rT+l/7L/hf/F//4/h7/df/X/1wA+QCiAUYClwLFAhUDRgM4
-AyYDVQOOA4wDfQNxA1sDUQNgA3MDoAP8A2YE0QRFBasFwwWDBTkFLQVIBToF7gSaBIMEtwQGBTUF
-AwWcBJ0E1QSwBIUErwTYBAMFWQWFBTEFcASuA0oDKQMSAzkDsQMDBNoDkAN1A1MDKQMoA1oDjQOl
-A5MDAwMHAiUBdwC5//b+h/5K/hX+Af7s/cn9kP07/d/8pfzW/FT9qv2k/Wz9SP0k/dT8a/wf/Bb8
-OPx0/Kj8uvzv/D39b/2W/cv9EP5A/jz+Tf6p/qn+N/4K/gD+4/0I/jr+U/6t/gb/VP/n/zMA3f+b
-/8j/1/+h/1n/2P4P/nD9Wf14/YT9mv3O/SD+i/7i/g//QP93/7D/CQBZAFUAFwDM/2P/6/5p/vL9
-xv33/Wj+sv7P/h7/c/+R/5D/qP/c/+3/5v/k/3//1v6d/rb+zP79/gL/tv6+/gv/1P5s/nP+nv6r
-/pT+Tv4e/hX+6f2o/Y79k/3i/Vb+Zf5O/pD+0f6g/kX+Sv69/gb/z/65/gz/Nf8X/9z+dP4P/uH9
-4P33/Rj+Rf6S/ub+IP9L/0//JP8x/47/3P8NAEkAlADnAC0BPAEuARgB6QC3AJcAmwDQAP4A/QDr
-ANwA4gDWAIYAdADHAOQA2gAZAX4B4gFhAsMC4QLYApECQAIvAvIBZQEIAd0AmQA7ABMAYwDTADIB
-vwFPApgCkQJiAkwCUgJWAkMCDAK6AWQB8wBcAOv/w//G/97/DwB1APsAYwGkAccB/QFcArMCxAKd
-Ao4CqgLCArICrwL2AmUD5AN7BPsERwWMBSsG8gYgB7wGiAadBpYGdQZ4BqsG3AbqBvcGJAc8B/0G
-0wbgBq4GSgYoBjQG/wWeBXUFXQUZBc8EcAT0A5MDRwMeA0sDgANlAxgDyAKPAoACYQL5AXkBFwHi
-ALYAYwDu/2//Nf8x//r+1f78/iL/Bv+s/oP+p/57/u/9k/2X/bf9qv2H/Vv9C/3o/CD9Mv3j/Ir8
-Y/yn/Db9Yv0w/SH9Mf07/Tn9Nv0N/dz86/wc/VT9i/2M/Tj9+vw0/Wj9KP37/BL9+/zg/NX8uPyn
-/Ib8aPx//LH8y/y//M387/zW/Ln82fwb/Vn9k/3Z/Qr+Cf4A/h3+TP5n/nX+oP7O/tH+4f4j/2b/
-if9d/wD/KP+c/5T/Rv8O/+3+Ef+R//r/9P/c/wsAZgC1ALIAdABzAHsAPwAZADQAPAD2/5//rv/z
-/wsAEwAbAPj/4P8FAC4APgApAAgA2f+V/3//jv+A/zP/6v4X/6D/CgAnACgAQQBGAB4Azf9x/1P/
-Rv8h/xb/Iv/7/p/+V/5E/mL+ef5K/v/9rv1Z/XD98/0h/vD95f3s/RX+k/7h/sr+jf4v/v79MP46
-/sj9i/3U/QH+B/4+/nL+cv6M/gj/gv+k/8D/CQA+ADcAEADu/+D///9BAF4ARQAyAEAAaACCAIQA
-rAARAV8BVQFLAYIBqgGbAYIBZQEqAf4ABAHlAJ0AdwBoAFkATwBgAH4AXgAbAEEApwCsAH8AdgBR
-ABYAAQDp/6z/Yf8Z/x3/af+E/3H/sP8oAFoAZQCbANsA2QDBAN8A2ABxAAgAwP9y/x7/y/6M/oT+
-jP6e/sv+xf6l/qz+kv5F/iX+UP5+/mX+C/7L/cj9xP2l/Xv9ZP2F/bz99P1i/tv+Cf/9/vn+/f7V
-/or+Uv4V/sn91f0p/jT+/f3q/eH9tf27/QH+IP4j/jb+Pf5g/oj+VP4K/vL9x/2A/Wn9rf0C/gb+
-F/5+/tf+Cf8j/yH/NP9W/2T/df+K/2v/Kf8N/yf/Rf9C/zv/G//+/jP/eP/Q/04AkwB+AGwAlQCp
-AIsAhwClANAAEQEsAf8AwgCpAKcAogC0AMwAuACHAKYA9QC4AEkASgBhAEkAQwBoAKMA0wDSAPQA
-MAEAAakArQDcAPIAAgFFAY8BdQFSAacBDwIoAiQCHwI6Aq4CHAM2A0EDRwNmA6QDhgMXA+YC9QLx
-AtYC4AIXAzwDJAPzAvoCIwNCA20DowPjAwcE7APMA8ADtwOOAy8D6ALpAgMD/QLcAtcCxwKqAtcC
-HAMjAxoDJQMxA1EDVAMPA74CUALdAcwB1AGUAV8BdQGgAawBsgHoARQCEAJcAvUCSgNXA0gDJwMI
-A9oCnwJ4AmACLALxAe4B/gHIAWsBSAFuAaMBvgHYAfcBCwIdAh0C9gGvAW4BZgFIAe4AmQBEABQA
-MABFADMAQgBGABoAQADGAPIAxwDSAPQA8gDOAIMAQgAtAPX/qP+p/67/ZP9G/37/X/8S/0f/qv+f
-/1T/Vv+G/1//LP8//0H/Hf8W/zf/Tf9U/0z/aP/j/1MAggCmALEAqgDDANQArwCQAI8AhwBjACoA
-/P+y/1L/NP83/yX/Kv9A/zX/Dv8I/xr/9/7S/qX+L/4F/kf+Vf4r/vf9ov1o/X79nv2z/dz9Af4/
-/o7+eP4t/h/+Jv7m/bD95P0Z/vz95/0i/kL+GP7//e/9x/3C/dH9tf1z/UD9OP0p/f781/zU/Pf8
-/fzk/Or8Cf0c/Q79//z9/OL8q/yA/JD84/wh/Qv99PwD/Qb9Bv0r/Tz99fzW/Bv9NP0m/UD9HP3C
-/Lv84PzZ/LT8jPyM/Ln82Pzs/BT9NP1J/WX9e/2i/db97v30/er9Af5U/nr+ff6k/rb+tv7z/i7/
-Hv/8/iD/ef+6/9//+v8iAGEAiwB1AC4AGgAyADMATABwAH0AgQBiAEsAdQCRAIkAmADJAO8A8gDv
-ANUAnwCHAH4AMADR/+f/NAApABsAMAAKAAAARgCQANcAGQEoASsBSQFFAQQBtQBrACQAAgAYABEA
-tP+J//H/WgBiAHQAyQAhATcBEwH/ADQBhgGoAakBegEjAfkA8wC+AG0AWQCHALYA0wDoAPwAEAE1
-AW8BewE1AdEAfgA/ABkA5v+x/7r/6/8NAAcAu/9P/0D/t/8YABYAIgBBAFMAdwCUAJQATgC7/1z/
-a/+B/3v/cv9r/2//cP+S/+r/GAATAD4AnQDqAAYBBgEOARwBCQHuAPwAHwEyATcBMwEJAc4AoABn
-ACUA//8VAFoAdQBSADEAEgD3//b/+//x/+H/BQB5AAkBcAF9AWABWgFTAWEBewFKAc8AjADiAEcB
-JQHaAM0A5gATAUQBWAFWAVwBbwGGAYsBcwFfAWwBewF4AYYBogGPAS4B2wDxAB4BEAHfAMcA/QBf
-AZ0BngGjAa4BhwFrAXEBgQGiAckB7gHsAdQBxAGhAXkBTAE0AUwBTAE7AVIBVAE9AToBDgG1AF0A
-FwAMADUAYACNAM4A9gDMAKUAtACxAKcAuQDRANoAvwCJAFgAIADZ/7r/4/8PABYAXgDcAOEAdAAo
-AA4A6v/s/1gArACNAJEA8QAwAR0B8ADQANkA9AAFAQUB3wCWAG8AkgC5AI4AOAAkAD0AWACVAMoA
-1wDfAO8A/gAdARYBswBwAH8AaAA1AEcAcQBmADwAMQBhAHYAIwDY/xAAZgBDAOT/sP+n/9n/KQA4
-AAsAz//A//v/AQCa/0b/MP8e/xL/LP9c/0j/Cf8W/2T/g/9N/wf/+v4X/xn/DP8p/zP//P7U/tb+
-z/60/pT+hf6w/hH/Z/9g/xv/+/7u/sL+gv4n/s79vv2//YL9N/0T/Ub9nv2z/cX9Bf4X/sn9x/1M
-/mD+7v2W/V79Rv0n/f38A/0F/eP8Iv24/ej9yv30/V7+rP7W/hL/P/8d/8f+if5x/mH+Sv4b/uP9
-yf3S/cP92/1X/rv+8/5P/7L/DABwAJ8AhgByAFwAQQAqAP///P8DANL/tf+6/8L/+P8uAEQAqABZ
-AZIBPwEcASYBCAHdAMoApQApAMj/7v8LALT/Vv9A/2H/w/8qAEYAWACFAJMAlgCHAEkAFgALAOr/
-vP/A/9X/vf+U/7n/HQBwAMAABgEZASEBLAETAfIA6wDPAIMAPwAAAK7/l/+w/7T/r/+1/9v/GABM
-AHkAmwCNAIEAoQCxAI0AVgA6AF0AiACYAL0A7QDzALoAeQDJAIIBlQEVAeYA9QDuAOcA5gDwAPkA
-2gDIANkAtQBeAFkArADDAJcAjQCmAJoAhwCbALsA4gABAS4BdAGQAXYBWgFfAWYBQQEcATEBXAFx
-AXUBXwEmARIBTgF1AVEBMQE0AR4BxgB+AKwACwEAAaAAkwDGAK0AXgA5AE0AcgCTAJkAkwCGAB4A
-j/+S/9P/xv+5/7n/yf8qAJAAvADUANEAvwCvAFwAzf+J/7n/wf9t/zv/Wv+P/6j/1P8nAGcAoADi
-APYAzgCDAFMATQAtAOP/qf+w/8z/xf+l/4r/h/+R/5z/vf/z/zkAbgBWACMABgCz/0b/Sf9+/1D/
-9f7j/hP/KP8A//T+E//1/uv+Yv/g//X/uv99/13/Jf+6/mT+O/4S/g3+av68/r/+5v5O/6z/1v/P
-/9z/BgApAE0AYAAxAM7/Uf/m/qz+dv4g/tL9v/3+/XH+xf7P/rn+wv7i/tP+tv7a/hf/Ov8o/wz/
-Kv9J/xT/v/6y/tH+5f4X/1L/Xv9J/0L/Uf8//wD/zP7v/iT/3v6J/tT+Sf9U/1j/f/+n/9v/2f+O
-/2j/cv9e/13/e/+D/5v/w/+w/2//LP/y/rz+jf62/iT/iv/g/yIASABQAFsATQAJAPz/QAByAHAA
-TAAYAO7/zf+Z/0n/GP83/4v/7v80AE8AYQBtAHMAiQCbAK0AnABUABkACgD///v/AAD+/y0AdgBG
-AM3/wf/r/+L/6v8RABMA4f+k/3v/d/+M/7P/9/82AFgAlAD/AD0BNgEfAeEAagAXAD4AdgB3AIIA
-jgCTALMAzgCuAGMAPQBvANkAGwELAe4AAgErASAB1QChALYA4gATAWUBuAHuAR8CUQJ9ApoCgAIo
-AtEBswGsAaYBmwFqATYBJAEzAVMBYwFYAVMBjwHrARACAQLtAboBbwFgAYkBeQEXAd0A9wAKAekA
-oABxAHgAnQAeAbkB4QHhARwCcQKBAj4CFAInAkICPgL+AZABNwEAAcQAeQA6AEMAhgCsAKYAjACB
-ALYA6ACyAGwAYwBOACQA+P/N/8v/xv+N/z3/F/8f/zL/Xv+H/5H/ef9t/5v/pP90/33/n/+X/5z/
-qP+V/3z/Uf8y/2D/j/9w/1n/gv+i/4H/WP9z/5P/fP9s/4b/hv9q/3j/dv9V/2n/nP/J/+b/7/8U
-AFkAggCOAJYAkQB3AFkAVgB7AJsAoACZAI0AegBUAC0AMwA7AAAAs/+2/woAMgD1/7z/3f8ZABsA
-3P9r/xr/Jv8m//b+3f6o/jX++/0N/iz+Wv5+/pn+6f4a//P+2v7z/gP//P4O//v+ef4B/g7+LP7u
-/dT9Lv5//rv+Jv9n/0j/Cf/6/iL/M/83/zz/Hv/x/qb+YP5k/oT+mP7N/i3/hP+q/6r/t//p/wcA
-+P/a/6f/VP8b/yv/R/8P/53+Pv75/Qj+a/6j/rf+1/79/kr/lP+s/6j/hf95/63/wv9z/y7/RP9U
-/zP/O/+F/63/d/9Q/3f/nv+s/87/8/8MACUAEwDa/9L/7//q/+D/9P8FAOH/u//g/xUAKwApAAAA
-3P/3/yAAHgDz/8D/yP8cAGkAcwA3APP/+/8YAAAAxP9X//X+/P7//pb+WP6f/qH+WP5o/oH+hv6+
-/vX+Qv+z/9P/sf+Y/0n/sf5V/o7+3v7E/o7+kv7I/gb/Rf+Q/77/zv8AAEoAdQBqADQACAAbAE4A
-WwBNAEcAPABeAJcAZwDp/8r/DgBBAH8A4gA0AUoBOAEnAfwAzAC4AKAArQDiAPYAFAFTAWoBZQFF
-Aa0ACQA+AMIAqgB3AHYATwA5AFwAewBiACcAAAAVAGAAfQCJANAA6QDoADEBngHNAb4B3wE2Al4C
-ZwJ/AksCwAEyAcsAxAAoAWgBUQFPAVcBPAEqARkB9gACATEBaQG+AeABkQE4ASwBCwGbAEQARwB7
-ALcA2gDTAMIA0ADnANIApACaAMEA5ADlAAUBZAGBARIBrQCcAJ0ArwDOANcA+wAmAR4BHAH9AKwA
-dwBhAF0AYQBfAGAASAANAP//OwBsAHMAngD+AG8B4AH3AbUBkwFpARYB+QAEAfMAxACUAIAAcABO
-ADoAMQAoADcAWACJANMACAEwAXsBqQGOAWUBMgEEAe0A1wDuADQBRwH9AJsAWgAhANn/lP9k/zz/
-MP8g/+7+0v7A/p3+zf5A/17/cf/z/1wAHACs/2z/CP+Z/or+1v4v/4T/0f8AACsATAAkALn/bv9K
-/yD/Kv9X/0z/Qf9d/0j/H/8z/1r/Zv9x/4n/rf/R/+///P/Z/5r/Yf8g/77+jP6d/oD+R/5T/pP+
-qv6L/nv+gP5x/m3+u/4Q/w//DP8n/yb/J/9O/1z/CP9//jv+Yf5O/r39Xf1y/a390f0E/mn+qv7V
-/lP/9f8jAMf/Zv9Z/3j/bf8v///+6/7C/pf+ov7M/ur+7P4E/07/g/+T/7T/5//u/87/rP+b/4z/
-aP9f/33/fv9E/w3/9P7T/tP+BP8y/zz/Bv/b/hv/Wf8o/93+oP5o/n3+ov6d/rz+tP5b/oX+Af/3
-/sH+zf7y/hX/Q/91/4H/Qv/+/gr/SP+D/53/kv+Q/6v/w//S/+X/BAAcACwATwBVACUA4f+//+L/
-BAAiAFYAdgBuAFcAZgCRALMA1QD/ABsBEgHzAMAAZgD8/8///v85AFgAbABlACoABQBPAHgAKwD5
-/+//7P8VADoAKwD6/9L/9f9ZAGwALAA0AIcAyQDzABgBFQHdALMA2wAZAQEB9QAkASMBDwElAVEB
-agFpAXMBhAGcAawBsQHGAcMBqwGEAUoBOAE/ASsBFAHwAKYAlQDIAOMA1gCqAJoA1AArAV0BRgH/
-APMAJgEcAQoBNwEqAdMAswC/AMoA+wAIAeAAEAFkAWkBegGkAYgBdQGbAZoBSgEEAf0A7AC7AL8A
-8AD/ACIBdAGLAV8BaAGoAaEBTgEgAVEBhAFgAUYBcwF5ASkB9wALARsBHgFDAWMBUwEiAeYA5QAI
-AfQArQBzAHMAiABtAC8ALwBgAHEAkwDOAKAAHwAJAFoAYwAjAPT/wv/E/zEAkQCfAIoAhgD1AHUB
-UgHSAIIAgQBZAOL/p/+i/2v/VP+f/8//xP/q/zYAYAB3AIUAkACyALMAawAcAO//z/+3/5z/Zv8x
-/yH/QP+D/8H/4f8OAF0AnQCwAK4AnwBbABYAEgAgAPb/nf93/4P/d/9L/wL/qv7E/nf/5/+2/5D/
-lf9z/zb/8f6m/kn+w/12/bj9B/7x/dH92P2+/Z394f1b/mv+VP66/jr/Rf8r/1D/hP+P/2P/Ef/m
-/vL+Af/8/sX+a/5H/kX+Gv7o/dv95v31/Q7+Nv5U/kf+Gf7n/cX94v0J/vf9C/6I/v/+FP/6/tn+
-yP7F/q3+iv5L/hH+Ov5j/hn+9f0u/in+F/5r/sr+//4k/yP/Of96/17/B/8X/2T/hv+T/7n/u/9s
-/xT/6f7a/r3+nP6Q/qn+AP9E/zz/Nf8p/wf/Jf9l/2T/dP++/8H/h/93/4n/j/97/1//b/+v/9P/
-y//V/wcAPgBeAHEAeABnAD8ACQDe/9L/5P/2/9z///+7AD0BCwHQAMYAvQDBALIAjQB9AIIApgDR
-AIQAxP88/zz/cP+C/3L/QP8p/3X//P9tAJYAjQB3AF8AeADOAOsAnwBhAHQAswC5AEEAvv+x/+v/
-GQBCAHIApgC9AIsAbgC/ABUBKgE8AYcB9wE0AhoC4AGxAYUBRgEHAfAA0AByABEA7//0/97/1P8O
-ADAAFgAPAFIA7QCCAcgB2wHJAaYBnAFsAe4AlwCDAHkAiADAAPkAGgEQASQBwQFrApUCeQJXAjgC
-AwKfAUcBJQHzAJ0AjgDWAAIBDQEQAe4A7gAkAT4BPQE7ARwB/gAWAT0BLQHoAK4AqACPAFEANQAq
-AD4AggCXAJAAogCoANkAIAHwAIsAjgCXAE8AOABPAEIATgBfAFwAngDXAMIA3QAdARwBLAF2AYIB
-SQEoAS0BLQEYAf4AzwClAKkAuADRAC4BeAFHAQIBCgEoARUBAwERAfkAxwCoAJQAmgC+ALMAcQBM
-AEgARwA5APz/kP9N/37/uP+j/3b/a/+A/2z/Vf9r/0n/LP+U/+7/x/96/yr/3P7W/hX/UP9k/1z/
-X/+U/7z/h/80/yH/P/9U/2L/gP+C/0//Nv9b/2b/TP9F/03/aP91/13/Ov8J/8j+0f42/2z/Q/8Z
-/zX/Z/9Y/yv/Kv84/1D/e/93/0P/Ef/+/iv/fP+j/57/Z/8Y/xP/Dv+x/nr+qv6z/mv+gP7q/uL+
-lv51/mn+U/41/kD+Zf5m/nP+vP7S/pX+dP56/nP+cP6W/qL+ZP4T/t79A/5X/mX+Sf46/i/+Mf42
-/jz+Y/6E/on+sv7Y/tn+8/4M/wn//f7y/gH/Kf8l/+T+0v4l/1P/Cv/b/vL+8v4D/zz/Zv+V/6//
-f/9N/zr/Mv8q/9z+U/4B/i7+a/5X/m/+yP7Y/rb+xP7v/g7/DP8L/3n////i/5L/bf8c/9v+4v7q
-/rX+Zf5e/qb+6f5C/+j/egDAANAAngBsAFsAJQDm/+n/HABTAJAAowBRAAEAGABHAFwAfwDDACAB
-YQFSAUIBYgFaAfYAjgCnAA0BKgEoAT8BKQH+AL4AFgCb/9X/AADD/77/2v/P/wYARQAaAO7/0P+C
-/3X/mv9h/03/z/9FAGgApgAXAVYBbAGvAfQBGgKCAvQCzQJ7AjkCnwEMAcwAnQBtAFQAaQCdAMUA
-/AAxASAB/wAqAXsBgAFOAUkBXQE+Ae8AlABMAEAAawCnAOwALQFiAZABngG2ARUCXAIOAqIB5wFB
-Av4B0QHTAbUB7QFbAnICaQJlAj4CJQI3AkUCKwIBAgcCHgLwAZQBMQHRAJkAfwBbADwAVAC5AD0B
-gwFmASgBDwEwAW8BtAHoAc8BhAFrAT0BqwA0AA8AGwBQAIcAtwDFALEAzQAZAUYBQQFGAWcBeQGF
-AYcBfwGRAZ4BagEbAekAzgC9AIsANwAYAC0AQwA+AA8Ax/+F/1j/Wf+j/+v/4v/b/w0AMAAIAMX/
-qf+s/7D/3P8fACwAKwB+APoAPAErAeoArQB2ACUA9P8aAEUANgArAEwASwABAMD/tP/V/zIAqwD7
-ABUBEQEbASIB6wB5AB8ABwDy/6T/SP8y/0f/Sf9C/zL/LP8y/xL/0f7T/iX/av+4/w4AMwBQAEUA
-3P98/0T/4P51/iv+2f2E/XL9kP2U/dD9SP5X/lb+0/5r/9b/8//R/9n/6v+m/0P/Ef8C/57+3/2N
-/aj9nf2e/cz95/0B/lf+w/77/vP+6f4M/xb/5/60/qz+qv5s/hX+8P33/fP9z/3V/Tb+YP4e/iz+
-kv6y/nr+K/7o/c394f3B/VP9JP0d/Qf9M/14/aj9AP50/pb+hv69/gj/8v6P/mH+dv6A/o/+tP7N
-/tD+xf7r/nT/+P8gABoAAADq/wcAQABBAAkA+f8IACEAQAAyAAMA5//r/9P/jv91/2X/If/V/rH+
-8P4t/+n+xv5G/73/uP+m/4b/O/86/3P/dv9e/0r/Hv8O/1L/pv/B/8X/0P/j/wkAEQDf/8//BgAo
-ABQAEAAqAA4Ay//C/7T/j/++/xEAMgBLAIgAoQB0AEYALQAYAPT/yv/V/ysAcgBAACgAsQAkAS8B
-NQErARQBDgEMASMBSgFXAUYBMQHwAIgAcACqANsA6QD8ACUBOAFVAY0BbwEkAQABrABdAGwAiACZ
-AJEAaQCPAPsAPQFLAVABVAFmAZkBvwG0AY0BWQEdAe0ACwFIAToBJgF9Af0BLgISAvwBHgJbAmsC
-LQLbAYsBJgHwABcBUQFPASYBIwFhAZ0BngGdAdQB/wEKAikCQgIjAsMBcQFjAWgBSAEBAckAkQBi
-AKIA/QD7AOwA7wDZAOMAFwFFAVUBJgHPALcA5wDEAEYACQAUAPn/tf+k/97/EAAqAJQAGAEsARkB
-VAGMAWMBHQHwAN4AwgBxACgA6/+e/7D/FwAoANz/+f+bAA4BDwHtANsA0AC/AKIAlgCWAEgA9P8J
-ACAA7P+n/4H/jP+0/7f/cf8w/3D//v8bAMz/kP+A/2v/P/8p/0T/SP8b/yH/a/+S/57/6P9BAFsA
-XgCFALkAxQC3ALoAsAB7ADAA7//W/5//Mv8L/yv/Pf9W/4D/iv+J/7D/2//R/8T/6P8HABAAEADu
-/6//hP9V/9D+Xv6U/gj/Wf+0/+j/s/9z/4v/t/+N/xj/yv67/o3+fP6s/rb+kf5//ov+r/7t/vz+
-xv64/sj+pf6O/pn+Z/4u/kT+RP7+/d39CP4O/q79af2m/Sj+i/6w/rT+uv6e/lL+Nf5K/mH+gv5k
-/gD+/v1F/ij+sf1//bn93/0E/nj+yf6r/p7+4/4Z/x7/QP98/3j/Qv8j/+/+if59/gD/c/90/13/
-PP/m/qf+hv5g/if+zf3I/T3+eP5U/oP+x/6N/mX+f/5g/lr+uf4X/1H/tv8JALb/Af/L/jj/hv9J
-/wv/HP81/1z/of+s/47/uv8oAIIAeAAHALn/r/+D/0n/aP+4/8//1f8CAFEAmgCkAJQAwwA4AacB
-1AHgAdABeAEUAfAA2wCrAI4AmACuAKYAbgB3APwARwFAAW0BsQHgAfEBzwGUATYBswBgAF4AZwA8
-ABEAGwAiABwANgB7AMsAHgGsAVsClAI8At0ByQGoATEBzADQAOUAswB4AIAAogCgAKIAuADfADoB
-oAHPAd4BAQIdAgsC3QGwAZIBewF6AWABAwGzAI8AkAC1AP4AVQFiAUwBqgFGAjECigFEAYIBxAGg
-AU0BSQFbAToBAQHPALYArQDBAPIA9gDaABEBcwGCAVkBPQEqATgBdgGSAWcBPAEpARYBEQH9AM4A
-qAC1APwAFAHuAN0AxACmAM8APgGBAWABPgFBATUBBAHbAOEA2wCZAFQAUQBHAAcA0f+y/7r/4//5
-//D/wv+1/wAAKQDx/8T/v/+v/8L/2v/N/9b/zv/A/x0AiQCAAE4AQABHADgACgDu//3/+/8JAFAA
-RADh//H/YgCEAFsAOgAtABMA5P/l/yUAUgBjAIEAlwCAAFwAWQBFABgADQAjABEAsv9v/4T/eP8r
-//f+7/4U/2L/v/8hAGgAewBoAEIAUgCgAGEAXf+R/mD+Tf4o/gP+6v3y/R/+Vf5w/lT+MP5V/pr+
-sP68/rT+df45/vz92P0Z/mr+ZP5X/oP+q/7W/vz+//4n/4H/u/+9/5j/c/+F/7D/of9e/0H/X/9z
-/0v/Kv9k/5b/ZP8u/z3/Xf9k/2n/W/9H/1L/V/81/xb/B//X/r3+qv44/v/9R/44/u39Gv48/g7+
-JP57/sT+4v7Q/sb+6f7p/rT+uv7y/vT+t/6B/mj+NP7//Sj+a/5c/kT+hf7+/k3/af+P/7j/z//B
-/4n/Zf9o/3z/nf+n/5b/oP/J/+X/+P8dAE4AaAB8ALEAvQCJAHwAlwBxAA0Ax/+f/37/l//J/+L/
-8v/F/4D/lf/G/7f/k/9s/1f/h//J//P/BgDr/73/nP9s/0j/VP+G/7L/wP/N//D/LgBSAGUAogDP
-AOQALAFmAS8BuQBsAFkAcQCqAMgArQCLAJMAuADJAMEApABpAEsAfgCsAGoA5/+v/9L/4P/I/7L/
-m//R/2wA3QARAWQB0gH8AbwBngHDAYQB7gDWAC4BDwGcAH0AfAB1AKoA4QDkABABbwGkAbwBwwG7
-AcsBAAIfAvkBugGUAW4BOwFBAX0BmgGhAZkBgAGhAdIBuAGaAYgBVAEzAUMBJQHcAOUAGQEOAcQA
-gACLAOMAPwFVATUB+ADQAP0ARAFlAWABPQESAcwAawAwADYAdgC3ANIA/wALAecAEAFjAVoBFwHx
-AOQA8QAPAfsAvQCKAGwAYgA7AN3/rP/T/wcAIgAdAPv/w/+2/xAAewCKAHYAhwCHAHYAngDPALgA
-jwB5AG4AfwCRAIYAdgBTADUAWQCmAPUACwHgAM8AwwCSAHMAeACqABQBUwE1AQIBxwBqAAYAsf9a
-/wj/5/4Y/zf/Bf8R/2T/eP9Z/0L/Ev/e/uP+/f4O/wT/4/7u/jD/Tv8g/wn/Qf+G/6z/2v8kADEA
-+v/r/wsADwDn/7T/i/+K/7H/0P/n/+7/xv+f/6r/nf9V/y3/Lv8O/9P+2v4R/w3/0/6b/n/+a/4m
-/uP98/0m/kv+W/5U/lv+kf7G/sX+rf6T/mD+YP69/tT+kf6g/sv+pf5x/j3+DP4Z/h3+8/3z/eP9
-m/2p/ST+Zv5h/qT+H/9P/x//AP8F/9v+sf6t/qP+ef4w/gL+Jf5a/mn+fP7E/iP/X/9u/0//I/8s
-/0f/Jf/7/gr/Pf9o/2T/R/87/0P/If/S/q/+0P76/uv+tP6b/q/+yv7l/gv/Fv/m/uz+Pf85/x7/
-GP/b/tf+OP+N/8T/7f/u//X/HwAnAAwAGgA2ACwAIgAwABwA2v+k/6P/pP+K/63/4P/3/0EAiwCQ
-AGMAQwBqAJcAjQBxAGcAdwCGAG8ARAA0ADAAPABqAKUA1gDmAAIBTgF8AW8BYQFUAT8BJwELAfYA
-5ADKAJgAYwBwAJoAigBxAHkAhQC1AP4AGgEXARwBJQEtARwBywByAGkAgABhAEoAdwCQAH8AigDU
-ACsBUgFeAWsBeQGNAacBowGYAawBpQGDAXUBVwE5AVMBeQGCAaEB6AETAvIB2wEfAlQCHgLSAc4B
-6gHGAYcBpAHOAX0BAwHWAAgBOQEXAQQBIgH7ALAA1AANAcsAhAB0AE0AXwC7AAUBJgH6AKUAjACo
-AKwAjwCXAO4AOAE6AVQBewFJATIBiwHDAcYB1QHoAfkB5gGDAS4BMAEFAbEAuADkAOEA7AA1AWUB
-SAEoATwBWwFlAXoBmAG3AecBAwLhAZABFwFjANH/q/+O/1H/YP+9//r/FQAcAO7/6v9EAGAACQCi
-/zz/1v6e/pv+k/6J/nX+R/5y/ub+O/+k/zEAggB/AHYAkAB1AAoAvv+z/7f/vv+1/5v/gf9s/4r/
-0P/g/8j/7P8sAEAAQAAnANf/f/9U/y3/9P7l/vD+4v77/jL/Of8k/xL/BP/q/t/+Gf9H/yL/Ef8u
-//L+m/7Z/hH/tP55/tv+JP/W/n7+WP47/jT+Rv5S/kf+Wv6N/sv+Cf8Q/93+u/68/qr+e/5N/iL+
-D/4+/oX+iP5X/kH+Pf43/kD+NP4u/mf+qP7j/g3/Af++/oP+uP4L//n+wP69/uz+Dv8n/0T/P/9Q
-/57/0v+8/5z/hv9b/zP/Kf8o/yf/Qv9s/3//c/9B/8n+Rv5F/nf+T/4m/if+Mf5U/m3+W/5R/nD+
-r/4L/zD/L/9s/4f/Lv/A/oz+av4u/hr+bv7B/tH+EP9y/5b/nv+m/4v/e/+d/8P/4v8RADkAJADi
-/6H/X/8//2L/f/+o/y4AqADMAMEAuQDVANwAsgBqADsAXwBUAOz/vf/J/6z/hv99/2z/U/9Z/37/
-4v9nAJQAngC5ALUAvgC4AGkANQA7ACQAAADf/4v/Tv91/6D/j/+c/xYAnADPABgBogHqAdQBzQHl
-AcgBfQE9Ae8AigAnAPj/GwAkANv/uv/y/zsAkQDPAMAA1AA3AXYBdgFxAVUBJAEEAekAwwCDAFkA
-fQCvAKEAngDmABwBMAF+Ad8BzAFsAV0BjgGKAUwBFwEVAQ8B2wDRAPwAAAHbAOEALwFpAVcBRQFU
-AUIBDgHZAKgAjACtAOgA6wDDAKYAuAAGAWIBeAFEAUkBkgGiAWoBKAHjALQA2AAvAVEBJgEaAUwB
-ZwFuAY8BtgHVAeIB0wHhATECSgLoAYQBagFSAQsBxQCGAB0A0f8QAHAAZAAcANn/z/8cAHMAfwBw
-AF0ANgA/AEYA8f+z/8f/2v/i//r/FQD9/8v/BwCSAOsACwEQAR4BLwEUAesAvQCTAKYAzgDZAMAA
-rwDjAAoB3gCyALEArwCYAIoAlgCmAKEAewBZAEYALQAvAEYAQABKAIEAgQA6AAgA5/+g/3H/gP9z
-/0D/Lf8v/y//Cf/C/sn+9v7y/hb/Sv8l//j+IP8w/+n+wP6l/lf+Fv4n/nn+nv6A/ob+0f4r/2z/
-Z/8f/wj/Sf+L/67/zP/G/5v/eP9Y/zn/Of9R/2X/bf9v/2r/Yf83//v+AP9A/1D/H////gf/FP8J
-/9z+eP4R/vH93/3D/Y39Jv0H/Vf9pv3E/cH9kf2C/fb9hv6y/ob+dv7B/gT/z/5f/j3+bP6G/nj+
-d/56/m3+mf4J/z//Ov9a/4v/fv9T/17/iP+A/0v/J/8x/03/Wf9i/27/Xf8z/zX/dv+p/5//hv+o
-/+T/BQAiAC4ACwDe/7P/kf+L/3r/Sf8h/xP/FP/d/nn+gv4T/2//V/9W/2T/MP/p/sf+0v7W/q/+
-p/7Y/sv+h/6T/tv+4/6z/rH+6P4s/13/l//V//T/KAB1AKIArACXAFoAEwADADoATwAdAND/jv+T
-/57/eP92/7r/AQAuAFMAYwBiAG4AZQA8ABsAEgADAP//UQC2AKwAqQDoAO0A5gAVATQBAwGIAHYA
-FwFmAQsB6gAVAQ0BKwGLAZ0BfAGCAY0BsQHqAe8B5AHhAbgBhQFnATUB0QB7AIoA3AARASUBKwEX
-AQAB+wD+AA0BRwGeAfMBSwKOAtUC8gKRAggCjwE+AVEBjAGgAXcBPQEyAUMBSAFEAWMBsQH/AT0C
-YAJAAgEC5gHuAfMBBQIjAuYBsQHIAaMBagFLAfQArQC2AKgAawA0APr/2v8AABYA//8eAF8AcAB3
-ALMA8ADJAJsAyAAXATEBCAH0AAYBDwEEAegAzQC1ALAA8wBUAXABWwFQAVABMQHuAL0AsQCoAKIA
-pwDDAPQAFQE3AXABhQFgAS4BCAHgAI8AIgDX/5z/Yv8//zH/Mv8w/xj/SP+x/9L/6P8xAGAAggDM
-AOQAjwAqAOv/vv+h/27/Gv/2/vj+/f4q/4L/5P/0/+P/WADkANsAdgAZAAcALQA1ACsAGADW/5X/
-kv+V/2f/Ov84/13/gv+J/3v/X/9V/3X/l/+J/zf/xP5p/lr+dv59/oD+qf7X/tv+4P4J/z//J//Z
-/vn+Sf8c/5D+LP73/d39E/5n/mj+Kv4q/pj+BP8C/8r+xP7t/jT/e/9m/wf/vP58/j/+Jf4y/j7+
-F/7W/cb9yv2P/WX9mv3z/VT+s/7c/tL+3P7l/sf+s/7H/un+6v7i/gf/D//M/pT+n/67/rX+mv6U
-/sf+BP/m/o7+Uf4n/jr+pv7Q/on+jP72/j7/T/9I/yD/Df83/2D/jP/W/+H/kf9v/4r/e/9T/zj/
-H/8R/0f/sv+y/1L/R/93/3L/df/S/yEAHQATABkAHwAXAAQAKABaAEUANgB7AL0AkgAoAAgAOQBi
-AHMAdAB9AJ4AiAA7ADEAWQBZAFAAdAC0ANQA4gATAQ0BswB0AFgAgwDVANcAzwDZAJ8AVABKAG0A
-fABlAGYAnACrAFMAIQBYAFEAFwAtAFEAMAABAAgALwBPAIAAlABJABEATgCGAEgAAgAsAGgAkgDO
-AP4ARgGlAdYB/wF3AvAC8gKEAjMCWAJrAg0CtwHZASMCIQIJAjgCdQJTAgcCAwIjAhMC5gG3AUsB
-hwAaAFIAcwAxAOb/qf+Z/+v/WQCHAGwAIADk/wMAIQDF/1j/PP84/wv/2P69/rD+vP4K/4v/2f/4
-/yMARgB1AHcAFADk/zcAiAB4ADsA+v/f//X/2P+m/87/SQDmAHQB0wH8AQ4COwJxAoMCYQIIArAB
-oAGyAXEB9QCpAJkApAC0ALQAhQBiAKgACwEsARIBtABSADgACACK/yH/CP8b/0L/SP9l//b/cABj
-ADoANQBxAPgAQgElARUBKgEUAc8AhABAABIA6v/J/9P/CgBYAIAAfwBnAEYANwAsAAoA2f+5/5b/
-Qf/s/t7+2v6x/rv+3f7P/t3+HP8t/y//b//Q/wQA7P+9/3r/FP+9/n7+lP4g/1z/HP/8/gj/O/9h
-/xP/1v4c/2b/e/+s/6//B/9e/l/+mf6O/lf+Dv64/an9Cv5s/n7+cv63/kP/of/S/+f/xP+P/3v/
-aP8t/wD/7v7c/rn+ov7G/t/+1P74/kn/d/92/27/Xv9F/xr/8v7p/uf+2/7O/tn+If9T/zD/Pf9w
-/0P///4E/wz/5/69/qD+h/6P/qX+hv53/rD+BP98/6b/M/8Y/5f/vf+M/7r/4/9W/7H+1f5S/2D/
-VP+t//D/3v/X/7r/dP9L/zX/Of91/6v/sf+y/6n/k/+O/13/EP8Q/y7/cf/+/0IAFgDw//3/FADz
-/8T/vf+g/2//Sv8k/wn/Dv8k/0j/lP+4/2L/Q//Q/wUApv/Z/4YAugDcAEIBPgGeAAMA2f/I/3H/
-Kf86/y//7v4O/5j/+f8HACsAtQBXAbABpwE/AfsACwHZAEIA5f8EABUA2P+3/7v/ov+C/5j/9v98
-AOoARAGSAYEBRwExAewAmACpAPMA6QCnAJkAlgCAAIQAmwCjAIUATQARAOz/NwCAADUAJwCMAJUA
-dwDDACEBEQGzAJoA8QAwARIBDQFvAbgBXgHCAJ8A4wATATYBPgE2AWgBlgFpATUBWQGbAboBwQHM
-Ab8BoAGoAdYB7QG/AXsBbwFmAWoBsQHlAeIB0gHLAckB1gHvAewB0QG5AbIBsgGFASkB7wDYAL8A
-wwC7AF4AAAAhAHoAdABoAIIAZwCFAA4BYwFdAU4BMwEEAQYBEAHjALoAuwCzAKcAwwDOAKEAoQD2
-AEABXAFhAUcBKgEiAfYAmwBlAFgAJQD9/xsAKQAFAPH/8//4//T/8f8NAD4AZABtAE0AHgATACMA
-OwBDACoANQBhAGYAbwCYAJoAbQAnAK3/Yf+g/6X/KP8C/xX/6P7Z/un+zv7O/tv+xv7j/jH/V/9K
-/1H/e/+T/5X/jf9r/0b/Wv+C/4j/sP/z//X/y//N/xgAcQBwAB4A5v/n/+P/tv+d/6X/dP8n/x//
-QP9P/0P/O/9d/5v/vP+Q/zb/Cf8V/z3/Y/9G//D+mv57/q7+5/7e/s/+1v6b/lb+hP70/hf/1v5u
-/jj+of5g/7j/r/+m/43/mP/T/4z/yf5f/mP+Vf5N/pT+wP6E/kL+Wv7M/k//g/9b/zj/Vv+N/4n/
-Qf8R/zD/eP+2/9H/7P8MAAAA6f/Y/6v/m/+y/6H/mP/k/xgAuf8n//n+7v6w/oX+af4h/sv9jv1T
-/Rz9DP3y/P78j/0Z/kb+av5v/kP+Pv5t/nT+RP5O/rv+Dv8S/xv/Rv9Y/0n/Sv98/7b/xv+//+H/
-KgBSAG0AjwCYALAAyACYAEEAHQAaANH/Tv8S/0L/aP8//wL/9P4W/2P/0/8YABEAAgAbAE4AmgDt
-AA0B/QDyAAEBFgELAfcA7wDEAJAAiwCCADQA/f9PAJ4AZAAQAOz/5v8GAEEAUgAhAO3//v85AEIA
-MQBfAKkAtQCRAI4AiwBDAOX/sv/G/wIANQBnAJ4A1QAMARUB8ADkABABSQF/Aa0BtAGrAZ8BgAFi
-AVABLgEIARIBLQEoAQIBzQDCAPUAOgFyAa0B7gHhAXgBPgF0AZQBdAGFAcEBoQFXAWQBVgH8AN8A
-BwEgAR4BEQHTAF4AKgBNAHYAgwBtAHQAsgDVAMEArgCiAG8ASACBAPMARwFSAT0BPwF2AcQBuQFV
-ASQBUwGHAZQBmgGQAX4BiwGzAZoBMAEEAT8BfgG7ARoCVwJQAi8CHQIiAvsBzgHUAbcBbQEpAbcA
-HgDX//H/IQA3ABgA6/8cAIIAiAB+ALcA1gD+AGsBpQGLAVkBAQGsAHQAGwCt/3//dv8q/+X+Dv9V
-/4P/0v9MAMYAFgEcAeAAowCAAE0AHwAkACQA6f+u/5H/Yv8p/xX/P/+b/+X/FgBeAJgAkQBuAGwA
-ZgAbALv/jv9s/x7/zf66/tH+0P7C/uH+Df8F/+v+KP9w/zz/9P4H/w7/5f7G/pz+cf5z/ob+s/77
-/gf/AP9c/9D/6v/v/xkALQD//7H/cv8e/9T+2f7w/tb+vv7W/gb/TP+F/6//5v/r/7v/r//F/5f/
-Lf/R/sP+//4C/6P+af6X/s7+8v4a/yv/Kv8x/3b/+P9DAAoAkv9j/3r/bv9H/x3/wv53/pH+v/6u
-/n/+Pv4j/nr+yv7Q/s/+1/72/iT/LP/7/tP+1P6u/lf+RP5s/j3+7v38/Rf+Kf51/rL+n/5//oD+
-k/6m/pv+hf6G/nH+Wv6O/uv+Hv/v/rT+6v4o/x3/Gv9H/4r/y//z/+z/1//U/6n/Vf83/z3/Qf9W
-/33/l/93/zn/T//B//j/1f/C/2z/4f7g/tj+SP7s/cf9m/3S/R7+Cf4V/pn+9/7b/u/+Uf8t/4n+
-Wv7A/i3/jf/J/7n/sP/n/zwAbwBPADIAXQCNAIQAfAC0AK8AQgAPAFkAzwAJAeQArQDPADIBZwFo
-AXIBiQF7AUcBQwFdAUABDgH3ANEAhgA9AB0ADQCr/zD/TP+q/6T/i/+s/77/4f9bAMcAyACnAIEA
-SwAoAOP/l/+h/9X/+P8GABcAFAD5/xgAbQCZAJ8A4ABgAYgBVwEyATMBXwGTAZwBfQGOAdQB+AH6
-AQcCPgJ+Ao4CrgLkAs0CgwJvAp0C3wL9AucCtQJYAvQBtQFfAc4ARgAOAC4AVQAsAAcAQABhACsA
-7f+l/2j/hv+//7X/p/+//77/mf98/7H/TwDpACcBMwFMAXsBmwF3AUoBQgEwASoBKgH2ALYAmgCX
-ALAA3gASAU4BmgHZAc8BowGkAa8BhQFhAYcBuAGjAV4BIAH2AKMAMwAsAG0AbQBNAGwAewA6ACUA
-SwAmALr/jP+3/7r/lf/y/4EAhgBtAG8ANgAGAP7/+P8XAGUAogCZAGAAJgD//9T/g/84/xf/HP82
-/zX/L/9O/4H/pP+q/4n/Yf90/4r/dP+L/9T/9f/k/7//gv9u/5D/jP95/5H/sv/G/+P/EwA9AF0A
-pQAAASABEAHrAJYAHwC8/3v/YP+H/9H/8v/h/+H/3/93/wL/Hf9O/y3/N/9J/wb/of5B/gL+E/5k
-/rH+9v5B/2L/b/+N/33/FP+p/qr+4f4D/0f/lf+h/3v/Qv8r/1P/cP9f/zv/Jv9O/4z/ef8T/9D+
-1/6v/jP+wv2h/dT9CP4D/vv9Gv4t/iT+Qv6b/v/+Cv/K/r7+qv45/s79uv3o/Sf+P/5O/oH+tP7K
-/vf+Y/+f/5T/rv/e/+P/0/+U/xX/pP5e/kP+V/5h/j3+EP73/RX+mP4r/0T/9v7w/mn/vf+w/5D/
-Qv/r/gf/I//t/vn+C/+U/iT+bf7//h7/HP9Y/6D/DACYALoAXgAzAH0AsgCCAC0A+P+Y/wT/3f4N
-/xH/9P4T/3r/AwClABQBJQE9AaIB+QEfAjsCQQJnArAC4AITA14DjgOwAwAESARVBGMEYAQnBB4E
-jAT8BN0EjASQBIUEPgQaBA0E5QPSA+0D4QOYA4IDogOlA5kDmgOZA5oDpAOLAyoDtgJ0AlwCKQLX
-AboB2wHNAXABCgHPAKcAZQAcAN3/o/98/0z/5/6U/qP+c/62/Wn9pP2J/UP9/vyS/IT82PwO/Tf9
-dP20/QL+P/5K/nz+8v47/0P/b//G//3/GQBVAJMAqADNAA8BFwHxAAQBKgEcARABEAEWAT4BXgFV
-AV8BcQFQARgB3wDBANQAzwC1AK8AjQBzAKAAxQDFAPUARQFXAT8BaAGrAaIBcgFnAY4BqgGuAewB
-OAIrAu8BvAGTAZwBxAG3AZoBygEnAjQCBQIIAhwCCQIBAiMCLwIIAuMBuwFzATMBEQHqANEAqwBF
-AOL/if83/w//9v6y/oH+pP6a/g3+Sv2y/FL8/PvO+/j7K/wi/Pv76vvm+7n7fPuA+7T79/tu/ND8
-rPxW/Db8W/ya/Ln87Pwt/QH9tfzd/Av96/zV/OP87PwB/UP9k/2E/fn8ZvwM/NH7i/tS+1n7WftI
-+2X7bPtV+2T7tfsh/GP8nvwL/Vn9ef2g/aT9kv2x/dD9q/2I/br9+P0E/gT+6f3E/cn9BP5h/pz+
-1P5O/83/CgA0AEsABQBg/8r+lf5b/tn9n/3r/UL+eP5//l7+pP49/2P/Av+N/jn+DP7c/ZT9Vv0r
-/Rr9L/1j/ZL90f1R/r/+9f5L/63/iv/P/i/+EP4U/sP9Mv3U/LT8ovyo/PT8XP1//Yz91f1B/o3+
-rP67/qj+df5H/jb+Tf5i/i/+2/3j/TD+VP5V/mr+j/64/gn/af+S/6X/8/96AB4B/wH9AsQDagQQ
-BdkFBAeJCEgK7gshDUEOoQ/TEJURLhK9EisTfBOWE1YTvBKwEVwQTA97DqgN1gzhC/8KSwo4CacH
-LgYhBVkElwPFAgoCUAF7AOP/iv/7/ln+I/4t/uH9Qv3p/AD9Iv0f/Tn9XP1a/WT9hv2R/V/99vyv
-/Kj8evwI/LL7fvs/+wf7ofrr+WD5Qfk0+f340/jm+Cn5nfkX+mb6xPpA+8L7s/wC/tP+Uv8xABoB
-qgE5Au8CZAPLA8UE4AVoBocGuAYKBycHCAfvBsUGTwajBTkFTQU/BakEAASIA+sCLgKyAW8BTAE+
-ASoBGwH1AKEAcgCEAKQAlQBIACQALAD//83/5P/2/7P/Z/9A/yP/B//J/qf+8P7//lP+l/0q/db8
-sfyl/IT8Pvx/+5v6TvpG+gH62Pk8+gL7s/tQ/PX8ZP2q/Sb+yf4a/0T/vf8XAMv/Pv8p/5H/0v/D
-/+z/dgD6AFUBkAF5ASwB8gDXAOIAAgHtAJEARgAuAPX/gP8K/8T+uP67/rf+xv4A/1X/of/1/04A
-cgCbAA8BRQHvAIkARADn/4n/V/8z/xP/4/6j/pD+b/7k/Wz9e/2S/Xz9ev1z/UL96vyJ/Ez8MvwQ
-/Ov79vsp/Gn8uPwN/VX9lP3k/Tb+gP7u/m//uf/I/+T/JgBaAE0AJwAfABQACgAMAPX/4f/z/9//
-jf+G/9D/3/+d/1r/X/+f/9D/zv+w/3n/Z//Y/zQA/f/I/9v///8lAD0AhAAhAYEBigGxAcQBggEX
-AbcAXgASAAQACQCn/x7/Ev8l/+P+o/57/j/+Lv5S/nX+if6G/oX+hf5q/kr+Tv5n/nv+ff5f/m3+
-r/66/sj+H/9H/xf/Ev9O/1r/M/8j/zr/Q/80/0n/cv+G/3P/Mv///hr/Yf9o/yf/BP/S/oP+kP6r
-/nv+Vv5d/qr+Qv+4/+n/HgCPAN8A4wDyAAoB9wDFAJgAfAB3AKsA+gAJAekA3gDqAOgA3ADHAIsA
-ZQBvADoA4P+k/1f/Lf9R/3z/iv+I/43/mv+i/6L/nf/H/w0AMABPAH0AgwBZADgAIgAJANf/u/8W
-AD8Ap/8u/3r/2//T/8j/zP/R////OwBcAD4AAAALADsA9v9g/0r/uP8CABAAKgBPAFYAfQDuAEgB
-iQHvAVwClAKAAjMC3QG/Ad8B9gHsAdsB2wH6ARoCNwJOAkUCYAKzAtcCyQLZAvoC7wK7ApcCVwLt
-AZUBMwHJAGYADQANAG0A6wBfAXUBNAFDAawBvQGNAaoBwgGRAZoB9gEQAsQBjQH1AfcC7AOhBIAF
-RQZfBi8GZAawBlEGjwUrBTcFLwXKBDIEkwM0A/cCigJeAo8CbwLOAS4B2QClAEAAi//S/mj+Xf5C
-/rj9Nf0W/R39Kf01/V79pf3J/en9GP4t/jL+Nv4u/hj+Iv5U/m/+N/7M/c/9Uf57/jr+Kf5P/n/+
-s/6d/kT+If4q/iz+T/6L/qn+wP7l/un+v/6d/qv+pv6a/jD/MQCgAFIA5P+3/6z/nf+n//D/PgBY
-AG8AeQAUAH//+P5M/sv9xP36/U3+hv5t/j7+Jv7o/Y/9ff3N/S7+T/5A/hr+6/27/YD9ZP1v/ZX9
-7P0P/sD9kv2v/bz9w/3k/fv9G/5O/mv+g/6H/n7+sP7q/tf+1f4f/1H/Rv8j/wL/0f54/lf+sv4H
-/xj/Qf96/6T/4P8PAAsA1P+i/7f/zv/P/8r/dP/5/tb+Bv8L/67+Xf46/hX+Iv5R/h3+zf32/T7+
-Rf5R/nL+Uf4F/uP98v0X/ij+Hf4y/n7+m/5X/iP+VP6W/qz+4v5B/2r/Xf9l/z7/1f6d/pD+e/5z
-/oP+l/63/ub+AP8M/0j/2v+JAEgBEwKSAqUCrQL7AiAD+ALlAgIDWQOaA20DEwPdArgCZAIcAmQC
-/gJDAz4DMgPtAnEC6QFWAd8AfwAJAJX/Qv/a/n3+ev6W/o3+a/5x/ov+af5u/hf/6v9OAIYA+ADE
-AcYCYAOFA80DMwSGBAwFjwVaBcQEywQXBeEEbQRVBGQEDgRkA+0CyQKgAlQC0wEgAcYA4wDjALgA
-rgC1AMMA0wC5AHwAWwB4ALwA6AD8AEUBzgEoAjoCbAKxAsQCswKQAmECJwLsAb0BTAGGAP//xf9q
-/wr/2v52/rP9QP12/az9iP1j/TL9Av0f/Ur9Rv0X/eL8MP3o/T/+P/5a/qX+9/44/8f/gwDXAAoB
-lgEOAvYBxQH0ASUCDQLhAdYB1QGlAUsB5gCSAGMAXQB2AIEAhgCDAEkAAgDn//L/+f/Y/7D/xf8Y
-AG0AiwBpACUAAgBFAKYA1ADsAPwAHAFDAQwBfQAlAAcAzP+E/zP/0v6A/iv+8/0A/hT+/P3n/dL9
-o/2X/bf9q/2E/Z391/3e/cf97f1j/sH+1v7f/hz/mf8KADMANgBOAHEAkwDXAAEB5gDjAPcA0wCj
-AJsAnwCIAGIAXwBfADIADgD8/9z/zP+//5f/nv/Q/9f/zP+v/3H/YP+h/6r/Nf8L/13/mP/G/+j/
-r/97/73/CgAyAE4AZACPAL8AxACNAEAA8/+3/7f/0v+8/3D/Uf+L/7H/hf9F/zn/c/+b/3f/aP+r
-//n/CgAUAEUAVgB2ANYACgH/ANkAuQDbAB0BKAEsAXkBwAGzAZABlAGiAYABQAFEAWEBIgEEAUcB
-RQECAaEA2f9m//X/kQCIAH4AzQDgAKAAdQCEAJ8ASADO/wMAbAA3APr/MwAnAJz/X/+q/9L/xP8P
-ALAA9QC6AMIA/wDIAEgA8f+z/1//Gv/u/pf+Fv7P/dz9zf1r/QT97Pw7/bT9B/79/cb9wv3R/bn9
-yf05/qv+3P76/h7/MP8//1z/Zf85//H+wv6O/jH+Fv5L/jH+3P3B/a/9r/0A/jH+A/7o/QD+8v3b
-/dT9nP16/a/9Bv5O/lj+//2H/Xb9uP3H/ZH9bv2A/bH9A/5D/ib+/v0F/tv9vf0D/kz+hf7c/g7/
-A/8F/yH/A/+W/j7+Ev7g/cP9z/3n/f/9Dv4U/if+Ov4+/lf+r/4Z/1T/jv/g/83/OP/O/sj+rf6a
-/uP+NP8q/wr/Ev8E/9P+lv5w/pr+8/4V/xr/Vv+N/1L/9f7c/sr+0f5c/yEAfwCSALwA8AAKAesA
-lwBEADQAhQDjAN4AswDQAPMAuABDAA8AOgCSAPwAgAHxAQsC1AGRAY0BuQHlAfUB1wGpAYABawF7
-AXIBFgGsAJcA+QCDAZ0BhwH5AYcChwJfAmUCUAJVAs8CXQOKA0ADFAOQAwwE/gPrAwME3QOYA5oD
-8AM/BDwEZwTmBBAFzwSOBGAEMgQQBMgDagNrA30DHwOWAg8CiwE7AR4BMwFRAUgBdgHaAdsBaAEi
-AXQB4gHsARoC+gLpAyMELwTABIAFEgavBqsHrAj2CAIJgQnlCZ0J+whgCP8H0QdgB7oGFgYiBSIE
-lwMsA4kCAgLcAcoBmwFOAdcAbQAzABMA/v/r/9n/3f8EAFwAqgCyAMgALQGzARwCSgJpApkCpwI/
-ApYBLQHUACsAX//I/m3+/v1S/Z78DPyx+5T7X/sT+y77cvtp+2/7oPuh+4f7jfu/+wL89vul+7z7
-PPyA/JH8wPwG/YP9Ov7g/lD/j//P/yEAMwDx/8X/0/+x/1D/Kf8z//j+e/5M/pT+vP6E/lX+d/6l
-/o/+Xv45/gj+0/3A/dP92f2k/Vz9Tf1o/Xz9of3i/SX+Vf6X/gP/N/8H/9X+4f4E//T+tP6A/ln+
-Mv7c/UH9tPws/KH7mfvg+5b79PrK+sr6qfqf+qr62PoO+yn7hvsN/A/8zfsF/Gn8i/yv/P/8Qv1S
-/W/94v1i/mn+LP4P/hj+Tf59/k/+1/2I/YP9dv1P/U/9gf24/cD9lf1o/Xj9xv0K/jX+Yv6O/rn+
-2P72/ij/U/8u//H+Cv9M/1j/P/9B/0L/Nv9H/2P/Tv/K/kX+UP5k/gL+kf1Q/R39Gv1L/YD9wf3i
-/b39uP39/Rf+8P3s/f790v2S/a79AP4b/jD+if76/ln/qf8DAGQAfwBaAGYAtADEAI4AjQDCAOcA
-zACEAFUARQBOAG4AkACrAL0AzQDaANoAvAClANkACgHtANgA5wDJAKcAtQCjAGMABQCk/+n/zABh
-AaAB7QEYAhkCBQLgAawBTwHsALsAsQC1ANsA+gDpAOAA9wAAARwBdgHaATsCVgIRAusB4gGaASYB
-nAAaAO3/EQBQAJ4A8gAwAWgBxAHzAboBigGcAdoBFAL3AZsBVAEzARkB+ADhAPoATwHEATMCZAJi
-AnECqQLRAs0CxgKoAnoCmAIVA44DkgNYAzcDKgOEAykEiwSxBLsE0AQMBfoEYwTwA9gDmQNLA20D
-lwMLA04CNwJSAuMBbwGkARQCZAK/AvEC4wKwAj0C0gHMARACMwLoAX0BVgFBAfMAqgCcAJgAgwCG
-AMsAIQFFAWYBngG1AYQBPgEUAcQAOQD4/xUAHwATADEANwD2/7f/uv/q/xcAOABFAEEAOgAOALn/
-hf9+/4L/iP+P/6f//P+DAO4AGwEUAe8AvQClAL0A0ADjABoBQAFAATABHQEMAcAAVgBDAHYAlACb
-AKMApwB1AAYAtf+Q/2H/Iv/1/u/+DP9L/4r/kP9X/xL///4D/+/+xf6Z/nD+VP5b/lv+G/7a/eH9
-0v2V/dP9ef6z/qH+r/6n/pL+lP6C/ij+uf2j/c792f2i/Rv9vfzP/O/8Ef1P/ab9IP6t/lP/yv+o
-/2H/XP9K/yz/Kv8k/+X+af4G/tj9o/1j/UH9UP2J/eP9S/6T/sL+7P73/t3+wf7G/r3+af7u/aL9
-nP2k/Zb9fv2X/fX9U/6S/ov+Mv4Z/l3+Uf4V/j/+V/4p/hL+/f3v/b39dv2L/dj9D/4v/kD+Zv6E
-/lD+If5A/ir+2P3W/Rb+W/50/j/+Ef46/pH+3/45/6r///8JANn/vP+7/3X/L/9a/5n/yv8FABAA
-8v/+/2UAsgBiABEATACQAG0AUABvAHgAawCDALYAJAHTAfsBLQFrAKIAFwENAe8A+ADrALwAnQC3
-AOcAxgBuAHQAyQDgALkAgwA+AAsALQB7AE8A2f/C/+D/0v+a/0//Jf9X/7z/zP99/1b/Z/9G/+T+
-nv6B/oT+uP7V/pX+Bf6M/Zn9uP2N/bv9RP6M/qP+vP7s/lz/6P9OAJkALQE8AlID5gNUBPEEOgVO
-Bf4FAQeGB6YH3QdgCLkIcAgdCC0IEAjAB8QHwQdbB/UGmAYRBp8FUAXVBBwEkAOIA5kDYwMsAwID
-ogJyAuICXANhAx4DxwKUAo0CaAIkAu4BtAFXARYBMgFBAeQAZQAgAPL/nv9Q/wb/oP5A/t/9aP3l
-/GH8G/wL/OH7pPuF+6T7v/td++H6E/u7+zv8qfwu/ZX90P09/gf/k/+N/47/DgCfAMMArgDDAAUB
-MgEwAVQBsQHpARICWAJ/Ao8CoQKJAmcCZQJJAvsBrgF1ASABxwCpAKcAlQB2AGgAbwCAAKUAzQDd
-AN0AwgC0ANUA2QCRADYA/f/n/9f/qv9y/1//kP/X/+v/rv8K/zv+4/3w/bD9Fv12/OP7i/tc+xb7
-9frr+rX6mfrW+ir7hvsF/GL8hvzJ/Fn91f0X/nX+Af+A/9X/OgC7AAAB4gCSADgACgAmAEwAHAC2
-/5P/vv+p/zL/6f7L/qD+sP7e/s/+ef5B/k/+Gf68/aH9ov20/eH9Jf53/tT+Iv81/yH/Fv8m//v+
-Tf7R/TL+o/5//jL+6/3Q/f/9Ov5d/lH+K/4U/h7+FP7T/ZX9V/0N/fn8/vzM/GX8HvxN/ML8/vzx
-/AH9T/25/Qv+Iv5c/sz+GP9E/2j/fv+F/4b/m/+v/5b/bP9+/9H/PgCxAMwAkgB2AIEApQDtAFkB
-8AF/AsAC0wL7Ai8DHgPeAiYD7QNIBEsE2gSrBb4FNAW3BEgE+wP+AwoE/APPA4MDKwOSAqYBtAAJ
-AKb/aP9H/xr/r/4c/pX9FP2N/Cn8+fvj+/T7QPxn/DL8OPyv/PD85fz5/C39gv35/T3+NP5d/tv+
-H/8a/0n/uf8nAHYAnwCpALIAzwDfAOQA8QDoANIAwQCgAEMAuP98/6n/tP92/4z/PwDyAE0BpwEM
-AlkCwQIYAx8DHQMAA6kCZAITAooBCgGcAC0AGACEAMYAcgBCALYAQAFhATYBCgHhAJYACABs/zb/
-NP/n/nn+Sv5A/jb+Tv6R/s/+/f42/4z//f9eAJUAtwDCALgAtQCzALIAkgBSACwALABCAG8AvQAZ
-AR0BwQDUADwBKQHrAOoA4ACtAI4AiQBCAN//2f8gABwAtf+4/0AAmgCfAKgA8wBLAWEBTwFEAS8B
-IAFGAV4BOgELAekA1ADfACkBXAExAe8AsACEAIUAZwD6/5H/kf/w/ysAFADp/+H/5P/E/53/hv9m
-/0P/Rv9Z/2r/nf/a/+X/4/8rAMsANwEDAdcAaAHuAawBWQFnAXQBYwFBAVQBywENAuQB6AEuAksC
-NgJJAncCcwJeAmcCWAI3AmcCpgJkAt4BvwHqAbwBfAGlAaIBLwHNAM4A7ACjACIA2/+p/2b/P/8S
-/8P+hf4s/rn9f/1m/UP9Iv0m/Wf9xP3Y/dX9U/42/xcAvgAoAaABJwKxAnEDNwS3BCcFmQX1BW8G
-vgZ/BkAGbQaXBoUGagZHBiMG7gV5BdsEDAQkA2MCmQG3ACUA1v9y//b+gP4m/un92/3//ST+VP6/
-/kL/if+o/+L/FgAiACcAVQC5AOsAzAC3AJsANwCZ/xH/xP5v/uz9cP0E/YX8APx9++b6UfoD+uv5
-xvmh+Vv5zfiU+Az5h/mk+c75QPrh+rH7gvwW/Yz9HP7t/tr/PQAsAFcAkgCMAI4AwQDkANQA0gD8
-AB0BKAE8ATgBAgHDAI8ARAD1/+P/3/+b/1z/V/8r/5z+NP5W/nf+Uf5a/qv+/v5E/4f/wP/z//b/
-uv+N/6L/4f/x/87/4v8LAN3/ZP/D/vX9Vf15/RX+Sv4f/gH+4P2k/Vv9Gv2i/K378vr0+h37IftB
-+337p/vd+z78jvyq/OH8k/2F/jD/k/8HAI8AAgFMAVcBcAHdAWgCvgLCAokCMgK5ATMB7QDhAM0A
-xACxADMAkP9E/xn/tP5K/lr+xf4h/3z/2v8SAB4AMwCDANEA/AAtAXkBmAFBAQABHgEHAccAxACq
-AIYA0QAZAQcB7QC3AFUADwDj/7D/cv9M/03/Qv9E/0n/9f6C/kb+9v2o/bv9Df6O/gb/LP9K/5j/
-z//B/7D/5f82AIoACAGNAckBvgGaAaABuAGTAXABegGNAZYBlwGwAbQBmgGiAcsB4QG0AXkBjQHE
-AdgB6QHwAc0BqwHBAQwCLAIFAvcBDQI0Al4CWgIcAt8B1gHYAcIBpQF1AVkBZwFhAU4BQgEqAQEB
-BgFcAaQBngF0AVMBOAEeAe4AoAB6AGMANQAPAOj/2/8QADMA5f+C/3r/pP+s/4j/q/8FABAABgBO
-AJoAlQCcAO4ARQGDAZkBXQEcARoBEQHyANUAoQA7AKX/Y/+g/7X/tv///zAAOQBjALQA9ADgAMAA
-2QDlALYAeABSADAA9//Y/wsAYACaAPQAlwErAmQCTAILAuIBuQE3AcMAxQDWALIAgwBjAFkAUQAs
-ABkANwBaAIwA1ADcAGwA1f9S/+P+lP5E/vj93f3L/an9qP3D/b79w/0U/lH+K/4h/l7+UP7q/bD9
-r/26/cj9z/3z/TD+O/5B/nr+fP5T/oP+4P4W/0P/j//n/+z/mf+C/8D/4P/F/4r/Wf9i/3P/S/8z
-/37/vv+X/3r/sv/3/wYA1v+j/9X/NAAnAN3/xf/O/9P/1f+8/4n/Z/9J/xH/9/4c/y7/8v6i/pT+
-0f7//vL+/f4C/8n+7v5Z/xH/U/7X/YD9bP3J/Qf+2P29/c79t/1//VP9Yv2I/Xr9iP3m/TT+MP74
-/fL9hf4o/zL/+/7g/u/+Ff8k/xz/CP8Z/3D/sP+3/7z/u//M/+n/0f+//+D/AgACAPD/BAAkAPH/
-gf9E/2L/nv+//5L/Fv/h/kn/xv++/5H/+v+WAIUACgDU/8D/f/84/z7/rf8qADsA6f+A/0H/T/+N
-/8b/AwAyADQAKgAiABUA7f+1/6z/0//v/+v/1v+g/1P/Rf+L/wUAhwDaADUBvQEIAgYCLwKAAnMC
-GQL5ATYCjgKlAnYCZgJ8AmoCXQKqAhgDJAPiAtAC8ALXAnMCPgIkAsEBaAFSASUBuACSAMEArwCL
-AJ4AbQAAAN3/JACXALgAgAC2ADoBwQCQ/zP/c//v/sX9Pv2Z/dn9cv0A/TH9oP2l/Y39+P26/vL+
-gP6Q/qb/mwCqAKcAbgGrAlADGgNDA1sESQWMBf8FGwcZCGcIrQh+CUkKRQqnCUgJWglXCeQIRQjT
-B1MHoAb2BSkFAQQrA/wCpwL4AXkBEAGAAPz/mP9Y/xn/jP4R/l3+9v4b/y7/oP8zAI0AmgC7ACIB
-ZAFrAWsBPwHWACMAPf+R/gn+RP13/Pv7tPtZ++r6rfrB+tX6t/qh+p/6s/rs+ib7XPug+9j78Psj
-/ID88/xp/fD9vf6s/3IA/gBrAe4BXwKOApcCUALKAcwBhQLrApMCQQI5AkkCZgJYAhICywGRAWYB
-TwE8Ad4AKgCc/3z/Yv/v/m/+D/6t/YH9mv2p/a/9qv2t/fv9cf7H/vX+A/8C/w//D//z/uz+7/61
-/kz+6v1+/Rj95/zo/M/8V/zk+9b7/fsi/D38Qfwi/OL7mvte+zL7G/sI+x37kvs5/Jn8qPz1/JD9
-4v0U/pn+Dv9A/2b/k//C/9f/4f/3//v/2v+9//X/VwBcAC8AIwD2/5P/PP/8/pn+If4P/mP+o/6h
-/mX+B/6v/Xn9hP3R/Qj+Hf5t/uv+Ff/C/nv+jf7N/iP/fv/O////DwAwAF4AYAAZAJn/Kf8C/+3+
-nP4n/vT9A/4B/sz9kP1z/T/9Bv1C/b79/v0p/nH+vf4Y/4z/wP+l/5n/sP+9/8D/4P/8/+T/wv/f
-/zMAkwDwAFgB6wF9AtsCFgM1A0QDUQM4A/MCnQJNAhUCtgFAAQsB+AASAWABggGEAb8BEwJPAoEC
-sALdAg0DLwMEA7QC0wIjAxYD7QL5AkIDkQOYA5wDzwPFA6ID5gMuBC0EIQTiA5EDdANTA/sCXgLR
-AbEBwQGUAUEBKgEMAY8ANABNAEAAsv8Q/9n+CP8x/zL/D/+6/n3+ef6N/tf+Mv9g/4H/zP8aAC4A
-AgCY/xf/4/4H/0H/df+T/5//sP/s/2gA3AD8AOoA6QAVAXgBrQGAAUMBKgEsARcB1gCBADIAGwAx
-AFEASwDz/3b/HP8l/3b/r//G/8D/af8z/5H/wf9j/wP/4f7n/gf/PP9H/xP/IP+C/6L/jv+g/6v/
-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
-oPxq/Sz+4f6V/yUAeACOAHkAcAA6AJv/H/8j/yf/6/7P/uD+8/4o/3b/xf8vAH4AcAA9APT/fv8d
-/+z+p/5L/hb+Jv5W/nj+nv7f/ir/g//8/5UAJAFnAWQBPwEDAb8AfgBNABAAmf8Q/57+Uf5m/oH+
-Qf7z/ar9ev3A/QD+dv2l/HP8xPze/Ir8Ufx8/Kb8kvyx/Bf9Jf0X/X79/f1K/rT+W//H/93/LAC8
-AP8A+wAdAWQBjwG1ARMCoQIoA3YDqwMJBEAE/wOzA6sDrQOtA74DqANPAxQDCgO8AjICvQFnAUIB
-VQEyAcEAkwDQACUBRgErARcBRAGzAQcC0QFSAR0BKgEqARMBBQHtAMsA0QD/ADUBSgFDAUgBQAHs
-AHYAQwAZANL/2f/+/93/r/+c/5j/pf92/x7/If9s/8H/MwCHAHIAOAA8AH8AtgDLANgACgGhATwC
-ZQKDAhgD3gM/BDIETgTYBEoFUgVyBfcFVQYwBhUGYwZ4BvwFbAUuBR8F0AR5BJ8ElgTFA9ICQwLO
-ASABXQD9/yAAUQBbAFcA9P8m/4v+gP6Z/mD+7v2s/bD9sv22/dX9ov0L/cn8Ef11/av9sf2//Rj+
-p/4h/37/iP9j/4n/uv/f/1YA9QBEAU0BZwGNAY8BWgEBAbsAxQAjAasBIAJaAmkCWAIVAqcBUgFP
-AXEBXQFHAVABKQEmASkBpwAeAMj/WP8v/4n/qf8w/8z+yP6k/vr9P/3y/Nj8ufyJ/FT8VPxI/NH7
-Z/uN++n7/Pvu+xb8Z/yf/Kn8zPwj/Wb9bf1i/Y/9/v1i/nT+Uf5X/qP++/4e/yX/Vf+h/+D/IACD
-ANMAzQC8AOgAygBbAEgAPQDF/2L/RP/P/uj9b/2y/dL9f/10/br90/37/U3+b/4Q/mL9D/0W/e38
-tPzM/P789fz8/Er9Z/09/Vr9pf2n/ZD9vv0o/n7+b/45/kT+kv7o/gD/6f62/on+o/7k/gX/3f6Z
-/pv+4v4Z/wv/uv58/o7+oP51/l7+kf7j/jb/l//m//z//v8LADoAhQCpAH0AFQCO/2j/v/+//1H/
-H/9A/4L/0f8HAAMAyf99/2P/hv9q/y3/bv/e//f/+P9EAKcAggD5/8D/8f8pABQA3/8XAMcAOQEy
-ATUBaAGnAd0BAgI6Aq0CMgOAA5MDbwNZA3kDZAMfAwsDBAP2AgYDKANCA1sDWwMvAwwD0QJHAvIB
-HAIjAuIB0QGhAQIBngDBAPIA7gDfABIBagFlAQIBnQA7AN7/sP+l/6v/3f8wAH8AugDSANYADwGA
-AQwCygKWA0QE4gRwBeoFMgYuBhIGFQYqBkgGawZdBi8GNgZNBh0GpQX8BHMEbwScBIkETQQHBL8D
-iwNaA+8CZQL5AYQBDwHYALQAZgDm/0v/zf5H/qb9WP1F/SH9WP3R/db9nv2Z/af91P04/pj+1v4O
-/1L/kv/J/9H/m/9b/zb/Iv85/5L/x/+7//n/dwCuAIsAPwDx/9T/8f/4//D/GwApANn/mv+q/6H/
-iv+3/+v/KACcANQAvgDRABgBPwExATMBKAH1AB4BgwFgAeMA6QBZAYIBagFeATEB0QC5ALAADwBQ
-/+z+i/4Q/qL9O/3L/D/81vvh+/z7rPtV+3P7tvur+7T7NvyN/FL8Q/yZ/Jj8ZfyM/JH8TPxS/Kn8
-//xV/cb9Ov67/nT/EQBUAI8A4wAZAR8B2wBlACoADwC6/z3/1/7G/gb/P/8W/5/+Zf6L/qL+c/44
-/iz+OP4v/hv+9v2U/Sr9JP06/QT93/y0/Cv89Ptm/Mb88Pxa/bD9vP3i/fX90/3V/QP+EP73/QT+
-Ef7P/XD9Nv0Q/Q79NP1W/Wn9iP2o/Y39X/10/Zj9hf1g/UH9N/1O/VL9Lv0n/Xn9Av54/tn+Of+X
-/+z/GAAwAEwAUQBWAIQAwAC7AIIAiADJAOUA3wC8ALkAMwGFATYBxABuAFAAbwBmAB4A3v+s/5D/
-e/8t/7/+Xv4Z/gT+Ef4p/ib+Bf70/Qf+QP5f/kz+Uv6W/uP+D/9f/8P/2/+3/5z/rP/H/97/AQA/
-ANAAjAHWAcEB5AFEAqAC+gIiAxwDRgN2A6QD1AOKA8QCNQIzAlECYAJ5AmQCUgKAAmgC3QGDAYkB
-gQFtAX4BXwEiAUIBiwGkAW0B2QByAIgAggBGAF4AoQDDAMUAvgC3AIYAUABpAKUA0QAYAWIBhgGZ
-AYUBWgFNAUABCQG8AL4AVQEOAjoC2AFSAaQA+/8lAKgBeAOLA+0BAQHQAQIDLwMnAvAAqAAcAZwB
-IQK1AuACGgKpAJP/ov/pAFIC+wHy/43+Rv9QAbMCDwJEADD/I/+N/y0AkQB3ADoAPACAAAMB2AGU
-AoUC0gFwAcMBmQKtA0EE1QPjAhwCoAFoAX8BjQE/AfEAGwGUAfEBFALqAZoBTgEZAUwBiwFRAdoA
-egAPAHX/4v6m/rL+uP65/sn+7/4u/0L/F/8B/x//Fv/+/mH/0/+l/1T/Uf+I//n/UgAyAPL/EAB8
-AN4A8ADBAJoAqgDEALgAhwAxAOD/jf8u/xn/Gv8D/zr/hf+M/5n/2/8vAGYAUQARAOz/5//U/6j/
-cv8J/2b+Af4G/ir+Uf5z/lv+Hf4a/oP+3P6w/nX+ev55/nz+hv5I/rf9PP01/Yz9/f09/h3+5v3Q
-/bD9e/1v/YT9V/0P/QX9M/19/aL9oP3C/cz9jP2r/Wf+Cf9C/17/dP9e/0D/af+Z/1H/1v6e/qb+
-7f5P/2b/Jv/D/nb+av6C/or+m/7Z/g//I/9I/33/cP84/zL/Ov9O/3//rf/n/0IAnQCwAK4AuQCN
-AC0A5P/S/9f/4P/Y/9r//P/W/3H/i/9GANgA5QDnADABigG6AasBVQEBAeQA0wCwAGgAEADu/9P/
-d/8v/1L/tP/S/9T/XgAAAQ4B9AAbATwBHgH6AAsBXAGmAYwBMQHsAPIASQHTAVkCuAIZA4sD6QMf
-BEwEfARyBFMEhwTxBDIFGwWxBC0EzAOTA2kDEQORAlgCHQJfAb4AfgDM/9n+mP5+/uL9b/0w/a78
-G/yo+3P7a/sy+8n61vpd+3n7N/te++X7T/yY/Pj8ev0b/tH+cP+j/5X/2f91AAcBRgFUAWoBhQHQ
-ATwCVgI+AkUCWgJnAm8CbwJnAlkCMQL6AcwBmAFWAf8AjgA6ABwA8P+b/1b/TP9e/1f/Tv90/47/
-ef/J/1sAYAAWAOn/yP/l/zQAXgBjAGgAjADbAP0AgwDI/43/vv/L/7f/oP9k/xz/BP/1/pH+AP6/
-/cv93f3M/Yz9Qv0j/VL9eP1V/WL9w/0O/iv+V/6a/u/+W/+w/+f/AgAWAEgAfwDEABEBMgFEAXgB
-5AF3AukCGgMVAxQDbQPmA8QDVQNvA3kD+wJyAuoBegE0AdgAjwBlACgADAAtADgA6f+O/5D/pP+B
-/2L/Rv/1/oj+Pf42/k3+af6P/pf+f/6m/hT/ZP+3/xAANABjALwADgEzASgBKwFKAWsBfQFIAe8A
-/QAkAd4AngDDAO8A6ADYAMYAsQCsAL8A0AC7AJ8AiQBWABUA2v+//+b/BADn/7X/bf8d/yX/lv8E
-ABgAFQB1ACQBiAE9AdUA0wDZAJgAJwDZ/8H/gf83/zz/Uv8//zf/Pv85/3n/+/8VAMf/uf/J/4b/
-Qf9P/6H/CQD+/yD/LP4m/vb+vv8AANb/wv/y/xoAiQBGAVYBsgAqAOn/FgDbAJQBfwG5AAsAnf9Y
-/5T/+v/h/6v/9v9oAIoAYAAHALT/kf91/z3/zf5C/jb+1P5Q/wn/Tv7W/d39Of7i/oX/gv/l/nD+
-hv4B/1j/Bv85/pv9w/22/r3/DACF/93+3/5i/9z/HgAlACsAeADVAOIAlwBIAAQAi/8e/yL/SP9H
-/zf/QP9u/4f/cv9q/27/g/+L/0L//v7y/qH+HP7o/e/9HP5q/pT+oP7H/gX/R/+s/93/cv///iv/
-hv9u/yP/Gf8d/wX/Jf+D/5j/Wf8i/xL/Of9b/17/c/9v/1j/eP+b/5H/Xf8G/+L+BP8+/5X/7v8T
-ABQAAwDU/8H/3//e/7v/t//S/+//IQAqAKr/Jv9X/8//2P/G/87/sv/l/3wArQBpAGYAqADYAAUB
-NAFLASwB+wAzAasByAGSAVsBKQH/APwADwH5AKUAhgDzAHQBowGeAXEBKwH2AOEA5ADXALEAuwDv
-APYAvgBkAB4A/P/W/67/tv8EAFYAfgCkANkA3ACtAIAAZgBmAIAAxQAfAToBAgHOANoAAgH2AKAA
-agCCAFQABABBAH0AOgAYAB0AFABQALUA4wDPAJ0AmADRAN4AiwBYAI4AzgDCAKMAsQCCAB8ALQC1
-ADUBNgHYALYA8QAJAbsAbABVADEADwAQABEAEAASAA8AAAD1/woALQBNAHMAiQCLAI4AkQCQAHYA
-bgCYAKwAkABqAEUAJgA+AIgAyQDwACABmAHKAUkB3wDnAAEB5QChAIIAfwBlAFQAeQCOAEYA8/8T
-AHEAlwCTAHoAUwBsANUADQHIAGoATQBVAGsAdgB2AH0AiQCsAOIAFAFIAVUBSAFdAXABdwGDAYUB
-hAGdAb8BjAEXAd4A8AAIAeoAdwD3/97/KAB6AGwAJgAvAGAAYwBlAF0A/v+v/9f/BgAQAA8Awf9U
-/17/tv/+/yEAAADy/0UAcgAkALv/jf94/3v/yv8BALz/Vf9J/3X/j/+G/1r/L/8x/0n/Of/8/r7+
-kP6C/oL+b/5a/oX+7/4x/yv/L/9U/2D/Uv9E/1b/hv+V/5L/vv8AAB8ACQDo/+f///8aABsA/P/B
-/3L/a/+Z/1f/3P7E/tr+1P7E/pz+ev6Y/p3+ff6S/on+XP6F/tb++/4H/wn/8v61/pf+2v4c/yP/
-M/9L/0n/b//T//H/zP/X/wIAMgBJAEIASQBfAFwAMgAuAFUAUAD7/5j/gP+Y/5z/mf+t/7f/sP+u
-/8f/9f/8/6P/H//o/tj+lv5l/lf+C/6K/V/9sP3S/ZH9Uv0X/QT9Sf2V/dv9QP6C/rn+Ov+G/0X/
-JP9W/13/P/8//2f/hf+E/77/PQCjAPIANQFcAYwBugHQAfcBQQJ7AoACaAJOAkQCHQK6AT8B0gCg
-AJEAbABLAC0A7v+W/zj/+v7O/ob+Ov4U/hf+Cf7I/YX9Tf0a/Qb9Cf3x/P78q/2L/s3+mP5w/lP+
-cP7Y/g3/Af8N/z7/iP/f//n/1v/P/87/vP/x/4QAJAF1AaEB8gEoAj4CmAIOAyoD7gK7AskC4QKo
-AhQCWAHTALwAowAmAKP/d/+H/6P/tf++/5r/Wv9M/0b/Bf+w/o7+ov6y/rz+t/6V/pz+1/7o/sH+
-zP4C//r+3/4B/xP/3/7B/q3+lf7+/qv/5v+z/33/Z/9k/0//JP8f/2T/7/93ALUApwBxAC8A9v/X
-/83/wf+f/4j/qf/g/wYAKABYAH0AkQCrANQAKQFvAUUB8QDYAPMA7gCVAFMAZgBPANj/iv+n/7L/
-sv8RAHYAqwDZAMAAYQAxAGIArQDBALQAnwByAHAA0QAlAQUBtQCrAPsATwFlAUEB+wCwAJkAlwBC
-AOX/AgBaAGEAJAAXADsAKQAMAF0AtACvAMEAIAGZAeoB4wGaAUkBKgE1ARYB1gCxAJ8AkwB1ACoA
-3f/A/+v/RABoAE4AagCbAJwAugAAAUcBcgFUARMB0QCJAFsARQAiAPP/uv+N/6L/tv9u/0n/mf8E
-AIIAIQG9AX4CSAOvA+sDLgRPBJMEKQVfBewEiQRSBAoE/gNnBP0EVAWyBY8GTQdpB14Hjwe+B2EH
-kQb8BZ8F7ATtA/oCFwI6AYEA7P9m/+3+af7j/Yb9N/3F/ED8zPti+9j6LPqI+QH5lPhI+Cf4KPg7
-+HP46PhP+V/5kflu+nX7+/ta/OH8IP0u/XH9tv0H/mL+iP6//ij/Zf+O/93/FgBMAMAAXgHDAbAB
-jAHFAQAC4AGvAYMBLQH+AAsB9gDBAIUAKgDr////IwD//67/hf9j/wX/sv6W/of+Vv7y/cP95f31
-/db9sP2d/av97f0z/hz+1P3f/Rn+Mv5V/nD+Rf4+/qb+9v7p/q7+X/41/lf+kP6b/ob+iP6r/rX+
-hf4e/sr90f3z/Rn+Zv6W/nD+S/6T/hL/Lv/1/t7+Fv9//9z/CQAkAFYAgQCqABYBnAH5AToChgIF
-A4cD2AMRBEIEXwRpBF0ECwSTA1YDTQM/AxID4wK+AmIC5gGqAZ4BhgFdAQ8BdwDT/5n/iv8f/4b+
-9P1f/QP93Pyq/Hz8W/xF/GD8lvzC/Bj9lf3B/cj9D/5Y/l3+Pv5J/oP+xv7v/g3/Xv/N/y8AqQAx
-AaQBAQJKAqMCBQNBA2oDgQNrA1UDZANnAycDwgKJArEC0QKKAj0CEAL5ARsCMwI0AkECKALuAcsB
-lgE2AfAAsAAIADb/B/9s/43/U/8n//3+9P4z/2n/hv9+/2H/sf9TAIEADwDE/9r/wf+P/4f/cv9L
-/zT/Tf+P/7b/s//O/wwAOwBPAF0AjACtAH8AKwABAOv/uf+l/7f/m/9o/07/Ov9C/0T/Cf/V/uf+
-Qv+s////TwCpAAQBRgFUAUgBXAGAAZgBlAEuAaEAhQCTAEcAKwB6ALgA6QAkAVoBlgGHARoB1ACQ
-APj/jP+N/3//Kf/q/gT/Lf86/2b/h/9c/y7/Ov9f/2b/SP8I/7n+sv7v/gj/6P6e/k/+OP5F/lz+
-bf5Z/kz+Sf4l/vH9w/2s/ZT9Zv1l/ar9+/1W/sP+Cv8r/1j/pv/x/x0ANQBWAJIAawDJ/4b/uP+F
-/wj//f49/3n/wv/3//v//f/i/8D/3v/4//D/EgBoAJsAZAAeAB0A1P8z//3+C/+7/kz+QP5w/rf+
-BP8g/yL/Bf+z/sP+PP91/4//r/+U/3f/fv9s/z3/L/9R/3H/a/9J/0b/b/+A/27/gv+9/9b/tP93
-/1T/Of8f/0f/Uf/3/uH+VP+g/6L/1P/y/9b/5f/3//j/QwC/APoAjABu/4z+u/6Q/x0AKQAHANH/
-nv/W/3EA3wC/AFcAQgC7AJEBOAIWAlcBpgBSAF0AgABxAEwAKgD9/77/fv+E/9b/CADd/37/T/9a
-/3L/uP8OADUALAALAP7/BwD1/7H/kP+g/7X/BwCNAPYA9QCUAGEAeACAAKYADgFcAagBLgKbAsEC
-0gLkAgsDTwNnA1QDcQOrA70DogNnAxUDzALAAgEDRgMuA7gCNQL9AQsC6QFzAScBMAE3AREB6wDH
-AHgALgAQAAEABQAzAIEAugCpAJ0A9AA2Af8AwgDGAPoASgFUARMB9AARAXEBBwKAAqYCqALsAl0D
-pQOwA2cDtwIcAhkCXwJqAiQCtwF7AXQBTwEAAdsACwHwAGcAQgBxAEoA7f+v/5z/fP8O/5n+Wf4q
-/gr+6v3W/fH9GP41/nr+8f5R/3X/aP9D/0H/dP/b/ygAEgDu/+r/CwBTAIoAoQCQAFIAVgCzAPcA
-6wCgAIwA5QAVAQABCAHrAGYAEgAZAPL/qv9z/yT/2f7Y/vv++v7L/oz+e/50/jH++v0S/iz+D/4N
-/lL+Wv4I/uT9Af4I/uf93f30/fb9Cf49/jP+9v3c/e39Cv4d/iL+Rv6V/sP+l/5h/nj+w/7//gT/
-+f4N/yL/I/9A/27/f/91/2b/bP98/4n/nf++/8H/fv9c/6r/zv9M/9j+3P67/oD+hf6W/pj+mP6B
-/mP+WP5T/mn+mv6v/oz+V/43/hT+1f2U/XX9fP2m/e39Gf4s/kz+fP68/gD/J/8+/2D/eP+B/5b/
-k/9Z/xj/Bv8T/xH/Av8K/0j/m//F/9z/CAAxACgA+f/b/+b/7P/D/2f//v7y/hz/GP8G/83+gf61
-/j7/cP9W/03/UP9n/4n/gv94/3r/e/+t//3/7f95/zj/XP9t/y//7v7R/qr+l/7V/ir/Zv+i/9v/
-/v///+r/8P/9/9P/xf8TADIA8//R/97/0v+4/9n/PgCFAIoAjgB/AE8AUwB/AKUAxQDjAAoBAQGe
-ABYAxP/t/04AmwDvABUB9AAZAVsBBQFiAPr/zv/6/0sAaQCTAMwAywDMAPEA5gDFAPEANQFDATwB
-RgFPATMBKwGAAfABQgKgAgEDJgMFA9QCowJ2AjkCngHPADcAAgBYAMYAzAC2AM4ADgFJAVoBRQEH
-Ac8A1wAHAQkB2gC9AJwAXAAjACAAZADGAO8A/ABFAYcBPwGoAHwAxwDpALsAmgC6AA8BeAGeAUkB
-4gDgADIBrQEWAjUCXwKoApUCAQJXAdgARADR/+j/IwAcAAAAIAB2AJkAewBtAJgA6QBRAa8B6gES
-AiICDALEAVoB/AC+ALYA9QA+ATcB9QDRAP4AaQGqAaABlwGiAaIBoAGTAWYBRwFVAWsBggGZAVsB
-2gDjAGABWwHzALYAfwBTAFgAWwAvANj/lv+z/+r/0f+w/8z/7//h/7j/qv+K/0b/VP/J/w8ABAAm
-AHkAiQBSACUA//+9/4b/av9W/1T/dv+U/5//vP/K/7b/tf/m/xoAQAB6AIgAWQBVAIAAlwB2ACYA
-zP9+/y3/xf5w/jL+Bv4I/hH+A/7+/eL9nv2m/f79N/5Y/m3+ff7j/l7/ff9o/zL/4P66/rj+Wv6c
-/Rj9/vwK/SL9Uv18/Yn93v3B/oP/qf+u/73/sP+w/5j/Uv8N/7j+W/78/Zr9Sv1E/Zj99f03/l/+
-ff6o/sH+3P4E//L+lf42/vL9xf26/Z79Zv1P/Wn9ov3X/fP9Av4m/nT+vv7H/qn+ef43/hj+K/4R
-/r79m/2j/aX9v/3S/dr9Hf6E/rH+j/57/rX+2f6p/o7+f/5R/kX+SP45/k7+fP6l/uT+M/91/4n/
-lf/d/0MAdgBlADMA+P/k//D/7v/y/x8ATgA7AAgA7/8BABUAAQAFADEALADg/7D/z/8CABMA9f+O
-/wn/Ef+d/+j/y/+A/z3/VP+u/+H//P8kADsATQB0AJcAhQBQAF0AtgAQAT8BKQHRAI4ApQDDAKwA
-sADaAP4AJQFMAVwBWAFTAU8BRQEtASABOwFbAWABUQFCAUoBgAG/AcsBqwF3AUkBMwEuASwBLQE9
-AVcBggG0AdYBEwIzAu0BsgGjAXcBdgHAAbwBQgHgALsAsADEAN0AEQFPAX0B5gE9Au8BagFtAbsB
-ugGBAVUBQQE4ARsBDgFNAYcBjgG0AQQCMgIlAiUCNQIwAksCngL2AgYD3gKyAlgCEAI6AnECYAI6
-AkQCbAJ8AlYCGQIRAjwCXQJkAlMCRQJAAggCuQGPAUMB3ADcAAkBugBBAG0A8gAQAesA4wD3ADYB
-iAGoAbkBzAGhAXsBnwGXAUgBQgFYARoB6wAIASoBBwHQAPEAEAHxAPsAJgEmAQEB7ADqAPAA/wD9
-APIA5gDOAKsAbQAoAAIA4v/K/9D/1P/a////AAD6/ysAOAAIANj/8/9/APQA3QCbAJsAsgCuAKEA
-dwBsAOEAcwHxAXsCpwJLAuIBvAHEAc0BpwGGAXsBHgHDAOcAIAHlAGoANAA8ACYA8P/U/87/hv8K
-/7r+kP5c/iD++v3j/aD9Q/0p/TP9H/0O/cv8JPyV+277gvu8++z7uvtT+1P7qvv9+1X8j/y1/A79
-ov1E/rH+5f4S/0P/QP/7/t/+G/8a/8n+3f4p//r+r/67/tX+7v4g/z7/Sv9b/1P/NP/k/m/+Q/5S
-/nf+uP7k/tD+dP4g/v39uv1B/eH8zfzS/NH84vzP/Iv8ffyE/Gz8cPyI/LT8HP15/Wr9Gv3u/PH8
-AP0Z/Sv9DP3R/LX8t/zQ/Pf8HP1b/d39c/60/qT+nP6p/qT+xf47/2T/A/8q/wYAawAxAOD/j/9S
-/zf/KP8c/xL/HP9y/9X/0f+E/1D/Vf82/93+y/4e/1X/f/8AAFwAIwC7/1z///7f/vL+C/9E/67/
-AwAAAMD/jf+C/3r/Nv/R/qD+1/5E/2n/Pf8u/2b/nP+/////PAB3AM4AGwFJAWgBYgEAAXwANAAu
-ABEAxP+J/zv//v5O/7D/nv+f/+j/RQD0AMcBNwJKAioCHAJmAocC9wFIARwBMAEfAeMAmQBYAEEA
-hQA3AQACXwKQAgoDkQO7A4ADJAPHAkwC6QHHAYwBFwHcANoAqQB7AHAAewC8ABEBXQGHAXgBWAFF
-ATMBEAHkAK4AgACPAKkAjgCwADUBRwHNAB4BPAJ7AuQBrwHeAf4BCgIHAv0BEwIkAhIC5gGgAYAB
-rwHHAagBwwEPAiACzwFmAUkBKgHQAKsAyQDnAAUBDwEEAQsBHwFAAW4BpgHGAdAB5wHQAZYBgQF8
-AVUBHgEoAXoBkwE9AeIAwwDZAAMBEAEJARABPAFyAYIBcgFrAZkB5QHsAY8BTgF2AYkBGgGXAEAA
-8/8DAGMAqgDgABcBRgFcAT0BCgEAAe4ApwB6AKUA9ADnAHoAUwCWAK0AdABfAIQAlgBuAD4AVAB4
-AD4ADQBNAGkAFgDy/xQAHgAPAPP/6/8DAP//1//W//T/5v+u/47/k/+V/6f/2v/Z/5b/dP9z/2X/
-SP9F/1X/Tv9Q/3D/hf9v/y3/5f7i/hv/Lv/d/nj+a/6T/q3+tv6w/r/+7/72/q/+e/6W/pb+iv68
-/tH+o/6d/sz+xP6c/ov+dv58/oz+jf60/un+7f7L/s/+7v7s/vj+H/8w/w7/5P7a/sb+j/4+/hL+
-K/5G/mj+of61/qL+iP5z/nH+l/7L/uv+6P6m/lb+Xv6k/rf+Vv6P/fz8DP1T/Xn9dP1Y/Wz9vv0O
-/iv+O/5//sP+q/5a/i/+Hf74/cr9qP3F/Rn+VP5g/mb+gv6x/uH+Df87/1z/cv+D/4n/sf/n/+v/
-1f+1/5v/r/+k/0D/2f7D/tX+2v7c/sf+of6q/uL++/7n/uz+B//+/gD/Q/9H/8n+jf7H/t/+1f7h
-/v/+Z/8CAI0ACQEbAbsAeABpAD4A+P/N/6n/cv9r/5z/s/+i/6r/8v9lANIALgFnAUYB8gCsAJsA
-zQD0AMwAqAC5ANQAIAFGAeMAjQCMAHoAWACGAMIAmABXAEMANgAzAF4AqgC6AJUAsgDjAPQAMgGB
-AXsBSAEXAbUAbACDAEMAof9d/33/yP8oAHMAjwCgALgA2wAYATMBKQE4AXMB1gEmAi4CBgLDAW4B
-SgFrAXEBOgH5ANQABwFlAWkBTgFtAYMBVQERAdMA2wBWAacBggF2Aa0B2gHXAccBzQG/AZcBqQER
-AnECdwJQAiwCFQLkAX4BSAFYAV4BeQHGAdgBigFxAbEB2wHpAfIB8AHtARsCVQIpArgBOQG+AI0A
-kgBSABkAdwDpAPQA8gDjAH8AQgCXABMBMwH6APAAZwHTAcoBbgHeAJ0A3wAmAUwBZgFIASABOQE8
-AeIAqADEANoA5gDwAPEACAEkARwBDgEsAUYBLgETAQIB5QCbADAADAD+/7L/e/98/13/Ef8V/0v/
-IP/D/qP+tP7c/i7/jf+u/5T/d/+e/wUADwC3/3H/Sf9S/4L/jP+L/7v/0P+//+r/AwDB/5v/wv/1
-/wQA8P+7/4P/eP+B/23/Rv9D/5L/+P/3/7r/wf/6/xQA5/+w/6z/m/9R//r+wf60/rX+l/57/of+
-uv7c/sv+8P4y//3+nP6W/o/+Tv4g/u/9l/17/ZT9cP0w/UH9uP0u/jb+Af4i/pH+7f4r/2n/pv+i
-/zL/vv6T/nb+Wf5B/hj+7v3J/c79Mv60/uv+8v4Q/x3/F/8j/zX/PP8b/+P+z/7h/sr+gP5W/kv+
-Vv6D/rr+7f7s/uD+If9l/1H/G/8I/xT/KP8t/zT/Qv86/zD/Nf8N/67+aP5i/q7+Hv9H/xr/4v7e
-/vn+2P6n/q7+6P5R/5b/s//J/5n/L/8M/3n/3P/E/6L/u//3/z4ANgDP/4j/pP/p/wsA3v+n/+b/
-PAAdAM7/yv/2/wAA7v/R/9z/BQDq/8P//f9sAMEA3wDaAMIAhAA+ACcALQAqAAMAuP+N/9P/KwAJ
-AL//qv++/wkAYgCSAK8AxADhABkBMQEFAegA9ADXAIoARAAOAOf/5P8HADoAiQDfAO0A4AAGAS8B
-LQEZAQEB7QAAAf8A0wDEAOcADQH7ANsA9wA7AZABzAHPAdYB+wH0AcwB0QEJAjUCFQLDAU0B6wDd
-AOUA3QDMAMsAzwCTAHEA3wBWAU8BKgE2ASkB+ADnAOYAvQBpAGoA1gDpAHgAHAA4AH4AdwB2ALwA
-4ADYAOIA+gAFARwBXAGXAagBrwGmAYEBbAFpAVwBRAEpATkBdAGeAbkBpQGcAcABqwGaAbEBmAFa
-AUIBVwFzAXABLwHgALgAkABMACkAXgCaALMAswB2ADAARQCSAJEASgAPAMr/pv+9/6T/Xf8S/73+
-uv4K/y3/Lv+Y/08AlQBTADwAcAB/AH0AvAAcAVQBfwGFAScBwAB+ADAA6P/G/8L/tv+p/7T/z//Y
-/6n/cv9v/2j/O/9B/37/hP9e/2n/hf9U//H+wv7J/vf+V/+C/03/TP+T/5f/Tf8o/wf/kf5J/rD+
-LP8p/wT/6P7R/g3/Mf/i/sv+/v4v/4T/t/97/xL/2f6u/l/+Fv7l/bD9hP2h/eX9A/71/QD+OP5r
-/qr+6/4M/yv/Ov87/0r/EP+X/l/+R/4P/gT+RP55/qb+9/49/1D/Qf83/yP/Af8Z/17/cf9n/2n/
-bP9W//z+sv60/u/+S/9K/yX/qP8gAM//Xv8V/8f+nP6A/nj+kP6P/qz+Af8I/67+dv5//pD+nv7G
-/gv/Qf9p/8D/EwABAKz/Xf8y/xH/6f7s/hz/QP9a/4r/vP/Q/+L/8v/h/8X/uv/c/zsAnACjAHoA
-ZgBJABcA+P8YAHkAvQDEAMEAygCrAGYAIgDh/8L/zf/g/+H/nv8z/yX/Xf9Q/z7/cv+b/87/OwCJ
-AI8AaAAoAAcADADU/1f/Hv8w/zX/Gf8E/wb/9f7t/k//BwCQAL4A+ABzAbkBjQFgATwB2wCYAHMA
-MgAmADQA/f+w/5v/y/8TAFoAqgD9AD4BewGqAZwBeQGKAa0BbAHlALAAsQCEAGEAgwChAGwAZAAU
-AZIBLAHfACsBXQEuAecA0wD+AAUB0AC9AL0AhgBWAFkAdQCMAKAAygDbAOEAIAFJAUEBXwGfAbYB
-pAGMAWcBNgEWAfcA6wASAS8BIgEyAVIBQAEdARcBHAEEAe0ACQEqAQ8B9QAVASoB/QDOAN4A+wAA
-ARsBQQFBATcBOgFAAVUBOAHWAL4A7gDKAHoAWgA0ACAAJgAcACoASgBEAEcAgACPAEQABwAcAB4A
-5v/k/xkAEgDw/wYADwDx//z/IgBMAIwAoAB4AGoAhQCcAK0AyQDsAAQBCwEEAdgApgCEAHMAgACI
-AJwArQB4ACsAIABiAKwAzgC+AJ0AtQDXALkAewA0AAYABgBIAJ0AYQDR/5r/eP87/zf/Qv8c/+n+
-2f4A/yL///6+/rf+Df+F/9D/2//M/6r/ev9O/yf/HP8v/zP/H/80/2T/cP96/6D/ff8T/xb/dP+Y
-/4n/jP+0/9r/8/8ZACsABADE/6H/rP/B/8b/q/9o/yr/GP8a/wX/2v6+/q7+u/4N/3r/uP+x/2X/
-Cf8v/6X/h//v/o3+XP4+/kP+NP4x/l7+jf4F/5r/ev/T/r3+OP9B/+X+2/7s/tr+4/7h/sv+4P4C
-/wf/EP83/2v/fP9Y/zH/RP94/47/m//f/zcAXQBGABkA/f/n/8P/d/8d//j+Cv8i/yX/MP9u/8j/
-CgBAAG4AgwBoADEA+/+Q/+r+t/4g/yb/rf6p/sr+Xf4B/iP+Zf6t/vv+Gv/w/q/+vv4h/yr/s/56
-/rz+Cf9A/3X/m/+J/0r/XP/U/0EAbABLAOH/q//1/z8AOADa/0f/IP+a/xgAWACZAM4A0QDaAPIA
-zwBOAL7/hv+Q/4//b/9G/yL/Jv96/8z/3v/K/8v/GQCRANoAuABXAFUAsgC9AFwABAAQAFoAcAB2
-AKcAwACkAJYArwCvAJEAgQCHAIoAyQBqAcABfwFBAUABBQGTAGkAkwDaAA4BEwEZARwB8AC+AMMA
-8QAdAUcBYAFzAXUBHAG0ANMAKwEeAdwA5QATARcBKwGIAf4BaAKnAoMCAgKIAUcBEgHfAMQA5wAe
-AfMAygAzAZkBTgHkAAABawH8AVACLgLwAa4BYwEMAWAAk/9y//P/HQDM/8b/FAAbACUAsQA2ATkB
-HwELAZ0AOQBrAMUArgByAJ0A7QD8AOQA1QDTAMYAugDaAOsAtQBrAEEAWwCqANcAwwCdAJMAogCg
-AJUAowC7ANcA9QDhAHEACgD6//n/w/85/+P+bv8YAPP/if9X/0X/dP+e/5P/lP+S/5b/3f85AF8A
-OwAAAPT/AgAaAEkAcgCAAJcA/wBiAT8B6QCrAFwAIQAEAOr/4f/W/8v/wP+P/3L/qv/+/xYAJQB4
-AMcA0QC6AJoAVgD1/77/sP+Z/3r/ZP9r/4P/jP+A/2v/bv+Q/67/uf+h/5b/vf+y/2P/I//S/n7+
-Z/5M/hH++f3//Q/+Kv4h/hX+Pv5V/jf+O/6f/g//D/+3/qb+6v72/sP+kP5T/hn+BP4O/jz+m/7e
-/uv+GP9t/57/lf9y/1z/hP+q/5D/iv+B/0v/PP9F/yf/6P65/qz+tf7+/lf/TP8A/93+9P4X/yz/
-Mv8d//b+CP8n//P+nf4+/vv9Cf4d/jH+cP6R/pb+r/7C/pb+aP52/mr+T/6E/tr+1f56/nb+2P78
-/tX+1f4S/1L/nP/m/wAA3v+N/0v/PP8w/xj/N/9y/4//mv+T/5r/uv/F/8D/yv/g/+b/zv+h/4H/
-gv+A/43/vf/s/xkAWgCEAIIAggCJAJwAxwDkAL0AYAAWABwAYACDAI0AtAC+AK8AzgDxAMoAkACu
-AO0A4QCZAGoAcABfADoAbQDCAN8A7wARATwBZQFmAUcBKgERARUBPwFSASABGAFjAWUBCQHiABcB
-SQFDAT4BVgFIAQUB9AA3AWEBXAFvAXwBgQGsAcYBqgGGAXEBagF9AXcBGQHbABQBSQFJAVMBUwFK
-AZcBDAIoAgQCzAGYAXUBNgHXAJIAdgA6AOD/zv///xQALgCJAMgAxgDXAP8AEgH6ANAA1QAIASkB
-IwEsAToBOgFkAZcBkQFvAWYBbwGKAcYBAwIrAkECOQImAiAC/wG9AXMBKgH6AMEAgACFAK0AyQDZ
-ALQAYwBbAJ8AgQAuABgA8P/R//z/EAD+/+T/oP97/8b/8/+4/6T/5/8sAEEAVQB8AHMAdQDcAC8B
-FQEFAU0BagEgAcIAVgD3/7T/UP/9/uj+0f7O/gr/Qv84/yD/S/+i/7//if9n/5r/1f+5/1L/D//7
-/tb+3f4i/0H/UP+M/7P/mP+c/9H/4P+T/xf/+f5B/1T/JP8Q//P+0f4V/4D/zf8FAOD/rf8GAIIA
-iAA7ABgAKgD4/2z/3f5n/hn+D/44/nv+wv7x/gz/Jf9a/6f/6v8AAOP/zv/a/+T/3//G/4//RP8S
-/xf/Tv+I/5D/bv9K/1T/dP9d/xT/9/4x/2L/aP9n/1H/K/8Y/xL/EP8r/z7/I/9E/7f/0/+H/2H/
-Pv/y/tH+uP6T/on+jf6q/u7+9/6G/jz+df6a/of+mv61/s3+Ef9e/2X/Ef+V/kf+a/67/t/+6/7m
-/uP+LP98/0j/1P6m/pf+eP51/pP+xf7k/tv+5/4G/wL//v4p/2X/qf8NAGUAagBOAEAA8v9b/9L+
-ff5b/jz+Df7h/X79OP2o/Sn+O/5s/tL+Nf+n/+X/5f/7/+b/nP+B/0//wP5a/n3+rf6J/pL+9/4E
-/7j++P63/yoAeQAOAX8BkAFzARgBzADQALUAZwAkAOn/3P/5/9r/kP94/6j/+P8uAEgAdwCzANcA
-4gDcAM0AvQCgAGwAXABpAGYATwAhAA0A///F/9j/UACSAJMAvgDUAIoAYwCcAL4AyADdAPIALQFL
-AQsB1QDeANoAsQC8AAQB/ACoAKAAzADCAM0AFAEwAS0BRAE6ARQBIAFFAU4BVwGGAdQBDAIJAukB
-4QHdAbsBvgHkAfsBDwIKAuABmQFdAVABKQHiAOEAEQELAewA8gDjAN0AHQE6AQsB6ADsAO4A5wDf
-AKEAWgCBAM8A1gDcACUBVAFjAVYB+gDCAOYABwEPARcBQwGHAZABaAFOAUsBXAFxAVUBGgH5AM0A
-egBPAIgAzQDmAPgA9gDmAPMAFQEuARwB+AD1APoA0gB0ACUADQAWACwANgBAADwANgBQAGMAaABy
-AHQAewB4AFEATABrADUA7v/c/6z/kv+Z/2L/Pv9z/6b/t//J/8P/uf/s/xMAGAA2AD8AMgAhAAMA
-DAAfABQAAQDS/7b/6f8VAOn/sP+4/8z/4f8kAF4ARQAJAPP/7v/Z/+P/9f/J/4T/YP9R/yj/4/7V
-/hf/Uv9u/3b/Y/9g/2//VP8M/+T+Av80/yP/qP77/bT9CP5C/iv+Kf42/k7+df6O/qP+mP5q/on+
-5/7n/pD+fv6s/p/+b/57/pv+e/40/iz+bP6f/r/+3f7Z/uz+Kf9P/0D/H//5/tT+3f4V/zj/Iv/u
-/qz+hv7T/kn/Zv9h/1f/FP/P/rL+lf51/mH+Pf4v/lf+bf5w/qP+6P73/tr+h/4d/hD+JP7d/Yn9
-Yf0p/SH9kv0I/hX+G/5n/sD+Bv8e/yr/Zf90/xj/xP7z/k//Mv/h/gD/PP9F/4b/6P8WABYA7f/X
-//H/FgBLAFIADgDf/+r/EgAlAPf/yP/g/xkASQBgAGEARAAbAAgA5//H/8v/xv+5/7n/1v8jAHQA
-hwBxAH8AwwDfAJEASwBjAHEANADm/6H/d/90/5X/uv/B/8X/5P8CAPP/u//N/1IAnACHALMADQEz
-ATsBWgF+AYIBdwFaARYB4QDwABkBNwFXAXMBfAFtAVMBTgFaAV0BOQECARIBUgFpAWYBagFYATkB
-PwFNAUIBTAF8AcABEgJJAkICFwL5AeYBxgG4Aa0BdAFHAXUBwwHCAaYBwwHWAesBIgIkAgsCGAIW
-AgYC9QGlASwB3ACXAEQAJgA8AD4AJQBgAOoAKQH5ALkAqgDeADEBYgGNAc4B+AENAhsCHQIzAk0C
-QAIBAr8BvgHqAfwB9wH7AeABqAGKAaEB4AH+AecBuQGjAcIBrQE8AdAAlQCbALAAkAB1AHkAJwCU
-/3//wv+f/07/Sv+X/wwAXwBoAEwAFgDY//v/ZQBnAB8AHwBCADoAHwAMAPr/uv+S/8D/8/8MABMA
-DwAJAPD/4P/0//T/rP9w/6v/+v/f/7n/2P/u/+f/AgAfABEAHwAwAA4A4f+d/3D/fv9g/wH/lv5m
-/pj+u/6O/mz+l/6o/q/+VP/+//n/tP98/0H/IP8K/9r+n/5R/iT+Z/6+/q7+mP4D/4H/ef9T/4v/
-wv+b/03/Jf9N/7H/+f/m/5b/Q/8l/zX/R/9U/2T/a/9V/zn/Rf9f/zj/5P7E/u/+Jf8i/wn/FP8r
-/yP/Hf8e//f+q/6A/on+g/5m/lj+Wv55/rH+3P70/vH+v/6n/vb+IP/D/lX+Cv72/Sf+UP5c/lv+
-bP6w/vH+4/6i/pr+0v79/vz+IP9i/0r/Hf9J/4T/cv8+/xz/GP9H/4H/i/9U/+H+dv57/sD+z/6s
-/mn+M/5E/mb+W/5Y/qb+Bf8Z/xz/Mf8m/w//FP8S//7+BP8l/yf/E/9F/57/tv+7/+//+P/Q/+n/
-3v93/07/Uf8h//T+2v7W/vv+//7m/gr/X/+7/xEANwAQANv/3f/8/+j/sP+Z/7P/3v8MADoASgBZ
-AIcAuwDhAOsA9gAYAVkBmQGnAYEBRwE5ATcBBwHsAAUBFAEKAf0A6gC5AJcApQChAI0AhQB8AGMA
-PAA5ADwADwAQAEUA/P9x/6P/QQBzAFEAGwDd/97/MwBzAH8AnAC7ANEAJgFlASIB3wDnAPIA3ACn
-AFEA/f/i//T/IgBgAIUAnQC+AMsAwQC+APwAdgGyAakBtQG5AbABzQHEAXgBQgFtAbABmQF7AZQB
-zQEVAjICHwI3AnICTQL3AeUB5QHQAcEBpQFrATkBCgGnAFQAnAAyAW0BWAE6ARcBJwFQATEB+ACv
-AHwApQCtAHUAdQCYAI0AbwCAAKgAxQAZAZ0B4AHeAdMB3wELAioCAwK6AaoB2QHvAbQBTAHoAKcA
-oQCbAGsATQBaAJsACgE+AQ4BxgByADEAJAAkADAAZADEACgBTwEYAcsAwgDIAKYAmgB2AAIAyP8p
-AKoAqgBQABAA6//c/yQAdQBkADwAIgAaACQA7v+Y/53/8v9FAJMA5QDjAFUAsP9Q/wj/wP6D/m3+
-nf7o/hn/If8w/4H/wv+4/7H/xv/3/zwAIwCu/3f/ff9e/yb/7P6f/lf+Jv4E/hj+Pv4+/mz+9P5Y
-/0X/Jf8u/xX/7f70/gz//f65/pL+0/4B/+/+Ff8w/+j+sf6p/ov+b/5r/nr+r/6+/l/+B/4C/v39
-3/3e/fr9Fv5K/tn+cP97/1T/Sv8u/y3/Tf9K/yv/Fv8d/0n/PP+k/vP9oP2Z/YL9Sv1h/df9HP4G
-/hr+Yf59/ob+qf7b/gX/J/8+/2P/nf+i/2H/+v6l/p/+q/6K/kf+uf0r/Uf9ff0x/QL9Ov29/X/+
-NP+i/83/0//A/8z/6f+x/0b/5v6D/kf+Of4Y/u79z/3i/W7+NP+5//P/IQBmAKwA1QDcALkAaAAN
-AOP/x/+O/0n/BP/d/sb+l/6g/in/vf8GADoAagCDAHAAXAB6AHsAJgDG/6j/tP+s/4D/cv+J/2T/
-cP8dAJ8AkAB/AGUAEgDr/wAAJQAaAMz/m/+h/5b/Xv9B/2D/kf+7/+n/NABaAEAAPABjAIIAkACJ
-AFkANgBfAH8AYwBpAKkA6gAfAVUBqAEBAvwBxAHRAfgB3wGmAZUBoQGjAYEBTAE5AVEBfgGRAXMB
-YAFzAY4BmwGoAcgB8AEJAvsB3AHFAbAB4gEiAs8BVwEpAREBLgFsAXUBfwGyAbwBsQHLAdcBzgHU
-AdYB6QE0AnECRwLlAb8B2wHVAcEBxAGsAZ0B1gERAvgB1gHtAQQCBwIGAvUB6AH9Af4BxgGcAZcB
-fwFhAWMBhgG3AcUBtQGrAagBoQGZAZMBlgGoAZwBQQHcAL4AmgA7ADMAigB6AB0AAwD2/8X/nP+V
-/6//z//p/x8AWgBnAGsAiACxAMQArgCYAIQASgAWACcAQQAiAP//+/8IACsALQD9//b/HwAzAFwA
-tQDdAMsAuACrAJYAbAA5AP//xP+m/7T/uv+E/07/g/8SAIAAlACOAKAAjgAvAM7/l/9u/zz/F/8O
-/8j+lv7t/iD//f7u/tz+wv7g/jb/cf+U/7X/nv99/27/Nf/+/vL+4v6m/mf+Yf5I/g7+F/5J/lL+
-Qv5r/tX+Q/92/3P/fv+w/9X/vv+N/4v/sP+l/2D/Fv8O/zP/NP8b///+9P4O/y7/N/83/2H/q//a
-//P/2v9F/3j+Bf7l/bj9mf20/dn9Kf6q/sf+af4Z/uv9sf3C/SL+Uv5b/kX+Af4B/iP+6/3N/Rj+
-Rv41/kX+ef6G/p7+7/43/3D/w/8oAHkAmgCdAH4AJwDF/2P/t/4H/tf9FP5r/o3+ev6D/rb+7P4H
-/wX/9/7j/hf/pf/w/8T/f/9H/yL/D//0/tX+4v48/5v/rv+2/9n/qv8z/xf/Rf9K/yz/Df/2/v7+
-A//3/gv/7P67/hX/k//V/yEAjgDYAMAAdgAmAJv/5v6a/sb+4v7f/ur+6f7S/rv+m/6T/vD+kP8h
-AIIAwADyAAUB5wCjAFoANgAsADUAZABxADcACgADAAcALABrAKEA1AAZAUcBMAElAUMBSgFbAYQB
-YgHJAFIAXwB4AGoAiADDAMMAzgDzANYAgwAiAAAAKAAiAO7/9P8zAFYAUQB2ALgAugC4AD8B9QE0
-AhEC7gHcAbkBkAFlAREBpgBmAHMAjgBvAFQAmgAbAVsBSwFRAXMBigG5AdoBtAGdAc4B5wHSAd0B
-AwISAgsC9wHVAbYBhgFGATsBOgH7AO4APgFTASgBMQE6ARABCAE2AY8BIgKHAoECWgIzAgQCxQFk
-AfQAoAByAFgAdADtAG0BqgG1AdkBVQK2ApoCVgIjAg8C/QGkAUgBKwHrAHcAUwCSANEAAQEjASIB
-OwGDAaMBkgFnASYB/ADaAJEAIwDS/+H/AwAAAAcAPwClAA4BUwGDAYUBVwFhAXoBHwGfAGMAFwCr
-/3r/X/9C/zn/Iv8y/5b/xf+Z/6P/0P/C/7r/9f8yAA4AsP93/2z/df9W/wj/3/7v/gH/Cv84/4T/
-l/+g//H/IAAYABwAIgAYAP//w/98/2j/aP9Y/0n/Hv/u/uX++P4z/1P/E//m/h3/Pf/x/qf+s/7B
-/pf+YP4x/iX+e/64/m/+Cv7F/cX9AP4g/iL+OP5Z/mX+kv7z/gv/wP6R/o/+m/7X/iv/Ov/o/pP+
-if6J/mz+cP6P/p7+tf7n/hf/Iv/7/sD+rv7A/tD+7/4B/9f+oP6n/tr+zv55/lj+gv6s/qf+nv7Q
-/v7+8v76/ib/Df/W/vb+Nv80//f+rv6c/tL+4v6c/mX+Tv75/bz93v3K/Y39uv0c/mj+gP5c/kH+
-bv6z/qX+ev6J/oL+Pv4T/kj+lv6w/sr+E/9U/33/qP+4/6D/pf/V//P/9//6/w0AOAAwANP/mP/f
-/z0ATQBYAH8AkwCCAHIAigChAKcAqACHAFQAFgDU/7X/tf+t/43/kv/M/7T/SP9I/47/f/+B/7v/
-wP+/////QgBPACMA5P/0/zEADQDG/8///v8IAAoAMABoAK4ACQFLAWcBjAG2AcABogFcAS8BLAEo
-ASIB/QDDAMcA/wBMAZQBhwFAATYBawF8AWEBRwFYAbgBJgJPAh0CjAG+ACQAIwBiAG0AjgATAbwB
-QAKDAj0CoAGHAd4BtQFOAUEBMgEUAQIBxwCZAH0AVgCWADUBjgGPAZsBugGYAUwBMAE+AUIBVgGi
-ARMCeAKyApoCKgK6AWQB9wCzAKMAZAANAP3/NwB6AIUAdQB5AJEA1wAvAVQBbAGZAaMBYAEFAdQA
-owBaAEcAhwDoACsBOAE6ATsBEQHRALcAmwBPADEAggClADoA1P/L/9z/CQBeAJsAwwDzAD8BpgGu
-ASMBsACCAC4Ayv+O/2b/Ef+U/oL+DP9v/1v/Uf+C//D/lwATAUQBdQF0AR0B2wDEAJoAZgA0AAoA
-/f/4/+v/7v8KAC4ATQAgAM//7P9aAK8AzQDcAPUA+gDKAHEALAAKAO3/y//P/9//yv/I/7v/Xf8I
-/+n+wv6m/q7+nP6Z/uv+I/8K/xX/OP8M/+z+Of+B/4r/if9H/+f+5P4y/0X/AP8K/3H/pf+k/6H/
-kP+F/4r/dv9P/yf/6/7J/g3/Tv8v/xD/D/8A//T+/v4H//3+C/9P/7//LgBNAAAAsP98/yL/yv6m
-/oD+Mf7w/en9F/47/gr+7f1C/pH+z/5q//z/EgAMAAEAqf8x/9f+jf5f/iv+yP2S/ar9pP1//Xj9
-i/2q/c/9Lf7M/iz/KP8I//3+Ev8o/yL/Cv/m/pv+Tv5h/o/+iv5u/kL+Ff4U/mT+5f4b///+HP94
-/63/l/9+/5H/yv/u/7v/ef8//wr/Fv9y/8b/mf8y/2j/IABwAFIAKQAGABgADgDV/wIALQDB/3j/
-z/8hABcA4/+N/0v/df/L/93/pf+B/7///f/k/7X/l/+F/7X/DQA8AGgAqQDCAMEA3wD+AAIB9gDY
-ALkAoACjANcACgEkAVoBwAEMAvABigFWAWEBIwHEAMAA2QDQALYAoQCSAJUAvAC5AHAAYACrAOEA
-zgCaAEwAHwBtANQAtABYAE8AjADVAPQA3QDKAN4ABgE5AWQBbQFNASsBVAGQAVwB4wCmALYA4wAa
-AT0BLgEVARYBEgESASgBLQEwAVwBdgFqAX4BjAFMAQoBGgE5ARQB+AAdATMBFQENATgBQgE/AXoB
-nQFmATYBTQFOAVkB0AEQAsMBlwGVAWABNgEdAeEAzwDUAK8AtADXALkAqgDtAB0BDAH5AAkBJQEl
-ARQBCgHdALMAugC3ALIAvwDBAL4A0ADwAAoBKwFRAT8B/QDVAMIAtgC4AJoAggChALwAuwC9ALMA
-jgBpAEMAOQBRAFoAZgCIAKIAyADrAOUArwBSAA4A0P80/6n+yP76/r7+jf6C/l7+hv4Q/3H/rv/W
-/+H//v/q/4D/RP9G/x7/5P7W/sL+jP5x/nX+Y/5t/rP+6P77/hH/NP9i/47/lv9w/0T/Tf98/1v/
-6/6g/qL+sf6W/oP+of66/sb+8/4o/zb/Tf+W/67/af8u/yH/9v7h/gv/BP/U/o/+I/4L/nH+zv7c
-/s3+rP6N/rj+DP9G/2D/T/8x/0b/Q//k/qj+m/4//un9E/5//sb+s/6X/sP+7/4B/1P/5P85ACAA
-zv9t/xX/Af8X/+z+gv58/hP/c/9T/zX/KP8H//P+7f7E/oT+U/4l/tn9pf2x/cH96/1K/pv+pP6T
-/tD+N/9v/4T/n/+S/x//x/7d/rv+HP6T/U79Mf16/Qb+X/5l/mX+tv4Y/y7/Jv9B/37/rv+7/7f/
-qP98/y//5P6l/pb+0f4X/zv/fP++/6D/cP9z/3v/e/96/4P/q/8DAGYAaQD6/4//fv+g/8H/2//0
-/xAAKwBIAIYA2wArAUwBKAHpAI4ADADO//f/GAAkACkA+P/w/1cAiwBCABIASgDHAEMBaQEGAVsA
-CQAhADAA5/9x/3D/6P83ADgAKAAfAB0AXwD+AIcBkQFCAfIA2AAiAXMBSwH1AOUAGgFJAVYBQgE3
-AX0B2QHWAaUBsgHaAdQBqgGFAX4BgQF8AWoBTwE2AS0BOQFPAW0BlQG3AbABiAF4AYABfQGeAcUB
-kgFyAYIBOAHCAJsAkQBoAHIAtwDiAPsAIgFJAWkBhgGaAaUBtQHUAd0B1wHmAc0BsQHOAdMBrgGO
-AXwBgQGoAbIBhQGMAbgBegEiARMB7wC5AL0A2gDdAN8AAgEoATsBIwH+AAIB8QDAAKYAngCyAMAA
-rgDBAPgAIgEvASQBYgHjAekBvQH7AQICiQEnAfkAtQBeABgA9v8NAFAAjQCcAF4AHwBWAKwAnwCL
-AMEA6QDNAJQAVgAIANb/7f/b/4D/YP90/27/jv/k/wMA6f/t/0AApwDJAMoA0ADrAC0BYQFhASsB
-sgBDABkADAAnAH0AhgALAL3/9f9FAEcAGgAOACIAGwAHAOv/hP8z/1//hf+E/4T/Pf/q/s3+rf6n
-/s3+y/7O/iX/W/8p/wD/If9N/2D/df9Z//H+xP4X/2n/Xv85/z3/X/9u/4f/o/9//3f/qf+g/1r/
-Gf8X/0j/Vf9N/0L/G/8K//v+vv6k/qb+df5b/qz+Gv82/wz/7/75/uv+u/64/tD+wv6d/lr+F/4z
-/o3+yf7J/n3+Lf5N/pz+yf74/gL/5P75/iH/8v6V/nf+aP5d/or+uP6f/kf+Hv4t/lb+zf5D/1z/
-Uv9a/2b/P//3/sf+vf7p/hj/KP8w/xj/7f70/if/Yv+H/57/v//C/4r/R/8z/z//NP8l/0D/bv9p
-/yT//f4m/zv/Af/C/qf+kf5S/k/+1P4j///+Dv9X/4T/qf/Q/+j/7f/a/8z/tv9Z/8/+nv7u/lD/
-hP+v//n/NwBXAHwAagAuAD0AhACjAG4ACQDM/6z/l/+s/57/n/8hAJ4A1wDOAF0AAQACACQAQwBR
-AGYAuwApAVYBQwEHAaIAXwBeAEcACQC5/57/9f9QAH4AkQBeAFoABAGYAYsBVAEjAboATgAqABoA
-8P+7/9H/WACoAGYAXgDcABMB8gAhAZwByQFzAf4A3gAUAVMBZwEkAc8AzAD6ADYBXQFOATgBPgEg
-AeMA1wC1AFYALQBTAIoAswC+AKsAtAAFAUEBGAGpAEYATACjAN4A4gDEAMgACQEeAeMAtACZAFEA
-SwCvAOYACwFKAVABSgF0AZQBrwHRAboBbAEmAfIA2gDjANgAmABeAFEAVwBcAFYAQAA+AFIAVwB2
-AM4AAQHqAMkAzAD4ACQBMAEIAbcApADoAP0ApAA/AB0AKgBpAL4A0gCmAIkAjwCSAKEAugCZAEMA
-EgA2AGsAcwCFAJ0AcwB3AM0AlADb/4f/k/+r/9n////i/7H/cf8e/xb/W/+w/+L/y/+x//7/kADC
-AE8Ayv+l/2z/4f68/hb/PP80/1L/ov8FAD8AIADS/7T/v/+l/4z/mf/O/xYA/v9x///+yf6i/q/+
-Jf+v/7v/kv+S/8b/PQCRAJEAbgBAADUAFgCc/xj/w/6i/rf+3/72/sP+Qf4I/nH+5f40/8D/JgAX
-AAAADQAKAKn/Iv/6/gD/1P53/iL+BP4K/hD+Ov6S/ub+R//R/0EAWwA5AAYA5f/s/+H/pv95/03/
-Cf/i/vH+/f7h/uv+H/8i/w3/Fv9c/6n/lf9S/0f/b/+P/6H/q/+V/4L/e/9k/zX/8f6k/n3+vP7h
-/m7+P/6y/tL+b/46/lH+Rf4a/jH+if64/pr+nf7j/uv+sf6q/t/+7v6T/kr+kP7U/rb+tP7C/rz+
-3f4C///+4v7g/hD/V/+x//n//v/V/6n/oP+9/9X/vv+A/1P/Sf9g/3D/av9g/2D/gf+V/4n/n//T
-/9j/zP/o/wgACgDs/93/9/8MAPr/zf/I/xgAaQBGAAEA9/8eAHUAmwBtAHsA3AAQAfYAswBeAC4A
-OgBVAD4AFgBGAIcAbgBKAFkAYQBlAKcA8QAOAQgB1QCrALUAzADLAMAAyADJALsA5AAsATYBFgEj
-AWoBoQGYAXwBXwEZAdwA+gBKAVgBBwGrAI0AogDIAL0AgwB8AKIAuwDhABwBFgHMAKQAdgAfAAcA
-QAB2AGwAZACsAP0ADwEdAU8BXQEhAfgAEwFUAXQBXAFTAU8BUQGrARsCNgImAgsC4gHTAegB0gGp
-Ad0BIwIaAvMByAGMAVcBPgEdAfEA+AA9AZoBswFqAWEBmAGCAVcBZAGMAb4B0gGfAV8BXgF6AUgB
-tAAaAAAAjQDsAJUAIADj/6r/sf8pAKsA2wDIAK8AsQC2AIcAGwDW/+n/5/+4/7P/r/+J/6D/AwBI
-AHIApQCKADwANgBbAHIAqQDdANoAyQCzAJgAlwCPAGAAPAAjAA8ALABzAJAAWgBQALwADgHqAKIA
-jAB2AEIAQABFAAkAzv+I/x3/7f7U/qr+9v6I/5D/MP/5/tH+qf7E/sX+Rf7l/Qr+Qf5a/lf+F/64
-/bD9Ev55/tz+M/8Q/8f+F/9+/17/Vf+v//z/HAAVAN7/sP+//6//Nv+9/qv+uP5+/i3+Rf6z/sv+
-i/6O/tX+Cv8v/0X/If/E/pf+mf5o/lj+nf7A/qr+kP5v/jH+6v3c/Q7+/f23/Sf+x/5w/u79IP5y
-/n/+r/4I/xD/0P61/vj+Kv/1/tj+Fv9j/4f/jv+Q/zX/dP4k/nr+pP6B/pD+3v5R/6P/dv8G//H+
-Jf8c//v+AP8i/2H/h/9g/zX/P/9S/2v/pP/e//3/3P9B/1n+3v0R/nT+0/5C/6z/3v+q/3T/nv/B
-/9L/LwB8AGIAQgA5AAYAuf9r/wj/rv6j/g7/nv/U/8n/yP+v/2H/Rf+E/5b/bv9w/0//9f72/oT/
-9v/c/8f/CgBEAFoAbwBeADEAPgCtAD4BSgGYANn/rf/J/8f/3P8oAGUAcAB6AHQARQBKAJsAAQFZ
-AY0BzAEOAjoCWQI1As8BhwFqASwB2QDHANkAjwD//+b/LwAwABQAPgCRACIB3wFaAmcCHQLVAd4B
-/gG/AUUBGQEAAY0ATgCLALkAmACxAGUBMAJ5AmECgQLYAusCnwIqAtwB1gHoAd0BmwEzAecAyADX
-AA0BSQF2AaMB4wEXAisCKQIAAqwBhgG9AfoB9gHBAZUBdQFsAaAB3QHRAXABKgFjAacBUAGqAF4A
-UwBIAGoAnACeAJMArgD6AC4B8gCcAKEAzwDSAKwAhgBwAEsAMgBxAN8ABwH9AAgB9AC2AJsAlgCB
-AFYAKAA2AGwAjwCXAHsAXABZAGwAkwCvALgAwwDEALYAmQBcACkAGQD6/+X/9//0/83/pP+B/3D/
-qP8BAB4AGgD4/7//4f87AD8A5v9Y//X+Ef9t/83/8f+n/z//R/+D/4j/lP+x/6X/l//h/1kAgABU
-AFEAcQBnAD4A8/94/x//L/9X/0n/Lf8Z/wj/K/9+/7r/2f8JAEEARwAmAP3/uv98/1j/Hf/f/tn+
-8f70/tP+zP7g/tr+Af9m/6//wP+o/4b/SP8k/2f/af/v/s/+BP/1/sb+u/69/qj+gf5z/ov+nf6D
-/o3+Bf9S/w//3v7k/sz+zf7t/gz//v6x/oD+if6e/qT+j/5u/n/+zP4i/3f/pf+t/83/8P8GAAoA
-8f/Z/7n/jP9K//b+z/7G/r3+7v4Y/+7+4f4S/xH/zv6a/ov+g/52/nT+p/6w/h/+pf27/dv94P3R
-/Xn9M/1t/dj9Tv7m/ib/AP8l/3b/Yv9P/4v/nv9m/zf/LP8q/yj/M/8u//n+4v4w/6D/EQBnAFAA
-GgA7AJUA0QDiAOkAvQBmAEEARAAOALb/y/8RAAcA/f8nAGIAggBrAEwAUQBoAHMAQQDo/63/pv/G
-/8n/mv89/6H+cv4w/93/7P/1//f/1P/R/8j/j/9Z/yD/8P4t/47/jP95/5D/if9w/7L/PgCDAGQA
-aQDFAP0A/AAQATMBJQH8APwAEwElATABLQEhAQAB0ACOAAAAXv9o/zsAEwFEAf0AnwByAI8AlQCC
-AKkA8wA1AYYBCAJnAjECtAGNAZkBfwGBAawBhQESAfYAOAH8ADEAvP/E/xcAuQAkAQoB9wA1AYEB
-ggEmAekAJAGMAcgB4QHhAYYB3AB5AHYAdgB3AGwAPABPANIAOwFHASIB8wDcAPYANgFjAYABwQHx
-AdEBoAGfAcUB4wHRAYcBOQEhAQwB3ADDANgAIgGOAdoBuQFPAQgB0gC/APYAPwFtAVkBXwHaAS8C
-9wGOASoBzwCmAJQAaQBfAHAAfgC3AN4ApgBSADAAKwD5/9X/HACCALoA9QAuAfIAcQAhAPP/7v8S
-ACsALwA6AFUAaABYACYACQAdAB8A0/+I/5H/s/+0/6X/pP/H/wwASwBvAHgAcQCEAJcAfgBfAE8A
-FACt/0n/+/7N/sH+x/6U/vL9mP0P/pT+r/69/vn+ev/z/zAAOwD0/5D/WP9o/5H/bf/2/oL+PP44
-/oT+z/7N/r/+I//T/y0ALABHAGwARgD4/7//oP9g/wr/5/4E/yT/8P6l/qH+s/7B/g3/e/+8/+L/
-EgAyAAIAfP/w/q7+sf6r/lX+4P23/bj90P08/q7+zv7U/g7/Pv8J/9T+y/6u/pL+b/4m/t/9s/2S
-/Yj9kf1r/VL9lP3e/fn9IP6W/iP/J/+8/oL+jf6Z/qD+nv6a/r3+wf6B/l/+gP63/vX+G/8e/z3/
-Wf85/yr/J//3/vD+Ov9+/3r/Uf80/xL/7/74/v/+2v7t/jb/Tv9B/yb/+v7x/gb/AP/k/gr/gf/N
-/87/t/9p/+7+nP6L/qf+zf78/in/S/9z/1T/Ev9B/8n/FgApAGAAbAAeAAAAKwAdAM//xf/v//X/
-/f8eABIA4v/C/+D/VgDBAMcAsADMAAoBIQEEAf8A/QDMALYA2wDnALYAmwCYAKEA4AAHAQQBAgHR
-ALAA7QAaAQsBHAEbAd4A4gAFAdAAmgCQAHAAWwBuAKoA7wDPAIkA1ABcAWQBKgEUATYBfQGUAWkB
-JgH6AAcBNAFLAUcBVQFqAXMBdwF8AZcBngGQAYEBYAE9ATwBZwGUAZsBbAH8ALAA1QAkAWkBigFX
-AQgBDQFWAYIBlQG8AQgCUwJPAvYBggFDAUkBOgEdAewAaAAUADIAVQBtAH0AQAD5/18A+AAGATgB
-mAGgAcMBzwFTAdcAkQBIAPr/vv/T/x4ATgBgAIAAsADRAAsBdAHAAc4BugGaAYwBbgEIAbEAuwDp
-AOwAtAB4AHMAlACIAFkAZwCnAM4A1ADfAPcAFQEJAaAAGQDX/73/wv/p//T/OAC/AJsA9v/h/x8A
-2/9l/07/UP9m/8T/5v+7/7H/vv/B/57/Qv8S/1r/wf/t/97/1f/5/zUAoAAgAU8BIAH5ABoBKwHZ
-AGAABADJ/4r/Nv/B/jb+9/1C/t7+Tf9a/1P/mf/v/9P/ff9k/33/hf9F/7z+X/55/pX+i/6h/rv+
-yP7e/vr+Hv8+/0D/9/48/pv9zv1o/nb+OP5e/on+nf7w/hT/5/7D/q3+0f42/3b/ev95/3D/Kf+u
-/lD+IP69/Uv9Tf2e/er9Kf5i/pb+wf7j/gL/Ov+e//3/KwBKAF4ANQDK/z3/wP56/lz+NP4A/vv9
-Mf5t/pr+4/4u/yv//P4A/z7/XP8o//j+Ev9M/1z/OP8b/wL/5P4S/3n/m/9l/w//5f4S/zv/KP/g
-/nz+Rf51/t3+Dv85/5b/s/+L/4n/nP+B/yr/3f4Q/43/tP+O/3H/c/+U/6D/X//0/rL+4/4+/x3/
-tP69/g3/Hv8Z/zj/gv/U/wUANQCSABMBdwGEAWIBcwGhAYUBKwHKAF4AAQD//z4AUQAdAP3/DgAD
-AL//2/9jAGoAHAAzAF4AXwCPAOwAHgHtAKMArAC9AHwAIQDf/5r/Vf9Q/5v/9f9IAJUA3wAuAUcB
-VgGbAd8BGAInAuEBkgFPAf0AwwC/ALsAfABDAGMAoQC4AMcA9AApAVEBZgFkAWsBdQFXAT4BTgFK
-ARYB4QC4AKgA7wB6AcoBhwFbAe8BeAIuApQBRgEzATQBHwHhALAAigBxAJkAzwDDAJkAfQB+AJYA
-wgAQATgBDgHUALQApADBAAgBGAH9ACYBWAFQAV0BjgG7AbwBiQF3AagByQGUAV8BgQGoAY8BaAFA
-AR4BKAEeAdUAqQCkAIUATAA+AIkA4QDTAHgAIwD6/w0AXACrAKsAWAAnADsAPAAaAMf/bf+v/0cA
-cwBSADoANQBXAJkAnwBbAFEAkwC1ALMAyADEAHEAUwCyAOcAwACmAJkAcgBdAGcAQQDs/7f/uf/U
-/9v/2P8XAHkAnQCUAGoATgBcAGQAWAA3AAgA5//I/7b/0P/4/wIA/f/1/wAATAC6APwA4wCQAFIA
-TABeACEAkP9O/1//Rv8i/xH/D/8s/y7/L/9v/2j/7/7J/hD/Rf9W/17/OP/m/r/+3P4H//H+mf5z
-/pH+zP4X/yP/1/6F/mP+bf6I/pf+lv6o/rb+rv7g/lD/o/+3/6v/ov+W/6L/uv+c/5T/uf+0/4X/
-Wv9D/yr/Ff/p/nb+G/4L/gX+5P2d/a79Kf5s/nD+cv5T/hz+Iv5h/pf+iP5V/mr+lf5X/vj9Mv7k
-/jT/9v7E/sT+xP7p/iz/Rf9O/5b/6//l/4X/Df/f/gf/Jf85/2j/kf+3/7v/dv8V/8X+p/7k/pH/
-bwDgALYAkACWAEcArP8x/87+cv52/tf+Nf9W/1L/Wv9R/0f/Q/8e/yr/lP8DAD4ARADn/z3/+f4g
-/0b/b/+Q/9f/dgDWAJUASgA0ANr/Jf/E/hb/h/+n/6P/w/8XAHcAjAA9AAAAFgAeAAYAKgBtAIUA
-fgBlAD0ALgAzAC4AQgCLAO4AKQEYAewAvQBiAPz/x//i/zgAmgD+AEMBSAEzATwBYwFjAVwBfgFw
-ARABzQCaAP//Y/9V/3//zv9qAPYAEgHOAIYAigCXAF0AOgB7ANgACAEEAc4AUACz/5P/FACFAIwA
-lQDMAPgAKQE6AeQAkQCrACgBnQGaAVEBQwF5AXIBKgERAQ4BBwErAZQB5AHNAaEBkAGGAbEB+AEJ
-At8BmwF0AXMBaAE3Ae4A1AD6AAwB7QAXAY0BcAHoALkArQCcAMkACAEkATsBTgFlAXYBSgHKAF0A
-fwDtADABXQFlARMBzwDUANMAqwCPAJAAsQAGAVUBUAEeAQgB8gC+AKEAgwBVAHAAqQCxAKkAZwDr
-/67/0/8JADIAZQCHAHsAnAAJAR4BygCYAI4AgwBwAFYAPQANAMT/mf+d/47/Zv+W/xgASQAfAAQA
-//8VAEcARAAAALT/eP9d/0b/8P5+/lj+lf7n/h//Tv9X/0D/hf84AH8AHADF/67/rv+o/4X/af+B
-/4D/Of/0/tP+xv64/sT+8/4i/2z/vf/n/xcAPQAjAOn/sP+A/z7/8P69/qX+nf55/kD+O/57/tz+
-Jv8O/7r+0P5Z/5j/df9o/0n/9/61/oz+kv6n/nf+Pf5q/rP+m/5z/oz+qP6K/on+yf60/lP+O/5K
-/m7+rv6U/jz+OP5j/nX+m/7C/s3+6P4n/4D/mf8//9n+of6a/rv+9v5k/7v/i/9A/1//i/9y/yz/
-7f65/pH+pv6+/oL+Ev7L/d/9K/5b/jn+/f0L/k3+VP5C/j7+Iv4m/jX+Kv48/jL+5v22/aX9jf2t
-/RL+TP5P/nT+0v4r/0j/dv/N/wUAFwATAB8AMQAsACsAOABQAIMAswDSAMEAZAAsAEwAhACwAKwA
-fgBiAHoArACjAGAAKwATACgAaQB+AEUAFQD+/+j/DAA6AA0AwP+v/8f/8P9GAIsAgABTABQA5f/l
-/8P/mP/G/w4AHQAnAEkATQBbAMAAPQGUAeAB2wFkAQwBGgE6AUkBTgEyAQYBEAFTAVQB8gC1ALsA
-zADkAPsAKQFbATYB8ADpAOEA6gAqAQ4BrQCXAKsArwCsAMMAxACnAMYACwFcAa8BtQFtASMBIgFy
-AZgBOAGqAGoAkgC9AKEAaAASALH/uf89ALwA5QDFAK0AAwFkAS0BswBuAEkAQQB1AMEA0AB0AAcA
-9v8YAGEAwwDZALAAugDqACEBRwEVAeUAPAHEARUCAwKIAfcAoACWALAAwQDNAOYAMQGTAc0BEgJo
-AnsCYAJrApQCggIdAtQB8AH+AbUBQgHFAKAAygCyAIYAlACeAKQAzADZAKwAYwAnAEgAmQB4AA8A
-BQBFAGMATwA8ADwAPwBgAKoA2QC4AJEA0wBBAWMBOQHsAJ4AegB7AIAAYwA1AFMApgC4AJYAdwB0
-AHgAdgB8AEIA0v+s/9f/1v98/xn/9v4D//v+zP7R/jb/p//m//L/AQA9ACcApf9t/53/sv+F/0v/
-Af/D/uX+HP8I/+j+5/7s/gf/V/+N/53/xP/P/8L/7P8eAOv/bv86/0j/IP/M/p/+vf4T/1n/Wv9E
-/zv/If/9/vT+5v7c/g3/JP8Q/yz/TP8z/w7/Ff9C/1n/Wf9T/0D/Tf+h/xMAXAB3AIQAPwCH/+7+
-qv6K/r7+Bf/y/vn+cv+p/yT/kf5e/l/+hv6//vz+DP/L/oD+X/4n/rv9m/3d/RT+SP6N/pf+Wf5H
-/qv+Df8O/w//LP9F/3z/p/+U/3n/ff+j/+n/GgADAOv/6P+s/2L/cf/j/0YARwAdAPL/vf+N/2P/
-M/8f/07/ff90/1b/Rv9D/yP/8v7e/tX+zv7J/s7+2P7o/hT/Hf/e/rf+of54/r/+WP+p/5r/Q//d
-/r7+4/76/hD/Wv+x/+b/AwAdACUABAAlAL0AHgHjAIIAWwBZAEYAMgBnANsAEQHgAJkAPwDy//r/
-GgAlAHcAMQHWAfcBmgEqAdgAnABtADcAEgD0/9H/xP/I/9z/DQBaAIwAiwCFAKEA8gA/ASABuAB0
-AIcAugChAGUAVgBOAEMAUwBmAFkAQwB2AOYAEgEAARoBaQFvAf8AwwDaAOsAHQE/AegAdwBrAJwA
-qQCSAIcAigC4AB4BfAHAAcwBnAGKAY0BdwF8AcgBFwITAsEBVQEQAQMBIwFOAUUBUwGzAdIBeAFM
-AYcBrQGwAcABmgEvAfIA3wCSACUA3//Z/xgASwA/AEcAigDFAPQA+wCeAD0AYwCjAHQARQBhAHIA
-PgA1AHQAYAA5AGoAmQCrAM0AywCbAK0A6QC/AFQAEwAGAEkAlwB3ADIALwAzABAACwAkAAoAx//M
-/wsAAQDT//T/TQC5AAgBAwHSAJ8AYQD//2P///5M/8L/yP+P/13/I/8J/3//KABhAEEAGQBHALYA
-xgB9AE4AJgDZ/7f/AwBNAB8A1f/n/wIA1v/P/yYAhwDDAMIAcwAwADEAIADF/23/ZP+5/wwA4/9g
-/xD/Hf80/xz/AP8l/43/yf+s/6z/x/+6/6X/kv+F/2v/H//S/qL+fv5//q/+1P6g/jf+L/6N/qf+
-df6m/i3/bf9//7P/7f8DAMn/ZP8//wz/iP5C/mv+gv5m/mz+nP6r/oz+nf7O/qH+kP4c/4X/Yf8m
-/wb/4P7T/sz+p/6w/t3+Df9b/4H/Tv8V/zL/af9e/13/nv/l/wkAIwAvAAMAmP8r/wX/7P6p/nb+
-dP6O/rP+1P6h/jr+Wv7Y/vv++v4e//r+lv6G/qb+p/6H/hz+yf09/gH/Yf+s//f/1v+Z/93/XABe
-ABYAMwCDAKAAtADIAJwANwAJAFAAnwCOAG0AjAClAIIAZABGAPz/4/89AJcAjwBlAE4ANwA8AD4A
-9/+v/8T/AgD8/+7/NABOADAAVwCyANwAvgC1AJ4ABACN/9//SgAxAPH/z//X/ysAawBiAD4AFAA2
-AHgAWQDw/6L/qP/N/9P/vP+o/37/Ov80/07/Vv+J/+n/XQDmAFABSAHeAKAAkgB6AH0AeQBlAHIA
-sgD5AOQAawAYAFUAywAYATsBPwFKAWQBaAFrAXYBQwHoAMkA2gAPAWsBaQETARgBVQFGAeMAqQDb
-ANkAagAmAAUAxv+z/6z/ev9o/4v/0v9MAL4A6gD7ABsBMwEgAc8ASwDO/8//OABlAFYAYwCPALAA
-rQC1ALoAgABsAKsAywCjAGoAhAD2ABwBtgBAADsAkQDRAPoANQFfAW4BiAGbAXMBKwH2AMYAjABg
-AFIAVgAxANj/lf+T/7f/2f/8/0wAogC8AMIA4AABAQgBCgESAfoAlQARANn/xP+Y/2T/HP+//qr+
-IP/k/2MAPwAbAIQA/QALAbIAOgAZAE0ASQAEAN//r/8n/7n+2v4S/w//Fv81/2j/0P9SAKAAxQDb
-AMkApQCgAJ0AnACUAEMA5P+w/5D/cv9H/zP/VP90/1j/CP8r/83/5P+H/2X/aP92/2X/Jf8V/yP/
-Cv8g/03/Jv///iL/Sv9r/3j/gf+h/4v/Wf9S/3f/pP+v/5f/kf+r/5b/ff+8/zcApQC2AHYATgBv
-AIsAJwB6/x7/Fv8n/zH/Hf8R/yT/L/8l/1j/y/8AAOD/v/+//8T/n/8k/+v+Nf9v/2n/IP+e/oT+
-G/9x/zP/IP8s/xP/NP+C/5r/j/9P//L+3f66/jf+xv3O/RP+R/5w/m7+Ev7W/Vv+Dv85/yX/JP8z
-/0j/Q/8e/wv/JP9O/0f/B//N/rr+2/47/4r/mv+1/9z/2//J/7v/of95/zj/Af8s/47/qP9W/wb/
-FP9K/67/HQAIAK//r/+y/2z/Uv9M/wD/xf61/pX+lf7B/uH+9/4I/yz/hP/V//P/HAA5ADQAHAD6
-/w4AGQDG/2//ef/B/+7/CAAzAHoA2QD1ALgAoQDHAAQBYwGDATgBAwH1AMsAqwDOAAgB+ADSAOYA
-CgEWAfsAzwDaAEMBqwGlAX4BcwFAAekApQB6AHMAhwBpAAoA9v9NAGgATABoAGEAQwCWABQBUwFW
-AQ8B3wAgAUEBBgHIAKsAvADPAL0AgQAJANj/LQCIAKEAsAD1AHcBDAIzAtoBqwGmAVsBHAEtAUEB
-MQESAfYA7wADAScBOAEzAVABkwHJAa8BhwHOATcCMQKrASwBDwH4AJoAVwCCAKkAowDTAAsBKwGN
-Ac4BdAEPAegArAB2AGAAMgAzAFcAQABBAF8ATQBnAMkACwEVAREBOAGNAbcBngGQAaIBowHFAR4C
-RwITArYBeAFIAQgB2wCqAGgARgBVAIQAiQA/ABsAbADCALsAmwCWAIQAbQCCAKYAnQByAFsAewCb
-AIsAdgCpAP8AAgHCAI4AJQB3/0X/vP8JAMz/ef9p/4X/r//M/8D/h/9v/8r/QQBdAAcAjf9S/1H/
-Xv9C//X+y/6//qn+gP5k/nz+k/6s/v/+bv+y/7P/r//C/+f/LQBaADUA/v/f/9f/wP+D/2H/W/9P
-/zz/A//E/sL+9f4j/0D/qv8xAFYAPAD4/7X/rf+e/5D/zf8BAMj/g/+c/7n/h/8//+j+mP6U/qD+
-tv79/hL/7P74/u/+c/4m/m7+tP6//vj+W/9m/yn/Lv9i/z7/0f6o/sP+8P5O/5j/d/9E/0X/Wv9P
-/wP/tf6l/r7+w/6v/qv+pv6o/rn+0v7x/gL/G/9J/3X/nP+z/5X/Xf9I/y7/3f6F/mX+af5k/lz+
-Wv4y/sb9pf36/SP+NP6W/uD+7v46/47/e/9I/0H/N/8S/+v+0f67/p7+iP6M/q3+0f7c/gv/iP/r
-/w8AFADj/6v/kP+H/5D/hP9V/y3/L/9Q/1b/YP+K/3z/R/9e/7X/AQAcAAAA3P+8/57/jP9n/yD/
-8P79/gT/6/7W/s7+5P4U/zD/Jv89/7L/BgACAP3/4f/G/wIAQQAtAPj/2/8DADIACgDV/9P/3P/d
-/+L/+f8ZABMA5v/T/+v/CwAZABAADwAeAAwA4v/p/yMAXgCIAJoAhQCIANUAAgH6AAcBHQEyAU4B
-ZAFsAWEBQwEXAfMAMQGlAaYBZQF4AcsB5AGLASkBKwFWAVUBUAFbAUUBIwFgAagBbAEpATQBNwFF
-AVoBHgG7AIMAlQDyAC0B8ACnAMYAFwFSAZoB1gGhAUcBVQGEAYQBbAFNAQUBtwC4AMEAmACRAK8A
-vQDgACMBTAFbAU0BJQEAAdkA+QBpAZ0BWgHXAH0AZABqAIEAiACNAKMAvwDgABEBRAFMAUABTAFI
-ARwBGgFWAVQB5wB9AFoAVQA1ABEAMwBmAHcAlACiAHIARABfAI8AkQCZAMUAvgBcABIAIAAoABwA
-SACoAAcBFgHJAHAATwBWAE0AQABCAE4AfgCeAH0AVQBcAJYA1AAEASYBMQEwASMBDwECAf0ACAEd
-ATsBKAHFAIYAfABNAPr/pf+C/5X/dv9W/47/nv9e/0//cf+I/53/of/A/xMAIQDf/+7/MAABAJD/
-Xf9A/wf/2v65/p7+of7X/i//U/9S/17/T/9E/2j/j/++/wYAFQDe/7f/lP9k/1//Zf9Q/1P/bf9m
-/0j/Ef/h/v3+TP97/3v/iP+6/8H/XP/p/pP+KP7w/S/+q/72/uv+2v4U/5T/2v+Z/0D/6v5i/in+
-Z/6S/nj+G/6y/bz9If5q/qX+1/7O/tv+Qv+Y/4v/bf+X/+P/AAAPAEUAcAB4AJIA0ADFAEYAtv8q
-/8L+xP7l/tn+zv7d/vv+Of+J/7n/sv94/yv/Gf9K/2X/Vf81//r+/v5k/5b/Vf/4/sr+3/4n/0v/
-Gv/W/sv+Iv9Q/9/+h/63/uX+Ef9n/4f/gP+S/7P/1f/F/5v/nv+0/9z/BgD0/7D/PP+I/hz+Tf5r
-/jf+Lf5X/oX+uv7o/gL/R/+l/9L/zv/C/8n/CwBxAI8AXwArABEAGAA8AEkAAwCf/4f/3v9SAHYA
-agCfAPwA/gB+APP/yv/2/yQALQAmACEAPQB+AK0AgQAsAP3/3P/T/+b/7f/5/w0ACgD5/+f/1f/a
-/xEAVgBoAHsAsgC8ALsAHQGiAacBQgEDAQMBHQFVAYcBfQFRAUUBeAGQASIBXwDF/5L/wP/x////
-FwAbABQARACIAJoAhgCSANIAIwFvAakBugGqAY0BbgFlAV0BPQEMAd0AugByAPP/0P9fAOAA+gAf
-AUQBZwG4AfYB9gHmAbQBVQEvARYBpwAwAOP/rP+f/7v/7v////n/QQDMAD0BfAGkAa0BkwFqATsB
-DAEMATIBCQGoAGEAKQAJACcAVQBxAMYAPQGCAbABzwHTAdABvgF1ARoBBQERAdIAcwBgAHgAqAAD
-ATgBJwEAAfEAEwEEAa0AigCHAEkA///V/9b/AADr/3b/Qv+Q/9T/0//l/+//of+D/8n/7P/J/5X/
-hP+K/5T/uv/Y/+b//v8VAEsAtgAVATkBWQGFAZ0BoQF2AQsBpACAAHUAYABZAEIAAgDx//H/tf+B
-/4z/wv/i/+P/AwAGAJv/TP+D/77/yv/O/53/Wf9W/0v/8v6b/nr+Yv6H/tz+7v79/hP/Af8f/1X/
-Mf/7/hH/Iv/3/uv+Jv8m/7L+e/7R/h//H/8T/y7/W/+I/97/LQAQAKD/S/8y/wT/yv7J/t3+7/4T
-/zP/MP8M/+P+0f7B/rz+0f7D/oj+Tv4s/jf+ZP5s/kb+MP5R/oD+c/5R/l7+gf6J/l3+Pf5a/kv+
-Ff4o/lf+bf6G/nj+X/6g/gf/O/90/8P/2f/N/9j/6/+//1j/K/9O/33/lf+T/5j/vf/h/+X/8//x
-/7L/kf+0/9f/7f/8/8j/gf+e/+z/DQAlAFUAZQBVADwAEwAuAJEAtQB8ACEA6P/w/wAA9f/d/7j/
-gv9o/2//Pf8A/yH/Q/8Y/wn/Kf8J/83+3P4j/4j/2v/d/9r/BAD8/6f/mP/3/wUApP+L/7b/jf9C
-/z7/ZP+s/woAXQB+AE8ALABsAMsA6ADDAIYASAA7AHUAzAAAAewAqgBrAGgAowDwACgBLAFHAYUB
-VQHrANEAtwBiAE0AngDmAAEBLwF8AXkByQABABIAkQCHAEQARABTAH0AxwDFAHsAEwB+/0j/rP/u
-/8//rP+q/7L/vP/6/1MAhwCuABgBrwEDAj4CmQKfAikCjgH3AIsAeAB6AE0AMgB7AOoAIwEjAR0B
-OQFeAYsBywHqAcoBmAFRAccALADg/9P/0//v/zIATgAzAEwAnQDBAKgAjQB8ADYA9P8eAFMAHADj
-/+v/9P///yIAWADIAC8BQgFjAZoBhQFcAVkBNgH5AN8A1gCcAAkAgv9k/1//Pv9W/7//RgCnAL0A
-zAAfAXgBZQEYAfcA0QB5AC0A8f+b/1j/Xv+b//H/GQAFABQAPAAyAC4AXgCSAMcAHgFsAVEBvgBK
-AE4AagB3AJMAiABTAHAA2gDbAG4AJAD9/9f/1//c/77/nv9e/xv/Ev/8/uz+I/+C/8v/8/8WACAA
-CAD2//r/8/+y/4X/0P9cAKIAXQDS/2n/FP/I/sj+CP9D/4X/wf/Q/9v/2v+C/wL/4v4l/3r/lP+B
-/6T/3//5/+z/zP/S/8X/gv9f/2n/eP+Y/7b/if9I/w7/j/47/nj+sP7W/lX/u//a/x8AbABuAFEA
-GwCs/27/a/8w/9P+hv4w/ub9+f1K/nb+l/4V/8j/HAAPABIANgA8AAAAov9t/1b/Lv8F/8P+f/6K
-/qP+nP6l/tv+Rv+x/8f/kv9u/3b/f/94/3H/lP/c/+T/nP9L/yn/J/8H/+L+8f7y/sL+3/41/yv/
-4v7V/gH/IP8h/xf/IP8L/9H+8v5l/5P/XP8y/yX/6P6d/pH+zf4A/9n+sv7m/lv/z//e/6f/m/+t
-/73/x/+//63/sf/S/9z/1v8AADUAGwDP/7H/4P86AJkA0gDMAK0AnwCdAJoAoACuAKcAfQBIAAoA
-6f8SAFkAZwBMADQAAADq/0oArwCtAIAAQAAdAEUAYgBDAAMAyf+r/83/FQAwADkAZQB7AIUAzgAZ
-ARgB9QDsAOkAxgClALAAzADFAKsAegAzAEYAowDPAN4AFwFrAdIBLQIjAt0BrAGoAc4B+AEqAjwC
-wAH5ALgA/wAqARkBIAFPAWsBVQFXAZ0BvQGiAXABQwGCAdwBpQEYAZwAJAAAAFwAvQAJATUBGAEP
-AUwBXAEtASQBFQHUAJUAgwCiAJ4AZwBvAIoAewC2AAQB+wDoAPEA/wAnAWoBlQGnAaEBbwE4ARoB
-/gDUAMYA9QAxARgBuQBoADwAEADv/zcAvgAPATQBYAFkASUB4gDLANMA7wAdAS0B/QCNAAIA1P8e
-AEoAIgDt/8z/CwCRAMUAnABmAEAAWgCbAGsA3//R/ywAKQDC/3f/df9n/0//nv8RAFUAkwC8AK8A
-iwBxAHoAnwCsAIgAcAB7AIYAoACnAGcAEgDi/+T/FwBEAFsAhgCxAMAAqwBoABQA1f+9/7//n/9n
-/2//n/+W/yP/YP6a/T/9kf38/er91/0o/nz+rf7p/iH/9P5T/sP9s/3q/eT9o/2M/Zb9iv2l/fD9
-B/7y/Sb+pf72/hv/Xv+L/1X/+/7F/rn+5v4V/yT/Qf9b/1v/aP9X/+f+Yf4m/kj+ev5i/gn+kP03
-/U79tf0O/h/+Ff5X/vL+ev+I/0H/Cv/l/qT+c/51/mX++P2i/db9AP7L/af9uv2m/aj9TP7y/tb+
-Yv5a/sH+8P6s/o7+4/5B/5P/+/8IAJL/A//N/vD+DP/x/pP+Sv6m/mP/+f8iAM3/b/9Y/2D/b/93
-/4z/s/+t/3z/av+D/4P/R/8w/2n/XP8N/wD/Iv8H/8j+C/+z//n/z/+Y/1//Mv8p/z7/Xv9G/0v/
-6v9sAFAADADq/+X/8f/p/7j/cv9q/9L/TwB2ABoAhP8l/yb/aP+W/6n/uP/W/1YABgE8AfEAqgDP
-ADcBiAGmAYsBZAFyAY4BhAFdAUIBRAEUAboAqQDPAM8AtwC4AL0AyQAWAXMBfgFyAcABNgJyAnwC
-gAJpAhYCwQGVAWIB8gBrACUABADI/9j/UwB6AEMAUACeAAgBjAHhAe0B3AG5Aa8BvwF9Ae8AmgBv
-ABoA5v/9/wMA2//t/5EAUwG9AR8CiwLBAr0CiwJLAjICLgLjAV8BFwEHAeoA7gAfASoBCwEFAUoB
-sgHUAeEBDgIIAsQBeAFeAV8B+wBsAEIAcgC4AP8AZAHAAfIBMQJrAkIC6QG4AakBpgF6ASsB6ADK
-ANQA2QC/AH8ALAAzALIAJAEvASQBJQEEAf8AGQELAdcAjABPAAsAq/90/2X/Z/+e//f/aADYAPcA
-4gD2AO0AjgBoAJ0AxgCwAGQAGADk/6n/Xv80/0X/af94/1z/Sf+R/+v/5v/K/+b/AwAXAEkASgDO
-/17/Ov8F/wn/Vf8u/5X+LP4k/mj+vP7g/vT+CP/4/gD/Qv9y/1v/M/9L/1r/Ef/n/ir/Yv82//T+
-5f4M/1b/lf+k/4f/WP9V/5D/uP+l/4L/fP+Y/5//Zf80/1b/iv+s/+P/HAAmADgAcQBoADMAGAD5
-/7D/ZP+B/7v/jf9I/0L/Qv8X//n+9/7O/qz+of5V/h/+Q/5u/oL+Zf4i/iD+Wf58/pj+yv7V/tX+
-IP+B/5D/O//n/uX+4P7Q/hj/Wv9Q/0n/W/+G/5//pv/A/7z/lP+B/6r/0P+Y/1f/bf+P/4r/Zv8q
-/wX/5v64/pf+gv5j/kb+eP7f/ib/IP/N/oD+sv5B/4b/cv8a/3r+P/6V/ov++f2g/ZX9pf3x/XL+
-/v5V/3D/nP+w/4H/U/9X/2D/L//k/rX+qf6j/nv+Xv56/sj+N//J/0gASQDf/6X/2P8tAE4ALAAD
-AP3/DAAkAAsAsP9s/2H/X/93/7//4//L/+//YADAAPcAEQEMAe0AqAA/AOD/zP8FAEMAbACkAMUA
-0AD5AN0AhQB+AJYAeQBaAEAANgA6ABgAAwARAP7/0P/v/0wAYABHAIUA5QDkAMYAGAGiAeUBHAKG
-AosCGgLXAcYBjAEIAVoA1/+k/7H/2//1/wAANwC0AFUB0QEcAhcCpgFsAb0BCgL4AagBTgEFAdgA
-tgB7AC8AEwBlAOQAIgFFAW8BTgEdAVsBcwH9AKEAZQAtAGoA8QBkAZYBhwGSAbsBrwGGAcABfgIy
-A1IDDAO0AhgCUQHDAFYA8f/S/+P/7v8hAH8A2gBAAYUBdQFbAXwBswHIAeAB9QGoASYBrAA8ABkA
-LgAgAOX/rv/j/30A5gAJASsBSQFiAWwBZgFlAVIBFgHLALkA6ADPAEIA9f8wAIEA6gBvAZoBVAG4
-APf/nv+3/67/fv9W/yT/Kf+f//z/1f+U/33/dv9z/6v/SADDANEA2gDuAPUA+wCzAAMAc/9G/2L/
-yP8cABAAFABFADcA7P+7/87/7f8AAAsACgApAHkAvwDcAOcA0gBzAPD/fP9B/zD//v6Y/jn+Gf4j
-/jX+SP43/u/9xP3U/fb9WP75/oD/8f9kAJYAZQAAAIr/HP/C/oT+dv5x/kT+Ff43/rn+VP+7/9n/
-BgBSAFoANwAyAD0ADQB0/+H+kf41/sT9gP1p/U/9aP3F/R/+Yv6y/gP/Jv9I/3b/ev9Q/xj/z/5+
-/m7+pP7C/pr+jf7N/hP/Pv9M/w//i/5f/sv+9v6d/pD+yv6d/lL+Wf5Y/hX+uP2u/R7+aP5m/pX+
-9P4p/wj/2f7P/u3+Iv9F/2z/gf98/2P/Ev+q/nr+sP4r/5P/zP/3/yMATABhAGcAOQDM/47/rf/K
-/5L/KP8M/1H/av8n//f+Av8Z/03/sv8hAFsAQQDp/7L/7/9DAFMAPQASALL/f//J//7/yf9u/zj/
-Yf+M/2T/X/+v/9v/0P/L/6L/dv+r/wIAAwDS/7j/s/+T/2r/i//i/w4AIABOAIEAoQCZAG4AfwDl
-APoAmAA6AD8AwwAoAe4AsQDrACgBBwHQAPgAHQHLAJ4AzQD5AEABkQGOAVcBKQEWAUYBggFHAc8A
-oACqAL4A0AC+AIwATADt/5//xv8sAGkAkACwAL8AwQCaAHIAjwDYAAwBJwEwAe8AXgDY/7v//f9d
-ALwA4gD5ADsBUQE0ASYBTAGnAfQB3AFmAS4BcAGNAUsBJQFQAXoBZgFSAXEBmAGNAWYBhQHmAQoC
-xwGCAWcBOwEPAQYB6ACkAI4A0QATAdQAQQAmAKkAGgE3ASsB/wDsAAwBEQHkALcAjgCAAKcAoQBN
-ACQAOwASALr/4P9UAEYA7/8RAGoAewBqAKYA/ADOAGMAOABNAHkAcgA4APP/wv/W/wIACAAnAH8A
-xQDvAA0BIwE6ASEByQBtADwADQCu/3L/nP/b//3/EgAdABYA6/+w/4L/Wf9k/7X/2f+o/4z/cf8i
-/wn/N/9n/37/Tf82/6D/1/94/17/5P8mAOf/7f80AFwAiwC6AL4AqgCSAG0AHwCk/0D/Gf/4/uH+
-G/9q/2T/Pf9E/2P/ef+K/4f/fP+b/8P/hP/q/qr+3/7c/rD+0P4L/xX/LP9//7f/pf+5/yEARwAD
-ALX/UP/Z/t/+Z/97//P+zv4B/wX/MP96/6T/1f/o/9v/3v+1/2f/Qv8y/yz/J//P/l/+SP4v/vD9
-8/0l/k3+e/7a/k3/qv/V/87/3f/D/1D/BP/0/rL+U/4c/u39z/3b/fr9T/7t/kr/Lf8m/1b/Xv8g
-/9z+1v4Y/4//8//0/3v/5v7S/i3/df+w/8T/mf+h/7f/fP8Z/7H+d/5x/oT+rv6o/lb+OP6Z/u3+
-1v6h/pD+n/6+/u7+IP81/0T/cv+J/1j/Jv9E/3b/Zv9y/9H/8v/H/9b/GgAMAHb/4f4c//v/gQBd
-AAcADwCXAPQAvABWAB4APgC4AFABowFtAQAB7gAuATcBzgBCAPX///8uAEMASAAyAOH/uP/3/zMA
-XACaAO8AhQEYAgoCcAH+ANAAjQBYADwADgDs/7z/ZP83/1P/lv/j/yAAigAvAcMBCQLyAdMB9wH9
-AccB0gHUAXcBRAFaAVMBKgEWARYB9wDMAPwAfAHVAdgB0wHoAdYBuwHgASoCPQLzAZsBlgHYAfsB
-wgE7Ac0AowCBAGoAdABqAD8AJQAxAHAAyQAPAUwBYAE1ASwBYQFLAckAggC3AP8ALwFPATwBDgH5
-APoAMAGCAagBoAF1AWIBdgGAAZMBkAE/Af4AFgExATkBQgEyASgBWQFrAT0BKwEPAeAAxwCfAHMA
-VwAtAO//3v8ZAE4ASQBEAEIAIwAZAEsApQDoAMIAhACxAOwAzABfAML/n/84AKgAnQCEAFUAOwCZ
-APwA/gDEAH8AWwBgAI8A2ADUAHgAPAA5ACoA+/+z/3T/iP/P/wAAEwAAAOH/3v/n/+//FABRAFgA
-EQDU/8//4f/F/5P/hv+H/3L/Tf9F/1v/Uf87/2T/pv/E/9f/AgAeAA0ABwAAAMz/rv+2/6v/wP/v
-/8P/Xv/7/q3+qf67/q3+u/71/vb+zv7t/h7/J/8z/wz/o/5v/ov+ov50/kf+aP6X/rP+6v4V/xb/
-GP8V/xD/GP8c/xD/+P79/vj+y/65/s/+9P4k/0H/OP8M/9r+6f4f/zH/Lf8d/wv/+/7A/oD+fP6U
-/of+Zf54/pf+S/77/Tj+W/4y/j3+MP78/SP+lf73/hL/yf6I/rX+2/6m/ob+sv7g/tv+x/6X/jL+
-Av4t/ln+Y/6J/ub+P/96/5T/XP8c/1X/0f8aAAwA3f/k/wUAyv86/8v+nP6d/sb+8P4w/63/GAAx
-AAQAtv9o/yj/Cv8W//3+p/6c/tj+uf5p/kf+Dv7c/Un+7P4x/33/6f8oADQAEwDL/2X/7v6a/pz+
-z/74/i7/Z/9A/9f+vv4z/9z/NgBLAGgAdgB9AKUAzQDAAJEAsQAeAWgBcwFBAeIAlQCPALYA0QDN
-AJYAYwBxAIAAXAAPANv/BgBPAGoAnQD9AD8BjgH4ARQCxgFzAW8BjQF6AWoBegFFAfIABwFMATwB
-EwEpAUkBMAEcAU8BlQG8AasBhgGaAaoBjwGMAaIBpAGLAXQBUgHwAFsA/f/x/+7/+P82AKAAIgFE
-AdsAewBYAGMAqAALAVQBZgFAAfYAtwC+AOQAswB4AI0AnQCjANgADAHuAJQAagB4AIwAwgDtAMQA
-tQArAcsB+QHCAXMBAQG6ACsBqAEvAWQAMgBqALcAyQBgAPL/7f8oAG0AkwCGAHoAsgDnANkAnwAS
-ADT/qP4A/+r/jACsAMEAzgDCAN8A7gCfADUAEAAsAEgAOQALAMb/aP8h/zv/rf8iAHIAqgANAcUB
-XAJWAgAC4AHlAdkBzgGmATsBxgBGANH/1P9TANQA8gDNAJYAUwBLAJMAogBrAGcAVwASAP7/KgBo
-AHQAVgBvAK0AiwD4/2//Vf96/4//0/9DAE4ADgAZAFIAVQAOAIX/Ff8n/1//Xv9//8D/j/9l/9v/
-NQATAO7/5P/h/wcAHgDO/0z/EP8//3T/VP8o/0X/ZP8i/7v+qP7g/kr/xf/3//b/CwDi/4X/qP/q
-/4v/Bv/i/uH+3/63/lb+Mv5d/nf+mf7a/sr+a/5w/sT+vf6J/rr+BP/g/qn+yP79/v3+4P64/of+
-bv51/pn+1P4Q/1H/gP+V/93/SAB8AGYAJgDl/6T/bP9L/y7/NP9K//n+iP6L/rL+iP5T/nb+wv7D
-/qv+zf7n/tb+yv7R/qb+bv7U/m7/W//n/m7+DP44/r3+2/6u/sr+M/+g/wQAZgByAAkAoP9x/3H/
-kf+T/zD/s/7C/jv/af8k//L+Ov+x/+r/5P/S/67/oP/j//H/p/+C/6n///8eAOD/oP+G/2v/c//Y
-/ywA/v/M//f/MQBpAIsAkwCeAJYAfgA+AMT/h/+t/7//w/8KACkA2P+u/7P/aP8p/1D/hP+1/wcA
-RQBmAE0A4f+m/9X/EgApABYAAAAIADMAcQBzAD4ATQCkAOIAAwFEAXIBTgEVAfUA9gAHAQ8BAgHr
-AOkA2gCzANMAVwHAAdEB7gEeAj4CLgLtAdAB1gG6AYUBbAFuAXcBhgF1AUMBPAFlAVQB0ABYAEoA
-awBlAC8AMgB2AF0ABgA2AMUAHAEjAQMBHQFKAQYBjgBhAHsAjgBvADYAOQCtAC4BEwGZAHwAtQDP
-AKcAfAB4AI8AuwDvAPUA1wDLAKUATgAyAFMAYABkAGkAeQCoANoAEwE6AVEBogHkAZEByAAaAPn/
-OwB8AHUAJgAJAE8AaAAgADcAvAABAQMBvgANAHf/Wf9p/1P/I/8m/17/mf+c/63/NgC4AMoAwgDy
-AEYBTAEFAeEAxQByACMALACLAL0AigB3AKUA1AD/ANIAawBaALoAJQEnAdQAeABEAFQAjgCsAJEA
-SQAfAFoAmgA/AI7/Wv/G/0kAcQA6AN3/g/9S/1D/X/9P//D+bv6w/sf/QgDb/4H/gP+2/93/f//h
-/qr+yP4D/z7/Wv9F/+X+lP6R/o3+oP60/jL+oP3f/Xf+vf7c/gv/KP8b/wn/6/6J/iT+8P3x/Uz+
-yP4N/wD/lv4m/h7+X/6w/gr/NP8T/xD/Q/9G//z+rv6z/gb/T/9D//z+wv7E/ur+Af8M/x3/I/8d
-/y//Lv/F/h/+zv3c/f/9Lf46/kn+a/5U/kX+bP6T/sL+Iv93/5j/oP+B/xT/jv42/hz+MP5p/uL+
-a/+e/3z/hf/s/ycA9/+5/63/yf+//4j/mP+1/2j/Ev8j/1z/ff+0/woAWwCIAHQAVgB4ALUAxgCY
-ADgA2P+//6//Q//g/g7/Y/9G/wL/9v4L/0L/bf9d/0z/bf+2/xoAkgC0AD0Akv9K/4P/vP+S/0n/
-Jv8c/yf/Xv+m/7T/w/9PABIBXgEzAfoAyQCVAGIAVQCaAAcBHQHAAHQAVwA7AEoAbQBaADgAbQDk
-AC8BIgHUAJ0A0gAnAR0B7gD5AO0AmwBEABEANQCoAAgBDQHKANEAhQEdAvsBxwHFAaABogHFAa8B
-qwGxAV4B8QC1AF8ABgANAFEAhQC+AAwBBQGnAIIAwQD9AAsB+ADSAOgAJwEjAeQA1AARAUkBYwGR
-AckB5wH8Af4BxAGUAbkB6AHXAboBzwHRAZgBcAFtAWcBUQEpAesA3gAUASUBAwHpALgAdQByAIMA
-XAAtADEAQwA7AFMAeQBkAGIAogDhABQBKgEXAQEB5ADDAJkAWwA/AFwAfgCPAJMAlgC0AMgAsQCb
-ALcA7QAEAegAogBJAPr/6v8MABgA/v/d/+r/VADYAOAAjQCSALwAlAB5AIAAQgDa/6j/3P8lABQA
-tf9u/5z/PQDcAOQAeQAqAAUA5P/4/0cAHAB5/yj/Iv8r/2T/n/+Y/3T/cP+N/7n/uv+K/4j/vv/n
-/+n/o/8i/7f+nP7I/tn+tf7K/kL/pP9j/9L+nf7g/n3/8f/g/7j/pf+k/9r/DQACANn/3f8AAOb/
-lf9V/zr/G/8A/yH/df+0/9T/CQBaAJIAoACFAE0AKgA1ADIAxv8C/2L+Tf5t/lP+Of7y/ZH93f2A
-/pj+cf5r/nb+yv46/0H/+P7u/gj/s/49/iz+KP7g/aX9pf3E/fn9XP7h/kz/mf/K//H/KgBNADIA
-7v+h/2b/bP9j//H+f/5V/m7+xv4a/x//HP9t/7f/1f/+/wMABgBJAIMASACR/+b+1P4m/0T/DP+d
-/vn9pv0v/sf+1v7f/tb+yv49/93//f95/8n+X/46/iP+LP5c/lX+BP7d/Rz+m/4C/xj/LP+J//7/
-ZwDZACMB/gCKAA8A5f8fAHEAxAD9AAcBEwEmAREB1ACdAJUAvAClACYAx/+z/7z/0v/0////wf9/
-/5f/0v/6/xgAOgBfAFYAKwAgAOL/Z/9i/6T/lv9t/2v/XP8r/w3/Jv93/5z/m//+/4MAjwBBAC0A
-ZgCEAIAAfwA7AM7/z/8cABMAw/+N/3f/if/5/4cAvgCWAHQAowAPAUgBAwHdADgBbAFUATUBFQEi
-AVABeAGzAcoBcgEMARkBbQGRAYoBjgF2ATQB/gDuANsAkQBZAMcAYwFvAV8BlwG1AZcBiAFqATkB
-SgFtAWcBcAFmAS8BOQFqATEB5QAQAVEBfQGpAZ4BbgFHAWUBmwF3AT4BQwGBAQECZwJNAuYBsgHZ
-AQEC+AG8AWYBQgEpAbIAJADk/9P/6P8vAGYAXgBnAKkA0wDNANoATAHsARoC0gGXAY0BTAHTAIoA
-YQBVAJoAwwCgAOAAYQFYAR4BHQH2ALkAxwANATgBLgEeASgBDwGUAB0AIABDAEIAdADTAPQAfQDs
-/wsAkgDWAMQAXwDQ/4//uf///0IAaABrAIoAsQCQACIArP9//5//0f8EADwATQAUAL//kv+N/37/
-Z/8+/9b+ZP5R/pz+6P4T/0H/h/+s/4j/X/9//7b/pv9f/wf/y/7B/qv+mP61/tH+xf7H/vv+EP/s
-/vT+Nf9+/9f/RQBsAPf/Yf8s/yL/8/6Z/ln+av6v/q7+Tf4c/n3+B/8p/xv/Qv+S/+H/EQAJAMf/
-fv9X/y3/6f7F/pH+Ff6//dH9Jf58/pL+lf7J/gj/JP///qD+Wf5N/if+5/2//cT9FP4+/vD9ff0j
-/Sn9wf05/h3+Df42/k7+ev7O/u3+vf6T/oj+m/7i/g//v/4+/kL+yv4x/z7/JP8T/yX/RP9l/3j/
-YP9J/3D/mf98/2//jv9u///+nf6o/v/+Gv/3/vP+Cf8O/+/+wv7A/gD/O/80/xb/J/9o/6b/p/93
-/0f/JP/3/uD+Av8n/1b/fP9O/0b/wP8wAD0AIAAIAPn/6v+9/4j/hv+f/67/1P8LABAAyP9y/2v/
-s/8AADwAZAB/ALAA5ADrALYAggCyADIBiQGDAVUBSQFXAUEBHgElAVEBkwHtATgCQQISAu4B2gGp
-AYUBlwGdAWUBBgG3AIUAWgA5AC0ANwAnANf/zf9ZAMgAwgCvAKYAogC9ABUBjAGiAUMB7ADqAPAA
-uQCaAKAAmQCdAMMA8wAAARIBUgGCAXcBVQFoAZYBmQGAAXkBtgHvAdEBowGJAWYBaAG7AeoBvAGy
-AdsB5AHRAcUB1gEHAi4CIALWAXkBMgEBAeMA3wDtAAQBJAFQAYEBngFpAfIA0AAoAWEBQwEyASIB
-9ADiAK8ASwAbABkALgBmAHQATACAAPQA+ACnAKYA4wDwANoA8QBgAbkBqwGHAW8BVgEtAbMAFADd
-//n///8JAE8AiQCwAN4AswBWAGAAjwB3AFcARQAuACcACADL/4T/Uv9d/4L/n//B/+7//f/t//v/
-FQApAAQAcP/0/in/rv+6/4P/Wf8P/yT/oP/W/+n/HQA/AG8AxADYAKMAaQAwAP7/7P/Y/4L/3f5N
-/lH+kv6m/t7+S/+C/3j/gP+S/53/sf/N/+T/vP92/2b/UP8F/8v+wf6k/nf+ov4h/1r/D//d/vj+
-B/8S/y3/R/9m/6f/1P+c/zD/yP5Q/vn9//0s/jj+c/7+/jT/C/8I//n+qf5p/lL+ef7X/v/+5/7T
-/p/+Qv5K/sH+5v6//gX/hf+i/5D/f/8s/8f+pv6l/qD+t/7S/t7+B/8J/73+iv5L/s39t/0u/pr+
-rf6A/l7+Xf5c/nj+2P5A/1r/PP9M/6j/+v/u/7P/s////zQADwCh/yb/0v6I/lT+Qv7+/bT9+/1n
-/l/+e/76/k7/p/8yAHAABgA5/8/+5/7S/lr+Av4b/mn+qv7e/gT/C/8j/5v/OQC5ABsBLAH3AOAA
-0QCLAHQAwADoAMAAmACSAJMAfABGAAMA4f/l/wAAXwDVAPYA2ADDAKQAdgBtAH4AdwBDAOD/a/8e
-/xj/Rv+F/6L/ev93/9//GADv/+3/EQAYADwAiACkAIcAYABQAFsALwC2/3f/rv/0/xYAaADkACIB
-IQEYASgBTgFaATUBDwELAf4AxACKAJoA+gBSAXkBlgG4AdcB0wG2AZ8BnQHAAQcCJQLYAWUBIgEf
-ATABRgFRAU8BZAGMAacBggEZAcMAyAApAYoBcgEIAQQBpQEzAvoBOAF4APr/BwCSAMwAkACBALsA
-IAGGAY0BTAEHAd8A5gAUAVcBRwG8AFgAdwC5AMkAzgDpAOoAzgCrAKAAoACNAJ8AzQDeANEAwgDY
-APUA4gCkAIIAnwDbAAgB7wCnAGkAUQB4AOMANgEgAd4AwQDWABABOgEvAQMBxACdANoALQElAQAB
-0wBXAOT/yP+t/3z/U/8l/zr/vP8aACUASABuAGUAawB/AFYA5P+R/7H/2//s/xIAIAAIAAMAOwCG
-AK8AwwDuACkBGAGuAHAAfgBTABEALgBFAAUAzP/J/8b/rf+D/z3/B//+/iD/bP/E//P/zf+R/5j/
-l/9h/0T/NP8P//X+rv54/tr+HP+7/lX+G/4A/lr+2/4d/y7/A//r/j//f/81/wL/UP+H/1n/KP8b
-/+b+lv6O/rn+z/7a/hL/Tv8v//f+E/9o/8P/7P/x/wEA7P+9/63/d/8C/8/+2v60/pL+wf4k/3D/
-e/+Y/8//q/9A//f+3f7i/gT/If8r/y//HP/Y/lr++v06/s7+HP9P/4P/l//O/wwA9v+S/yj/1P6g
-/qL+t/7O/gb/L/8R/+b+3v7M/r3+7f5m/83/1P/J//j/MgBCABMAz//m/2YA1wDMAEQA4P/2/+z/
-d//y/q3+5f4v//j+u/70/k//Yv8v//v+/f5T/7//CgBYAIQAlgC+AKcALgCr/23/Y/8b/9X+MP+c
-/3//Sv9K/2z/qf+2/5P/k/+6/+n/CQAIAP7/FwAmAAEA2//f/wsAGwDS/5X/tP+r/0D/5v7j/ij/
-a/+P/5v/df9C/1r/kv+4/wcAbgCBAGgArwAeAS4B+QC8AIcAgQCCADkA2v/O/w0AaADRABoBHwHw
-ALAAgQCAAKkAtQCVAFQAFwCFAFoBbgHzAOIAEwEYAfUAqQBsAG8AlgC9AKgALgC1/5z/r/+9/9L/
-y/+i/6//GAChAAUBEgHiAO8AZwHFAaoBUwETARkBRwFhAT4BAwEOATUBFAHVAMMA0gDJAJAAjQDo
-ACUBLgFtAccByAGdAYcBZgFqAY4BcAEXAdAApABcAAsA8//8//P/7/8hAHIAwwAgAWABZQF7AZYB
-dAFVAUwBVwGFAYEBPQH2ALUAdAA6AA4A8f/t/zgA2wBuAZYBfgF6AWsBOQEIAd8AwQCkAGoALwAt
-AE4AJwDI/5f/s/8DAFEAfACRAJ4ArQCyAKsAiwAsAMH/p/+2/4//Vv9P/1H/Yf+n/wAATQBwAIIA
-0AD3AJYALgAMAAAABAAYABoAGAAEAMf/qv+2/5D/bP+H/4f/Uv9S/8D/GQDc/2f/KP8L//j+1/6N
-/kr+T/6c/vv+J/8p/1H/tP/1//T/8P/g/7L/gf9d/2r/r//y/wcA+//g/7X/iP9e/1D/R/82/2L/
-fP8g/77+zf4Y/zz/OP8E/7H+0v5P/1T/4P5v/gr+9f1e/qT+c/4a/gj+hv4M//H+nf6z/hP/PP8/
-/3P/bP/z/oX+hP63/qL+d/6T/sv+8f4N/x7/IP8p/0r/WP82/zH/Xv92/2T/R/8+/2T/oP+6/6n/
-df8d/7v+hv6y/vz+7/6U/mP+pv4I/yP/HP8b/wL/0/7Y/gr/Lf9F/x3/wP6B/k3+L/4T/tf9Dv67
-/ur+mf6s/iH/Y/9//47/if+M/4//ev82/+/+4v78/gb/IP+f/z4AggB8AJkA7AAoAQYBlgBaAHMA
-awAbAMH/lv/D/zcAiQCpAMQA4QAMASEBAAHeAOIA8gAjAWcBcAEyAb4AawBxAI8AggBOACEAz/9l
-/2//xf/W/7z/0v/r//j/SwC7ANUApQCJAMoAQwFXAQoB5QDHAHcAXQCpAPYA9gDAAKEAuADfAB4B
-gAGwAXcBBQHNAPYANwFRATIBCwETAVEBlgGdAXsBcAGAAYABWAFKAXcBpQHSARMCVAJsAkQC7AGR
-AT0B/gAUAW4BsAG5AZoBPgEDATsBMwHCAI8AbAAaAAcAHgAoAEUAHwC2/9j/bACMAGMAsQA7AVgB
-PwFFAUQBUwGkARICYQKXAuACDAPXAl0CuAEDAWYA4P+Y/6z/sv+m//3/cwCNAGwATwBiAJIAqADD
-AOgA6ADLAJcAUwAeAPH/6P84AK8A7ADkAOkAAwHZAIUATQBfAI8AZgA+AG8AWwAgAGkAzgDmAO0A
-8QDmAOEA0ADaADsBXQHcAGEAPADx/33/Jv/S/mz+Mf5z/gT/Uf9o/7r/MAB9AIIAYgBeAHQAXAAX
-AP3//v/l/8b/if9A/z3/dP+h/5//iP+V/6H/mP+//+r/3v/Y//L/+v/d/8L/rf+a/6r/6P9DAH4A
-PgDl/+3/vf8f/8n+qP5o/kz+OP4S/if+Uv5W/oT+rP5y/nX+9v5T/2P/bf9J//D+1/4r/2j/Iv/X
-/g3/bP+V/4r/YP9B/0L/af+Z/3n/+f6Y/tD+Uv9l/xP/9f4S/yz/P/8o/+/+4/4N/xz/Ef8w/0L/
-Ef8A/yn/Hf/D/oL+iP6L/kn+9P33/ST+9P3P/Tz+wP4O/17/gf+P//b/LQDf/4D/Hv++/oj+O/7V
-/ar9u/21/a79Bv6P/tn+A/+S/1MAuQDXAM0AsQChAJIAlgCPADUAm/8F/7f+yf7q/tX+xv70/i3/
-bf/R/ykANwAFANr/0v/W/9L/4v/2/77/UP8y/1v/Vv8//3L/tv+m/4z/0P8eAAUAyf/B/4v/H/8I
-/0v/d/9y/1L/M/9A/1L/Vf+H/9L/2//E/wMAcABMAK3/av+X/8b/+/8dAOv/qf+2/+7/JQBAADMA
-SAB5AGUA+/+V/5P/yv/v/xQAXwDIAAsBGQEPAeoA4gAPATkBSAFHAVQBbQE6AbIAUABqAOIAZQG3
-AawBSgH0AA0BUQFAAfwAzQCwALkAvgCZAKkAxQCfAKcACQE8AS4BQwFiAT4BHwFnAY8BPAEFAQIB
-1QCBAEMAQgB8ANAA/gAFASYBRQFUAV4BRQEuAUMBXAGHAcAB2gHgAdABwgHbAdEBgwE8AS8BMgEa
-AQkBFQEaAQ8BDgEyAWoBhAGBAWIBMgE6AWUBSQEAAcgAmQB8AFoANQA3ACoA7P8CAH4AsgCwAMAA
-jwBBAEAAVAAfAOr/GwBWADoAAwD8/yAARABhAJIAzQD3ABEBAQHJAJkAhACaAKQAXQAxAF8AcAB1
-ALMA0QC5AMAA2gDZAOoAHwEoAf4A5ADWALEAjwCUAJMAWAD4/63/jf9c/x7/Rf+q/8n/yP++/2z/
-Xf///4MAZgAAAMD/yP/C/3//Of/0/rv+zf7l/uD+1v6S/mH+nP77/lb/n/+s/4f/aP97/87/MQBG
-APz/wP/S/9P/kv9H///+vv61/gT/UP9N/0T/cP+//wgAMADU//b+Zv5G/h3+zv2R/a/9E/5l/nv+
-Wv4Z/gP+aP7l/t7+af7m/ZH9lv2v/ZL9cv0//Qr9Jv1Y/WL9ef21/f39af7o/j7/Rf8R///+K/9y
-/8r/IgBXADcAw/82/8P+aP4I/ub9Mv5l/iX+9f0e/lT+dP6j/ur+Kv88/xH/5P7p/vf+5P7q/vf+
-u/6E/qH+1f7c/vb+Qf9p/27/k/+v/2T/3P66/vn+Cf/g/rL+k/7N/lf/qf/F/+X/6P8AAD0AaQBp
-AFUASwAkAOn/0f+z/2L/H/8l/zP/IP8b/yP/Kv9M/5r/AwB1AMgA5gACAR0BJQE9ATkB6ACGAD8A
-FwAOAAIADgAtAAMA1/8FADQANABqAPAAYQGNAZMBSAHHAIwAgQCWANsA6gDfADIBlAGGAUAB/ACu
-AIoAngCfAGoAFgDu/wsAEADX/7b/6f8kAEMAcACpALUAmwC5AAwBMgEBAcQA4gBIAZgBrAGNAUYB
-HgFqAcQBpAFTAUYBfAGwAdgB5AG+AZcBhgGRAcsB8wG6AWYBfAHeARkCHgISAukBpgFnARYBvwCE
-AGMAeQCyAMwAqQClAAUBVQFWAX8B9wFgAo0CowKmAlwCzwF7AXwBPQGIAOn/tv+5/8b/9f9KAJcA
-ygAsAbYB8AHgAbkBgAFfAVYBMQH2AKsAbgBuAGAAIgABABQAPgB/ALMAvwDtACgBEwHWANcAAAHz
-ALAAfwBkAC8A6P+p/4f/hv+k/9L/4/+w/3D/sv9yAK4AOQD2/wAAJABSAC8Az/+T/13/Of9c/3r/
-Y/9Y/3f/k/+w/wYAfgCmAGMAOQB4ALcAlQBCAOv/pP+Y/7f/6/8qAFMAZwB6AH8AhgCQAHIAPgAm
-ABsA6v+s/6X/7v9RAG0AQQAiACoAMQAlACwATwBPAPb/if+A/5j/U////hv/Uv8w/x//VP9T/yP/
-Bf/d/tT+H/9g/1L/KP8s/1z/gf+B/07/BP/q/gj/Pf92/5n/s//P/8b/kf9P/zn/aP+Q/47/hf9X
-///+sP57/pH+1v4F/yb/Jf8C/wX/Gf/7/tT+sv6Z/sP+8v6w/kz+Wv6P/pT+jP6g/ur+Cf/b/s7+
-9P4f/xv/5f6o/qj+1v7K/qD+dP4n/vT94f3G/dX9J/6L/sv+6/4J//v+z/7i/hb/Gf8H//f+2P6s
-/oD+bP5y/pf+2/4c/z3/Ov9E/3X/lv+L/4b/q//Y/+//3/+Z/2X/fP+M/3n/iP+N/2z/f/+n/73/
-FgCHAJoAbABwALEA1QDBAJMAcQBXAEcAMgDK/2X/ev9z//z+vv7c/vP+A/8j/3n/EABrAEkAKQA9
-ACAAx/+S/6H/rv+m/57/cf8x/zf/Tv8j/xL/V//R/zAAMAAaAG4AEQFpAVgBJQH6APAAHAFUAUMB
-+wC6AJgArwDqABgBLwExAU8BnwHZAcEBiQGBAZEBcQETAa0AfAB7AI8AugC/AHUAdwDvABYBvABa
-ADcAXwCPAJUArACtAFcABgDn/7v/lv/I/z4AdwBRAGUA2QAmAUQBewG/AeQB4wElAscCDwOzAhcC
-jQE4AfwAygClAKIAuADIAMoAoABqAHgA2ABJAXcBWQFFAV4BcwGFAXoBLwHwAO0A5ACiAGIAdQDV
-ADcBUAE3AQoBvgCgANYA9wCxAHsArQDHALwAwwCeAHYAlwDHAPgANQFGAWwBywH4AesBuAEsAW8A
-5/+q/7T/6v8DAAoANwBrAGEAJgAGAAsAJQCLABIBRgErAecAoABZAPf/lP9O/zX/Zv+U/2X/GP/z
-/vz+Rv/X/3AArwCvAMcAtgB1AGUAYwA1AAwAGQD9/33/aP/S/8f/Z/95/73/xP/I/7T/WP/z/sH+
-1P7//uf+w/73/kz/bf93/5j/ev8O/9f+IP+h/+H/2f/J/9v/6f+d/xD/qv6w/vT+HP/+/sj+3P4+
-/2n/Df+P/m3+n/7y/j7/cv+V/63/3/8cABsAAAAUAEQAVAAGAGv/8f7p/iD/Fv/S/rz+x/62/rX+
-9P4o/xH/Fv9H/33/BQBnAC8A4P+P/yn/6f6m/jz+9P3B/Wj9OP12/f/9X/5z/q3+IP9Y/0//d//A
-/+z/5/98/+3+1/7U/mn+Bf7A/XH9ev3p/TT+TP6E/sT+z/7J/uH+E/86/yL/vf5O/jj+PP7t/ZX9
-jP2x/fD9U/6v/sP+zP5G/8D/lf8u//f+3f7p/u3+qf6N/rr+zP4K/2v/W/8V/zX/lf+t/4n/mP/X
-/+H/wf+2/5L/Xv9q/4D/Wv9J/3P/jP/B/yUAQgBUALoAHQFJASkBugBvAHcAiACjAMoAtQB/AJcA
-1ADBAHUAMQAsAGEAkwDWABEB/ADTAN8A+wDzAOEA9QDzAK8AoQDmAPcAmwA8ACcAVACWAMAA0wDX
-ALgAqADDALQAmQDCAOIA1gAHAWsBfQEgAdwAFAFnAYwBogHIAfoBRwKRAngCNAIXAt4BgwFkAWkB
-cAGXAZwBdAFsAYQBtgHbAbsBnAHCAfUB9AHjAdIBfQH+AMkA6gATASUBJgESAfgA7gDFAJIAkQCg
-AM0ABQHkAIoAdwCHAHwAfQBzAJYACQE4ARMBKgE9AdgAjQC5AMAAfwB9AMMA8wAEAUMBgQF7AXgB
-XQEQAQEBKAElAQMBJgFlASgBogBbAEsASwBYAIcAvgC/AKUAmwBwAEIAcAC1AL8AzwAFARoB6wCp
-AIUAbwBeAGIAWQA4APT/c/8Z/1L/rf/R/+H/yP/G/zoAwADpAMMAdgBVAIUAeQD4/4//kP/A/9X/
-uv+V/2P/Nv9F/1D/a//i/zEAIgAEAOL/tf+n/9f//P/g/+D/DgApABkAzP93/2P/kf/o/y4AVwB5
-AJEApgCfAFEA1v9v/y//Cf/1/sb+if65/jv/gv+N/3v/P/82/5X/z/+n/5X/g/82/x7/Jv/a/nP+
-G/7P/ev9RP5i/o3+8f4Z/wH/+v4U/zb/K/8i/1P/d/+F/8r////T/5v/QP/A/p3+rP6x/sH+u/7S
-/jX/aP8Y/7j+t/7w/hX/8f7J/v7+Xf+E/1X/6f6W/pT+zP4L/w7/+v4a/yb/5v6s/q3+m/47/iH+
-bv54/nf+v/7Z/r7+xP7c/un+Iv9w/4j/i/+F/4P/xf/p/3v/Av/n/sr+cv4d/vb96P3w/SP+SP4m
-/jn+qf4M/17/rP+0/3b/fP/a/wMA6P+k/xf/p/7d/lf/iv90/1n/Yf+R//T/NQD8/5j/kf/J/+7/
-BgAEAOT/1P/d/9b/vv+w/5v/iv+n/8//2//r/+T/u/+Q/2z/iv/R/8//sP++/7j/nv+q/7P/yP8V
-AHMAmwBxAEQAZgDMAPoAqgA/AA4ASQDbADoBJAHeALYAywD8APUAsQChANMA5gDYAN0AGQFiAXIB
-XAFJATIBBgECAV0BvQHUAeEB+gHlAcQBrgFUAcEAawBnAF0ANwAKAOP/DwCNAKoAbQBvAMEALAGl
-AQUC9wGUAUwBbwGvAXYBzQAyAAgALgBIADcAKwBTAK4ALgG2AQIC+QHUAboBrQGjAZkBjgFDAb8A
-cAByAGcAPQA0AE4AegC4ABQBgQGzAcIB/QFAAmcCUQIJAt8BxgGoAaYBmAFuAWABcQF/AXMBNgEM
-AWQB3gG/AU0BLwEsAe4AyQDXAPMADgHlAKoAvAC9AGgANgBjAJEAnwDBANAAiwAxAD0AoQDRALkA
-pgCAAC8A7//7/z8AeACJAHUAVQBVAG8AcwAnAMv/0v/9/woAKQBjAI8AigBUACsAMwAoABIADgDv
-/8L/n/9R//D+5P4S/zz/cf9v/zT/RP+H/2r/Jv8b/+r+lv56/mb+Mv5A/nn+jP6n/pP+WP6E/uH+
-8/74/lP/rf+L/0b/Qf9K/yn//f4C/zv/b/9Y/wz/4v7b/s/+8f49/1T/Nf8r/zj/LP8W/xH/9P69
-/rX+4/4G//r+1v7V/g//Sf9Y/0//Tf9N/yb/B//1/tT+4v7q/rP+lP6e/sT+H/80/8b+cf5l/l7+
-hP67/p3+Zv5j/oP+wf4I/xP/9v76/gL/xv5R/iT+ev6//qr+kP6m/uz+Cv+9/ov+vv7R/p7+jP7A
-/iv/k/+a/3T/if+Z/1j/O/9b/2D/Y/9R//X+qP7N/iz/YP9A/xP/Lf9T/1X/X/9N/wX/Df+P/9j/
-fv8B//b+Fv/j/pv+gP6B/sH+JP9Q/0//W/+f/xoAdABmADEACgDU/5f/cv9a/0r/Wf+V/9L/0v+/
-//H/QABFAPX/sP/l/2kAvwC2AIcAlgDNAPMAEgEZAQQBBgEUAewAvADKANIAowCNAL4ADAE5ASAB
-/QANASwBHwEBAVYB6wEAAn0BqwAdAEsAvADNAKsAqADDABQBmQHdAa0BJgG7APUAaAFiARAB2gCt
-AHIAUABdAHYAZQB4APcAXgGPAfsBigKyAm8CKwIXAiQCOAI8AgICngGMAeIBIgIBApcBMAELARUB
-LAFLAWEBZAFHAf0AxADYABoBYgHFATICVwJFAl0CkQKNAlsCLQLhAX8BcAGhAXUB8wC1ALsAuQDB
-ANMA3wDuAPEADwE/ARQBpQB4AKkA8AD8ANQA1wDtAL4AdAApANz/nv+D/8H/OwCMAI8AcwB7AFsA
-6//G//7/RwCxABUBIQHmAMIAyAC+AK8AzQDmALkAcwBTAB8Auf+h//j/VwB2AFwASwA3AA0A1/+n
-/7H/0f/6/3EA1wCvAHwAewBUADgAPgBNAHgAeQApAO7/zP9m//r+/P4v/0P/SP8z//3+DP+J/+X/
-sv9o/5z/CQATANP/z/8JACIAHQAiAAMAjf/7/u/+ev/a/6D/Hv/S/tv+/f74/uL+/v45/4X/5f8p
-ACUA5P+l/4L/Xf9Q/2f/fP9k/wf/nf42/oT9xfzG/C79HP0U/Zf99/0J/jX+cv6z/tL+o/6H/pz+
-gv5O/iv+w/0y/Qr9X/2o/Z/9yf1+/kX/sv/t/wUA2f+D/0T/SP9n/zj/yf6b/sf+2/6y/ob+a/5v
-/pn+0P4B/yH/Hv/w/rT+gf47/uj9u/3F/fL9If4y/lj+vP4c/1r/if+i/7//AAALAJH/D//5/hz/
-Gf/e/qP+jv6e/tT+Mv9Y//j+sP4O/33/hP9u/3n/pv++/8b/vv9Z/9P+nP6O/m3+Y/6X/vT+Yv+u
-/87/9f8fACIAGAAnACQAEAAEAOD/0v/o/8L/hf9b/y3/L/9H/2D/qf/v/yMAWwBqAD8AIwAvAAYA
-y//O/63/aP+W/wAACwDr/+P/uv+l//v/RAAbANn/+f9gAJcAfQAxAOr/1/8AAFAAmACWACoA9f9h
-ANQAzwCHAFgAZQCNAMAA2gCkAGUAjAAHATQB8QDTAPwANAFwAYcBbAFlAagBFwI4AvkBtAF2AXQB
-2QE3AhsCtQGLAaoBvgHTAeABswGSAXcBXgGLAZABSgEpAfgAtwDEANsA4ADtAMwAtQD7ACAB2ADG
-ABcBPAE+AY4B2AGJAQwBKQGdAcwBsQGGAXgBhAG2AQwCOwIhAt0BuwHgAQsCPAJnAhkClAGGAdsB
-AALFAWsBOgFhAaABhAEwARYBNQFsAa4B1wHPAY4BTwFIAUoBJwHjAI4AUwAcAP//bwDkAKgAXwBc
-AEwAaQC3AO0AJAFOAVIBYQFoARkBmwBtAFoA9v+b/3T/TP86/0r/d//Q/1kA6QD/AKgAhQBlAPf/
-kf9f/1n/dv93/0b/D//d/sD+1v4L/yr/HP8S/1z/3P84AHEAigBTAPv/1//K/43/Nv8g/z7/av+8
-/wUAtf/o/pv+4v7Z/qD+4/4u//7+6/4y/yT/oP47/hf+BP4N/h3+Ov5g/kH+5/3D/SP+lP7T/lH/
-1f8EAEgAuADLAEcAnf8z//X+w/61/rT+lf6H/rj+EP9a/3z/d/9g/3D/mP+Z/4D/RP/y/rj+ev5C
-/i7+FP4N/lf+df4r/if+rP45/0T/Av/u/sH+TP4r/oT+mP5S/hv+Bf5I/rT+2v7M/sT+4/4z/5j/
-sv8+/7z+nf6M/m3+cP5H/tL9nv3I/c/9xf3z/Sz+d/7E/tT+9P5G/17/Rf9V/3L/Zv9A/xr/3f6Z
-/oT+kv6w/uf+D/8L//3+C/8r/yz/Gf86/33/vP/G/2v/+f7H/sT+8P5O/6b/vv99/0z/m//M/2f/
-B//2/v/+Nf90/2f/Tf9t/5r/kf9I/xD/VP/X/y8AiQDeANcAmgChAPAA8QByAPz/2//1/0EAjQCD
-ADUA5P+1/8P/3P/L/7n/GAC7ANsAewA5AE8AagAnANb/FwDHAFYBsQHqAewBzAG+Ac4B0QGEASoB
-HgE0AREBoAA0ABEAEwAKAD4AugAGATUBegGqAe8BQwIlAqEBZQGWAdYB0AFbAcAAdgB8AGcANwBH
-AHgA4wCwAVACZAIzAv4B2AHjAUAC6AKwAy4EqgPnAcD/dP6C/qH/EAJsBZEGhgNu/8j+fgIeCEgM
-jgzjCQsIEQggBywDb/1Q+BD1PPTy9ZD5+P24AeADpgSNBQwIpwvcDvYPkw15CFMCOfvP8n7qd+UP
-5ubr1vR+/j0HUw5YE0IWuxadE9wMoAT3/GX2GvHf7UHt2u4a8lf2lPqt/k8DlghnDSsQqRAzEFcP
-5AwBCKQBYvs09qHy6/Ac8QTzSvaN+gz/VANvBw4L4w3AD04QKw8sDMIHlQIc/QT4LvQj8gDybPNh
-9gn7fgCqBUkKCg4+EHAQ1Q4ZDLMIiATj/9T7/Pgj9yf2P/Zd9wr5Kfsc/ooBhgSoBgQIsgjYCIAI
-ZQdrBX0C5v6m+zP5oPdx9+L4dPt9/moBxgOHBckGAweqBaED3gFJABr/iP7B/UD8z/op+vb50Plq
-+j38V/7g/+MAXQHxAKL/xf17+xb57/Yx9QH0dPO48+D0dvbU99H4t/mY+nT7nfzf/Vj+of0j/G76
-z/i093P35fcI+eT6yPwf/jj/egDMARQDIwRwBPAD4gJQAY//5f2A/Lr73vsS/e3+ogDhAdcCjAP4
-A2AE0QT+BLQECgQ3A0IC9wAV/wD9l/v8+s36Cfus+z78xvzE/SX/vABfApwDWASOBDMEjgOfAkMB
-/f88/8P+dv6g/kT/y/+7/5r/BQCWAPIAbQEbArUCJgMmA24CZgGZAAUAjf9H//7+ef4E/vj9Cf6v
-/RH9qvya/PH8sf2A/gH/Wf/O/xcADgD3/+7/qP/K/tf9av04/Sr9kP0B/h3+P/5q/nr+yf4i/97+
-Uv4p/k3+ff7Y/kn/cf81//f+D/8t/97+Sf75/Sf+lf4H/7H/swCfAUMC8gJbAwQDlAJ3Al4CNgIG
-At4B9AE8AncChQJPAgQC+gEYAhYC9AHRAcIB3wEgAkcCBQJ/ATcBVAGMAaQB1gEwAmoCrAL+AhwD
-BwOqAu0BUgE6AVIBbQHIAWICywLnAgADBwO9AmUCVQJhAhECcAH8AOEA/wASAR4BVwGeAdAB2QF9
-AdEAXgBPAFsAUQA4AAgAnv8r/xT/Mv9N/4j/7v9eALkA5QD+AF0B1wH5AcwBZwHTAGsAbgCTAI0A
-PgD0/wgAPgBqAKAAzwAWAV8BaAFlAVkBAgGoALoALQGFAZ4B0wEPAvkBzAHWAeUByQGJASkB2ACU
-AEAA8P+M/w//0f4e/4//gP9P/5f/HgC3AFkBtgF9AdYARwAdADcAWQB7AJkAvAABAWwBwQGkAU8B
-JQEoAR8B1ACKAIkAowCZAIcAbgAuANr/h/+b/1EAGAFhAWUBegFpAQUBlgBIANH/Df9K/v79Av6w
-/U79Zv2p/QL+kf7e/un+Pf/H/yIAHADO/6T/rf+H/xv/rP6L/of+Pv4h/lv+M/7+/WD+1v4m/5b/
-7f8AAOH/h/9D/2X/lv90/zv/I/8C/+j+zP56/jL+PP5n/qH+5P7l/rz+0f4Y/yP/wP5Q/jb+MP4M
-/vT9/f0P/hf+Kf5A/lT+Ov76/RH+X/6a/s7+0P6v/p/+pP7B/tT+vv6u/s3+AP8k/z3/W/87/9H+
-of7i/jn/S/9D/1X/Qv8g/yD/9f6e/mb+Qv4y/mr+4f47/2j/if+S/2//Gf/Z/tD+sf56/l/+bP5p
-/jr+LP4//iH+7v3i/QL+W/7K/sb+Wv5E/qL+8P7u/uH++f7i/oz+rP5W/3X/zf5m/sP+aP++/7H/
-rv/m/wcAAADh/5H/SP87/zH/Jf80/yf/D/9O/6//0P+4/4v/hf+1/8r/rv+p/7L/p/+H/2//mf8I
-AH8AwgDEAJwAeACSANoABgEFAeQAzwAAATABLwEVAdUArwDRACsBkgGfAWkBZAGsAQ4CLALTAXcB
-fQF/AT0BEgEPAQQB1QCFAFcAZQBXADIAZQCaAHkAbgCYAMsACgE0AUEBSgFoAakBvAGmAbQBugFp
-AeoApADHAAsBJQFBAXwBnQGyAe0BDgLjAbEBngG4AfIB+gHLAbwB0QGkAV4BWQFhAWYBYQFIAWQB
-kwF1AUUBYwGKAXABVgFIAQwB8QAgAQYBpwBkAAYAmf+d/wkAhgAAAR8BvQCFANAAOgFZAVYBXAEs
-Ae0A2ADCAJ4AmQCoAJcAuAAxAXIBSwEuAU4BcAGAAbABswFZAUcBtAEyAmECBwKCAXUBswG3AYEB
-MQHzAPIAAgH4ANMAqwCxAOgAFQH1AIUAPAB2ALAAegBCAB4Az/+2//P/5P+Y/2T/5/6E/vr+wv8D
-AMH/hf/D/zMARgD//6H/M//h/sf+7/5f/7v/y//B/6r/hv+w/ycAZABZAC4A5P/N/xcASAAhAN//
-rP+p/8//3v+u/27/bf+E/2z/R/8M/47+F/7F/Zz9y/0Z/i/+K/44/kf+OP4o/lT+tf47/8v/5v8/
-/4v+o/7+/tv+iP5e/ob++/5N/zn/s/72/a79Dv50/n7+hv7E/hn/Z/+j/7D/Tf/U/tj+4/5f/tj9
-uf2O/XX9rv3A/an92P0f/j7+dP6t/pf+Qf4C/jT+hP6G/mT+Nv4L/gL+L/56/oj+R/4d/mT+9v5w
-/6H/gv8u/+r+yv62/rz+5P4U/0j/lf/V/9P/vP+i/2j/T/90/5P/sf/a/+7/1/+B/+H+Vf5h/rT+
-p/5b/lX+g/58/n3+2f4k/x3/Bf8W/0//k//n/z8AWwAzAPj/z/+x/4L/bf94/4v/oP+s/8T/9P8+
-AIcAoACiALAAyQDQALUAmABsAFUAhQCsAK0AogBrADYASQBaAE4AdQBrAAQA8/8gAAIA1f/u/xIA
-EQAKABUAFgDo/8f/AgBhAIYAaABmAJoAlwB3AHkAowAPAaQBOwKOAlQC3AGJAXYBowHBAa8BxwEH
-AjECKQLbAVMBAAE9AbsBHQJKAksCSwJDAgsC2QHDAYABDwG8AKoAqgCJAEwAEwApAGAAeQDAAAgB
-BQEaAYUB2QHGAYoBYQE/AQsB0ACfAKUA6QApAV0BbgFBATIBcwGLAWABWwGhAd0BpQE6AQoBCwE7
-AZ0BrgFmATcBFQHtANcA3AAMAWIBkQGdAc0B2gGNAV0BnwH3AfkB1gHVAfQBEAIQAu0BngFcAUoB
-HQHjAPAAFAEEAeYA+AA8AYABZwHwAI0AmgAFATgB5ABhAB4AIwAtAB4A+v/1/yUAZwB/AD8A3f+n
-/5H/dv+a/yUAmwB+ABIAEgBqAGsADwDC/8D/EABMAAAAYP8Y/0n/Qf/r/uL+C/85/4X/s/+8/8j/
-DgB7AIMAGgCR/yv/Gf9O/43/lv+N/6//w//C/+b/AgDn/6n/kP+a/17/Av8H/x7/3P6F/kz+L/5r
-/rT+k/5I/jD+bP6v/rz+2v4K/wf/2f6H/gf+tP20/bL9wP39/T/+cf6L/pD+sv73/ib/Mf8y/xj/
-5/7L/q/+iP6F/pj+pP6x/sb+yv6z/pr+qv7L/qD+YP6S/vf+/P7e/vz+B//Z/sb+0v6u/mX+Nv4k
-/gD+1f0C/mL+df5c/k3+Mf4v/mP+nv7n/iv/Nv9G/37/df8N/+H+/v7Q/mL+Iv4u/mL+jP6d/sv+
-FP8+/2v/vP/2/+f/0f/4//n/rP9m/zv/Kv9k/+T/GADk/8L/uf96/zH/M/9+/8H/1f/x/xgAGQDc
-/3z/QP8i//7+Dv9X/3X/fP/I/8X/EP/C/lb/h//f/m/+ff6g/sH+j/4u/mb+7f4G/wX/S/+c/+P/
-IwAvAAwACgBZAL8A4QARAYcBywGzAXkBWQFQAQYBaQAHACEAUgBHAAIAwv+p/7j/yP+7/8H/0//o
-/z8AsQDyAPsA4ADEAKQAfABgAEIAOACLAOQA0ACbAIcAkQDOAA8B8QCGAIIAEAGIAZkBeAFxAYwB
-mAGCAXEBZAE3ARsBXAHPAdgBVQHjAAABegGlAUUB2wCqALMA2gDQAMIAAQEfAekA4wA0AYsBzQEU
-AlQCZQJcAmoCZAI4AjkCNwLQAXUBiAGVAWMBOAErATUBVwGDAZ4BnwGxAfABJAIPArsBbgFDASIB
-MwGjAfsBqAFBAW4BxgHwAcQBRAH8ADcBmQGfAUkB5gCIADwA/f/A/+f/YQCVAIUAewCHAH8AMgAD
-ABsAFgAiAHcAuQDUAM8AdwAjACsAOwAUAOH/0/8KAHgAtgCAABIA1f/r/x4AKgAAAPD/PACbAMQA
-0QDoABQBXQHIAQsC9gGqARABMwCd/1T/JP8o/xT/2/4i/7///f8DAC0AbwDhAHwBzQGKAccA8v+S
-/3//MP+s/mP+YP5V/lj+h/6p/sn+SP8UAJsApgCHAGAAJwD5/87/dP8E/9/+Bf8m/zr/Hv+3/pH+
-CP+X/7X/ff9A/y7/Zv+9/8f/fv89/1L/mP+U/zv//v4F/wf/5v7W/r7+V/7u/T3+HP94/zX/Hv82
-/zT/Qv9F/zD/NP8h/wL/Av/g/pb+U/5G/m7+eP57/qD+hP4z/h7+Tf6e/gn/T/9J/yP/yf5X/kT+
-kf7T/vH+IP83/xr/Cv/o/of+V/6A/qP+0/4W/wH/lv5J/lT+aP5N/k3+XP5K/kz+Xf5d/m3+g/6Z
-/qv+w/7Y/oj+C/4a/pP+2v7Q/p3+bP6Q/gH/Kv8G/wP/Lv9n/2X/AP/j/mT/zP/l/xwAUQAWAJP/
-bv+p/5r/TP8w/0v/i//f/xEA/P/A/4b/bP+X/9n/7P/0/xEANABjAKkA2gDFAG0AFgAAAO//t/+z
-/wkAYAB2AGMAUwBrAIoAngDEANIArQCYAM4AQAGKAUwB3QDIANcAxACjAGEAJQAcABgAFQA3AD8A
-FgAxAHoAcgBTAIMAnwA7AO//OQClAMAApgCSAH8AewCiANoA9AAEAS8BUQF9AdoBMQJEAhoC5gGj
-AXkBqAGqATwBBwFQAaMBsAGJAVQBLAETASEBSgE8AfsA1ADHANIA/AAGAcgAbwALAL3/DgC1APkA
-8QDCAKgAEwGKAXQBPAEqARgBXwH5AQICbgEvAUgBHAHlAOwA9ADNAJgA0gBGAUoBJQEzAUoBSQE7
-AUMBnwEJAuEBcQF0AcIBwwGLAW4BdgGIAXIBMAEFAQQBJwFmAWsBSQFbAY4BgwEXAaIAWwAhABcA
-bwDUAMUASgD4/zEAiAB0ABoA2f+7/7j/1v8AAP7/sv+P//n/UQAbAOb/MwByADgA7//F/6j/qf/V
-/w0AEwDm/+H/FQA0AAAArf+R/6H/tP/r/1cAfAAvAOz/u/9H/+n+Mv+w/8//zf/h//L/IgCgAM8A
-JwBL/xD/Pv9S/1H/Rv9D/1X/ff+2/9b/CwB4AJMAMgATAEIACQCN/zj/GP9R/63/2P/M/4//bv+l
-/6j/8/47/lb+4v5H/3v/ev8d/5H+b/7U/v/+l/4g/gH+Lv5o/pb+z/4O/xb/0v6j/qL+nv6a/mb+
-Kf5R/sf+Lf9X/27/af8n/+L+1P7n/gf/L/9P/2n/oP/I/5b/U/87/yj/CP8A/y7/KP/Q/tj+Yv+c
-/z7/yv6Q/nn+TP4i/lT+xf4g/5T/BQC5/wP/8v5E/+z+GP7I/e799v0n/sb+LP8e/zf/eP9+/23/
-cP9g/0z/dv+3/6f/Pv/s/uH+3v7f/vD++v4t/4r/xf/H/8b/o/85//7+IP8k/8P+PP7R/bP9//2O
-/ib/gv+h/77/s/9F/7b+af6G/tL+6/7z/if/Lf/0/gz/Yv+S/67/uv+5//X/QgAYAJn/X/93/6D/
-1//7/9H/hv+h/xkAXwBdAFcAjQD0APwAowBpAEwAIADW/3j/Nf8h/zP/QP8l/xb/Yv/4/3gAsACu
-AKgAugDvAEQBdwFcAfIAZAA0AHYAfwAdAPD/QACbALoA3AAuAWMBOgEWATcBJgHzAO0AjgDL/0b/
-N/+s/0MAQQAAAAwAIQAmACwATwCbAKkAkgCiAKQAlgClALsAvwDQAPcAEgEmATUBQwGCAfgBVwJ+
-AowCZgIZAv4BHgJIAksCMAIeAhkCEwLfAV8BAgEXAVABgwF7ARAB1QAFARwBBAEMARwB3ACnAOsA
-FAHQAKYAkQBhAGUAkACsAL0AxgD4AFABUgH/AOsA8QCyANQAhAHMAXIBDgEAASoBRAE1AewAowC/
-ADkBigFxASAB4gAYAYYBigFNAUUBbwGSAYUBTgETAfEA9QDnALwAoQBqACcATwC5ANAAlwCKAMwA
-DwFBAVwBJwHVAKIAcgBxALIArgBVABgA4/+4/97/DgD//9n/2f8gAHMATgD8/xAAVABWACAA6P+I
-/wf/xf7m/kv/lv+H/1P/Tf+X/9X/tf9//4P/uP/z/yIAHQDn/7P/e/9X/3b/o/+S/1L/Lv9l/8n/
-4/+z/6T/0P/m/7L/jf/K/wYAvv8a/6z+wP4k/2D/Ov/L/mD+XP6I/k/+2v2k/av9+P2H/tf+xP69
-/vL+Q/+F/4r/Qv/w/t7+9v7l/oT+5P1r/Xb95P1A/lj+jP77/ln/dP9Z/0r/Z/9Y//7+1f4P/1r/
-Xv8b/9v+vf6i/pf+xv4M/yj/O/9o/2P/P/9q/4b/GP+b/oL+lv5y/kD+V/5V/kr+o/7W/o/+jv77
-/iv/Ev/N/kz+Bv4q/mH+tf4S/yT/Mv8p/6z+Z/7c/kb/E//R/gz/mf8KADoAcQDEABgBWQFRASMB
-GQEZAfgAqAAJAFf/B//g/n/+Vf6U/s3+Ef+C/+f/LwBUAEgAFgDh/+b/KwBIABEAv/+N/5z/p/+M
-/5v/AACnACcBQQFAASgB2ACGAHcAZAAAAMn/FABfAIUApACJAE0AIgACAAAAMgCIAOkALQEkAesA
-rwB6AA4AZf8V/wz/tP5U/m7+5P5k/8n/9v8fAKwATQGYAdcBOQKbAusC5gJrAt0BgAFUAScBywCA
-AHIAcACAAK8AAAFyAc8BBgIYAikCIwLPAYwBigGUAY8BYAEFAcYA6wAUAckAcwB1AH4AlQDbAOgA
-yADZAN4AzADGAIUASACAAPEALAEJAdoA0gDWABsBoQH7ATMCYgJwAnMCOAKoAfgAhwDCACQBIgEa
-AVsBnwFpAfkA1gC4AJ4A4AA1AYEB1gHsAc0B2wEDAucBeQERAQEBKQEaAaQAIwAGAEkAXgAOANL/
-mP8q/xT/hf/c/ycAoQC5ALkAMAGnAbsBgwETAb8ArQBiALn/S/8s/9r+nf7s/nn/wf/l/1YA2wAE
-AdgApQCEAGsAPgDd/2z/B/+b/l7+Vv4t/iz+v/5+/wcAYwDBABwBSQFBAQ8B8wDnALYAbQAxABEA
-7P+B/wj/Dv99/9X/+/8OAP3/5P8YAEgACwC0/5v/nv9u//H+Tv7Q/aH9ov3D/e396v3I/fD9Yv6j
-/sf+1f5e/q/9gv3z/Yb+uv6I/k3+Tf5//rH+4P4v/23/f/+Q/6n/nP8//7b+XP5a/lX++v2i/Yv9
-l/3g/S3+Vf6C/rb+3/7j/uH+GP9l/2b/E/+k/ir+uP2L/aX9wv3F/eT9Pv5M/t/9pf2u/bj9B/5u
-/rD+4/7V/pz+m/6j/mH+FP79/RX+Wv6g/qv+av4M/hH+kP7Q/o7+df7X/k3/l/+w/6n/u/+g/yb/
-6/4M/zT/eP+p/23/Hv8h/yz//v7D/r3+x/6d/nf+pv71/hn/K/88/zL/KP9F/2v/av87/wT/0v7X
-/kz/gv8t/xP/K/8C/wP/R/9h/5H/5P8UAF8AmQCHAK8A+wDiAJAAWwA6APz/w//m/w8A1/+e/+H/
-PgBcAIMAsQDVAAEBAQHeANsA+wAWARABCQH9AAABTwGCAUwBMgFbAXUBmAHgAQcC+QHqAfUBBgL3
-AdoB4wEEAgkC1QFbAdYAtwDjAKYABgAAALkARAF0AY0BXQEeATEBXgGDAbAB1wHiAcABegEvAQYB
-7gCxAG0AWABTAFMAlwAzAb8B/AEcAkECUwJDAhIC1wG1AaIBjwGUAbIBtAGHAY8B4gERAikCVgJp
-AlYCPQIKArQBggF0AXoBvwENAi8CIALCAUUBBwEXASYBGQEsAUIBWwG3AeIBZAHJAJAAigCwAOwA
-AQHpAK4AxQBIAVEBpwBUANYARQEaAQYBQQFDAR0BUQGtAcoBygH6AUwCeAJQAtMBTgH8ANYA0gCZ
-AFEAlQAJAREB2gCYACkAoP9+/+D/KQAPAOL/+v9NAKkA0ACKADwAhgAJARUB9QABASEBTAFuAVkB
-ogCK/0L/xv/R/1v/Qf9//7b/yv+//5P/Lf/b/vD+Fv/e/sf+cP9EAJsAkwBgAP//UP+D/hP+Av4b
-/l/+f/50/rT+C/8M//D+Bf9P/6r/2//M/97/JwACAIL/gv+//4j/Nv8c/wn/1/5o/gT+Jv58/pD+
-sP5J/xIAJwCd/zP/B//r/pb+Lf5A/sb+Mf9s/6P/nv87/8D+cf6p/j//fP9l/yv/8/4V///+O/6I
-/Xb91v1i/t7+E/8H/w7/E//p/sv+vv6y/rX+uv7a/iD/Hf+Q/v/91f3p/fb91P3G/RL+Vv5A/vL9
-rv2q/dj9LP5//on+jP7s/lz/bP9O/1H/Xf9o/4j/ev8V/4j+If4Z/jb+Tf4k/qL9YP24/RL+EP4g
-/l3+1f6g/yQACgC5/37/Vf83/wf/s/6V/pn+WP4g/kL+i/6k/rL+Kv/3/5wAwgDCAP0AFQHlANgA
-BQHrAFkA2P+2/6H/av9E/1n/hP+Y/7r/BwApABEAJwBkAHcAZwBGABsACgAeADoARABKAG4AoQC/
-AK4AawBvAPIAHgG6AKgA9QAaAQMBqgBmAJYAsQB0AGIAaQAnAPr/JwBbAGQATQAkABIAMgBkAIwA
-ngC0AAcBOAHDACIA7P8DACoAMgADAPH/WwDpABkBEgEPAUQBtwHgAdsB/QEWAvgBtwGJAU4B/gDl
-APcA7wDjAAkBGAHrANgA5QD1ACUBeAGPAUMBDAHtAJkAlQCwACMAr/8KAKwAEQEKAbwAnQC4ALQA
-iwCYAK8AgQCaACUBmAGTATwBMgFyAakB4QHpAcQBzgHrAcABbgFCAUoBWgFfAXcBkAGkAcQB0gHD
-AeMBPgJ4AnUCVgIjAsEBWgFIAU8BQgFTAWYBXwE+ASYBYgGHASYB1ADjAM8AfQBUAEYAPgBMAFIA
-UgBVAGsAmgCoAIUArgApAVgBLgHwAKEARwD8/+v/5P+b/1j/g//r/0wAngCYAEgAOwBiAFQAIgD6
-/8v/nv+S/8L/AAD1/7z/u//1/xwAQgBZAA8ArP+G/3b/hv/T/w8AAADe/+P/CAAvAAwAtv+y/wAA
-QwBcACQAi//3/sj+wf6U/mz+O/4S/mf+8v5E/3v/g/9g/2H/Xv8Z/+z+Bv/+/qn+Yv5M/hT+i/02
-/XT9z/0G/kT+m/7t/hz/K/9E/4P/q/+j/5P/cP9P/17/TP/q/qj+sv7Z/gH/E/8Z/y3/YP+Y/53/
-af8q/wz/+v7k/sn+j/55/rn+0/6J/uH96/yV/G/9Xv61/ur+Cf/8/g3/5f5L/tf9d/0g/Uz9nf2y
-/eP9Uv6M/mL+T/6r/hX/Rf+S////NABfAI8AdQBAAAkAi/8h/1T/3P8hABYA0f+S/6b/rf9W/+v+
-sP6+/vH+2f54/kL+N/4d/h7+cv4C/3b/of+t/6r/nP+c/5f/c/9P/2D/kf9c/7H+W/6V/s/+1v7w
-/h//Qf+I/9n/9v/6/9f/r//R/yUAIwDk/wAAYQCxAMIAhAAdALH/OP/C/nX+Uf5c/rj+RP+y/9r/
-sf9o/y//Gv9x/+z/8v/k/z0AhwBTABYAMwA8AB8ANgA9ADgAkAARAWABcAFuAXMBZgE6AfIAsACa
-AK4A8ABcAYEBKQHhAAgBbwHJAdkBmwF7AWcB3AA2AMn/Uv89/7T/CQA1AJUA5QDFAHgAjwDiAPIA
-9wBPAbwB1gHTAQACLgIxAvkBtAG5AesBCgIiAjcC+wF9AWEBiQE8AaMATgBSAJsACAGHAe4BDQL1
-AcoB4AEWAvEBtwG2AZIBQQESAdIAcwBsAKQAxwDXALcAoQDxAEoBMwHrAOoALAGJAckBvwHDAeIB
-+wEiAgkClwFIATEBHAEVASkBUAFRAesAfgCFAKgAdgAeABQAcwDdAPAAxQCkAHoALQAFAB4AOgBP
-AIkA5QApAU8BVwERAeIADQEnARsB5ACKAIkAtgCqAKUAwwDWAOgAIwFZAWMBWwEVAZ4AqAAHAeoA
-TQB//9f+vf4R/17/af8//yv/af+//+j/GwBEAAoAoP9I/yH/Jf8I/9v+5v4L/yP/DP+r/lT+RP5H
-/nD+4/5e/5//wv/x/wQA+/8MADEAHQDQ/4r/Yv9K/yT/5/6u/pH+rP7O/sv+rv6M/rr+Mf9M//P+
-sP7Q/iL/Pf8c/wj/CP8q/0//Ev+l/nf+Yv5s/rv+4f7d/g3/Nf8i//v+v/6J/pL+1v4e/z//Iv/f
-/rP+s/7r/kD/dP+F/47/pv+v/3H/CP/A/uL+LP83/zH/M/8c//P+2/7Z/tf+8P41/3P/lv+v/43/
-Of8Y/zD/J//1/tf+5P4L/yX/Cv/Z/sn+yv69/qf+tv4D/zX/IP///tP+pP6T/n/+Zf5o/m/+iv7Y
-/tj+Wv4J/iP+Sf5H/lP+kv7J/vr+Xv+u/4//U/9n/6H/5v8mAAkAsv+L/5P/mP9N//H+D/9X/2r/
-aP96/6v/0v/S/6j/h/+Q/5n/r//j/xQAIADe/5D/m//E/9H/4/8MAEoAhwDJABUBBgFbAMj/5P8f
-AAcADQBCAFIAYgCKALAAzgC1AIYAyQAtAQMBpwCIAGcAUgCdAO8A6wDFALEAlQBQAEEAmQDsAAAB
-DwExAUMBIgHRAJMAmQDcAD4BgAFvATwBGQEIAQUBGQFQAakBFgJIAh0C3QGWARIBkwCSAAMBRgEb
-AQIBRwGzAfcBwwEHAaYACgEgAaYAagBSABoAEgASAO//4P++/4H/hP/B/zUADAGzAaIBRAH/AMgA
-fwAxAEMAsAAAAScBUgFlAVABOgEoATYBeAGaAWoBMgE7AXoBfwEmAdYA9QBfAYkBYwEzASMBVQGW
-AZgBUAHaAGcAHgAfAF8AhgB6AKAACgEUAb0AsQDcAMsA0ABqAf4B3AFuAQQBlAB9AMQA1gCuAJsA
-nACQAFMACQDL/5H/sf8TAB8A3f/J/9j/5f8XAB4Asf96/5P/Xv8q/zL/Rf+r/zAASQAcAPv/0P/B
-/xcAawBRAB0AEQAaAEYAhQCEAGEAVgBKAEMAUQBVABsAs/97/4j/oP+3/8f/mP8+/x3/Hf/3/u3+
-O/9p/0T/Mv8e/wD/HP8k/xv/Zv+z/77/ov9a/0X/uP8MAMb/U//8/q3+b/5b/oX+9P50/8H/7v8Q
-AAoA6v+V//b+hv7E/kv/aP8z/xT/LP9L/yD/wP6L/oH+hf6s/gD/a/+L/0j/TP/X/zoA+/9S/8D+
-if6i/pX+Uf5r/rv+p/5p/oL+0P7d/sX+Fv+q/y8AhABTAOT/t/+F/x7/5/7X/qf+av4P/q39w/0a
-/iP+Sf7g/mv/p/+r/4n/Vf8U//H+7f7a/rv+o/67/vT+8f6h/nX+rf7y/ub+0v4Q/1v/if/E/wsA
-SAB6AJ0AfwBLAD4AEgDP/7X/qf+f/57/lP+T/6z/sv+A/0f/bv+0/5L/Yf9k/1H/W/+///n/z/+g
-/3L/N/8s/1H/Xv9S/1H/X/9//77/BwAkAPP/pv+F/4P/q//7/wgA1P++/+T/PwCQAIkAYgBvAJoA
-pwCAAC0Axv+Y/8T//v8LAA8AIgAsAEQAnwAQATMBDAHUALUA2AD0AKsAVgBhAI0AkACNAIwASwAV
-AHcADQFDATkB9QCOAIEA0wAsAVsBZAFdAUQBGwHiAM8A8wD9AAYBYwG7AYUBBwHPAPcAPwFpAWwB
-RAEmAV4BuAG8AYwBmQHFAdoB2wG0AakB2QHFAWMBHQEcAUgBcwGVAaMBjQF9AXQBawFcATgBIwE4
-AU4BRQFAAVgBLgG1AJsA1gChAEUAMwAxAFAAiwCiAJgAgAB9AH0ALQDU/xQAlgCvAJcAlgCBAGAA
-WwBbAEMAQwCRAP0AMAEqARoB+ADUAAEBVwGBAYABRAHnAMYA6wDoAKMAbABpAIcAuQDlAP0ABQHh
-ALEAuADAALQAyADNAHUALABaAIkAYwA2ABYAzv+r/+v/GwDf/1j/Nf/A/0sAWgBEADcAJQBIAFsA
-/v+Z/2f/Qf9f/4j/I/+j/pn+rv65/t3+Df8M/+H+B/9k/4D/dv+X/9T/yP9l/yn/O/9L/0X/Uf+G
-/7//xv+e/1j/F//7/v7+LP9+/9D/QACoALYAhgAVAJL/UP8G/4/+Mf4y/oj+Af9d/2//gv91/xz/
-PP+a/2L/K/84/9r+Uv4L/rD9Z/2N/RD+5v6A/2b/Zf///4sAkwBFAPz/hv+o/hz+R/58/n3+ef5c
-/l3+uP4W/xD/2f7l/h7/Mv8G/9P+yv6i/jz+BP41/lz+Tf45/hb+Kf6f/hb/Lv/3/rv+q/7v/m7/
-u/+W/1n/df+5/8H/kf9o/1D/RP+Y/0cAcADj/4f/ff9i/1P/RP8U/9r+v/79/mL/ZP/g/k/+Kv4s
-/jH+X/5v/lT+YP6k/uj+0f5p/j3+hv7r/k//4v9XAEwA+//F/7j/u/+z/4P/Qv8//2r/ef9u/4r/
-AgBuAHcAcwCTAKUAZAAdAFUA0AATAfYAhAAAALz/sf+C/2n/yv/i/13/Xv8sAJ0ALABo/x//uv9b
-AEgAAAD2/zoAvwA0AUgBJAEYAQUBmAAEAOf/TwDCAAcBRwFmAV0BbAGOAZIBWwEJAd4A2ADAAKEA
-pACqAJ0AtwDsAPAA3wDuABcBKQEmAVcBmwGAASwBAgHzAP4A/QDNANgAQwGbAb0B4wHvAewB5gGb
-AVABOgE6AXwB0AGhATEBAgGqABwAGgCIAKQAUwAkAH0A+QAIAc4ApgC3APMALwFRAVcBWAFtAZgB
-yQHfAdEBuAGzAb8BjwEvASUBggG9AZMBawGEAa0B3gH+AfkB1wGnAbQBCAJRAl8CSwImAuoBrAFl
-AQgBrQB5AGoAZwCbAAABYwGNAS4B9wCNAecBaQEcAVgBdwF/AX8BLQG4AFEACgALAC0AQgBbAGEA
-fQC1AJ4AYQBCABoA5f+2/17/2P51/n3++f5//8T/3f/2/wUA3/+u/3f/+/6s/vX+Wv+c//v/VwBU
-AAoAmf8J/6f+fv56/rX++/4c/wf/xv7D/gv/7P4V/i39ofwB/EH7wvqH+qP6TvtY/ET98/2Z/h//
-RP/q/jT+m/1b/VT9gf3R/Q==
-EOF
- open FP, "> $filename" or die "Failed to write to $!";
- print FP $wav;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testcolor.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::App;
-use SDL::Event;
-
-use vars qw/ $app /;
-
-print STDERR <<USAGE;
- Right click on any pixel to get its color values
- Left click on any pixel to set its value to the last selected
-USAGE
-
-SDL::Init(SDL_INIT_ALL);
-
-$app = new SDL::App -width => 320, -height => 240, -depth => 8;
-
-my %colors = (
- red => (new SDL::Color -r => 255, -g => 0, -b => 0 ),
- green => (new SDL::Color -r => 0, -g => 255, -b => 0),
- blue => (new SDL::Color -r => 0, -g => 0, -b => 255),
- yellow => (new SDL::Color -r => 255, -g => 255, -b => 0),
- purple => (new SDL::Color -r => 255, -g => 0, -b => 255),
- white => (new SDL::Color -r => 255, -g => 255, -b => 255)
-);
-
-
-$x = 0; $y = 0;
-$rect = new SDL::Rect -x => $x, -y => $y,
- -w => $app->width / scalar(keys %colors), -h => $app->height();
-
-print "Sorted colors:\n";
-
-for ( sort keys %colors ) {
- print "$_ " . join (",",$colors{$_}->r(), $colors{$_}->g(),
- $colors{$_}->b()) . "\n";
-}
-
-for ( sort keys %colors ) {
- $rect->x($x);
- $x += $rect->width();
- $app->fill($rect,$colors{$_});
-}
-
-$app->sync();
-
-$last = new SDL::Color -r => 128, -g => 128, -b => 128;
-
-$app->sync();
-$app->loop( {
- SDL_QUIT() => sub { exit(0); },
- SDL_KEYDOWN() => sub { $app->fullscreen(); },
- SDL_MOUSEBUTTONDOWN() => sub {
- my $e = shift;
- if ($e->button == 3) {
- $last = $app->pixel($e->button_x(),$e->button_y());
- print STDERR "X: ", $e->button_x(), " Y: ", $e->button_y(),
- " R: ", $last->r(), " G: ", $last->g(),
- " B: ", $last->b(), "\n";
- } else {
- $app->pixel($e->button_x(),$e->button_y(),$last);
- }
- },
-});
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testfonttool.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::Tool::Font;
-use SDL::Color;
-use MIME::Base64 qw(decode_base64);
-
-my (%options,$app,$mode);
-
-$options{-flags} = SDL_SWSURFACE;
-$options{-title} = $0;
-$options{-width} ||= 800;
-$options{-height} ||= 600;
-$options{-depth} ||= $options{-bpp} || 32;
-
-$app = new SDL::App %options;
-
-my %ttfonts = (
- 'ttf1.ttf' => 0,
- 'ttf2.ttf' => 0,
-);
-
-my %sfonts = (
- 'sfont1.png' => 0,
- 'sfont2.png' => 0,
-);
-
-my @fonts;
-
-write_fonts();
-
-for ( reverse keys %ttfonts ) {
- for $mode ( qw/ -normal -bold -italic -underline / ) {
- if (-e "/tmp/$_") {
- print STDERR "Loading $_\n";
- $ttfonts{"$_$mode"} = new SDL::Tool::Font
- $mode => 1,
- -ttfont => "/tmp/$_",
- -size => 20,
- -fg => $SDL::Color::black,
- -bg => $SDL::Color::black;
- push @fonts, $ttfonts{"$_$mode"};
- }
- }
-}
-
-%ttfonts = reverse %ttfonts;
-
-for ( reverse keys %sfonts) {
- if (-e "/tmp/$_") {
- print STDERR "Loading $_\n";
- $sfonts{$_} = new SDL::Tool::Font -sfont => "/tmp/$_";
- push @fonts, $sfonts{$_};
- }
-}
-
-%sfonts = reverse %sfonts;
-
-sub DrawFonts {
- $app->fill(0,$SDL::Color::white);
- my ($x,$y) = @_;
- for my $font ( @fonts) {
- $font->print($app,$x,$y,"SDLperl font test. ",
- "This is " . ($ttfonts{$font} || $sfonts{$font}));
- $y += 40;
- }
- $app->flip();
-}
-
-DrawFonts(10,10);
-
-$app->loop( {
- SDL_KEYDOWN() => sub {
- my ($event) = @_;
- $app->warp($options{-width}/2,$options{-height}/2) if ($event->key_sym() == SDLK_SPACE);
- $app->fullscreen() if ($event->key_sym() == SDLK_f);
- exit(0) if ($event->key_sym() == SDLK_ESCAPE);
- },
- SDL_QUIT() => sub { exit(0); }
-} );
-
-
-sub write_fonts() {
- my $ttf1 = decode_base64 <<EOF;
-AAEAAAAQAEAABADAT1MvMpkqgWkAAEjUAAAATlBDTFQPFzzAAABJJAAAADZjbWFw7I1UDAAARDQA
-AAJkY3Z0IBJ0FOEAAEhQAAAAgmZwZ22YXNyiAAAEfAAAAGRnbHlmem5l1QAABdwAADuaaGRteLVY
-hLMAAElcAAAHCGhlYWTIUZb+AAABDAAAADZoaGVhAnQFHQAAAUQAAAAkaG10eAWdzysAAEaYAAAB
-uGtlcm4jFChUAABQZAAAA8Zsb2NhAAw+7gAAQXgAAAG8bWF4cAGuAQ8AAAFoAAAAIG5hbWXdG2uj
-AAABiAAAAvRwb3N0DSMNEQAAQzQAAAD+cHJlcLVFFbAAAATgAAAA+wABAAAAAQAAPgO1AV8PPPUA
-AAPoAAAAADG0K/8AAAAAMbQr//9d/tcCrAMUAAAAAwACAAEAAAAAAAEAAAMU/tcAAAMs/10AAAKs
-AAEAAAAAAAAAAAAAAAAAAABuAAEAAABuAEkABQAAAAAAAgAIAEAACgAAAIkBIQABAAEAAAAVAQIA
-AAAAAAAAAAB0ADoAAAAAAAAAAQAMALQAAAAAAAAAAgAeAM8AAAAAAAAAAwA2AQgAAAAAAAAABAAs
-AVQAAAAAAAAABQAgAZAAAAAAAAAABgAsAcYAAQAAAAAAAAA6AAAAAQAAAAAAAQAGAK4AAQAAAAAA
-AgAPAMAAAQAAAAAAAwAbAO0AAQAAAAAABAAWAT4AAQAAAAAABQAQAYAAAQAAAAAABgAWAbAAAwAB
-BAkAAAB0ADoAAwABBAkAAQAMALQAAwABBAkAAgAeAM8AAwABBAkAAwA2AQgAAwABBAkABAAsAVQA
-AwABBAkABQAgAZAAAwABBAkABgAsAcYgRnJlZXdhcmUgdHlwZWZhY2UgYnkgUmF5IExhcmFiaWUg
-MTk5Ni4gRGlzdHJpYnV0ZSBmcmVlbHkuACAARgByAGUAZQB3AGEAcgBlACAAdAB5AHAAZQBmAGEA
-YwBlACAAYgB5ACAAUgBhAHkAIABMAGEAcgBhAGIAaQBlACAAMQA5ADkANgAuACAARABpAHMAdABy
-AGkAYgB1AHQAZQAgAGYAcgBlAGUAbAB5AC5BaXJDdXQAQQBpAHIAQwB1AHRPbmVIdW5kZWRhbmRP
-bmUATwBuAGUASAB1AG4AZABlAGQAYQBuAGQATwBuAGVMQVJBOkFpckN1dCBPbmVIdW5kZWRhbmRP
-bmUATABBAFIAQQA6AEEAaQByAEMAdQB0ACAATwBuAGUASAB1AG4AZABlAGQAYQBuAGQATwBuAGVB
-aXJDdXQgT25lSHVuZGVkYW5kT25lAEEAaQByAEMAdQB0ACAATwBuAGUASAB1AG4AZABlAGQAYQBu
-AGQATwBuAGUxLjMgSnVuZSA0ICAxOTk2ADEALgAzACAASgB1AG4AZQAgADQAIAAgADEAOQA5ADZB
-aXJDdXQtT25lSHVuZGVkYW5kT25lAEEAaQByAEMAdQB0AC0ATwBuAGUASAB1AG4AZABlAGQAYQBu
-AGQATwBuAGVABQUEAwIALHZFILADJUUjYWgYI2hgRC0sRSCwAyVFI2FoI2hgRC0sICC4/8A4ErFA
-ATY4LSwgILBAOBKwATa4/8A4LSwBsEZ2IEdoGCNGYWggWCCwAyUjOLACJRKwATZlOFktQA4oKCcn
-EBADAwAAExNFAI24Af+FdkVoRBizAQBGACuzAgBGACuzBANGACuzBQBGACuzBgBGACuzBxBGACuz
-CANGACuzCQBGACuzCgBGACuzCxBGACuzDBNGACuzDQNGACuzDhBGACuzDxBGACuzERBGACuzEgNG
-ACuzFBNGACuzFRNGACuzFgNGACuzFxBGACuzGBNGACuzGQNGACuzGgNGACuzGxBGACuzHBNGACuz
-HQNGACuzHhNGACuzHxNGACuzIBNGACuzIQNGACuzIhBGACuzIxNGACuzJANGACuzJRNGACuzJhNG
-ACtFaERFaERFaERFaERFaEQAAAIAHwAAAdUDFAADAAcAPUAbBwQoAAYFKAEFBCcDAgcGJwEAAgEJ
-AwAQAQBGdi83GAA/PD88AS88/TwvPP08ABD9PBD9PDEwsggABSszESERJxEhER8Bth/+iAMU/Owf
-Atb9KgACAAr/7AB5AjkABwAVADlAGBMCAQgJCCgPDAADJwECJwEGAhAPEQETRnYvNxgAPzw/AS/9
-EP0v1gAQ/TwQ1jwBLjEwshYTBSsTAyMDPgEzMgMzMhYVFAYrASImNTQ2aRMpEg0pAxUsCRUeHhUJ
-EyAeAjb+VAGsAQL+GR4VFR4eFRYdAAACAAgBbQFbAlsAAwAHAC9AFQQnBQEnAAUEAQMABgcGAwMC
-HQEARnYvNxgAPxc8Pxc8AS/9L/0AMTCyCAAFKxMzByM3MwcjCIIhP6+CIj0CW+7u7gACAAb//QFx
-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
-AycCAQwHEQAFBgUnCAcREAEHBgMDAiYBDEZ2LzcYAD8XPD88AS88/TwQ3TwQ3TEvPP08ABD9Fzwx
-MLISDAUrASMRIxEjESMRJicmNTQ3NjsBASohIj8iOCUpIy9ShgHw/WoClv1qAWAKLDJMNDBAAAAC
-ADH/JwGLAcoACwA2AEVAIBwcGwM0KDcDKAklKBAGJwAiJxMwJwwpJwwJCBAVARNGdi83GAA/PwEv
-/RD9L/0v/QAQ/RD9EP0Q1jwBLjEwsjcTBSsBFAYjIiY1NDYzMhYTFAcGIyImNTQ3Nj8BPgE3MxQP
-AQ4BFRQWMzI3NjU0JicmJyY1NDc2MzIWAR4jFhUlIxcVJG0zLUFUZRgJLB4aIQQSIxISGDc0Ihsh
-AwgMDAQcCwcWFwGQGCEjFhcjIv4LRCYiVUUsKxA7JiNMKElQKSpTIDVMDxIeBw8JDg0IChoJAyQA
-//8AAAAAAAAAZAAAAGQAAABkAAAAZAAAAOgAAAE8AAACwAAAA5YAAASkAAAFeAAABa4AAAY8AAAG
-ugAAB4IAAAf4AAAILAAACGQAAAiyAAAI8gAACYoAAAnEAAAKSgAACvgAAAt4AAAMGAAADNQAAA0y
-AAAODgAADsYAAA9QAAAP1gAAEEQAABCgAAARDgAAEc4AABKUAAATGgAAE+AAABSCAAAVLgAAFa4A
-ABYeAAAWyAAAF0AAABd6AAAX6AAAGIAAABjMAAAZfAAAGfQAABp6AAAbAgAAG5wAABxKAAAdDgAA
-HW4AAB3iAAAeNgAAHtQAAB+AAAAf6gAAIGgAACCsAAAg7AAAIS4AACFsAAAhvAAAIfwAACKyAAAj
-SgAAI7IAACROAAAk4gAAJVwAACYeAAAmsAAAJw4AACeSAAAoFAAAKE4AACkaAAAppAAAKhwAACqu
-AAArQgAAK7QAACyCAAAtGAAALZgAAC3qAAAuiAAAL0IAAC+0AAAwHgAAMOgAADEiAAAx0AAAMmwA
-ADL0AAAzfAAANHwAADV6AAA1sgAANyoAADcqAAA3rAAAOMgAADosAAA6tAAAO5oAAgAAAAAAAP97
-ABQAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8A
-EAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAs
-AC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgA
-SQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQC2ALcAtAC1
-ALMAjACsAKMAiwCKAIgAogAAAAAAAwAAAAAAAAEkAAEAAAAAABwAAwABAAABJAAAAQYAAAEAAAAA
-AAAAAQMAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8g
-ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
-WltcXV5fYGEAAAAAAAAAAAAAAAAAAAAAAABiY2RlAABmAGcAAAAAAABoaQAAAAAAAABqAAAAAGsA
-AAAAAAAAbAAAAAAAAAAAbQAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAUAAAAAWABAAAwAGAH4AoQCpAK4AtgC/IBQgGSAd
-ISL//wAAACAAoACpAK4AtgC/IBQgGCAcISL//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgDSANQA
-1ADUANQA1ADUANYA2AAAAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAX
-ABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMA
-NAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQ
-AFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBoAGkAagBrAGwAbQBmAGIAYwBkAGUA
-ZwAAAfQAHwAAAAACDAAAAgwAAADtAAoB1wAIAfAABgIOAAkCfQAIAh8ABwEEAAoBKwAMASsADgHP
-AAkBogAKAV4AEgHXAA0BGAAUAfgADwH+AA4AtAAQAi0AAgJGAAwBywARAi0AAwIoABECAgAPAgIA
-DwIzAAIBFAAUAWAADQJcAA4CRAANAlYAEAHnABEB7QARAn0AEQIpABICJwASAikAEQIaABICDgAO
-AlYADgHvABMAsgAQAf4ACgIAABMB8gARAloADwIbABECdwAMAfgADgJ9AAwCJwASAhIADgJSABAC
-GgAPAlAAAwJaAAICfwARAhgADAIdABABGAAQAfAACAEQAAsB9gASArz/8wEUAA4CGAAVAkYAEQIx
-AA8CTAASAlwAEwHuABACNwARAfQAEQDMABABFP9dAcIAFAC+ABUCXgATAfYAEwJOAAwCQwARAkMA
-DgF+ABQCAAAPAdD//QHvAA8CDgAFAjcAAQJkAAUCDwAFAfoADQElAAwAtAAQASEADAH+AAsA2wAM
-ANsABQGQAAwBkAAHAvgAMQMsAA4AoAAAAbEAbQLcACkC3AAoAc4AAAIgADECaAIUAj4BsQF9AnsC
-UAAAAcoCvgKUAJP/FwE4AHYApQAA//EBef+E/23/JwGOACX+7gD9AfwAwP9LAWj/OP+d/78A2wCD
-/tcA6v+v/1oAKQApAKcAXwApAIQA0QCSALQA8gB2AIIAZwDkAHAAhwDAAE8ARABfAJkAsQA4ABcA
-ewApAAAAAAHwASwABQABArwCigAAAI8CvAKKAAABxQAyAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAQWx0cwBAACAhIgMUANQAAAMUASkAAAABAAAAAAAAAgwBfQAAbdQCEgAAQWlyQ3V0ANyP
-K9cr65UIAgAAAAAAAAAAQWlyUjAwAAABAAAAAAAAEAAAAHAJBwUABQUCBAQFBgUCAwMEBAMEAwUF
-AgUFBAUFBQUFAgMFBQUEBAYFBQUFBQUEAgUFBAUFBgUGBQUFBQUFBgUFAwQCBQYCBQUFBQUEBQUC
-AgQCBQUFBQUDBQQEBQUGBQUDAgMFAgIEBAcHAQQHBwQFCggFAAUFAgUFBQYFAwMDBQQEBQMFBQIG
-BgUGBgUFBgMEBgYGBQUGBgYGBQUGBQIFBQUGBQYFBgYFBgUGBgYFBQMFAwUHAwUGBgYGBQYFAgMF
-AgYFBgYGBAUFBQUGBgUFAwIDBQICBAQICAIEBwcFBQsJBgAGBgMFBQYHBgMDAwUFBAUDBgYCBgYF
-BgYGBgYDBAcGBwUFBwYGBgYGBwUCBgYFBwYHBgcGBgcGBwcHBgYDBQMGCAMGBgYGBwUGBgIDBQIH
-BgYGBgQGBQUGBgcGBgMCAwYCAgQECAkCBQgIBQYMCgYABgYDBgYGCAcDBAQGBQQGAwYGAgcHBgcH
-BgYHAwQHBwcGBggHBwcGBgcGAgYGBgcGCAYIBwYHBgcHCAYGAwYDBggDBgcHBwcGBwYCAwUCBwYH
-BwcFBgYGBgcHBgYEAgMGAwMFBQkKAgUJCQYHDQsHAAcHAwYGBwgHAwQEBgUFBgQHBwIHCAYHBwcH
-BwQFCAgIBgYIBwcHBwcIBgIHBwYIBwgHCAcHCAcICAgHBwQGBAcJBAcIBwgIBgcHAwQGAggHCAgI
-BQcGBgcHCAcHBAIEBwMDBQUKCwIGCgoGBw4LBwAHBwMHBwcJCAQEBAYGBQcEBwcDCAgGCAgHBwgE
-BQgICAcHCQgICAgHCAcCBwcHCAgJBwkIBwgICAgJCAgEBwQHCgQICAgICAcIBwMEBgMIBwgICAUH
-BgcHCAkHBwQDBAcDAwYGCwsCBgoKBggPDAgACAgEBwcICggEBAQHBgUHBAgIAwgJBwgICAgIBAUJ
-CQkHBwoICAgICAkHAwgIBwkICQgKCAgJCAkJCggIBAcECAsECAkICQkHCQgDBAcDCQgJCQkGCAcH
-CAkJCAgEAwQIAwMGBgsMAgYLCwcIEA0IAAgIBAgICAoJBAUFBwcGCAQICAMJCQcJCQgICQQGCgkK
-CAgKCQkJCQgKCAMICAgKCQoICgkICgkJCgoJCQQIBAgLBAkJCQkKCAkIAwQHAwoICQkJBggHCAgJ
-CggIBQMFCAQEBgYMDQMHDAwHCREOCQAJCQQICAkLCQQFBQgHBggFCQkDCQoICQkJCQoFBgoKCggI
-CwkJCQkJCggDCQkICgkLCQsJCQoJCgoLCQkFCAUJDAUJCgoKCggKCQMFCAMKCQoKCgYJCAgJCgoJ
-CQUDBQkEBAcHDQ4DBwwMCAkSDwkACQkECAkJCwoFBQUICAYIBQkJAwoKCAoKCQkKBQYLCgsJCQsK
-CgoKCQsJAwkJCQsKCwkLCgoLCgsLDAoKBQkFCQ0FCgoKCwsJCgkEBQgDCwkLCgoHCQgJCQoLCQkF
-AwUJBAQHBw4PAwgNDQgKEw8KAAoKBQkJCgwKBQYGCQgHCQUKCgMLCwkLCgoKCwUHCwsLCQkMCwoL
-CgoLCQMKCgkLCgwKDAoKCwoLCwwKCgUJBQoNBQoLCwsLCQsKBAUJBAwKCwsLBwoJCQoLDAoKBgMF
-CgQECAgODwMIDg4JChQQCgAKCgUJCgsNCwUGBgkIBwkGCgoECwwJCwsKCgsGBwwMDAoKDQsLCwsL
-DAoECgoKDAsNCg0LCwwLDAwNCwsGCgUKDgYLDAsMDAoLCgQGCQQMCgwMDAgKCQoLCwwLCgYEBgoE
-BAgIDxADCQ8PCQsVEQsACwsFCgoLDQsFBgYKCQcKBgsLBAwMCgwMCwsMBgcNDA0KCg0MDAwLCw0K
-BAsLCg0LDQsNDAsMCwwNDQsLBgoGCw8GCwwMDA0KDAsEBgkEDQsMDAwICwoKCwwNCwsGBAYLBQUI
-CBARAwkPDwoLFhILAAwMBQoLDA4MBgcHCgkICgYLCwQMDQoMDAsLDAYIDQ0NCwsODAwMDAwNCwQL
-CwsNDA4LDgwMDQwNDQ4MDAYLBgsPBgwNDA0NCwwLBAYKBA0LDQ0NCAsKCwwMDQwLBgQGCwUFCQkR
-EgQKEBAKDBcTDAAMDAULCwwPDAYHBwsKCAsGDAwEDQ0LDQ0MDA0GCA4NDgsLDw0NDQwMDgsEDAwL
-DgwPDA8NDA4MDg4PDAwGCwYMEAYMDQ0ODgsNDAUGCgQODA4NDQkMCwsMDQ4MDAcEBwwFBQkJERME
-ChERCw0YEwwADQ0GCwwNDw0GBwcLCggLBwwMBA0OCw0NDAwOBwgODg4MDA8NDQ0NDQ4MBAwMDA4N
-DwwPDQ0ODQ4ODw0NBwwHDBEHDQ4NDg4MDgwFBwsFDwwODg4JDAsMDQ4PDQwHBAcMBQUKChITBAoS
-EgsNAAAAAQAAA7wAAQCdACoABwOEACQAN/+BACQAOP+cACQAOf9zACQAOv9zACQAPP96ACcAJP+3
-ACcAOP/YACcARP/mACcAUv/sACgAVf/jACgAVv/pACgAV//jACgAWP/pACgAWf/eACgAWv/GACgA
-W//pACgAXP/LACkAJP+VACkARP+wACkASP+3ACkAUv/LACkAVf+6ACkAWP/EACkAXP/EACoAOP/s
-AC8AN/+BAC8AOP/RAC8AS//jADIAOP/fADIAPP+qADMAJP96ADMAOP/fADMARP+9ADMASP+wADMA
-UP/LADMAUf/YADMAUv+2ADMAVf/DADMAVv+2ADMAV//fADMAWP/YADMAXP/RADQAOP/RADUAOP/R
-ADcAJP+BADcARP87ADcASP80ADcATP/oADcAUv8wADcAVf96ADcAWP8+ADcAWv9hADgARP/YADgA
-Rv/YADgAR//RADgASP/YADgASv/YADgATf/fADgAUP/RADgAUf/LADgAUv/RADgAU//YADgAVP/R
-ADgAVf/YADgAVv/LADgAV//LADgAWf/YADgAWv/RADgAW//RADgAXP/RADgAXf/YADkAEf+iADkA
-JP+wADkARP+WADkASP+BADkATP/YADkAUv/zADkAVf+bADkAWP+HADkAXP/zADoAEf9zADoAJP9R
-ADoARP9IADoASP9dADoATP/EADoAUv9jADoAVf9RADoAWP9uADwAD/+OADwAEf+VADwAJP9zADwA
-Mv+bADwARP+OADwAR/+iADwASP+IADwASv+OADwATP/sADwATf/fADwATwCbADwAUP+VADwAUf+V
-ADwAUv+HADwAU/+OADwAVP+HADwAVf+OADwAVv+OADwAV/+bADwAWP+AADwAWf+HADwAXf+iAEQA
-WP/6AEQAXP/YAEYAXP/jAEgAXP/dAEsAWP/YAEsAXP/jAEwAXP/jAE4AXP/dAFAAWP/ZAFAAXP/X
-AFEAWP/YAFEAXP/dAFIAWf/LAFIAWv/ZAFIAXP/XAFMAXP/dAFYAXP/dAFcAXP/pAFgARf/QAFgA
-Wf/fAFgAXP/pAFkAD//LAFkAEf/RAFkARP+/AFkASAAGAFkAUQAvAFkAUv/RAFkAVwAuAFkAWAAd
-AFkAWQAuAFkAWgAvAFoAD/+iAFoAEf+3AFoARP/RAFoAR//RAFoASP/QAFoAUv/fAFwAD/+9AFwA
-Ef9fAFwARP/ZAFwAR//jAFwASP/fAFwASv/jAFwATv/jAFwAT//dAFwAUv/fAFwAVv/pBwkJCQgI
-AAA=
-EOF
-
- my $ttf2 = decode_base64 <<EOF;
-AAEAAAAPADAAAwDAT1MvMlEZe7UAAEFIAAAAVlBDTFRtHQydAABBoAAAADZjbWFwl0GcIwAAODwA
-AALEY3Z0IF4sCaMAAAREAAAAImZwZ22DM8JPAAAEMAAAABRnbHlmmcAKegAABLwAAC+iaGRteGh1
-tdsAADsAAAAGSGhlYWTEZQ4fAABB2AAAADZoaGVhBfgDfAAAQhAAAAAkaG10eM9JFKwAADXgAAAB
-fGxvY2EACn2MAAA0YAAAAYBtYXhwAPsBpwAAQjQAAAAgbmFtZYcMAFoAAAD8AAADM3Bvc3QJrwpg
-AAA3XAAAAOBwcmVwftAnYQAABGgAAABSAAAAGAEmAAAAAAAAAAAAWgAtAAAAAAAAAAEAHgCWAAAA
-AAAAAAIADgC7AAAAAAAAAAMAVgEhAAAAAAAAAAQAHgDYAAAAAAAAAAUARgGaAAAAAAAAAAYAHgHv
-AAAAAAAAAAcAAAINAAEAAAAAAAAALQAAAAEAAAAAAAEADwCHAAEAAAAAAAIABwC0AAEAAAAAAAMA
-KwD2AAEAAAAAAAQADwDJAAEAAAAAAAUAIwF3AAEAAAAAAAYADwHgAAEAAAAAAAcAAAINAAMAAQQJ
-AAAAWgAtAAMAAQQJAAEAHgCWAAMAAQQJAAIADgC7AAMAAQQJAAMAVgEhAAMAAQQJAAQAHgDYAAMA
-AQQJAAUARgGaAAMAAQQJAAYAHgHvAAMAAQQJAAcAAAINUmF5IExhcmFiaWUgLSBmcmVld2FyZSAt
-IHJsYXJhYmllQGhvdG1haWwuY29tAFIAYQB5ACAATABhAHIAYQBiAGkAZQAgAC0AIABmAHIAZQBl
-AHcAYQByAGUAIAAtACAAcgBsAGEAcgBhAGIAaQBlAEAAaABvAHQAbQBhAGkAbAAuAGMAbwBtRWxl
-Y3Ryb2hhcm1vbml4AEUAbABlAGMAdAByAG8AaABhAHIAbQBvAG4AaQB4UmVndWxhcgBSAGUAZwB1
-AGwAYQByRWxlY3Ryb2hhcm1vbml4AEUAbABlAGMAdAByAG8AaABhAHIAbQBvAG4AaQB4TWFjcm9t
-ZWRpYSBGb250b2dyYXBoZXIgNC4xIEVsZWN0cm9oYXJtb25peABNAGEAYwByAG8AbQBlAGQAaQBh
-ACAARgBvAG4AdABvAGcAcgBhAHAAaABlAHIAIAA0AC4AMQAgAEUAbABlAGMAdAByAG8AaABhAHIA
-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
-ETe5AAT/wDhZEwcnN+JJTUkByyu1KwABAEUBoADbAoAAAwA1QA0BBARABQICAAMBAQBGdi83GAAv
-LwEuLgAxMAFJaLkAAAAESWhhsEBSWDgRN7kABP/AOFkTFzcnRUlNSQHLK7UrAAIATAGgAU4CgAAD
-AAcAdkA0AQgIQAkABgQEBwQFBwUGBwcEBgYHBwYHBAYEBQYGBwUFBgIBAgMAAQAFAgUHAQMCAQEG
-RnYvNxgAPzw/LxD9PAEvPP08hy4IxAj8CMSHLgjECPwIxAEuLgAxMAFJaLkABgAISWhhsEBSWDgR
-N7kACP/AOFkBIzUzDwEnNwFOUVFsSU1JAbDApSu1KwAAAgBbAaABXQKAAAMABwBFQBUBCAhACQYD
-AgEABgQDAgEABwUBAEZ2LzcYAC8vAS4uLi4uLgAuLi4uMTABSWi5AAAACEloYbBAUlg4ETe5AAj/
-wDhZEzM1Ix8BNydbUVFsSU1JAbDApSu1KwAABABKAAACpgDwACMAKwAzADsAaEAqATw8QD0AOjYy
-LiomLAIoMAI0OAISJAIADAYEAx4YBBUhGxUPCQMAARJGdi83GAA/PDwvPDwQ/TwQ/TwBL/0v/S/9
-L/0ALi4uLi4uMTABSWi5ABIAPEloYbBAUlg4ETe5ADz/wDhZJRQGIyImJw4BIyImJw4BIyImNTQ2
-MzIWFz4BMzIWFz4BMzIWBzQjIhUUMzInNCMiFRQzMic0IyIVFDMyAqY8KiU4Bwg4JCU4Bwg4JCs7
-OyskOAgHOCUkOAgHOCUqPFIUFRUUyBQVFRTIFBUVFHgyRjcpKTc3KSk3RjIyRjcpKTc3KSk3RjIY
-GBgYGBgYGBgYGAAAAAAAAAAAAAB8AAAAfAAAAHwAAAB8AAABRgAAAeQAAALwAAAEEAAABIwAAAUG
-AAAFgAAABtgAAAeCAAAH6gAACG4AAAj0AAAJVAAACdQAAApYAAALMgAAC8YAAAysAAANjAAADk4A
-AA76AAAQEgAAENAAABGCAAASNAAAEr4AABM6AAATxgAAFHgAABR4AAAVGAAAFi4AABbgAAAXpgAA
-GGwAABk2AAAZ7gAAGp4AABt+AAAcWgAAHUQAAB4mAAAe/AAAH8IAACBaAAAhLAAAIhIAACLqAAAj
-oAAAJFoAACUUAAAloAAAJmAAACb2AAAnlgAAKHoAACh6AAAo1gAAKSwAAComAAAqNgAAKtIAACri
-AAAq8gAAKwIAACsSAAArIgAAKzIAACtCAAArUgAAK94AACvuAAAr/gAALA4AACweAAAsLgAALD4A
-ACxOAAAsXgAALG4AACx+AAAsjgAALJ4AACyuAAAsvgAALL4AAC06AAAtigAALigAAC6UAAAvogH0
-AD8AAAAAAXgAAAF4AAABiQBCAZoATAKXADUCfwAvASIARgGAAFQBYgBFAf0ASgHoAFEBVABIAhkA
-QAFfAEoCMwAqAnEARAFZAD4CjAA1Ak4ARwJnADICpQA8AogAOAJQADMCdgBFAl4APAFvAEEBigBO
-AXYANAJrAEEBgwA6Ai4AOAF4AAACcAAGAnAAPQJQACwCZQA+AlgANwJoAD8CVAA1AmMAPQJLADEC
-hgBEAlYAJgJMADgCwgBDAnEARAJ3AFkCSwAxAm4AQgJbADECmgBEAj0ALwJ1AEYCTwAuAnYARgJc
-AC0CVAApApAAMgF4AAACMwAhAtf//gJxAEQCaAA9AlAAKAJlAD4CWAA3AmgAPwJUADUCYwA9AksA
-MQKGAEQCRwAmAi8AUgLCAEMCcQBEAncAWQJLADECbgBCAlsAMQKaAEQCPQAvAnUARgJPAC4CdgBG
-AlwALQJUACkCkAAyA+gAAAFGAEwBLwBFAZoATAGaAFsC6ABKAAIAAAAAAAD/ewAUAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAXwAAAAEAAgADAAQABQAGAAgACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAX
-ABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMA
-NAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQgBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBT
-AFQAVQBWAFcAWABZAFoAWwBcAF0AXwC2ALcAtAC1AKsAAAADAAAAAAAAAaAAAQAAAAAAHAADAAEA
-AAGgAAYBhAAAAAAAvQABAAAAAAAAAAAAAAAAAAAAAQADAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAEAAUABgAAAAcAAABbAAkACgALAAwADQAOAA8AEAARABIA
-EwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAv
-ADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQAAAAAAPgBaAD8AQABBAEIAQwBEAEUARgBHAEgA
-SQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWAAAAFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAXgAEASQAAAAW
-ABAAAwAGACMAJQBcAF8AegB8IBAgGSAdICb//wAAACAAJQAnAF8AYQB8IBAgGCAcICb//wAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAEAFgAcABwAhgCGALgAuAC4ALoAvP//AAMABAAFAAYABwAIAAkACgAL
-AAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcA
-KAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBE
-AEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAA4AWgBbAFwAXQBeAAAA
-AAAQAAAAZAkJBQADAwQEBgYDAwMFBAMFAwUGAwYFBgYGBQYFAwQDBgMFAwYGBQYFBgUFBQYFBQYG
-BgUGBQYFBgUGBQUGAwUHBgYFBgUGBQUFBgUFBgYGBQYFBgUGBQYFBQYJAwMEBAcAAAAKCgUABAQE
-BAcGAwQEBQUDBQQGBgMHBgYHBgYGBgQEBAYEBgQGBgYGBgYGBgYGBgYHBgYGBgYHBgYGBgYGBwQG
-BwYGBgYGBgYGBgYGBgcGBgYGBgcGBgYGBgYHCgMDBAQHAAAACwsGAAQEBAUHBwMEBAYFBAYEBgcE
-BwYHBwcHBwcEBAQHBAYEBwcHBwcHBwcGBwcGCAcHBgcHBwYHBwcHBwcEBggHBwcHBwcHBwYHBgYI
-BwcGBwcHBgcHBwcHBwsEAwUFCAAAAAwMBgAFBQUFCAgDBQQGBgQGBAcIBAgHBwgIBwgHBAUEBwUH
-BQcHBwcHBwcHBwgHBwgICAcHBwgHCAcIBwcIBQcJCAcHBwcHBwcHCAcHCAgIBwcHCAcIBwgHBwgM
-BAQFBQkAAAANDQcABQUFBQkIBAUFBwYEBwUHCAQICAgJCAgICAUFBQgFBwUICAgICAgICAgICAgJ
-CAgICAgJBwgICAgICQUHCQgICAgICAgICAgIBwkICAgICAkHCAgICAgJDQQEBQUKAAAADg4HAAUF
-BgYJCQQFBQcHBQgFCAkFCQgJCQkICQgFBgUJBQgFCQkICQgJCAkICQgICgkJCAkICQgJCAkICAkF
-CAoJCQgJCAkICQgJCAgKCQkICQgJCAkICQgICQ4FBAYGCgAAAA8PCAAGBgYGCgoEBgUIBwUIBQgJ
-BQoJCQoKCQkJBgYGCQYIBgkJCQkJCQkJCQoJCQsJCQkJCQoJCQkJCQkKBggLCQkJCQkJCQkJCgkI
-CwkJCQkJCgkJCQkJCQoPBQUGBgsAAAAQEAgABgYGBwsKBQYGCAgFCQYJCgYKCQoLCgkKCgYGBgoG
-CQYKCgkKCgoKCgkKCgkLCgoJCgoLCQoJCgoKCgYJDAoKCQoKCgoKCQoJCQsKCgkKCgsJCgkKCgoK
-EAUFBwcMAAAAEREJAAYGBwcLCwUHBgkIBgkGCgsGCwoKDAsKCwoGBwYLBwkGCwsKCgoKCgoKCwoK
-DAsLCgsKCwoLCgsKCgsGCgwLCgoKCgoKCgoLCgoMCwsKCwoLCgsKCwoKCxEGBQcHDQAAABISCQAH
-BwcHDAwFBwYJCQYKBgoLBgwLCwwMCwsLBwcHCwcKBwsLCwsLCwsLCwwLCw0LCwsLCwwKCwsLCwsM
-BwoNCwsLCwsLCwsLDAoKDQsLCwsLDAoLCwsLCwwSBgUHBw0AAAATEwoABwcHCA0MBgcHCgkGCgcL
-DAcMCwwNDAsMDAcHBwwHCwcMDAsMCwwLDAsMCwsNDAwLDAsNCwwLDAsLDAcLDgwMCwwLDAsMCwwL
-Cw0MDAsMCw0LDAsMCwsMEwYGCAgOAAAAFBQKAAgICAgNDQYIBwoKBwsHCw0HDQwMDg0MDQwHCAcM
-CAsIDAwMDAwMDAwMDQwMDg0NDAwMDQsNDA0MDA0ICw8NDAwMDAwMDAwNDAsODQ0MDAwNCw0MDQwM
-DRQHBggIDwAAABUVCwAICAgJDg0GCAcLCgcLBwwNBw4MDQ4ODA0NCAgIDQgMCA0NDA0NDQ0NDA4N
-DA8NDQwNDQ4MDQwNDQ0OCAwPDQ0MDQ0NDQ0MDgwMDw0NDA0NDgwNDA0NDQ4VBwYJCRAAAAAWFgsA
-CAgJCQ8OBggICwsHDAgMDggODQ4PDg0ODQgJCA4JDAgODg0NDQ4NDQ0ODQ0QDg4NDg0PDQ4NDg0N
-DggMEA4ODQ0NDg0NDQ4NDBAODg0ODQ8NDg0ODQ0OFgcHCQkQAAAAFxcMAAkJCQkPDwcJCAwLCAwI
-DQ4IDw4OEA8ODg4ICQkOCQ0JDg4ODg4ODg4ODw4OEA4PDg4ODw0ODg4ODg8JDREODg4ODg4ODg4P
-DQ0QDg8ODg4PDQ4ODg4ODxcHBwkJEQAAABgYDAAJCQkKEA8HCQgMDAgNCA4PCBAODxAQDg8PCQkJ
-DwkNCQ8PDg8ODw4PDhAODhEPDw4PDhAODw4PDg4QCQ4RDw8ODw4PDg8OEA4NEQ8PDg8OEA4PDg8O
-DhAYCAcKChIAAAAAAQI7AZAABQACArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAAD
-AAAAAAAAAAAAAAAATUFDUgBAACAgJgLk/0AAAALkAMAAAAABAAAAAAAAAAEAAIAAAAABeAJ/AABg
-AAK2AnVFbGVjdHJvaGFybW8gICAg/////zf///5FTEVSMDAAAAAAAAAAAQAAAAEAAOwG77VfDzz1
-AAAD6AAAAACxPeVvAAAAALE95W///v9AAtcDIAAAAAMAAgABAAAAAAABAAADIP84AAAD6P/+//wC
-1wABAAAAAAAAAAAAAAAAAAAAXwABAAAAXwA8AAQANQADAAIACABAAAoAAACBAPMAAQAB
-EOF
-
- my $sfont1 = decode_base64 <<EOF;
-iVBORw0KGgoAAAANSUhEUgAAC08AAAAkCAYAAADrJuBbAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE
-AP8A/wD/oL2nkwAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9ALCQ4jBRBvZvAAACAASURB
-VHic7L17eFVXmfj/WXvvc8nJyTk7F0iAFEISSIAAaQEbLVS0qDjFKVp06IiPONKf1GFG+h20zMiM
-qKjUokWtSkeqdESLlSptqdKWtpSmLeVSbuHaBAKEa24n93PZZ6/fH/vkRqAlOSeE6v48Dw85++y9
-13vWXnu973rXu94lJFIKhOAakUh5ref25r43Snk3Uvm9Kbs/yu8NvZUVrq+8iXyO1+O3XksZ/XHP
-92NZ/SFHIttAf9fdtdy/v/qSa73vQPeN8coQT3uOt+wrMdC6YaDL760cf2u//++5/BvB1ugPvdJf
-uqq/730t2OUPXJsd6DHU1egPG7c/ZWlnoHXZ9ZClnRtNphtFnoGWY6D1/9UY6Hq5Ev0t0/ulb++P
-8q+Fgepbb8S22JUb9dndyPV2o8h2o8hxJW5E3TDQtt6NVCc3kizwt9GWB3LuoysD3c57K8vlDLRd
-kmg5unI99G2i22t/tP8bwe64UeeR+8uXdiP4H/+WbGvb/3x9fv97lTPQvyvRcrzf5osHur76Kkt/
-xFhcy337i/ebrXUjvLd/K33yQLTV6z3OuFH0TaLKibfcRJbdFxneD7F+AzlPdiPM0cUrw/UoK1Hv
-240m60DrFpt+IHfZFkY+sGmgxbCxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx
-sbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx
-sbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx
-sbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxiXHwvhR58L4UOdBy2NjY2NjY2NjY2NjY2NjY2NjY
-2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY/L2hDbQAf2+kJYmBFsHGxsbGxsbGxsbGxsbGxsbGxsbG
-xsbGxsbGxsbGxsbGxsbGxsbGxsbGxubvkh6RvK/O98oMj0B3C0wJQUMSNGD8L5v6FPV78L4U6dbA
-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
-EOF
- my $sfont2 = decode_base64 <<EOF;
-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
-EOF
-
- open FP, "> /tmp/ttf1.ttf" or die "Failed to write font $!\n";
- print FP $ttf2;
- close FP;
- open FP, "> /tmp/ttf2.ttf" or die "Failed to write font $!\n";
- print FP $ttf2;
- close FP;
- open FP, "> /tmp/sfont1.png" or die "Failed to write font $!\n";
- print FP $sfont1;
- close FP;
- open FP, "> /tmp/sfont2.png" or die "Failed to write font $!\n";
- print FP $sfont2;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testgfxprim.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use Data::Dumper;
-use MIME::Base64 qw(decode_base64);
-
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::Surface;
-use SDL::Color;
-use SDL::Rect;
-use SDL::Config;
-
-use vars qw/ $app $app_rect $background $event $sprite $sprite_rect $videoflags /;
-
-die "Your system is not configured with SDL_gfx support!\n"
- unless (SDL::Config->has('SDL_gfx'));
-
-## User tweakable settings (via cmd-line)
-my %settings = (
- 'numsprites' => 10,
- 'screen_width' => 640,
- 'screen_height' => 480,
- 'video_bpp' => 8,
- 'fast' => 0,
- 'hw' => 0,
- 'fullscreen' => 0,
- 'bpp' => undef,
-);
-
-## Process commandline arguments
-
-sub get_cmd_args
-{
- GetOptions( "width:i" => \$settings{screen_width},
- "height:i" => \$settings{screen_height},
- "bpp:i" => \$settings{bpp},
- "fast!" => \$settings{fast},
- "hw!" => \$settings{hw},
- "fullscreen!" => \$settings{fullscreen},
- "numsprites=i" => \$settings{numsprites},
- );
-}
-
-## Initialize application options
-
-sub set_app_args
-{
- $settings{bpp} ||= 8; # default to 8 bits per pix
-
- $videoflags |= SDL_HWACCEL if $settings{hw};
- $videoflags |= SDL_FULLSCREEN if $settings{fullscreen};
-}
-
-## Setup
-
-sub init_game_context
-{
- $app = new SDL::App
- -width => $settings{screen_width},
- -height=> $settings{screen_height},
- -title => "testsprite",
- -flags => $videoflags;
-
- $app_rect= new SDL::Rect
- -height => $settings{screen_height},
- -width => $settings{screen_width};
-
- $background = $SDL::Color::black;
-
- $sprite = new SDL::Surface -name =>"/tmp/icon.bmp";
-
- # Set transparent pixel as the pixel at (0,0)
- $sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0));
-
- print STDERR "Got past that\n";
-
- $sprite->display_format();
-
- $sprite_rect = new SDL::Rect
- -x => 0,
- -y => 0,
- -width => $sprite->width,
- -height=> $sprite->height;
-
- $event = new SDL::Event();
-}
-
-## Prints diagnostics
-
-sub instruments
-{
- if ( ($app->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Screen is in video memory\n");
- } else {
- printf("Screen is in system memory\n");
- }
-
- if ( ($app->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
- printf("Screen has double-buffering enabled\n");
- }
-
- if ( ($sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Sprite is in video memory\n");
- } else {
- printf("Sprite is in system memory\n");
- }
-
- # Run a sample blit to trigger blit (if posssible)
- # acceleration before the check just after
- $sprite->blit(0,$app,0);
-
- if ( ($sprite->flags & SDL_HWACCEL) == SDL_HWACCEL ) {
- printf("Sprite blit uses hardware acceleration\n");
- }
- if ( ($sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL ) {
- printf("Sprite blit uses RLE acceleration\n");
- }
-
-}
-
-sub game_loop
-{
- my $surf = $$app;
- my $surfWidth=$settings{screen_width};
- my $surfHeight=$settings{screen_height};
- my $surfMidWidth=$settings{screen_width}>>1;;
- my $surfMidHeight=$settings{screen_height}>>1;
-
- $app->fill($app_rect, $background);
-
- # TODO: polygon's, GFX*Color
-
- #lines
-
- SDL::GFXHlineRGBA($surf,
- 0,$surfWidth,
- $surfMidHeight,
- 255,255,255,255);
-
- SDL::GFXVlineRGBA($surf,
- $surfMidWidth,
- 0,$surfHeight,
- 255,255,255,255);
-
- # rectangles
-
- SDL::GFXRectangleRGBA($surf,
- 0,0,
- $surfMidWidth/2,$surfMidHeight/2,
- 255,0,0,255);
-
- SDL::GFXBoxRGBA($surf,
- 0,0,
- $surfMidWidth/3,$surfMidHeight/3,
- 0,255,0,255);
-
- SDL::GFXLineRGBA($surf,
- 0,0,
- $surfWidth,$surfHeight,
- 0,255,255,255);
-
- SDL::GFXAalineRGBA($surf, $surfWidth,0,0,$surfHeight,0,255,255,255);
-
- # circles
-
- SDL::GFXCircleRGBA( $surf,$surfMidWidth*.3, $surfMidHeight,
- $surfMidWidth*.3, 255,255,0,255);
-
-
- SDL::GFXAacircleRGBA($surf, $surfMidWidth*.6, $surfMidHeight,
- $surfMidWidth*.3, 255,255,0,255);
-
-
- SDL::GFXFilledCircleRGBA($surf,$surfMidWidth*.3, $surfMidHeight,
- $surfMidWidth*.25,255,255,0,255);
-
-
- # ellipses
-
- SDL::GFXEllipseRGBA($surf,$surfWidth- $surfMidWidth*.3, $surfMidHeight,
- $surfMidWidth*.3,$surfMidHeight*.15, 255,255,0,255);
-
- SDL::GFXAaellipseRGBA($surf,$surfWidth- $surfMidWidth*.6, $surfMidHeight,
- $surfMidWidth*.3,$surfMidHeight*.15,255,255,0,255);
-
- SDL::GFXFilledEllipseRGBA($surf,$surfWidth- $surfMidWidth*.3, $surfMidHeight,
- $surfMidWidth*.25,$surfMidHeight*.10,255,255,0,255);
-
- # pie slices
- SDL::GFXFilledPieRGBA($surf,$surfMidWidth,$surfMidHeight, $surfMidWidth*.1,
- 0,90,0,0,255,255);
-
- SDL::GFXFilledPieRGBA($surf,$surfMidWidth,$surfMidHeight, $surfMidWidth*.1,
- 180,270,0,0,255,255);
-
- # polygons
-
- # TBD...
-
-
- # characters & strings
-
- SDL::GFXCharacterRGBA($surf,$surfMidWidth,0,
- "!",255,255,255,255);
-
- SDL::GFXStringRGBA($surf,$surfMidWidth,$surfHeight*.75,
- "SDL_Perl Primitive Test.",255,255,255,255);
-
- $app->flip();
-
- $app->loop({
- SDL_QUIT() => sub { exit(0); },
- SDL_KEYDOWN() => sub { exit(0) if (SDL::GetKeyState(SDLK_ESCAPE)); },
- });
-}
-
-## Main program loop
-
-write_bmp();
-get_cmd_args();
-set_app_args();
-init_game_context();
-instruments();
-game_loop();
-
-sub write_bmp {
- my $bmp = decode_base64 <<EOF;
-Qk1CAgAAAAAAAEIAAAAoAAAAIAAAACAAAAABAAQAAAAAAAACAABtCwAAbQsAAAMAAAADAAAA////
-AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREREAAAAAAAAAAAAAABEiIiIiEQAAAAAAAAAAAAEiIRER
-EiIQAAAAAAAAAAASIRERERESIQAAAAAAAAABIhERERERESIQAAAAAAAAEiERIiIiIhESIQAAAAAA
-ABIiIiIiIiIiIiEAAAAAAAEiIiIiIiIiIiIiEAAAAAABIiIiIiESIiIiIhAAAAAAASIiIiIhEiIi
-IiIQAAAAAAEiIiIiIiIiIiIiEAAAAAABIiIiIiIiIiIiIhAAAAAAASIiEREiIhERIiIQAAAAAAEi
-IhEBIiIRASIiEAAAAAAAEiIRESIiEREiIQAAAAAAABIiIiIiIiIiIiEAAAAAAAABIiIiIiIiIiIQ
-AAAAAAAAABIiIiIiIiIhAAAAAAAAAAABIiIiIiIiEAAAAAAAAAAAABEiIiIiEQAAAAAAAAAAAAAA
-EREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAA=
-EOF
- open FP, "> /tmp/icon.bmp";
- print FP $bmp;
- close FP;
-}
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testgfxroto.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use Data::Dumper;
-use MIME::Base64 qw(decode_base64);
-
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::Surface;
-use SDL::Color;
-use SDL::Rect;
-use SDL::Config;
-
-use vars qw/ $app $app_rect $background $event $sprite $sprite_rect $videoflags /;
-
-## Test for SDL_gfx support
-
-die "Your system was not configured with SDL_gfx support!\n"
- unless SDL::Config->has('SDL_gfx');
-
-
-## User tweakable settings (via cmd-line)
-my %settings = (
- 'numsprites' => 10,
- 'screen_width' => 200,
- 'screen_height' => 200,
- 'video_bpp' => 8,
- 'fast' => 0,
- 'hw' => 0,
- 'flip' => 1,
- 'fullscreen' => 0,
- 'bpp' => undef,
-);
-
-## Process commandline arguments
-
-sub get_cmd_args
-{
- GetOptions("width:i" => \$settings{screen_width},
- "height:i" => \$settings{screen_height},
- "bpp:i" => \$settings{bpp},
- "fast!" => \$settings{fast},
- "hw!" => \$settings{hw},
- "flip!" => \$settings{flip},
- "fullscreen!" => \$settings{fullscreen},
- "numsprites=i" => \$settings{numsprites},
- );
-}
-
-## Initialize application options
-
-sub set_app_args
-{
- $settings{bpp} ||= 8; # default to 8 bits per pix
-
- $videoflags |= SDL_HWACCEL if $settings{hw};
- $videoflags |= SDL_DOUBLEBUF if $settings{flip};
- $videoflags |= SDL_FULLSCREEN if $settings{fullscreen};
-}
-
-## Setup
-
-sub init_game_context
-{
- $app = new SDL::App (
- -width => $settings{screen_width},
- -height=> $settings{screen_height},
- -title => "testsprite",
- -flags => $videoflags,
- );
-
- $app_rect= new SDL::Rect(
- -height => $settings{screen_height},
- -width => $settings{screen_width},
- );
-
- $background = $SDL::Color::black;
-
- $sprite = new SDL::Surface -name =>"/tmp/spiral.png";
-
- $sprite->display_format();
-
- SDL::SetColorKey($$sprite, SDL_SRCCOLORKEY, SDL::SurfacePixel($$sprite,0,0));
-
- $sprite_rect = new SDL::Rect(-x => 0,
- -y => 0,
- -width => $sprite->width,
- -height=> $sprite->height,
- );
-
- $event = new SDL::Event();
-}
-
-## Prints diagnostics
-
-sub instruments
-{
- if ( ($app->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Screen is in video memory\n");
- } else {
- printf("Screen is in system memory\n");
- }
-
- if ( ($app->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
- printf("Screen has double-buffering enabled\n");
- }
-
- if ( ($sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Sprite is in video memory\n");
- } else {
- printf("Sprite is in system memory\n");
- }
-
- # Run a sample blit to trigger blit (if posssible)
- # acceleration before the check just after
- put_sprite_rotated($sprite,
- $settings{screen_width}/2, $settings{screen_height}/2,
- 0,0,0);
-
- if ( ($sprite->flags & SDL_HWACCEL) == SDL_HWACCEL ) {
- printf("Sprite blit uses hardware acceleration\n");
- }
- if ( ($sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL ) {
- printf("Sprite blit uses RLE acceleration\n");
- }
-
-}
-
-
-
-
-# this can get silly in terms of
-# memory usage, and maybe key lookup.
-# it would be better to 'tie' the hash
-# to an object which can
-# better manage memory usage.
-
-my %rotate_cache =();
-
-sub generate_sprite_rotated
-{
- my ($surface, $angle, $zoom, $smooth) = @_;
-
- $angle %= 360;
- my $key = "$surface$angle$zoom$smooth";
-
- if ( $rotate_cache{$key} )
- {
- return $rotate_cache{$key};
- }
- else
- {
- my $sur = SDL::GFXRotoZoom($surface, $angle, $zoom, $smooth);
-
- $rotate_cache{$key}= SDL::DisplayFormat($sur);
- }
- return $rotate_cache{$key};
-}
-
-sub put_sprite_rotated
-{
- my ($surface, $x, $y, $angle, $zoom, $smooth) = @_;
-
- my $roto = generate_sprite_rotated($$surface, $angle, $zoom, $smooth);
-
- die "Failed to create rotozoom surface" unless $roto;
-
- my ($w,$h) = (SDL::SurfaceW($roto),SDL::SurfaceH($roto));;
-
-
- my $dest_rect = new SDL::Rect
- -x => $x - ($w/2),
- -y => $y - ($h/2),
- -width => $w,
- -height => $h;
-
-
- SDL::BlitSurface($roto, 0, $$app, $$dest_rect);
-}
-
-
-sub game_loop
-{
- my $ox=$settings{screen_width}>>1;;
- my $oy=$settings{screen_height}>>1;
- my $sectors = 12;
- my $angleDelta = 360/$sectors;;
- my $zoom = 1;
- my $smooth =1;
-
- my $angle =0;
- my $radius =128;
-
- FRAME:
- while (1)
- {
- # process event queue
- $event->pump;
- if ($event->poll)
- {
- my $etype=$event->type();
-
- # handle quit events
- last FRAME if ($etype == SDL_QUIT() );
- last FRAME if (SDL::GetKeyState(SDLK_ESCAPE));
- }
-
- # needed for HW surface locking
- #$app->lock() if $app->lockp();
- #$app->unlock();
- $app->flip if $settings{flip};
-
- ################################################
- # do some drawing
-
- $app->fill($app_rect, $background);
-
- $angle += 16;
-
- put_sprite_rotated($sprite,
- $settings{screen_width}/2, $settings{screen_height}/2,
- $angle, $zoom, $smooth);
-
- }
- print "Cache entries: " . scalar(keys %rotate_cache) . "\n";
-}
-
-
-
-## Main program loop
-
-write_spiral();
-get_cmd_args();
-set_app_args();
-init_game_context();
-instruments();
-game_loop();
-exit(0);
-
-sub write_spiral {
- my $png = decode_base64 <<EOF;
-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
-EOF
- open FP, "> /tmp/spiral.png";
- print FP $png;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testgraphictool.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use warnings;
-use MIME::Base64 qw(decode_base64);
-use SDL;
-use SDL::Surface;
-use SDL::App;
-use SDL::Tool::Graphic;
-
-my $app = new SDL::App(-title => "Graphic Tool Test",
- -width => 640,
- -height => 480,
- -depth => 16,
- -fullscreen => 0);
-my $app_rect = new SDL::Rect( -x=>0,
- -y=>0,
- -width=>$app->width,
- -height=>$app->height);
-
-write_spiral();
-my $sprite = new SDL::Surface(-name => "/tmp/spiral.png");
-$sprite->display_format();
-
-#Test Zoom
-my $graphicTool = new SDL::Tool::Graphic();
-$graphicTool->zoom($sprite, .5, .5, 1);
-
-my $sprite_rect = new SDL::Rect( -x=>0,
- -y=>0,
- -width=>$sprite->width,
- -height=>$sprite->height);
-$sprite->blit($sprite_rect, $app, $sprite_rect);
-$app->flip();
-sleep 4;
-$app->fill($app_rect, $SDL::Color::black);
-
-
-#Test Rotate
-$graphicTool->rotoZoom($sprite, 90, 1, 1);
-
-$sprite_rect = new SDL::Rect( -x=>0,
- -y=>0,
- -width=>$sprite->width,
- -height=>$sprite->height);
-$sprite->blit($sprite_rect, $app, $sprite_rect);
-$app->flip();
-sleep 4;
-
-+print "GrayScaling\n";
-+$app->fill($app_rect, $SDL::Color::black);
-
-#Test GrayScale
-$graphicTool->grayScale($sprite);
-
-$sprite->blit($sprite_rect, $app, $sprite_rect);
-$app->flip();
-sleep 4;
-
-
-
-sub write_spiral {
- my $png = decode_base64 <<EOF;
-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
-EOF
- open FP, "> /tmp/spiral.png";
- print FP $png;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testjoystick.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use SDL;
-use SDL::App;
-use SDL::Rect;
-use SDL::Event;
-
-
-sub WatchJoystick($){
- (my $joystick) = @_;
- my $screenWidth = 640;
- my $screenHeight = 480;
-
- my $app = new SDL::App(-title => "Joystick Test",
- -width => $screenWidth,
- -height => $screenHeight,
- -depth=> 16 );
- #Print information about the joystick we are watching
- my $name = SDL::JoystickName(SDL::JoystickIndex($joystick));
- print "Watching joystick ".SDL::JoystickIndex($joystick).
- ": (".($name ? $name : "Unknown Joystick" ).")\n";
- print "Joystick has ".SDL::JoystickNumAxes($joystick)." axes, ".
- SDL::JoystickNumHats($joystick)." hats, ".
- SDL::JoystickNumBalls($joystick)." balls, and ".
- SDL::JoystickNumButtons($joystick)." buttons\n";
-
- my $event = new SDL::Event;
- my $done = 0;
- my $colorWhite = new SDL::Color(-r=>255, -g=>255, -b=>255);
- my $colorBlack = new SDL::Color();
- my @axisRect = ();
- my $numAxes=SDL::JoystickNumAxes($joystick);
-
-
- while(!$done)
- {
- while($event->poll())
- {
- if($event->type() eq SDL::JOYAXISMOTION())
- {
- print "Joystick ".SDL::JoyAxisEventWhich($$event).
- " axis ".SDL::JoyAxisEventAxis($$event).
- " value: ".SDL::JoyAxisEventValue($$event)."\n";
- }
- elsif($event->type() eq SDL::JOYHATMOTION())
- {
- print "Joystick ".SDL::JoyHatEventWhich($$event).
- " hat ".SDL::JoyHatEventHat($$event);
- if(SDL::JoyHatEventValue($$event) == SDL::HAT_CENTERED() )
- {
- print " centered";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_UP() ) {
- print " up";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_RIGHT() ) {
- print " right";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_DOWN() ) {
- print " down";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_LEFT()) {
- print " left";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_RIGHTUP() ) {
- print " right & up";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_RIGHTDOWN() ) {
- print " right & down";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_LEFTDOWN() ) {
- print " left & down";
- } elsif(SDL::JoyHatEventValue($$event) == SDL::HAT_LEFTUP()) {
- print " left & up";
- }
- print "\n";
- } elsif($event->type() eq SDL::JOYBALLMOTION()){
- print "Joystick ".SDL::JoyBallEventWhich($$event).
- " ball ".SDL::JoyBallEventBall($$event).
- " delta: (".SDL::JoyBallEventXrel($$event).
- ",".SDL::JoyBallEventYrel($$event)."\n";
- } elsif($event->type() eq SDL::JOYBUTTONDOWN()){
- print "Joystick ".SDL::JoyButtonEventWhich($$event).
- " button ".SDL::JoyButtonEventButton($$event)." down\n";
- } elsif($event->type() eq SDL::JOYBUTTONUP()){
- print "Joystick ".SDL::JoyButtonEventWhich($$event).
- " button ".SDL::JoyButtonEventButton($$event)." up\n";
- } elsif($event->type() eq SDL_QUIT() or
- ($event->type() eq SDL_KEYDOWN() and
- $event->key_sym() == SDLK_ESCAPE)){
- $done = 1;
- }
-
-
-
- #Update visual joystick state
- for(my $i =0; $i < SDL::JoystickNumButtons($joystick); $i++)
- {
- my $rect = new SDL::Rect( -width => 32,
- -height => 32,
- -x => $i*34,
- -y => $screenHeight-34);
- if(SDL::JoystickGetButton($joystick, $i) eq SDL::PRESSED())
- {
- $app->fill($rect, $colorWhite);
- } else {
- $app->fill($rect, $colorBlack);
- }
- $app->update($rect);
- }
-
-
- for (my $i = 0; $i < $numAxes; $i+=1)
- {
- #Remove previous axis box
- if($axisRect[$i]){
- $app->fill($axisRect[$i], $colorBlack);
- $app->update($axisRect[$i]);
- }
- # Draw the axis
- my $ox = SDL::JoystickGetAxis($joystick, $i);
- my $x= abs ($ox/256);
- if( $x < 0) {
- $x=0;
- } elsif ( $x > ($screenWidth-16) ){
- $x = $screenWidth-16;
- }
-
-
- if ($ox < 0)
- {
- $axisRect[$i] = new SDL::Rect( -width=> $x,
- -height=> 32,
- -x => ($screenWidth/2) - $x,
- -y => $i*34
- );
- }
- else
- {
- $axisRect[$i] = new SDL::Rect( -width=> $x,
- -height=> 32,
- -x => $screenWidth/2 ,
- -y => $i*34
- );
- }
-
-
- $app->fill($axisRect[$i], $colorWhite);
- $app->update($axisRect[$i]);
- }
- }
- }
- }
-
-die "Could not initialize SDL: ", SDL::GetError()
- if( 0 > SDL::Init(SDL_INIT_JOYSTICK()));
-
-printf "There are %d joysticks attched\n", SDL::NumJoysticks();
-for(my $i = 0; $i < SDL::NumJoysticks(); $i++){
- my $name = SDL::JoystickName($i);
- print "Joystick ".$i.": ".($name ? $name : "Unknown Joystick")."\n";
-}
-
-if ( $ARGV[0] ne undef){
- my $joystick = SDL::JoystickOpen($ARGV[0]);
- if(!$joystick){
- print "Couldn't open joystick ".$ARGV[0].": ".SDL::GetError()."\n";
- } else {
- WatchJoystick($joystick);
- SDL::JoystickClose($joystick);
- }
- SDL::QuitSubSystem(SDL_INIT_JOYSTICK());
-}
-
-
-exit;
-
-sub draw_axis_method_2()
-{
-}
-
-__DATA__
-sub draw_axis_method_1()
-{
- for (my $i = 0; $i < ($numAxes/2); $i+=2)
- {
- #Remove previous axis box
- if($axisRect[$i]){
- $app->fill($axisRect[$i], $colorBlack);
- $app->update($axisRect[$i]);
- }
- # Draw the X/Y axis
- my $x = SDL::JoystickGetAxis($joystick, $i)+32768;
- $x *= $screenWidth;
- $x /= 65535;
- if( $x < 0) {
- $x=0;
- } elsif ( $x > ($screenWidth-16) ){
- $x = $screenWidth-16;
- }
- my $y = SDL::JoystickGetAxis($joystick, $i+1)+32768;
- $y *= $screenHeight;
- $y /= 65535;
- if( $y < 0) {
- $y=0;
- } elsif ( $y > ($screenHeight-16) ){
- $y = $screenHeight-16;
- }
- $axisRect[$i] = new SDL::Rect( -width=> 16,
- -height=> 16,
- -x => $x,
- -y => $y);
- $app->fill($axisRect[$i], $colorWhite);
- $app->update($axisRect[$i]);
- }
- }
-
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testmenu.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::App;
-use SDL::Surface;
-use SDL::Rect;
-use SDL::Event;
-use MIME::Base64 qw/ decode_base64 /;
-
-write_pngs();
-
-my $menu = new SDL::Surface -name => '/tmp/menu.png';
-
-my $app = new SDL::App -w => $menu->width(), -h => $menu->height(), -resizeable => 1;
-
-my $hilight = new SDL::Surface -name => '/tmp/highlight.png';
-
-my %menu = (
- 'start' => [ 115, 30, 160, 40 ],
- 'help' => [ 120, 100, 120, 40 ],
- 'giveup' => [ 120, 230, 120, 40 ],
- 'spawnserver' => [ 115, 170, 165, 40 ],
- 'credits' => [ 115, 285, 160, 40 ],
-);
-
-my $needblit;
-sub drawMenu {
- my ($a,$dx,$dy,$no,$hi,%m) = @_;
- for (keys %m) {
- my ($x,$y,$w,$h) = @{$m{$_}};
- next unless $dx >= $x && $dx <= $x+$w
- && $dy >= $y && $dy <= $y+$h;
- unless ($needblit) {
- my $rect = new SDL::Rect -w => $w, -h => $h,
- -x => $x, -y => $y;
- $hi->blit($rect,$a,$rect);
- $needblit = 1;
- }
- return $_;
- }
- $no->blit(NULL,$a,NULL) if $needblit;
- $needblit = 0;
- return 0;
-}
-
-sub help {
- print STDERR <<USAGE;
-This should print a help message
-
-USAGE
-
-}
-
-sub credits {
- print STDERR <<CREDITS;
-David J. Goehrig
-
-CREDITS
-
-}
-
-sub spawnserver {
- print STDERR <<SPAWN;
-Spawinging new server...
-
-SPAWN
-
-}
-
-sub start {
- print STDERR <<START;
-This should start the game
-
-START
-
-}
-
-sub giveup {
- print STDERR <<GIVEUP;
-Giving up
-
-GIVEUP
-
- exit(0);
-}
-
-my %events = (
- SDL_MOUSEMOTION() => sub {
- my ($e) = @_;
- drawMenu($app,
- $e->motion_x(),
- $e->motion_y(),
- $menu,
- $hilight,
- %menu);
- },
- SDL_MOUSEBUTTONUP() => sub {
- my ($e) = @_;
- my $routine = drawMenu($app,
- $e->motion_x(),
- $e->motion_y(),
- $menu,
- $hilight,
- %menu);
- &{$routine} if ($routine);
- },
- SDL_QUIT() => sub { exit(0); },
- SDL_KEYDOWN() => sub {
- my ($e) = @_;
- exit(0) if ($e->key_sym() == SDLK_ESCAPE);
- },
-);
-
-$menu->blit(NULL,$app,NULL);
-$app->sync();
-$app->loop(\%events);
-
-sub write_pngs {
- $png1 = decode_base64 <<PNG;
-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
-AAAAAElFTkSuQmCC
-PNG
-
- $png2 = decode_base64 <<PNG2;
-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
-PNG2
-
- open FP, "> /tmp/highlight.png" or die "$!\n";
- print FP $png1;
- close FP;
- open FP, "> /tmp/menu.png" or die "$!\n";
- print FP $png2;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testsprite.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Data::Dumper;
-use MIME::Base64 qw(decode_base64);
-
-use SDL;
-use SDL::App;
-use SDL::Event;
-use SDL::Surface;
-use SDL::Color;
-use SDL::Rect;
-
-use vars qw/ $app $app_rect $background $event $sprite $sprite_rect $videoflags /;
-
-## User tweakable settings (via cmd-line)
-my %settings = (
- 'numsprites' => 75,
- 'screen_width' => 640,
- 'screen_height' => 480,
- 'video_bpp' => 8,
- 'fast' => 0,
- 'hw' => 0,
- 'flip' => 1,
- 'fullscreen' => 0,
- 'bpp' => undef,
-);
-
-## Initialize application options
-
-sub set_app_args
-{
- $settings{bpp} ||= 8; # default to 8 bits per pix
- $videoflags |= SDL_HWACCEL if $settings{hw};
- $videoflags |= SDL_DOUBLEBUF if $settings{flip};
- $videoflags |= SDL_FULLSCREEN if $settings{fullscreen};
-}
-
-## Setup
-
-our $bmp;
-
-sub init_game_context
-{
- write_bmp();
- $app = new SDL::App (
- -width => $settings{screen_width},
- -height=> $settings{screen_height},
- -title => "testsprite",
- -icon => "/tmp/icon.bmp",
- -flags => $videoflags,
- );
-
- $app_rect= new SDL::Rect(
- -height => $settings{screen_height},
- -width => $settings{screen_width},
- );
-
- $background = $SDL::Color::black;
-
- $sprite = new SDL::Surface(-name => '/tmp/icon.bmp');
-
- # Set transparent pixel as the pixel at (0,0)
-
- $sprite->display_format();
-
- $sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0)); # sets the transparent color to that at (0,0)
-
-
- $sprite_rect = new SDL::Rect(-x => 0,
- -y => 0,
- -width => $sprite->width,
- -height=> $sprite->height,
- );
-
- $event = new SDL::Event();
-}
-
-## Prints diagnostics
-
-sub instruments
-{
- if ( ($app->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Screen is in video memory\n");
- } else {
- printf("Screen is in system memory\n");
- }
-
- if ( ($app->flags & SDL_DOUBLEBUF) == SDL_DOUBLEBUF ) {
- printf("Screen has double-buffering enabled\n");
- }
-
- if ( ($sprite->flags & SDL_HWSURFACE) == SDL_HWSURFACE ) {
- printf("Sprite is in video memory\n");
- } else {
- printf("Sprite is in system memory\n");
- }
-
- # Run a sample blit to trigger blit (if posssible)
- # acceleration before the check just after
- put_sprite(0,0);
-
- if ( ($sprite->flags & SDL_HWACCEL) == SDL_HWACCEL ) {
- printf("Sprite blit uses hardware acceleration\n");
- }
- if ( ($sprite->flags & SDL_RLEACCEL) == SDL_RLEACCEL ) {
- printf("Sprite blit uses RLE acceleration\n");
- }
-
-}
-
-
-
-
-sub put_sprite
-{
- my ($x,$y) = @_;
-
- my $dest_rect = new SDL::Rect(-x => $x,
- -y => $y,
- -width => $sprite->width,
- -height => $sprite->height,
- );
- $sprite->blit($sprite_rect, $app, $dest_rect);
-}
-
-
-
-sub game_loop
-{
- my $x=0;
- my $y=$settings{screen_height}>>1;
- my $i=0;
-
- while (1)
- {
- # process event queue
- $event->pump;
- $event->poll;
- my $etype=$event->type;
-
- # handle user events
- last if ($etype eq SDL_QUIT );
- last if (SDL::GetKeyState(SDLK_ESCAPE));
-
- #$app->lock() if $app->lockp();
-
- # page flip
-
- # __draw gfx
-
- $app->fill($app_rect, $background);
-
- foreach (1..$settings{numsprites})
- {
- put_sprite( $_*8, $y + (sin(($i+$_)*0.2)*($settings{screen_height}/3)));
- }
- $i+=30;
-
- # __graw gfx end
- #$app->unlock();
- $app->flip if $settings{flip};
- }
-}
-
-## Main program loop
-
-set_app_args();
-init_game_context();
-instruments();
-game_loop();
-system 'rm /tmp/icon.bmp';
-exit(0);
-
-
-sub write_bmp {
- $bmp = decode_base64 <<EOF;
-Qk1CAgAAAAAAAEIAAAAoAAAAIAAAACAAAAABAAQAAAAAAAACAABtCwAAbQsAAAMAAAADAAAA////
-AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAABEREREAAAAAAAAAAAAAABEiIiIiEQAAAAAAAAAAAAEiIRER
-EiIQAAAAAAAAAAASIRERERESIQAAAAAAAAABIhERERERESIQAAAAAAAAEiERIiIiIhESIQAAAAAA
-ABIiIiIiIiIiIiEAAAAAAAEiIiIiIiIiIiIiEAAAAAABIiIiIiESIiIiIhAAAAAAASIiIiIhEiIi
-IiIQAAAAAAEiIiIiIiIiIiIiEAAAAAABIiIiIiIiIiIiIhAAAAAAASIiEREiIhERIiIQAAAAAAEi
-IhEBIiIRASIiEAAAAAAAEiIRESIiEREiIQAAAAAAABIiIiIiIiIiIiEAAAAAAAABIiIiIiIiIiIQ
-AAAAAAAAABIiIiIiIiIhAAAAAAAAAAABIiIiIiIiEAAAAAAAAAAAABEiIiIiEQAAAAAAAAAAAAAA
-EREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAA=
-EOF
- open FP, "> /tmp/icon.bmp";
- print FP $bmp;
- close FP;
-}
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# testtimer.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use SDL;
-use SDL::Timer;
-
-die "usage: $0\n" if in($ARGV[0], qw/ -? -h --help/);
-
-SDL::Init(SDL_INIT_EVERYTHING());
-
-print STDERR "Waiting 4 seconds\n";
-SDL::Delay(4000);
-
-$a = new SDL::Timer sub { my $timer = shift;
- print STDERR "Timer A: $$timer{-times} runs\n" },
- -delay => 1000,
- -times => 10;
-
-$b = new SDL::Timer sub { print STDERR "Timer B: ", ++$i,"\n" }, -delay => 3000;
-
-$c = new SDL::Timer sub { print STDERR "Timer C: restarting Timer A\n"; $a->run(1000,10) },
- -delay => 19000,
- -times => 1;
-
-SDL::Delay(30000);
-
-print STDERR "Cleaning up...\n";
-SDL::Delay(300);
-
-SDL::Quit();
-