diff options
author | Matthew Somerville <matthew@mysociety.org> | 2012-03-14 13:11:55 +0000 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2012-03-14 13:11:55 +0000 |
commit | f465e32109d6600887f1c5765b44347a4cfaa3d7 (patch) | |
tree | 3855e96d1d69683b388d82c27bad3f9e339f2792 | |
parent | 1b15ca0aea334d20fb0f19fed36bc948668e2a14 (diff) | |
parent | c9681f6bbc04659b9d6ed5eaa46b8c2edd704f9e (diff) |
Merge branch 'redesign'
Conflicts:
.gitignore
notes/INSTALL
perllib/FixMyStreet/App/Controller/Photo.pm
perllib/FixMyStreet/Cobrand/FixMyStreet.pm
195 files changed, 9762 insertions, 1585 deletions
diff --git a/.gitignore b/.gitignore index 2be1b746e..85b7ca758 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ tags /web/cobrands/fixmystreet/*.css /local +/web/cobrands/fixmystreet/compass_app_log.txt blog/web/wp blog/conf/general blog/conf/general.deployed diff --git a/bin/send-reports b/bin/send-reports index c8c1e9cf2..22bd12732 100755 --- a/bin/send-reports +++ b/bin/send-reports @@ -70,7 +70,7 @@ while (my $row = $unsent->next) { $h{phone_line} = $h{phone} ? _('Phone:') . " $h{phone}\n\n" : ''; if ($row->photo) { $h{has_photo} = _("This web page also contains a photo of the problem, provided by the user.") . "\n\n"; - $h{image_url} = $email_base_url . '/photo?id=' . $row->id; + $h{image_url} = $email_base_url . '/photo/' . $row->id . '.full.jpeg'; } else { $h{has_photo} = ''; $h{image_url} = ''; diff --git a/conf/general.yml-example b/conf/general.yml-example index 77319b24b..06af11a55 100644 --- a/conf/general.yml-example +++ b/conf/general.yml-example @@ -22,10 +22,11 @@ TEST_EMAIL_PREFIX: '' CONTACT_NAME: 'FixMyStreet' STAGING_SITE: 1 -UPLOAD_CACHE: '/upload/' +UPLOAD_DIR: '/upload/' GEO_CACHE: '/cache/' GOOGLE_MAPS_API_KEY: '' BING_MAPS_API_KEY: '' +KASABI_API_KEY: '' LONDON_REPORTIT_URL: '' LONDON_REPORTIT_KEY: '' diff --git a/conf/packages b/conf/packages index cf2247988..21ee0a862 100644 --- a/conf/packages +++ b/conf/packages @@ -30,7 +30,7 @@ libtest-exception-perl libipc-run3-perl libyaml-perl liblist-moreutils-perl -libhaml-ruby +ruby-compass | libhaml-ruby libtemplate-perl postgresql-server-dev-8.4 gnuplot diff --git a/data/openlayers.fixmystreet.cfg b/data/openlayers.fixmystreet.cfg index faeb3ed50..9e23ef7ce 100644 --- a/data/openlayers.fixmystreet.cfg +++ b/data/openlayers.fixmystreet.cfg @@ -23,6 +23,7 @@ OpenLayers/Format/JSON.js OpenLayers/Format/KML.js OpenLayers/Handler/Click.js OpenLayers/Feature/Vector.js +OpenLayers/Rule.js OpenLayers/Style.js OpenLayers/StyleMap.js OpenLayers/Geometry/Point.js @@ -30,6 +31,7 @@ OpenLayers/Protocol/HTTP.js OpenLayers/Layer/SphericalMercator.js # For 4326 OpenLayers/Layer/Vector.js OpenLayers/Layer/XYZ.js +OpenLayers/Popup/FramedCloud.js [exclude] diff --git a/notes/INSTALL.pod b/notes/INSTALL.pod index 03ad72d25..b795a0043 100644 --- a/notes/INSTALL.pod +++ b/notes/INSTALL.pod @@ -193,9 +193,9 @@ The email address to be used on the site for the contact us form. If this is 1 then all email ( alerts and reports ) will be sent to the contact email address. Use this for development sites. -=item UPLOAD_CACHE +=item UPLOAD_DIR -This is the location where imaged will be stored as they are being uploaded. +This is the location where images will be stored when they are uploaded. It should be accessible by and writeable by the FixMyStreet process. =item GEO_CACHE diff --git a/notes/no-update-server b/notes/no-update-server index ad1ce26e2..1f59c0116 100644 --- a/notes/no-update-server +++ b/notes/no-update-server @@ -323,7 +323,7 @@ TEST_EMAIL_PREFIX: '' CONTACT_NAME: 'FiksGataMi' STAGING_SITE: 1 -UPLOAD_CACHE: '/var/lib/fixmystreet/upload/' +UPLOAD_DIR: '/var/lib/fixmystreet/upload/' GEO_CACHE: '/var/lib/fixmystreet/cache/' GOOGLE_MAPS_API_KEY: '' diff --git a/perllib/FixMyStreet/App.pm b/perllib/FixMyStreet/App.pm index 21552a066..262379b79 100644 --- a/perllib/FixMyStreet/App.pm +++ b/perllib/FixMyStreet/App.pm @@ -11,6 +11,7 @@ use mySociety::EmailUtil; use mySociety::Random qw(random_bytes); use FixMyStreet::Map; +use Path::Class; use URI; use URI::QueryParam; @@ -151,8 +152,7 @@ sub setup_request { my $cobrand = $c->cobrand; # append the cobrand templates to the include path - $c->stash->{additional_template_paths} = - [ $cobrand->path_to_web_templates->stringify ] + $c->stash->{additional_template_paths} = $cobrand->path_to_web_templates unless $cobrand->is_default; # work out which language to use @@ -402,6 +402,45 @@ sub finalize { delete $c->stash->{cobrand}; } +=head2 render_fragment + +If a page needs to render a template fragment internally (e.g. for an Ajax +call), use this method. + +=cut + +sub render_fragment { + my ($c, $template, $vars) = @_; + $vars->{additional_template_paths} = $c->cobrand->path_to_web_templates + if $vars && !$c->cobrand->is_default; + $c->view('Web')->render($c, $template, $vars); +} + +=head2 get_photo_params + +Returns a hashref of details of any attached photo for use in templates. +Hashref contains height, width and url keys. + +=cut + +sub get_photo_params { + my ($self, $key) = @_; + $key = ($key eq 'id') ? '' : "/$key"; + + return {} unless $self->photo; + + my $photo = {}; + if (length($self->photo) == 40) { + $photo->{url_full} = '/photo' . $key . '/' . $self->id . '.full.jpeg'; + } else { + ( $photo->{width}, $photo->{height} ) = + Image::Size::imgsize( \$self->photo ); + } + $photo->{url} = '/photo' . $key . '/' . $self->id . '.jpeg'; + + return $photo; +} + =head1 SEE ALSO L<FixMyStreet::App::Controller::Root>, L<Catalyst> diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 0e34ea64b..83f77f401 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -627,10 +627,6 @@ sub report_edit : Path('report_edit') : Args(1) { $problem->photo(undef); } - if ( $new_state ne $old_state ) { - $problem->lastupdate( \'ms_current_timestamp()' ); - } - if ( $new_state eq 'confirmed' and $old_state eq 'unconfirmed' ) { $problem->confirmed( \'ms_current_timestamp()' ); } @@ -639,6 +635,7 @@ sub report_edit : Path('report_edit') : Args(1) { $problem->discard_changes; } else { + $problem->lastupdate( \'ms_current_timestamp()' ) if $edited || $new_state ne $old_state; $problem->update; if ( $new_state ne $old_state ) { diff --git a/perllib/FixMyStreet/App/Controller/Alert.pm b/perllib/FixMyStreet/App/Controller/Alert.pm index 40dde455e..2698c6ac0 100644 --- a/perllib/FixMyStreet/App/Controller/Alert.pm +++ b/perllib/FixMyStreet/App/Controller/Alert.pm @@ -505,6 +505,8 @@ sub setup_request : Private { $c->stash->{rznvy} ||= $c->user->email; } + $c->stash->{template} = 'alert/list-ajax.html' if $c->req->param('ajax'); + return 1; } diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm index 148a22368..e110cf8d7 100644 --- a/perllib/FixMyStreet/App/Controller/Around.pm +++ b/perllib/FixMyStreet/App/Controller/Around.pm @@ -189,7 +189,7 @@ sub display_location : Private { { latitude => $p->latitude, longitude => $p->longitude, - colour => $p->is_fixed ? 'green' : 'red', + colour => 'yellow', # $p->is_fixed ? 'green' : 'red', id => $p->id, title => $p->title, } @@ -258,12 +258,11 @@ sub ajax : Path('/ajax') { FixMyStreet::Map::map_pins( $c, $interval ); # render templates to get the html - my $on_map_list_html = - $c->view('Web') - ->render( $c, 'around/on_map_list_items.html', { on_map => $on_map } ); - - my $around_map_list_html = $c->view('Web')->render( - $c, + my $on_map_list_html = $c->render_fragment( + 'around/on_map_list_items.html', + { on_map => $on_map } + ); + my $around_map_list_html = $c->render_fragment( 'around/around_map_list_items.html', { around_map => $around_map, dist => $dist } ); diff --git a/perllib/FixMyStreet/App/Controller/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm index fe1494b95..34e2b7cd3 100644 --- a/perllib/FixMyStreet/App/Controller/Open311.pm +++ b/perllib/FixMyStreet/App/Controller/Open311.pm @@ -283,7 +283,7 @@ sub output_requests : Private { my $display_photos = $c->cobrand->allow_photo_display; if ($display_photos && $problem->photo) { my $url = $c->cobrand->base_url(); - my $imgurl = $url . "/photo?id=$id"; + my $imgurl = $url . "/photo/$id.full.jpeg"; $request->{'media_url'} = [ $imgurl ]; } push(@problemlist, $request); diff --git a/perllib/FixMyStreet/App/Controller/Photo.pm b/perllib/FixMyStreet/App/Controller/Photo.pm index 27dd6f184..8711b19e9 100644 --- a/perllib/FixMyStreet/App/Controller/Photo.pm +++ b/perllib/FixMyStreet/App/Controller/Photo.pm @@ -5,6 +5,7 @@ use namespace::autoclean; BEGIN {extends 'Catalyst::Controller'; } use DateTime::Format::HTTP; +use Path::Class; =head1 NAME @@ -25,17 +26,30 @@ Display a photo =cut -sub index :Path :Args(0) { +sub during :LocalRegex('^([0-9a-f]{40})\.temp\.jpeg$') { my ( $self, $c ) = @_; + my ( $hash ) = @{ $c->req->captures }; - my $id = $c->req->param('id'); - my $comment = $c->req->param('c'); - $c->detach( 'no_photo' ) unless $id || $comment; + my $file = file( $c->config->{UPLOAD_DIR}, "$hash.jpeg" ); + my $photo = $file->slurp; + + if ( $c->cobrand->default_photo_resize ) { + $photo = _shrink( $photo, $c->cobrand->default_photo_resize ); + } else { + $photo = _shrink( $photo, 'x250' ); + } + + $c->forward( 'output', [ $photo ] ); +} + +sub index :LocalRegex('^(c/)?(\d+)(?:\.(full|tn|fp))?\.jpeg$') { + my ( $self, $c ) = @_; + my ( $is_update, $id, $size ) = @{ $c->req->captures }; my @photo; - if ( $comment ) { + if ( $is_update ) { @photo = $c->model('DB::Comment')->search( { - id => $comment, + id => $id, state => 'confirmed', photo => { '!=', undef }, } ); @@ -56,12 +70,30 @@ sub index :Path :Args(0) { $c->detach( 'no_photo' ) unless @photo; my $photo = $photo[0]->photo; - if ( $c->req->param('tn' ) ) { - $photo = _resize( $photo, 'x100' ); + + # If photo field contains a hash + if (length($photo) == 40) { + my $file = file( $c->config->{UPLOAD_DIR}, "$photo.jpeg" ); + $photo = $file->slurp; + } + + if ( $size eq 'tn' ) { + $photo = _shrink( $photo, 'x100' ); + } elsif ( $size eq 'fp' ) { + $photo = _crop( $photo ); + } elsif ( $size eq 'full' ) { } elsif ( $c->cobrand->default_photo_resize ) { - $photo = _resize( $photo, $c->cobrand->default_photo_resize ); + $photo = _shrink( $photo, $c->cobrand->default_photo_resize ); + } else { + $photo = _shrink( $photo, 'x250' ); } + $c->forward( 'output', [ $photo ] ); +} + +sub output : Private { + my ( $self, $c, $photo ) = @_; + my $dt = DateTime->now()->add( years => 1 ); $c->res->content_type( 'image/jpeg' ); @@ -74,7 +106,8 @@ sub no_photo : Private { $c->detach( '/page_error_404_not_found', [ 'No photo' ] ); } -sub _resize { +# Shrinks a picture to the specified size, but keeping in proportion. +sub _shrink { my ($photo, $size) = @_; use Image::Magick; my $image = Image::Magick->new; @@ -86,6 +119,21 @@ sub _resize { return $blobs[0]; } +# Shrinks a picture to 90x60, cropping so that it is exactly that. +sub _crop { + my ($photo) = @_; + use Image::Magick; + my $image = Image::Magick->new; + $image->BlobToImage($photo); + my $err = $image->Resize( geometry => "90x60^" ); + throw Error::Simple("resize failed: $err") if "$err"; + $err = $image->Extent( geometry => '90x60', gravity => 'Center' ); + throw Error::Simple("resize failed: $err") if "$err"; + my @blobs = $image->ImageToBlob(); + undef $image; + return $blobs[0]; +} + =head1 AUTHOR Struan Donald diff --git a/perllib/FixMyStreet/App/Controller/Questionnaire.pm b/perllib/FixMyStreet/App/Controller/Questionnaire.pm index f0cb02115..6ed7ddd9d 100755 --- a/perllib/FixMyStreet/App/Controller/Questionnaire.pm +++ b/perllib/FixMyStreet/App/Controller/Questionnaire.pm @@ -205,10 +205,7 @@ sub submit_standard : Private { } ); if ( my $fileid = $c->stash->{upload_fileid} ) { - my $file = file( $c->config->{UPLOAD_CACHE}, "$fileid.jpg" ); - my $blob = $file->slurp; - $file->remove; - $update->photo($blob); + $update->photo( $fileid ); } $update->insert; } diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index 166f9d58e..59e3a4410 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -127,7 +127,8 @@ sub generate_map_tags : Private { ? [ { latitude => $problem->latitude, longitude => $problem->longitude, - colour => 'blue', + colour => 'yellow', + type => 'big', } ] : [], ); diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 1e5825460..8d249b899 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -5,6 +5,7 @@ use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } use FixMyStreet::Geocode; +use Digest::SHA1 qw(sha1_hex); use Encode; use Image::Magick; use List::MoreUtils qw(uniq); @@ -23,7 +24,7 @@ FixMyStreet::App::Controller::Report::New =head1 DESCRIPTION -Create a new report, or complete a partial one . +Create a new report, or complete a partial one. =head1 PARAMETERS @@ -47,7 +48,10 @@ back into lat/lng by the map code. =head2 image related -Parameters are 'photo' or 'upload_fileid'. The 'photo' is used when a user has selected a file. Once it has been uploaded it is cached on disk so that if there are errors on the form it need not be uploaded again. The cache location is stored in 'upload_fileid'. +Parameters are 'photo' or 'upload_fileid'. The 'photo' is used when a user has +selected a file. Once it has been uploaded it is cached on disk so that if +there are errors on the form it need not be uploaded again. The hash of the +photo is stored in 'upload_fileid'. =head2 optional @@ -112,8 +116,8 @@ sub report_form_ajax : Path('ajax') : Args(0) { $c->forward('setup_categories_and_councils'); # render templates to get the html - my $category = $c->view('Web')->render( $c, 'report/new/category.html'); - my $councils_text = $c->view('Web')->render( $c, 'report/new/councils_text.html'); + my $category = $c->render_fragment( 'report/new/category.html'); + my $councils_text = $c->render_fragment( 'report/new/councils_text.html'); my $has_open311 = keys %{ $c->stash->{category_extras} }; my $body = JSON->new->utf8(1)->encode( @@ -150,7 +154,7 @@ sub category_extras_ajax : Path('category_extras') : Args(0) { $c->stash->{report} = { category => $c->req->param('category') }; $c->stash->{category_extras} = { $c->req->param('category' ) => $c->stash->{category_extras}->{ $c->req->param('category') } }; - $category_extra= $c->view('Web')->render( $c, 'report/new/category_extras.html'); + $category_extra= $c->render_fragment( 'report/new/category_extras.html'); } my $body = JSON->new->utf8(1)->encode( @@ -200,8 +204,8 @@ sub report_import : Path('/import') { } # handle the photo upload - $c->forward( 'process_photo_upload', [ { rotate_photo => 1 } ] ); - my $photo = $c->stash->{upload_fileid}; + $c->forward( 'process_photo_upload' ); + my $fileid = $c->stash->{upload_fileid}; if ( my $error = $c->stash->{photo_error} ) { push @errors, $error; } @@ -224,7 +228,7 @@ sub report_import : Path('/import') { if $@; } - unless ( $photo || ( $latitude || $longitude ) ) { + unless ( $fileid || ( $latitude || $longitude ) ) { push @errors, 'Either a location or a photo must be provided.'; } @@ -292,11 +296,8 @@ sub report_import : Path('/import') { ); # If there was a photo add that too - if ( $photo ) { - my $file = file( $c->config->{UPLOAD_CACHE}, "$photo.jpg" ); - my $blob = $file->slurp; - $file->remove; - $report->photo($blob); + if ( $fileid ) { + $report->photo($fileid); } # save the report; @@ -647,7 +648,7 @@ sub process_user : Private { # The user is trying to sign in. We only care about email from the params. if ( $c->req->param('submit_sign_in') || $c->req->param('password_sign_in') ) { unless ( $c->forward( '/auth/sign_in' ) ) { - $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet – please fill in the right hand side of this form to get one.'); + $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.'); return 1; } my $user = $c->user->obj; @@ -825,11 +826,7 @@ sub process_photo : Private { } sub process_photo_upload : Private { - my ( $self, $c, $args ) = @_; - - # setup args and set defaults - $args ||= {}; - $args->{rotate_photo} ||= 0; + my ( $self, $c ) = @_; # check for upload or return my $upload = $c->req->upload('photo') @@ -842,9 +839,13 @@ sub process_photo_upload : Private { return; } - # convert the photo into a blob (also resize etc) - my $photo_blob = - eval { _process_photo( $upload->fh, $args->{rotate_photo} ) }; + # get the photo into a variable + my $photo_blob = eval { + my $filename = $upload->tempname; + my $out = `jhead -se -autorot $filename`; + my $photo = $upload->slurp; + return $photo; + }; if ( my $error = $@ ) { my $format = _( "That image doesn't appear to have uploaded correctly (%s), please try again." @@ -853,21 +854,18 @@ sub process_photo_upload : Private { return; } - # we have an image we can use - save it to the cache in case there is an - # error - my $cache_dir = dir( $c->config->{UPLOAD_CACHE} ); + # we have an image we can use - save it to the upload dir for storage + my $cache_dir = dir( $c->config->{UPLOAD_DIR} ); $cache_dir->mkpath; unless ( -d $cache_dir && -w $cache_dir ) { warn "Can't find/write to photo cache directory '$cache_dir'"; return; } - # create a random name and store the file there - my $fileid = int rand 1_000_000_000; - my $file = $cache_dir->file("$fileid.jpg"); - $file->openw->print($photo_blob); + my $fileid = sha1_hex($photo_blob); + $upload->copy_to( file($cache_dir, $fileid . '.jpeg') ); - # stick the random number on the stash + # stick the hash on the stash, so don't have to reupload in case of error $c->stash->{upload_fileid} = $fileid; return 1; @@ -883,12 +881,12 @@ does return true and put fileid on stash, otherwise false. sub process_photo_cache : Private { my ( $self, $c ) = @_; - # get the fileid and make sure it is just a number + # get the fileid and make sure it is just a hex number my $fileid = $c->req->param('upload_fileid') || ''; - $fileid =~ s{\D+}{}g; + $fileid =~ s{[^0-9a-f]}{}gi; return unless $fileid; - my $file = file( $c->config->{UPLOAD_CACHE}, "$fileid.jpg" ); + my $file = file( $c->config->{UPLOAD_DIR}, "$fileid.jpeg" ); return unless -e $file; $c->stash->{upload_fileid} = $fileid; @@ -980,10 +978,7 @@ sub save_user_and_report : Private { # If there was a photo add that too if ( my $fileid = $c->stash->{upload_fileid} ) { - my $file = file( $c->config->{UPLOAD_CACHE}, "$fileid.jpg" ); - my $blob = $file->slurp; - $file->remove; - $report->photo($blob); + $report->photo($fileid); } # Set a default if possible @@ -1031,7 +1026,7 @@ sub generate_map : Private { pins => [ { latitude => $latitude, longitude => $longitude, - colour => 'purple', + colour => 'green', # 'yellow', } ], ); } @@ -1123,41 +1118,6 @@ sub redirect_to_around : Private { return $c->res->redirect($around_uri); } -sub _process_photo { - my $fh = shift; - my $import = shift; - - my $blob = join('', <$fh>); - close $fh; - my ($handle, $filename) = mySociety::TempFiles::named_tempfile('.jpeg'); - print $handle $blob; - close $handle; - - my $photo = Image::Magick->new; - my $err = $photo->Read($filename); - unlink $filename; - throw Error::Simple("read failed: $err") if "$err"; - $err = $photo->Scale(geometry => "250x250>"); - throw Error::Simple("resize failed: $err") if "$err"; - my @blobs = $photo->ImageToBlob(); - undef $photo; - $photo = $blobs[0]; - return $photo unless $import; # Only check orientation for iPhone imports at present - - # Now check if it needs orientating - ($fh, $filename) = mySociety::TempFiles::named_tempfile('.jpeg'); - print $fh $photo; - close $fh; - my $out = `jhead -se -autorot $filename`; - if ($out) { - open(FP, $filename) or throw Error::Simple($!); - $photo = join('', <FP>); - close FP; - } - unlink $filename; - return $photo; -} - __PACKAGE__->meta->make_immutable; 1; diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 29933e2f6..15444f556 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -122,7 +122,7 @@ sub process_user : Private { # The user is trying to sign in. We only care about email from the params. if ( $c->req->param('submit_sign_in') || $c->req->param('password_sign_in') ) { unless ( $c->forward( '/auth/sign_in', [ $email ] ) ) { - $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet – please fill in the right hand side of this form to get one.'); + $c->stash->{field_errors}->{password} = _('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.'); return 1; } my $user = $c->user->obj; @@ -282,10 +282,7 @@ sub save_update : Private { # If there was a photo add that too if ( my $fileid = $c->stash->{upload_fileid} ) { - my $file = file( $c->config->{UPLOAD_CACHE}, "$fileid.jpg" ); - my $blob = $file->slurp; - $file->remove; - $update->photo($blob); + $update->photo($fileid); } if ( $update->in_storage ) { diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm index 68dbd6359..e7620f755 100644 --- a/perllib/FixMyStreet/App/Controller/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Reports.pm @@ -102,7 +102,6 @@ sub ward : Path : Args(2) { $c->forward( 'load_parent' ); $c->forward( 'check_canonical_url', [ $council ] ); $c->forward( 'load_and_group_problems' ); - $c->forward( 'sort_problems' ); my $council_short = $c->cobrand->short_name( $c->stash->{council}, $c->stash->{areas_info} ); $c->stash->{rss_url} = '/rss/reports/' . $council_short; @@ -344,6 +343,8 @@ sub load_and_group_problems : Private { 'id', 'council', 'state', 'areas', 'latitude', 'longitude', 'title', 'cobrand', { duration => { extract => "epoch from current_timestamp-lastupdate" } }, { age => { extract => "epoch from current_timestamp-confirmed" } }, + { confirmed => { extract => 'epoch from confirmed' } }, + { photo => 'photo is not null' }, ], order_by => { -desc => 'lastupdate' }, rows => 100, @@ -352,9 +353,9 @@ sub load_and_group_problems : Private { $c->stash->{pager} = $problems->pager; $problems = $problems->cursor; # Raw DB cursor for speed - my ( %fixed, %open, @pins ); + my ( %problems, @pins ); my $re_councils = join('|', keys %{$c->stash->{areas_info}}); - my @cols = ( 'id', 'council', 'state', 'areas', 'latitude', 'longitude', 'title', 'cobrand', 'duration', 'age' ); + my @cols = ( 'id', 'council', 'state', 'areas', 'latitude', 'longitude', 'title', 'cobrand', 'duration', 'age', 'confirmed', 'photo' ); while ( my @problem = $problems->next ) { my %problem = zip @cols, @problem; $c->log->debug( $problem{'cobrand'} . ', cobrand is ' . $c->cobrand->moniker ); @@ -362,7 +363,7 @@ sub load_and_group_problems : Private { # Problem was not sent to any council, add to possible councils $problem{councils} = 0; while ($problem{areas} =~ /,($re_councils)(?=,)/g) { - add_row( \%problem, $1, \%fixed, \%open, \@pins ); + add_row( \%problem, $1, \%problems, \@pins ); } } else { # Add to councils it was sent to @@ -371,37 +372,19 @@ sub load_and_group_problems : Private { $problem{councils} = scalar @council; foreach ( @council ) { next if $c->stash->{council} && $_ != $c->stash->{council}->{id}; - add_row( \%problem, $_, \%fixed, \%open, \@pins ); + add_row( \%problem, $_, \%problems, \@pins ); } } } $c->stash( - fixed => \%fixed, - open => \%open, + problems => \%problems, pins => \@pins, ); return 1; } -sub sort_problems : Private { - my ( $self, $c ) = @_; - - my $id = $c->stash->{council}->{id}; - my $fixed = $c->stash->{fixed}; - my $open = $c->stash->{open}; - - foreach (qw/new old/) { - $c->stash->{fixed}{$id}{$_} = [ sort { $a->{duration} <=> $b->{duration} } @{$fixed->{$id}{$_}} ] - if $fixed->{$id}{$_}; - } - foreach (qw/new older unknown/) { - $c->stash->{open}{$id}{$_} = [ sort { $a->{age} <=> $b->{age} } @{$open->{$id}{$_}} ] - if $open->{$id}{$_}; - } -} - sub redirect_index : Private { my ( $self, $c ) = @_; my $url = '/reports'; @@ -419,24 +402,13 @@ sub redirect_area : Private { $c->res->redirect( $c->uri_for($url) ); } -my $fourweeks = 4*7*24*60*60; sub add_row { - my ( $problem, $council, $fixed, $open, $pins ) = @_; - my $duration_str = ( $problem->{duration} > 2 * $fourweeks ) ? 'old' : 'new'; - my $type = ( $problem->{duration} > 2 * $fourweeks ) - ? 'unknown' - : ($problem->{age} > $fourweeks ? 'older' : 'new'); - # Fixed problems are either old or new - push @{$fixed->{$council}{$duration_str}}, $problem if - exists FixMyStreet::DB::Result::Problem->fixed_states()->{$problem->{state}}; - # Open problems are either unknown, older, or new - push @{$open->{$council}{$type}}, $problem if - exists FixMyStreet::DB::Result::Problem->open_states->{$problem->{state}}; - + my ( $problem, $council, $problems, $pins ) = @_; + push @{$problems->{$council}}, $problem; push @$pins, { latitude => $problem->{latitude}, longitude => $problem->{longitude}, - colour => FixMyStreet::DB::Result::Problem->fixed_states()->{$problem->{state}} ? 'green' : 'red', + colour => 'yellow', # FixMyStreet::DB::Result::Problem->fixed_states()->{$problem->{state}} ? 'green' : 'red', id => $problem->{id}, title => $problem->{title}, }; diff --git a/perllib/FixMyStreet/App/Controller/Rss.pm b/perllib/FixMyStreet/App/Controller/Rss.pm index 822780b81..4d0b6cb93 100755 --- a/perllib/FixMyStreet/App/Controller/Rss.pm +++ b/perllib/FixMyStreet/App/Controller/Rss.pm @@ -267,8 +267,8 @@ sub add_row : Private { $item{category} = $row->{category} if $row->{category}; if ($c->cobrand->allow_photo_display && $row->{photo}) { - my $key = $alert_type->item_table eq 'comment' ? 'c' : 'id'; - $item{description} .= ent("\n<br><img src=\"". $c->cobrand->base_url . "/photo?$key=$row->{id}\">"); + my $key = $alert_type->item_table eq 'comment' ? 'c/' : ''; + $item{description} .= ent("\n<br><img src=\"". $c->cobrand->base_url . "/photo/$key$row->{id}.jpeg\">"); } if ( $row->{used_map} ) { diff --git a/perllib/FixMyStreet/App/Controller/Static.pm b/perllib/FixMyStreet/App/Controller/Static.pm index 2e6bda28c..52b230c27 100755 --- a/perllib/FixMyStreet/App/Controller/Static.pm +++ b/perllib/FixMyStreet/App/Controller/Static.pm @@ -22,6 +22,13 @@ sub about : Global : Args(0) { # don't need to do anything here - should just pass through. } +sub for_councils : Path('/for-councils') : Args(0) { + my ( $self, $c ) = @_; +} +sub for_councils_faq : Path('/for-councils/faq') : Args(0) { + my ( $self, $c ) = @_; +} + sub faq : Global : Args(0) { my ( $self, $c ) = @_; diff --git a/perllib/FixMyStreet/Cobrand/Base.pm b/perllib/FixMyStreet/Cobrand/Base.pm index 42a891cb4..fada33b78 100644 --- a/perllib/FixMyStreet/Cobrand/Base.pm +++ b/perllib/FixMyStreet/Cobrand/Base.pm @@ -62,7 +62,7 @@ Returns the path to the templates for this cobrand - by default sub path_to_web_templates { my $self = shift; - return FixMyStreet->path_to( 'templates/web', $self->moniker ); + return [ FixMyStreet->path_to( 'templates/web', $self->moniker )->stringify ]; } 1; diff --git a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm index 37fa7a16d..97b4c3c8b 100644 --- a/perllib/FixMyStreet/Cobrand/FixMyStreet.pm +++ b/perllib/FixMyStreet/Cobrand/FixMyStreet.pm @@ -6,5 +6,31 @@ sub restriction { return {}; } +sub generate_problem_banner { + my ( $self, $problem ) = @_; + + my $banner = {}; + if ( $problem->is_open && time() - $problem->lastupdate_local->epoch > 8 * 7 * 24 * 60 * 60 ) + { + $banner->{id} = 'unknown'; + $banner->{text} = _('Unknown'); + } + if ($problem->is_fixed) { + $banner->{id} = 'fixed'; + $banner->{text} = _('Fixed'); + } + if ($problem->is_closed) { + $banner->{id} = 'closed'; + $banner->{text} = _('Closed'); + } + + if ( grep { $problem->state eq $_ } ( 'investigating', 'in progress', 'planned' ) ) { + $banner->{id} = 'progress'; + $banner->{text} = _('In progress'); + } + + return $banner; +} + 1; diff --git a/perllib/FixMyStreet/Cobrand/UKCouncils.pm b/perllib/FixMyStreet/Cobrand/UKCouncils.pm index 589abd178..b40f13d9d 100644 --- a/perllib/FixMyStreet/Cobrand/UKCouncils.pm +++ b/perllib/FixMyStreet/Cobrand/UKCouncils.pm @@ -1,5 +1,5 @@ package FixMyStreet::Cobrand::UKCouncils; -use base 'FixMyStreet::Cobrand::FixMyStreet'; +use base 'FixMyStreet::Cobrand::Default'; use strict; use warnings; diff --git a/perllib/FixMyStreet/DB/Result/Comment.pm b/perllib/FixMyStreet/DB/Result/Comment.pm index 958194eb8..195fe4019 100644 --- a/perllib/FixMyStreet/DB/Result/Comment.pm +++ b/perllib/FixMyStreet/DB/Result/Comment.pm @@ -132,21 +132,12 @@ sub confirm { =head2 get_photo_params Returns a hashref of details of any attached photo for use in templates. -Hashref contains height, width and url keys. =cut sub get_photo_params { my $self = shift; - - return {} unless $self->photo; - - my $photo = {}; - ( $photo->{width}, $photo->{height} ) = - Image::Size::imgsize( \$self->photo ); - $photo->{url} = '/photo?c=' . $self->id; - - return $photo; + return FixMyStreet::App::get_photo_params($self, 'c'); } =head2 meta_problem_state diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm index 7ceabf1da..ce7488703 100644 --- a/perllib/FixMyStreet/DB/Result/Problem.pm +++ b/perllib/FixMyStreet/DB/Result/Problem.pm @@ -329,7 +329,7 @@ sub check_for_errors { || $self->name =~ m/\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i ) { $errors{name} = _( -'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box' +'Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below' ); } @@ -400,21 +400,12 @@ sub url { =head2 get_photo_params Returns a hashref of details of any attached photo for use in templates. -Hashref contains height, width and url keys. =cut sub get_photo_params { my $self = shift; - - return {} unless $self->photo; - - my $photo = {}; - ( $photo->{width}, $photo->{height} ) = - Image::Size::imgsize( \$self->photo ); - $photo->{url} = '/photo?id=' . $self->id; - - return $photo; + return FixMyStreet::App::get_photo_params($self, 'id'); } =head2 is_open diff --git a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm index 04089096e..83fc85a88 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Nearby.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Nearby.pm @@ -24,7 +24,7 @@ sub nearby { columns => [ 'problem.id', 'problem.title', 'problem.latitude', 'problem.longitude', 'distance', 'problem.state', - 'problem.confirmed' + 'problem.confirmed', { 'problem.photo' => 'problem.photo is not null' }, ], bind => [ $mid_lat, $mid_lon, $dist ], order_by => [ 'distance', { -desc => 'created' } ], diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm index 59227fce8..3557e77c7 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm @@ -62,39 +62,36 @@ sub recent_new { sub recent { my ( $rs ) = @_; - my $key = "recent:$site_key"; - my $result = Memcached::get($key); - if ( $result ) { - # Need to reattach schema so that confirmed column gets reinflated. - $result->[0]->result_source->schema( $rs->result_source->schema ) if $result->[0]; - } else { - $result = [ $rs->search( { - state => [ FixMyStreet::DB::Result::Problem->visible_states() ] - }, { - columns => [ 'id', 'title', 'confirmed' ], - order_by => { -desc => 'confirmed' }, - rows => 5, - } )->all ]; - Memcached::set($key, $result, 3600); - } - return $result; + return _recent( $rs, 5 ); } sub recent_photos { my ( $rs, $num, $lat, $lon, $dist ) = @_; - my $probs; + return _recent( $rs, $num, $lat, $lon, $dist, 1); +} + +sub _recent { + my ( $rs, $num, $lat, $lon, $dist, $photos ) = @_; + + my $key = $photos ? 'recent_photos' : 'recent'; + $key .= ":$site_key:$num"; + my $query = { state => [ FixMyStreet::DB::Result::Problem->visible_states() ], - photo => { '!=', undef }, }; + $query->{photo} = { '!=', undef } if $photos; + my $attrs = { - columns => [ 'id', 'title' ], + columns => [ 'id', 'title', 'confirmed' ], order_by => { -desc => 'confirmed' }, rows => $num, }; + + my $probs; + my $new = 0; if (defined $lat) { my $dist2 = $dist; # Create a copy of the variable to stop it being stringified into a locale in the next line! - my $key = "recent_photos:$site_key:$num:$lat:$lon:$dist2"; + $key .= ":$lat:$lon:$dist2"; $probs = Memcached::get($key); unless ($probs) { $attrs->{bind} = [ $lat, $lon, $dist ]; @@ -102,16 +99,23 @@ sub recent_photos { $probs = [ mySociety::Locale::in_gb_locale { $rs->search( $query, $attrs )->all; } ]; - Memcached::set($key, $probs, 3600); + $new = 1; } } else { - my $key = "recent_photos:$site_key:$num"; $probs = Memcached::get($key); unless ($probs) { $probs = [ $rs->search( $query, $attrs )->all ]; - Memcached::set($key, $probs, 3600); + $new = 1; } } + + if ( $new ) { + Memcached::set($key, $probs, 3600); + } else { + # Need to reattach schema so that confirmed column gets reinflated. + $probs->[0]->result_source->schema( $rs->result_source->schema ) if $probs->[0]; + } + return $probs; } @@ -122,7 +126,8 @@ sub around_map { my $attr = { order_by => { -desc => 'created' }, columns => [ - 'id', 'title' ,'latitude', 'longitude', 'state', 'confirmed' + 'id', 'title', 'latitude', 'longitude', 'state', 'confirmed', + { photo => 'photo is not null' }, ], }; $attr->{rows} = $limit if $limit; diff --git a/perllib/FixMyStreet/Map.pm b/perllib/FixMyStreet/Map.pm index 2bccf1584..08bba3285 100644 --- a/perllib/FixMyStreet/Map.pm +++ b/perllib/FixMyStreet/Map.pm @@ -95,8 +95,10 @@ sub _map_features { my $around_limit = $c->cobrand->on_map_list_limit || undef; my @around_args = ( $min_lat, $max_lat, $min_lon, $max_lon, $interval ); - my $around_map_list = $c->cobrand->problems->around_map( @around_args, $around_limit ); my $around_map = $c->cobrand->problems->around_map( @around_args, undef ); + my $around_map_list = $around_limit + ? $c->cobrand->problems->around_map( @around_args, $around_limit ) + : $around_map; my $dist; mySociety::Locale::in_gb_locale { diff --git a/perllib/FixMyStreet/Map/OSM.pm b/perllib/FixMyStreet/Map/OSM.pm index be185c35c..8ca5949d8 100644 --- a/perllib/FixMyStreet/Map/OSM.pm +++ b/perllib/FixMyStreet/Map/OSM.pm @@ -116,7 +116,10 @@ sub map_pins { # id => $p->id, # title => $p->title, #} - [ $p->latitude, $p->longitude, $p->is_fixed ? 'green' : 'red', $p->id, $p->title ] + [ $p->latitude, $p->longitude, + 'yellow', # $p->is_fixed ? 'green' : 'red', + $p->id, $p->title + ] } @$around_map, @$nearby; return (\@pins, $around_map_list, $nearby, $dist); diff --git a/perllib/FixMyStreet/TestMech.pm b/perllib/FixMyStreet/TestMech.pm index 185b59daa..a8cbc98f2 100644 --- a/perllib/FixMyStreet/TestMech.pm +++ b/perllib/FixMyStreet/TestMech.pm @@ -224,6 +224,7 @@ sub form_errors { my $mech = shift; my $result = scraper { process 'div.form-error', 'errors[]', 'TEXT'; + process 'p.form-error', 'errors[]', 'TEXT'; } ->scrape( $mech->response ); return $result->{errors} || []; @@ -365,6 +366,7 @@ sub extract_problem_banner { my $result = scraper { process 'div#side > p.banner', id => '@id', text => 'TEXT'; + process 'div.banner > p', id => '@id', text => 'TEXT'; } ->scrape( $mech->response ); diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t index d6bff240c..934bf0346 100644 --- a/t/app/controller/report_import.t +++ b/t/app/controller/report_import.t @@ -128,7 +128,7 @@ subtest "Submit a correct entry" => sub { "check imported fields are shown"; # Check photo present, and still there after map submission (testing bug #18) - $mech->content_contains( '<img align="right" src="/photo?id' ); + $mech->content_contains( '<img align="right" src="/photo/' ); $mech->content_contains('latitude" value="51.50101"', 'Check latitude'); $mech->content_contains('longitude" value="-0.141587"', 'Check longitude'); $mech->submit_form_ok( @@ -139,7 +139,7 @@ subtest "Submit a correct entry" => sub { }, "New map location" ); - $mech->content_contains( '<img align="right" src="/photo?id' ); + $mech->content_contains( '<img align="right" src="/photo/' ); $mech->content_contains('latitude" value="51.50519"', 'Check latitude'); $mech->content_contains('longitude" value="-0.142608"', 'Check longitude'); diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 076813868..625c7531f 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -191,7 +191,7 @@ foreach my $test ( changes => {}, errors => [ 'Please enter your email', -'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', +'Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below', ], }, { @@ -213,7 +213,7 @@ foreach my $test ( changes => {}, errors => [ 'Please enter your email', -'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', +'Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below', ], }, { @@ -360,7 +360,7 @@ foreach my $test ( "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'skip this step', }, + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); $mech->submit_form_ok( @@ -473,7 +473,7 @@ subtest "test password errors for a user who is signing in as they report" => su "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'skip this step', }, + $mech->follow_link_ok( { text => 'Skip this step', }, "follow 'skip this step' link" ); $mech->submit_form_ok( @@ -493,7 +493,7 @@ subtest "test password errors for a user who is signing in as they report" => su # check that we got the errors expected is_deeply $mech->form_errors, [ - 'There was a problem with your email/password combination. Passwords and user accounts are a brand new service, so you probably do not have one yet – please fill in the right hand side of this form to get one.' + "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the \x{2018}sign in by email\x{2019} section of the form.", ], "check there were errors"; }; @@ -520,7 +520,7 @@ subtest "test report creation for a user who is signing in as they report" => su "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'skip this step', }, + $mech->follow_link_ok( { text => 'Skip this step', }, "follow 'skip this step' link" ); $mech->submit_form_ok( @@ -614,7 +614,7 @@ foreach my $test ( "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'skip this step', }, + $mech->follow_link_ok( { text => 'Skip this step', }, "follow 'skip this step' link" ); # check that the fields are correctly prefilled diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index 39cb5d6d8..9c2b0861b 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -604,7 +604,7 @@ for my $test ( password_sign_in => 'secret', }, field_errors => [ - "There was a problem with your email/password combination. Passwords and user accounts are a brand new service, so you probably do not have one yet \x{2013} please fill in the right hand side of this form to get one.", + "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the \x{2018}sign in by email\x{2019} section of the form.", 'Please enter your name', # FIXME Not really necessary error ], }, @@ -826,7 +826,7 @@ for my $test ( update => 'Update from a registered user' }, initial_banner => undef, - endstate_banner => ' This problem has been fixed. ', + endstate_banner => 'Fixed', alert => 1, anonymous => 0, }, @@ -848,8 +848,8 @@ for my $test ( changed => { update => 'Another update from a registered user' }, - initial_banner => ' This problem has been fixed. ', - endstate_banner => ' This problem has been fixed. ', + initial_banner => 'Fixed', + endstate_banner => 'Fixed', alert => 0, anonymous => 0, }, @@ -953,7 +953,7 @@ foreach my $test ( fixed => 1, }, changed => { update => 'Update from owner' }, - initial_banner => ' This problem is in progress. ', + initial_banner => 'In progress', initial_state => 'in progress', alert => 1, # we signed up for alerts before, do not unsign us anonymous => 0, diff --git a/t/app/model/problem.t b/t/app/model/problem.t index ad42c5fdf..638e89200 100644 --- a/t/app/model/problem.t +++ b/t/app/model/problem.t @@ -56,7 +56,7 @@ for my $test ( title => 'Please enter a subject', detail => 'Please enter some details', council => 'No council selected', - name => 'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', + name => 'Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below', } }, { @@ -68,7 +68,7 @@ for my $test ( title => 'Please enter a subject', detail => 'Please enter some details', council => 'No council selected', - name => 'Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box', + name => 'Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below', } }, { diff --git a/t/map/tilma/original.t b/t/map/tilma/original.t index 3add7719e..04c4d578c 100644 --- a/t/map/tilma/original.t +++ b/t/map/tilma/original.t @@ -56,31 +56,31 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( for my $test ( { state => 'fixed', - colour => 'green', + colour => 'yellow', }, { state => 'fixed - user', - colour => 'green', + colour => 'yellow', }, { state => 'fixed - council', - colour => 'green', + colour => 'yellow', }, { state => 'confirmed', - colour => 'red', + colour => 'yellow', }, { state => 'investigating', - colour => 'red', + colour => 'yellow', }, { state => 'planned', - colour => 'red', + colour => 'yellow', }, { state => 'in progress', - colour => 'red', + colour => 'yellow', }, ) { subtest "pin colour for state $test->{state}" => sub { diff --git a/templates/email/default/submit-brent.txt b/templates/email/default/submit-brent.txt index fcddcc8f1..4b3e20968 100644 --- a/templates/email/default/submit-brent.txt +++ b/templates/email/default/submit-brent.txt @@ -40,6 +40,5 @@ also welcome any other feedback you may have. FixMyStreet is now available for full integration into council websites, making life easier for both you and your residents. -Read more here: -http://www.mysociety.org/fixmystreet-for-local-council-websites/ +Read more here: http://www.fixmystreet.com/for-councils diff --git a/templates/email/default/submit-example.txt b/templates/email/default/submit-example.txt index 61850cafa..6d1815cd1 100644 --- a/templates/email/default/submit-example.txt +++ b/templates/email/default/submit-example.txt @@ -57,6 +57,5 @@ feedback you may have. FixMyStreet is now available for full integration into council websites, making life easier for both you and your residents. -Read more here: -http://www.mysociety.org/fixmystreet-for-local-council-websites/ +Read more here: http://www.fixmystreet.com/for-councils diff --git a/templates/email/default/submit.txt b/templates/email/default/submit.txt index 2542e786b..20fa17096 100644 --- a/templates/email/default/submit.txt +++ b/templates/email/default/submit.txt @@ -40,6 +40,5 @@ also welcome any other feedback you may have. FixMyStreet is now available for full integration into council websites, making life easier for both you and your residents. -Read more here: -http://www.mysociety.org/fixmystreet-for-local-council-websites/ +Read more here: http://www.fixmystreet.com/for-councils diff --git a/templates/web/default/alert/index.html b/templates/web/default/alert/index.html index d8478cf98..274d61780 100644 --- a/templates/web/default/alert/index.html +++ b/templates/web/default/alert/index.html @@ -30,7 +30,7 @@ postcode or street name and area:' ) %] <h2>[% loc('Some photos of recent reports') %]</h2> [% FOREACH p IN photos %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo?tn=1;id=[% p.id %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </div> [% END %] diff --git a/templates/web/default/alert/list.html b/templates/web/default/alert/list.html index c763331cc..9f2bd69d0 100644 --- a/templates/web/default/alert/list.html +++ b/templates/web/default/alert/list.html @@ -27,7 +27,7 @@ <h2>[% loc('Photos of recent nearby reports') %]</h2> [% FOREACH p IN photos %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo?tn=1;id=[% p.id %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </div> [% END %] diff --git a/templates/web/default/around/around_index.html b/templates/web/default/around/around_index.html index c07eb2ca2..012354f4a 100644 --- a/templates/web/default/around/around_index.html +++ b/templates/web/default/around/around_index.html @@ -39,7 +39,7 @@ [% IF partial_token %] <p style="margin-top: 0; color: #cc0000;"> - <img align="right" src="/photo?id=[% report.id %]" hspace="5"> + <img align="right" src="/photo/[% report.id %].jpeg" hspace="5"> [% loc("Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box below :") %] </p> [% END %] diff --git a/templates/web/default/around/display_location.html b/templates/web/default/around/display_location.html index b5705a77b..27f54f346 100755 --- a/templates/web/default/around/display_location.html +++ b/templates/web/default/around/display_location.html @@ -55,9 +55,9 @@ [% IF c.cobrand.country == 'GB' || c.cobrand.country == 'NO' %] | [% IF c.req.params.all_pins %] - <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => undef } ) %]'>[% loc('Hide stale reports') %]</a> + <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => undef } ) %]'>[% loc('Hide old') %]</a> [% ELSE %] - <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => 1 } ) %]'>[% loc('Include stale reports') %]</a> + <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => 1 } ) %]'>[% loc('Show old') %]</a> [% END %] [% END %] </p> diff --git a/templates/web/default/auth/general.html b/templates/web/default/auth/general.html index 5407e56e1..c2249fa46 100644 --- a/templates/web/default/auth/general.html +++ b/templates/web/default/auth/general.html @@ -20,7 +20,7 @@ [% IF loc_email_error %] <div class="form-error">[% loc_email_error %]</div> [% ELSIF sign_in_error %] - <div class="form-error">[% loc('There was a problem with your email/password combination. Passwords and user accounts are a brand <strong>new</strong> service, so you probably do not have one yet – please fill in the right hand side of this form to get one.') %]</div> + <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.') %]</div> [% END %] <div class="form-field"> diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html index 599d3a37e..ed9d53c24 100755 --- a/templates/web/default/faq/faq-en-gb.html +++ b/templates/web/default/faq/faq-en-gb.html @@ -93,7 +93,7 @@ href="https://secure.mysociety.org/donate/">please do</a>.</dd> to find out where reports go at the moment. Also <a href="/contact">contact us</a> to update the address or addresses we use.</dd> <dt>I’m from a council, can we have FixMyStreet on our website?</dt> - <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="http://www.mysociety.org/fixmystreet-for-local-council-websites/">Full details</a>.</dd> + <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="/for-councils">Full details</a>.</dd> <dt>Do you remove silly or illegal content?</dt> <dd>FixMyStreet is not responsible for the content and accuracy of material submitted by its users. We reserve the right to edit or remove any diff --git a/templates/web/default/index.html b/templates/web/default/index.html index 06f3ef771..e5f98b0c5 100644 --- a/templates/web/default/index.html +++ b/templates/web/default/index.html @@ -63,7 +63,7 @@ <p id="front_photos"> [% FOREACH p IN recent_photos %] <a href="/report/[% p.id %]"><img border="0" height="100" - src="/photo?tn=1;id=[% p.id %]" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> [% END %] </p> [% END %] diff --git a/templates/web/default/js_validation_msgs.html b/templates/web/default/js_validation_msgs.html index 0263f75ce..f89ab4bcc 100644 --- a/templates/web/default/js_validation_msgs.html +++ b/templates/web/default/js_validation_msgs.html @@ -5,7 +5,7 @@ detail: '[% loc('Please enter some details') %]', name: { required: '[% loc('Please enter your name') %]', - validName: '[% loc('Please enter your full name, councils need this information - if you do not wish your name to be shown on the site, untick the box') %]' + validName: '[% loc('Please enter your full name, councils need this information – if you do not wish your name to be shown on the site, untick the box below') %]' }, category: '[% loc('Please choose a category') %]', rznvy: { diff --git a/templates/web/default/maps/openlayers.html b/templates/web/default/maps/openlayers.html index 1c0a32278..e815642f1 100644 --- a/templates/web/default/maps/openlayers.html +++ b/templates/web/default/maps/openlayers.html @@ -59,8 +59,8 @@ var fixmystreet = { east = c.uri_with( { lat = map.compass.east.0, lon = map.compass.east.1, zoom = map.zoom } ) west = c.uri_with( { lat = map.compass.west.0, lon = map.compass.west.1, zoom = map.zoom } ) world = c.uri_with( { zoom = 0 } ); - SET zoom_in = c.uri_with( { zoom = map.zoom + 1 } ) IF map.zoom < map.numZoomLevels - 1; - SET zoom_out = c.uri_with( { zoom = map.zoom - 1 } ) IF map.zoom > 0; + SET zoom_in = c.uri_with( { lat = map.latitude, lon = map.longitude, zoom = map.zoom + 1 } ) IF map.zoom < map.numZoomLevels - 1; + SET zoom_out = c.uri_with( { lat = map.latitude, lon = map.longitude, zoom = map.zoom - 1 } ) IF map.zoom > 0; SET zoom_in = '#' IF map.zoom >= map.numZoomLevels - 1; SET zoom_out = '#' IF map.zoom <= 0; %] @@ -78,15 +78,11 @@ var fixmystreet = { [% BLOCK pin %] -[% cols = { - red = 'R', green = 'G', blue = 'B', purple = 'P', - } -%] [% IF pin.id %] <a title="[% pin.title | html %]" href="[% c.uri_for('/report/' _ pin.id) %]"> [%- END -%] -<img border="0" class="pin" src="[% c.uri_for('/i/pin' _ cols.${pin.colour} _ '.png') %]" - alt="[% loc('Problem') %]" style="top:[% pin.py - 58 %]px; left:[% pin.px - 22 %]px; position: absolute;"> +<img border="0" class="pin" src="[% c.uri_for('/i/pin-' _ pin.colour _ '.png') %]" + alt="[% loc('Problem') %]" style="top:[% pin.py - 64 %]px; left:[% pin.px - 24 %]px; position: absolute;"> [%- IF pin.id -%] </a> [% END %] diff --git a/templates/web/default/maps/pins_js.html b/templates/web/default/maps/pins_js.html index 355fffaba..d9c6b3531 100644 --- a/templates/web/default/maps/pins_js.html +++ b/templates/web/default/maps/pins_js.html @@ -1,4 +1,4 @@ [ [% FOR pin IN map.pins -%] - [ [% pin.latitude %], [% pin.longitude %], '[% pin.colour %]', '[% pin.id %]', "[% pin.title | escape_js %]" ] + [ [% pin.latitude %], [% pin.longitude %], '[% pin.colour %]', '[% pin.id %]', "[% pin.title | escape_js %]", '[% pin.type %]' ] [%- IF !loop.last %],[% END %] [% END %] ] diff --git a/templates/web/default/report/new/fill_in_details_form.html b/templates/web/default/report/new/fill_in_details_form.html index 2809b9c0e..ed8b07ea1 100644 --- a/templates/web/default/report/new/fill_in_details_form.html +++ b/templates/web/default/report/new/fill_in_details_form.html @@ -95,7 +95,7 @@ <input type="hidden" name="upload_fileid" value="[% upload_fileid %]" /> [% END %] [% IF report.photo %] - <img align="right" src="/photo?id=[% report.id %]" hspace="5"> + <img align="right" src="/photo/[% report.id %].jpeg" hspace="5"> [% END %] [% END %] diff --git a/templates/web/default/reports/council.html b/templates/web/default/reports/council.html index 797d34d6b..ec9efbdbf 100755 --- a/templates/web/default/reports/council.html +++ b/templates/web/default/reports/council.html @@ -77,13 +77,6 @@ Its area is now covered by <a href="/reports/Bedford">Bedford Borough Council</a [% INCLUDE 'reports/cobrand_stats.html' %] -[% IF c.cobrand.moniker == 'fixmystreet' %] -<p class="promo"> - FixMyStreet is now available for local council websites. - <a href="http://www.mysociety.org/fixmystreet-for-local-council-websites/">Find out more</a>. -</p> -[% END %] - [% INCLUDE 'pagination.html', param = 'p' %] [% INCLUDE column diff --git a/templates/web/default/static/fun.html b/templates/web/default/static/fun.html index abe9d4028..00976f3ec 100644 --- a/templates/web/default/static/fun.html +++ b/templates/web/default/static/fun.html @@ -10,7 +10,7 @@ Do let us know if you find any more.</p> <ul style='list-style-type: none; margin:0; padding:0'> -<li><img src='http://www.fixmystreet.com/photo?id=9468' align='right' hspace=8> +<li><img src='http://www.fixmystreet.com/photo/9468.jpeg' align='right' hspace=8> <h2>Dumped Piano (right)</h2> <p>The reporter of this problem summed it up with their report, which consisted solely of the one character “!”. — @@ -20,7 +20,7 @@ Do let us know if you find any more.</p> <p>“A seagull is attacking various cars within this road. He starts at around 05:45 every morning and continues until around 19:30. This causes a lot of noisy banging and wakes up children.” — <a href='http://www.fixmystreet.com/report/2722'>Problem report</a> -<li><img src='http://www.fixmystreet.com/photo?id=6553' align='right' hspace=8> +<li><img src='http://www.fixmystreet.com/photo/6553.jpeg' align='right' hspace=8> <h2>Boxes full of cheese dumped (right)</h2> <p>“About a dozen boxes full of mozzarella cheese have been dumped opposite 3 rufford street. if it warms up we could have nasty road topping problem (seriously there is a lot of cheese)” — <a href='http://www.fixmystreet.com/report/6553'>Problem report</a> diff --git a/templates/web/fixmystreet/alert/_list.html b/templates/web/fixmystreet/alert/_list.html new file mode 100644 index 000000000..e9f877466 --- /dev/null +++ b/templates/web/fixmystreet/alert/_list.html @@ -0,0 +1,89 @@ + <input type="hidden" name="type" value="local"> + <input type="hidden" name="pc" value="[% pc | html %]"> + <input type="hidden" name="latitude" value="[% latitude | html %]"> + <input type="hidden" name="longitude" value="[% longitude | html %]"> + + <p> + [% IF pretty_pc %] + [% tprintf( loc('Here are the types of local problem alerts for ‘%s’.'), pretty_pc ) %] + [% END %] + [% loc('Select which type of alert you\'d like and click the button for an RSS feed, or enter your email address to subscribe to an email alert.') %] + </p> + + [% INCLUDE 'errors.html' %] + + <p> + [% loc('The simplest alert is our geographic one:') %] + </p> + + <p> + <input type="radio" name="feed" id="[% rss_feed_id %]" value="[% rss_feed_id %]"[% IF rss_feed_id == selected_feed || selected_feed == '' %] checked[% END %]> + <label class="inline" for="[% rss_feed_id %]">[% tprintf( loc('Problems within %.1fkm of this location'), population_radius ) %]</label> + <a href='[% rss_feed_uri %]'><img src='/i/feed.png' width='16' height='16' title='[% loc('RSS feed of nearby problems') %]' alt='[% loc('RSS feed') %]' border='0'></a> + <br /> + [% loc('(a default distance which covers roughly 200,000 people)') %] + </p> + + <p id="rss_local_alt"> + [% loc('(alternatively the RSS feed can be customised, within') %] + <a href="[% rss_feed_2k %]">2km</a> / <a href="[% rss_feed_5k %]">5km</a> / <a href="[% rss_feed_10k %]">10km</a> / <a href="[% rss_feed_20k %]">20km</a>) + </p> + + <p> + [% loc("Or you can subscribe to an alert based upon what ward or council you’re in:") %] + </p> + + [% IF reported_to_options %] + <p><strong> + [% loc('Problems within the boundary of:') %] + </strong></p> + <ul class="plain-list"> + [% ELSE %] + <ul id="rss_feed" class="plain-list"> + [% END %] + + [% FOREACH option IN options %] + <li[% IF ! (loop.count % 2) %] class="a"[% END %]> + <input type="radio" name="feed" id="[% option.id %]" value="[% option.id %]"[% IF option.id == selected_feed %] checked[% END %]> + <a href="[% option.uri %]"><img src="/i/feed.png" width="16" height="16" +title="[% option.rss_text %]" alt="RSS feed" border="0"></a> + <label class="inline" for="[% option.id %]">[% option.text %]</label> + </li> + [% END %] +</ul> + [% IF reported_to_options %] + <p><strong> + [% loc('Or problems reported to:') %] + </strong></p> + <ul class="plain-list"> + [% FOREACH option IN reported_to_options %] + <li[% IF ! (loop.count % 2) %] class="a"[% END %]> + <input type="radio" name="feed" id="[% option.id %]" value="[% option.id %]"[% IF option.id == selected_feed %] checked[% END %]> + <a href="[% option.uri %]"><img src="/i/feed.png" width="16" height="16" + title="[% option.rss_text %]" alt="RSS feed" border="0"></a> + <label class="inline" for="[% option.id %]">[% option.text %]</label> + </li> + [% END %] + </ul> + <p><small> + [% loc( 'FixMyStreet sends different categories of problem +to the appropriate council, so problems within the boundary of a particular council +might not match the problems sent to that council. For example, a graffiti report +will be sent to the district council, so will appear in both of the district +council’s alerts, but will only appear in the "Within the boundary" alert +for the county council.' ) %] + </small></p> + [% END %] + + <input id="alert_rss_button" class="green-btn" type="submit" name="rss" value="[% loc('Give me an RSS feed') %]"> + + <p id="alert_or"> + [% loc('or') %] + </p> + + [% UNLESS c.user_exists %] + <label for="rznvy">[% loc('Your email') %]</label> + <input type="text" id="rznvy" name="rznvy" value="[% rznvy | html %]"> + [% END %] + <input id="alert_email_button" style="margin-top:1em;" class="green-btn" type="submit" name="alert" value="[% loc('Subscribe me to an email alert') %]"> + diff --git a/templates/web/fixmystreet/alert/choose.html b/templates/web/fixmystreet/alert/choose.html new file mode 100644 index 000000000..312b9f520 --- /dev/null +++ b/templates/web/fixmystreet/alert/choose.html @@ -0,0 +1,14 @@ +[% INCLUDE 'header.html', title => loc('Local RSS feeds and email alerts') %] + +<h1>[% loc('Local RSS feeds and email alerts') %]</h1> + +[% IF possible_location_matches %] + <p>[% loc('We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here.') %]</p> + <ul class="pc_alternatives plain-list"> + [% FOREACH match IN possible_location_matches %] + <li><a href="[% choose_target_uri %]?latitude=[% match.latitude | uri %];longitude=[% match.longitude | uri %]">[% match.address | html %]</a></li> + [% END %] + </ul> +[% END %] + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/alert/index.html b/templates/web/fixmystreet/alert/index.html new file mode 100644 index 000000000..7bec66305 --- /dev/null +++ b/templates/web/fixmystreet/alert/index.html @@ -0,0 +1,42 @@ +[% INCLUDE 'header.html', title = loc('Local RSS feeds and email alerts'), bodyclass = 'twothirdswidthpage' %] + +<h1>[% loc('Local RSS feeds and email alerts') %]</h1> + +<p> +[% loc('FixMyStreet has a variety of RSS feeds and email alerts for local problems, including +alerts for all problems within a particular ward or council, or all problems +within a certain distance of a particular location.') %] +</p> + +[% IF location_offshore %] + <div class="error">[% loc('That location does not appear to be covered by a council, perhaps it is offshore - please try somewhere more specific.') %]</div> +[% ELSIF location_error %] + <div class="error">[% location_error %]</div> +[% ELSE %] + [% INCLUDE 'errors.html' %] +[% END %] + +<p>[% loc('To find out what local alerts we have for you, please enter your GB + postcode or street name and area' ) %]</p> +<form method="get" action="/alert/list" class="full-width"> + <fieldset> + <div class="form-txt-submit-box"> + <input type="text" name="pc" value="[% pc | html %]" placeholder="[% loc('e.g. ‘B2 4QA’ or ‘Tib St, Manchester’') %]"> + <input class="green-btn" type="submit" value="[% loc('Go') %]"> + </div> + </fieldset> +</form> + +[% IF photos.size %] +<div class="sticky-sidebar"> + <aside> + <h2>[% loc('Some photos of recent reports') %]</h2> + [% FOREACH p IN photos %] + <a href="/report/[% p.id %]"><img border="0" height="100" + src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + [% END %] + </aside> +</div> +[% END %] + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/alert/list-ajax.html b/templates/web/fixmystreet/alert/list-ajax.html new file mode 100644 index 000000000..639af6f07 --- /dev/null +++ b/templates/web/fixmystreet/alert/list-ajax.html @@ -0,0 +1,9 @@ +[% IF pretty_pc %] + [% + pretty_pc = pretty_pc | html | replace(' ', ' '); + %] +[% END %] + +<div id="alerts"> + [% INCLUDE 'alert/_list.html' %] +</div> diff --git a/templates/web/fixmystreet/alert/list.html b/templates/web/fixmystreet/alert/list.html new file mode 100644 index 000000000..8305fff6f --- /dev/null +++ b/templates/web/fixmystreet/alert/list.html @@ -0,0 +1,40 @@ +[% + IF pretty_pc; + title = tprintf( loc("Local RSS feeds and email alerts for ‘%s’"), pretty_pc ); + ELSE; + title = loc('Local RSS feeds and email alerts'); + END; +%] + +[% INCLUDE 'header.html', title = title, bodyclass = 'twothirdswidthpage' %] + +[% IF pretty_pc %] + [% + pretty_pc = pretty_pc | html | replace(' ', ' '); + title = tprintf( loc("Local RSS feeds and email alerts for ‘%s’"), pretty_pc ); + %] +[% END %] + + +<h1>[% title %]</h1> + +<form id="alerts" name="alerts" method="post" action="/alert/subscribe"> + +[%# XXX These photos should perhaps be in a vertical column on the right hand side, as currently. %] + [% IF photos.size %] + <div class="sticky-sidebar"> + <aside> + <h2>[% loc('Photos of recent nearby reports') %]</h2> + [% FOREACH p IN photos %] + <a href="/report/[% p.id %]"><img border="0" height="100" + src="/photo/[% p.id %].tn.jpeg" alt="[% p.title | html %]" title="[% p.title | html %]"></a> + [% END %] + </aside> + </div> + [% END %] + + [% INCLUDE 'alert/_list.html' %] + +</form> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/alert/updates.html b/templates/web/fixmystreet/alert/updates.html new file mode 100644 index 000000000..2240844e4 --- /dev/null +++ b/templates/web/fixmystreet/alert/updates.html @@ -0,0 +1,32 @@ +[% title = loc('Local RSS feeds and email alerts') %] + +[% INCLUDE 'header.html', title => title %] + + +[% INCLUDE 'errors.html' %] + +<p><a href="[% c.uri_for( '/rss', problem_id ) %]"> + <img src="/i/feed.png" width="16" height="16" title="[% loc('RSS feed') %]" alt="[% loc('RSS feed of updates to this problem' ) %]" border="0" style="float:right"> + </a> +</p> + +<p> +[% loc('Receive email when updates are left on this problem.') %] +</p> + +<form action="/alert/subscribe" method="post"> + <fieldset> + <label class="hidden n" for="alert_rznvy">[% loc('Your email') %]</label> + + <div class="form-txt-submit-box"> + <input type="email" name="rznvy" id="alert_rznvy" value="[% email | html %]" placeholder="[% loc('Your email') %]"> + <input class="green-btn" type="submit" value="[% loc('Subscribe') %]"> + </div> + + <input type="hidden" name="id" value="[% problem_id | html %]"> + <input type="hidden" name="type" value="updates"> + </fieldset> +</form> + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/around/around_index.html b/templates/web/fixmystreet/around/around_index.html new file mode 100644 index 000000000..331f34325 --- /dev/null +++ b/templates/web/fixmystreet/around/around_index.html @@ -0,0 +1,52 @@ +[% INCLUDE 'header.html', title => loc('Reporting a problem'), bodyclass => 'mappage' %] + +[% + # NOTE ON PARTIAL REPORTS: + # + # partial reports get a bit of extra text added, the form goes to + # '/report/new' and the partial hidden field is added to the form. +%] + +[% + question + = c.cobrand.enter_postcode_text() + || loc("Enter a nearby GB postcode, or street name and area"); +%] + +<form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm"> + <fieldset> + <label for="pc">[% question %]:</label> + <input type="text" name="pc" value="[% pc | html %]" id="pc" size="10" maxlength="200"> + <input class="green-btn final-submit" type="submit" value="[% loc('Go') %]" id="submit"> + + [% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> + [% END %] + </fieldset> +</form> + +[% IF location_offshore %] + <p class="error">[% loc('That spot does not appear to be covered by a council. If you have tried to report an issue past the shoreline, for example, please specify the closest point on land.') %]</p> +[% ELSIF location_error %] + <p class="error">[% location_error %]</p> +[% END %] + +[% IF possible_location_matches %] + <p>[% loc('We found more than one match for that location. We show up to ten matches, please try a different search if yours is not here.') %]</p> + <ul class="pc_alternatives"> + [% FOREACH match IN possible_location_matches %] + <li><a href="/around?latitude=[% match.latitude | uri %];longitude=[% match.longitude | uri %]">[% match.address | html %]</a></li> + [% END %] + </ul> +[% END %] + +[% IF partial_token %] + <p style="margin-top: 0; color: #cc0000;"> + <img align="right" src="/photo/[% partial_report.id %].jpeg" hspace="5"> + [% loc("Thanks for uploading your photo. We now need to locate your problem, so please enter a nearby street name or postcode in the box below :") %] + </p> +[% END %] + + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/around/around_map_list_items.html b/templates/web/fixmystreet/around/around_map_list_items.html new file mode 100644 index 000000000..7dce76ce1 --- /dev/null +++ b/templates/web/fixmystreet/around/around_map_list_items.html @@ -0,0 +1,25 @@ +[% IF around_map.size %] + [% FOREACH p IN around_map %] + + [% dist = tprintf("%.1f", (p.distance || 0) ) %] + + <li> + <a href="[% c.uri_for('/report', p.problem.id ) %]"> + <div class="text"> + <h4>[% p.problem.title | html %]</h4> + <small>[% prettify_epoch( p.problem.confirmed_local.epoch, 1 ) %], [% dist %]km</small> + [% IF p.problem.is_fixed %] + <small>[% loc('(fixed)') %]</small> + [% END %] + </div> + [% IF p.problem.photo %] + <div class="img"> + <img height="60" width="90" src="/photo/[% p.problem.id %].fp.jpeg" alt=""> + </div> + [% END %] + </a> + </li> + [% END %] +[% ELSE %] + <li><p>[% loc('No problems found.') %]</p></li> +[% END %] diff --git a/templates/web/fixmystreet/around/display_location.html b/templates/web/fixmystreet/around/display_location.html new file mode 100755 index 000000000..c98982a60 --- /dev/null +++ b/templates/web/fixmystreet/around/display_location.html @@ -0,0 +1,116 @@ +[% + + rss_alt = loc('RSS feed'); + rss_title = loc('RSS feed of recent local problems'); + + rss_url + = pc + ? c.uri_for( "/rss/pc", pc ) + : c.uri_for( "/rss/l/$short_latitude,$short_longitude" ); + + email_url = c.uri_for( + '/alert/list', + { + lat => short_latitude, + lon => short_longitude, + feed => "local:$short_latitude:$short_longitude", + } + ); + + url_skip = c.uri_for( + '/report/new', + { + pc => pc + latitude => short_latitude, + longitude => short_longitude, + skipped => 1, + } + ); + + PROCESS "maps/${map.type}.html"; + + INCLUDE 'header.html', + title => loc('Viewing a location') + rss => [ loc('Recent local problems, FixMyStreet'), rss_url ], + bodyclass => 'mappage', + robots => 'noindex,nofollow'; +%] + +<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm" enctype="multipart/form-data" class="validate"> + [% IF c.req.params.map_override %] + <input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]"> + [% END %] + <input type="hidden" name="pc" value="[% pc | html %]"> + + <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% short_latitude | html %]"> + <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% short_longitude | html %]"> + + [% map_html %] + + <p id='sub_map_links'> + [% IF c.req.params.no_pins %] + <a id='hide_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => 0 } ) %]'>[% loc('Show pins') %]</a> + [% ELSE %] + <a id='hide_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => 1 } ) %]'>[% loc('Hide pins') %]</a> + [% END %] + [% IF c.cobrand.country == 'GB' || c.cobrand.country == 'NO' %] + [% IF c.req.params.all_pins %] + <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => undef } ) %]'>[% loc('Hide old') %]</a> + [% ELSE %] + <a id='all_pins_link' rel='nofollow' href='[% c.uri_with( { no_pins => undef, all_pins => 1 } ) %]'>[% loc('Show old') %]</a> + [% END %] + [% END %] + </p> + + </div> + + + + + <div id="side"> + + <h1 class="big-green-banner">[% loc( 'Click map to report a problem' ) %]</h1> + + <p id="skip-this-step"> + [% + tprintf( + loc("Can't see the map? <a href='%s' rel='nofollow'>Skip this step</a>"), + url_skip + ) + %] + </p> + + <div class="shadow-wrap"> + <ul id="key-tools" class="singleton"> + <li><a class="feed" id="key-tool-around-updates" href="[% email_url | html %]">Get updates</a></li> + </ul> + </div> + + <section class="full-width"> + <menu id="problems-nav" class="tab-nav"> + <ul> + <li><a href="#current">[% loc('Problems on the map') %]</a></li> + <li><a href="#current_near">[% loc( 'Problems nearby' ) %]</a></li> + </ul> + </menu> + + <ul id="current" class="issue-list-a tab"> + [% INCLUDE "around/on_map_list_items.html" %] + </ul> + + <ul id="current_near" class="issue-list-a tab"> + [% INCLUDE "around/around_map_list_items.html" %] + </ul> + </section> + </div> + + <div style="display:none" id="side-form"> + [% INCLUDE "report/new/fill_in_details_form.html" + js = 1, + report.used_map = 1 + report.name = c.user.name + %] + </div> +</form> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/around/on_map_list_items.html b/templates/web/fixmystreet/around/on_map_list_items.html new file mode 100644 index 000000000..9329e6833 --- /dev/null +++ b/templates/web/fixmystreet/around/on_map_list_items.html @@ -0,0 +1,22 @@ +[% IF on_map.size %] + [% FOREACH p IN on_map %] + <li> + <a href="[% c.uri_for('/report', p.id ) %]"> + <div class="text"> + <h4>[% p.title | html %]</h4> + <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small> + [% IF p.is_fixed %] + <small>[% loc('(fixed)') %]</small> + [% END %] + </div> + [% IF p.photo %] + <div class="img"> + <img height="60" width="90" src="/photo/[% p.id %].fp.jpeg" alt=""> + </div> + [% END %] + </a> + </li> + [% END %] +[% ELSE %] + <li><p>[% loc('No problems have been reported yet.') %]</p></li> +[% END %] diff --git a/templates/web/fixmystreet/auth/change_password.html b/templates/web/fixmystreet/auth/change_password.html new file mode 100644 index 000000000..c10560c3e --- /dev/null +++ b/templates/web/fixmystreet/auth/change_password.html @@ -0,0 +1,39 @@ +[% INCLUDE 'header.html', title = loc('Change Password') %] + +<h1>[% loc('Change Password') %]</h1> + +[% IF password_changed %] + <p id="fixed">[% loc('Your password has been changed') %]</p> +[% END %] + + +<form action="[% c.uri_for('change_password') %]" method="post" name="change_password" class="fieldset"> + + [% IF password_error; + + errors = { + missing => loc('Please enter a password'), + mismatch => loc('The passwords do not match'), + other => loc('Please check the passwords and try again'), + }; + + loc_password_error = errors.$password_error || errors.other; %] + <div class="form-error">[% loc_password_error %]</div> + [% END %] + + <div class="form-field"> + <label for="new_password">[% loc('Password:') %]</label> + <input type="password" name="new_password" value="[% new_password | html %]"> + </div> + <div class="form-field"> + <label for="confirm">[% loc('Again:') %]</label> + <input type="password" name="confirm" value="[% confirm | html %]"> + </div> + <div class="checkbox"> + <input type="submit" value="[% loc('Change Password') %]"> + </div> + +</form> + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/auth/general.html b/templates/web/fixmystreet/auth/general.html new file mode 100644 index 000000000..585232bc5 --- /dev/null +++ b/templates/web/fixmystreet/auth/general.html @@ -0,0 +1,67 @@ +[% INCLUDE 'header.html', title = loc('Sign in or create an account') %] + +<h1>[% loc('Sign in') %]</h1> + +<form action="[% c.uri_for() %]" method="post" name="general_auth" class="validate"> + <fieldset> + <input type="hidden" name="r" value="[% c.req.params.r | html %]"> + + [% IF email_error; + + # other keys include fqdn, mxcheck if you'd like to write a custom error message + + errors = { + missing => loc('Please enter your email'), + other => loc('Please check your email address is correct') + }; + + loc_email_error = errors.$email_error || errors.other; + END %] + <label class="n" for="email">[% loc('Email') %]</label> + [% IF loc_email_error %] + <div class="form-error">[% loc_email_error %]</div> + [% ELSIF sign_in_error %] + <div class="form-error">[% loc('There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the ‘sign in by email’ section of the form.') %]</div> + [% END %] + <input type="email" class="required email" id="email" name="email" value="[% email | html %]" placeholder="[% loc('Your email address') %]"> + + <div id="form_sign_in"> + <h3>[% loc("Do you have a FixMyStreet password?") %]</h3> + + <div id="form_sign_in_yes" class="form-box"> + <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5> + + <label class="hidden-js n" for="password_sign_in">[% loc('<strong>Yes</strong>, I have a password') %]</label> + + <div class="form-txt-submit-box"> + <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> + <input class="green-btn" type="submit" name="sign_in" value="[% loc('Sign in') %]"> + </div> + + <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> + <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label> + + </div> + <div id="form_sign_in_no" class="form-box"> + <h5>[% loc('<strong>No</strong> let me sign in by email') %]</h5> + + <div class="general-sidebar-notes"> + <p>Providing a name and password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.</p> + </div> + + <label for="name">[% loc('Name') %]</label> + <input type="text" name="name" value="" placeholder="[% loc('Your name') %]"> + + <label for="password_register">[% loc('Password (optional)') %]</label> + <div class="form-txt-submit-box"> + <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" name="email_sign_in" value="[% loc('Sign in') %]"> + </div> + </div> + + </div> + </fieldset> +</form> + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/auth/sign_out.html b/templates/web/fixmystreet/auth/sign_out.html new file mode 100644 index 000000000..3d8df60e4 --- /dev/null +++ b/templates/web/fixmystreet/auth/sign_out.html @@ -0,0 +1,8 @@ +[% INCLUDE 'header.html', title => loc('Sign out') %] + +<h1>[% loc('You have been signed out') %]</h1> + +<p>Please feel free to <a href="[% c.uri_for('/auth') %]">sign in again</a>.</p> + + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/auth/token.html b/templates/web/fixmystreet/auth/token.html new file mode 100644 index 000000000..0f44d1074 --- /dev/null +++ b/templates/web/fixmystreet/auth/token.html @@ -0,0 +1,27 @@ +[% INCLUDE 'header.html', title => loc('Confirm account') %] + +[% IF token_not_found %] + +<h1>[% loc('Error') %]</h1> + +<p>We have not been able to confirm your account - sorry. This may be because:</p> + +<ul> + <li>Link too old or already used</li> + <li>URL not copied correctly</li> + [%# FIXME - add more reasons here %] +</ul> + +[% ELSE %] + +<h1>[% loc('Please check your email') %]</h1> + +<p>[% loc("We have sent you an email containing a link to confirm your account.") %]</p> + +<p>[% loc("The confirmation email <strong>may</strong> take a few minutes to arrive — <em>please</em> be patient.") %]</p> + +<p>[% loc("If you use web-based email or have 'junk mail' filters, you may wish to check your bulk/spam mail folders: sometimes, our messages are marked that way.") %]</p> + +[% END %] + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/common_header_tags.html b/templates/web/fixmystreet/common_header_tags.html new file mode 100644 index 000000000..ea952ccdc --- /dev/null +++ b/templates/web/fixmystreet/common_header_tags.html @@ -0,0 +1,38 @@ +[% INCLUDE 'js_validation_msgs.html' %] + +<meta http-equiv="content-type" content="text/html; charset=utf-8"> +<script type="text/javascript" src="/jslib/jquery-1.7.0.min.js"></script> + +<script src="[% version('/js/jquery.validate.min.js') %]" type="text/javascript" charset="utf-8"></script> + +<script src="[% version('/js/modernizr.custom.76759.js') %]" type="text/javascript" charset="utf-8"></script> + +<script src="[% version('/js/jquery.placeholder.min.js') %]" type="text/javascript" charset="utf-8"></script> + +<script type="text/javascript" src="[% version('/js/geo.min.js') %]"></script> +<script type="text/javascript" src="[% version('/cobrands/fixmystreet/fixmystreet.js') %]"></script> + +<script src="[% version('/js/fancybox/jquery.fancybox-1.3.4.pack.js') %]" type="text/javascript" charset="utf-8"></script> + +[% map_js %] + +[% IF category_extras_json && category_extras_json != '{}' %] +<script type="text/javascript"> + category_extras = [% category_extras_json %]; +</script> +[% END %] + +[% IF robots %] + <meta name="robots" content="[% robots %]"> +[% ELSIF c.config.STAGING_SITE %] + <meta name="robots" content="noindex,nofollow"> +[% END %] + +[% IF rss %] + <link rel="alternate" type="application/rss+xml" title="[% rss.0 %]" href="[% rss.1 %]"> +[% END %] + +<title> + [% "$title :: " | html IF title %] + [% c.cobrand.site_title %] +</title> diff --git a/templates/web/fixmystreet/contact/index.html b/templates/web/fixmystreet/contact/index.html new file mode 100644 index 000000000..368fb0628 --- /dev/null +++ b/templates/web/fixmystreet/contact/index.html @@ -0,0 +1,100 @@ +[% INCLUDE 'header.html', + title = loc('Contact Us') + robots = 'noindex,nofollow' + bodyclass => 'twothirdswidthpage' +%] + +<h1>[% loc('Contact the team') %]</h1> + +<form method="post" action="/contact/submit" class="validate"> + <fieldset> + [% INCLUDE 'errors.html' %] + + [% IF update %] + + <p> + [% loc('You are reporting the following update for being abusive, containing personal information, or similar:') %] + </p> + + <blockquote> + <p> + [% IF update.anonymous %] + [% tprintf( loc('Update below added anonymously at %s'), prettify_epoch( update.confirmed_local.epoch ) ) %] + [% ELSE %] + [% tprintf( loc('Update below added by %s at %s'), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html %] + [% END %] + </p> + + <p> + [% update.text | html %] + </p> + + </blockquote> + <input type="hidden" name="update_id" value="[% update.id %]"> + <input type="hidden" name="id" value="[% update.problem_id %]"> + + [% ELSIF problem %] + <p> + [% loc('You are reporting the following problem report for being abusive, containing personal information, or similar:') %] + </p> + + <blockquote> + <h2>[% problem.title | html %]</h2> + + <p> + [% IF problem.anonymous %] + [% tprintf( loc('Reported anonymously at %s'), prettify_epoch( problem.confirmed_local.epoch ) ) %] + [% ELSE %] + [% tprintf( loc('Reported by %s at %s'), problem.user.name, prettify_epoch( problem.confirmed_local.epoch ) ) | html %] + [% END %] + </p> + + <p> + [% problem.detail | html %] + </p> + + </blockquote> + <input type="hidden" name="id" value="[% problem.id %]"> + + [% ELSE %] + + [% INCLUDE 'contact/blurb.html' %] + + [% END %] + + <label for="form_name">[% loc('Your name') %]</label> + [% IF field_errors.name %] + <div class="form-error">[% field_errors.name %]</div> + [% END %] + <input type="text" class="required" name="name" id="form_name" value="[% form_name | html %]" size="30"> + + + <label for="form_email">[% loc('Your email') %]</label> + [% IF field_errors.em %] + <div class="form-error">[% field_errors.em %]</div> + [% END %] + <input type="text" class="required email" name="em" id="form_email" value="[% em | html %]" size="30"> + + + <label for="form_subject">[% loc('Subject') %]</label> + [% IF field_errors.subject %] + <div class="form-error">[% field_errors.subject %]</div> + [% END %] + <input type="text" class="required" name="subject" id="form_subject" value="[% subject | html %]" size="30"> + + + <label for="form_message">[% loc('Message') %]</label> + [% IF field_errors.message %] + <div class="form-error">[% field_errors.message %]</div> + [% END %] + <textarea class="required" name="message" id="form_message" rows="7" cols="50">[% message | html %]</textarea> + + + <input class="final-submit green-btn" type="submit" value="[% loc('Post') %]"> + + </fieldset> +</form> + +[% TRY %][% INCLUDE 'contact/address.html' %][% CATCH file %][% END %] + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html new file mode 100755 index 000000000..462c43564 --- /dev/null +++ b/templates/web/fixmystreet/faq/faq-en-gb.html @@ -0,0 +1,218 @@ +[% INCLUDE 'header.html', title => loc('Frequently Asked Questions'), bodyclass => 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><a href="#faq">Frequently Asked Questions</a></li> + <li><a href="#practical">Practical Questions</a></li> + <li><a href="#privacy">Privacy Questions</a></li> + <li><a href="#organisation">Organisation Questions</a></li> + </ul> + </aside> +</div> + +<h1><a name="faq"></a>Frequently Asked Questions</h1> + <dl> + <dt>What is FixMyStreet?</dt> + <dd>FixMyStreet is a site to help people report, view, +or discuss local problems they’ve found to their local council by +simply locating them on a map. It launched in early February +2007.</dd> + <dt>What sort of problems should I report with FixMyStreet?</dt> + <dd>FixMyStreet is primarily for reporting things which are +<strong>broken or dirty or damaged or dumped, and need fixing, cleaning +or clearing</strong>, such as: + + <ul><li>Abandoned vehicles + <li>Dog Fouling + <li>Flyposting or graffiti + <li>Flytipping or litter + <li>Streetcleaning, such as broken glass in a cycle lane + [% IF c.cobrand.moniker != 'southampton' %] + <li>Unlit lamposts + [% END %] + <li>Potholes + </ul> + </dd> + + <dt>What isn’t FixMyStreet for?</dt> + <dd>FixMyStreet is not a way of getting in touch with [% c.cobrand.moniker == 'southampton' ? 'the' : 'your' %] council for all + issues – please use FixMyStreet only for problems such as the above. We + often route problem reports via cleansing services or highways and so using + FixMyStreet for other matters may result in a delay in your report getting + to the right department. <strong>You will need to contact [% c.cobrand.moniker == 'southampton' ? 'the' : 'your' %] council + directly for problems such as</strong>: + + <ul><li>Anti-social behaviour + <li>Any urgent or emergency problems + <li>Noise pollution or barking dogs + <li>Fires and smoke/smell pollution + <li>Missing wheelie bins or recycling boxes or missed rubbish collections + <li>Proposals for speed bumps/ CCTV/ pedestrian crossings/ new road layouts/ etc. + <li>Complaining about your neighbours + <li>Complaining about the council + <li>Joy riding, drug taking, animal cruelty, or other criminal activity + </ul> + <p>Councils often have direct hotlines for these sorts of issues.</p> + </dd> + + <dt>How do I use the site?</dt> + <dd>After entering a postcode or location, you are presented +with a map of that area. You can view problems already reported in that area, +or report ones of your own simply by clicking on the map at the location of +the problem.</dd> + <dt>How are the problems solved?</dt> + <dd>They are reported to the [% IF c.cobrand.moniker != 'southampton' %]relevant[% END %] council by email. The +council can then resolve the problem the way they normally would. +Alternatively, you can discuss the problem on the website with others[% IF c.cobrand.moniker != 'southampton' %], and +then together lobby the council to fix it, or fix it directly yourselves[% END %].</dd> + <dt>Is it free?</dt> + <dd>The site is free to use, yes. FixMyStreet is run +by a registered charity, though, so if you want to make a contribution, <a +href="https://secure.mysociety.org/donate/">please do</a>.</dd> + + <dt>Can I use FixMyStreet on my mobile?</dt> + <dd><ul> + <li><em>iPhone:</em> There are two apps for FixMyStreet, one written by us + in 2008 and another much more recently by a volunteer, Martin Stephenson. + Both are available for download on the App Store: + <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>, + <a href="http://itunes.apple.com/gb/app/streetreport/id371891859">StreetReport</a>. + <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app + available from the + <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>. + <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the + <a href="http://store.ovi.com/content/107557">Ovi Store</a>. + </ul> + <p>We also hope to make the website itself much more mobile friendly in the future.</p> + </dd> + + <dt>Why do you only cover the countries of Great Britain?</dt> + <dd>We would love to cover Northern Ireland, but as we were funded for + FixMyStreet by the Department for Constitutional Affairs (now the Ministry + of Justice), we were covered for Ordnance Survey data (but not OSNI data) + by the Pan-Governmental Agreement. The cost for these maps would be + prohibitively expensive for the small charity that we are – if you know of + any way we could get access to the Ordnance Survey for Northern Ireland's + maps so that we can add them to the site, that'd be great.</dd> + </dl> + + <h2><a name="practical"></a>Practical Questions</h2> + <dl> + <dt>I’m from a council, where do you send the reports?</dt> + <dd>You can either leave a test report or <a href="/contact">contact us</a> +to find out where reports go at the moment. Also <a href="/contact">contact us</a> +to update the address or addresses we use.</dd> + <dt>I’m from a council, can we have FixMyStreet on our website?</dt> + <dd>Yes you can! We offer branded, hosted versions of FixMyStreet for local council websites. <a href="/for-councils">Full details</a>.</dd> + <dt>Do you remove silly or illegal content?</dt> + <dd>FixMyStreet is not responsible for the content and accuracy +of material submitted by its users. We reserve the right to edit or remove any +problems or updates which we consider to be inappropriate upon being informed +by a user of the site.</dd> + <dt>Why does the site use kilometres for measurements?</dt> + <dd>Thanks for asking politely – we never quite understand why some of the rudest + emails we receive are on this topic. The British national + grid reference system, devised by Ordnance Survey (the British national + mapping agency) around the time of the second world war, uses eastings and + northings measured in metres and kilometres; the maps we use are from + Ordnance Survey and so this is what we use to display distances. + There you have it: not everything British is in miles!</dd> + + <dt>Why can’t I zoom out more on the reporting map?</dt> + <dd>We want to keep FixMyStreet locally focused, so restrict the ability to + move radically between areas. The map on Your Reports will let you see all + the reports you’ve made, wherever they are. If you’re from the + council then the emailed version of the problem report also contains the + closest road and postcode to the pin on the map.</dd> + + <dt>This site is great – why aren’t you better publicised?</dt> + <dd>As a tiny charity we simply don’t have a publicity budget, and we + rely on word of mouth to advertise the site. We have a whole <a + href="posters/">array of posters, flyers and badges</a> if you’d like + to publicise us on the web or in your local area, and why not write to your + local paper to let them know about us?</dd> </dl> + + <h2><a name="privacy"></a>Privacy Questions</h2> + <dl> + <dt>Who gets to see my email address?</dt> + <dd>If you submit a problem, we pass on your details, and details +of the problem, to the council contact or contacts responsible for the +area where you located the problem. Other than the council, who obviously get your +email address, only people we authorise to view the FixMyStreet administration interface +will be able to see your email address and they will never use it for anything other than +to help administer FixMyStreet. Similarly with email addresses from updates. We will never give or sell your email address to anyone else, +unless we are obliged to by law. Your name will not be published anywhere unless you let us.</dd> + <dt>Will you send nasty, brutish spam to my email address?</dt> + <dd>Never. We will email you if someone leaves an update on a +problem you’ve reported, and send you a questionnaire email four weeks +after you submit a problem, asking for a status update; we’ll only ever +send you emails in relation to your problem.</dd> + </dl> + <h2><a name="organisation"></a>Organisation Questions</h2> + <dl> + <dt>Who built FixMyStreet?</dt> + <dd>This site was built by <a href="http://www.mysociety.org/">mySociety</a>, in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. +mySociety is the project of a registered charity which has grown out of the community of +volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. +mySociety’s primary mission is to build Internet projects which give people simple, tangible +benefits in the civic and community aspects of their lives. Our first project +was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your +elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety +can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, +or by post at:<br> +mySociety<br> +483 Green Lanes<br> +London<br> +N13 4BS<br> +UK</dd> + <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> + <dd>FixMyStreet was paid for via the Department for +Constitutional Affairs Innovations Fund.</dd> + <dt><a name="nfi"></a>Wasn’t this site called Neighbourhood Fix-It?</dt> + <dd>Yes, we changed the name mid June 2007. We decided +Neighbourhood Fix-It was a bit of a mouthful, hard to spell, and hard to publicise (does the URL have a dash in it or not?). The domain FixMyStreet became available, and everyone liked the name.</dd> + <dt>Do you need any help with the project?</dt> + <dd>Yes, we can use help in all sorts of ways, technical or +non-technical. Please see our <a +href="http://www.mysociety.org/helpus/">Get Involved page</a>.</dd> + <dt>I’d like a site like this for my own location/ where’s the "source code" to this site?</dt> + <dd> +The software behind this site is open source, and available +to you mainly under the GNU Affero GPL software license. You can <a +href="http://github.com/mysociety/fixmystreet">download the +source code</a> and help us develop it. +You’re welcome to use it in your own projects, although you must also +make available the source code to any such projects. +<a href="http://www.fiksgatami.no/">Fiksgatami</a> is an example of our code +being used in a Norwegian version of this site. +</dd> +<dt>I’d prefer code in a different language?</dt> +<dd> +VisibleGovernment.ca wrote their own code for +<a href="http://www.fixmystreet.ca/">http://www.fixmystreet.ca/</a>, which is +written in GeoDjango and available under an MIT licence at <a +href="http://github.com/visiblegovernment/django-fixmystreet/tree/master">github</a>. +Or <a href="http://www.fixmystreet.org.nz/">FixMyStreet.org.nz</a> is written in +Drupal. +</p> +</dd> + <dt>People build things, not organisations. Who <em>actually</em> built it?</dt> + <dd>Matthew Somerville and Francis Irving wrote the site, +Chris Lightfoot wrote the tileserver and map cutter, Richard Pope created +our pins, Deborah Kerr keeps things up-to-date and does user support, +Ayesha Garrett designed our posters, and Tom Steinberg managed it all. + +Thanks also to +<a href="http://www.ordnancesurvey.co.uk">Ordnance Survey</a> (for the maps, +UK postcodes, and UK addresses – data © Crown copyright, all +rights reserved, Ministry of Justice 100037819 2008), +Yahoo! for their BSD-licensed JavaScript libraries, the entire free software +community (this particular project was brought to you by Perl, PostgreSQL, +and the number 161.290) and <a +href="http://www.m247.com/">M247</a> (who kindly host all +our servers). + +Let us know if we’ve missed anyone.</dd> + </dl> +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/footer.html b/templates/web/fixmystreet/footer.html index 089eb1cb7..18f7c7b4b 100644 --- a/templates/web/fixmystreet/footer.html +++ b/templates/web/fixmystreet/footer.html @@ -1,51 +1,62 @@ - </div><!-- #mysociety .container --> - - <div id="navigation" class="container" role="navigation"> - <div class="spacer"></div> - <ul id="site-nav" class="nav"> - <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/"[% END - %]>[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[% - %]<li><[% IF c.req.uri.path == '/my' %]span[% ELSE %]a href="/my"[% END - %]>[% loc("Your reports") %]</[% c.req.uri.path == '/my' ? 'span' : 'a' %]></li>[% - %]<li><[% IF c.req.uri.path == '/reports' %]span[% ELSE %]a href="/reports"[% END - %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[% - %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END - %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[% - %]<li><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END - %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li> - </ul> - - <ul id="mysociety-nav" class="nav"> - <li><a id="mysociety-logo" href="http://www.mysociety.org/">mySociety</a></li>[% - %]<li><a href="http://mysociety.org/donate/">Donate</a></li>[% - %]<li><a href="http://www.mysociety.org/projects/">Our Sites</a></li> - </ul> - - </div> - -</div></div></div><!-- wrappers --> - -<div id="footer"> - - <p><a href="/contact">[% loc("Contact FixMyStreet") | replace(' ', ' ') %]</a> - <br>Mobile apps: - <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a>, - <a href="http://itunes.apple.com/gb/app/streetreport/id371891859">StreetReport (iPhone)</a> - | <a href="https://market.android.com/details?id=com.android.fixmystreet">Android</a> - | <a href="http://store.ovi.com/content/107557">Nokia</a> - </p> - - <p>[% loc('Are you from a <strong>council</strong>? Would you like better integration with FixMyStreet?') %] - <a href="http://www.mysociety.org/fixmystreet-for-local-council-websites/">[% loc('Find out about FixMyStreet for councils') %]</a>. - </p> - - <p>[% loc('Are you a <strong>developer</strong>? Would you like to contribute to FixMyStreet?') %] - [% loc('Our code is open source and <a href="http://github.com/mysociety/fixmystreet">available on GitHub</a>.') %] - </p> - -</div> - -[% INCLUDE 'debug_footer.html' %] - + [% IF pagefooter %] + <footer role="content-info"> + <div class="tablewrapper bordered"> + <div id="footer-mobileapps"> + <h4>Mobile apps</h4> + + <ul> + <li><a class="m-app-iphone" href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a></li> + <li><a class="m-app-droid" href="https://market.android.com/details?id=com.android.fixmystreet">Android</a></li> + <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li> + <li><a class="m-app-iphone-streetreport" href="http://itunes.apple.com/gb/app/streetreport/id371891859">iPhone Street Report</a></li> + </ul> + </div> + + <div id="footer-help"> + <ul> + <li> + <h4>[% loc('Are you a developer?') %]</h4> + <p>[% loc('Would you like to contribute to FixMyStreet? Our code is open source and <a href="http://github.com/mysociety/fixmystreet">available on GitHub</a>.') %]</p> + </li> + <li> + <h4>[% loc('Are you from a council?') %]</h4> + <p>[% loc('Would you like better integration with FixMyStreet? <a href="/for-councils">Find out about FixMyStreet for councils</a>.') %]</p> + </li> + </ul> + </div> + </div> + </footer> + [% END %] + </div><!-- .content role=main --> + </div><!-- .container --> + </div><!-- .table-cell --> + + <div class="nav-wrapper"> + <div class="nav-wrapper-2"> + <div id="main-nav" role="navigation"> + <ul id="mysoc-menu"> + <li><a id="mysoc-logo" href="http://www.mysociety.org/">mySociety</a></li>[% + %]<li><a href="http://mysociety.org/donate/">Donate</a></li>[% + %]<li><a href="http://www.mysociety.org/projects/">Our Sites</a></li> + </ul> + + <ul id="main-menu"> + <li><[% IF c.req.uri.path == '/' %]span[% ELSE %]a href="/" class="report-a-problem-btn"[% END + %]>[% loc("Report a problem") %]</[% c.req.uri.path == '/' ? 'span' : 'a' %]></li>[% + %]<li><[% IF c.req.uri.path == '/my' %]span[% ELSE %]a href="/my"[% END + %]>[% loc("Your reports") %]</[% c.req.uri.path == '/my' ? 'span' : 'a' %]></li>[% + %]<li><[% IF c.req.uri.path == '/reports' %]span[% ELSE %]a href="/reports"[% END + %]>[% loc("All reports") %]</[% c.req.uri.path == '/reports' ? 'span' : 'a' %]></li>[% + %]<li><[% IF c.req.uri.path == '/alert' %]span[% ELSE %]a href="/alert[% pc ? '/list?pc=' : '' %][% pc | uri %]"[% END + %]>[% loc("Local alerts") %]</[% c.req.uri.path == '/alert' ? 'span' : 'a' %]></li>[% + %]<li><[% IF c.req.uri.path == '/faq' %]span[% ELSE %]a href="/faq"[% END + %]>[% loc("Help") %]</[% c.req.uri.path == '/faq' ? 'span' : 'a' %]></li> + </ul> + </div> + </div> + </div> + +<!-- [% INCLUDE 'debug_footer.html' %] --> + </div> <!-- .wrapper --> </body> </html> diff --git a/templates/web/fixmystreet/header.html b/templates/web/fixmystreet/header.html index ff08116a9..dd1a90c5f 100644 --- a/templates/web/fixmystreet/header.html +++ b/templates/web/fixmystreet/header.html @@ -2,18 +2,18 @@ <!--[if lt IE 7]><html class="no-js ie6 oldie" lang="[% lang_code %]"><![endif]--> <!--[if IE 7]> <html class="no-js ie7 oldie" lang="[% lang_code %]"><![endif]--> <!--[if IE 8]> <html class="no-js ie8 oldie" lang="[% lang_code %]"><![endif]--> -<!--[if gt IE 8]><!--><html class="no-js" lang="[% lang_code %]"><!--<![endif]--> +<!--[if IE 9]> <html class="no-js ie9 oldie" lang="[% lang_code %]"><![endif]--> +<!--[if gt IE 9]><!--><html class="no-js" lang="[% lang_code %]"><!--<![endif]--> <head> <meta name="viewport" content="initial-scale=1.0"> - <meta name="apple-mobile-web-app-capable" content="yes"> - <meta name="apple-mobile-web-app-status-bar-style" content="black"> + <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> <meta name="HandHeldFriendly" content="true"> <meta name="mobileoptimized" content="0"> - <link rel="stylesheet" href="[% version('/css/core.css') %]"> <link rel="stylesheet" href="[% version('/cobrands/fixmystreet/base.css') %]"> <link rel="stylesheet" href="[% version('/cobrands/fixmystreet/layout.css') %]" media="(min-width:48em)"> + <link rel="stylesheet" href="[% version('/js/fancybox/jquery.fancybox-1.3.4.css') %]"> <!--[if (lt IE 9) & (!IEMobile)]> <link rel="stylesheet" href="[% version('/cobrands/fixmystreet/layout.css') %]"> <![endif]--> @@ -27,23 +27,29 @@ [% INCLUDE 'tracking_code.html' %] </head> - <body> - -<div id="wrapper"><div id="wrapper2"><div id="wrapper3"> - - [% IF NOT title AND NOT c.req.path %]<h1 id="header" role="banner">[% ELSE %]<div id="header" role="banner"><a href="/">[% END - %]<img src="/cobrands/fixmystreet/fms-logo-flat.png" width=327 height=62 alt="[% loc('FixMyStreet') %]"> - [%- IF NOT title AND NOT c.req.path %]</h1>[% ELSE %]</a></div>[% END %] - - <ul id="meta"> - [% IF c.user_exists %] - <li>[% tprintf(loc('Signed in as %s'), c.user.name || c.user.email) %] - <li class="last"><a href="/auth/sign_out">[% loc('Sign out') %]</a></li> - [% ELSE %] - <li> </li> - [% END %] - </ul> - - <div id="mysociety" class="container" role="main"> - - [% INCLUDE 'debug_header.html' %] + <body class="[% bodyclass | html IF bodyclass %]"> + + <div class="wrapper"> + <div class="table-cell"> + <header id="site-header" role="banner"> + <div class="container"> + <a href="/" id="site-logo">FixMyStreet</a> + <a href="#main-nav" id="nav-link">Main Navigation</a> + </div> + </header> + + <div id="user-meta"> + [% IF c.user_exists %] + <p> + [% tprintf(loc('Hi %s'), c.user.name || c.user.email) %] + <a href="/auth/sign_out">[% loc('sign out') %]</a> + </p> + [% ELSE %] + <!-- <a href="/auth">[% loc('Sign in') %]</a> --> + [% END %] + </div> + + <div class="container"> + <div class="content[% " $mainclass" | html IF mainclass %]" role="main"> + + <!-- [% INCLUDE 'debug_header.html' %] --> diff --git a/templates/web/fixmystreet/index.html b/templates/web/fixmystreet/index.html new file mode 100644 index 000000000..605e428a3 --- /dev/null +++ b/templates/web/fixmystreet/index.html @@ -0,0 +1,100 @@ +[%# Assumes fixmystreet cobrand is using FMS map template - for bonus points preload all the right map elements. %] +[% map_js = BLOCK %] +<script> +yepnope.addPrefix( 'preload', function ( resource ) { + resource.noexec = true; + return resource; +}); +Modernizr.load({ + load: [ + "preload![% version('/js/OpenLayers.fixmystreet.js') %]", + "preload![% version('/js/map-OpenLayers.js') %]", + "preload![% version('/js/map-bing-ol.js') %]", + "preload![% version('/js/jquery.ba-hashchange.min.js') %]" + ] +}); +</script> +[% END %] + +[% INCLUDE 'header.html', title => '' , bodyclass => 'frontpage fullwidthpage' %] + +[% IF error %] + <p class="error">[% error %]</p> +[% END %] + + +<div id="front-main"> + <div id="front-main-container"> + <h1>[% loc('Report, view, or discuss local problems') %]</h1> + + <h2>[% loc('(like graffiti, fly tipping, broken paving slabs, or street lighting)') %]</h2> + + [% + question + = c.cobrand.enter_postcode_text() + || loc("Enter a nearby GB postcode, or street name and area"); + %] + + <form action="[% c.uri_for('/around') %]" method="get" name="postcodeForm" id="postcodeForm"> + <label for="pc">[% question %]:</label> + <div> + <input type="text" name="pc" value="" id="pc" size="10" maxlength="200" placeholder="[% loc('e.g. ‘B2 4QA’ or ‘Tib St, Manchester’') %]"> + <input type="submit" value="[% loc('Go') %]" id="submit"> + </div> + </form> + </div> +</div> + +<div class="tablewrapper"> + <div id="front-howto"> + <h2>[% loc('How to report a problem') %]</h2> + + <ol class="big-numbers"> + <li>[% question %]</li> + <li>[% loc('Locate the problem on a map of the area') %]</li> + <li>[% loc('Enter details of the problem') %]</li> + <li>[% loc('We send it to the council on your behalf') %]</li> + </ol> + + <section class="full-width"> + [% INCLUDE "front/stats.html" %] + [% TRY %][% INCLUDE "front/tips.html" %][% CATCH file %][% END %] + </section> + </div> + + + [% + recent_photos = c.cobrand.recent_photos(5); + %] + + [% IF recent_photos.size %] + <div id="front-recently"> + <h2>[% loc('Recently reported problems') %]</h2> + + <section class="full-width"> + <ul class="issue-list-a"> + [% FOREACH p IN recent_photos %] + <li> + <a href="/report/[% p.id %]"> + <div class="text"> + <h4>[% p.title | html %]</h4> + <small>[% prettify_epoch( p.confirmed_local.epoch, 1 ) %]</small> + </div> + <div class="img"> + <img alt="[% p.title | html %]" title="[% p.title | html %]" height="60" width="90" src="/photo/[% p.id %].fp.jpeg"> + </div> + </a> + </li> + [% END %] + </ul> + </section> + + </div> + [% END %] +</div> + + +<!-- [% TRY %][% INCLUDE 'front/news.html' %][% CATCH file %][% END %] --> + + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/my/my.html b/templates/web/fixmystreet/my/my.html new file mode 100644 index 000000000..687c5686e --- /dev/null +++ b/templates/web/fixmystreet/my/my.html @@ -0,0 +1,86 @@ +[% + PROCESS "maps/${map.type}.html" IF problems.size; + INCLUDE 'header.html', title = loc('Your Reports'), bodyclass = 'mappage' +%] + +[% IF problems.size %] + [% map_html %] + </div> + <div id="side"> +[% ELSE %] + <div id="skipped-map"> +[% END %] + +<h1>[% loc('Your Reports') %]</h1> + +[% INCLUDE 'pagination.html', + pager = problems_pager, + param = 'p' +%] + +[% FOREACH p = problems.confirmed %] + [% IF loop.first %]<h2>[% loc('Open reports') %]</h2>[% END %] + [% INCLUDE problem %] +[% END %] + +[% FOREACH p = problems.fixed %] + [% IF loop.first %]<h2>[% loc('Fixed reports') %]</h2>[% END %] + [% INCLUDE problem %] +[% END %] + +[% FOREACH p = problems.closed %] + [% IF loop.first %]<h2>[% loc('Closed reports') %]</h2>[% END %] + [% INCLUDE problem %] +[% END %] + +[%# FOREACH p = problems.unconfirmed; + IF loop.first; + '<h2>' _ loc('Unconfirmed reports') _ '</h2>'; + END; + INCLUDE problem; +END %] + +[% FOREACH u IN updates %] + [% IF loop.first %] + <h2>[% loc('Your updates') %]</h2> + [% INCLUDE 'pagination.html', + pager = updates_pager, + param = 'u' + %] + <ul class="issue-list full-width"> + [% END %] + + <li>“[% u.text | html %]” + – <a href="[% c.uri_for( '/report', u.problem_id ) %]#update_[% u.id %]">[% u.problem.title | html %]</a>. + <p><small class="council_sent_info"> + [% tprintf( loc("Added %s"), prettify_epoch( u.confirmed_local.epoch, 'date' ) ) %] + </small></p> + </li> + [% "</ul>" IF loop.last %] +[% END %] + +</div> + +[% INCLUDE 'footer.html' %] + +[% BLOCK problem %] + [% "<ul class='issue-list-a full-width'>" IF loop.first %] + + <li> + <a href="[% c.uri_for( '/report', p.id ) %]"> + <div class="text"> + <h4>[% p.title | html %]</h4> + <small> + [% IF p.whensent %] + [% tprintf( loc("Reported %s, to %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ), p.body(c) ) %] + [% ELSE %] + [% tprintf( loc("Reported %s"), prettify_epoch( p.confirmed_local.epoch, 'date' ) ) %] + [% END %] + </small> + </div> + </a> + </li> + + [% "</ul>" IF loop.last %] +[% END %] + diff --git a/templates/web/fixmystreet/pagination.html b/templates/web/fixmystreet/pagination.html new file mode 100644 index 000000000..4f4d00a79 --- /dev/null +++ b/templates/web/fixmystreet/pagination.html @@ -0,0 +1,15 @@ +[% IF pager.last_page > 1 %] +<section class="full-width"> + <p class="pagination"> + [% IF pager.previous_page %] + <a class="prev" href="[% c.req.uri_with({ $param => pager.previous_page }) %]">Previous</a> + [% END %] + + [% pager.first %] to [% pager.last %] of [% pager.total_entries %] + + [% IF pager.next_page %] + <a class="next" href="[% c.req.uri_with({ $param => pager.next_page }) %]">Next</a> + [% END %] + </p> +</section> +[% END %] diff --git a/templates/web/fixmystreet/questionnaire/index.html b/templates/web/fixmystreet/questionnaire/index.html new file mode 100644 index 000000000..3b23c81cd --- /dev/null +++ b/templates/web/fixmystreet/questionnaire/index.html @@ -0,0 +1,109 @@ +[% + PROCESS "maps/${map.type}.html"; + INCLUDE 'header.html', title = loc('Questionnaire'), bodyclass = 'mappage' +%] + +[% map_html %] + +[% INCLUDE 'report/updates.html' %] + +</div> +<div id="side"> + + <menu id="problems-nav" class="tab-nav"> + <ul> + <li><a id="questionnaire_tab" href="#questionnaire">[% loc('Questionnaire') %]</a></li> + <li><a id="report_tab" href="#report">[% loc( 'Your report' ) %]</a></li> + </ul> + </menu> + + <div id="questionnaire" class="issue-list-a tab"> + [% INCLUDE questionnaire_form %] + </div> + + <div id="report" class="issue-list-a tab"> + [% INCLUDE 'report/_main.html' %] + </div> +</div> + +[% INCLUDE 'footer.html' %] + +[% BLOCK questionnaire_form %] +<h1>[% loc('Questionnaire') %]</h1> + +<form method="post" action="/questionnaire/submit" id="questionnaire" +[%- IF c.cobrand.allow_photo_upload -%] + enctype="multipart/form-data" +[%- END -%] +> + +<input type="hidden" name="token" value="[% token | html %]"> + +<p> +[% loc('The details of your problem are available from the other tab above.') %] +[% loc('Please <a class="tab_link" href="#report">take a look</a> at the updates that have been left.') IF updates %] +</p> + +[% IF errors %] +<ul class="error"> +<li>[% errors.join("</li>\n<li>") %]</li> +</ul> +[% END %] + +<p> +[% loc('An update marked this problem as fixed.') IF problem.is_fixed %] +[% loc('Has this problem been fixed?') %] +</p> + +<p> +<input type="radio" name="been_fixed" id="been_fixed_yes" value="Yes"[% ' checked' IF been_fixed == 'Yes' %]> +<label class="inline" for="been_fixed_yes">[% loc('Yes') %]</label> +<input type="radio" name="been_fixed" id="been_fixed_no" value="No"[% ' checked' IF been_fixed == 'No' %]> +<label class="inline" for="been_fixed_no">[% loc('No') %]</label> +<input type="radio" name="been_fixed" id="been_fixed_unknown" value="Unknown"[% ' checked' IF been_fixed == 'Unknown' %]> +<label class="inline" for="been_fixed_unknown">[% loc('Don’t know') %]</label> +</p> + +[% UNLESS answered_ever_reported %] +<p>[% loc('Have you ever reported a problem to a council before, or is this your first time?') %]</p> +<p> +<input type="radio" name="reported" id="reported_yes" value="Yes"[% ' checked' IF reported == 'Yes' %]> +<label class="inline" for="reported_yes">[% loc('Reported before') %]</label> +<input type="radio" name="reported" id="reported_no" value="No"[% ' checked' IF reported == 'No' %]> +<label class="inline" for="reported_no">[% loc('First time') %]</label> +</p> +[% END %] + +<p>[% loc('If you wish to leave a public update on the problem, please enter it here +(please note it will not be sent to the council). For example, what was +your experience of getting the problem fixed?') %]</p> + +<p><textarea name="update" style="max-width:90%" rows="7" cols="30">[% update | html %]</textarea></p> + +[% IF c.cobrand.allow_photo_upload %] +<div id="fileupload_normalUI"> + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + <label for="form_photo">[% loc('Photo:') %]</label> + <input type="file" name="photo" id="form_photo"> +</div> +[% END %] + +<div id="another_qn"> + <p>[% loc('Would you like to receive another questionnaire in 4 weeks, reminding you to check the status?') %]</p> + <p> + <input type="radio" name="another" id="another_yes" value="Yes"[% ' checked' IF another == 'Yes' %]> + <label for="another_yes">[% loc('Yes') %]</label> + <input type="radio" name="another" id="another_no" value="No"[% ' checked' IF another == 'No' %]> + <label for="another_no">[% loc('No') %]</label> + </p> +</div> + +<p><input type="submit" name="submit" value="[% loc('Submit questionnaire') %]"></p> + +</form> +[% END %] + diff --git a/templates/web/fixmystreet/report/_main.html b/templates/web/fixmystreet/report/_main.html new file mode 100644 index 000000000..9fbd82621 --- /dev/null +++ b/templates/web/fixmystreet/report/_main.html @@ -0,0 +1,20 @@ +<div class="problem-header"> + <h1>[% problem.title | html %]</h1> + + <p><em> + [% problem.meta_line(c) | html %] + [% IF problem.council %] + [% IF problem.whensent %] + <small class="council_sent_info"><br>[% problem.duration_string(c) %]</small> + [% END %] + [% ELSE %] + <br><small>[% loc('Not reported to council') %]</small> + [% END %] + </em></p> + + + [% add_links( problem.detail ) | html_para %] + + + [% INCLUDE 'report/photo.html' object=problem center=1 %] +</div>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/display.html b/templates/web/fixmystreet/report/display.html new file mode 100644 index 000000000..b7daeca24 --- /dev/null +++ b/templates/web/fixmystreet/report/display.html @@ -0,0 +1,195 @@ +[% + PROCESS "maps/${map.type}.html"; + + problem_title = problem.title _ ' - ' _ loc('Viewing a problem') | html; + INCLUDE 'header.html' + title = problem_title + rss = [ loc('Updates to this problem, FixMyStreet'), "/rss/$problem.id" ] + robots = 'index, nofollow' + bodyclass = 'mappage' +%] + +[% map_html %] + +</div> + + +[% IF banner.id %] + <div class="banner"> + <p id="[% banner.id %]">[% banner.text %]</p> + </div> +[% END %] + +[% INCLUDE 'report/_main.html' %] + +<div class="shadow-wrap"> + <ul id="key-tools"> + <li><a rel="nofollow" id="key-tool-report-abuse" class="abuse" href="[% c.uri_for( '/contact', { id => problem.id } ) %]">[% loc('Report abuse' ) %]</a></li> + <li><a rel="nofollow" id="key-tool-report-updates" class="feed" href="[% c.uri_for( '/alert/subscribe', { id => problem.id } ) %]">[% loc('Get updates' ) %]</a></li> + <li><a class="chevron" id="key-tool-problems-nearby" href="[% c.uri_for( '/around', { lat => short_latitude, lon => short_longitude } ) %]">[% loc( 'Problems nearby' ) %]</a></li> + </ul> + +<div id="report-updates-data" class="hidden-js"> + <form action="[% c.uri_for( '/alert/subscribe' ) %]" method="post"> + <p><a href="[% c.uri_for( '/rss', problem.id ) %]"> + <img src="/i/feed.png" width="16" height="16" title="[% loc('RSS feed') %]" alt="[% loc('RSS feed of updates to this problem' ) %]" border="0" style="float: right"> + </a></p> + <p>[% loc('Receive email when updates are left on this problem.' ) %]</p> + <fieldset> + <label class="hidden n" for="alert_rznvy">[% loc('Your email') %]</label> + <div class="form-txt-submit-box"> + <input type="email" name="rznvy" id="alert_rznvy" value="[% email | html %]" size="30" placeholder="[% loc('Your email') %]"> + <input class="green-btn" type="submit" value="[% loc('Subscribe') %]"> + </div> + <input type="hidden" name="id" value="[% problem.id %]"> + <input type="hidden" name="type" value="updates"> + </fieldset> + </form> +</div> + +</div> + +[% INCLUDE 'report/updates.html' %] + +<div id="update_form"> + <h2>[% loc( 'Provide an update') %]</h2> + + [% IF c.cobrand.moniker != 'emptyhomes' %] + <div class="general-sidebar-notes"> + <p>[% loc( 'Please note that updates are not sent to the council. If you leave your name it will be public. Your information will only be used in accordance with our <a href="/faq#privacy">privacy policy</a>' ) %]</p> + </div> + [% END %] + + [% INCLUDE 'errors.html' %] + + <form method="post" action="[% c.uri_for( '/report/update' ) %]" name="updateForm" class="validate"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %]> + <fieldset> + <input type="hidden" name="submit_update" value="1"> + <input type="hidden" name="id" value="[% problem.id | html %]"> + + <label for="form_update">[% loc( 'Update' ) %]</label> + [% IF field_errors.update %] + <div class='form-error'>[% field_errors.update %]</div> + [% END %] + <textarea rows="7" cols="30" name="update" id="form_update" placeholder="[% loc('Please write your update here') %]" required>[% update.text | html %]</textarea> + + [% IF c.user && c.user.belongs_to_council( problem.council ) %] + <label for="form_state">[% loc( 'State' ) %]</label> + <select name="state" id="form_state"> + [% FOREACH state IN [ ['confirmed', loc('Open')], ['investigating', + loc('Investigating')], ['planned', loc('Planned')], ['in progress', + loc('In Progress')], ['closed', loc('Closed')], ['fixed', loc('Fixed')] ] %] + <option [% 'selected ' IF state.0 == problem.state %] value="[% state.0 %]">[% state.1 %]</option> + [% END %] + </select> + [% ELSE %] + [% IF problem.is_fixed AND c.user_exists AND c.user.id == problem.user_id %] + + <input type="checkbox" name="reopen" id="form_reopen" value="1"[% ' checked' IF update.mark_open %]> + <label class="inline" for="form_reopen">[% loc('This problem has not been fixed') %]</label> + + [% ELSIF !problem.is_fixed %] + + <div class="checkbox-group"> + <input type="checkbox" name="fixed" id="form_fixed" value="1"[% ' checked' IF update.mark_fixed %]> + <label class="inline" for="form_fixed">[% loc('This problem has been fixed') %]</label> + </div> + + [% END %] + [% END %] + + [% IF c.cobrand.allow_photo_upload %] + <div id="fileupload_normalUI"> + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <p>[% loc('You have already attached a photo to this update, attaching another one will replace it.') %]</p> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + <label for="form_photo">[% loc('Photo') %]</label> + [% IF field_errors.photo %] + <p class='form-error'>[% field_errors.photo %]</p> + [% END %] + <input type="file" name="photo" id="form_photo"> + </div> + [% END %] + + [% IF c.user_exists %] + + [% INCLUDE name %] + + <input class="final-submit green-btn" type="submit" id="update_post" value="[% loc('Post') %]"> + + + [% ELSE %] + + <label for="form_rznvy">[% loc('Email' ) %]</label> + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" name="rznvy" id="form_rznvy" value="[% update.user.email | html %]" placeholder="[% loc('Your email address' ) %]" required> + + <div id="form_sign_in"> + <h3>[% loc("Now to submit your update…") %]</h3> + <h2>[% loc("Do you have a FixMyStreet password?") %]</h2> + + <div id="form_sign_in_yes" class="form-box"> + <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5> + + <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label> + [% IF field_errors.password %] + <p class='form-error'>[% field_errors.password %]</p> + [% END %] + <div class="form-txt-submit-box"> + <input type="password" name="password_sign_in" id="password_sign_in" value="" placeholder="[% loc('Your password') %]"> + <input class="green-btn" type="submit" name="submit_sign_in" id="submit_sign_in" value="[% loc('Post') %]"> + </div> + + <div class="checkbox-group"> + <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> + <label class="inline n" for="remember_me">[% loc('Keep me signed in on this computer') %]</label> + </div> + </div> + <div id="form_sign_in_no" class="form-box"> + <h5>[% loc('<strong>No</strong> Let me confirm my update by email') %]</h5> + + [% INCLUDE name %] + + <label for="password_register">[% loc('Password (optional)') %]</label> + + <div class="form-txt-submit-box"> + <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" name="submit_register" id="submit_register" value="[% loc('Post') %]"> + </div> + </div> + </div> + + [% END %] + </fieldset> + </form> +</div> + + + +[% INCLUDE 'footer.html' %] + +[% BLOCK name %] + <label for="form_name">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" name="name" id="form_name" value="[% update.name || c.user.name | html %]" placeholder="[% loc('Your name') %]"> + + <div class="general-sidebar-notes"> + <p class="dark">[% loc('We never show your email') %]</p> + <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> + </div> + + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' UNLESS update.anonymous %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + <div class="checkbox-group"> + <input type="checkbox" name="add_alert" id="form_add_alert" value="1"[% ' checked' IF add_alert %]> + <label class="inline" for="form_add_alert">[% loc( 'Alert me to future updates' ) %]</label> + </div> +[% END %] diff --git a/templates/web/fixmystreet/report/new/category.html b/templates/web/fixmystreet/report/new/category.html new file mode 100644 index 000000000..095cd7c2e --- /dev/null +++ b/templates/web/fixmystreet/report/new/category.html @@ -0,0 +1,10 @@ +[% FILTER collapse %] +[% IF category_options.size %] + <label for='form_category'>[% category_label | html %]</label> + <select name='category' id='form_category'[% ' onchange="form_category_onchange()"' IF category_extras.size %]> + [% FOREACH cat_op IN category_options %] + <option value='[% cat_op | html %]'[% ' selected' IF report.category == cat_op %]>[% cat_op | html %]</option> + [% END %] + </select> +[% END %] +[% END -%] diff --git a/templates/web/fixmystreet/report/new/category_extras.html b/templates/web/fixmystreet/report/new/category_extras.html new file mode 100644 index 000000000..c2a213225 --- /dev/null +++ b/templates/web/fixmystreet/report/new/category_extras.html @@ -0,0 +1,24 @@ +<div id="category_meta"> + [%- IF report_meta %] + [%- category = report.category %] + <h4>Additional Information</h4> + [%- FOR meta IN category_extras.$category %] + [%- meta_name = meta.code -%] + + <label for="form_[% meta_name %]">[% meta.description _ ':' %]</label> + [% IF field_errors.$meta_name %] + <p class='form-error'>[% field_errors.$meta_name %]</p> + [% END -%] + [% IF meta.exists('values') %] + <select name="[% meta_name %]" id="form_[% meta_name %]"[% meta.required == 'true' ? ' required' : '' %]> + [% FOR option IN meta.values.value.keys %] + <option value="[% meta.values.value.$option.key %]">[% option %]</option> + [% END %] + </select> + [% ELSE %] + <input type="text" value="[% report_meta.$meta_name | html %]" name="[% meta_name %]" id="form_[% meta_name %]"[% meta.required == 'true' ? ' required' : '' %]> + [% END %] + + [%- END %] + [%- END %] +</div>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/new/councils_text.html b/templates/web/fixmystreet/report/new/councils_text.html new file mode 100644 index 000000000..1da5746c1 --- /dev/null +++ b/templates/web/fixmystreet/report/new/councils_text.html @@ -0,0 +1,9 @@ +[% FILTER collapse %] +[% IF area_ids_to_list.size == 0 %] + [% PROCESS 'report/new/councils_text_none.html' %] +[% ELSIF area_ids_to_list.size == all_councils.size %] + [% PROCESS 'report/new/councils_text_all.html' %] +[% ELSE %] + [% PROCESS 'report/new/councils_text_some.html' %] +[% END %] +[% END -%] diff --git a/templates/web/fixmystreet/report/new/councils_text_all.html b/templates/web/fixmystreet/report/new/councils_text_all.html new file mode 100644 index 000000000..fb10ec4fd --- /dev/null +++ b/templates/web/fixmystreet/report/new/councils_text_all.html @@ -0,0 +1,19 @@ +<p> +[% IF all_councils.${area_ids_to_list.0}.type == 'LBO' %] +[% + tprintf( + loc('All the information you provide here will be sent to <strong>%s</strong> or a relevant local body such as <strong>TfL</strong>, via the London Report-It system.'), + all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + ); +%] +[% ELSE %] +[% + tprintf( + loc('All the information you provide here will be sent to <strong>%s</strong>.'), + all_council_names.join( '</strong>' _ loc(' or ') _ '<strong>' ) + ); +%] +[% END %] + +[% loc('The subject and details of the problem will be public, plus your name if you give us permission.') %] +</p>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/new/councils_text_none.html b/templates/web/fixmystreet/report/new/councils_text_none.html new file mode 100644 index 000000000..992d030c0 --- /dev/null +++ b/templates/web/fixmystreet/report/new/councils_text_none.html @@ -0,0 +1,20 @@ +<p>[% + + nget( + "We do not yet have details for the council that covers this location.", + "We do not yet have details for the councils that cover this location.", + all_councils.size + ); +%] +[% + loc("If you submit a problem here the subject and details of the problem will be public, but the problem will <strong>not</strong> be reported to the council."); +%] +[% + tprintf( + loc("You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."), + all_council_names.join( loc(' or ') ), + c.cobrand.contact_email, + c.cobrand.contact_email + ); + +%]</p>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/new/councils_text_some.html b/templates/web/fixmystreet/report/new/councils_text_some.html new file mode 100644 index 000000000..9f123fb9a --- /dev/null +++ b/templates/web/fixmystreet/report/new/councils_text_some.html @@ -0,0 +1,28 @@ +<p> +[% loc('All the information you provide here will be sent to') %] + +[% FOREACH council_id IN area_ids_to_list %] + [% loc( ' or ') IF ! loop.first %] + <strong>[% all_councils.$council_id.name %]</strong> + [%- '.' IF loop.last %] +[% END %] + +[% + loc('The subject and details of the problem will be public, plus your name if you give us permission.'); +%] +[% + nget( + "We do <strong>not</strong> yet have details for the other council that covers this location.", + "We do <strong>not</strong> yet have details for the other councils that cover this location.", + missing_details_councils.size + ); +%] +[% + tprintf( + loc("You can help us by finding a contact email address for local problems for %s and emailing it to us at <a href='mailto:%s'>%s</a>."), + missing_details_council_names.join( loc(' or ') ), + c.cobrand.contact_email, + c.cobrand.contact_email + ); +%] +</p>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/new/fill_in_details.html b/templates/web/fixmystreet/report/new/fill_in_details.html new file mode 100644 index 000000000..fa783ab64 --- /dev/null +++ b/templates/web/fixmystreet/report/new/fill_in_details.html @@ -0,0 +1,36 @@ +[% + SET class = ''; + SET class = 'mappage' IF report.used_map; + PROCESS "maps/${map.type}.html" IF report.used_map; + INCLUDE 'header.html', title => loc('Reporting a problem'), bodyclass => class +%] + +[% IF report.used_map %] + +<form action="[% c.uri_for('/report/new') %]" method="post" name="mapForm" id="mapForm"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %] class="validate"> + [% IF c.req.params.map_override %] + <input type="hidden" name="map_override" value="[% c.req.params.map_override | html %]"> + [% END %] + + <input type="hidden" name="pc" value="[% pc | html %]"> + +[% ELSE %] + +<form action="[% c.uri_for('/report/new') %]" method="post" name="mapSkippedForm"[% IF c.cobrand.allow_photo_upload %] enctype="multipart/form-data"[% END %] class="validate"> + <input type="hidden" name="pc" value="[% pc | html %]"> + <input type="hidden" name="skipped" value="1"> + +[% END %] + + <input type="hidden" name="latitude" id="fixmystreet.latitude" value="[% short_latitude | html %]"> + <input type="hidden" name="longitude" id="fixmystreet.longitude" value="[% short_longitude | html %]"> + + [% IF report.used_map %] + [% map_html %] + </div> + [% END %] + + [% PROCESS 'report/new/fill_in_details_form.html' %] +</form> + +[% INCLUDE 'footer.html' %] diff --git a/templates/web/fixmystreet/report/new/fill_in_details_form.html b/templates/web/fixmystreet/report/new/fill_in_details_form.html new file mode 100644 index 000000000..283f748ba --- /dev/null +++ b/templates/web/fixmystreet/report/new/fill_in_details_form.html @@ -0,0 +1,209 @@ +<div id="report-a-problem-main"> + <h1>[% loc('Reporting a problem') %]</h1> + + [% IF js %] + <p id="councils_text"> + [% + tprintf( + loc('All the information you provide here will be sent to <strong>%s</strong>.'), + loc('the local council') + ); + %] + [% loc('The subject and details of the problem will be public, plus your name if you give us permission.') %] + </p> + [% ELSE %] + [% PROCESS 'report/new/councils_text.html' %] + [% END %] + + <div id="report-a-problem-sidebar"> + <!-- + The text for this section needs checking, but I can't work out which bit comes from where + --> + <div class="sidebar-tips"> + [% IF report.used_map %] + [% IF partial_token %] + <p id="unknown">[% loc('Please note your report has <strong>not yet been sent</strong>. Choose a category and add further information below, then submit.') %]</p> + [% END %] + <p>[% loc('You have located the problem at the point marked with a green pin on the map. If this is not the correct location, simply click on the map again. ') %]</p> + [% END %] + + <p> + [% IF report.used_map %] + [% INCLUDE 'report/new/fill_in_details_text.html' %] + [% ELSE %] + [% loc('Please fill in the form below with details of the problem, and describe the location as precisely as possible in the details box.') %] + [% END %] + </p> + </div> + + <div class="sidebar-notes"> + [% INCLUDE 'report/new/notes.html' %] + </div> + + </div> + + [% INCLUDE 'errors.html' %] + <fieldset> + <div id="problem_form"> + + [% INCLUDE 'report/new/form_heading.html' %] + + + [% IF field_errors.council %] + <p class='form-error'>[% field_errors.council %]</p> + [% END %] + + + + <label for="form_title">[% loc('Subject') %]</label> + [% IF field_errors.title %] + <p class='form-error'>[% field_errors.title %]</p> + [% END %] + <input type="text" value="[% report.title | html %]" name="title" id="form_title" placeholder="[% loc('Provide a title') %]" required> + + <label for="form_detail">[% loc('Details') %]</label> + [% IF field_errors.detail %] + <p class='form-error'>[% field_errors.detail %]</p> + [% END %] + <textarea rows="7" cols="26" name="detail" id="form_detail" placeholder="[% loc('Please fill in details of the problem.') %]" required>[% report.detail | html %]</textarea> + + [% IF js %] + <div id="form_category_row"> + <label class="inline" for="form_category">[% loc('Category') %]</label> + <select name="category" id="form_category" required><option>[% loc('Loading...') %]</option></select> + </div> + [% ELSE %] + [% IF category_options.size %] + [% IF field_errors.category %] + <p class='form-error'>[% field_errors.category %]</p> + [% END %] + + [% PROCESS "report/new/category.html" %] + [% END %] + [% END %] + + [%- IF category_extras %] + [% PROCESS "report/new/category_extras.html" %] + [%- END %] + + [% IF c.cobrand.allow_photo_upload %] + [% IF field_errors.photo %] + <p class='form-error'>[% field_errors.photo %]</p> + [% END %] + + + [% IF upload_fileid || report.photo %] + [% IF upload_fileid %] + <img align="right" src="/photo/[% upload_fileid %].temp.jpeg" alt=""> + <input type="hidden" name="upload_fileid" value="[% upload_fileid %]"> + [% END %] + + <p>[% loc('You have already attached a photo to this report, attaching another one will replace it.') %]</p> + + [% IF report.photo %] + <img align="right" src="/photo/[% report.id %].jpeg"> + [% END %] + [% END %] + + <label for="form_photo">[% loc('Photo') %]</label> + <input type="file" name="photo" id="form_photo"> + [% END %] + + [% IF c.user_exists %] + <div class="form-box"> + <label for="form_may_show_nameme">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" class="validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + + [%# if there is nothing in the name field then set check box as default on form %] + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + + <div class="general-sidebar-notes"> + <p>[% loc('We never show your email address or phone number.') %]</p> + </div> + + <label for="form_phone">[% loc('Phone number (optional)') %]</label> + <input class="" type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]"> + + <div class="form-txt-submit-box"> + <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]"> + </div> + </div> + [% ELSE %] + + <label for="form_email">[% loc('Your email') %]</label> + [% IF field_errors.email %] + <p class='form-error'>[% field_errors.email %]</p> + [% END %] + <input type="email" value="[% report.user.email | html %]" name="email" id="form_email" placeholder="[% loc('Please enter your email address') %]" required> + + <div id="form_sign_in"> + <h3>[% loc("Now to submit your report…") %]</h3> + <h2>[% loc("Do you have a FixMyStreet password?") %]</h2> + + <div id="form_sign_in_yes" class="form-box"> + + <h5>[% loc('<strong>Yes</strong> I have a password') %]</h5> + + <label class="hidden-js n" for="password_sign_in">[% loc('Yes I have a password') %]</label> + <div class="form-txt-submit-box"> + [% IF field_errors.password %] + <p class='form-error'>[% field_errors.password %]</p> + [% END %] + <input type="password" name="password_sign_in" id="password_sign_in" placeholder="[% loc('Your password') %]" value=""> + <input class="green-btn" type="submit" id="submit_sign_in" name="submit_sign_in" value="[% loc('Submit') %]"> + </div> + + <div class="checkbox-group"> + <input type="checkbox" id="remember_me" name="remember_me" value='1'[% ' checked' IF remember_me %]> + <label class="n inline" for="remember_me">[% loc('Keep me signed in on this computer') %]</label> + </div> + </div> + + <div id="form_sign_in_no" class="form-box"> + <h5>[% loc('<strong>No</strong> Let me confirm my report by email') %]</h5> + + <label for="form_may_show_nameme">[% loc('Name') %]</label> + [% IF field_errors.name %] + <p class='form-error'>[% field_errors.name %]</p> + [% END %] + <input type="text" class="form-focus-trigger validName" value="[% report.name | html %]" name="name" id="form_name" placeholder="[% loc('Your name') %]"> + + [%# if there is nothing in the name field then set check box as default on form %] + <div class="checkbox-group"> + <input type="checkbox" name="may_show_name" id="form_may_show_name" value="1"[% ' checked' IF !report.anonymous %]> + <label class="inline" for="form_may_show_name">[% loc('Show my name publicly') %]</label> + </div> + + <div class="general-sidebar-notes form-focus-hidden"> + <p class="dark">[% loc('We never show your email address or phone number.') %]</p> + <p>[% loc('Providing a password is optional, but doing so will allow you to more easily report problems, leave updates and manage your reports.') %]</p> + </div> + + <label class="form-focus-hidden" for="form_phone">[% loc('Phone number (optional)') %]</label> + <input class="form-focus-hidden" type="text" value="[% report.user.phone | html %]" name="phone" id="form_phone" placeholder="[% loc('Your phone number') %]"> + + <label class="form-focus-hidden" for="password_register">[% loc('Password (optional)') %]</label> + + <div class="form-txt-submit-box form-focus-hidden"> + <input type="password" name="password_register" id="password_register" value="" placeholder="[% loc('Enter a password') %]"> + <input class="green-btn" type="submit" id="submit_register" name="submit_register" value="[% loc('Submit') %]"> + </div> + </div> + </div> + + [% END %] + </div> + </fieldset> + + [% IF partial_token %] + <input type="hidden" name="partial" value="[% partial_token.token %]"> + [% END %] + + <input type="hidden" name="submit_problem" value="1"> +</div> diff --git a/templates/web/fixmystreet/report/new/fill_in_details_text.html b/templates/web/fixmystreet/report/new/fill_in_details_text.html new file mode 100644 index 000000000..8b5e3a2ad --- /dev/null +++ b/templates/web/fixmystreet/report/new/fill_in_details_text.html @@ -0,0 +1,13 @@ +[% + IF area_ids_to_list.size != 0; + loc('The council won’t be able to help unless you leave as much +detail as you can. Please describe the exact location of the problem (e.g. on a +wall), what it is, how long it has been there, a description (and a photo of +the problem if you have one), etc.'); + IF category_extras; + ' ' _ loc('Some categories may require additional information.'); + END; + ELSE; + loc('Please fill in details of the problem below.'); + END; +%] diff --git a/templates/web/fixmystreet/report/new/form_heading.html b/templates/web/fixmystreet/report/new/form_heading.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/fixmystreet/report/new/form_heading.html diff --git a/templates/web/fixmystreet/report/new/notes.html b/templates/web/fixmystreet/report/new/notes.html new file mode 100644 index 000000000..5a885abd0 --- /dev/null +++ b/templates/web/fixmystreet/report/new/notes.html @@ -0,0 +1,9 @@ +<p>[% loc("Please note:") %]</p> + +<ul class="plain-list"> + <li>[% loc("We will only use your personal information in accordance with our <a href=\"/faq#privacy\">privacy policy.</a>") %]</li> + <li>[% loc("Please be polite, concise and to the point.") %]</li> + <li>[% loc("Please do not be abusive — abusing your council devalues the service for all users.") %]</li> + <li>[% loc("Writing your message entirely in block capitals makes it hard to read, as does a lack of punctuation.") %]</li> + <li>[% loc("Remember that FixMyStreet is primarily for reporting physical problems that can be fixed. If your problem is not appropriate for submission via this site remember that you can contact your council directly using their own website.") %]</li> +</ul>
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/new/report_import.html b/templates/web/fixmystreet/report/new/report_import.html new file mode 100644 index 000000000..7aa105afe --- /dev/null +++ b/templates/web/fixmystreet/report/new/report_import.html @@ -0,0 +1,92 @@ +[% INCLUDE 'header.html', title => 'External import' %] + +<h1>External import</h1> + +<p>You may inject problem reports into FixMyStreet programatically using this +simple interface. Upon receipt, an email will be sent to the address given, +with a link the user must click in order to check the details of their report, +add any other information they wish, and then submit to the council. + +<p>This interface returns a plain text response; either <samp>SUCCESS</samp> if +the report has been successfully received, or if not, a list of errors, one per +line each starting with <samp>ERROR:</samp>. + +<p>You may submit the following information by POST to this URL +(i.e. <samp>[% c.uri_for('/import') %]</samp> ):</p> + +<style type="text/css" media="screen"> + input { + /* Hide the form elements - they are just here for simpler testing */ + display: none; + } +</style> + +<form method="POST" action="/import" enctype="multipart/form-data"> + +<dl> + <dt>service</dt> + <dd> + <em>Required</em>. + Name of application/service using this interface. + <input type="text" name="service" /> + </dd> + + <dt>id</dt> + <dd> + Unique ID of a user/device, for possible future use.<br> + <small>(e.g. used by Flickr import to know which accounts to look at)</small> + <input type="text" name="id" /> + </dd> + + <dt>subject</dt> + <dd> + <em>Required</em>. Subject of problem report. + <input type="text" name="subject" /> + </dd> + + <dt>detail</dt> + <dd> + Main body and details of problem report. + <input type="text" name="detail" /> + </dd> + + <dt>name</dt> + <dd> + <em>Required</em>. Name of problem reporter. + <input type="text" name="name" /> + </dd> + + <dt>email</dt> + <dd> + <em>Required</em>. Email address of problem reporter. + <input type="text" name="email" /> + </dd> + + <dt>phone</dt> + <dd> + Telephone number of problem reporter. + <input type="text" name="phone" /> + </dd> + + <dt>easting / northing</dt> + <dt>lat / lon</dt> + <dd> + Location of problem report. You can either supply eastings/northings, or WGS84 latitude/longitude. + <input type="text" name="easting" /> + <input type="text" name="northing" /> + <input type="text" name="lat" /> + <input type="text" name="lon" /> + </dd> + + <dt>photo</dt> + <dd> + Photo of problem (JPEG only). + <input type="file" name="photo" /> + </dd> +</dl> + +<input type="submit" /> + +</form> + +[% INCLUDE 'footer.html' %]
\ No newline at end of file diff --git a/templates/web/fixmystreet/report/photo.html b/templates/web/fixmystreet/report/photo.html new file mode 100644 index 000000000..02ab9228b --- /dev/null +++ b/templates/web/fixmystreet/report/photo.html @@ -0,0 +1,8 @@ +[% IF c.cobrand.allow_photo_display && object.photo %] +[% photo = object.get_photo_params %] +<div class="update-img"> + [% IF photo.url_full %]<a href="[% photo.url_full %]" rel="fancy">[% END + %]<img alt="Photo of this report" [% IF photo.height %]height="[% photo.height %]" width="[% photo.width %]"[% END %] src="[% photo.url %]"> + [%- IF photo.url_full %]<span>zoom</span></a>[% END %] +</div> +[% END %] diff --git a/templates/web/fixmystreet/report/updates.html b/templates/web/fixmystreet/report/updates.html new file mode 100644 index 000000000..508e2aacc --- /dev/null +++ b/templates/web/fixmystreet/report/updates.html @@ -0,0 +1,36 @@ +[% FOREACH update IN updates.all %] +[% IF loop.first %] +<section class="full-width"> + <h4 class="static-with-rule">[% loc('Updates') %]</h4> + <ul class="issue-list"> +[% END %] + <li> + <div class="update-wrap"> + <div class="update-text"> + [% add_links( update.text ) | html_para %] + + <p class="meta-2"> + <a name="update_[% update.id %]"></a> + [% IF update.anonymous || update.name == '' %] + [% tprintf( loc( 'Posted anonymously at %s' ), prettify_epoch( update.confirmed_local.epoch ) ) -%] + [%- ELSIF update.user.from_council %] + [% user_name = update.user.name | html %] + [% tprintf( loc( 'Posted by %s (<strong>%s</strong>) at %s' ), user_name, update.user.council, prettify_epoch( update.confirmed_local.epoch ) ) -%] + [%- ELSE %] + [% tprintf( loc( 'Posted by %s at %s' ), update.name, prettify_epoch( update.confirmed_local.epoch ) ) | html -%] + [%- END -%] + [%- c.cobrand.extra_update_meta_text(update) -%] + [%- ", " _ loc( 'marked as fixed' ) IF update.mark_fixed %] + [%- ", " _ loc( 'reopened' ) IF update.mark_open %] + [%- ", " _ tprintf(loc( 'marked as %s' ), update.meta_problem_state) IF update.problem_state %] + </p> + </div> + + [% INCLUDE 'report/photo.html' object=update %] + </div> + </li> +[% IF loop.last %] + </ul> +</section> +[% END %] +[% END %]
\ No newline at end of file diff --git a/templates/web/fixmystreet/reports/cobrand_stats.html b/templates/web/fixmystreet/reports/cobrand_stats.html new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/templates/web/fixmystreet/reports/cobrand_stats.html diff --git a/templates/web/fixmystreet/reports/council.html b/templates/web/fixmystreet/reports/council.html new file mode 100755 index 000000000..cf5729fb3 --- /dev/null +++ b/templates/web/fixmystreet/reports/council.html @@ -0,0 +1,131 @@ +[% IF ward %] + [% name = "$ward.name, $council.name" + thing = loc('ward') + %] +[% ELSE %] + [% name = council.name + thing = loc('council') + %] +[% END %] + +[% + PROCESS "maps/${map.type}.html"; + INCLUDE 'header.html', + title = tprintf(loc('%s - Summary reports'), name) + context = 'reports' + bodyclass = 'mappage' + rss = [ tprintf(loc('Problems within %s, FixMyStreet'), name), rss_url ] +%] + +[% map_html %] +</div> + +<div id="side"> + +<h1 id="reports_heading"> + [% IF ward %] + [% ward.name %]<span>, </span><a href="[% council_url %]">[% council.name %]</a> + [% ELSE %] + [% council.name %] + [% END %] +</h1> + +[% IF council.generation_high == 10 AND c.cobrand.country == 'GB' %] + <p class="alert">This council no longer exists. + [% IF council.name.match('Penwith|Kerrier|Carrick|Restormel|Caradon|North Cornwall') %] + Its area is now covered by <a href="/reports/Cornwall">Cornwall Council</a>. + [% ELSIF council.name.match('Durham|Easington|Sedgefield|Teesdale|Wear Valley|Derwentside|Chester le Street') %] + Its area is now covered by <a href="/reports/Durham+County">Durham County Council</a>. + [% ELSIF council.name.match('Blyth Valley|Wansbeck|Castle Morpeth|Tynedale|Alnwick|Berwick upon Tweed') %] + Its area is now covered by <a href="/reports/Northumberland">Northumberland County Council</a>. + [% ELSIF council.name.match('North Shropshire|Oswestry|Shrewsbury and Atcham|South Shropshire|Bridgnorth') %] + Its area is now covered by <a href="/reports/Shropshire">Shropshire Council</a>. + [% ELSIF council.name.match('Salisbury|West Wiltshire|Kennet|North Wiltshire') %] + Its area is now covered by <a href="/reports/Wiltshire">Wiltshire Council</a>. + [% ELSIF council.name.match('Ellesmere Port and Neston|Vale Royal|Chester') %] + Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a>. + [% ELSIF council.name.match('Macclesfield|Congleton|Crewe and Nantwich') %] + Its area is now covered by <a href="/reports/Cheshire+East">Cheshire East Council</a>. + [% ELSIF council.name.match('Mid Bedfordshire|South Bedfordshire') %] + Its area is now covered by <a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>. + [% ELSIF council.name.match('Cheshire') %] + Its area is now covered by <a href="/reports/Cheshire+West+and+Chester">Cheshire West and Chester Council</a> or + <a href="/reports/Cheshire+East">Cheshire East Council</a>. + [% ELSIF council.name.match('Bedfordshire') %] + Its area is now covered by <a href="/reports/Bedford">Bedford Borough Council</a> or + <a href="/reports/Central+Bedfordshire">Central Bedfordshire Council</a>. + [% END %] + </p> +[% ELSE %] + <div class="shadow-wrap"> + <ul id="key-tools"[% IF NOT children.size %] class="singleton"[% END %]> + <li><a rel="nofollow" id="key-tool-updates-area" class="feed" href="[% rss_url %]">[% tprintf(loc('Get updates of problems in this %s'), thing) %]</a></li> + [% IF children.size %] + <li><a href="#council_wards" id="key-tool-wards" class="chevron">[% loc('Wards of this council') %]</a></li> + [% END %] + </ul> + </div> +[% END %] + +[% INCLUDE 'reports/cobrand_stats.html' %] + +[% IF children.size %] +<section id="council_wards" class="hidden-js"> + <h2>[% loc('Wards of this council') %]</h2> + <p>[% loc('Follow a ward link to view only reports within that ward.') %]</p> + <ul class="issue-list-a full-width"> + [% FOR child IN children.values.sort('name') %] + <li><a href="[% child.url %]"><span class="text">[% child.name %]</span></a></li> + [% END %] + </ul> +</section> +[% END %] + +[% IF c.cobrand.moniker == 'fixmystreet' %] +<p class="promo"> + FixMyStreet is now available for local council websites. + <a href="/for-councils">Find out more</a>. +</p> +[% END %] + +[% INCLUDE 'pagination.html', param = 'p' %] + +<section class="full-width"> + [% INCLUDE column + problems = problems.${council.id} + %] +</section> + +[% INCLUDE 'pagination.html', param = 'p' %] + +</div> +[% INCLUDE 'footer.html' %] + +[% BLOCK column %] +[% IF problems %] + +<ul class="issue-list-a"> +[% FOREACH problem IN problems %] + <li> + <a href="[% c.uri_for('/report/' _ problem.id) %]"> + <div class="text"> + <h4>[% problem.title | html %]</h4> + <small>[% prettify_epoch( problem.confirmed, 1 ) %]</small> + [% IF problem.councils > 1 %] <small>[% loc('(sent to both)') %]</small> [% END %] + [% IF c.cobrand.moniker != 'emptyhomes' %] + [% IF problem.councils == 0 %] <small>[% loc('(not sent to council)') %]</small> [% END %] + [% END %] + </div> + [% IF problem.photo %] + <div class="img"> + <img height="60" width="90" src="/photo/[% problem.id %].fp.jpeg" alt=""> + </div> + [% END %] + </a> + </li> +[% END %] +</ul> + +[% END %] +[% END %] + diff --git a/templates/web/fixmystreet/reports/index.html b/templates/web/fixmystreet/reports/index.html new file mode 100755 index 000000000..96367d4bb --- /dev/null +++ b/templates/web/fixmystreet/reports/index.html @@ -0,0 +1,37 @@ +[% INCLUDE 'header.html', title = loc('Summary reports'), bodyclass => 'fullwidthpage' %] + +<h1>[% loc('All Reports') %]</h1> + +<div class="intro"> + <p> + [% loc('This is a summary of all reports on this site; select a particular council to see the reports sent there.') %] + [% loc('Greyed-out lines are councils that no longer exist.') %] + </p> +</div> + +<table cellpadding="3" cellspacing="1" border="0" class="nicetable"> + <thead> + <th class="title">[% loc('Name') %]</th> + <th class="data">[% loc('New <br>problems') %]</th> + <th class="data">[% loc('Older <br>problems') %]</th> + <th class="data">[% loc('Old / unknown <br>problems') %]</th> + <th class="data">[% loc('Recently <br>fixed') %]</th> + <th class="data">[% loc('Older <br>fixed') %]</th> + </thead> + + [% FOREACH area IN areas_info_sorted %] + <tr align="center" + [%- IF area.generation_high == 10 %] class="gone" + [%- ELSIF ! (loop.count % 2) %] class="a" + [%- END %]> + <td class="title"><a href="[% area.url %]">[% area.name %]</a></td> + <td class="data">[% open.${area.id}.new or 0 %]</td> + <td class="data">[% open.${area.id}.older or 0 %]</td> + <td class="data">[% open.${area.id}.unknown or 0 %]</td> + <td class="data">[% fixed.${area.id}.new or 0 %]</td> + <td class="data">[% fixed.${area.id}.old or 0 %]</td> + </tr> + [% END %] +</table> + +[% INCLUDE 'footer.html' pagefooter => 'yes' %] diff --git a/templates/web/fixmystreet/reports/ward.html b/templates/web/fixmystreet/reports/ward.html new file mode 100755 index 000000000..8b65ffb28 --- /dev/null +++ b/templates/web/fixmystreet/reports/ward.html @@ -0,0 +1 @@ +[% INCLUDE reports/council.html %] diff --git a/templates/web/fixmystreet/static/for_councils.html b/templates/web/fixmystreet/static/for_councils.html new file mode 100644 index 000000000..2e83c7c6c --- /dev/null +++ b/templates/web/fixmystreet/static/for_councils.html @@ -0,0 +1,46 @@ +[% INCLUDE 'header.html', title = loc('FixMyStreet for Councils'), bodyclass = 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><strong>FixMyStreet for Councils</strong></li> + <li>Summary</li> + <li><a href="/for-councils/faq">Questions and Answers</a></li> + <li><i>Email us at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a></i></li> + </ul> + </aside> +</div> + +<h1>Shift your problem reporting online: FixMyStreet for Councils</h1> + +<p>Councils everywhere are looking to move street issue reporting online, to make +savings and improve services for their residents. <strong>FixMyStreet for +Councils</strong> is explicitly designed to support the shift to digital. + +<p>FixMyStreet is the most popular online street issue reporting application in +the UK. It’s known for prioritising usability and accessibility – and people +love to use it. With very little cost and effort, your staff and your website’s +users can enjoy its simple yet powerful features. + +<p>Embedding FixMyStreet in your council’s website is simple. As a cloud-based +service, it requires no development work from your team. We will match your +site’s look and feel seamlessly, and provide robust technical support and free +training to council users. We also offer a mobile web version of the product +as well as iPhone and Android apps branded for councils. + +<p>We can also integrate FixMyStreet with your CRM or customer management system, +to ensure automatic two-way updates, saving you even more time and money. + +<img src="/cobrands/fixmystreet/barnet.png" alt="" style="float: right; padding: 0.25em; border: solid 1px #ccc; margin: 1em;"> + +<p>mySociety, the non-profit behind FixMyStreet, is a software provider to over +forty local authorities in the UK. We understand the challenges that councils +face in channel shift, and will bring our passion and expertise to support your +journey. + +<p><a href="http://www.mysociety.org/wp/wp-content/uploads/2012/02/FixMyStreet_for_councils_2012.pdf">FixMyStreet for Councils brochure</a> + +<p>Have questions? Read our <a href="/for-councils/faq">Questions and Answers for Councils</a> +or get in touch at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>. + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/static/for_councils_faq.html b/templates/web/fixmystreet/static/for_councils_faq.html new file mode 100644 index 000000000..16c7d5cfe --- /dev/null +++ b/templates/web/fixmystreet/static/for_councils_faq.html @@ -0,0 +1,359 @@ +[% INCLUDE 'header.html', title = loc('Questions and Answers :: FixMyStreet for Councils'), bodyclass = 'twothirdswidthpage' %] + +<div class="sticky-sidebar"> + <aside> + <ul class="plain-list"> + <li><strong>FixMyStreet for Councils</strong></li> + <li><a href="/for-councils">Summary</a></li> + <li>Questions and Answers <ul> + <li><a href="#general">General information</a></li> + <li><a href="#implementing">Implementing FixMyStreet for Councils</a></li> + <li><a href="#reporting">Problem reporting</a></li> + <li><a href="#best">Getting the best out of FixMyStreet</a></li> + </ul> </li> + <li><i>Email us at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a></i></li> + </ul> + </aside> +</div> + +<h1>Questions about FixMyStreet for Councils</h1> + +<h2 id="general">General information</h2> + +<dl> + +<dt>What is FixMyStreet For Councils?</dt> + +<dd> +<p>FixMyStreet is a street issue-reporting and mapping application +designed specifically for local authority websites. + +<p>It integrates seamlessly with council websites, fully reflecting their look +and feel. All copy, categories, information, reporting fields and links can be +customised to the specific needs of the council. FixMyStreet can also be +connected to a CRM or fault management system for automatic two-way updates. + +<p>The software is open source and is based on mySociety’s award-winning +FixMyStreet.com platform, which has been operating for five years. It is the +most widely-used street issue web application in the UK, sending over 5,000 +reports to local authorities each month. +</dd> + +<dt>Who built it?</dt> + +<dd> +FixMyStreet for Councils was built by mySociety Ltd, a company registered in +England and Wales, company number 03277032. mySociety Ltd is wholly owned by +the charity UK Citizens Online Democracy (charity number 1076346). All profits +are returned to the charity. +</dd> + +<dt>What are the benefits for councils?</dt> + +<dd> +<p>FixMyStreet for Councils will save you and your residents time. It will reduce duplicate reports and encourage the shift of street issue reporting to the web. + +<p>It also places a highly usable, attractive application on your website, and a very simple channel for responding to your residents if you wish to do so. + +<p>Most councils get a high volume of telephone calls to report street issues - by moving even a small proportion of that online, you can make significant savings over time. +</dd> + +<dt>Why is FixMyStreet more effective than standard reporting forms?</dt> + +<dd> +<p>As a rule, people do not enjoy filling in onerous forms on the web. They +often span several pages and require a lot of personal information – so many +people resort to calling instead. + +<p>Reporting on FixMyStreet is extremely simple and quick. The user pinpoints +the location of the problem on a map, provides a description and a photo if +they have one, and their email address. You’ll receive the email address with +the problem report, so your officers can get in touch if they need to. + +<p>Using a map as a way to locate an issue is very useful – people often don’t +know the exact nearest address, but they can show where it is on a map. + +<p>Finally, FixMyStreet allows you to comment on a report or update its status +– your update will be available for everyone interested to see on the website, +further reducing avoidable contact. +</dd> + +<dt>What is the difference between FixMyStreet.com and FixMyStreet for Councils?</dt> + +<dd> +<p>FixMyStreet.com is a national street issue reporting website that enables +anyone anywhere in Great Britain to report a problem to their council. The +reports are delivered to councils by email. + +<p>FixMyStreet for Councils is a product for council websites to enable their +residents to report issues to them. It becomes a natural part of the council’s +site, can be included in the list of top tasks, integrates council-relevant +information, and can be linked with council’s backoffice. + +<p>It uses the same software platform as the FixMyStreet.com site; issues +reported to a council on its own website are also shown on FixMyStreet.com, and +vice-versa. Read the Implementation FAQ above to learn why this approach really +works. + +</dd> + +<dt>Which councils already have FixMyStreet?</dt> + +<dd> +The London Borough of Bromley will soon be launching our upgraded FixMyStreet +for Councils product. For existing implementations, have a look at the +<a href="http://barnet.fixmystreet.com/">London Borough of Barnet’s website</a> +or <a href="http://southampton.fixmystreet.com/">Southampton City Council’s +website</a>. Meanwhile, West Berkshire Council is an example of a back-office +integration - they receive problems reported on FixMyStreet directly into their +CRM. +</dd> + +<dt>Is there a mobile version of the FixMyStreet for Councils product?</dt> + +<dd> +<p>As more and more people use their smartphones for online tasks, we make it +easy for councils to enable mobile street issue reporting. We offer two +products: +<ul> +<li>A mobile web version of FixMyStreet – this presents users with a +mobile-optimised version of a council FixMyStreet web app, and enables mobile +reporting by simply entering a URL of the council’s web reporting page in their +mobile browser +<li>Mobile Apps - some users do prefer to use downlodable apps, so we are +currently developing iPhone and Android Apps with the capability to include +council branding. If you are interested, <a +href="mailto:hello@mysociety.org">let us know</a>. +</ul> +</dd> + +<dt>What is the cost to councils?</dt> + +<dd> +<ul> +<li>The front end product costs £3,500 in year one, reducing to £1,500 per annum in future years. +<li>The mobile web version costs £3,000 in year one and £1,000 per annum subsequently. +<li>Back-end integration costs depend on the complexity of your systems. Prices start at £3,500 in year one, then £1,500 per annum. +</ul> + +<p>The prices are all-inclusive, covering installation, updates, unlimited +problem reports and user training. There are no hidden fees. Please see <a +href="http://www.mysociety.org/wp/wp-content/uploads/2012/02/FixMyStreet_for_councils_2012.pdf">our +brochure</a> for more detail on what’s included. + +<p>There’s no commitment beyond the first 12 months, so you won’t be locked +into a lengthy contract. + +</dl> +<h2 id="implementing">Implementing FixMyStreet for Councils</h2> +<dl> + +<dt>How easy is it to implement FixMyStreet on a council website?</dt> + +<dd> +Extremely easy. Because we run FixMyStreet as a cloud service, all you need to do is to provide details of your website’s colour scheme, fonts, and any customised links or information you’d like to include. We will do all the work in setting up your issue reporting application. The implementation can take as little as a week, and requires minimal work from your web team. +</dd> + +<dt>Can we integrate FixMyStreet with the council’s CRM or fault management system?</dt> + +<dd> +<p>Absolutely. Integrating with your back-office system ensures maximum efficiencies - all reports go straight into your database. When their status changes, updates can be automatically pushed out onto your website as well as to FixMyStreet.com. We are able to integrate with any back-office system. + +<p>We understand that each council has its own processes which have evolved over time. We will work with you to find the best integration solution to ensure minimum disruption to your work, while helping make your processes simpler and more streamlined. + +<p>If you’d like us to advise on the best integration options for you, get in touch. Our advice is completely free - we are always keen to talk to councils and learn about your needs. +</dd> + +<dt>What is the technical architecture of FixMyStreet?</dt> + +<dd> +<p>FixMyStreet for councils uses the same <a +href="https://github.com/mysociety/fixmystreet">open source code base</a> and +runs on the same servers as the national FixMyStreet site. At the same time it +has been designed to allow customisation of both design and functionality. +Using the URL of the site visited the code determines which version of +FixMyStreet to display and loads the appropriate design and customisations. + +<p>If you have back end integration then new reports to your council will be +sent to your CRM through the agreed mechanism ( e.g. Open311 ). If we cannot +send a report to you then it will be put back on the queue and we will try +again later so you won’t miss any reports. +</dd> + +<dt>Why is linking FixMyStreet for Councils with the national FixMyStreet.com website a good idea?</dt> + +<dd> + +<p>There are three key benefits. First, by using the same underlying platform we can spread the cost of maintaining and hosting the system across the national site and different council users. This helps to keep prices low. Plus, we carry out all the technical maintenance and support, so you don’t need to. + +<p>Second, issues reported on FixMyStreet.com are also shown on your Council’s website, avoiding duplicate reports by different residents. + +<p>Third, the customised features on your own FixMyStreet (such as categories, information you gather from customers, additional details on issues the council is not responsible for, etc) will also be reflected on FixMyStreet.com. So wherever your residents report issues, they will get the right features and information from the council. +</dd> + +<dt>Do you offer training?</dt> + +<dd> +Yes. We offer a free two-hour remote training session to your users. If your location is within two hours’ travel from one of our FixMyStreet team members, we will provide training in person. +</dd> + +<dt>What level of support do you provide after implementation?</dt> + +<dd> +<p>We will provide technical support, address any questions, and make tweaks to your system if required. We will also go out of our way to help you with non-technical issues based on our significant experience with online problem reporting. + +<p>Throughout our contract with you, we will always be available by email or on the phone, and will get back to you quickly. + +</dl> +<h2 id="reporting">Problem reporting</h2> +<dl> + +<dt>Can we customise report categories and information requested?</dt> + +<dd> +<p>Yes. You can add the categories most relevant to your council, and remove ones that are not. Your customised categories will appear on both your website’s FixMyStreet implementation, and on the national FixMystreet.com website. + +<p>You can also customise information requested for each issue type - for example, Southampton council asks its customers to report the approximate pothole size, to help prioritise its work. +</dd> + +<dt>How can we deal with issues that the council is not responsible for?</dt> + +<dd> +Most councils already get residents phoning up or emailing them about problems not within their remit. FixMyStreet can help reduce this in two ways: +We can include the most commonly misreported issues in the categories list so when a users selects these, we can give them alternative contact information. If there are known geographical areas that council is not responsible for, we can alert users to that when they click on the map, provided you have given us this information. +Alternatively, if you have contact details in relevant organisations, we can instead email reports to them, while telling the user that these are not the council’s responsibility. +</dd> + +<dt>How are reports delivered to the council?</dt> + +<dd> +<p>If your FixMyStreet is not integrated with your CRM or back-office system, you will receive reports by email to email addresses that you specify. Different type of problems can be sent to different addresses if you wish. + +<p>With back-office integration, reports will go straight into your CRM or fault management system. +</dd> + +<dt>What information is provided in a problem report?</dt> + +<dd> +<p>You will receive the following information: +<ul> +<li>Issue category +<li>Precise location reported (in both latitude/longitude and easting/northing) +<li>Subject and issue description (we encourage users to give as much detail as possible) +<li>Link to a photo of the problem if the user has added one (we don’t send the actual photos so that we don’t clog your system) +<li>The user’s verified email address and phone number if given, so you can contact them directly if you wish +<li>A link to the issue on FixMyStreet for you to update the issue if required. +</ul> +</dd> + +<dt>How precise is location information provided in FixMyStreet?</dt> + +<dd> +<p>Very. The user clicks on a map that includes useful information for +reporting, such as building positions and footpaths, so they can tell you the +location as precisely as they can. + +<p>This approach also helps capture superior location data even when the user +does not know the exact address. + +<p>We will send you the co-ordinates for the point clicked on the map, as well +as the nearest street address as an additional data point. You can also view +the map directly on the issue report page. +</dd> + +<dt>Can we reflect more granular report statuses than just open and fixed?</dt> + +<dd> +Yes. As a client council you get a selection of problem statuses, including: +Investigating, Planned, In Progress, Fixed and Closed. +</dd> + +</dl> +<h2 id="best">Getting the best out of FixMyStreet</h2> +<dl> + +<dt>Can we add photos showing that council has dealt with an issue?</dt> + +<dd> +Yes - you can easily post a photo as an update to a report on your website. These will also be shown on the national FixMyStreet.com site. +</dd> + +<dt>What can we do to help shift users to online reporting instead of calling us up?</dt> + +<dd> +Online reporting is better for you and your residents, as it’s quick, effective and cheap. Good technology will certainly encourage the shift, but to make it fully effective you could do a a few things to help. +Direct residents to report issues on your website when they are in the telephone queue +When someone reports an issue to your call centre, tell them that next time they can do it much quicker online +Encourage council employees or other relevant organisations to report issues online +Respond to problem reports online, so that your residents know you engage well through this channel. +</dd> + +<dt>How can a council respond to issue reports?</dt> + +<dd> +<p>If you choose the back-office integration option, when an issue status +changes in your CRM or fault management system, it can also automatically +update on both your website and the national FixMyStreet website. This assumes +that your system can support automatic updates (most systems can). + +<p>If your back-office is not integrated, you can still easily respond by +changing the status manually on the website, or adding a few words of +commentary. This simple process is much quicker than a telephone call or email. +</dd> + +<dt>How can we contact the person submitting the report if we need more information?</dt> + +<dd> +Our software encourages users to submit as much information as possible, along with photographs. If you do need additional details, you can either post your question as an update to the issue online, or email the user directly (you will get their email address with the issue report). +</dd> + +<dt>We are unable to fix every problem, in particular in the current budget environment. How do we deal with this?</dt> + +<dd> +<p>Whether reported online or not, there are some issues that a council will +decide not to fix because it needs to prioritise more important problems. + +<p>Our online reporting application gives you a direct channel to explain to +your residents why certain problems cannot be addressed. This will lead to a +more open, constructive relationship. This may be a big culture change - we are +happy to support you with our experience in this area. + +<p>When deciding not to deal with a problem, you can close it so that it does +not show as an open problem. +</dd> + +<dt>We are worried about being swamped with high volume of online reports. What can we do?</dt> + +<dd> +While the volume of online reporting is likely to increase (a good thing, as it +replaces phone calls and alerts you to issues you didn’t know about), it +usually happens gradually, giving you plenty of time to adjust. We can stage +the introduction of your new reporting app to make the process even smoother. +</dd> + +<dt>Does FixMyStreet for Councils offer reporting functionality?</dt> + +<dd> +<p>We are currently working on a new reporting dashboard for councils, +accessible through a separate council log-in. This will have detailed reporting +on issue categories, timelines, statuses and help you identify emerging +hotspots. + +<p>Any new council implementation from April 2012 will have this new +functionality. Please get in touch if you’d like more detail. +</dd> + +<dt>I’d like to discuss options for my council. What do I do?</dt> + +<dd> +<p>Just drop us a line to <a +href="mailto:hello@mysociety.org">hello@mysociety.org</a> and we will get back +to you as soon as possible. + +<p>We will be happy to advise you on the options, and recommend an +implementation approach to fit your needs based on our experience. +</dd> + +</dl> + +[% INCLUDE 'footer.html' pagefooter = 'yes' %] diff --git a/templates/web/fixmystreet/static/fun.html b/templates/web/fixmystreet/static/fun.html new file mode 100644 index 000000000..57a74a0d7 --- /dev/null +++ b/templates/web/fixmystreet/static/fun.html @@ -0,0 +1,35 @@ +[% INCLUDE header.html + title = 'Weird and Wonderful reports' +%] + +<h1>Weird and Wonderful reports</h1> + +<p>Here are some of the best or strangest reports we’ve seen on FixMyStreet. +They’ve all been fixed, and in one case could have saved lives! +Do let us know if you find any more.</p> + +<ul class="plain-list"> + + <li><img src='http://www.fixmystreet.com/photo/9468.jpeg' align='right' hspace=8> + <h2>Dumped Piano (right)</h2> + <p>The reporter of this problem summed it up with their report, + which consisted solely of the one character “!”. — + <a href='http://www.fixmystreet.com/report/9468'>Problem report</a> + + <li><h2>Mad Seagull</h2> + <p>“A seagull is attacking various cars within this road. He starts at around 05:45 every morning and continues until around 19:30. This causes a lot of noisy banging and wakes up children.” — + <a href='http://www.fixmystreet.com/report/2722'>Problem report</a> + + <li><img src='http://www.fixmystreet.com/photo/6553.jpeg' align='right' hspace=8> + <h2>Boxes full of cheese dumped (right)</h2> + <p>“About a dozen boxes full of mozzarella cheese have been dumped opposite 3 rufford street. if it warms up we could have nasty road topping problem (seriously there is a lot of cheese)” — + <a href='http://www.fixmystreet.com/report/6553'>Problem report</a> + + <li><h2>Dangerous Nivea Billboard</h2> + <p>“The Nivea 'Oxygen is a wonderful thing' billboard here has a device on it releasing bubbles and foam. This is blowing into the road which is both distracting and dangerous to drivers. A large ball of foam hit my windscreen unexpectedly and nearly caused me to have an accident” — + <a href='http://www.fixmystreet.com/report/7552'>Problem report</a> + +</ul> + +[% INCLUDE footer.html %] + diff --git a/templates/web/fixmystreet/static/posters.html b/templates/web/fixmystreet/static/posters.html new file mode 100644 index 000000000..760397b02 --- /dev/null +++ b/templates/web/fixmystreet/static/posters.html @@ -0,0 +1,39 @@ +[% INCLUDE header.html + title = 'Publicity material' +%] + +[% + badge = '<a href="http://www.fixmystreet.com/"> <img src="http://www.fixmystreet.com/i/fms-badge.jpeg" alt="FixMyStreet - report, view or discuss local problems" border="0"></a>' +%] + +<h1>Publicity Material</h1> + + <p>Copy and paste the text below to add this badge to your site:</p> + <p>[% badge %]</p> + <textarea onclick="this.select()">[% badge | html %]</textarea> + <p><small>(thanks to Lincolnshire Council for the image)</small></p> + + <p>Here are some posters and flyers you can use to publicise FixMyStreet:</p> + <img hspace="5" src="/posters/poster.png" alt='Example poster'> + <h2>Posters</h2> + <ul class="issue-list-a full-width"> + <li><a href='/posters/fixmystreet-poster-a4.pdf'>A4, colour</a> + <li><a href='/posters/fixmystreet-poster-a4-bw.pdf'>A4, black and white</a> + <li><a href='/posters/fixmystreet-poster-a4-bw-low-ink.pdf'>A4, black and white, low ink</a> + <li><a href='/posters/fixmystreet-poster-a4-bw-outlined.pdf'>A4, black and white, outlined</a> + </ul> + <h2>Posters with tags</h2> + <ul class="issue-list-a full-width"> + <li><a href='/posters/fixmystreet-poster-tags.pdf'>A4, colour</a> + <li><a href='/posters/fixmystreet-poster-tags-bw.pdf'>A4, black and white</a> + <li><a href='/posters/fixmystreet-poster-tags-bw-low-ink.pdf'>A4, black and white, low ink</a> + <li><a href='/posters/fixmystreet-poster-tags-only.pdf'>A4, tags only</a> + </ul> + <h2>Flyers</h2> + <ul class="issue-list-a full-width"> + <li><a href='/posters/fixmystreet-flyers-colour.pdf'>4 x A6, colour</a> + <li><a href='/posters/fixmystreet-flyers-bw-outlined.pdf'>4 x A6, black and white, outlined</a> + <li><a href='/posters/fixmystreet-flyers-bw-low-ink.pdf'>4 x A6, black and white, low ink</a> + </ul> + +[% INCLUDE footer.html %] diff --git a/web/cobrands/fixmystreet/_colours.scss b/web/cobrands/fixmystreet/_colours.scss index 936a98c34..8179f470d 100644 --- a/web/cobrands/fixmystreet/_colours.scss +++ b/web/cobrands/fixmystreet/_colours.scss @@ -3,3 +3,9 @@ $colour_dark: #4e1602; $colour: #c23704; $colour_alt: #ffeeaa; + + +$primary: #FFD000; + +$contrast1: #00BD08; +$contrast2: #AA8D11;
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/_mixins.scss b/web/cobrands/fixmystreet/_mixins.scss new file mode 100644 index 000000000..f77152dd6 --- /dev/null +++ b/web/cobrands/fixmystreet/_mixins.scss @@ -0,0 +1,72 @@ +// Button reset +@mixin button-reset($c1: #eee, $c2: #ccc, $c3: #999, $c4: #333, $c5: #777, $c6: #999, $c7: #666, $c8: #fff){ + cursor:pointer; + font:{ + size: 0.875em; + family: 'Helvetica', 'Arial', sans-serif; + weight:bold; + } + text-transform:uppercase; + line-height: 1.375em; + padding:0.7em 0.5em 0.5em 0.5em; + margin:0; + width: auto; + height: auto; + @include border-radius(4px); + background: $c1; + @include background (linear-gradient($c1, $c2)) ; + border:1px solid $c3; + color:$c4; + &:hover{ + background:$c5; + @include background (linear-gradient($c6, $c5)); + text-decoration: none; + border:1px solid $c7; + color:$c8; + } +} + + + +// list resets +@mixin list-reset-copy { + padding-left:30px; + margin-bottom:20px; + li { + font-size:14px; + line-height:20px; + list-style:disc; + margin-bottom:10px; + background:none; + padding:0; + } +} + +@mixin list-reset-soft { + list-style-type:none; + padding: 0; + margin: 0; + li{ + list-style-type:none; + padding: 0; + margin: 0; + border: 0; + } +} + +@mixin list-reset { + list-style-type:none; + padding: 0; + margin: 0; + li{ + list-style-type:none; + padding: 0; + margin: 0; + border: 0; + float:left; + a { + float:left; + display:block; + } + } +} diff --git a/web/cobrands/fixmystreet/barnet.png b/web/cobrands/fixmystreet/barnet.png Binary files differnew file mode 100644 index 000000000..0b373fb30 --- /dev/null +++ b/web/cobrands/fixmystreet/barnet.png diff --git a/web/cobrands/fixmystreet/base.scss b/web/cobrands/fixmystreet/base.scss index 2eccad197..b0e312375 100644 --- a/web/cobrands/fixmystreet/base.scss +++ b/web/cobrands/fixmystreet/base.scss @@ -6,193 +6,1532 @@ @import "_h5bp"; @import "_colours"; +@import "_mixins"; +@import "compass"; + /* HEADINGS and TYPOGRAPHY */ @font-face { - font-family: 'MuseoSansRounded-500'; - src: url('fonts/MuseoSansRounded500.eot'); - src: url('fonts/MuseoSansRounded500.eot?#iefix') format('embedded-opentype'), - url('fonts/MuseoSansRounded500.woff') format('woff'), - url('fonts/MuseoSansRounded500.ttf') format('truetype'), - url('fonts/MuseoSansRounded500.svg#MuseoSansRounded-500') format('svg'); + font-family: 'MuseoSans'; + src: url('fonts/MuseoSans_300-webfont.eot'); + src: url('fonts/MuseoSans_300-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/MuseoSans_300-webfont.woff') format('woff'), + url('fonts/MuseoSans_300-webfont.ttf') format('truetype'), + url('fonts/MuseoSans_300-webfont.svg#MuseoSans300') format('svg'); + font-weight: normal; + font-style: normal; } -h1, h2, h3, h4, h5, h6, #header { - font-family: 'MuseoSansRounded-500', sans-serif; - font-weight: normal; +@font-face { + font-family: 'MuseoSans'; + src: url('fonts/MuseoSans_300_Italic-webfont.eot'); + src: url('fonts/MuseoSans_300_Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/MuseoSans_300_Italic-webfont.woff') format('woff'), + url('fonts/MuseoSans_300_Italic-webfont.ttf') format('truetype'), + url('fonts/MuseoSans_300_Italic-webfont.svg#MuseoSans300Italic') format('svg'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'MuseoSans'; + src: url('fonts/MuseoSans_500-webfont.eot'); + src: url('fonts/MuseoSans_500-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/MuseoSans_500-webfont.woff') format('woff'), + url('fonts/MuseoSans_500-webfont.ttf') format('truetype'), + url('fonts/MuseoSans_500-webfont.svg#MuseoSans500') format('svg'); + font-weight: bold; + font-style: normal; } +@font-face { + font-family: 'MuseoSans'; + src: url('fonts/MuseoSans_500_Italic-webfont.eot'); + src: url('fonts/MuseoSans_500_Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/MuseoSans_500_Italic-webfont.woff') format('woff'), + url('fonts/MuseoSans_500_Italic-webfont.ttf') format('truetype'), + url('fonts/MuseoSans_500_Italic-webfont.svg#MuseoSans500Italic') format('svg'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'Museo300-display'; + src: url('fonts/Museo300-Regular-webfont.eot'); + src: url('fonts/Museo300-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/Museo300-Regular-webfont.woff') format('woff'), + url('fonts/Museo300-Regular-webfont.ttf') format('truetype'), + url('fonts/Museo300-Regular-webfont.svg#Museo300') format('svg'); + font-weight: normal; + font-style: normal; +} + + /* Opera has a bug (from around 10.5 upwards to current 11.6) with showing the * table caption *at all* if the header is set to a font-face :( */ -noindex:-o-prefocus, #header { - font-family: sans-serif; +noindex:-o-prefocus, #site-header { + font-family: sans-serif; +} + + +body { + font-family: 'MuseoSans', 'Helvetica', 'Arial', sans-serif; + margin:0; + font-size:1em; + line-height:1.5; + color:#222; +} + + +p { + font-size: 1em; + font-weight: normal; + margin:0 0 1em 0; +} + +small{ + font-family: 'helvetica', 'arial',sans-serif; + font-style: italic; + font-size: 0.8125em; + line-height: 1.2307em; } -/* Headings fit within the baseline grid, skewed towards the bottom. As the h1 - * appears first, if it appears, it needs no margin at all. */ h1 { - font-size: 2em; - margin: 0; + font-family:'Museo300-display', 'Helvetica', 'Arial', sans-serif; + font-size: 2em; + line-height: 1em; + font-weight: normal; + margin-top: 0.5em; + margin-bottom: 0.5em; +} +#front-main h1 { + margin-top: 0.7em; +} +h1#reports_heading span { + display: none; +} +h1#reports_heading a { + display: block; + font-size: 50%; } h2 { - font-size: 1.5em; - line-height: 1; - margin: 1.5em 0 0.5em; + font-family:'Museo300-display', 'Helvetica', 'Arial', sans-serif; + font-size: 1.5em; /*24px*/ + line-height: 1.3333em; /*32px*/ + font-weight: normal; + margin-top: 1.333333333em; /*32px*/ + margin-bottom: 0.666666666em; /*16px*/ } h3 { - font-size: 1.25em; - line-height: 1.2; - margin: 1.8em 0 0.6em; + font-size: 1.25em; + line-height: 1.20em; + margin-top: 1.2em; + margin-bottom: 0.8em; + font-weight: bold } h4 { - font-size: 1.2em; - line-height: 1.25; - margin: 1.875em 0 0.625em; + font-size: 1em; + font-weight: bold; + margin-bottom: 1em; } -p { - margin: 0 0 1.5em; +// default list styles +ul, ol { + font-size: 1em; + margin-bottom: 2em; + margin-left: 2em; + padding:0; } -select, input, textarea { - font-size: 99%; - max-width: 95%; +li{ + margin-bottom: 0.5em; } -img { - max-width: 100%; +ul li{ + list-style: square; +} + +ol li { + list-style:decimal; } -/* LINKS */ +// lets you have a traditional ol but with nicely styled numbers +// for older browsers it just falls back to the normal ol +ol.big-numbers { + padding: 0; + margin: 0; + counter-reset: li; // reset counter to be 'li' instead of a number + > li { + position: relative; + list-style: none; + padding:0 0 0 2.5em; + margin-bottom:2em; + &:before { + content: counter(li); // set the content to be whatever the 'li' var is + counter-increment: li; // add to the counter var + position: absolute; + left: 0; + top:-0.2em; + color:#eeeeee; + line-height:1; + font: { + family: 'helvetica', 'arial', sans-serif; + weight:bold; + size:2.5em; + } + } + } +} + +dl { + margin: 0; + padding: 0; + dt { + font-size: 1em; + line-height: 1.5em; + font-weight: bold; + } + dd { + font-weight: 1em; + line-height: 1.5em; + margin:0 0 1em 0; + } +} + +blockquote { + p:before { + content: '“'; + } + p:after { + content: '”'; + } +} -a:link { - color: $colour; +pre { + font-family: monospace; } +img { + //do this otherwise IE will just not display + //any img without a height defined + height:auto; +} + +select, input, textarea { + font-size: 99%; + max-width: 95%; +} + + +// links +a, a:visited { - color: $colour_dark; + text-decoration:none; + color:#0BA7D1; + &:hover, + &:active { + text-decoration:underline; + color:#0D7CCE; + } } -a:active, a:hover { - color: #200; +// custom type +.small-print { + @extend small; + margin-bottom: 1.2307em; + color:#888888; +} +.meta{ + color:#555555; + font-style: italic; + margin-bottom: 0px; +} +.meta-2{ + font-family: 'helvetica', 'arial',sans-serif; + color:#888888; + font-style: italic; + font-size: 0.75em; } +h4.static{ + font-family: 'helvetica', 'arial',sans-serif; + text-transform: uppercase; + font-size: 0.875em; + line-height: 1.71428em; + color:#888; + margin-top: 2em; +} +h4.static-with-rule{ + @extend.static; + background: #f6f6f6; + border-top: 0.25em solid $primary; + margin-bottom:0.25em; + padding: 0.5em 1em; +} -/* LAYOUT */ +/* FORMS */ -/* header is a div containing a link on all pages bar the front page, when it - * is a h1 that is not a link. It should always display the same. */ -#header { - display: block; - margin: 0 0 0.5em 0; - font-size: 200%; +// input placeholders, these need to be on separate lines as if the browser +// can't understand a selector it will invalidate the whole line. +::-webkit-input-placeholder { + color: #888888; + font: { + style:italic; + size:0.9375em; + } +} +:-moz-placeholder { + color:#888888; + font: { + style:italic; + size:0.9375em; + } +} +:-ms-placeholder { + color:#888888; + font: { + style:italic; + size:0.9375em; + } +} +//this only gets used when the browser doesn't support @placeholder +.placeholder { + color:#888888; + font: { + style:italic; + size:0.9375em; + } +} - /* The link of the heading should not be underlined. */ - a { +// wrap anything inside the form in a fieldset to give +// us the right spacing +fieldset { + margin: 1em; +} + +input[type=text], +input[type=password], +input[type=email], +input[type=file], +textarea { + width: 100%; + // adjust so the sides line up + padding: 0.5em; + margin: 0 0 0 -0.5em; +} + +textarea { + border: 0.125em solid #888888; + @include border-radius(0.25em); + display: block; + font-size: 1em; + line-height: 1.5em; + font-family: 'helvetica', 'arial', sans-serif; + min-height:8em; +} + +input[type=text], +input[type=password], +input[type=email], +input[type=file] { + border: 0.125em solid #888888; + @include border-radius(0.25em); + display: block; + font-size: 1em; + line-height: 1em; +} +input[type=file] { + margin-bottom:1em; +} + +label{ + display: block; + margin-top: 1.25em; + margin-bottom: 0.25em; + font-weight: bold; + &.inline{ + display: inline; + padding: 0 2em 0 1em; + font-weight: normal; + } +} + +// grey background, full width box +.form-box { + margin: 0 -2em 0.25em -2em; + background:#eeeeee; + padding:1em 2em 1em 2em; + max-width:26em; + >input[type=text] { + margin-bottom:1em; + } + .title { + font-size:1.25em; + margin:0.5em 0; + } + h5 { + margin:0; + font: { + size:1.125em; + weight:normal; + } + strong { + font-size:2em; + margin-right:0.25em; + } + } +} +// IE6 doesn't extend the grey box back with the above negative margins, and +// the password box falls off screen for some reason. Just have boring margins, +// it looks okay. +.ie6 .form-box { + margin: 0 0 0.25em 0; +} + +.form-txt-submit-box { + min-height:3em; + input[type=password], + input[type=text], + input[type=email] { + width: 65%; + float:left; + } + input[type=submit] { + float:right; + width:28%; + margin-right:0.25em; + padding-top:0.7em; + padding-bottom:0.6em; + } +} + +.checkbox-group { + margin:1em 0; +} + + +// form errors +div.form-error, +p.form-error { + @include inline-block; + background:#ff0000; + color:#fff; + padding:0 0.5em; + margin:0 0 0 -0.5em; + @include border-radius(0.25em 0.25em 0 0); +} + +input.form-error, +textarea.form-error { + border-color:#ff0000; + @include border-radius(0 0.25em 0.25em 0.25em); +} + +ul.error { + background:#ff0000; + color:#fff; + padding:0 0.5em; + margin:0 0 0 -0.5em; + @include border-radius(0.25em); +} + +// don't display valid error boxes as now the page jump +// won't be until the user submits, which is fine +div.label-valid, +p.label-valid { + display:none !important; + visibility: hidden; +} + + + +/*** LAYOUT ***/ + +// Padding creates page margins on mobile +.container{ + padding: 0 1em; +} + +// Use full width to reverse .container margins +.full-width { + margin: 0 -1em; +} + +// #site-header creates grey bar in mobile +// .nav-wrapper-2 is used on desktop +#site-header{ + border-top: 0.25em solid $primary; + height: 3em; + @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); + .container { + min-height:4em; + } +} +#site-logo{ + display: block; + width: 175px; + height: 40px; + top: 0.4em; + background: url('images/sprite.png') -3px -3px no-repeat; + text-indent: -999999px; + position: absolute; + z-index:2; +} +.ie6 #site-logo { + background: url('images/ie_logo.gif') 0 -5px no-repeat; +} +// this is a skip to nav for mobile users only +#nav-link { + width: 50px; + height: 48px; + background: url('images/sprite.png') -5px -916px no-repeat; + display: block; + text-indent: -999999px; + position: absolute; + right:2em; + top:-2px; + &:hover { + top:2px; + } +} + + +#main-nav{ + ul{ + @include list-reset-soft; + li{ + a, span { + display: block; + padding: 0.5em 1em; + background:#f6f6f6; + color:#333; + font-size: 1.25em; + border-bottom: 0.25em solid #333; + } + a:hover{ + background: #333; + color:#fff; text-decoration: none; + } + } + &#mysoc-menu{ + li { + a { + background:$primary; + &#mysoc-logo { + background-image:url('images/sprite.png'); + background-repeat:no-repeat; + background-position:-240px -38px; + text-indent:-999999px; + } + } + } } + } } +.ie6 #main-nav ul#mysoc-menu li a#mysoc-logo { + background: url('images/ie_mysoc_logo.gif') center no-repeat; +} +//defines where the table caption is (login stuff on mob, nav menu on desktop) +.wrapper { + width:100%; + display:table; + caption-side:bottom; +} +// this is the user's logged in details or the login link etc +#user-meta { + p { + position: relative; + background:$primary; + padding:1em 6em 1em 1em; + a { + position: absolute; + right:1em; + @include inline-block; + text-transform:uppercase; + font-size:0.75em; + background:#333; + padding:0.25em 0.75em; + color:#fff; + @include border-radius(0.25em); + } + } +} + -#meta { - list-style-type: none; - margin: 0.5em 0; - padding: 0; - font-size: 0.875em; +// #key-tools is the list that's pulled out an stick to the bottom of the page of desktop, below is mostly just aesthetic +.shadow-wrap { + @extend .full-width; + ul#key-tools{ + @include list-reset-soft; + margin-bottom: 1em; + display: table; + width:100%; + li{ + display: table-cell; + vertical-align: bottom; + text-align: center; + border-right:0.25em solid #fff; + &:last-child { + border-right:none; + } + a { + display: block; + background-color: #f5f5f5; + background-repeat: no-repeat; + color:#333; + padding:4em 2em 1em 2em; + text-transform:uppercase; + font: { + size:0.6875em; + family: 'helvetica', 'arial', sans-serif; + } + &:hover, &.hover, &.active { + text-decoration:none; + background-color:#333; + color:#fff; + } + &.abuse { + background-image:url('images/sprite.png'); + background-position:center -2424px; + } + &.feed { + background-image:url('images/sprite.png'); + background-position:center -2563px; + } + &.chevron { + background-image:url('images/sprite.png'); + background-position:center -2716px; + } + &.hover, &.active { + background-image:url('images/sprite.png'); + background-position:center -2064px; + } + } + } + } +} + +//because display:table doesn't work we float +.ie6, .ie7 { + .shadow-wrap { + ul#key-tools{ + background:#f5f5f5; + li{ + float:left; + a { + padding-left:1.5em; + padding-right:3em; + } + } + } + } +} +.ie6 .shadow-wrap ul#key-tools li a { + &.abuse { + background-image:url('images/ie_key_tools_sprite.gif'); + background-position: right 0px; + } + &.feed { + background-image:url('images/ie_key_tools_sprite.gif'); + background-position: right -58px; + } + &.chevron { + background-image:url('images/ie_key_tools_sprite.gif'); + background-position: right -116px; + } + &:hover { + background-image:url('images/ie_key_tools_sprite_dark.gif'); + } +} + + +//footer blocks +#footer-mobileapps { + @extend .full-width; + padding:1em; + h4 { + margin:0; + } + ul { + @include list-reset-soft; li { - display: inline; - margin: 0; - padding: 0 0 0 0.25em; + border-bottom:1px solid #AFAFAF; + &:last-child { + border-bottom:none; + } + a { + display:block; + padding:0.5em 0; + } } - li.last { - border-left: solid 1px $colour_dark; + } +} + +#footer-help { + ul { + @include list-reset-soft; + li { + border-bottom:1px solid #AFAFAF; + &:last-child { + border-bottom:none; + } + h4 { + margin:0.75em 0 0.25em 0; + } + p { + font-size:0.75em; + } } + } } -.container { - position: relative; - margin: auto; - overflow: hidden; + + +/*BUTTONS*/ + +// Default style set for buttons, inputs and .btn class. Red and green class available. + +button, input[type=submit],.btn{ + @include button-reset; } -/* Three wrapper divs are used in the source. At large screen widths, the - * default background colour is $colour, in order for the footer to stay the - * same at any depth. So the outermost wrapper changes this back to white at - * full width; the second wrapper sets a maximum width for the main content, - * with a little padding so it never hits the browser edge, and centred; and - * the third wrapper is a full width table, so that a table caption can be used - * to have correct source order.*/ -#wrapper { - background: #fff; +.green-btn, +button.green-btn, +input.green-btn{ + @include button-reset(#9FDE23, #7FB900, #5B9700, #fff, #9FDE23, #7FB900, #5B9700, #fff); } -#wrapper2 { - max-width: 59em; - padding: 0.5em; - margin: 0 auto; +.red-btn, +button.red-btn, +input.red-btn{ + @include button-reset(#FF0038, #BF002A, #80001C, #fff, #FF0038, #BF002A, #80001C, #fff); } -#navigation { - display: table; - width: 100%; - border-top: solid 1px $colour; - padding-top: 1.5em; - margin: 1.5em 0; +.final-submit, +input.final-submit { + margin:1em 0.5em; + float:right; } -.nav { - display: table-cell; - // width: 50%; +.button-right, +.button-left, +a.button-right, +a.button-left { + @include inline-block; + cursor:pointer; + font-size: 1em; + line-height: 1; + margin:0; + border:1px solid #999; + color:#333; + background: #eee; + @include border-radius(4px); + &:hover{ + color:#fff; + background:#777; + text-decoration: none; + border:1px solid #666; + } } -.ie6, .ie7 { - .nav { - float: left; +.button-right, +a.button-right, +:hover.button-right, +a:hover.button-right { + padding:1em 3em 1em 1em; + background-image: url('images/sprite.png'); + background-repeat:no-repeat; + background-position:right -686px; +} + +.button-left, +a.button-left, +:hover.button-left, +a:hover.button-left { + padding:1em 1em 1em 3em; + background-image: url('images/sprite.png'); + background-repeat:no-repeat; + background-position:-18px -802px; +} + +.big-green-banner { + position: relative; + z-index:1000; + top:-1.75em; + background: $contrast1; + color: #fff; + padding:1em; + text: { + transform:uppercase; + align:center; + } + font-size:0.875em; + &:before { + content: ""; + left:-0.5em; + top:0; + position: absolute; + width: 0; + height: 0; + border-left: 0.5em solid transparent; + border-bottom: 0.5em solid #4B8304; + } +} + +.banner { + position: relative; + z-index:1100; + p { + position: absolute; + top:-1.95em; + right:0; + @include inline-block; + font-size:0.6875em;//11px + line-height:1em; + padding:0.5em 1em; + margin:0; + color:#1a1a1a; + background: #ccc; + text: { + transform:uppercase; + align:center; } + &:before { + content: ""; + left:-0.5em; + top:0; + position: absolute; + width: 0; + height: 0; + border-left: 0.5em solid transparent; + border-bottom: 0.5em solid #888; + } + &#fixed { + color:#fff; + background: $contrast1; + &:before { + border-bottom: 0.5em solid #4B8304; + } + } + } +} + +/*OTHER*/ + +.plain-list { + @include list-reset-soft; + li { + margin-bottom:1em; + } } -#footer { - color: #fff; - padding: 0.5em; - background-color: #3c3c3c; - background-image: url(/cobrands/fixmystreet/texture.png); +.issue-list{ + margin: 0 0 1em 0; + padding: 0; + border-bottom: 0.25em solid $primary; + li{ + list-style: none; + background: #f6f6f6; + margin: 0.25em 0 0 0; + padding: 0.5em 1em; + display:block; + .update-wrap { + display:table; + width:100%; + .update-text, + .update-img { + display:table-cell; + vertical-align:top; + p { + margin-bottom: 0.5em; + } + } + .update-img { + text-align:right; + img { + margin:-0.5em -1em 0 0.5em; + height:auto; + } + } + } + } +} +//display:table fixes +.ie7, .ie7 { + .issue-list li .update-wrap { + .update-text { + float:left; + width:19em; + } + .update-img { + float:right; + } + } +} +.issue-list-a { + margin: 0 0 1em 0; + padding: 0; + border-bottom: 0.25em solid $primary; + li { + list-style: none; + margin:0; + padding:0; a { - color: #fff; + margin: 0.25em 0 0 0; + display:table; + background: #f6f6f6; + color:#222222; + width:100%; + &:hover { + text-decoration:none; + color:#222222; + background:#e6e6e6; + } + .text, + .img { + display:table-cell; + vertical-align:top; + } + .img { + text-align:right; + img { + height:auto; + } + } + .text { + padding:0.25em 1em; + h4 { + margin:0; + } + small { + color:#808080; + } + } + } + >p { + margin: 0.25em 0 0 0; + padding: 0.5em 1em; + background: #f6f6f6; } + } +} +.list-a { + @extend .issue-list-a; + a { + padding:0.5em 1em; + font-weight:bold; + } +} +//display:table fixes +.ie6, .ie7 { + .issue-list-a { + overflow:hidden; + li a { + clear:both; + width:auto; + display:block; + overflow:hidden; + .text { + float:left; + width:18em; + } + .img { + width:6.25em; + float:right; + } + } + } +} +.ie6 .issue-list-a li a { + height:5.5em; + .img img { + height:60px; + } +} - a:hover { - color: #ffe600; +// fancybox gallery images have a magnifying glass in the corner +.update-img { + a { + @include inline-block; + position:relative; + span { + position:absolute; + top:0; + right:0; + display:block; + width:20px; + height:20px; + opacity: 0.5; + background:#fff url(images/sprite.png) -16px -1098px no-repeat; + //hide text - http://nicolasgallagher.com/another-css-image-replacement-technique/ + font: 0/0 a; + color: transparent; + } + &:hover span { + opacity: 1; } + } +} +//bit of a hack - as we can't use em's, push the span out to the right +//by how much it would be if the user did not resize the text +.issue-list li .update-wrap .update-img a span { + right:-16px; + top:-8px; +} + +.problem-header { + margin-bottom:1em; +} + + +// map stuff +#map_box{ + @extend .full-width; + background: #333; + height: 29em; + margin-bottom: 1em; + overflow: hidden; + position: relative; + #map { + width:100%; + height:100%; + } +} + +// OpenLayers fix for navigation being top right +// Left and right so that zoom can be left, pan right. +#fms_pan_zoom { + right: 0.5em !important; + top: 0.5em !important; + left: 0.5em !important; +} +// The left and right of the above causes the navigation to move off-screen left in IE6. +// XXX Need to check IE7 +.ie6 #fms_pan_zoom { + left: auto !important; +} + +// Openlayers map controls (overrides) +#fms_pan_zoom_panup, +#fms_pan_zoom_pandown, +#fms_pan_zoom_panleft, +#fms_pan_zoom_panright, +#fms_pan_zoom_zoomin, +#fms_pan_zoom_zoomout { + width:36px !important; + height:36px !important; + text-indent:-999999px; + opacity:0.85; + background:url('images/sprite.png') no-repeat; + &:hover { + opacity:1; + } + filter: none !important; // Override OpenLayers PNG handling of the navigation +} + +#fms_pan_zoom_zoomworld { + display:none !important; + visibility:none !important; +} + +#fms_pan_zoom_panup { + background-position:-42px -222px; + right:30px !important; + left: auto !important; + top:0 !important; +} +#fms_pan_zoom_pandown { + background-position:-42px -282px; + right:30px !important; + left: auto !important; + top:72px !important; +} +#fms_pan_zoom_panleft { + background-position:-12px -252px; + width:48px !important; + right:48px !important; + left: auto !important; + top:36px !important; +} +#fms_pan_zoom_panright { + background-position:-60px -252px; + width:48px !important; + right:0 !important; + left: auto !important; + top:36px !important; +} +#fms_pan_zoom_zoomin { + background-position:-152px -223px; + height:44px !important; + left:0 !important; + top:0 !important; +} +#fms_pan_zoom_zoomout { + background-position:-152px -259px; + height:44px !important; + left:0 !important; + top:44px !important; +} - p { - margin: 0.5em 0; +//hide pins, show old reports etc +#sub_map_links { + position: absolute; + left: 0; + right:0; + bottom: 0; + z-index: 1100; + background:#333; + background:rgba(0, 0, 0, 0.7); + margin:0; + a { + @include inline-block; + font-size:0.6875em; + color:#fff; + padding:0.6em 3em 0.5em 1em; + background-repeat:no-repeat; + &#hide_pins_link { + background-image:url('images/sprite.png'); + background-position: right -3976px; + } + &#all_pins_link { + background-image:url('images/sprite.png'); + background-position: right -4022px; + } + &#map_permalink { + background-image:url('images/sprite.png'); + background-position: right -4070px; } + &.feed { + background-image:url('images/sprite.png'); + background-position: right -3936px; + } + &:hover { + background-color:#000; + text-decoration:none; + } + } } +.ie6 #sub_map_links a { + &#hide_pins_link { + background-image:url('images/ie_sub_map_links_sprite.gif'); + background-position: right 1px; + } + &#all_pins_link { + background-image:url('images/ie_sub_map_links_sprite.gif'); + background-position: right -45px; + } + &#map_permalink { + background-image:url('images/ie_sub_map_links_sprite.gif'); + background-position: right -93px; + } +} -/* DISPLAY BITS */ +#mob_sub_map_links { + position: absolute; + z-index:1100; + bottom:0; + display:table; + margin:0; + width:100%; + background:rgba(0, 0, 0, 0.7); + a { + color:#fff; + width:50%; + padding:0.5em 0; + font-size:1em; + display:table-cell; + text-align:center; + &:hover { + background:#000; + text-decoration:none; + } + } + &.map_complete { + background:none; + display:block; + border-bottom:4px solid #fff; + a#try_again { + display:block; + margin:0 auto 6em auto; + background:rgba(0, 0, 0, 0.8); + @include border-radius(0.5em); + } + a#mob_ok { + position:absolute; + right:1em; + bottom:0; + height:20px; + padding-top:30px; + display:block; + width:4em; + background:#fff url('images/sprite.png') 12px -4140px no-repeat; + color:#000; + } + } +} -a.unsuitable-report { - font-size: small; +.mobile-map-banner { + margin:0; + position: absolute; + top:0; + left:0; + right:0; + font-size:0.75em; + background:rgba(0, 0, 0, 0.7); + padding:0.75em 30px; + a { + @include button-reset(#333, #1a1a1a, #1a1a1a, #fff, #333, #1a1a1a, #1a1a1a, #fff); + font: { + weight:normal; + size:0.875em; + } + line-height:1; + padding:0.5em 0.75em; + position:absolute; + left:0.3em; + top:0.3em; + } } -blockquote { - border-left: solid 4px $colour; +.olControlAttribution { + bottom: 3.25em !important; + right: 0.25em !important; + left: 0.25em !important; + color: #222222; + font-size:0.75em !important; +} +.olControlAttribution img { + vertical-align: bottom; +} +.olControlPermalink { + bottom: 3px !important; + right: 3px; +} + +/* Drag is only present in noscript form. XXX Copy from core. */ +#drag { + input, img { + position: absolute; + border: none; + max-width: none; + } + input { + cursor: crosshair; + background-color: #cccccc; + } + img { + cursor: move; + } + img.pin { + z-index: 100; + background-color: inherit; + } + a img.pin { + cursor: pointer; + cursor: hand; + } +} + +// only on mobile, this is a sidebar on desk (#report-a-problem-sidebar) +a.rap-notes-trigger, +a:hover.rap-notes-trigger { + display:block; + width:90%; + padding-left:5%; + padding-right:5%; +} +.rap-notes { + margin:1em 0; +} + +//report a problem tabs +#problems-nav { + padding:0 1em; + overflow:hidden; + border-bottom:0.25em solid #333; + ul { + @include list-reset-soft; + display:table; + width:100%; + li { + display:table-cell; + border-right:0.25em solid #fff; + &:last-child { + border-right:none; + } + a { + display:block; + background:#e2e2e2; + color:#333; + padding:1em; + text: { + transform:uppercase; + align:center; + } + &:hover { + text-decoration:none; + background:#e6e6e6; + } + &.active { + background:#333; + color:#fff; + } + } + } + } } -.a { - color: #000000; - background-color: $colour_alt; +//display:table fixes +.ie6, .ie7 { + #problems-nav { + clear:both; + margin:0; + padding:0; + ul li { + float:left; + } + } } -#postcodeForm { - background-color: $colour_alt; + +table.nicetable { + width:100%; + margin-bottom:2em; + thead { + border-bottom:0.25em solid #ccc; + th { + font-size:0.75em; + } + } + tr { + &.a { + background:#f6f6f6; + } + &:nth-child(even) { + background:#f6f6f6; + } + &.gone { + color: #666666; + background-color: #cccccc; + } + &:hover { + background:#FFF5CC; + cursor:pointer; + } + td { + padding:0.25em; + a { + &:hover { + text-decoration:none; + } + } + } + } + .title { + text-align:left; + } + .data { + width:12%; + } +} + +.promo { + @extend .full-width; + background:$primary; + padding:1em; + margin-bottom:1em; + overflow:hidden; + position: relative; + .close-promo { + position:absolute; + top:0.5em; + right:0.5em; + display:block; + width:16px; + height:16px; + text-indent:-999999px; + background:url(images/sprite.png) -341px -263px no-repeat; + @include border-radius(4px); + &:hover { + background:#222 url(images/sprite.png) -341px -223px no-repeat; + } + } } -#front_stats div { - background-color: $colour_alt; +.alert { + @extend .full-width; + background:#ff0000; + padding:1em; + margin-bottom:1em; + color:#fff; + a, a:hover { + color:$primary; + } +} + +.pagination { + text-align:center; + padding:0.5em 1em; + background:#eee; + position:relative; + .prev { + position:absolute; + left:0.5em; + } + .next { + position:absolute; + right:0.5em; + } + a { + @include inline-block; + background:$primary; + padding-left:0.5em; + padding-right:0.5em; + color:#1a1a1a; + &:hover { + color:#1a1a1a; + text-decoration:none; + background:$primary/1.1; + } + } +} + +// this is a bit of a hack to get some differentation between desk and mobile +.desk-only { + display:none !important; +} + +// hide anything with this class if js is working +.js .hidden-js { + display: none; + visibility: hidden; +} + +// hide anything with this class if js is NOT working +.no-js .hidden-nojs { + display: none !important; + visibility: hidden; +} + + +/* Front page */ +#front-main { + text-align:center; + h2 { + font: { + style:italic; + family: 'helvetica', 'arial', sans-serif; + size:1.1875em; + } + color:#4d4d4d; + } + #postcodeForm { + @extend .full-width; + padding:1em; + background:$primary; + font-family: 'helvetica', 'arial', sans-serif; + label { + margin:0; + } + div { + display:table; + width:100%; + background:#fff; + border:1px solid #F3B11E; + input#pc { + display:table-cell; + margin:0; + padding:0.25em 2%; + width:82%; + border:none; + background:none; + line-height:1.5em; + } + input#submit { + display:table-cell; + border:none; + padding:0; + margin:0; + width:14%; + height:35px; + background:#000; + color:#fff; + text-transform:uppercase; + @include border-radius(0); + &:hover { + background:#333; + } + } + } + } + a#geolocate_link { + @include inline-block; + vertical-align:top; + background:#1a1a1a; + color:#C8C8C8; + padding:0.5em; + font: { + family: 'helvetica', 'arial', sans-serif; + size:0.8125em; + } + @include border-radius(0 0 0.25em 0.25em); + &:hover { + text-decoration:none; + background:#2a2a2a; + } + } +} + +#front-howto { + #front_stats { + display:table; + width:100%; + background:$primary; + font-family: 'helvetica', 'arial', sans-serif; + div { + display:table-cell; + text-align:center; + padding:1em; + line-height:1.25em; + font: { + size:0.8125em; + weight:bold; + } + big { + display:block; + margin-bottom:0.5em; + font-size:1.5385em; + } + } + } +} + +#front-recently { + .issue-list-a { + border-bottom:none; + margin-bottom:0; + } +} + +#alerts { + ul { + margin-bottom: 1em; + } + li { + padding: 0em; + margin-bottom: 0.5em; + } + .a { + background: #f6f6f6; + } + img[width="16"] { + float: right; + } } diff --git a/web/cobrands/fixmystreet/config.rb b/web/cobrands/fixmystreet/config.rb new file mode 100644 index 000000000..471b4b008 --- /dev/null +++ b/web/cobrands/fixmystreet/config.rb @@ -0,0 +1,25 @@ +# Require any additional compass plugins here. + +# Set this to the root of your project when deployed: +http_path = "/" +css_dir = "" +sass_dir = "" +images_dir = "" +javascripts_dir = "" + +# You can select your preferred output style here (can be overridden via the command line): +# output_style = :expanded or :nested or :compact or :compressed + +# To enable relative paths to assets via compass helper functions. Uncomment: +# relative_assets = true + +# To disable debugging comments that display the original location of your selectors. Uncomment: +# line_comments = false + +# If you prefer the indented syntax, you might want to regenerate this +# project again passing --syntax sass, or you can uncomment this: +# preferred_syntax = :sass +# and then run: +# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass + +line_comments = false # by Compass.app
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fixmystreet.js b/web/cobrands/fixmystreet/fixmystreet.js new file mode 100644 index 000000000..c2801c880 --- /dev/null +++ b/web/cobrands/fixmystreet/fixmystreet.js @@ -0,0 +1,587 @@ +/* + * fixmystreet.js + * FixMyStreet JavaScript + */ + +function form_category_onchange() { + var cat = $('#form_category'); + var args = { + category: cat.val() + }; + + if ( typeof fixmystreet !== 'undefined' ) { + args.latitude = fixmystreet.latitude; + args.longitude = fixmystreet.longitude; + } else { + args.latitude = $('input[name="latitude"]').val(); + args.longitude = $('input[name="longitude"]').val(); + } + + $.getJSON('/report/new/category_extras', args, function(data) { + if ( data.category_extra ) { + if ( $('#category_meta').size() ) { + $('#category_meta').html( data.category_extra); + } else { + $('#form_category_row').after( data.category_extra ); + } + } else { + $('#category_meta').empty(); + } + }); +} + +/* + * general height fixing function + * + * elem1: element to check against + * elem2: target element + * offset: this will be added (if present) to the final value, useful for height errors + */ +function heightFix(elem1, elem2, offset){ + var h1 = $(elem1).height(), + h2 = $(elem2).height(); + if(offset === undefined){ + offset = 0; + } + if(h1 > h2){ + $(elem2).css({'min-height':h1+offset}); + } +} + + +/* + * very simple tab function + * + * elem: trigger element, must have an href attribute (so probably needs to be an <a>) + */ +function tabs(elem, indirect) { + var href = elem.attr('href'); + //stupid IE sometimes adds the full uri into the href attr, so trim + var start = href.indexOf('#'), + target = href.slice(start, href.length); + + if (indirect) { + elem = $(target + '_tab'); + } + + if(!$(target).hasClass('open')) + { + //toggle class on nav + $('.tab-nav .active').removeClass('active'); + elem.addClass('active'); + + //hide / show the right tab + $('.tab.open').hide().removeClass('open'); + $(target).show().addClass('open'); + } +} + + +$(function(){ + var $html = $('html'); + + $html.removeClass('no-js').addClass('js'); + + + // Preload the new report pin + document.createElement('img').src = '/i/pin-green.png'; + + var last_type; + $(window).resize(function(){ + var type = $('#site-header').css('borderTopWidth'); + if (type == '4px') { type = 'mobile'; } + else if (type == '0px') { type = 'desktop'; } + else { return; } + if (last_type == type) { return; } + if (type == 'mobile') { + $html.addClass('mobile'); + $('#map_box').prependTo('.content').css({ + zIndex: '', position: '', + top: '', left: '', right: '', bottom: '', + width: '', height: '10em', + margin: '' + }); + if (typeof fixmystreet !== 'undefined') { + fixmystreet.state_map = ''; // XXX + } + if (typeof fixmystreet !== 'undefined' && fixmystreet.page == 'around') { + // Immediately go full screen map if on around page + $('#site-header').hide(); + $('#map_box').prependTo('.wrapper').css({ + position: 'absolute', + top: 0, left: 0, right: 0, bottom: 0, + height: 'auto', + margin: 0 + }); + $('#fms_pan_zoom').css({ top: '2.75em !important' }); + $('.big-green-banner') + .addClass('mobile-map-banner') + .appendTo('#map_box') + .text('Place pin on map') + .prepend('<a href="/">home</a>'); + } + } else { + // Make map full screen on non-mobile sizes. + $html.removeClass('mobile'); + var map_pos = 'fixed', map_height = '100%'; + if ($html.hasClass('ie6')) { + map_pos = 'absolute'; + map_height = $(window).height(); + } + $('#map_box').prependTo('.wrapper').css({ + zIndex: 0, position: map_pos, + top: 0, left: 0, right: 0, bottom: 0, + width: '100%', height: map_height, + margin: 0 + }); + if (typeof fixmystreet !== 'undefined') { + fixmystreet.state_map = 'full'; + } + if (typeof fixmystreet !== 'undefined' && fixmystreet.page == 'around') { + // Remove full-screen-ness + $('#site-header').show(); + $('#fms_pan_zoom').css({ top: '4.75em !important' }); + $('.big-green-banner') + .removeClass('mobile-map-banner') + .prependTo('#side') + .text('Click map to report a problem'); + } + } + last_type = type; + }); + + //add mobile class if small screen + $(window).resize(); + + $('#pc').focus(); + + $('input[type=submit]').removeAttr('disabled'); + /* + $('#mapForm').submit(function() { + if (this.submit_problem) { + $('input[type=submit]', this).prop("disabled", true); + } + return true; + }); + */ + + if (!$('#been_fixed_no').prop('checked') && !$('#been_fixed_unknown').prop('checked')) { + $('#another_qn').hide(); + } + $('#been_fixed_no').click(function() { + $('#another_qn').show('fast'); + }); + $('#been_fixed_unknown').click(function() { + $('#another_qn').show('fast'); + }); + $('#been_fixed_yes').click(function() { + $('#another_qn').hide('fast'); + }); + + // FIXME - needs to use translated string + jQuery.validator.addMethod('validCategory', function(value, element) { + return this.optional(element) || value != '-- Pick a category --'; }, validation_strings.category ); + + jQuery.validator.addMethod('validName', function(value, element) { + var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i; + return this.optional(element) || value.length > 5 && value.match( /\S/ ) && !value.match( validNamePat ); }, validation_strings.category ); + + var form_submitted = 0; + var submitted = false; + + $("form.validate").validate({ + rules: { + title: { required: true }, + detail: { required: true }, + email: { required: true }, + update: { required: true }, + rznvy: { required: true } + }, + messages: validation_strings, + onkeyup: false, + onfocusout: false, + errorElement: 'div', + errorClass: 'form-error', + // we do this to stop things jumping around on blur + success: function (err) { if ( form_submitted ) { err.addClass('label-valid').removeClass('label-valid-hidden').html( ' ' ); } else { err.addClass('label-valid-hidden'); } }, + errorPlacement: function( error, element ) { + element.before( error ); + }, + submitHandler: function(form) { + if (form.submit_problem) { + $('input[type=submit]', form).prop("disabled", true); + } + + form.submit(); + }, + // make sure we can see the error message when we focus on invalid elements + showErrors: function( errorMap, errorList ) { + if ( submitted && errorList.length ) { + $(window).scrollTop( $(errorList[0].element).offset().top - 120 ); + } + this.defaultShowErrors(); + submitted = false; + }, + invalidHandler: function(form, validator) { submitted = true; } + }); + + $('input[type=submit]').click( function(e) { form_submitted = 1; } ); + + /* set correct required status depending on what we submit + * NB: need to add things to form_category as the JS updating + * of this we do after a map click removes them */ + $('#submit_sign_in').click( function(e) { + $('#form_category').addClass('required validCategory').removeClass('valid'); + $('#form_name').removeClass(); + } ); + + $('#submit_register').click( function(e) { + $('#form_category').addClass('required validCategory').removeClass('valid'); + $('#form_name').addClass('required validName'); + } ); + + $('#problem_submit > input[type="submit"]').click( function(e) { + $('#form_category').addClass('required validCategory').removeClass('valid'); + $('#form_name').addClass('required validName'); + } ); + + $('#update_post').click( function(e) { + $('#form_name').addClass('required').removeClass('valid'); + } ); + + $('#form_category').change( form_category_onchange ); + + // Geolocation + if (geo_position_js.init()) { + $('#postcodeForm').after('<a href="#" id="geolocate_link">… or locate me automatically</a>'); + $('#geolocate_link').click(function(e) { + e.preventDefault(); + // Spinny thing! + if($('.mobile').length){ + $(this).append(' <img src="/cobrands/fixmystreet/images/spinner-black.gif" alt="" align="bottom">'); + }else{ + $(this).append(' <img src="/cobrands/fixmystreet/images/spinner-yellow.gif" alt="" align="bottom">'); + } + geo_position_js.getCurrentPosition(function(pos) { + $('img', this).remove(); + var latitude = pos.coords.latitude; + var longitude = pos.coords.longitude; + location.href = '/around?latitude=' + latitude + ';longitude=' + longitude; + }, function(err) { + $('img', this).remove(); + if (err.code == 1) { // User said no + } else if (err.code == 2) { // No position + $(this).html("Could not look up location"); + } else if (err.code == 3) { // Too long + $('this').html("No result returned"); + } else { // Unknown + $('this').html("Unknown error"); + } + }, { + enableHighAccuracy: true, + timeout: 10000 + }); + }); + } + + /* + * Report a problem page + */ + //desktop + if ($('#report-a-problem-sidebar').is(':visible')) { + heightFix('#report-a-problem-sidebar', '.content', 26); + } + + //show/hide notes on mobile + $('.mobile #report-a-problem-sidebar').after('<a href="#" class="rap-notes-trigger button-right">How to send successful reports</a>').hide(); + $('.rap-notes-trigger').click(function(e){ + e.preventDefault(); + //check if we've already moved the notes + if($('.rap-notes').length > 0){ + //if we have, show and hide .content + $('.content').hide(); + $('.rap-notes').show(); + }else{ + //if not, move them and show, hiding .content + $('.content').after('<div class="content rap-notes"></div>').hide(); + $('#report-a-problem-sidebar').appendTo('.rap-notes').show().after('<a href="#" class="rap-notes-close button-left">Back</a>'); + } + $('html, body').scrollTop($('#report-a-problem-sidebar').offset().top); + location.hash = 'rap-notes'; + }); + $('.mobile').on('click', '.rap-notes-close', function(e){ + e.preventDefault(); + //hide notes, show .content + $('.content').show(); + $('.rap-notes').hide(); + $('html, body').scrollTop($('#mob_ok').offset().top); + location.hash = 'report'; + }); + + //move 'skip this step' link on mobile + $('.mobile #skip-this-step').hide(); + $('.mobile #skip-this-step a').addClass('chevron').wrap('<li>').appendTo('#key-tools'); + + /* + * Tabs + */ + //make initial tab active + $('.tab-nav a').first().addClass('active'); + $('.tab').first().addClass('open'); + + //hide other tabs + $('.tab').not('.open').hide(); + + //set up click event + $(".tab-nav").on('click', 'a', function(e){ + e.preventDefault(); + tabs($(this)); + }); + $('.tab_link').click(function(e) { + e.preventDefault(); + tabs($(this), 1); + }); + + /* + * Skip to nav on mobile + */ + $('.mobile').on('click', '#nav-link', function(e){ + e.preventDefault(); + var offset = $('#main-nav').offset().top; + $('html, body').animate({scrollTop:offset}, 1000); + }); + + + /* + * Show stuff on input focus + */ + $('.form-focus-hidden').hide(); + $('.form-focus-trigger').on('focus', function(){ + $('.form-focus-hidden').fadeIn(500); + }); + + /* + * Show on click - pretty generic + */ + $('.hideshow-trigger').on('click', function(e){ + e.preventDefault(); + var href = $(this).attr('href'), + //stupid IE sometimes adds the full uri into the href attr, so trim + start = href.indexOf('#'), + target = href.slice(start, href.length); + + $(target).removeClass('hidden-js'); + + $(this).hide(); + }); + + /* + * nicetable - on mobile shift 'name' col to be a row + */ + $('.mobile .nicetable th.title').remove(); + $('.mobile .nicetable td.title').each(function(i){ + $(this).attr('colspan', 5).insertBefore($(this).parent('tr')).wrap('<tr class="heading" />'); + }); + // $('.mobile .nicetable tr.heading > td.title').css({'min-width':'300px'}); + // $('.mobile .nicetable tr > td.data').css({'max-width':'12%'}); + + /* + * Map controls prettiness + */ + //add links container (if its not there) + if($('#sub_map_links').length === 0){ + $('<p id="sub_map_links" />').insertAfter($('#map')); + } + +// A sliding drawer from the bottom of the page, small version +// that doesn't change the main content at all. +$.fn.small_drawer = function(id) { + this.toggle(function(){ + var $this = $(this), d = $('#' + id); + if (!$this.addClass('hover').data('setup')) { + d.hide().removeClass('hidden-js').css({ + padding: '1em', + background: '#fff' + }); + $this.data('setup', true); + } + d.slideDown(); + }, function(e){ + var $this = $(this), d = $('#' + id); + $this.removeClass('hover'); + d.slideUp(); + }); +}; + +// A sliding drawer from the bottom of the page, large version +$.fn.drawer = function(id, ajax) { + // IE7 positions the fixed tool bar 1em to the left unless it comes after + // the full-width section, ho-hum. Move it to where it would be after an + // open/close anyway + if ($('html.ie7').length) { + var $sw = $('.shadow-wrap'), $content = $('.content[role="main"]'); + $sw.appendTo($content); + } + this.toggle(function(){ + var $this = $(this), d = $('#' + id), $content = $('.content[role="main"]'); + if (!$this.addClass('hover').data('setup')) { + // make a drawer div with an innerDiv + if (!d.length) { + d = $('<div id="' + id + '">'); + } + var innerDiv = $('<div>'); + d.wrapInner(innerDiv); + + // if ajax, load it with a spinner + if (ajax) { + var href = $this.attr('href') + ';ajax=1'; + $this.prepend(' <img class="spinner" src="/cobrands/fixmystreet/images/spinner-black-333.gif" style="margin-right:2em;">'); + innerDiv.load(href, function(){ + $('.spinner').remove(); + }); + } + + // Tall drawer - put after .content for scrolling to work okay. + // position over the top of the main .content in precisely the right location + d.insertAfter($content).addClass('content').css({ + position: 'absolute', + zIndex: '1100', + marginTop: $('html.ie6, html.ie7').length ? '-3em' : 0, // IE6/7 otherwise include the 3em padding and stay too low + left: 0, + top: $(window).height() - $content.offset().top + }).removeClass('hidden-js').find('h2').css({ marginTop: 0 }); + $this.data('setup', true); + } + + //do the animation + $('.shadow-wrap').prependTo(d).addClass('static'); + d.show().animate({top:'3em'}, 1000, function(){ + $content.fadeOut(function() { + d.css({ position: 'relative' }); + }); + }); + }, function(e){ + var $this = $(this), d = $('#' + id), $sw = $('.shadow-wrap'), + $content = $('.content[role="main"]'), + tot_height = $(window).height() - d.offset().top; + $this.removeClass('hover'); + d.css({ position: 'absolute' }).animate({ top: tot_height }, 1000, function(){ + d.hide(); + $sw.appendTo($content).removeClass('static'); + }); + $content.show(); + }); +}; + + if ($('html.mobile').length) { + $('#council_wards').hide().removeClass('hidden-js').find('h2').hide(); + $('#key-tool-wards').click(function(e){ + e.preventDefault(); + $('#council_wards').slideToggle('800', function(){ + $('#key-tool-wards').toggleClass('active'); + }); + }); + } else { + $('#key-tool-wards').drawer('council_wards', false); + $('#key-tool-around-updates').drawer('updates_ajax', true); + } + $('#key-tool-report-updates').small_drawer('report-updates-data'); + + // Go directly to RSS feed if RSS button clicked on alert page + // (due to not wanting around form to submit, though good thing anyway) + $('.container').on('click', '#alert_rss_button', function(e){ + e.preventDefault(); + var feed = $('input[name=feed][type=radio]:checked').nextAll('a').attr('href'); + window.location.href = feed; + }); + $('.container').on('click', '#alert_email_button', function(e){ + e.preventDefault(); + var form = $('<form/>').attr({ method:'post', action:"/alert/subscribe" }); + $('#alerts input[type=text], #alerts input[type=hidden], #alerts input[type=radio]:checked').each(function() { + var $v = $(this); + $('<input/>').attr({ name:$v.attr('name'), value:$v.val(), type:'hidden' }).appendTo(form); + }); + form.submit(); + }); + + //add permalink on desktop, force hide on mobile + $('#sub_map_links').append('<a href="#" id="map_permalink">Permalink</a>'); + if($('.mobile').length){ + $('#map_permalink').hide(); + $('#key-tools a.feed').appendTo('#sub_map_links'); + $('#key-tools li:empty').remove(); + $('#report-updates-data').insertAfter($('#map_box')); + } + //add open/close toggle button on desk + $('#sub_map_links').prepend('<span id="map_links_toggle"> </span>'); + + //set up map_links_toggle click event + $('#map_links_toggle').on('click', function(){ + var maplinks_width = $('#sub_map_links').width(); + + if($(this).hasClass('closed')){ + $(this).removeClass('closed'); + $('#sub_map_links').animate({'right':'0'}, 1200); + }else{ + $(this).addClass('closed'); + $('#sub_map_links').animate({'right':-maplinks_width}, 1200); + } + }); + + + /* + * Add close buttons for .promo's + */ + if($('.promo').length){ + $('.promo').append('<a href="#" class="close-promo">x</a>'); + } + //only close its own parent + $('.promo').on('click', '.close-promo', function(e){ + e.preventDefault(); + $(this).parent('.promo').animate({ + 'height':0, + 'margin-bottom':0, + 'padding-top':0, + 'padding-bottom':0 + },{ + duration:500, + queue:false + }).fadeOut(500); + }); + + + + /* + * Fancybox fullscreen images + */ + $('a[rel=fancy]').fancybox({ + 'overlayColor': '#000000' + }); + + /* + * heightfix the desktop .content div + * + * this must be kept near the end so that the + * rendered height is used after any page manipulation (such as tabs) + */ + if (!$('html.mobile').length) { + if (!($('body').hasClass('frontpage'))){ + heightFix(window, '.content', -176); + } + } + +}); + +/* +XXX Disabled because jerky on Android and makes map URL bar height too small on iPhone. +// Hide URL bar +$(window).load(function(){ + window.setTimeout(function(){ + var s = window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; + if (s < 20 && !location.hash) { + window.scrollTo(0, 1); + } + }, 0); +}); +*/ + diff --git a/web/cobrands/fixmystreet/fms-logo-flat.png b/web/cobrands/fixmystreet/fms-logo-flat.png Binary files differdeleted file mode 100644 index 50d1e4891..000000000 --- a/web/cobrands/fixmystreet/fms-logo-flat.png +++ /dev/null diff --git a/web/cobrands/fixmystreet/fms-logo.png b/web/cobrands/fixmystreet/fms-logo.png Binary files differdeleted file mode 100644 index 23bea6b0f..000000000 --- a/web/cobrands/fixmystreet/fms-logo.png +++ /dev/null diff --git a/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.eot b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.eot Binary files differnew file mode 100755 index 000000000..15be4441c --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.eot diff --git a/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.svg b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.svg new file mode 100755 index 000000000..71109b80b --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.svg @@ -0,0 +1,229 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +This is a custom SVG webfont generated by Fontspring. +</metadata> +<defs> +<font id="Museo300" horiz-adv-x="1241" > +<font-face units-per-em="2048" ascent="1536" descent="-512" /> +<missing-glyph horiz-adv-x="557" /> +<glyph unicode=" " horiz-adv-x="557" /> +<glyph unicode="	" horiz-adv-x="557" /> +<glyph unicode=" " horiz-adv-x="557" /> +<glyph unicode="!" horiz-adv-x="608" d="M227 0v158h158v-158h-158zM231 1440h144l-6 -1063h-131z" /> +<glyph unicode=""" horiz-adv-x="638" d="M135 1114v346h121v-346h-121zM383 1114v346h121v-346h-121z" /> +<glyph unicode="#" horiz-adv-x="1460" d="M84 399l20 115h289l72 401h-289l19 115h290l72 410h125l-72 -410h355l71 410h125l-71 -410h286l-20 -115h-287l-70 -401h285l-18 -115h-287l-70 -399h-125l70 399h-354l-70 -399h-125l70 399h-291zM520 514h352l72 401h-354z" /> +<glyph unicode="$" horiz-adv-x="1089" d="M94 246l107 86q4 -8 14 -23.5t44 -54.5t72 -67.5t101.5 -53t132.5 -24.5q127 0 206 73.5t79 182.5q0 72 -39 128t-101.5 94t-138 72.5t-152.5 73.5t-139.5 86t-101.5 120t-39 167q0 135 100.5 233.5t266.5 118.5v195h117v-191q129 -12 232 -71.5t103 -173.5v-103h-135v68 q0 63 -70.5 106t-170.5 43q-135 0 -215 -64.5t-80 -158.5q0 -80 52 -140.5t132 -96t171 -81t171 -91.5t132 -131t52 -197q0 -150 -103 -262.5t-271 -128.5v-191h-117v191q-80 8 -151.5 38.5t-116.5 67.5t-80 74t-49 61z" /> +<glyph unicode="%" horiz-adv-x="1521" d="M127 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -83.5 -202t-204.5 -83q-119 0 -203 83t-84 202zM139 0l1098 1440h145l-1095 -1440h-148zM248 1180q0 -72 48 -121t117.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-117.5 -50t-48 -120zM819 258 q0 119 84 203t203 84t204 -84t85 -203q0 -117 -85 -200t-204 -83t-203 83t-84 200zM942 260q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> +<glyph unicode="&" horiz-adv-x="1277" d="M94 401q0 127 68.5 233.5t191.5 141.5v4q-8 2 -21.5 8.5t-47 31t-60 57t-48 92t-21.5 131.5q0 162 115.5 263t310.5 101q35 0 76.5 -5t66.5 -11l25 -6l-41 -117q-68 14 -119 14q-125 0 -206 -68.5t-81 -178.5q0 -43 11.5 -82t41 -83t96 -70t160.5 -26h299v199h142v-199 h190v-126h-190v-211q0 -252 -126 -385.5t-347 -133.5q-213 0 -349.5 122t-136.5 304zM240 406q0 -127 92 -212t247.5 -85t243.5 95t88 294v207h-295q-184 0 -280 -80t-96 -219z" /> +<glyph unicode="'" horiz-adv-x="391" d="M135 1114v346h121v-346h-121z" /> +<glyph unicode="(" horiz-adv-x="632" d="M174 680q0 461 221 815h131q-223 -377 -223 -805q0 -473 236 -885h-129q-236 386 -236 875z" /> +<glyph unicode=")" horiz-adv-x="632" d="M94 -195q236 412 236 885q0 428 -224 805h132q221 -360 221 -815q0 -489 -236 -875h-129z" /> +<glyph unicode="*" horiz-adv-x="976" d="M94 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-303 -88v-4l192 -246l-106 -80l-177 260h-4l-174 -258l-108 78l192 246v4z" /> +<glyph unicode="+" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> +<glyph unicode="," horiz-adv-x="440" d="M47 -199l117 367h149l-149 -367h-117z" /> +<glyph unicode="-" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> +<glyph unicode="." horiz-adv-x="440" d="M141 0v164h158v-164h-158z" /> +<glyph unicode="/" horiz-adv-x="665" d="M6 -86l520 1606h129l-518 -1606h-131z" /> +<glyph unicode="0" horiz-adv-x="1232" d="M121 721q0 743 495 743q180 0 295 -102t159 -262t44 -379q0 -745 -498 -746q-495 1 -495 746zM266 721q0 -612 350.5 -612t350.5 612q0 610 -350.5 610t-350.5 -610z" /> +<glyph unicode="1" horiz-adv-x="974" d="M131 0v127h322v1057l2 80h-4q-14 -31 -72 -86l-154 -154l-90 92l326 324h135v-1313h315v-127h-780z" /> +<glyph unicode="2" horiz-adv-x="1155" d="M86 141q0 147 79 257t190.5 176.5t223 129t190.5 150.5t79 205t-81 193.5t-214 76.5q-106 0 -181 -47t-75 -108v-68h-135v106q0 66 40 116t102.5 79t128 43t124.5 14q201 0 319.5 -115.5t118.5 -287.5q0 -139 -78.5 -245.5t-190.5 -174.5t-223.5 -130t-190.5 -148.5 t-79 -194.5q0 -41 48 -41h602q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-721q-72 0 -100.5 32.5t-28.5 108.5z" /> +<glyph unicode="3" horiz-adv-x="1081" d="M53 176l86 107q6 -6 17.5 -18.5t49.5 -42t79 -52.5t104.5 -41t126.5 -18q131 0 228.5 88t97.5 223q0 139 -102.5 221t-247.5 82h-101l-33 84l355 426q35 47 73 80v4q-41 -6 -116 -6h-375q-45 0 -45 -45v-97h-133v144q0 68 27.5 96.5t93.5 28.5h731v-94l-424 -498 q74 -4 146.5 -27.5t142 -71t112.5 -131t43 -194.5q0 -184 -136 -316.5t-339 -132.5q-80 0 -156.5 20.5t-129 50.5t-94.5 59.5t-60 50.5z" /> +<glyph unicode="4" horiz-adv-x="1150" d="M31 397v95l700 948h154v-916h229v-127h-229v-397h-144v397h-710zM197 518q57 6 118 6h428v588l7 139h-5q-35 -59 -73 -110l-400 -529l-75 -90v-4z" /> +<glyph unicode="5" horiz-adv-x="1165" d="M111 180l90 101q4 -6 13 -18.5t40 -41t65.5 -51.5t93 -41t122.5 -18q154 0 256 96t102 239q0 147 -107.5 242.5t-265.5 95.5q-72 0 -141.5 -19.5t-102.5 -39.5l-32 -20l-74 30l61 580q6 68 34 96.5t91 28.5h473q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-364 q-39 0 -45 -45l-37 -326l-13 -82h4q90 53 218 53q217 0 360 -136t143 -333q0 -195 -144 -332t-361 -137q-80 0 -154 21.5t-121 51.5t-83 59.5t-50 52.5z" /> +<glyph unicode="6" horiz-adv-x="1146" d="M88 633q0 113 22.5 227.5t72.5 224t122 193.5t179.5 135t236.5 51q70 0 136.5 -15t96.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -89t-162 -219t-68.5 -284h4q49 82 149.5 128t216.5 46q197 0 323 -128t126 -328q0 -219 -129 -350.5t-324 -131.5 q-231 0 -375.5 185.5t-144.5 472.5zM242 541q0 -154 106.5 -293t257.5 -139q143 0 226 97t83 249q0 150 -89 240.5t-236 90.5q-139 0 -243.5 -77.5t-104.5 -167.5z" /> +<glyph unicode="7" horiz-adv-x="1048" d="M61 1171v144q0 66 29 95.5t94 29.5h850v-99l-712 -1341h-160l626 1180l80 133v4q-37 -4 -108 -4h-518q-45 0 -45 -45v-97h-136z" /> +<glyph unicode="8" horiz-adv-x="1167" d="M96 406q0 70 27 135t64.5 108t74.5 76t64 47l26 14v5q-8 4 -21.5 11t-47 33.5t-59 58.5t-47 84t-21.5 109q0 158 116.5 267.5t317.5 109.5t320.5 -106.5t119.5 -276.5q0 -61 -19.5 -120.5t-48 -100.5t-57 -72.5t-49.5 -46.5l-18 -16v-4q113 -57 172 -134t59 -196 q0 -170 -140.5 -293t-342.5 -123q-201 0 -345.5 117t-144.5 314zM244 412q0 -135 101 -219t241 -84q133 0 234.5 80.5t101.5 203.5q0 102 -68 158.5t-207 112.5q-135 57 -168 57q-55 0 -145 -95t-90 -214zM299 1087q0 -102 68.5 -156t207.5 -106q104 -39 130 -39 q45 0 113.5 94.5t68.5 196.5q0 115 -83 184.5t-214 69.5q-133 0 -212 -70t-79 -174z" /> +<glyph unicode="9" horiz-adv-x="1146" d="M88 983q0 219 128 350t323 131q231 0 375.5 -185t144.5 -472q0 -143 -38 -285.5t-110.5 -267.5t-198.5 -202t-286 -77q-70 0 -136.5 14.5t-96.5 30.5l-31 15l53 125q90 -51 209 -51q143 0 251.5 90t163 220t66.5 283h-4q-49 -82 -150.5 -129t-215.5 -47q-197 0 -322 128 t-125 329zM231 985q0 -150 89.5 -241t236.5 -91q139 0 243.5 78t104.5 168q0 154 -106.5 293t-257.5 139q-143 0 -226.5 -97t-83.5 -249z" /> +<glyph unicode=":" horiz-adv-x="579" d="M211 0v164h158v-164h-158zM211 866v164h158v-164h-158z" /> +<glyph unicode=";" horiz-adv-x="579" d="M111 -199l98 367h149l-131 -367h-116zM211 866v164h158v-164h-158z" /> +<glyph unicode="<" d="M141 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> +<glyph unicode="=" d="M143 344v119h955v-119h-955zM143 700v119h955v-119h-955z" /> +<glyph unicode=">" d="M158 117v137l751 326v4l-751 325v138l925 -414v-103z" /> +<glyph unicode="?" horiz-adv-x="882" d="M80 1350q14 12 40.5 31.5t112.5 52t177 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-92 -126t-107.5 -97t-91 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 125t105.5 99t90 109.5t37 131.5q0 100 -76 167.5t-193 67.5q-135 -2 -247 -88zM305 0v158h158 v-158h-158z" /> +<glyph unicode="@" horiz-adv-x="1513" d="M84 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173 -445.5t434 -181.5v-123q-317 0 -533.5 218 t-216.5 531.5zM643 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> +<glyph unicode="A" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> +<glyph unicode="B" d="M82 1313v127h612q172 0 280.5 -98.5t108.5 -264.5q0 -223 -184 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -122 -294.5t-308 -108.5h-371q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM358 815h334q109 0 176.5 69.5t67.5 182.5q0 111 -66.5 178.5t-179.5 67.5h-332v-498 zM358 172q0 -45 45 -45h308q131 0 205.5 76t74.5 205t-77.5 206.5t-204.5 77.5h-351v-520z" /> +<glyph unicode="C" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17t174.5 -52t139 -96.5t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t164 -440t408 -180q250 0 438 170l33 32l82 -104q-8 -10 -23.5 -25.5t-69 -55.5t-114 -70.5t-154.5 -56.5 t-194 -26q-313 0 -516 218.5t-203 537.5z" /> +<glyph unicode="D" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-1141z" /> +<glyph unicode="E" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133z" /> +<glyph unicode="F" horiz-adv-x="1021" d="M86 1313v127h766q66 0 94.5 -30t28.5 -95v-144h-133v97q0 45 -45 45h-435v-541h523v-127h-523v-645h-143v1313h-133z" /> +<glyph unicode="G" horiz-adv-x="1495" d="M80 723q0 311 207 526t512 215q285 0 475 -151l29 -25l-84 -106q-18 16 -52 40.5t-143 65.5t-223 41q-244 0 -408 -173t-164 -433q0 -264 162 -438t408 -174q80 0 155.5 21.5t128 52t92 62.5t58.5 52l20 23v178q0 45 -45 45h-88v127h144q66 0 95.5 -30t29.5 -95v-547 h-132v109l3 61h-5q-6 -8 -19 -21.5t-58 -46t-96.5 -58.5t-132.5 -47.5t-165 -21.5q-297 0 -500.5 213t-203.5 535z" /> +<glyph unicode="H" horiz-adv-x="1550" d="M86 1313v127h152q66 0 95 -30t29 -95v-531h828v531q0 66 28.5 95.5t94.5 29.5h153v-127h-88q-45 0 -45 -45v-1268h-143v657h-828v-657h-143v1268q0 45 -45 45h-88z" /> +<glyph unicode="I" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> +<glyph unicode="J" horiz-adv-x="1034" d="M49 403v58h144v-49q0 -158 76.5 -229.5t187.5 -71.5q109 0 184.5 71.5t75.5 225.5v860q0 45 -45 45h-357v127h420q66 0 95.5 -30t29.5 -95v-912q0 -217 -118.5 -322.5t-286.5 -105.5t-287 106.5t-119 321.5z" /> +<glyph unicode="K" horiz-adv-x="1208" d="M86 1313v127h152q66 0 95 -30t29 -95v-500h173q90 0 120 51l349 574h163l-370 -604q-37 -59 -74 -80v-4q35 -12 70 -82l249 -496q14 -31 37 -39t68 -8h41v-127h-76q-90 0 -127 19.5t-72 89.5l-262 526q-25 53 -131 53h-158v-688h-143v1268q0 45 -45 45h-88z" /> +<glyph unicode="L" horiz-adv-x="1085" d="M86 1313v127h152q66 0 95 -30t29 -95v-1143q0 -45 46 -45h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-596q-66 0 -95.5 29.5t-29.5 95.5v1143q0 45 -45 45h-88z" /> +<glyph unicode="M" horiz-adv-x="1730" d="M45 0v127h76q43 0 45 45l100 1268h146l381 -838l71 -170h4q37 96 70 170l381 838h145l101 -1268q2 -45 45 -45h78v-127h-140q-66 0 -93.5 28.5t-31.5 96.5l-67 874l-6 201h-4q-39 -127 -74 -201l-342 -731h-129l-340 731l-76 205h-4q0 -127 -6 -205l-68 -874 q-4 -68 -31.5 -96.5t-93.5 -28.5h-137z" /> +<glyph unicode="N" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152z" /> +<glyph unicode="O" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427z" /> +<glyph unicode="P" horiz-adv-x="1185" d="M86 1313v127h608q195 0 320 -119t125 -315q0 -199 -125 -320t-320 -121h-332v-565h-143v1313h-133zM362 692h314q143 0 229 84t86 230q0 143 -85 225t-228 82h-316v-621z" /> +<glyph unicode="Q" horiz-adv-x="1619" d="M78 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -283 -180 -496l176 -176l-88 -92l-176 178q-197 -168 -469 -168q-305 0 -517 219.5t-212 534.5zM227 729q0 -260 168 -439t412 -179q205 0 356 120l13 11l-172 174l88 92l170 -176q133 170 133 397 q0 254 -169 426t-419 172q-246 0 -413 -172t-167 -426z" /> +<glyph unicode="R" horiz-adv-x="1239" d="M86 1313v127h610q182 0 298 -111.5t116 -298.5q0 -158 -82 -259t-197 -126v-4q29 -16 50 -57l206 -410q14 -31 37 -39t66 -8h29v-127h-64q-90 0 -127 19.5t-72 89.5l-206 411q-29 55 -56.5 70.5t-89.5 15.5h-242v-606h-143v1313h-133zM362 733h320q129 0 204 79t75 214 q0 133 -75 210t-202 77h-322v-580z" /> +<glyph unicode="S" horiz-adv-x="1060" d="M76 180l88 105q6 -6 17.5 -18.5t48 -43t77.5 -53.5t103.5 -42t126.5 -19q121 0 202.5 71.5t81.5 184.5q0 98 -72.5 167.5t-177 116.5t-210 97.5t-178 138.5t-72.5 211q0 154 122.5 261t317.5 107q82 0 165 -20.5t153.5 -79.5t70.5 -147v-103h-135v68q0 63 -75 106 t-177 43q-135 0 -215 -67.5t-80 -163.5q0 -59 30.5 -107.5t81 -80t114 -64.5t130 -59.5t130 -65.5t113.5 -83t81 -112.5t31 -154.5q0 -168 -120 -283t-317 -115q-82 0 -159.5 21.5t-128.5 51.5t-91 59.5t-59 52.5z" /> +<glyph unicode="T" horiz-adv-x="1269" d="M31 1171v152q0 66 25.5 91.5t90.5 25.5h975q66 0 91.5 -25.5t25.5 -91.5v-152h-133v97q0 45 -45 45h-354v-1313h-144v1313h-356q-45 0 -45 -45v-97h-131z" /> +<glyph unicode="U" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88z" /> +<glyph unicode="V" horiz-adv-x="1337" d="M25 1313v127h63q78 0 109.5 -22.5t58.5 -96.5l354 -969l56 -186h4q29 113 55 186l354 969q27 74 59.5 96.5t110.5 22.5h62v-127h-19q-57 0 -73 -45l-474 -1268h-153l-473 1268q-16 45 -74 45h-20z" /> +<glyph unicode="W" horiz-adv-x="1935" d="M35 1313v127h63q82 0 119 -23.5t55 -95.5l250 -993l31 -154h4q18 80 39 154l317 1106h142l288 -1106l33 -154h4q14 80 33 154l250 993q18 72 55 95.5t119 23.5h64v-127h-23q-63 0 -76 -45l-332 -1268h-170l-268 1001l-47 213h-4q-25 -119 -51 -210l-295 -1004h-170 l-330 1268q-12 45 -76 45h-24z" /> +<glyph unicode="X" horiz-adv-x="1167" d="M31 0l458 752l-311 508q-33 53 -102 53h-43v127h76q78 0 116.5 -22.5t81.5 -92.5l185 -309l92 -164h4q43 90 88 164l184 309q43 70 82 92.5t117 22.5h76v-127h-43q-70 0 -103 -53l-313 -508l461 -752h-164l-299 496l-92 157h-4q-41 -86 -86 -159l-297 -494h-164z" /> +<glyph unicode="Y" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33z" /> +<glyph unicode="Z" horiz-adv-x="1177" d="M39 0v100l772 1082q25 33 50.5 65.5t39.5 48.5l14 17v4q-35 -4 -104 -4h-573q-45 0 -45 -45v-97h-134v144q0 66 30 95.5t95 29.5h908v-101l-770 -1081q-25 -33 -51.5 -65.5t-41.5 -49.5l-14 -16v-4q35 4 107 4h620q45 0 45 45v96h133v-143q0 -66 -29.5 -95.5t-95.5 -29.5 h-956z" /> +<glyph unicode="[" horiz-adv-x="620" d="M207 -70v1440q0 66 29.5 95.5t95.5 29.5h151v-115h-102q-45 0 -45 -45v-1370q0 -45 45 -45h102v-115h-151q-66 0 -95.5 29.5t-29.5 95.5z" /> +<glyph unicode="\" horiz-adv-x="649" d="M10 1520h131l518 -1606h-129z" /> +<glyph unicode="]" horiz-adv-x="620" d="M137 -80h103q45 0 45 45v1370q0 45 -45 45h-103v115h152q66 0 95.5 -29.5t29.5 -95.5v-1440q0 -66 -30 -95.5t-95 -29.5h-152v115z" /> +<glyph unicode="^" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> +<glyph unicode="_" horiz-adv-x="1077" d="M10 0h1057v-119h-1057v119z" /> +<glyph unicode="`" horiz-adv-x="737" d="M190 1784h156l143 -244h-120z" /> +<glyph unicode="a" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> +<glyph unicode="b" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-373l-4 -84h4q4 8 11.5 21.5t36 47.5t65.5 59.5t100.5 47t137.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-130 -390.5t-335 -148.5q-203 0 -315 162l-23 37h-4q4 -35 4 -84v-90h-135v1274q0 45 -45 45h-86zM307 512 q0 -168 86 -291t242 -123q141 0 236.5 113t95.5 303q0 186 -91.5 300t-234.5 114q-141 0 -237.5 -104.5t-96.5 -311.5z" /> +<glyph unicode="c" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -41t-81.5 -51.5t-113 -40t-143 -18.5 q-233 0 -387 150.5t-154 388.5z" /> +<glyph unicode="d" horiz-adv-x="1204" d="M86 516q0 242 129 390.5t334 148.5q207 0 315 -158l21 -35h4q-4 35 -4 78v334q0 45 -45 45h-86v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-143q-123 0 -123 115l4 65h-4l-11 -22q-7 -14 -36 -49t-66 -62t-101.5 -49.5t-139.5 -22.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 90.5 -302.5t235.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236.5 -112.5t-95.5 -301z" /> +<glyph unicode="e" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5z" /> +<glyph unicode="f" horiz-adv-x="624" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-18 4 -49 4q-37 0 -70 -9t-72.5 -32.5t-63.5 -80t-24 -136.5v-37h263v-117h-263v-913h-139v913h-129z" /> +<glyph unicode="g" horiz-adv-x="1185" d="M86 534.5q0 233.5 121 377t325 143.5q78 0 141.5 -18.5t99.5 -44t60.5 -51.5t32.5 -44l8 -18h5v39q0 113 116 112h144v-121h-84q-45 0 -45 -45v-839q0 -229 -142.5 -342t-353.5 -113q-176 0 -336 82l53 117q127 -72 279 -72q162 0 261 80t99 243v91l2 73h-4 q-96 -178 -323 -178q-207 0 -333 147.5t-126 381zM229 536.5q0 -184.5 92.5 -295t243.5 -110.5q137 0 222 95.5t85 308.5q0 393 -325 393q-150 0 -234 -103.5t-84 -288z" /> +<glyph unicode="h" horiz-adv-x="1239" d="M41 1319v121h145q66 0 95.5 -29t29.5 -92v-436l-4 -84h4q37 92 144.5 174t263.5 82q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 70 -7.5 118t-30 94.5t-69.5 70t-119 23.5q-131 0 -234.5 -82t-137.5 -211 q-16 -55 -17 -137v-494h-139v1274q0 45 -45 45h-86z" /> +<glyph unicode="i" horiz-adv-x="514" d="M57 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM184 1264v176h135v-176h-135z" /> +<glyph unicode="j" horiz-adv-x="548" d="M-43 -295q18 -2 45 -2q37 0 72 9t74.5 34t63.5 82t24 139v897q0 45 -46 45h-86v121h146q66 0 95.5 -29.5t29.5 -95.5v-944q0 -121 -38 -203t-99.5 -117.5t-113.5 -49t-108 -13.5l-59 6v121zM233 1264v176h134v-176h-134z" /> +<glyph unicode="k" horiz-adv-x="1019" d="M41 1319v121h145q68 0 96.5 -27t28.5 -92v-684h107q78 0 117 49l264 344h170l-297 -377q-23 -29 -42.5 -47t-27.5 -22l-8 -4v-5q31 -14 63 -75l187 -334q14 -27 33.5 -36t60.5 -9h55v-121h-96q-78 0 -110.5 19.5t-67.5 82.5l-205 369q-25 45 -108 45h-95v-516h-139v1274 q0 45 -45 45h-86z" /> +<glyph unicode="l" horiz-adv-x="501" d="M45 1319v121h145q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-86z" /> +<glyph unicode="m" horiz-adv-x="1906" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q39 106 146.5 183t226.5 77q272 0 320 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v496q0 145 -47 226t-176 81q-113 0 -203 -86 t-123 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95t-66.5 73t-115 24.5q-121 0 -211 -88t-125 -215q-16 -57 -17 -138v-487h-139v864q0 45 -45 45h-86z" /> +<glyph unicode="n" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86z" /> +<glyph unicode="o" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291z" /> +<glyph unicode="p" horiz-adv-x="1202" d="M47 909v121h141q123 0 123 -108l-2 -70h4q4 8 11.5 21.5t36 49t64.5 62.5t101.5 48.5t141.5 21.5q205 0 326.5 -149.5t121.5 -391.5t-129 -390.5t-332 -148.5q-70 0 -131 20.5t-97 49.5t-62.5 56.5t-36.5 48.5l-11 20h-4q4 -37 4 -90v-490h-139v1274q0 45 -45 45h-86z M313 512q0 -168 87 -291t241 -123q141 0 236.5 113t95.5 303q0 188 -90 301t-236 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> +<glyph unicode="q" horiz-adv-x="1204" d="M88 516q0 242 129 390.5t334 148.5q70 0 131 -20.5t98 -50.5t63.5 -58.5t37.5 -48.5l10 -21h4q-2 29 -2 68q0 106 123 106h141v-121h-86q-45 0 -45 -45v-1274h-139v494l4 90h-4q-4 -8 -11.5 -21.5t-36 -47t-65.5 -60.5t-100.5 -48.5t-136.5 -21.5q-205 0 -327 149.5 t-122 391.5zM229 516.5q0 -188.5 91.5 -302.5t236.5 -114q141 0 237.5 104.5t96.5 311.5q0 170 -86 292t-242 122q-141 0 -237.5 -112.5t-96.5 -301z" /> +<glyph unicode="r" horiz-adv-x="741" d="M47 909v121h143q125 0 125 -117v-69l-4 -78h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139v864q0 45 -45 45h-86z" /> +<glyph unicode="s" horiz-adv-x="901" d="M59 156l80 96q4 -6 13.5 -16.5t40 -38t64.5 -48t88 -37t112 -16.5q92 0 154.5 43t62.5 121q0 61 -59.5 106.5t-144.5 78t-170 69.5t-144.5 103.5t-59.5 158.5q0 135 102.5 207t264.5 72q45 0 94 -9.5t100.5 -29t85 -58t33.5 -90.5v-88h-131v49q0 51 -57.5 78t-120.5 27 q-229 0 -229 -150q0 -63 59 -108t144 -77t170 -68.5t144.5 -104.5t59.5 -162q0 -127 -102.5 -208t-257.5 -81q-227 0 -373 154z" /> +<glyph unicode="t" horiz-adv-x="686" d="M55 913v117h138v285h137v-285h258v-117h-258v-524q0 -70 17.5 -121t42 -79.5t57 -45t59 -21.5t55.5 -5l47 4v-125q-25 -4 -59 -4q-43 0 -84 6t-93.5 29.5t-90 62.5t-64.5 112.5t-27 172.5v538h-135z" /> +<glyph unicode="u" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z " /> +<glyph unicode="v" horiz-adv-x="1060" d="M29 909v121h55q74 0 105.5 -21.5t58.5 -90.5l248 -644l34 -120h5q16 70 34 120l248 644q27 70 58.5 91t103.5 21h53v-121h-18q-55 0 -72 -47l-336 -862h-151l-336 862q-18 47 -72 47h-18z" /> +<glyph unicode="w" horiz-adv-x="1708" d="M20 909v121h72q76 0 107.5 -21.5t54.5 -93.5l211 -653l31 -110h4q16 61 32 110l252 764h140l252 -764l32 -110h4q12 59 29 110l213 653q23 72 54.5 93.5t107.5 21.5h72v-121h-29q-55 0 -72 -47l-295 -862h-153l-252 733l-31 111h-4q-14 -59 -33 -111l-250 -733h-155 l-295 862q-16 47 -72 47h-27z" /> +<glyph unicode="x" horiz-adv-x="976" d="M37 909v121h76q78 0 111.5 -20.5t80.5 -91.5l148 -230l34 -61h5q18 35 32 61l150 230q47 72 80.5 92t111.5 20h74v-121h-41q-70 0 -96 -41l-223 -331l360 -537h-164l-252 383l-32 57h-5q-16 -29 -34 -57l-252 -383h-162l358 537l-223 329q-31 43 -94 43h-43z" /> +<glyph unicode="y" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94z" /> +<glyph unicode="z" horiz-adv-x="1021" d="M80 0v90l579 723l82 94v4q-35 -4 -102 -4h-377q-45 0 -45 -45v-80h-131v123q0 66 29.5 95.5t95.5 29.5h715v-92l-578 -721l-86 -94v-4q37 4 105 4h426q45 0 45 45v80h131v-123q0 -66 -30 -95.5t-95 -29.5h-764z" /> +<glyph unicode="{" horiz-adv-x="667" d="M68 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h31v-115h-19q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17.5 -7t40 -24.5t50 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h19v-115q-12 -2 -31 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> +<glyph unicode="|" horiz-adv-x="583" d="M227 -322v1936h129v-1936h-129z" /> +<glyph unicode="}" horiz-adv-x="667" d="M90 -82h21q25 0 50 8t59 31t55.5 79t21.5 138v225q0 59 16.5 107.5t41 75t49 46t40.5 25.5l17 6v5q-6 2 -17.5 7t-40 26.5t-50 48t-39 74.5t-17.5 104v200q0 84 -20.5 139.5t-55.5 79t-59.5 30.5t-50.5 7h-21v115h33q31 0 62.5 -5t77.5 -27.5t80 -58.5t58.5 -107.5 t24.5 -168.5v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42 -18.5t-53 -38t-42 -68.5t-18.5 -105v-195q0 -96 -24.5 -168t-58.5 -108.5t-80 -59t-77.5 -28t-62.5 -5.5l-33 2v115z" /> +<glyph unicode="~" d="M137 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81.5 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> +<glyph unicode="¡" horiz-adv-x="608" d="M223 872v158h158v-158h-158zM231 -410l7 1063h131l6 -1063h-144z" /> +<glyph unicode="¢" horiz-adv-x="1116" d="M113 720.5q0 231.5 108.5 390.5t302.5 181v228h117v-228q248 -29 367 -303l-131 -49q-94 221 -287 221q-162 0 -247 -123t-85 -317q0 -197 84 -318.5t248 -121.5q193 0 287 221l131 -51q-125 -281 -367 -304v-227h-117v227q-195 23 -303 182.5t-108 391z" /> +<glyph unicode="£" horiz-adv-x="1191" d="M111 0v127h129v541h-93v112h93v305q0 162 119.5 270.5t302.5 108.5q178 0 313 -110l8 -6l-88 -103q-98 86 -233 86q-129 0 -204 -72.5t-75 -181.5v-297h391v-112h-391v-541h539q45 0 45 45v96h133v-143q0 -66 -30 -95.5t-95 -29.5h-864z" /> +<glyph unicode="¥" horiz-adv-x="1243" d="M35 1313v127h49q78 0 119 -21.5t84 -93.5l243 -407l88 -160h5q43 84 88 160l245 407q41 72 83 93.5t120 21.5h47v-127h-24q-72 0 -99 -45l-266 -439v-4h205v-104h-272l-56 -94v-84h328v-107h-328v-436h-143v436h-332v107h332v84l-59 94h-281v104h215v4l-268 439 q-27 45 -99 45h-24z" /> +<glyph unicode="§" horiz-adv-x="849" d="M123 -41l72 98q72 -61 168 -61t159.5 60.5t63.5 162.5q0 35 -8 66l-134 878h123l140 -889q8 -53 8 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM150 1135q0 143 97 236t255 93q137 -2 237 -86l-71 -96q-70 59 -166 59t-161 -58t-65 -161q0 -33 9 -63l135 -885 h-123l-139 889q-8 33 -8 72z" /> +<glyph unicode="¨" horiz-adv-x="1009" d="M322 1608v176h120v-176h-120zM629 1608v176h121v-176h-121z" /> +<glyph unicode="©" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM406 717 q0 172 114.5 297t306.5 125q63 0 121 -19.5t94.5 -47.5t65.5 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -28.5 33.5t-48.5 43t-66 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-66.5 -58.5t-93 -46 t-121.5 -20.5q-195 0 -308 124t-113 294z" /> +<glyph unicode="ª" horiz-adv-x="847" d="M119 541v96h620v-96h-620zM123 979q0 225 389 225h27q-2 86 -35 122t-111 36q-106 0 -106 -41v-49h-109v80q0 41 45 67.5t89 33.5t83 7q143 0 199.5 -66.5t56.5 -185.5v-290q0 -18 19 -19h59v-104h-96q-84 0 -86 79v25h-4q-6 -12 -18.5 -31.5t-62.5 -52.5t-114 -33 q-92 0 -158.5 53.5t-66.5 143.5zM240 985q0 -43 32.5 -73.5t89.5 -30.5q80 0 127.5 68.5t51.5 164.5h-25q-276 0 -276 -129z" /> +<glyph unicode="«" horiz-adv-x="1069" d="M78 578l336 421h149l-336 -421l336 -420h-149zM444 578l336 421h152l-336 -421l336 -420h-152z" /> +<glyph unicode="¬" d="M143 700v119h955v-495h-125v376h-830z" /> +<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> +<glyph unicode="®" horiz-adv-x="1624" d="M84 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM205 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM492 1024v96 h358q106 0 173 -65.5t67 -171.5q0 -84 -44.5 -140.5t-105.5 -70.5v-4q23 -8 41 -43l92 -185q12 -27 55 -26h21v-92h-59q-47 0 -71 11t-44 50l-111 217q-25 45 -73 45h-111v-323h-115v702h-73zM680 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> +<glyph unicode="¯" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> +<glyph unicode="ˉ" horiz-adv-x="944" d="M229 1608v110h504v-110h-504z" /> +<glyph unicode="°" horiz-adv-x="784" d="M104 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM227 1178q0 -72 47.5 -121t117 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117 -50t-47.5 -120z" /> +<glyph unicode="±" d="M86 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM123 -213h995v-119h-995v119z" /> +<glyph unicode="²" horiz-adv-x="837" d="M104 645q0 63 20.5 113.5t64.5 91.5t77 62.5t97 58.5q66 37 100.5 60.5t67 68.5t32.5 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -25t-41 -57v-54h-110v80q0 80 82.5 123t166.5 43q131 0 206 -72.5t75 -185.5q0 -61 -20.5 -109.5t-68.5 -89.5t-77 -59t-96.5 -57t-100 -61.5 t-65.5 -66.5t-33 -93q0 -12 19 -13h358q12 0 12 15v71h111v-102q0 -47 -21.5 -68.5t-68.5 -21.5h-434q-51 0 -72 22.5t-21 79.5z" /> +<glyph unicode="³" horiz-adv-x="837" d="M102 674l82 80q10 -12 29.5 -32t78 -52.5t116.5 -32.5q72 0 126 50t54 126t-56.5 121t-136.5 45h-71l-21 70l197 239l47 49v4q-35 -6 -74 -6h-194q-20 0 -21 -22v-58h-111v88q0 53 20.5 75t76.5 22h452v-80l-241 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89.5 -204 t-211.5 -81q-80 0 -156 37t-111 74z" /> +<glyph unicode="´" horiz-adv-x="759" d="M236 1540l143 244h156l-179 -244h-120z" /> +<glyph unicode="µ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> +<glyph unicode="μ" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-6q-4 -10 -12.5 -28t-42.5 -63t-74.5 -79.5t-113.5 -62.5t-157 -28q-76 0 -133 21.5 t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129v1274q0 45 -45 45h-86z" /> +<glyph unicode="¶" horiz-adv-x="1175" d="M88 968.5q0 198.5 143.5 335t343.5 136.5h490v-127h-371v-1415h-116v596q-201 0 -345.5 138t-144.5 336.5zM821 -102v1292h119v-1292h-119z" /> +<glyph unicode="·" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> +<glyph unicode="∙" horiz-adv-x="440" d="M141 508v164h158v-164h-158z" /> +<glyph unicode="¸" horiz-adv-x="845" d="M227 -311q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l54 227l82 -14v-17l-25 -123q66 -10 105.5 -48t39.5 -97q0 -82 -57 -122t-141 -40l-101 10v99z" /> +<glyph unicode="¹" horiz-adv-x="837" d="M162 1231l209 209h104v-791h191v-106h-502v106h192v563l2 70h-4q-10 -20 -26 -37l-92 -90z" /> +<glyph unicode="º" horiz-adv-x="933" d="M125 1126q0 141 100.5 238.5t241.5 97.5t241.5 -97t100.5 -239q0 -145 -99.5 -243.5t-242.5 -98.5t-242.5 98.5t-99.5 243.5zM160 541v96h620v-96h-620zM238 1126q0 -102 66.5 -169.5t162.5 -67.5t162.5 67.5t66.5 169.5q0 100 -66.5 167t-162.5 67t-162.5 -67 t-66.5 -167z" /> +<glyph unicode="»" horiz-adv-x="1069" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152zM504 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> +<glyph unicode="¼" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM551 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305 l-29 -33v-2z" /> +<glyph unicode="½" horiz-adv-x="1822" d="M158 1231l209 209h102v-791h188v-106h-497v106h192v563l2 70h-4q-10 -20 -26 -37l-93 -90zM528 0l609 1440h127l-607 -1440h-129zM1063 102q0 63 20.5 114.5t64.5 91.5t78 62.5t95 57.5q66 37 100.5 60.5t67.5 68.5t33 98q0 63 -44 105.5t-118 42.5q-57 0 -98 -24.5 t-41 -57.5v-51h-111v78q0 82 83 123.5t167 41.5q131 0 205.5 -72.5t74.5 -185.5q0 -61 -20.5 -109t-67.5 -88t-77.5 -60.5t-96.5 -57.5q-49 -29 -74.5 -46.5t-59.5 -46t-48 -59t-14 -67.5q0 -14 16 -15h358q12 0 13 15v72h110v-103q0 -90 -90 -90h-434q-51 0 -71.5 22.5 t-20.5 79.5z" /> +<glyph unicode="¾" horiz-adv-x="1822" d="M127 674l82 80q10 -12 29.5 -32t78 -52.5t115.5 -32.5q72 0 126 50t54 126t-56 121t-136 45h-72l-20 70l196 239l47 49v4q-35 -6 -73 -6h-195q-20 0 -20 -22v-58h-111v88q0 53 20.5 75t75.5 22h453v-80l-242 -283q96 -8 174 -78.5t78 -187.5q0 -123 -89 -204t-212 -81 q-80 0 -155.5 37t-110.5 74zM549 0l608 1440h127l-606 -1440h-129zM1016 240v75l426 582h123v-551h137v-106h-137v-240h-117v240h-432zM1155 344q29 2 43 2h252v313l2 80h-4q-14 -29 -33 -55l-231 -305l-29 -33v-2z" /> +<glyph unicode="¿" horiz-adv-x="882" d="M63 -68q0 94 38 169t91.5 126.5t107.5 98.5t92 109.5t38 135.5v82h137v-88q0 -90 -36.5 -163.5t-89 -124t-104.5 -98.5t-89 -109.5t-37 -130.5q0 -100 75.5 -168t192.5 -68q61 0 124 21.5t93 42.5l31 22l76 -102q-14 -12 -41 -32t-113 -52.5t-176 -32.5q-176 0 -293 102 t-117 260zM420 872v158h158v-158h-158z" /> +<glyph unicode="À" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM434 1784h156l143 -244h-121z" /> +<glyph unicode="Á" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM612 1540l144 244h155l-178 -244h-121z " /> +<glyph unicode="Â" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM432 1540l170 244h143l170 -244h-129 l-110 166h-4l-111 -166h-129z" /> +<glyph unicode="Ã" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM350 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240 q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186z" /> +<glyph unicode="Ä" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM461 1608v176h121v-176h-121zM768 1608 v176h121v-176h-121z" /> +<glyph unicode="Å" horiz-adv-x="1345" d="M25 0v127h26q57 0 74 45l471 1268h154l471 -1268q16 -45 73 -45h25v-127h-66q-78 0 -110.5 22.5t-59.5 96.5l-125 340h-571l-127 -340q-29 -74 -60.5 -96.5t-107.5 -22.5h-67zM426 584h494l-191 514l-55 186h-4q-31 -119 -56 -186zM522 1662.5q0 63.5 44 104.5t107.5 41 t107.5 -41t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM606 1663q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> +<glyph unicode="Æ" horiz-adv-x="1685" d="M25 127h18q57 0 74 45l487 1268h848q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-475v-525h524v-126h-524v-490q0 -27 13 -36t44 -9h477q45 0 45 45v96h135v-143q0 -66 -29.5 -95.5t-95.5 -29.5h-589q-80 0 -112 25.5t-32 99.5v537h-325l-205 -543 q-27 -74 -58.5 -96.5t-109.5 -22.5h-55v127zM500 788h278v525h-82z" /> +<glyph unicode="Ç" horiz-adv-x="1421" d="M78 731q0 311 203.5 522t506.5 211q82 0 171.5 -17.5t174.5 -52t139 -96t54 -139.5v-119h-135v80q0 94 -129 151.5t-270 57.5q-242 0 -404 -169t-162 -429t161 -440t405 -180q84 0 162.5 20.5t134 50t97.5 59t62 50.5l21 20l82 -102l-24 -24q-15 -15 -67.5 -55 t-110.5 -69.5t-151.5 -56.5t-191.5 -29l-19 -88q66 -10 105 -48t39 -97q0 -84 -56.5 -123t-140.5 -39l-100 10v99q39 -12 86 -13q102 0 102 70t-116 70l-29 -2l39 166q-285 27 -462 238.5t-177 512.5z" /> +<glyph unicode="È" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM362 1784h156l144 -244h-121z" /> +<glyph unicode="É" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM541 1540l143 244h156l-178 -244h-121z" /> +<glyph unicode="Ê" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM360 1540l170 244h144l170 -244h-129l-111 166h-4 l-111 -166h-129z" /> +<glyph unicode="Ë" horiz-adv-x="1142" d="M86 1313v127h823q66 0 95.5 -30t29.5 -95v-144h-135v97q0 45 -45 45h-492v-525h541v-126h-541v-490q0 -45 46 -45h505q45 0 45 45v96h134v-143q0 -66 -30 -95.5t-95 -29.5h-623q-66 0 -95.5 29.5t-29.5 95.5v1188h-133zM389 1608v176h121v-176h-121zM696 1608v176h121 v-176h-121z" /> +<glyph unicode="Ì" horiz-adv-x="600" d="M59 1784h156l143 -244h-120zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> +<glyph unicode="Í" horiz-adv-x="600" d="M94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM238 1540l143 244h156l-179 -244h-120z" /> +<glyph unicode="Î" horiz-adv-x="600" d="M57 1540l170 244h144l170 -244h-129l-111 166h-4l-111 -166h-129zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412z" /> +<glyph unicode="Ï" horiz-adv-x="600" d="M86 1608v176h121v-176h-121zM94 0v127h135v1186h-135v127h412v-127h-137v-1186h137v-127h-412zM393 1608v176h121v-176h-121z" /> +<glyph unicode="Ð" horiz-adv-x="1464" d="M86 1313v127h578q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-320q-66 0 -95.5 29.5t-29.5 95.5v537h-102v122h102v529h-133zM362 172q0 -45 46 -45h241q270 0 429 154.5t159 439.5q0 283 -158.5 437.5t-429.5 154.5h-287v-529h336v-122h-336v-490 z" /> +<glyph unicode="Ñ" horiz-adv-x="1556" d="M86 0v127h88q45 0 45 45v1268h131l735 -1026l117 -189h4q-10 113 -10 189v901q0 66 29.5 95.5t95.5 29.5h152v-127h-89q-45 0 -45 -45v-1268h-131l-735 1026l-119 186h-4q12 -111 12 -186v-901q0 -66 -29.5 -95.5t-94.5 -29.5h-152zM477 1546q0 240 191 240q59 0 103 -37 t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> +<glyph unicode="Ò" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM565 1784h156l143 -244h-121z" /> +<glyph unicode="Ó" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM743 1540l144 244h155l-178 -244h-121z" /> +<glyph unicode="Ô" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM563 1540l170 244h144l170 -244h-129 l-111 166h-4l-111 -166h-129z" /> +<glyph unicode="Õ" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM481 1546q0 240 191 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> +<glyph unicode="Ö" horiz-adv-x="1619" d="M78 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5q-307 0 -520 219.5t-213 534.5zM227 729q0 -260 170 -439t414 -179q242 0 413 179t171 439q0 254 -170 427t-414 173t-414 -173t-170 -427zM592 1608v176h121v-176h-121zM899 1608v176 h121v-176h-121z" /> +<glyph unicode="×" d="M98 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> +<glyph unicode="Ø" horiz-adv-x="1626" d="M80 729q0 309 213 522t520 213q209 0 387 -110l98 137l84 -61l-96 -136q260 -223 260 -565q0 -315 -214 -534.5t-519 -219.5q-215 0 -391 115l-98 -139l-86 59l100 142q-121 104 -189.5 254.5t-68.5 322.5zM229 729q0 -283 195 -461l696 973q-143 88 -307 88 q-244 0 -414 -173t-170 -427zM504 203q145 -92 309 -92q244 0 414 179t170 439q0 272 -197 447z" /> +<glyph unicode="Ù" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM498 1784h155 l144 -244h-121z" /> +<glyph unicode="Ú" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM676 1540 l143 244h156l-178 -244h-121z" /> +<glyph unicode="Û" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM496 1540 l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> +<glyph unicode="Ü" horiz-adv-x="1468" d="M70 1313v127h151q66 0 95.5 -30t29.5 -95v-815q0 -180 105.5 -284.5t281.5 -104.5q178 0 283.5 105.5t105.5 287.5v811q0 66 30 95.5t95 29.5h152v-127h-88q-45 0 -45 -45v-774q0 -233 -146.5 -376t-384 -143t-385 142.5t-147.5 376.5v774q0 45 -45 45h-88zM524 1608v176 h121v-176h-121zM831 1608v176h121v-176h-121z" /> +<glyph unicode="Ý" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM547 1540l143 244h156l-178 -244h-121z" /> +<glyph unicode="Þ" horiz-adv-x="1196" d="M86 1313v127h152q66 0 95 -30t29 -95v-131h332q195 0 320 -119t125 -317q0 -197 -126 -318t-323 -121h-328v-309h-143v1268q0 45 -45 45h-88zM362 436h314q143 0 229 83t86 228.5t-85 227.5t-228 82h-316v-621z" /> +<glyph unicode="ß" horiz-adv-x="1142" d="M41 0v121h84q45 0 45 45v921q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -68 -36 -128t-78 -95t-77.5 -79t-35.5 -85q0 -49 62.5 -103.5t137 -100.5t137 -126t62.5 -174q0 -139 -96 -216t-236 -77q-178 0 -309 111l-8 8l51 109q12 -12 34.5 -28.5t90.5 -45.5 t131 -29q86 0 143.5 43t57.5 129q0 68 -62.5 131.5t-138.5 107.5t-138.5 112.5t-62.5 144.5q0 57 36 110.5t78 89.5t78 86t36 103q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-952q0 -66 -29.5 -95.5t-95.5 -29.5h-143z" /> +<glyph unicode="à" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM293 1440h156l143 -244h-121z" /> +<glyph unicode="á" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM471 1196l143 244h156l-178 -244h-121z" /> +<glyph unicode="â" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM291 1196l170 244h143l170 -244h-129l-110 166h-5 l-110 -166h-129z" /> +<glyph unicode="ã" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM209 1202q0 240 190 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106zM225 289q0 -78 60.5 -136.5t169.5 -58.5 q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97z" /> +<glyph unicode="ä" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM319 1264v176h121v-176h-121zM627 1264v176h121v-176h-121 z" /> +<glyph unicode="å" horiz-adv-x="1083" d="M82 281q0 354 631 354h57v12q0 160 -61.5 225.5t-204.5 65.5q-63 0 -132 -20.5t-69 -69.5v-66h-133v99q0 49 39 87t97.5 55t108.5 24.5t91 7.5q227 0 315 -104.5t88 -291.5v-493q0 -45 45 -45h86v-121h-141q-66 0 -94.5 29.5t-28.5 93.5l2 76h-4q2 0 -9 -22.5t-37 -56.5 t-62.5 -67t-99 -55.5t-134.5 -22.5q-141 0 -245.5 80.5t-104.5 225.5zM225 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v47h-59q-55 0 -93 -2t-102.5 -8t-109 -21.5t-89.5 -40t-68.5 -66.5t-23.5 -97zM381 1318.5q0 63.5 44 104.5t107.5 41t107.5 -41 t44 -104.5t-44 -104t-107.5 -40.5t-107.5 40.5t-44 104zM465 1319q0 -29 18.5 -48.5t48.5 -19.5q29 0 48.5 19.5t19.5 48.5q0 31 -19.5 50.5t-48 19.5t-48 -19.5t-19.5 -50.5z" /> +<glyph unicode="æ" horiz-adv-x="1783" d="M82 281q0 70 23.5 124t58.5 89.5t90 61.5t105.5 39t120 20.5t113.5 8.5t107 1h68v22q0 160 -61.5 225.5t-202.5 65.5q-66 0 -133.5 -20.5t-67.5 -69.5v-66h-133v99q0 86 104.5 130t231.5 44q289 0 356 -213h4q127 213 389 213q201 0 312.5 -132t111.5 -317l-4 -92h-772 q4 -197 111.5 -305.5t273.5 -108.5q170 0 301 119l8 8l66 -104q-16 -16 -47 -41t-130.5 -66t-203.5 -41q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM225 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142.5 -6t-132 -26.5t-110.5 -69.5t-39 -123zM913 625h625q-6 152 -89 231.5t-200 79.5q-131 0 -222 -80.5t-114 -230.5z" /> +<glyph unicode="ç" horiz-adv-x="1081" d="M82 514q0 236 155.5 388.5t387.5 152.5q49 0 107.5 -11.5t118.5 -34t100 -68.5t40 -105v-93h-131v60q0 59 -79 93t-156 34q-170 0 -285 -116t-115 -300t118 -298t286 -114q186 0 317 131l15 15l65 -105q-6 -6 -16.5 -17t-49 -40t-82.5 -51.5t-114 -41t-146 -18.5l-16 -88 q66 -10 104.5 -48t38.5 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 170q-197 29 -321.5 173t-124.5 357z" /> +<glyph unicode="è" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM346 1440h156l143 -244h-121z" /> +<glyph unicode="é" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM524 1196l144 244h155l-178 -244h-121z" /> +<glyph unicode="ê" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM344 1196l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> +<glyph unicode="ë" horiz-adv-x="1122" d="M82 514q0 246 146.5 393.5t361.5 147.5q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-791q2 -188 118 -299t282 -111q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-231 0 -385 151.5t-154 387.5zM233 621h646q-6 154 -88 235.5t-203 81.5 q-133 0 -231.5 -83.5t-123.5 -233.5zM373 1264v176h121v-176h-121zM680 1264v176h121v-176h-121z" /> +<glyph unicode="ì" horiz-adv-x="516" d="M6 1440h156l141 -244h-121zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> +<glyph unicode="í" horiz-adv-x="516" d="M59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM182 1196l144 244h155l-178 -244h-121z" /> +<glyph unicode="î" horiz-adv-x="516" d="M2 1196l172 244h141l172 -244h-129l-110 166h-4l-113 -166h-129zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86z" /> +<glyph unicode="ï" horiz-adv-x="516" d="M51 1264v176h123v-176h-123zM59 909v121h146q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v739q0 45 -45 45h-86zM309 1264v176h121v-176h-121z" /> +<glyph unicode="ð" horiz-adv-x="1157" d="M76 475q0 197 130 339t359 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-360 -163l-27 98l277 129q-131 68 -291 104l41 119q236 -59 401 -158l269 121l26 -98l-198 -92q309 -242 309 -672q0 -106 -30 -206.5t-89 -186.5t-159.5 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM219 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-241 86.5q-174 0 -267.5 -107.5t-93.5 -257.5z" /> +<glyph unicode="ñ" horiz-adv-x="1245" d="M47 909v121h143q125 0 125 -115v-47l-4 -73h4q37 94 142.5 177t267.5 83q186 0 266 -100.5t80 -299.5v-489q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v493q0 145 -44 225.5t-179 80.5q-131 0 -235.5 -81t-139.5 -210q-16 -57 -17 -139v-494h-139v864 q0 45 -45 45h-86zM326 1202q0 240 190 240q59 0 103.5 -37t81 -74t73.5 -37q82 0 82 142h109q0 -240 -191 -240q-59 0 -104 37t-81 72.5t-75 35.5q-82 0 -82 -139h-106z" /> +<glyph unicode="ò" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM387 1440h156 l143 -244h-121z" /> +<glyph unicode="ó" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM565 1196 l144 244h155l-178 -244h-121z" /> +<glyph unicode="ô" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM385 1196 l170 244h143l170 -244h-129l-110 166h-4l-111 -166h-129z" /> +<glyph unicode="õ" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM303 1202 q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81.5 72.5t-74 35.5q-82 0 -82 -139h-107z" /> +<glyph unicode="ö" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q227 0 385.5 -153.5t158.5 -381.5q0 -231 -158.5 -388t-383.5 -157q-227 0 -386 157t-159 388zM225 520q0 -178 117 -299t285 -121q166 0 282.5 121t116.5 299q0 174 -116.5 291t-282.5 117q-168 0 -285 -117t-117 -291zM414 1264v176 h121v-176h-121zM721 1264v176h121v-176h-121z" /> +<glyph unicode="÷" d="M102 522v119h1004v-119h-1004zM526 125v151h154v-151h-154zM526 887v151h154v-151h-154z" /> +<glyph unicode="ø" horiz-adv-x="1251" d="M82 520q0 227 158.5 381t384.5 154q154 0 280 -76l80 113l84 -62l-80 -110q180 -158 180 -400q0 -231 -158.5 -388t-383.5 -157q-145 0 -265 66l-77 -109l-84 62l75 104q-194 162 -194 422zM225 520q0 -186 129 -311l475 663q-94 55 -202 56q-168 0 -285 -117t-117 -291z M438 150q88 -49 189 -50q166 0 282.5 121t116.5 299q0 172 -119 287z" /> +<glyph unicode="ù" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M365 1440h155l144 -244h-121z" /> +<glyph unicode="ú" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M543 1196l143 244h156l-178 -244h-121z" /> +<glyph unicode="û" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M362 1196l170 244h144l170 -244h-129l-111 166h-4l-110 -166h-130z" /> +<glyph unicode="ü" horiz-adv-x="1234" d="M43 909v121h145q66 0 95.5 -28.5t29.5 -92.5v-497q0 -145 45 -225.5t181 -80.5q168 0 273.5 128t105.5 303v493h139v-864q0 -45 45 -45h86v-121h-141q-125 0 -125 115v47l4 74h-4q-39 -94 -144.5 -177.5t-257.5 -83.5q-180 0 -263 98.5t-83 301.5v489q0 45 -45 45h-86z M391 1264v176h121v-176h-121zM698 1264v176h121v-176h-121z" /> +<glyph unicode="ý" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM487 1196l144 244h155l-178 -244h-121z" /> +<glyph unicode="þ" horiz-adv-x="1196" d="M41 1319v121h145q66 0 95.5 -30t29.5 -95v-367l-4 -90h4q100 197 346 197q209 0 331 -148.5t122 -390.5t-122 -391.5t-331 -149.5q-74 0 -136 19.5t-99 48.5t-63.5 57.5t-36.5 46.5l-11 21h-4q4 -37 4 -90v-488h-139v1684q0 45 -45 45h-86zM307 514q0 -211 96.5 -312.5 t239.5 -101.5q145 0 234.5 114t89.5 302q0 186 -89.5 299t-234.5 113q-147 0 -241.5 -100.5t-94.5 -313.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1103" d="M16 -330l66 103q0 -4 18.5 -21.5t57.5 -37t78 -19.5q121 0 190 168l61 141l-362 858q-20 47 -72 47h-20v121h63q70 0 99.5 -21.5t58.5 -90.5l264 -644l37 -110h4q14 59 35 110l254 644q27 70 57.5 91t102.5 21h63v-121h-20q-53 0 -72 -47l-444 -1077 q-41 -100 -118 -157.5t-177 -57.5q-133 0 -220 94zM336 1264v176h121v-176h-121zM643 1264v176h121v-176h-121z" /> +<glyph unicode="Œ" horiz-adv-x="1863" d="M78 721q0 313 197.5 526t496.5 213q51 0 153.5 -10t137.5 -10h565q66 0 95.5 -30t29.5 -95v-144h-133v97q0 45 -45 45h-477v-525h524v-126h-524v-535h536q45 0 45 45v96h133v-143q0 -125 -114 -125h-633q-35 0 -138.5 -10t-154.5 -10q-299 0 -496.5 213t-197.5 528z M227 721q0 -262 150.5 -433t394.5 -171q119 0 182 14v1176q-72 16 -182 16q-242 0 -393.5 -171t-151.5 -431z" /> +<glyph unicode="œ" horiz-adv-x="2068" d="M82 512q0 240 157.5 391.5t385.5 151.5q154 0 276.5 -74t190.5 -203h4q59 131 174.5 204t265.5 73q205 0 318.5 -136.5t113.5 -338.5l-4 -70h-790q8 -193 121.5 -301.5t277.5 -108.5q170 0 299 117l10 10l68 -104q-16 -16 -48 -41t-131.5 -66t-203.5 -41q-160 0 -283 75 t-186 206h-4q-66 -131 -189 -206t-280 -75q-227 0 -385 149.5t-158 387.5zM225 512q0 -182 116 -297t284 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -284 -116t-116 -300zM1180 621h645q-8 154 -89 235.5t-202 81.5q-133 0 -231 -83.5t-123 -233.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1212" d="M20 1313v127h56q76 0 113.5 -20.5t82.5 -94.5l244 -407l88 -162h4q43 86 88 162l244 407q45 74 83 94.5t114 20.5h55v-127h-33q-63 0 -94 -53l-387 -633v-627h-143v627l-385 633q-33 53 -97 53h-33zM395 1608v176h121v-176h-121zM702 1608v176h121v-176h-121z" /> +<glyph unicode="ˆ" horiz-adv-x="962" d="M240 1540l170 244h143l170 -244h-129l-111 166h-4l-110 -166h-129z" /> +<glyph unicode="˜" horiz-adv-x="1007" d="M182 1546q0 240 191 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h108q0 -240 -190 -240q-59 0 -104.5 37t-81 73t-74.5 36q-82 0 -82 -140h-107z" /> +<glyph unicode="–" horiz-adv-x="1314" d="M145 522v119h1024v-119h-1024z" /> +<glyph unicode="—" horiz-adv-x="1724" d="M145 522v119h1434v-119h-1434z" /> +<glyph unicode="‘" horiz-adv-x="434" d="M104 1106l115 352h111l-80 -352h-146z" /> +<glyph unicode="’" horiz-adv-x="434" d="M104 1108l80 352h146l-115 -352h-111z" /> +<glyph unicode="‚" horiz-adv-x="434" d="M104 -184l80 352h146l-115 -352h-111z" /> +<glyph unicode="“" horiz-adv-x="675" d="M104 1106l115 352h111l-80 -352h-146zM346 1106l115 352h110l-79 -352h-146z" /> +<glyph unicode="”" horiz-adv-x="675" d="M104 1108l80 352h146l-115 -352h-111zM346 1108l80 352h145l-114 -352h-111z" /> +<glyph unicode="„" horiz-adv-x="675" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> +<glyph unicode="•" horiz-adv-x="899" d="M158 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> +<glyph unicode="…" horiz-adv-x="1673" d="M276 0v164h158v-164h-158zM758 0v164h157v-164h-157zM1239 0v164h158v-164h-158z" /> +<glyph unicode="‹" horiz-adv-x="702" d="M78 578l336 421h149l-336 -421l336 -420h-149z" /> +<glyph unicode="›" horiz-adv-x="702" d="M135 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> +<glyph unicode="€" horiz-adv-x="1208" d="M80 545v104h117q-4 37 -4 72l4 94h-117v105h135q61 242 249.5 393t438.5 151q49 0 96.5 -6t69.5 -12l23 -6l-33 -133q-74 23 -158 22q-195 0 -337 -111.5t-195 -297.5h620l-20 -105h-623q-8 -41 -8 -90l4 -76h596l-18 -104h-553q47 -195 193.5 -314.5t344.5 -119.5 q47 0 93 7t69 13l23 8l32 -131q-94 -33 -219 -33q-258 0 -447.5 159t-244.5 411h-131z" /> +<glyph unicode="™" horiz-adv-x="1998" d="M88 1251v95q0 53 20.5 73.5t75.5 20.5h566q55 0 75.5 -20.5t20.5 -73.5v-95h-107v62q0 20 -20 20h-195v-790h-116v790h-193q-20 0 -20 -20v-62h-107zM858 647h51q20 0 23 21l59 772h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l59 -772q2 -20 23 -21h51v-104 h-88q-55 0 -74.5 19.5t-24.5 74.5l-41 514l3 59h-5l-229 -499h-94l-230 499h-4l2 -59l-41 -514q-4 -55 -23.5 -74.5t-74.5 -19.5h-88v104z" /> +<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> +<glyph unicode="fi" horiz-adv-x="1118" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -51 4q-37 0 -70 -9t-71.5 -32.5t-62.5 -80t-24 -136.5v-37h488q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-429v-913 h-139v913h-129zM788 1264v176h136v-176h-136z" /> +<glyph unicode="fl" horiz-adv-x="1105" d="M51 913v117h129v37q0 96 26.5 169t64.5 109.5t90.5 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -230 -252v-37h263v-117h-263v-913h-139v913h-129z" /> +<glyph unicode="ffi" horiz-adv-x="1722" d="M51 913v117h129v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -71 -9t-72.5 -34t-62.5 -80t-24 -137v-35h465v37q0 119 38 202t98.5 118.5t112.5 49t106 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-72.5 -34t-62.5 -80t-23.5 -137v-35 h487q66 0 95.5 -29.5t29.5 -95.5v-739q0 -45 45 -45h86v-121h-145q-66 0 -95.5 29.5t-29.5 95.5v743q0 45 -45 45h-428v-913h-140v913h-465v-913h-139v913h-129zM1393 1264v176h135v-176h-135z" /> +<glyph unicode="ffl" horiz-adv-x="1708" d="M51 913v117h129v43q0 117 36 198t96.5 116.5t111.5 49t106 13.5l68 -4v-125q-23 4 -53 4q-37 0 -71 -9t-71.5 -34t-60.5 -79t-23 -132v-41h465v37q0 96 27 169t64.5 109.5t90 60.5t91.5 29t82 5h260q66 0 95.5 -30t29.5 -95v-1149q0 -45 45 -45h86v-121h-146 q-66 0 -95.5 29.5t-29.5 95.5v1149q0 45 -45 45h-186q-229 0 -229 -252v-37h262v-117h-262v-913h-140v913h-465v-913h-139v913h-129z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.ttf b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.ttf Binary files differnew file mode 100755 index 000000000..072e9a4e0 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.ttf diff --git a/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.woff b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.woff Binary files differnew file mode 100755 index 000000000..f8a9dff96 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/Museo300-Regular-webfont.woff diff --git a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.eot b/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.eot Binary files differdeleted file mode 100644 index 8517f0a04..000000000 --- a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.eot +++ /dev/null diff --git a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.svg b/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.svg deleted file mode 100644 index 572bef8e4..000000000 --- a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.svg +++ /dev/null @@ -1,418 +0,0 @@ -<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > -<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"> -<metadata version="1.0"><uniqueid id="com.myfonts.exljbris.museo-sans-rounded.500.wfkit2.5nqn"/><vendor name="MyFonts" url="http://www.myfonts.com/"/><credits><credit name="Jos Buivenga" url="http://www.myfonts.com/person/buivenga/jos/"/></credits><description><text lang="en">This is a Webfont from MyFonts. Full information about this font: -http://www.myfonts.com/fonts/exljbris/museo-sans-rounded/500// -</text></description><license url="http://new.myfonts.com/license/922,1146"/><copyright><text lang="en">Copyright (c) 2011 by Jos Buivenga. All rights reserved.</text></copyright><trademark><text lang="en">Museo Sans Rounded is a trademark of Jos Buivenga.</text></trademark></metadata> -<defs > -<font id="MuseoSansRounded-500" horiz-adv-x="453" ><font-face - font-family="Museo Sans Rounded 500" - units-per-em="1000" - panose-1="2 0 0 0 0 0 0 0 0 0" - ascent="772" - descent="-228" - alphabetic="0" /> -<missing-glyph horiz-adv-x="549" d="M25 33V667Q25 700 58 700H492Q525 700 525 667V33Q525 0 492 0H58Q25 0 25 33ZM275 395L445 650H105L275 395ZM305 350L475 95V605L305 350ZM75 95L245 350L75 605V95ZM105 50H445L275 305L105 50Z" /> -<glyph unicode=" " glyph-name="space" horiz-adv-x="250" /> -<glyph unicode="!" glyph-name="exclam" horiz-adv-x="259" d="M118 194Q85 194 85 227L80 673Q80 706 112 706H146Q179 706 179 673L174 227Q172 194 140 194H118ZM80 33V65Q80 98 113 98H147Q180 98 180 65V33Q180 0 147 0H113Q80 0 80 33Z" /> -<glyph unicode=""" glyph-name="quotedbl" horiz-adv-x="329" d="M230 506Q197 506 197 539V685Q197 718 230 718H240Q273 718 273 685V539Q273 506 240 506H230ZM89 506Q56 506 56 539V685Q56 718 89 718H99Q132 718 132 685V539Q132 506 99 506H89Z" /> -<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="702" d="M143 35L170 191H76Q40 191 45 226L47 235Q51 265 83 265H183L212 433H119Q83 433 88 468L90 477Q95 506 125 506H225L254 677Q260 706 290 706H305Q341 706 335 671L306 506H461L490 677Q496 -706 527 706H541Q577 706 571 671L542 506H636Q672 506 667 471L665 462Q660 433 630 433H530L500 265H593Q629 265 624 229L622 221Q617 191 586 191H487L460 30Q454 0 423 0H409Q373 0 379 35L406 191H251L223 30Q219 0 187 0H173Q137 0 143 35ZM264 265H419L449 -433H293L264 265Z" /> -<glyph unicode="$" glyph-name="dollar" horiz-adv-x="536" d="M76 60Q50 80 71 106L87 129Q105 154 134 135Q207 80 287 80Q339 80 374 108T410 184Q410 224 375 253T288 304T186 351T100 419T64 521Q64 594 115 648T249 715V776Q249 809 281 809H289Q320 809 -320 780V716Q401 712 468 665Q492 650 477 620L464 595Q448 567 418 586Q355 626 291 626Q236 626 200 596T163 523Q163 495 182 473T231 434T299 403T373 370T440 328T490 269T509 187Q509 110 458 55T320 -10V-69Q320 -102 289 -102H281Q249 -102 249 -73V-10Q154 --1 76 60Z" /> -<glyph unicode="%" glyph-name="percent" horiz-adv-x="755" d="M196 422Q133 422 89 465T44 570T88 674T196 718Q258 718 303 675T348 570T303 466T196 422ZM91 40L585 687Q600 706 625 706H643Q664 706 670 694T663 666L169 20Q153 0 129 0H111Q90 0 84 12T91 -40ZM196 496Q227 496 248 517T270 570T249 623T196 645T144 623T122 570Q122 538 143 517T196 496ZM407 136Q407 197 451 240T558 284T665 241T710 136T666 32T558 -12T451 31T407 136ZM485 167T485 136T506 84T558 62Q590 62 611 83T632 136Q632 167 611 189T558 -211T506 189Z" /> -<glyph unicode="&" glyph-name="ampersand" horiz-adv-x="644" d="M45 198Q45 258 78 309T170 379V381Q166 382 160 385T138 400T109 428T86 473T76 536Q76 622 136 670T293 718H339Q372 718 372 685V667Q372 634 339 634H298Q243 634 210 604T176 526Q176 -483 205 449T306 415H437V478Q437 511 470 511H501Q534 511 534 483V415H595Q628 415 628 382V362Q628 329 595 329H534V235Q534 118 469 53T290 -12Q181 -12 113 48T45 198ZM146 203Q146 151 186 115T290 79Q360 79 398 118T437 239V329H302Q227 329 187 296T146 -203Z" /> -<glyph unicode="'" glyph-name="quotesingle" horiz-adv-x="188" d="M88 530Q55 530 55 562V685Q55 718 88 718H100Q132 718 132 685V562Q132 530 100 530H88Z" /> -<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="275" d="M154 -75Q49 114 49 340Q49 537 152 713Q164 735 191 735H206Q225 735 231 725T229 697Q137 522 137 339Q137 131 231 -56Q239 -73 233 -84T208 -95H191Q165 -95 154 -75Z" /> -<glyph unicode=")" glyph-name="parenright" horiz-adv-x="275" d="M50 -54Q142 130 142 339Q142 524 51 697Q42 714 47 724T72 735H89Q116 735 128 713Q230 538 230 340Q230 113 128 -73Q116 -95 88 -95H73Q54 -95 48 -84T50 -54Z" /> -<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="473" d="M141 349L124 361Q97 380 119 406L185 491V493L82 522Q48 530 59 562L65 581Q76 615 106 602L208 564L204 672Q201 706 235 706H258Q292 706 289 673L284 564L386 601Q418 614 428 582L435 563Q444 -530 413 523L308 493V491L374 407Q397 381 369 361L353 349Q325 329 308 357L248 447H246L187 359Q168 329 141 349Z" /> -<glyph unicode="+" glyph-name="plus" horiz-adv-x="613" d="M75 246Q42 246 42 279V291Q42 324 75 324H266V537Q266 570 299 570H315Q348 570 348 537V324H538Q571 324 571 291V279Q571 246 538 246H348V33Q348 0 315 0H299Q266 0 266 33V246H75Z" /> -<glyph unicode="," glyph-name="comma" horiz-adv-x="237" d="M35 -87L87 77Q94 105 124 105H155Q174 105 181 95T181 67L113 -99Q103 -124 74 -124H63Q25 -124 35 -87Z" /> -<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="420" d="M97 242Q64 242 64 275V295Q64 328 97 328H323Q356 328 356 295V275Q356 242 323 242H97Z" /> -<glyph unicode="." glyph-name="period" horiz-adv-x="228" d="M62 33V72Q62 105 95 105H133Q166 105 166 72V33Q166 0 133 0H95Q62 0 62 33Z" /> -<glyph unicode="/" glyph-name="slash" horiz-adv-x="395" d="M46 -5L279 717Q288 744 317 744H335Q352 744 360 734T362 707L129 -15Q119 -42 91 -42H73Q55 -42 48 -32T46 -5Z" /> -<glyph unicode="0" glyph-name="zero" horiz-adv-x="622" d="M311 -12Q243 -12 193 16T115 95T74 210T61 354T74 497T115 611T193 690T311 718Q561 718 561 354Q561 -12 311 -12ZM163 79T311 79T459 354Q459 627 311 627T163 354Q163 79 311 79Z" /> -<glyph unicode="1" glyph-name="one" horiz-adv-x="469" d="M50 33V53Q50 86 83 86H206V542L207 585H205Q196 569 174 547L129 503Q104 480 83 504L69 518Q45 542 69 565L197 690Q214 706 237 706H269Q302 706 302 673V86H424Q457 86 457 53V33Q457 0 424 0H83Q50 -0 50 33Z" /> -<glyph unicode="2" glyph-name="two" horiz-adv-x="559" d="M48 33V54Q48 113 73 163T137 247T221 313T304 372T368 434T394 508Q394 560 359 592T267 625Q193 625 142 560Q118 534 95 553L77 567Q51 587 68 612Q97 653 148 685T274 718Q372 718 434 662T497 515Q497 -468 479 427T430 357T364 300T292 249T225 201T176 148T156 86H475Q508 86 508 53V33Q508 0 475 0H83Q48 0 48 33Z" /> -<glyph unicode="3" glyph-name="three" horiz-adv-x="556" d="M72 63Q48 82 67 109L83 132Q102 156 129 138Q198 82 274 82Q334 82 376 118T418 211Q418 273 371 307T254 341H232Q206 341 195 365L192 371Q181 394 200 414L336 575L380 621V623Q359 620 320 620H114Q81 -620 81 653V673Q81 706 114 706H470Q503 706 503 675V666Q503 642 488 626L311 422Q393 413 455 361T518 215T451 55T278 -12Q167 -12 72 63Z" /> -<glyph unicode="4" glyph-name="four" horiz-adv-x="597" d="M56 189Q23 189 23 222V228Q23 250 36 269L336 685Q350 706 375 706H430Q463 706 463 673V273H526Q559 273 559 240V222Q559 189 531 189H463V33Q463 0 430 0H398Q365 0 365 33V189H56ZM133 273H365V530L370 -600H368Q351 567 333 542L133 275V273Z" /> -<glyph unicode="5" glyph-name="five" horiz-adv-x="553" d="M85 65Q60 85 82 110L98 132Q117 156 143 136Q200 82 273 82Q337 82 382 122T428 225T382 329T267 370Q220 370 170 345Q146 336 126 343L117 346Q90 357 93 385L123 675Q126 706 157 706H449Q482 706 -482 673V653Q482 620 449 620H212L195 471L190 434H192Q231 456 283 456Q392 456 460 390T529 226Q529 124 458 56T279 -12Q165 -12 85 65Z" /> -<glyph unicode="6" glyph-name="six" horiz-adv-x="592" d="M55 319Q55 391 74 460T131 587T232 682T373 718Q432 718 479 701Q510 690 498 659L489 634Q479 606 449 614Q412 627 377 627Q285 627 231 557T163 386H165Q188 417 231 437T328 457Q424 457 485 392T546 -230Q546 125 482 57T318 -12Q204 -12 130 80T55 319ZM158 270Q158 204 205 142T318 79Q377 79 412 119T447 225Q447 291 408 332T299 373Q240 373 199 343T158 270Z" /> -<glyph unicode="7" glyph-name="seven" horiz-adv-x="515" d="M97 39L353 556L392 621V623Q378 620 343 620H60Q27 620 27 653V673Q27 706 60 706H466Q499 706 499 675V659Q499 636 490 619L192 24Q181 0 154 0H121Q102 0 96 11T97 39Z" /> -<glyph unicode="8" glyph-name="eight" horiz-adv-x="599" d="M54 199Q54 312 167 391Q82 447 82 533Q82 609 139 663T302 718Q402 718 464 667T526 532Q526 438 442 347Q542 287 542 194Q542 110 475 49T300 -12Q194 -12 124 48T54 199ZM367 383Q429 450 429 -521Q429 573 394 602T302 632T212 604T179 532Q179 515 184 501T200 474T223 453T254 434T288 417T327 400T367 383ZM153 209Q153 150 196 113T300 75Q356 75 398 109T441 194Q441 214 433 231T414 259T380 284T341 304T290 326T238 349Q153 285 153 209Z" /> -<glyph unicode="9" glyph-name="nine" horiz-adv-x="592" d="M94 47L103 73Q113 100 143 92Q190 79 215 79Q307 79 361 149T429 320H427Q404 289 360 270T263 250Q168 250 107 315T46 479Q46 584 110 651T273 718Q388 718 462 627T537 388Q537 316 518 247T461 -119T361 24T219 -12Q157 -12 113 6Q82 15 94 47ZM293 333Q351 333 392 364T434 436Q434 502 387 564T274 627Q215 627 180 587T145 481Q145 415 184 374T293 333Z" /> -<glyph unicode=":" glyph-name="colon" horiz-adv-x="232" d="M98 403Q66 403 66 436V473Q66 506 98 506H134Q167 506 167 473V436Q167 403 134 403H98ZM66 33V70Q66 103 98 103H134Q167 103 167 70V33Q167 0 134 0H98Q66 0 66 33Z" /> -<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="273" d="M139 401Q106 401 106 434V473Q106 506 139 506H174Q207 506 207 473V434Q207 401 174 401H139ZM56 -88L100 77Q107 105 137 105H168Q187 105 194 95T194 67L134 -98Q125 -124 96 -124H84Q48 -124 -56 -88Z" /> -<glyph unicode="<" glyph-name="less" horiz-adv-x="613" d="M84 241Q59 251 59 279V290Q59 318 84 329L486 508Q503 515 514 509T525 484V464Q525 438 499 426L167 286V284L499 143Q525 133 525 105V86Q525 67 514 60T486 61L84 241Z" /> -<glyph unicode="=" glyph-name="equal" horiz-adv-x="613" d="M101 340Q68 340 68 373V385Q68 418 101 418H512Q545 418 545 385V373Q545 340 512 340H101ZM101 151Q68 151 68 184V196Q68 229 101 229H512Q545 229 545 196V184Q545 151 512 151H101Z" /> -<glyph unicode=">" glyph-name="greater" horiz-adv-x="613" d="M88 86V105Q88 133 113 143L445 284V286L113 426Q88 438 88 464V484Q88 503 98 509T126 509L529 329Q554 317 554 290V279Q554 251 529 241L126 61Q109 54 99 60T88 86Z" /> -<glyph unicode="?" glyph-name="question" horiz-adv-x="456" d="M190 194Q157 194 157 227V247Q157 286 174 318T217 374T267 419T309 470T327 530Q327 572 295 600T212 629Q168 629 125 604Q94 588 78 613L65 631Q46 659 71 676Q139 720 219 720Q307 720 367 -669T428 537Q428 493 411 457T368 396T318 350T273 300T252 240L251 219Q247 194 219 194H190ZM154 33V65Q154 98 187 98H222Q255 98 255 65V33Q255 0 222 0H187Q154 0 154 33Z" /> -<glyph unicode="@" glyph-name="at" horiz-adv-x="794" d="M52 241Q52 396 158 503T418 611Q552 611 614 554T677 408V125H716Q749 125 749 92V85Q749 52 716 52H476Q385 52 327 107T269 241Q269 318 326 373T476 428H584Q582 473 540 502T422 531Q307 531 228 -446T149 241Q149 129 219 48T401 -45Q433 -48 433 -79V-92Q433 -127 399 -124Q247 -113 150 -9T52 241ZM367 242Q367 193 400 159T484 125H584V361H486Q434 361 401 327T367 242Z" /> -<glyph unicode="A" glyph-name="A" horiz-adv-x="621" d="M24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 545 -288 509L209 285Z" /> -<glyph unicode="B" glyph-name="B" horiz-adv-x="617" d="M90 33V673Q90 706 123 706H337Q428 706 484 658T541 526Q541 475 518 435T454 374V372Q508 356 539 309T570 201Q570 105 506 53T342 0H123Q90 0 90 33ZM188 409H337Q384 409 412 439T441 516T413 591T335 -620H188V409ZM188 86H347Q404 86 436 119T469 206T436 293T347 327H188V86Z" /> -<glyph unicode="C" glyph-name="C" horiz-adv-x="707" d="M46 357Q46 512 147 615T405 718Q541 718 639 645Q662 627 645 599L632 579Q615 553 586 571Q502 627 409 627Q289 627 219 550T148 358Q148 241 220 160T410 79Q513 79 602 148Q629 169 648 144L663 124Q682 -99 658 78Q550 -12 407 -12Q246 -12 146 93T46 357Z" /> -<glyph unicode="D" glyph-name="D" horiz-adv-x="729" d="M90 33V673Q90 706 123 706H324Q487 706 584 613T682 354Q682 188 585 94T324 0H123Q90 0 90 33ZM188 86H317Q438 86 509 156T580 354Q580 481 509 550T317 620H188V86Z" /> -<glyph unicode="E" glyph-name="E" horiz-adv-x="555" d="M90 33V673Q90 706 123 706H467Q500 706 500 673V653Q500 620 467 620H188V399H409Q442 399 442 366V346Q442 313 409 313H188V86H484Q517 86 517 53V33Q517 0 484 0H123Q90 0 90 33Z" /> -<glyph unicode="F" glyph-name="F" horiz-adv-x="505" d="M90 33V673Q90 706 123 706H446Q479 706 479 673V653Q479 620 446 620H188V388H402Q435 388 435 355V335Q435 302 402 302H188V33Q188 0 155 0H123Q90 0 90 33Z" /> -<glyph unicode="G" glyph-name="G" horiz-adv-x="751" d="M46 194T46 351T148 613T406 718Q484 718 544 697T638 652Q663 633 645 607L631 586Q615 561 585 577Q503 627 411 627Q292 627 220 549T148 355Q148 235 222 157T406 79Q442 79 476 88T533 111T573 137T599 -160L607 170V269H525Q492 269 492 302V322Q492 355 525 355H664Q697 355 697 322V33Q697 0 664 0H645Q612 0 612 28V54L613 76H611Q608 72 602 67T576 46T532 19T471 -2T393 -12Q248 -12 147 91Z" /> -<glyph unicode="H" glyph-name="H" horiz-adv-x="743" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V395H555V673Q555 706 588 706H621Q653 706 653 673V33Q653 0 621 0H588Q555 0 555 33V310H188V33Q188 0 155 0H123Q90 0 90 33Z" /> -<glyph unicode="I" glyph-name="I" horiz-adv-x="278" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V33Q188 0 155 0H123Q90 0 90 33Z" /> -<glyph unicode="J" glyph-name="J" horiz-adv-x="522" d="M22 205Q22 238 55 238H89Q105 238 112 231T121 204Q124 147 151 113T231 79Q279 79 310 109T342 204V620H197Q165 620 165 653V673Q165 706 197 706H407Q440 706 440 673V203Q440 96 379 42T232 -12Q145 --12 84 43T22 205Z" /> -<glyph unicode="K" glyph-name="K" horiz-adv-x="605" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V409H294L459 684Q471 706 498 706H535Q555 706 561 695T558 666L375 371V369L571 39Q581 22 575 11T549 0H508Q482 0 469 23L294 324H188V33Q188 0 155 -0H123Q90 0 90 33Z" /> -<glyph unicode="L" glyph-name="L" horiz-adv-x="510" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V86H472Q505 86 505 53V33Q505 0 472 0H123Q90 0 90 33Z" /> -<glyph unicode="M" glyph-name="M" horiz-adv-x="845" d="M68 34L120 675Q123 706 154 706H199Q227 706 236 680L389 324L424 229H426Q444 285 460 324L613 680Q622 706 650 706H695Q726 706 729 675L781 34Q783 0 749 0H717Q686 0 683 32L651 445L649 549H647Q625 -484 609 445L479 153Q469 127 441 127H408Q380 127 370 153L240 445L202 551H200Q202 488 198 445L166 32Q163 0 133 0H100Q66 0 68 34Z" /> -<glyph unicode="N" glyph-name="N" horiz-adv-x="744" d="M90 33V673Q90 706 123 706H161Q187 706 201 684L502 247Q513 230 527 205T551 162L560 145H562Q556 208 556 247V673Q556 706 589 706H621Q654 706 654 673V33Q654 0 621 0H583Q556 0 544 22L242 458L184 -561H182Q188 498 188 458V33Q188 0 155 0H123Q90 0 90 33Z" /> -<glyph unicode="O" glyph-name="O" horiz-adv-x="815" d="M45 358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="P" glyph-name="P" horiz-adv-x="596" d="M90 33V673Q90 706 123 706H348Q446 706 507 646T569 485T507 323T348 261H188V33Q188 0 155 0H123Q90 0 90 33ZM188 347H332Q396 347 432 384T469 485Q469 548 433 584T333 620H188V347Z" /> -<glyph unicode="Q" glyph-name="Q" horiz-adv-x="816" d="M46 357Q46 511 149 614T407 718Q565 718 668 615T771 357Q771 225 688 124L746 66Q770 45 749 20L736 6Q712 -18 691 4L631 64Q536 -12 407 -12Q251 -12 149 94T46 357ZM148 357Q148 239 222 159T407 -79Q498 79 561 131L502 190Q478 211 500 236L513 249Q535 275 557 253L617 192Q669 264 669 357Q669 473 594 550T407 627Q296 627 222 550T148 357Z" /> -<glyph unicode="R" glyph-name="R" horiz-adv-x="617" d="M90 33V673Q90 706 123 706H313Q403 706 445 687Q497 664 526 616T556 502Q556 434 522 381T430 308V306Q439 296 451 274L578 39Q588 22 582 11T556 0H516Q488 0 477 23L339 281H188V33Q188 0 155 0H123Q90 -0 90 33ZM188 367H330Q388 367 422 403T456 498Q456 580 390 608Q363 620 306 620H188V367Z" /> -<glyph unicode="S" glyph-name="S" horiz-adv-x="537" d="M77 61Q54 82 73 107L90 131Q108 154 135 137Q214 80 289 80Q345 80 379 107T413 181Q413 224 378 254T293 306T193 351T108 418T73 522Q73 610 138 664T302 718Q358 718 405 701T479 664Q503 647 489 -619L475 594Q460 567 430 585Q361 626 300 626Q244 626 209 599T173 527Q173 492 198 465T261 423T343 386T425 344T488 282T513 189Q513 103 453 46T289 -12Q221 -12 166 11T77 61Z" /> -<glyph unicode="T" glyph-name="T" horiz-adv-x="595" d="M249 33V620H39Q6 620 6 653V673Q6 706 39 706H557Q589 706 589 673V653Q589 620 557 620H347V33Q347 0 314 0H281Q249 0 249 33Z" /> -<glyph unicode="U" glyph-name="U" horiz-adv-x="717" d="M81 250V673Q81 706 114 706H147Q179 706 179 673V251Q179 171 227 125T358 79T488 125T537 252V673Q537 706 570 706H603Q636 706 636 673V250Q636 132 560 60T359 -12Q234 -12 158 60T81 250Z" /> -<glyph unicode="V" glyph-name="V" horiz-adv-x="623" d="M256 27L21 668Q15 685 22 695T48 706H86Q114 706 123 679L289 207L316 110H318Q333 169 345 207L513 679Q522 706 550 706H587Q606 706 613 696T614 668L379 27Q370 0 342 0H294Q266 0 256 27Z" /> -<glyph unicode="W" glyph-name="W" horiz-adv-x="945" d="M210 29L47 670Q39 706 76 706H111Q141 706 148 677L265 188L278 113H280Q286 149 297 188L428 678Q435 706 465 706H493Q523 706 529 678L660 188L676 113H678Q683 150 692 188L815 677Q822 706 852 706H886Q923 -706 915 670L746 28Q739 0 709 0H654Q626 0 618 28L502 458L480 558H477Q467 503 455 458L339 28Q331 0 302 0H247Q218 0 210 29Z" /> -<glyph unicode="X" glyph-name="X" horiz-adv-x="587" d="M41 39L239 364L55 667Q45 684 51 695T77 706H119Q143 706 158 684L255 515L300 431H302Q323 476 346 515L445 684Q457 706 483 706H525Q545 706 551 695T547 667L361 364L560 39Q571 22 565 11T538 0H499Q473 -0 460 23L345 217L300 298H298Q278 256 255 217L141 23Q128 0 102 0H64Q44 0 37 11T41 39Z" /> -<glyph unicode="Y" glyph-name="Y" horiz-adv-x="567" d="M241 33V299L27 667Q17 684 24 695T50 706H90Q117 706 128 683L247 474L290 385H292Q313 434 335 474L453 683Q465 706 491 706H531Q550 706 557 695T554 667L340 299V33Q340 0 307 0H274Q241 0 241 33Z" /> -<glyph unicode="Z" glyph-name="Z" horiz-adv-x="588" d="M32 33V43Q32 65 46 85L372 556Q384 574 396 590T416 614L423 621V623Q404 620 370 620H83Q50 620 50 653V673Q50 706 83 706H513Q546 706 546 674V664Q546 642 533 622L206 150Q194 133 181 117T162 94L155 -86V84Q174 86 208 86H517Q550 86 550 53V33Q550 0 517 0H65Q32 0 32 33Z" /> -<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="285" d="M80 -62V703Q80 735 113 735H213Q245 735 245 703V695Q245 662 214 662H165V-21H213Q245 -21 245 -54V-62Q245 -95 213 -95H113Q80 -95 80 -62Z" /> -<glyph unicode="\" glyph-name="backslash" horiz-adv-x="395" d="M277 -15L44 707Q39 724 46 734T72 744H89Q118 744 127 717L361 -5Q366 -22 359 -32T333 -42H315Q287 -42 277 -15Z" /> -<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="285" d="M40 -54Q40 -21 72 -21H120V662H72Q40 662 40 695V703Q40 735 72 735H172Q205 735 205 703V-62Q205 -95 172 -95H72Q40 -95 40 -62V-54Z" /> -<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="613" d="M118 247Q99 247 92 258T93 286L265 681Q275 706 303 706H312Q340 706 350 681L522 286Q530 269 523 258T496 247H479Q452 247 441 273L307 599L174 273Q163 247 136 247H118Z" /> -<glyph unicode="_" glyph-name="underscore" horiz-adv-x="550" d="M6 -33Q6 0 39 0H511Q544 0 544 -33V-45Q544 -78 511 -78H39Q6 -78 6 -45V-33Z" /> -<glyph unicode="`" glyph-name="grave" horiz-adv-x="499" d="M285 755Q261 755 245 775L196 842Q183 858 187 870T213 882H243Q269 882 282 859L321 791Q330 777 326 766T305 755H285Z" /> -<glyph unicode="a" glyph-name="a" horiz-adv-x="517" d="M29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 0 421 0H396Q363 -0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146Z" /> -<glyph unicode="b" glyph-name="b" horiz-adv-x="592" d="M71 33V673Q71 706 104 706H135Q167 706 167 673V468L164 425H166Q168 429 171 435T189 457T221 485T267 508T331 518Q431 518 491 445T552 254Q552 134 488 61T323 -12Q290 -12 261 -2T215 22T184 50T166 -74L161 84H159Q162 72 162 54V29Q162 0 129 0H104Q71 0 71 33ZM165 253Q165 178 202 125T307 72Q370 72 412 120T454 252Q454 334 415 383T311 433Q249 433 207 388T165 253Z" /> -<glyph unicode="c" glyph-name="c" horiz-adv-x="531" d="M37 253Q37 366 113 442T307 518Q405 518 474 464Q500 447 480 419L470 404Q454 379 425 396Q372 434 312 434Q236 434 186 383T136 254T186 124T314 72Q382 72 443 118Q471 136 488 109L496 94Q512 67 -487 50Q412 -12 307 -12Q188 -12 113 63T37 253Z" /> -<glyph unicode="d" glyph-name="d" horiz-adv-x="592" d="M39 253Q39 373 103 445T268 518Q300 518 328 509T374 487T403 462T420 440L425 431H427Q424 446 424 465V673Q424 706 457 706H488Q521 706 521 673V33Q521 0 488 0H462Q429 0 429 31V60L431 85H429Q427 -81 424 75T406 52T375 22T327 -1T262 -12Q160 -12 100 61T39 253ZM138 253Q138 171 177 122T281 72Q343 72 385 117T427 254Q427 327 390 380T283 433Q221 433 180 385T138 253Z" /> -<glyph unicode="e" glyph-name="e" horiz-adv-x="545" d="M38 253Q38 372 109 445T291 518Q394 518 451 452T509 277Q509 263 500 253T475 243H137Q141 163 191 118T312 72Q379 72 433 112Q463 128 478 101L487 86Q504 58 477 42Q400 -12 306 -12Q188 -12 113 -63T38 253ZM141 307H412Q410 372 376 407T289 442Q233 442 192 406T141 307Z" /> -<glyph unicode="f" glyph-name="f" horiz-adv-x="322" d="M92 33V422H60Q27 422 27 455V468Q27 501 60 501H92V525Q92 570 106 605T141 660T188 691T235 707T275 711H287Q320 711 320 678V659Q320 629 285 626Q267 625 254 622T224 609T198 577T189 521V501H276Q309 -501 309 468V455Q309 422 276 422H189V33Q189 0 156 0H125Q92 0 92 33Z" /> -<glyph unicode="g" glyph-name="g" horiz-adv-x="585" d="M106 -121Q119 -93 148 -104Q207 -126 258 -126Q328 -126 372 -92T417 16V60L420 92H418Q371 6 268 6Q164 6 102 79T40 266Q40 377 99 447T266 518Q301 518 330 509T376 488T404 464T420 442L424 433H426Q424 -439 424 449V478Q424 506 457 506H481Q514 506 514 473V21Q514 -95 441 -152T263 -210Q180 -210 116 -182Q86 -169 99 -138L106 -121ZM285 90Q344 90 381 131T419 263Q419 434 279 434Q212 434 176 390T139 270Q139 188 178 139T285 90Z" /> -<glyph unicode="h" glyph-name="h" horiz-adv-x="592" d="M71 33V673Q71 706 104 706H135Q167 706 167 673V444L164 402H166Q186 446 236 482T355 518Q529 518 529 324V33Q529 0 496 0H465Q432 0 432 33V302Q432 363 412 396T336 429Q263 429 215 376T167 240V33Q167 -0 135 0H104Q71 0 71 33Z" /> -<glyph unicode="i" glyph-name="i" horiz-adv-x="237" d="M102 607Q69 607 69 640V673Q69 706 102 706H136Q169 706 169 673V640Q169 607 136 607H102ZM70 33V473Q70 506 103 506H134Q167 506 167 473V33Q167 0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="j" glyph-name="j" horiz-adv-x="238" d="M102 607Q69 607 69 640V673Q69 706 102 706H136Q169 706 169 673V640Q169 607 136 607H102ZM71 -11V473Q71 506 104 506H135Q167 506 167 473V-15Q167 -62 153 -98T118 -154T70 -186T23 -202T-15 -206H-27Q-60 --206 -60 -173V-155Q-60 -126 -27 -122Q-9 -121 5 -117T36 -102T62 -68T71 -11Z" /> -<glyph unicode="k" glyph-name="k" horiz-adv-x="509" d="M71 33V673Q71 706 104 706H135Q167 706 167 673V321H240L363 485Q376 506 402 506H439Q459 506 465 494T459 466L319 283V281L481 40Q492 23 486 12T459 0H419Q393 0 380 23L242 237H167V33Q167 0 135 -0H104Q71 0 71 33Z" /> -<glyph unicode="l" glyph-name="l" horiz-adv-x="262" d="M70 138V673Q70 706 103 706H134Q167 706 167 673V150Q167 87 213 83Q239 80 239 54V30Q239 -4 205 -4Q70 -4 70 138Z" /> -<glyph unicode="m" glyph-name="m" horiz-adv-x="902" d="M70 33V473Q70 506 103 506H131Q164 506 164 473V428L161 399H163Q183 446 232 482T339 518Q464 518 491 403H493Q515 450 564 484T672 518Q758 518 798 470T839 324V33Q839 0 806 0H775Q742 0 742 33V303Q742 -364 724 397T653 430Q586 430 545 372T503 236V33Q503 0 471 0H439Q407 0 407 33V303Q407 363 390 396T319 430Q251 430 209 371T167 236V33Q167 0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="n" glyph-name="n" horiz-adv-x="591" d="M70 33V473Q70 506 103 506H131Q164 506 164 473V428L161 399H163Q183 443 232 480T355 518Q528 518 528 324V33Q528 0 495 0H464Q431 0 431 33V302Q431 363 412 396T336 429Q263 429 215 375T167 242V33Q167 -0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="o" glyph-name="o" horiz-adv-x="619" d="M37 140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 -12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383Z" /> -<glyph unicode="p" glyph-name="p" horiz-adv-x="592" d="M71 -167V473Q71 506 104 506H127Q160 506 160 478V448L158 421H160Q162 425 165 431T183 454T215 484T263 507T330 518Q431 518 491 445T552 253T488 61T323 -12Q291 -12 263 -3T218 20T189 46T171 68L166 -78H164Q167 60 167 34V-167Q167 -200 135 -200H104Q71 -200 71 -167ZM165 251Q165 179 203 126T308 72Q370 72 412 120T454 252Q454 334 415 383T311 433Q249 433 207 388T165 251Z" /> -<glyph unicode="q" glyph-name="q" horiz-adv-x="592" d="M39 253Q39 373 103 445T269 518Q303 518 332 509T378 485T408 457T426 434L431 424H433Q431 436 431 452V478Q431 506 464 506H488Q521 506 521 473V-167Q521 -200 488 -200H457Q424 -200 424 -167V38L427 -82H425Q423 78 420 72T403 50T372 21T325 -2T260 -12Q161 -12 100 61T39 253ZM138 253Q138 171 177 122T281 72Q343 72 385 117T427 254Q427 327 390 380T283 433Q221 433 180 385T138 253Z" /> -<glyph unicode="r" glyph-name="r" horiz-adv-x="356" d="M70 33V473Q70 506 103 506H131Q164 506 164 473V415L161 377H163Q181 432 222 471T318 510Q350 510 350 477V449Q350 416 314 416Q244 416 206 354T167 209V33Q167 0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="s" glyph-name="s" horiz-adv-x="439" d="M68 43Q43 59 61 88L71 102Q88 125 117 109Q180 68 241 68Q279 68 303 85T327 135Q327 162 300 180T235 212T158 242T93 292T66 372Q66 441 118 479T249 518T389 479Q417 465 400 435L391 420Q377 395 -347 409Q296 438 244 438Q206 438 183 422T159 374Q159 347 186 328T251 296T328 267T393 218T420 137Q420 72 370 30T238 -12Q141 -12 68 43Z" /> -<glyph unicode="t" glyph-name="t" horiz-adv-x="342" d="M94 182V422H59Q27 422 27 455V468Q27 501 60 501H96V612Q96 645 129 645H158Q191 645 191 612V501H279Q312 501 312 468V455Q312 422 280 422H191V197Q191 91 287 83Q307 81 314 74T322 50V29Q322 -4 -282 -4Q201 -4 148 43T94 182Z" /> -<glyph unicode="u" glyph-name="u" horiz-adv-x="587" d="M64 182V473Q64 506 97 506H128Q160 506 160 473V204Q160 144 180 111T255 78Q330 78 375 134T420 269V473Q420 506 453 506H484Q517 506 517 473V33Q517 0 484 0H456Q423 0 423 33V78L426 107H424Q404 -62 354 25T236 -12Q150 -12 107 35T64 182Z" /> -<glyph unicode="v" glyph-name="v" horiz-adv-x="499" d="M191 26L25 468Q19 485 26 495T51 506H85Q113 506 122 479L236 164L254 95H256Q265 136 274 164L388 479Q397 506 425 506H459Q477 506 484 496T485 468L321 26Q312 0 284 0H228Q200 0 191 26Z" /> -<glyph unicode="w" glyph-name="w" horiz-adv-x="803" d="M171 28L28 469Q23 486 30 496T56 506H89Q119 506 126 478L225 151L237 97H239Q245 125 253 151L355 477Q361 505 391 505H422Q452 505 459 477L561 151L574 97H576Q581 125 589 151L688 478Q694 506 724 -506H757Q775 506 782 496T785 469L642 28Q635 0 605 0H556Q526 0 519 28L422 325L408 380H406Q400 351 391 325L295 28Q288 0 258 0H208Q178 0 171 28Z" /> -<glyph unicode="x" glyph-name="x" horiz-adv-x="483" d="M41 40L188 260L50 466Q39 483 45 494T72 506H110Q136 506 148 483L230 352L246 322H248Q258 339 265 352L346 483Q359 506 385 506H422Q442 506 448 495T444 466L307 260L454 40Q465 23 459 12T432 0H396Q370 -0 357 23L264 169L248 197H246Q239 181 231 169L138 23Q125 0 99 0H63Q43 0 37 11T41 40Z" /> -<glyph unicode="y" glyph-name="y" horiz-adv-x="502" d="M35 -134Q46 -110 72 -117Q100 -128 112 -128Q141 -128 163 -107T199 -52L224 6L28 468Q21 485 28 495T53 506H92Q120 506 129 480L248 175L266 114H268Q276 148 285 174L400 479Q409 506 437 506H473Q491 -506 498 496T499 468L276 -89Q254 -147 210 -178T112 -210Q81 -210 42 -194Q13 -182 27 -151L35 -134Z" /> -<glyph unicode="z" glyph-name="z" horiz-adv-x="500" d="M31 28V36Q31 56 45 74L286 376L328 423V425Q312 423 279 423H75Q42 423 42 456V473Q42 506 75 506H426Q459 506 459 478V470Q459 450 445 432L204 129L161 83V81Q177 83 210 83H434Q467 83 467 51V33Q467 -0 434 0H64Q31 0 31 28Z" /> -<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="325" d="M112 77V173Q112 249 54 274Q27 288 27 311V340Q27 362 54 376Q112 404 112 479V562Q112 615 128 653T170 707T215 730T254 737H265Q298 737 298 704V692Q298 659 265 659Q197 659 197 554V454Q197 -426 189 403T168 367T145 344T124 330L116 327V325Q119 324 124 322T144 310T168 287T188 251T197 198V85Q197 51 204 29T224 -3T245 -16T265 -20Q298 -20 298 -53V-65Q298 -98 265 -98H254Q236 -98 216 -92T170 -69T129 -14T112 77Z" /> -<glyph unicode="|" glyph-name="bar" horiz-adv-x="243" d="M79 -126V759Q79 792 112 792H131Q164 792 164 759V-126Q164 -159 131 -159H112Q79 -159 79 -126Z" /> -<glyph unicode="}" glyph-name="braceright" horiz-adv-x="326" d="M27 -53Q27 -20 60 -20Q70 -20 79 -17T101 -4T120 28T128 85V198Q128 227 136 250T156 287T180 310T200 322L209 325V327Q206 328 201 330T181 343T157 366T137 402T128 454V554Q128 659 60 659Q27 -659 27 692V704Q27 737 60 737H71Q85 737 100 734T137 719T174 690T201 638T213 562V479Q213 404 271 376Q298 362 298 340V311Q298 288 271 274Q213 249 213 173V77Q213 34 202 1T174 -50T137 -80T101 -94T71 -98H60Q27 -98 27 -65V-53Z" /> -<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="589" d="M96 204Q59 204 65 247Q82 373 202 373Q237 373 265 358T309 324T346 291T394 275Q442 275 456 338Q467 369 491 369H506Q522 369 530 360T537 334Q524 200 400 200Q365 200 337 215T293 248T256 -282T208 297Q159 297 146 234Q135 204 111 204H96Z" /> -<glyph unicode=" " glyph-name="uni00A0" horiz-adv-x="250" /> -<glyph unicode="¡" glyph-name="exclamdown" horiz-adv-x="253" d="M138 312Q171 312 171 279L176 -167Q176 -200 144 -200H110Q77 -200 77 -167L82 279Q84 312 116 312H138ZM176 473V441Q176 408 143 408H109Q76 408 76 441V473Q76 506 109 506H143Q176 -506 176 473Z" /> -<glyph unicode="¢" glyph-name="cent" horiz-adv-x="559" d="M258 20V73Q162 86 105 164T48 353Q48 464 105 542T258 634V685Q258 718 290 718H298Q329 718 329 690V634Q385 627 431 593T503 510Q518 481 486 467L458 456Q432 447 415 472Q371 544 298 544Q226 -544 187 491T147 352Q147 267 186 215T298 163T415 235Q433 260 458 251L486 240Q518 226 503 197Q478 149 432 114T329 73V20Q329 -13 298 -13H290Q258 -13 258 20Z" /> -<glyph unicode="£" glyph-name="sterling" horiz-adv-x="578" d="M53 33V53Q53 86 86 86H116V319H95Q65 319 65 351V357Q65 389 95 389H116V525Q116 608 177 663T333 718Q407 718 474 675Q501 655 478 629L463 609Q445 587 417 604Q376 628 334 628Q280 628 -248 598T216 521V389H367Q400 389 400 357V351Q400 319 367 319H216V86H508Q541 86 541 53V33Q541 0 508 0H86Q53 0 53 33Z" /> -<glyph unicode="¥" glyph-name="yen" horiz-adv-x="590" d="M121 199Q88 199 88 228V234Q88 262 121 262H251V299L224 347H121Q88 347 88 376V382Q88 410 117 410H191L46 667Q37 684 43 695T70 706H111Q139 706 149 681L257 486L300 384H302Q323 439 345 -486L453 681Q463 706 491 706H532Q552 706 558 695T556 667L411 410H480Q513 410 513 382V376Q513 347 480 347H377L351 299V262H480Q513 262 513 234V228Q513 199 480 199H351V33Q351 0 318 0H284Q251 0 251 33V199H121Z" /> -<glyph unicode="§" glyph-name="section" horiz-adv-x="439" d="M151 140L86 501Q81 526 81 547Q81 622 132 670T270 718Q333 718 384 686Q411 669 392 640L383 628Q366 607 338 620Q302 637 270 637Q223 637 193 611T163 536Q163 518 169 496L228 147Q232 -130 224 121T199 111H187Q157 111 151 140ZM84 16L92 29Q108 53 137 38Q169 19 207 19Q253 19 283 46T313 124Q313 144 307 169L249 509Q245 526 253 535T278 545H290Q320 545 326 516L390 155Q395 128 395 110Q395 34 344 -14T206 -62Q145 -62 92 -29Q64 -12 84 -16Z" /> -<glyph unicode="¨" glyph-name="dieresis" horiz-adv-x="499" d="M326 781Q293 781 293 814V849Q293 882 326 882H340Q373 882 373 849V814Q373 781 340 781H326ZM159 781Q126 781 126 814V849Q126 882 159 882H173Q206 882 206 849V814Q206 781 173 781H159Z" /> -<glyph unicode="©" glyph-name="copyright" horiz-adv-x="816" d="M51 201T51 353T154 611T406 718Q555 718 660 612T765 353T660 95T406 -12Q258 -12 155 94ZM124 478T124 353T205 142T406 56Q527 56 609 142T692 353T610 564T406 650Q287 650 206 564ZM217 -352Q217 434 271 493T415 552Q464 552 501 530T559 482Q575 460 556 445L543 434Q524 417 503 441Q466 483 417 483Q359 483 326 445T292 351Q292 296 325 259T417 221Q471 221 507 265Q525 286 543 269L555 260Q575 243 559 221Q501 152 415 152Q325 152 271 210T217 -352Z" /> -<glyph unicode="ª" glyph-name="ordfeminine" horiz-adv-x="400" d="M172 382Q128 382 95 408T62 480Q62 589 251 589H261V595Q261 658 198 658Q168 658 138 643Q112 632 101 652L98 658Q84 682 114 695Q156 716 206 716Q268 716 300 684T333 590V422Q333 -389 303 389H299Q268 389 268 420V441H266Q263 434 257 425T226 399T172 382ZM186 441Q219 441 240 468T261 530V538H249Q135 538 135 484Q135 466 148 454T186 441ZM95 265Q62 265 62 292V296Q62 322 95 322H304Q337 322 337 296V292Q337 265 304 265H95Z" /> -<glyph unicode="«" glyph-name="guillemotleft" horiz-adv-x="523" d="M271 259Q253 282 271 305L401 469Q417 488 441 488H462Q483 488 488 476T481 448L350 282L481 117Q495 100 490 89T465 77H441Q417 77 401 96L271 259ZM199 96L70 259Q50 282 70 305L199 -469Q215 488 240 488H260Q281 488 286 476T279 448L148 282L279 117Q292 100 288 89T264 77H240Q215 77 199 96Z" /> -<glyph unicode="¬" glyph-name="logicalnot" horiz-adv-x="617" d="M99 340Q66 340 66 373V385Q66 418 99 418H510Q543 418 543 385V184Q543 151 510 151H495Q462 151 462 184V340H99Z" /> -<glyph unicode="­" glyph-name="uni00AD" horiz-adv-x="420" d="M97 242Q64 242 64 275V295Q64 328 97 328H323Q356 328 356 295V275Q356 242 323 242H97Z" /> -<glyph unicode="®" glyph-name="registered" horiz-adv-x="816" d="M51 201T51 353T155 611T406 718Q556 718 660 612T765 353T661 95T406 -12Q259 -12 155 94ZM124 478T124 353T205 142T406 56Q527 56 609 142T692 353T610 564T406 650Q287 650 206 564ZM284 -198V510Q284 543 317 543H430Q483 543 515 512T548 428Q548 388 527 362T479 328V326Q483 322 492 305L544 204Q553 187 548 177T526 166H514Q486 166 475 190L417 312H355V198Q355 166 324 166H315Q284 166 284 198ZM355 364H415Q444 364 460 381T476 428Q476 -457 460 473T416 489H355V364Z" /> -<glyph unicode="¯" glyph-name="overscore" horiz-adv-x="499" d="M155 784Q122 784 122 816V823Q122 855 155 855H344Q377 855 377 823V816Q377 784 344 784H155Z" /> -<glyph unicode="°" glyph-name="degree" horiz-adv-x="382" d="M191 422Q127 422 83 465T39 570Q39 631 83 674T191 718Q253 718 298 675T343 570T298 466T191 422ZM160 496T191 496T243 517T265 570T244 623T191 645T139 623T117 570T138 518Z" /> -<glyph unicode="±" glyph-name="plusminus" horiz-adv-x="613" d="M75 246Q42 246 42 279V291Q42 324 75 324H266V537Q266 570 299 570H315Q348 570 348 537V324H538Q571 324 571 291V279Q571 246 538 246H348V33Q348 0 315 0H299Q266 0 266 33V246H75ZM91 --95H522Q555 -95 555 -128V-140Q555 -173 522 -173H91Q58 -173 58 -140V-128Q58 -95 91 -95Z" /> -<glyph unicode="²" glyph-name="twosuperior" horiz-adv-x="357" d="M62 423Q29 423 29 459Q29 506 51 542T104 601T166 643T219 686T241 736Q241 764 221 782T169 801T107 775Q81 756 62 774L58 777Q33 800 56 822Q109 870 173 870Q235 870 276 834T317 -739Q317 699 297 667T246 615T186 576T135 537T111 489H291Q324 489 324 458V454Q324 423 291 423H62Z" /> -<glyph unicode="³" glyph-name="threesuperior" horiz-adv-x="357" d="M184 413Q109 413 59 458Q35 475 54 501L58 506Q74 527 102 512Q137 482 181 482Q214 482 238 504T263 558T238 609T178 629H165Q140 629 133 648T142 688L213 770L238 794V796Q219 793 -202 793H93Q60 793 60 825V829Q60 860 93 860H299Q332 860 332 836V831Q332 813 316 794L223 686Q272 678 305 646T339 558Q339 499 295 456T184 413Z" /> -<glyph unicode="´" glyph-name="acute" horiz-adv-x="499" d="M207 755Q190 755 184 766T187 792L227 859Q240 882 266 882H295Q316 882 321 870T313 842L264 775Q248 755 224 755H207Z" /> -<glyph unicode="µ" glyph-name="mu" horiz-adv-x="630" d="M85 -167V473Q85 506 118 506H149Q181 506 181 473V204Q181 144 200 111T275 78Q351 78 396 134T441 269V473Q441 506 474 506H505Q538 506 538 473V33Q538 0 505 0H477Q444 0 444 33V75L446 104H444Q437 -90 426 75T392 38T334 2T256 -12Q227 -12 205 -4T174 12L166 19H164Q171 -30 171 -59V-167Q171 -200 138 -200H118Q85 -200 85 -167Z" /> -<glyph unicode="¶" glyph-name="paragraph" horiz-adv-x="591" d="M273 -17V241Q176 241 106 308T36 474Q36 571 105 638T273 706H511Q544 706 544 673V653Q544 620 511 620H348V-17Q348 -50 315 -50H306Q273 -50 273 -17ZM410 -17V530Q410 563 443 563H452Q485 -563 485 530V-17Q485 -50 452 -50H443Q410 -50 410 -17Z" /> -<glyph unicode="·" glyph-name="middot" horiz-adv-x="231" d="M97 237Q65 237 65 270V310Q65 343 97 343H133Q166 343 166 310V270Q166 237 133 237H97Z" /> -<glyph unicode="¸" glyph-name="cedilla" horiz-adv-x="499" d="M198 -59L217 19H270L256 -50Q288 -54 308 -73T328 -123Q328 -166 299 -186T226 -207Q174 -207 174 -178Q174 -148 192 -148Q196 -148 204 -149T218 -151Q261 -151 261 -119Q261 -92 214 -87Q190 --85 198 -59Z" /> -<glyph unicode="¹" glyph-name="onesuperior" horiz-adv-x="303" d="M68 423Q35 423 35 454V458Q35 489 64 489H128V738L130 764H128Q125 757 111 744L90 723Q73 710 58 725L50 734Q30 756 53 779L118 843Q135 860 159 860H170Q203 860 203 827V489H262Q295 -489 295 458V454Q295 423 262 423H68Z" /> -<glyph unicode="º" glyph-name="ordmasculine" d="M298 384T226 384T105 431T55 552Q55 623 105 670T226 717Q298 717 347 670T397 552Q397 479 348 432ZM185 449T226 449T295 478T324 552Q324 596 296 624T226 653T157 625T128 552Q128 507 156 478ZM104 -265Q71 265 71 292V296Q71 322 104 322H350Q383 322 383 296V292Q383 265 350 265H104Z" /> -<glyph unicode="»" glyph-name="guillemotright" horiz-adv-x="523" d="M268 117L399 282L268 448Q254 464 259 476T284 488H308Q332 488 348 469L478 305Q496 282 478 259L348 96Q332 77 308 77H287Q266 77 261 88T268 117ZM85 77Q64 77 59 88T66 117L197 -282L66 448Q53 464 57 476T82 488H106Q130 488 146 469L276 305Q296 282 276 259L146 96Q130 77 106 77H85Z" /> -<glyph unicode="¼" glyph-name="onequarter" horiz-adv-x="941" d="M806 0Q773 0 773 33V107H599Q566 107 566 132V141Q566 159 578 175L752 416Q766 437 792 437H814Q847 437 847 404V173H882Q911 173 911 142V138Q911 107 882 107H847V33Q847 0 814 0H806ZM647 -173H773V296L777 354H775Q761 327 745 306L647 175V173ZM344 25Q332 0 305 0H293Q277 0 272 11T275 39L581 682Q592 706 620 706H631Q648 706 652 696T649 667L344 25ZM87 270Q54 270 54 301V305Q54 336 83 336H147V585L149 611H147Q144 604 130 591L109 570Q92 -557 77 572L69 581Q49 603 72 626L137 690Q154 707 178 707H189Q222 707 222 674V336H281Q314 336 314 305V301Q314 270 281 270H87Z" /> -<glyph unicode="½" glyph-name="onehalf" horiz-adv-x="926" d="M626 0Q593 0 593 36Q593 83 615 119T668 178T730 220T783 263T805 313Q805 341 785 359T733 378T671 352Q645 333 626 351L622 354Q597 377 620 399Q673 447 737 447Q799 447 840 411T881 -316Q881 276 861 244T810 192T750 153T699 114T675 66H855Q888 66 888 35V31Q888 0 855 0H626ZM343 25Q331 0 304 0H292Q276 0 271 11T274 39L580 682Q591 706 619 706H630Q647 706 651 696T648 667L343 25ZM85 270Q52 270 52 301V305Q52 336 81 336H145V585L147 -611H145Q142 604 128 591L107 570Q90 557 75 572L67 581Q47 603 70 626L135 690Q152 707 176 707H187Q220 707 220 674V336H279Q312 336 312 305V301Q312 270 279 270H85Z" /> -<glyph unicode="¾" glyph-name="threequarters" horiz-adv-x="956" d="M836 0Q803 0 803 33V107H629Q596 107 596 132V141Q596 159 608 175L782 416Q796 437 822 437H844Q877 437 877 404V173H912Q941 173 941 142V138Q941 107 912 107H877V33Q877 0 844 -0H836ZM677 173H803V296L807 354H805Q791 327 775 306L677 175V173ZM200 260Q125 260 75 305Q51 322 70 348L74 353Q90 374 118 359Q153 329 197 329Q230 329 254 351T279 405T254 456T194 476H181Q156 476 149 495T158 535L229 617L254 641V643Q235 640 218 640H109Q76 -640 76 672V676Q76 707 109 707H315Q348 707 348 683V678Q348 660 332 641L239 533Q288 525 321 493T355 405Q355 346 311 303T200 260ZM373 25Q361 0 334 0H322Q306 0 301 11T304 39L610 682Q621 706 649 706H660Q677 706 681 696T678 667L373 25Z" /> -<glyph unicode="¿" glyph-name="questiondown" horiz-adv-x="460" d="M297 312Q330 312 330 279V259Q330 220 313 188T270 132T220 87T178 36T160 -24Q160 -66 192 -94T275 -123Q319 -123 362 -98Q393 -82 409 -107L422 -125Q441 -153 416 -170Q348 -214 -268 -214Q180 -214 120 -163T59 -31Q59 13 76 49T119 110T169 156T214 206T235 266L236 287Q240 312 268 312H297ZM333 473V441Q333 408 300 408H265Q232 408 232 441V473Q232 506 265 506H300Q333 506 333 473Z" /> -<glyph unicode="À" glyph-name="Agrave" horiz-adv-x="621" d="M302 755Q278 755 262 775L213 842Q200 858 204 870T230 882H260Q286 882 299 859L338 791Q347 777 343 766T322 755H302ZM24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 -609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 545 288 509L209 285Z" /> -<glyph unicode="Á" glyph-name="Aacute" horiz-adv-x="621" d="M313 755Q296 755 290 766T293 792L333 859Q346 882 372 882H401Q422 882 427 870T419 842L370 775Q354 755 330 755H313ZM24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 -609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 545 288 509L209 285Z" /> -<glyph unicode="Â" glyph-name="Acircumflex" horiz-adv-x="621" d="M221 755Q203 755 199 766T205 795L251 860Q266 882 292 882H341Q367 882 381 860L428 795Q439 778 435 767T413 755H391Q370 755 356 777L317 835H315L276 777Q264 755 241 755H221ZM24 -38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 545 288 509L209 285Z" /> -<glyph unicode="Ã" glyph-name="Atilde" horiz-adv-x="621" d="M180 756Q151 756 151 788Q151 829 177 856T245 883Q276 883 300 866T342 832T378 815Q395 815 404 828T415 860Q417 880 445 880H453Q482 880 482 852Q482 807 457 780T388 753Q357 753 333 -770T291 804T255 821Q219 821 217 776Q214 756 188 756H180ZM24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 545 -288 509L209 285Z" /> -<glyph unicode="Ä" glyph-name="Adieresis" horiz-adv-x="621" d="M24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 -545 288 509L209 285ZM393 781Q360 781 360 814V849Q360 882 393 882H407Q440 882 440 849V814Q440 781 407 781H393ZM226 781Q193 781 193 814V849Q193 882 226 882H240Q273 882 273 849V814Q273 781 240 781H226Z" /> -<glyph unicode="Å" glyph-name="Aring" horiz-adv-x="621" d="M24 38L256 679Q265 706 293 706H341Q369 706 378 679L610 38Q616 21 609 11T583 0H549Q521 0 512 27L449 203H183L121 27Q114 0 85 0H51Q32 0 25 10T24 38ZM209 285H423L345 509L318 609H316Q300 -545 288 509L209 285ZM352 743T317 743T257 763T232 817Q232 851 257 871T317 892T377 872T402 817Q402 784 377 764ZM317 784Q331 784 340 793T350 817Q350 833 341 842T317 852Q302 852 293 843T284 817Q284 803 293 794T317 784Z" /> -<glyph unicode="Æ" glyph-name="AE" horiz-adv-x="859" d="M20 38L285 681Q295 706 323 706H779Q812 706 812 673V653Q812 620 779 620H500V399H721Q754 399 754 366V346Q754 313 721 313H500V86H796Q829 86 829 53V33Q829 0 796 0H435Q402 0 402 33V314H232L117 -26Q107 0 79 0H45Q27 0 20 11T20 38ZM265 396H402V620H355L265 396Z" /> -<glyph unicode="Ç" glyph-name="Ccedilla" horiz-adv-x="709" d="M356 -59L368 -10Q223 3 135 106T47 357Q47 512 148 615T406 718Q542 718 640 645Q663 627 646 599L633 579Q616 553 587 571Q503 627 410 627Q290 627 220 550T149 358Q149 241 221 160T411 -79Q514 79 603 148Q630 169 649 144L664 124Q683 99 659 78Q556 -8 422 -12L414 -50Q446 -54 466 -73T486 -123Q486 -166 457 -186T384 -207Q332 -207 332 -178Q332 -148 350 -148Q354 -148 362 -149T376 -151Q419 -151 419 -119Q419 -92 372 -87Q348 -85 356 -59Z" -/> -<glyph unicode="È" glyph-name="Egrave" horiz-adv-x="555" d="M90 33V673Q90 706 123 706H467Q500 706 500 673V653Q500 620 467 620H188V399H409Q442 399 442 366V346Q442 313 409 313H188V86H484Q517 86 517 53V33Q517 0 484 0H123Q90 0 90 33ZM291 755Q267 -755 251 775L202 842Q189 858 193 870T219 882H249Q275 882 288 859L327 791Q336 777 332 766T311 755H291Z" /> -<glyph unicode="É" glyph-name="Eacute" horiz-adv-x="555" d="M302 755Q285 755 279 766T282 792L322 859Q335 882 361 882H390Q411 882 416 870T408 842L359 775Q343 755 319 755H302ZM90 33V673Q90 706 123 706H467Q500 706 500 673V653Q500 620 467 620H188V399H409Q442 -399 442 366V346Q442 313 409 313H188V86H484Q517 86 517 53V33Q517 0 484 0H123Q90 0 90 33Z" /> -<glyph unicode="Ê" glyph-name="Ecircumflex" horiz-adv-x="555" d="M210 755Q192 755 188 766T194 795L240 860Q255 882 281 882H330Q356 882 370 860L417 795Q428 778 424 767T402 755H380Q359 755 345 777L306 835H304L265 777Q253 755 230 755H210ZM90 -33V673Q90 706 123 706H467Q500 706 500 673V653Q500 620 467 620H188V399H409Q442 399 442 366V346Q442 313 409 313H188V86H484Q517 86 517 53V33Q517 0 484 0H123Q90 0 90 33Z" /> -<glyph unicode="Ë" glyph-name="Edieresis" horiz-adv-x="555" d="M382 781Q349 781 349 814V849Q349 882 382 882H396Q429 882 429 849V814Q429 781 396 781H382ZM215 781Q182 781 182 814V849Q182 882 215 882H229Q262 882 262 849V814Q262 781 229 781H215ZM90 -33V673Q90 706 123 706H467Q500 706 500 673V653Q500 620 467 620H188V399H409Q442 399 442 366V346Q442 313 409 313H188V86H484Q517 86 517 53V33Q517 0 484 0H123Q90 0 90 33Z" /> -<glyph unicode="Ì" glyph-name="Igrave" horiz-adv-x="278" d="M94 33V673Q94 706 127 706H159Q192 706 192 673V33Q192 0 159 0H127Q94 0 94 33ZM130 755Q106 755 90 775L41 842Q28 858 32 870T58 882H88Q114 882 127 859L166 791Q175 777 171 766T150 755H130Z" /> -<glyph unicode="Í" glyph-name="Iacute" horiz-adv-x="278" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V33Q188 0 155 0H123Q90 0 90 33ZM137 755Q120 755 114 766T117 792L157 859Q170 882 196 882H225Q246 882 251 870T243 842L194 775Q178 755 -154 755H137Z" /> -<glyph unicode="Î" glyph-name="Icircumflex" horiz-adv-x="278" d="M94 33V673Q94 706 127 706H159Q192 706 192 673V33Q192 0 159 0H127Q94 0 94 33ZM49 755Q31 755 27 766T33 795L79 860Q94 882 120 882H169Q195 882 209 860L256 795Q267 778 263 767T241 -755H219Q198 755 184 777L145 835H143L104 777Q92 755 69 755H49Z" /> -<glyph unicode="Ï" glyph-name="Idieresis" horiz-adv-x="278" d="M90 33V673Q90 706 123 706H155Q188 706 188 673V33Q188 0 155 0H123Q90 0 90 33ZM217 781Q184 781 184 814V849Q184 882 217 882H231Q264 882 264 849V814Q264 781 231 781H217ZM50 781Q17 -781 17 814V849Q17 882 50 882H64Q97 882 97 849V814Q97 781 64 781H50Z" /> -<glyph unicode="Ð" glyph-name="Eth" horiz-adv-x="730" d="M91 33V312H65Q32 312 32 345V361Q32 394 54 394H91V673Q91 706 124 706H325Q488 706 585 613T682 354Q682 188 585 94T325 0H124Q91 0 91 33ZM189 86H318Q439 86 509 156T580 354Q580 481 510 -550T318 620H189V394H306Q339 394 339 361V345Q339 312 307 312H189V86Z" /> -<glyph unicode="Ñ" glyph-name="Ntilde" horiz-adv-x="744" d="M90 33V673Q90 706 123 706H161Q187 706 201 684L502 247Q513 230 527 205T551 162L560 145H562Q556 208 556 247V673Q556 706 589 706H621Q654 706 654 673V33Q654 0 621 0H583Q556 0 544 22L242 -458L184 561H182Q188 498 188 458V33Q188 0 155 0H123Q90 0 90 33ZM236 756Q207 756 207 788Q207 829 233 856T301 883Q332 883 356 866T398 832T434 815Q451 815 460 828T471 860Q473 880 501 880H509Q538 880 538 852Q538 807 513 780T444 753Q413 753 389 770T347 -804T311 821Q275 821 273 776Q270 756 244 756H236Z" /> -<glyph unicode="Ò" glyph-name="Ograve" horiz-adv-x="815" d="M393 755Q369 755 353 775L304 842Q291 858 295 870T321 882H351Q377 882 390 859L429 791Q438 777 434 766T413 755H393ZM45 358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 -667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="Ó" glyph-name="Oacute" horiz-adv-x="815" d="M404 755Q387 755 381 766T384 792L424 859Q437 882 463 882H492Q513 882 518 870T510 842L461 775Q445 755 421 755H404ZM45 358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 -667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="Ô" glyph-name="Ocircumflex" horiz-adv-x="815" d="M312 755Q294 755 290 766T296 795L342 860Q357 882 383 882H432Q458 882 472 860L519 795Q530 778 526 767T504 755H482Q461 755 447 777L408 835H406L367 777Q355 755 332 755H312ZM45 -358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="Õ" glyph-name="Otilde" horiz-adv-x="815" d="M271 756Q242 756 242 788Q242 829 268 856T336 883Q367 883 391 866T433 832T469 815Q486 815 495 828T506 860Q508 880 536 880H544Q573 880 573 852Q573 807 548 780T479 753Q448 753 424 -770T382 804T346 821Q310 821 308 776Q305 756 279 756H271ZM45 358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="Ö" glyph-name="Odieresis" horiz-adv-x="815" d="M484 781Q451 781 451 814V849Q451 882 484 882H498Q531 882 531 849V814Q531 781 498 781H484ZM317 781Q284 781 284 814V849Q284 882 317 882H331Q364 882 364 849V814Q364 781 331 781H317ZM45 -358Q45 511 148 614T408 718Q564 718 667 615T770 358Q770 201 667 95T408 -12T149 94T45 358ZM147 358Q147 239 221 159T408 79T594 159T668 358Q668 473 594 550T408 627T222 550T147 358Z" /> -<glyph unicode="×" glyph-name="multiply" horiz-adv-x="613" d="M91 33Q68 54 90 79L274 285L90 491Q68 516 91 537L100 546Q124 570 146 545L328 343L510 545Q532 570 557 546L565 537Q588 516 566 491L381 285L566 79Q588 54 565 33L557 24Q532 0 510 -25L328 227L146 25Q124 0 100 24L91 33Z" /> -<glyph unicode="Ø" glyph-name="Oslash" horiz-adv-x="814" d="M135 31L168 77Q110 129 78 201T45 357Q45 510 150 614T408 718Q509 718 593 668L619 706Q639 732 664 715Q687 697 674 678L643 635Q703 584 736 513T770 357Q770 202 666 95T408 -12Q302 -12 -217 42L188 1Q168 -25 144 -8Q119 9 135 31ZM226 158L537 591Q479 627 408 627Q299 627 223 550T147 357Q147 239 226 158ZM272 119Q332 79 407 79Q516 79 592 159T668 357Q668 479 585 555L272 119Z" /> -<glyph unicode="Ù" glyph-name="Ugrave" horiz-adv-x="717" d="M81 250V673Q81 706 114 706H147Q179 706 179 673V251Q179 171 227 125T358 79T488 125T537 252V673Q537 706 570 706H603Q636 706 636 673V250Q636 132 560 60T359 -12Q234 -12 158 60T81 250ZM344 -755Q320 755 304 775L255 842Q242 858 246 870T272 882H302Q328 882 341 859L380 791Q389 777 385 766T364 755H344Z" /> -<glyph unicode="Ú" glyph-name="Uacute" horiz-adv-x="717" d="M354 755Q337 755 331 766T334 792L374 859Q387 882 413 882H442Q463 882 468 870T460 842L411 775Q395 755 371 755H354ZM81 250V673Q81 706 114 706H147Q179 706 179 673V251Q179 171 227 -125T358 79T488 125T537 252V673Q537 706 570 706H603Q636 706 636 673V250Q636 132 560 60T359 -12Q234 -12 158 60T81 250Z" /> -<glyph unicode="Û" glyph-name="Ucircumflex" horiz-adv-x="717" d="M262 755Q244 755 240 766T246 795L292 860Q307 882 333 882H382Q408 882 422 860L469 795Q480 778 476 767T454 755H432Q411 755 397 777L358 835H356L317 777Q305 755 282 755H262ZM81 -250V673Q81 706 114 706H147Q179 706 179 673V251Q179 171 227 125T358 79T488 125T537 252V673Q537 706 570 706H603Q636 706 636 673V250Q636 132 560 60T359 -12Q234 -12 158 60T81 250Z" /> -<glyph unicode="Ü" glyph-name="Udieresis" horiz-adv-x="717" d="M435 781Q402 781 402 814V849Q402 882 435 882H449Q482 882 482 849V814Q482 781 449 781H435ZM268 781Q235 781 235 814V849Q235 882 268 882H282Q315 882 315 849V814Q315 781 282 781H268ZM81 -250V673Q81 706 114 706H147Q179 706 179 673V251Q179 171 227 125T358 79T488 125T537 252V673Q537 706 570 706H603Q636 706 636 673V250Q636 132 560 60T359 -12Q234 -12 158 60T81 250Z" /> -<glyph unicode="Ý" glyph-name="Yacute" horiz-adv-x="567" d="M241 33V299L27 667Q17 684 24 695T50 706H90Q117 706 128 683L247 474L290 385H292Q313 434 335 474L453 683Q465 706 491 706H531Q550 706 557 695T554 667L340 299V33Q340 0 307 0H274Q241 -0 241 33ZM287 755Q270 755 264 766T267 792L307 859Q320 882 346 882H375Q396 882 401 870T393 842L344 775Q328 755 304 755H287Z" /> -<glyph unicode="Þ" glyph-name="Thorn" horiz-adv-x="598" d="M90 33V673Q90 706 123 706H155Q188 706 188 674V586H348Q446 586 507 526T569 365T507 203T347 141H188V33Q188 0 155 0H123Q90 0 90 33ZM188 227H332Q396 227 432 264T469 365Q469 428 433 -464T333 500H188V227Z" /> -<glyph unicode="ß" glyph-name="germandbls" horiz-adv-x="582" d="M71 33V530Q71 618 135 668T287 718Q369 718 423 672T477 557Q477 524 462 496T427 450T393 412T377 371Q377 354 395 336T440 300T492 262T536 211T555 145Q555 72 506 33T385 -7Q322 -7 -269 13Q243 20 243 50V69Q243 105 274 97Q321 77 373 77Q409 77 433 95T457 149Q457 176 429 202T368 248T306 300T278 368Q278 396 294 422T328 465T363 507T379 556Q379 588 354 611T283 634Q236 634 202 605T167 523V33Q167 0 135 0H104Q71 0 71 33Z" /> -<glyph unicode="à" glyph-name="agrave" horiz-adv-x="517" d="M29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 -0 421 0H396Q363 0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146ZM244 580Q220 580 204 600L155 667Q142 684 146 695T172 707H202Q228 -707 241 684L280 616Q289 602 285 591T264 580H244Z" /> -<glyph unicode="á" glyph-name="aacute" horiz-adv-x="517" d="M29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 -0 421 0H396Q363 0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146ZM252 580Q235 580 229 591T232 617L272 684Q285 707 311 707H340Q361 -707 366 696T358 667L309 600Q293 580 269 580H252Z" /> -<glyph unicode="â" glyph-name="acircumflex" horiz-adv-x="517" d="M161 580Q143 580 139 591T145 620L191 685Q206 707 232 707H281Q307 707 321 685L368 620Q379 603 375 592T353 580H331Q310 580 296 602L257 660H255L216 602Q204 580 181 580H161ZM29 -138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 0 421 0H396Q363 0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 -0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146Z" /> -<glyph unicode="ã" glyph-name="atilde" horiz-adv-x="517" d="M120 581Q91 581 91 613Q91 654 117 681T185 708Q216 708 240 691T282 657T318 640Q335 640 344 653T355 685Q357 705 385 705H393Q422 705 422 677Q422 632 397 605T328 578Q297 578 273 595T231 -629T195 646Q159 646 157 601Q154 581 128 581H120ZM29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 0 421 0H396Q363 -0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146Z" /> -<glyph unicode="ä" glyph-name="adieresis" horiz-adv-x="517" d="M29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 -0 421 0H396Q363 0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146ZM333 606Q300 606 300 639V674Q300 707 333 707H347Q380 707 380 -674V639Q380 606 347 606H333ZM166 606Q133 606 133 639V674Q133 707 166 707H180Q213 707 213 674V639Q213 606 180 606H166Z" /> -<glyph unicode="å" glyph-name="aring" horiz-adv-x="517" d="M29 138Q29 183 51 216T104 267T180 295T258 309T331 312H357V325Q357 436 247 436Q190 436 133 404Q104 390 88 416L80 430Q64 460 91 475Q167 518 255 518Q350 518 402 467T454 320V33Q454 -0 421 0H396Q363 0 363 33V63L366 94H364Q362 90 358 83T340 57T308 25T262 0T199 -12Q129 -12 79 29T29 138ZM127 146Q127 113 152 89T221 65Q281 65 319 115T358 226V248H332Q127 248 127 146ZM292 568T257 568T197 588T172 642Q172 676 197 696T257 717T317 -697T342 642Q342 609 317 589ZM257 609Q271 609 280 618T290 642Q290 658 281 667T257 677Q242 677 233 668T224 642Q224 628 233 619T257 609Z" /> -<glyph unicode="æ" glyph-name="ae" horiz-adv-x="853" d="M31 142Q31 175 42 201T72 245T117 275T170 294T228 304T283 309T333 310H358V325Q358 436 244 436Q190 436 133 404Q104 389 88 416L80 430Q65 460 92 475Q165 518 251 518Q378 518 419 429H421Q481 -518 600 518Q702 518 759 452T817 279Q817 266 808 256T783 245H451Q455 162 502 117T620 72Q685 72 741 111Q771 129 786 101L794 86Q811 58 785 42Q708 -12 614 -12Q539 -12 483 21T397 115H395Q390 101 379 84T346 43T287 4T204 -12Q131 -12 81 29T31 142ZM455 -310H719Q717 372 683 406T599 441Q542 441 504 407T455 310ZM129 147Q129 113 154 90T225 66Q284 66 321 116T359 228V245H312Q129 245 129 147Z" /> -<glyph unicode="ç" glyph-name="ccedilla" horiz-adv-x="534" d="M254 -59L266 -9Q164 4 101 76T38 253Q38 366 114 442T308 518Q406 518 475 464Q501 447 481 419L471 404Q455 379 426 396Q373 434 313 434Q237 434 187 383T137 254T187 124T315 72Q383 -72 444 118Q472 136 489 109L497 94Q513 67 488 50Q416 -9 319 -12L312 -50Q344 -54 364 -73T384 -123Q384 -166 355 -186T282 -207Q230 -207 230 -178Q230 -148 248 -148Q252 -148 260 -149T274 -151Q317 -151 317 -119Q317 -92 270 -87Q246 -85 254 -59Z" /> -<glyph unicode="è" glyph-name="egrave" horiz-adv-x="545" d="M38 253Q38 372 109 445T291 518Q394 518 451 452T509 277Q509 263 500 253T475 243H137Q141 163 191 118T312 72Q379 72 433 112Q463 128 478 101L487 86Q504 58 477 42Q400 -12 306 -12Q188 --12 113 63T38 253ZM141 307H412Q410 372 376 407T289 442Q233 442 192 406T141 307ZM278 580Q254 580 238 600L189 667Q176 684 180 695T206 707H236Q262 707 275 684L314 616Q323 602 319 591T298 580H278Z" /> -<glyph unicode="é" glyph-name="eacute" horiz-adv-x="545" d="M287 580Q270 580 264 591T267 617L307 684Q320 707 346 707H375Q396 707 401 696T393 667L344 600Q328 580 304 580H287ZM38 253Q38 372 109 445T291 518Q394 518 451 452T509 277Q509 263 -500 253T475 243H137Q141 163 191 118T312 72Q379 72 433 112Q463 128 478 101L487 86Q504 58 477 42Q400 -12 306 -12Q188 -12 113 63T38 253ZM141 307H412Q410 372 376 407T289 442Q233 442 192 406T141 307Z" /> -<glyph unicode="ê" glyph-name="ecircumflex" horiz-adv-x="545" d="M195 580Q177 580 173 591T179 620L225 685Q240 707 266 707H315Q341 707 355 685L402 620Q413 603 409 592T387 580H365Q344 580 330 602L291 660H289L250 602Q238 580 215 580H195ZM38 -253Q38 372 109 445T291 518Q394 518 451 452T509 277Q509 263 500 253T475 243H137Q141 163 191 118T312 72Q379 72 433 112Q463 128 478 101L487 86Q504 58 477 42Q400 -12 306 -12Q188 -12 113 63T38 253ZM141 307H412Q410 372 376 407T289 442Q233 442 192 -406T141 307Z" /> -<glyph unicode="ë" glyph-name="edieresis" horiz-adv-x="545" d="M367 606Q334 606 334 639V674Q334 707 367 707H381Q414 707 414 674V639Q414 606 381 606H367ZM200 606Q167 606 167 639V674Q167 707 200 707H214Q247 707 247 674V639Q247 606 214 606H200ZM38 -253Q38 372 109 445T291 518Q394 518 451 452T509 277Q509 263 500 253T475 243H137Q141 163 191 118T312 72Q379 72 433 112Q463 128 478 101L487 86Q504 58 477 42Q400 -12 306 -12Q188 -12 113 63T38 253ZM141 307H412Q410 372 376 407T289 442Q233 442 192 -406T141 307Z" /> -<glyph unicode="ì" glyph-name="igrave" horiz-adv-x="237" d="M74 33V473Q74 506 107 506H138Q171 506 171 473V33Q171 0 138 0H107Q74 0 74 33ZM110 580Q86 580 70 600L21 667Q8 684 12 695T38 707H68Q94 707 107 684L146 616Q155 602 151 591T130 580H110Z" /> -<glyph unicode="í" glyph-name="iacute" horiz-adv-x="237" d="M116 580Q99 580 93 591T96 617L136 684Q149 707 175 707H204Q225 707 230 696T222 667L173 600Q157 580 133 580H116ZM70 33V473Q70 506 103 506H134Q167 506 167 473V33Q167 0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="î" glyph-name="icircumflex" horiz-adv-x="237" d="M28 580Q10 580 6 591T12 620L58 685Q73 707 99 707H148Q174 707 188 685L235 620Q246 603 242 592T220 580H198Q177 580 163 602L124 660H122L83 602Q71 580 48 580H28ZM74 33V473Q74 -506 107 506H138Q171 506 171 473V33Q171 0 138 0H107Q74 0 74 33Z" /> -<glyph unicode="ï" glyph-name="idieresis" horiz-adv-x="237" d="M197 606Q164 606 164 639V674Q164 707 197 707H211Q244 707 244 674V639Q244 606 211 606H197ZM30 606Q-3 606 -3 639V674Q-3 707 30 707H44Q77 707 77 674V639Q77 606 44 606H30ZM70 33V473Q70 -506 103 506H134Q167 506 167 473V33Q167 0 134 0H103Q70 0 70 33Z" /> -<glyph unicode="ð" glyph-name="eth" horiz-adv-x="578" d="M39 235Q39 329 102 397T276 466Q313 466 344 455T389 432L402 420H404Q374 503 292 557L147 492Q131 486 123 488T109 503L105 513Q95 536 123 549L225 594Q187 615 129 632Q98 641 107 673L113 -689Q124 720 154 711Q255 684 330 639L433 685Q461 696 470 675L476 663Q486 642 458 630L386 597Q530 477 530 275Q530 222 516 173T472 82T392 14T276 -12Q168 -12 104 61T39 235ZM138 233Q138 167 175 120T279 72Q354 72 393 128T432 258Q432 315 393 351T290 -388Q217 388 178 343T138 233Z" /> -<glyph unicode="ñ" glyph-name="ntilde" horiz-adv-x="591" d="M70 33V473Q70 506 103 506H131Q164 506 164 473V428L161 399H163Q183 443 232 480T355 518Q528 518 528 324V33Q528 0 495 0H464Q431 0 431 33V302Q431 363 412 396T336 429Q263 429 215 375T167 -242V33Q167 0 134 0H103Q70 0 70 33ZM171 581Q142 581 142 613Q142 654 168 681T236 708Q267 708 291 691T333 657T369 640Q386 640 395 653T406 685Q408 705 436 705H444Q473 705 473 677Q473 632 448 605T379 578Q348 578 324 595T282 629T246 646Q210 646 208 -601Q205 581 179 581H171Z" /> -<glyph unicode="ò" glyph-name="ograve" horiz-adv-x="619" d="M37 140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 -12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383ZM295 -580Q271 580 255 600L206 667Q193 684 197 695T223 707H253Q279 707 292 684L331 616Q340 602 336 591T315 580H295Z" /> -<glyph unicode="ó" glyph-name="oacute" horiz-adv-x="619" d="M306 580Q289 580 283 591T286 617L326 684Q339 707 365 707H394Q415 707 420 696T412 667L363 600Q347 580 323 580H306ZM37 140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 --12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383Z" /> -<glyph unicode="ô" glyph-name="ocircumflex" horiz-adv-x="619" d="M213 580Q195 580 191 591T197 620L243 685Q258 707 284 707H333Q359 707 373 685L420 620Q431 603 427 592T405 580H383Q362 580 348 602L309 660H307L268 602Q256 580 233 580H213ZM37 -140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 -12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383Z" /> -<glyph unicode="õ" glyph-name="otilde" horiz-adv-x="619" d="M173 581Q144 581 144 613Q144 654 170 681T238 708Q269 708 293 691T335 657T371 640Q388 640 397 653T408 685Q410 705 438 705H446Q475 705 475 677Q475 632 450 605T381 578Q350 578 326 -595T284 629T248 646Q212 646 210 601Q207 581 181 581H173ZM37 140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 -12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383Z" /> -<glyph unicode="ö" glyph-name="odieresis" horiz-adv-x="619" d="M386 606Q353 606 353 639V674Q353 707 386 707H400Q433 707 433 674V639Q433 606 400 606H386ZM219 606Q186 606 186 639V674Q186 707 219 707H233Q266 707 266 674V639Q266 606 233 606H219ZM37 -140T37 254T116 443T309 518Q424 518 503 443T582 254T503 64T309 -12T116 64ZM135 332T135 254T186 124T309 72Q382 72 432 123T483 254Q483 332 433 383T309 434Q237 434 186 383Z" /> -<glyph unicode="÷" glyph-name="divide" horiz-adv-x="613" d="M292 435Q259 435 259 468V493Q259 526 292 526H320Q353 526 353 493V468Q353 435 320 435H292ZM87 246Q54 246 54 279V291Q54 324 87 324H526Q559 324 559 291V279Q559 246 526 246H87ZM259 -77V102Q259 135 292 135H320Q353 135 353 102V77Q353 44 320 44H292Q259 44 259 77Z" /> -<glyph unicode="ø" glyph-name="oslash" horiz-adv-x="620" d="M110 16L133 49Q38 126 38 254Q38 368 117 443T310 518Q382 518 445 485L465 513Q484 539 509 523Q533 507 518 487L493 452Q583 375 583 254Q583 140 504 64T310 -12Q238 -12 183 18L162 -11Q144 --38 119 -21Q94 -3 110 16ZM187 125L393 413Q354 434 310 434Q238 434 187 383T136 254Q136 178 187 125ZM235 90Q268 72 310 72Q383 72 433 123T484 254Q484 326 438 375L235 90Z" /> -<glyph unicode="ù" glyph-name="ugrave" horiz-adv-x="587" d="M64 182V473Q64 506 97 506H128Q160 506 160 473V204Q160 144 180 111T255 78Q330 78 375 134T420 269V473Q420 506 453 506H484Q517 506 517 473V33Q517 0 484 0H456Q423 0 423 33V78L426 107H424Q404 -62 354 25T236 -12Q150 -12 107 35T64 182ZM277 580Q253 580 237 600L188 667Q175 684 179 695T205 707H235Q261 707 274 684L313 616Q322 602 318 591T297 580H277Z" /> -<glyph unicode="ú" glyph-name="uacute" horiz-adv-x="587" d="M286 580Q269 580 263 591T266 617L306 684Q319 707 345 707H374Q395 707 400 696T392 667L343 600Q327 580 303 580H286ZM64 182V473Q64 506 97 506H128Q160 506 160 473V204Q160 144 180 111T255 -78Q330 78 375 134T420 269V473Q420 506 453 506H484Q517 506 517 473V33Q517 0 484 0H456Q423 0 423 33V78L426 107H424Q404 62 354 25T236 -12Q150 -12 107 35T64 182Z" /> -<glyph unicode="û" glyph-name="ucircumflex" horiz-adv-x="587" d="M194 580Q176 580 172 591T178 620L224 685Q239 707 265 707H314Q340 707 354 685L401 620Q412 603 408 592T386 580H364Q343 580 329 602L290 660H288L249 602Q237 580 214 580H194ZM64 -182V473Q64 506 97 506H128Q160 506 160 473V204Q160 144 180 111T255 78Q330 78 375 134T420 269V473Q420 506 453 506H484Q517 506 517 473V33Q517 0 484 0H456Q423 0 423 33V78L426 107H424Q404 62 354 25T236 -12Q150 -12 107 35T64 182Z" /> -<glyph unicode="ü" glyph-name="udieresis" horiz-adv-x="587" d="M367 606Q334 606 334 639V674Q334 707 367 707H381Q414 707 414 674V639Q414 606 381 606H367ZM200 606Q167 606 167 639V674Q167 707 200 707H214Q247 707 247 674V639Q247 606 214 606H200ZM64 -182V473Q64 506 97 506H128Q160 506 160 473V204Q160 144 180 111T255 78Q330 78 375 134T420 269V473Q420 506 453 506H484Q517 506 517 473V33Q517 0 484 0H456Q423 0 423 33V78L426 107H424Q404 62 354 25T236 -12Q150 -12 107 35T64 182Z" /> -<glyph unicode="ý" glyph-name="yacute" horiz-adv-x="502" d="M35 -134Q46 -110 72 -117Q100 -128 112 -128Q141 -128 163 -107T199 -52L224 6L28 468Q21 485 28 495T53 506H92Q120 506 129 480L248 175L266 114H268Q276 148 285 174L400 479Q409 506 437 -506H473Q491 506 498 496T499 468L276 -89Q254 -147 210 -178T112 -210Q81 -210 42 -194Q13 -182 27 -151L35 -134ZM263 579Q246 579 240 590T243 616L283 683Q296 706 322 706H351Q372 706 377 694T369 666L320 599Q304 579 280 579H263Z" /> -<glyph unicode="þ" glyph-name="thorn" horiz-adv-x="592" d="M72 -167V673Q72 706 105 706H136Q168 706 168 673V476L167 434H169Q170 435 178 445T192 462T213 481T243 499T281 512T329 518Q431 518 492 444T553 253T490 62T325 -12Q293 -12 265 -4T219 -17T190 42T173 62L168 71H166Q168 53 168 27V-167Q168 -200 136 -200H105Q72 -200 72 -167ZM166 252Q166 173 205 123T310 72Q373 72 414 122T455 253Q455 333 416 383T313 434Q249 434 208 389T166 252Z" /> -<glyph unicode="ÿ" glyph-name="ydieresis" horiz-adv-x="502" d="M35 -134Q46 -110 72 -117Q100 -128 112 -128Q141 -128 163 -107T199 -52L224 6L28 468Q21 485 28 495T53 506H92Q120 506 129 480L248 175L266 114H268Q276 148 285 174L400 479Q409 506 -437 506H473Q491 506 498 496T499 468L276 -89Q254 -147 210 -178T112 -210Q81 -210 42 -194Q13 -182 27 -151L35 -134ZM344 605Q311 605 311 638V673Q311 706 344 706H358Q391 706 391 673V638Q391 605 358 605H344ZM177 605Q144 605 144 638V673Q144 706 177 -706H191Q224 706 224 673V638Q224 605 191 605H177Z" /> -<glyph unicode="Œ" glyph-name="OE" horiz-adv-x="946" d="M44 354Q44 507 149 611T410 715Q436 715 476 711T532 706H858Q891 706 891 673V653Q891 620 858 620H579V399H799Q832 399 832 366V346Q832 313 799 313H579V86H875Q908 86 908 53V33Q908 0 875 -0H533Q517 0 477 -4T410 -9Q254 -9 149 95T44 354ZM146 354Q146 236 220 157T410 77Q428 77 445 79T472 83L481 85V622Q450 629 410 629Q294 629 220 550T146 354Z" /> -<glyph unicode="œ" glyph-name="oe" horiz-adv-x="990" d="M37 135T37 252T115 443T306 518Q454 518 526 398H528Q592 518 736 518Q839 518 897 452T955 277Q955 263 945 253T920 243H583Q589 162 638 117T757 72Q823 72 879 112Q909 128 923 101L932 86Q948 -57 922 42Q847 -12 751 -12Q598 -12 530 111H528Q456 -12 307 -12Q193 -12 115 61ZM586 307H856Q854 370 820 405T735 441Q678 441 637 405T586 307ZM136 252Q136 172 186 122T309 72T432 122T483 255Q483 334 432 384T309 434T187 384T136 252Z" /> -<glyph unicode="Š" glyph-name="Scaron" horiz-adv-x="537" d="M264 755Q238 755 223 776L177 842Q166 859 170 870T193 882H213Q235 882 248 860L287 801H289L328 860Q343 882 363 882H384Q402 882 406 871T400 842L353 776Q339 755 313 755H264ZM77 61Q54 -82 73 107L90 131Q108 154 135 137Q214 80 289 80Q345 80 379 107T413 181Q413 224 378 254T293 306T193 351T108 418T73 522Q73 610 138 664T302 718Q358 718 405 701T479 664Q503 647 489 619L475 594Q460 567 430 585Q361 626 300 626Q244 626 209 599T173 527Q173 -492 198 465T261 423T343 386T425 344T488 282T513 189Q513 103 453 46T289 -12Q221 -12 166 11T77 61Z" /> -<glyph unicode="š" glyph-name="scaron" horiz-adv-x="439" d="M214 580Q188 580 173 601L127 667Q116 684 120 695T143 707H163Q185 707 198 685L237 626H239L278 685Q293 707 313 707H334Q352 707 356 696T350 667L303 601Q289 580 263 580H214ZM68 43Q43 -59 61 88L71 102Q88 125 117 109Q180 68 241 68Q279 68 303 85T327 135Q327 162 300 180T235 212T158 242T93 292T66 372Q66 441 118 479T249 518T389 479Q417 465 400 435L391 420Q377 395 347 409Q296 438 244 438Q206 438 183 422T159 374Q159 347 186 328T251 -296T328 267T393 218T420 137Q420 72 370 30T238 -12Q141 -12 68 43Z" /> -<glyph unicode="Ÿ" glyph-name="Ydieresis" horiz-adv-x="567" d="M241 33V299L27 667Q17 684 24 695T50 706H90Q117 706 128 683L247 474L290 385H292Q313 434 335 474L453 683Q465 706 491 706H531Q550 706 557 695T554 667L340 299V33Q340 0 307 0H274Q241 -0 241 33ZM364 781Q331 781 331 814V849Q331 882 364 882H378Q411 882 411 849V814Q411 781 378 781H364ZM197 781Q164 781 164 814V849Q164 882 197 882H211Q244 882 244 849V814Q244 781 211 781H197Z" /> -<glyph unicode="Ž" glyph-name="Zcaron" horiz-adv-x="588" d="M280 755Q254 755 239 776L193 842Q182 859 186 870T209 882H229Q251 882 264 860L303 801H305L344 860Q359 882 379 882H400Q418 882 422 871T416 842L369 776Q355 755 329 755H280ZM32 33V43Q32 -65 46 85L372 556Q384 574 396 590T416 614L423 621V623Q404 620 370 620H83Q50 620 50 653V673Q50 706 83 706H513Q546 706 546 674V664Q546 642 533 622L206 150Q194 133 181 117T162 94L155 86V84Q174 86 208 86H517Q550 86 550 53V33Q550 0 517 0H65Q32 0 32 -33Z" /> -<glyph unicode="ž" glyph-name="zcaron" horiz-adv-x="500" d="M223 580Q197 580 182 601L136 667Q125 684 129 695T152 707H172Q194 707 207 685L246 626H248L287 685Q302 707 322 707H343Q361 707 365 696T359 667L312 601Q298 580 272 580H223ZM31 28V36Q31 -56 45 74L286 376L328 423V425Q312 423 279 423H75Q42 423 42 456V473Q42 506 75 506H426Q459 506 459 478V470Q459 450 445 432L204 129L161 83V81Q177 83 210 83H434Q467 83 467 51V33Q467 0 434 0H64Q31 0 31 28Z" /> -<glyph unicode="ƒ" glyph-name="florin" horiz-adv-x="376" d="M-30 -25Q-14 -27 4 -27Q21 -27 36 -23T70 -9T102 25T118 84L141 350H92Q59 350 59 382V395Q59 428 92 428H148L157 530Q161 578 178 613T218 668T269 699T320 714T365 718Q376 718 418 715Q449 -712 449 680V662Q449 627 423 630Q391 634 370 634Q353 634 337 630T303 616T271 582T255 523L245 428H329Q362 428 362 395V382Q362 350 330 350H238L215 76Q210 17 187 -23T129 -80T67 -104T8 -111Q-9 -111 -31 -109Q-62 -106 -62 -74V-56Q-62 -22 -30 -25Z" -/> -<glyph unicode="ˆ" glyph-name="circumflex" horiz-adv-x="499" d="M158 755Q140 755 136 766T142 795L188 860Q203 882 229 882H278Q304 882 318 860L365 795Q376 778 372 767T350 755H328Q307 755 293 777L254 835H252L213 777Q201 755 178 755H158Z" /> -<glyph unicode="˜" glyph-name="tilde" horiz-adv-x="499" d="M113 756Q84 756 84 788Q84 829 110 856T178 883Q209 883 233 866T275 832T311 815Q328 815 337 828T348 860Q350 880 378 880H386Q415 880 415 852Q415 807 390 780T321 753Q290 753 266 770T224 -804T188 821Q152 821 150 776Q147 756 121 756H113Z" /> -<glyph unicode="–" glyph-name="endash" horiz-adv-x="655" d="M97 246Q65 246 65 279V291Q65 324 97 324H558Q591 324 591 291V279Q591 246 558 246H97Z" /> -<glyph unicode="—" glyph-name="emdash" horiz-adv-x="855" d="M97 246Q65 246 65 279V291Q65 324 97 324H758Q791 324 791 291V279Q791 246 758 246H97Z" /> -<glyph unicode="‘" glyph-name="quoteleft" horiz-adv-x="209" d="M79 499Q61 499 54 509T52 537L102 691Q111 717 139 717H148Q183 717 175 681L139 529Q133 499 104 499H79Z" /> -<glyph unicode="’" glyph-name="quoteright" horiz-adv-x="207" d="M85 499Q48 499 58 536L93 688Q99 717 129 717H153Q171 717 178 707T180 680L130 526Q121 499 93 499H85Z" /> -<glyph unicode="‚" glyph-name="quotesinglbase" horiz-adv-x="226" d="M45 -77L81 76Q87 105 117 105H141Q159 105 166 95T168 68L118 -86Q109 -113 81 -113H73Q38 -113 45 -77Z" /> -<glyph unicode="“" glyph-name="quotedblleft" horiz-adv-x="356" d="M226 499Q208 499 201 509T199 537L249 691Q258 717 286 717H295Q330 717 322 681L287 529Q280 499 251 499H226ZM79 499Q61 499 54 509T52 537L102 691Q111 717 139 717H148Q183 717 -175 681L140 529Q134 499 104 499H79Z" /> -<glyph unicode="”" glyph-name="quotedblright" horiz-adv-x="354" d="M232 499Q196 499 204 536L240 688Q246 717 276 717H301Q339 717 328 680L278 526Q268 499 240 499H232ZM85 499Q48 499 58 536L93 688Q99 717 129 717H154Q172 717 179 707T181 680L131 -526Q122 499 93 499H85Z" /> -<glyph unicode="„" glyph-name="quotedblbase" horiz-adv-x="373" d="M193 -77L229 76Q235 105 264 105H289Q308 105 315 95T316 68L267 -86Q256 -113 229 -113H220Q185 -113 193 -77ZM46 -77L82 76Q88 105 118 105H143Q161 105 168 95T170 68L120 -86Q109 --113 82 -113H74Q38 -113 46 -77Z" /> -<glyph unicode="†" glyph-name="dagger" horiz-adv-x="423" d="M164 -17V429H76Q43 429 43 461V473Q43 506 76 506H164V673Q164 706 197 706H224Q257 706 257 673V506H348Q381 506 381 473V461Q381 429 348 429H257V-17Q257 -50 224 -50H197Q164 -50 164 -17Z" /> -<glyph unicode="‡" glyph-name="daggerdbl" horiz-adv-x="435" d="M169 -17V171H82Q49 171 49 204V216Q49 249 82 249H169V429H82Q49 429 49 461V473Q49 506 82 506H169V673Q169 706 202 706H230Q263 706 263 673V506H354Q387 506 387 473V461Q387 429 -354 429H263V249H354Q387 249 387 216V204Q387 171 354 171H263V-17Q263 -50 230 -50H202Q169 -50 169 -17Z" /> -<glyph unicode="•" glyph-name="bullet" horiz-adv-x="411" d="M205 136Q141 136 96 181T51 291T96 400T205 446Q270 446 315 401T360 291T315 181T205 136Z" /> -<glyph unicode="…" glyph-name="ellipsis" horiz-adv-x="745" d="M581 33V72Q581 105 614 105H650Q683 105 683 72V33Q683 0 650 0H614Q581 0 581 33ZM322 33V72Q322 105 354 105H390Q423 105 423 72V33Q423 0 390 0H354Q322 0 322 33ZM62 33V72Q62 105 -95 105H131Q164 105 164 72V33Q164 0 131 0H95Q62 0 62 33Z" /> -<glyph unicode="‰" glyph-name="perthousand" horiz-adv-x="1100" d="M199 422Q136 422 92 465T47 570T91 674T199 718Q261 718 306 675T351 570T306 466T199 422ZM94 40L588 687Q603 706 628 706H646Q667 706 673 694T666 666L172 20Q156 0 132 0H114Q93 -0 87 12T94 40ZM168 496T199 496T251 517T273 570T252 623T199 645T147 623T125 570Q125 538 146 517ZM764 136Q764 197 808 240T916 284Q978 284 1023 241T1068 136T1023 32T916 -12Q852 -12 808 31T764 136ZM410 136Q410 197 454 240T561 284T668 241T713 136T669 -32T561 -12T454 31T410 136ZM842 136Q842 104 863 83T916 62Q947 62 968 83T990 136T969 189T916 211T864 189T842 136ZM488 167T488 136T509 84T561 62T613 83T635 136Q635 167 614 189T561 211T509 189Z" /> -<glyph unicode="‹" glyph-name="guilsinglleft" horiz-adv-x="321" d="M199 96L70 259Q50 282 70 305L199 469Q215 488 240 488H260Q281 488 286 476T279 448L148 282L279 117Q292 100 288 89T264 77H240Q215 77 199 96Z" /> -<glyph unicode="›" glyph-name="guilsinglright" horiz-adv-x="321" d="M85 77Q64 77 59 88T66 117L197 282L66 448Q53 464 57 476T82 488H106Q130 488 146 469L276 305Q296 282 276 259L146 96Q130 77 106 77H85Z" /> -<glyph unicode="€" glyph-name="Euro" horiz-adv-x="599" d="M70 258Q40 258 40 290Q40 321 70 321H95Q90 353 95 393H71Q40 393 40 425T71 457H106Q137 573 230 645T445 718Q472 718 512 713Q547 707 537 673L530 646Q523 616 496 621Q463 626 443 626Q360 -626 299 580T212 457H456Q492 457 486 424Q480 393 449 393H197Q192 358 197 321H430Q468 321 460 288Q455 258 424 258H214Q237 178 300 130T446 82Q482 82 505 87Q538 93 544 63L550 36Q557 3 525 -3Q482 -12 445 -12Q318 -12 226 62T105 258H70Z" /> -<glyph unicode="™" glyph-name="trademark" horiz-adv-x="965" d="M454 300L485 675Q487 706 518 706H529Q557 706 568 681L660 476L674 434H676Q682 458 690 476L782 681Q793 706 821 706H832Q863 706 865 675L895 300Q897 266 863 266H853Q823 266 820 -297L802 529L803 559H801L716 373Q706 347 678 347H672Q644 347 634 373L549 559H547L548 529L529 297Q527 266 496 266H486Q452 266 454 300ZM225 266Q192 266 192 299V639H73Q40 639 40 670V675Q40 706 73 706H387Q420 706 420 675V670Q420 639 387 639H268V299Q268 -266 235 266H225Z" /> -</font> -</defs> -</svg> diff --git a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.ttf b/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.ttf Binary files differdeleted file mode 100644 index 7bec6cf5f..000000000 --- a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.ttf +++ /dev/null diff --git a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.woff b/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.woff Binary files differdeleted file mode 100644 index dfbbe1cdc..000000000 --- a/web/cobrands/fixmystreet/fonts/MuseoSansRounded500.woff +++ /dev/null diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.eot b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.eot Binary files differnew file mode 100755 index 000000000..5287827df --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.eot diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.svg b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.svg new file mode 100755 index 000000000..9a04e92bc --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.svg @@ -0,0 +1,227 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +This is a custom SVG webfont generated by Fontspring. +</metadata> +<defs> +<font id="MuseoSans300" horiz-adv-x="1064" > +<font-face units-per-em="2048" ascent="1536" descent="-512" /> +<missing-glyph horiz-adv-x="550" /> +<glyph unicode=" " horiz-adv-x="550" /> +<glyph unicode="	" horiz-adv-x="550" /> +<glyph unicode=" " horiz-adv-x="550" /> +<glyph unicode="!" horiz-adv-x="628" d="M238 0v158h157v-158h-157zM242 1440h143l-6 -1063h-131z" /> +<glyph unicode=""" horiz-adv-x="651" d="M141 1114v346h121v-346h-121zM389 1114v346h121v-346h-121z" /> +<glyph unicode="#" horiz-adv-x="1482" d="M96 399l21 115h289l71 401h-289l19 115h291l71 410h125l-71 -410h354l72 410h125l-72 -410h287l-21 -115h-287l-69 -401h284l-18 -115h-287l-69 -399h-125l69 399h-354l-70 -399h-125l70 399h-291zM532 514h353l71 401h-354z" /> +<glyph unicode="$" horiz-adv-x="1140" d="M125 160l86 108l17 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t127.5 -17q123 0 205 68.5t82 180.5q0 96 -75 165t-181.5 115t-213 95t-181 135t-74.5 207q0 143 104 252t272 129v195h115v-191q201 -10 332 -129l10 -8l-70 -119q-14 14 -40.5 35t-109.5 54.5t-165 33.5 q-135 0 -219 -73.5t-84 -174.5q0 -76 53 -135t134 -94t174.5 -79t174 -89t134 -128t53.5 -191q0 -152 -102.5 -260.5t-274.5 -124.5v-191h-115v191q-115 8 -215 53t-143 86z" /> +<glyph unicode="%" horiz-adv-x="1495" d="M115 1180q0 117 84 200.5t202.5 83.5t203.5 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -202.5 83t-83.5 202zM127 0l1098 1440h145l-1096 -1440h-147zM236 1180q0 -72 48 -121t117.5 -49t118.5 49t49 121q0 70 -49 120t-118.5 50t-117.5 -50t-48 -120zM807 258 q0 119 84 203t202.5 84t203.5 -84t85 -203q0 -117 -85 -200t-203.5 -83t-202.5 83t-84 200zM930 260q0 -72 47 -121t116.5 -49t119 49t49.5 121q0 70 -49.5 120t-119 50t-116.5 -50t-47 -120z" /> +<glyph unicode="&" horiz-adv-x="1380" d="M123 397q0 129 69.5 235.5t192.5 143.5v4q-8 2 -21.5 8.5t-48 31t-61.5 57t-48.5 92t-21.5 131.5q0 166 118 265t314 99l164 -20l-41 -119q-68 14 -118 14q-125 0 -207 -66.5t-82 -180.5q0 -43 11 -82t41 -83t96.5 -70t160.5 -26h303v203h141v-203h195v-126h-195v-211 q0 -252 -128 -385.5t-349 -133.5q-215 0 -350 120t-135 302zM268 406q0 -127 92.5 -212t247.5 -85q336 0 336 389v207h-303q-182 0 -277.5 -80t-95.5 -219z" /> +<glyph unicode="'" horiz-adv-x="403" d="M141 1114v346h121v-346h-121z" /> +<glyph unicode="(" horiz-adv-x="593" d="M164 690q0 428 231 805h129q-231 -391 -231 -805q0 -469 231 -885h-129q-231 398 -231 885z" /> +<glyph unicode=")" horiz-adv-x="591" d="M70 -195q231 412 231 885q0 414 -231 805h129q231 -377 231 -805q0 -487 -231 -885h-129z" /> +<glyph unicode="*" horiz-adv-x="964" d="M88 1104l41 129l295 -109l-12 316h139l-14 -316l299 107l41 -125l-304 -88v-4l193 -246l-107 -80l-176 260h-4l-174 -258l-108 78l192 246v4z" /> +<glyph unicode="+" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473z" /> +<glyph unicode="," horiz-adv-x="499" d="M74 -199l116 367h154l-151 -367h-119z" /> +<glyph unicode="-" horiz-adv-x="1007" d="M213 518v127h582v-127h-582z" /> +<glyph unicode="." horiz-adv-x="505" d="M172 0v164h162v-164h-162z" /> +<glyph unicode="/" horiz-adv-x="802" d="M84 -86l520 1606h129l-518 -1606h-131z" /> +<glyph unicode="0" horiz-adv-x="1280" d="M143 721q0 219 44 379t159 262t295 102q496 0 496 -743q0 -745 -496 -746q-498 1 -498 746zM291 721q0 -612 350 -612q348 0 348 612q0 610 -348 610q-350 0 -350 -610z" /> +<glyph unicode="1" horiz-adv-x="954" d="M115 0v127h323v1057l2 80h-4q-14 -31 -71 -86l-154 -154l-90 92l325 324h132v-1313h317v-127h-780z" /> +<glyph unicode="2" horiz-adv-x="1157" d="M123 92q0 102 41 191.5t105.5 154t143.5 122.5t157.5 111.5t143 108t105.5 125t41 148.5q0 121 -83 198.5t-216 77.5q-59 0 -113.5 -20.5t-91.5 -49t-64.5 -57.5t-39.5 -49l-12 -20l-107 71l16.5 27.5t49.5 62.5t85 80t122.5 62.5t162.5 27.5q201 0 320 -114.5 t119 -288.5q0 -98 -40 -183t-104.5 -147.5t-142.5 -119t-155 -108.5t-141.5 -106.5t-105 -123t-40.5 -146.5h751v-127h-899q-8 43 -8 92z" /> +<glyph unicode="3" horiz-adv-x="1150" d="M92 172l86 109q16 -18 47 -47t127.5 -76t194.5 -47q133 0 231.5 88t98.5 223q0 145 -105.5 226t-257.5 81h-98l-35 84l360 422l76 80v4q-41 -6 -117 -6h-540v127h841v-94l-430 -496q76 -4 149 -27.5t143.5 -70.5t114.5 -131t44 -195q0 -186 -135 -318.5t-338 -132.5 q-80 0 -156 20.5t-128 49.5t-93 57.5t-61 49.5z" /> +<glyph unicode="4" horiz-adv-x="1222" d="M70 399v93l708 948h154v-916h205v-125h-205v-399h-141v399h-721zM242 524h549v602l6 136h-4q-33 -57 -72 -109l-479 -625v-4z" /> +<glyph unicode="5" horiz-adv-x="1142" d="M111 180l90 99q4 -6 12 -17.5t39 -41.5t65.5 -51.5t91 -39.5t117.5 -18q152 0 255.5 96t103.5 241.5t-104.5 241.5t-260.5 96q-150 0 -262 -77l-90 32l78 699h696v-127h-573l-41 -369l-15 -82h4q90 55 220 56q215 0 355 -136.5t140 -332.5q0 -199 -144.5 -336.5 t-355.5 -137.5q-238 0 -393 168z" /> +<glyph unicode="6" horiz-adv-x="1218" d="M133 651q0 141 38 280.5t110.5 260.5t198.5 196.5t286 75.5q72 0 137.5 -15t95.5 -30l31 -14l-53 -125q-90 51 -209 51q-143 0 -250.5 -88t-162 -214t-66.5 -275h4q51 76 151.5 122t212.5 46q197 0 323 -130t126 -335q0 -219 -129 -350.5t-324 -131.5 q-233 0 -376.5 190.5t-143.5 485.5zM287 549q0 -156 106.5 -298t257.5 -142q143 0 226.5 97t83.5 249q0 154 -89.5 247t-236.5 93q-139 0 -243.5 -78t-104.5 -168z" /> +<glyph unicode="7" d="M78 1313v127h936v-99l-668 -1341h-147l581 1180q16 35 37 67l31 49l12 17v4q-37 -4 -108 -4h-674z" /> +<glyph unicode="8" horiz-adv-x="1232" d="M131 414q0 80 31 153.5t77 123.5t75.5 76t52.5 40q-178 117 -179 293q0 152 114 258t321 106q201 0 320.5 -102t119.5 -272q0 -92 -45 -189.5t-76 -136.5t-55 -64q209 -119 209 -309q0 -172 -136.5 -294t-341.5 -122q-203 0 -345 120t-142 319zM276 420 q0 -139 102.5 -226.5t239.5 -87.5q133 0 232.5 82t99.5 205q0 53 -25.5 96t-81 80t-101.5 60.5t-132 59.5t-127 56q-25 -14 -52.5 -37.5t-66 -64.5t-63.5 -100.5t-25 -122.5zM332 1098q0 -45 20.5 -85t45 -65.5t78.5 -56.5t86 -45.5t105.5 -45t102.5 -42.5q25 23 52.5 57.5 t62.5 112.5t35 155q0 115 -83 182.5t-214 67.5q-133 0 -212 -67.5t-79 -167.5z" /> +<glyph unicode="9" horiz-adv-x="1216" d="M113 983q0 219 128 350t322 131q233 0 376.5 -190.5t143.5 -485.5q0 -141 -37.5 -279t-110.5 -260t-199 -198t-285 -76q-70 0 -136.5 14.5t-97.5 30.5l-31 15l54 125q90 -51 209 -51q211 0 334.5 171t146.5 406h-4q-53 -76 -153.5 -122t-213.5 -46q-197 0 -321.5 130 t-124.5 335zM256 985q0 -154 89 -247t237 -93q141 0 244.5 78t103.5 168q0 156 -106.5 298t-258.5 142q-143 0 -226 -97t-83 -249z" /> +<glyph unicode=":" horiz-adv-x="600" d="M219 0v164h162v-164h-162zM219 866v164h162v-164h-162z" /> +<glyph unicode=";" horiz-adv-x="600" d="M127 -199l100 367h154l-135 -367h-119zM227 866v164h162v-164h-162z" /> +<glyph unicode="<" horiz-adv-x="1161" d="M102 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> +<glyph unicode="=" horiz-adv-x="1400" d="M223 344v119h955v-119h-955zM223 700v119h955v-119h-955z" /> +<glyph unicode=">" horiz-adv-x="1161" d="M133 117v137l752 326v4l-752 325v138l926 -414v-103z" /> +<glyph unicode="?" horiz-adv-x="985" d="M82 1350q14 12 41 31.5t113 52t176 32.5q176 0 292.5 -102t116.5 -260q0 -94 -38 -170t-91 -126t-107.5 -97t-92 -109.5t-37.5 -136.5v-88h-140v92q0 90 37 164t89.5 124t105.5 97t90 109.5t37 134.5q0 100 -76 167.5t-192 67.5q-135 -2 -248 -88zM307 0v158h158v-158 h-158z" /> +<glyph unicode="@" horiz-adv-x="1648" d="M133 495.5q0 313.5 214 532.5t515 219q258 0 380 -110.5t122 -276.5v-645h145v-115h-551q-174 0 -291.5 116t-117.5 277.5t116.5 277.5t292.5 116h267q-4 102 -92.5 170.5t-260.5 68.5q-250 0 -423 -185t-173 -445q0 -264 173.5 -445.5t433.5 -181.5v-123 q-317 0 -533.5 218t-216.5 531.5zM692 495.5q0 -116.5 81 -198.5t198 -82h254v563h-250q-121 0 -202 -83t-81 -199.5z" /> +<glyph unicode="A" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z" /> +<glyph unicode="B" horiz-adv-x="1282" d="M209 0v1440h491q174 0 282 -98.5t108 -264.5q0 -221 -183 -313v-4q111 -31 176.5 -128t65.5 -229q0 -186 -123 -294.5t-309 -108.5h-508zM350 127h369q131 0 206.5 76t75.5 205t-78.5 206.5t-205.5 77.5h-367v-565zM350 815h350q109 0 176.5 69.5t67.5 182.5t-65.5 179.5 t-180.5 66.5h-348v-498z" /> +<glyph unicode="C" horiz-adv-x="1490" d="M113 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-121 38t-149 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t60 47.5l21 20 l82 -100l-24 -24q-15 -15 -68.5 -54t-113 -67.5t-153.5 -53.5t-192 -25q-315 0 -522 217.5t-207 536.5z" /> +<glyph unicode="D" horiz-adv-x="1515" d="M209 0v1440h465q328 0 525.5 -191.5t197.5 -527.5q0 -340 -196.5 -530.5t-526.5 -190.5h-465zM350 127h309q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-309v-1186z" /> +<glyph unicode="E" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848z" /> +<glyph unicode="F" horiz-adv-x="1052" d="M209 0v1440h758v-127h-617v-541h529v-127h-529v-645h-141z" /> +<glyph unicode="G" horiz-adv-x="1552" d="M113 721q0 313 207.5 528t517.5 215q147 0 275 -42t181 -83l56 -43l-76 -106q-18 16 -54 39.5t-147.5 63.5t-228.5 40q-258 0 -421 -175t-163 -435q0 -266 163 -441.5t408 -175.5q125 0 238 53.5t164 106.5l51 51v244h-246v127h381v-688h-131v109l2 61h-4 q-6 -8 -19.5 -21.5t-58.5 -46t-95 -58.5t-131 -47.5t-165 -21.5q-297 0 -500.5 213.5t-203.5 532.5z" /> +<glyph unicode="H" horiz-adv-x="1536" d="M209 0v1440h141v-656h836v656h141v-1440h-141v657h-836v-657h-141z" /> +<glyph unicode="I" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141z" /> +<glyph unicode="J" horiz-adv-x="1073" d="M72 403v58h141v-53q0 -154 77 -228t187 -74q109 0 185.5 72t76.5 225v910h-352v127h494v-1037q0 -217 -119 -322.5t-287 -105.5q-166 0 -284.5 106.5t-118.5 321.5z" /> +<glyph unicode="K" horiz-adv-x="1230" d="M209 0v1440h141v-625h244l387 625h162l-430 -680v-4l458 -756h-165l-412 688h-244v-688h-141z" /> +<glyph unicode="L" horiz-adv-x="1060" d="M209 0v1440h141v-1313h668v-127h-809z" /> +<glyph unicode="M" horiz-adv-x="1748" d="M164 0l115 1440h147l377 -846l69 -176h5q39 102 71 176l377 846h145l115 -1440h-141l-80 1008l-4 200h-4q-43 -127 -76 -200l-338 -740h-133l-338 740l-78 204h-4q2 -127 -4 -204l-80 -1008h-141z" /> +<glyph unicode="N" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141z" /> +<glyph unicode="O" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430z" /> +<glyph unicode="P" horiz-adv-x="1224" d="M209 0v1440h498q197 0 320.5 -119t123.5 -315q0 -199 -124 -320t-320 -121h-357v-565h-141zM350 692h338q145 0 231.5 84t86.5 230q0 143 -85 225t-231 82h-340v-621z" /> +<glyph unicode="Q" horiz-adv-x="1710" d="M111 729q0 309 212 522t517 213q311 0 524 -213t213 -522q0 -285 -180 -496l178 -178l-86 -88l-176 178q-199 -170 -473 -170q-305 0 -517 219.5t-212 534.5zM258 729q0 -262 168 -442.5t414 -180.5q215 0 372 136l-176 180l86 88l174 -178q133 170 134 397 q0 258 -170 431t-420 173q-246 0 -414 -173t-168 -431z" /> +<glyph unicode="R" horiz-adv-x="1286" d="M209 0v1440h426q180 0 270 -39q102 -45 159.5 -142.5t57.5 -228.5q0 -145 -74.5 -249.5t-197.5 -139.5v-4q14 -18 37 -57l313 -580h-162l-325 606h-363v-606h-141zM350 733h342q131 0 208 79t77 214q0 182 -131 252q-66 35 -205 35h-291v-580z" /> +<glyph unicode="S" horiz-adv-x="1101" d="M102 160l84 108l18 -17q11 -11 49 -38t79 -47.5t104.5 -37.5t126.5 -17q123 0 205 68.5t82 180.5q0 98 -74 168t-179 114t-211.5 92t-180.5 134t-74 209q0 160 127 273.5t322 113.5q221 0 370 -125l15 -14l-70 -119q-14 14 -41 35t-108.5 54.5t-165.5 33.5 q-133 0 -218.5 -73.5t-85.5 -174.5q0 -94 74 -158.5t179.5 -107.5t212 -91t180 -138t73.5 -221q0 -166 -118.5 -278t-317.5 -112q-131 0 -244.5 46.5t-162.5 93.5z" /> +<glyph unicode="T" horiz-adv-x="1204" d="M14 1313v127h1176v-127h-516v-1313h-142v1313h-518z" /> +<glyph unicode="U" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5z" /> +<glyph unicode="V" horiz-adv-x="1265" d="M25 1440h151l399 -1094l56 -186h4q29 113 55 186l400 1094h151l-534 -1440h-148z" /> +<glyph unicode="W" horiz-adv-x="1898" d="M80 1440h147l279 -1118l33 -154h4l4 20q4 23 12 62t16 72l304 1118h135l303 -1118q8 -33 16 -72t13 -62l4 -20h4q14 80 32 154l289 1118h148l-383 -1440h-170l-275 1014l-47 215h-4q-23 -123 -47 -215l-274 -1014h-170z" /> +<glyph unicode="X" horiz-adv-x="1212" d="M53 0l459 752l-418 688h166l252 -426l94 -166h4q41 92 86 166l254 426h168l-422 -688l461 -752h-164l-299 498l-90 159h-4q-43 -86 -88 -161l-295 -496h-164z" /> +<glyph unicode="Y" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618z" /> +<glyph unicode="Z" horiz-adv-x="1218" d="M88 0v100l743 1082q53 76 101 131v4q-35 -4 -105 -4h-700v127h981v-101l-743 -1081q-53 -78 -103 -131v-4q37 4 107 4h745v-127h-1026z" /> +<glyph unicode="[" horiz-adv-x="577" d="M219 -195v1690h277v-115h-148v-1460h148v-115h-277z" /> +<glyph unicode="\" horiz-adv-x="804" d="M70 1520h131l518 -1606h-129z" /> +<glyph unicode="]" horiz-adv-x="577" d="M82 -80h147v1460h-147v115h276v-1690h-276v115z" /> +<glyph unicode="^" horiz-adv-x="1241" d="M150 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> +<glyph unicode="_" horiz-adv-x="1196" d="M70 0h1056v-119h-1056v119z" /> +<glyph unicode="`" horiz-adv-x="1032" d="M365 1784h161l142 -244h-127z" /> +<glyph unicode="a" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> +<glyph unicode="b" horiz-adv-x="1206" d="M168 0v1440h139v-500l-4 -84h4q4 8 11.5 21.5t36 47t65.5 60.5t100.5 48.5t136.5 21.5q205 0 327 -149.5t122 -391.5t-130 -390.5t-335 -148.5q-70 0 -129 20.5t-96 50.5t-63.5 59.5t-37.5 50.5l-12 20h-4q4 -35 4 -84v-92h-135zM303 512q0 -168 86 -291t242 -123 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> +<glyph unicode="c" horiz-adv-x="1124" d="M96 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t44.5 35.5l12 17l63 -109q-6 -6 -16 -17t-49 -39t-82 -49.5 t-111.5 -39t-142.5 -17.5q-231 0 -386 150.5t-155 388.5z" /> +<glyph unicode="d" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 316 -158l20 -37h4q-4 35 -4 78v502h139v-1440h-135v109l4 73h-4l-11 -22q-7 -14 -36 -50t-65.5 -63t-101 -49.5t-140.5 -22.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> +<glyph unicode="e" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5z" /> +<glyph unicode="f" horiz-adv-x="655" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129z" /> +<glyph unicode="g" horiz-adv-x="1191" d="M100 534.5q0 233.5 121 377t326 143.5q76 0 139.5 -17.5t99 -43t60 -51t33.5 -42.5l8 -18h4q-2 12 -2 35v112h135v-1005q0 -229 -142.5 -342t-351.5 -113q-178 0 -337 82l53 115q127 -72 278 -72q162 0 261.5 80t99.5 243v95l4 73h-4q-96 -180 -326 -180 q-207 0 -333 147.5t-126 381zM244 536.5q0 -184.5 92 -295t246 -110.5q135 0 220 95.5t85 308.5q0 393 -326 393q-150 0 -233.5 -103.5t-83.5 -288z" /> +<glyph unicode="h" horiz-adv-x="1214" d="M168 0v1440h139v-557l-4 -84h4q37 92 144.5 174t265.5 82q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -82t-138.5 -211q-16 -55 -17 -137v-494h-139z" /> +<glyph unicode="i" horiz-adv-x="475" d="M164 1266v174h145v-174h-145zM168 0v1030h139v-1030h-139z" /> +<glyph unicode="j" horiz-adv-x="475" d="M-113 -295q18 -2 45 -2q37 0 72 9t75 34t64.5 82t24.5 139v1063h139v-1069q0 -121 -38 -203t-100.5 -117.5t-113.5 -49t-106 -13.5l-62 6v121zM166 1266v174h143v-174h-143z" /> +<glyph unicode="k" horiz-adv-x="1028" d="M168 0v1440h139v-803h164l309 393h168l-358 -448v-4l393 -578h-166l-344 516h-166v-516h-139z" /> +<glyph unicode="l" horiz-adv-x="505" d="M158 244v1196h139v-1166q0 -156 115 -155l34 2v-125q-25 -4 -51 -4q-237 0 -237 252z" /> +<glyph unicode="m" horiz-adv-x="1875" d="M168 1030h137v-153l-4 -82h4q37 106 145.5 183t227.5 77q272 0 319 -258h4q43 109 147.5 183.5t231.5 74.5q182 0 262 -100.5t80 -299.5v-655h-139v621q0 145 -47 226t-176 81q-115 0 -205 -86t-121 -205q-18 -57 -18 -150v-487h-139v621q0 68 -7.5 114.5t-28 95 t-66.5 73t-116 24.5q-121 0 -212 -88t-125 -215q-14 -59 -15 -138v-487h-139v1030z" /> +<glyph unicode="n" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030z" /> +<glyph unicode="o" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291z" /> +<glyph unicode="p" horiz-adv-x="1206" d="M168 -410v1440h133v-100l-4 -80h4l11 22q7 14 36 49t66 62t102.5 49.5t140.5 22.5q205 0 327 -149.5t122 -391.5t-129 -390.5t-332 -148.5q-70 0 -130 20.5t-96 49.5t-62.5 57.5t-37.5 49.5l-12 20h-4q4 -37 4 -90v-492h-139zM303 512q0 -166 88 -290t240 -124 q141 0 236.5 113t95.5 303q0 188 -90.5 301t-235.5 113q-141 0 -237.5 -104.5t-96.5 -311.5z" /> +<glyph unicode="q" horiz-adv-x="1206" d="M100 516q0 242 129 390.5t334 148.5q207 0 318 -162l20 -37h4q-2 33 -2 78v96h135v-1440h-139v496l4 90h-4q-4 -8 -11 -21.5t-36 -48t-65.5 -61.5t-100 -48.5t-137.5 -21.5q-205 0 -327 149.5t-122 391.5zM244 516.5q0 -188.5 90 -302.5t235 -114q141 0 237.5 104.5 t96.5 311.5q0 170 -86 292t-242 122q-141 0 -236 -112.5t-95 -301z" /> +<glyph unicode="r" horiz-adv-x="729" d="M168 0v1030h137v-182l-4 -82h4q39 123 124 198.5t202 75.5l55 -6v-137q-25 4 -51 4q-106 0 -185 -73.5t-114 -192.5q-29 -92 -29 -201v-434h-139z" /> +<glyph unicode="s" horiz-adv-x="907" d="M84 125l76 100q12 -14 36.5 -34.5t104.5 -55.5t166 -35q88 0 147.5 43t59.5 121q0 61 -57.5 105.5t-138.5 75t-163 66.5t-139 101.5t-57 157.5q0 133 102.5 209t249.5 76q61 0 115.5 -11.5t90.5 -28t62.5 -33.5t38.5 -28l10 -12l-63 -106q-10 10 -29.5 25.5t-86 42 t-142.5 26.5q-86 0 -145.5 -40t-59.5 -120q0 -61 57.5 -105t139.5 -74t162.5 -66t138 -101.5t57.5 -159.5q0 -127 -98 -208t-254 -81q-70 0 -135.5 15.5t-107.5 37t-74.5 44t-49.5 39.5z" /> +<glyph unicode="t" horiz-adv-x="686" d="M72 901v117h137v297h137v-297h258v-117h-258v-512q0 -70 17.5 -121t42 -79.5t57.5 -45t59.5 -21.5t55.5 -5l47 4v-125q-23 -4 -60 -4q-43 0 -84 6t-93 29.5t-90 62.5t-64.5 112.5t-26.5 172.5v526h-135z" /> +<glyph unicode="u" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5z" /> +<glyph unicode="v" horiz-adv-x="993" d="M27 1030h147l287 -756l35 -122h4q16 70 37 122l284 756h146l-394 -1030h-151z" /> +<glyph unicode="w" horiz-adv-x="1640" d="M35 1030h147l250 -768l31 -110h4q14 61 31 110l254 764h137l254 -764l31 -110h4q14 59 30 110l250 768h148l-349 -1030h-151l-252 733l-33 111h-4q-14 -59 -31 -111l-251 -733h-152z" /> +<glyph unicode="x" horiz-adv-x="1005" d="M51 0l363 537l-332 493h164l221 -346l35 -59h2q18 33 35 59l221 346h164l-332 -493l362 -537h-163l-250 387l-35 57h-4h-2q-16 -31 -35 -57l-250 -387h-164z" /> +<glyph unicode="y" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61z" /> +<glyph unicode="z" horiz-adv-x="1042" d="M86 0v90l576 723l81 94v4q-35 -4 -102 -4h-530v123h821v-92l-576 -721l-84 -94v-4q37 4 105 4h575v-123h-866z" /> +<glyph unicode="{" horiz-adv-x="688" d="M109 598v127q6 0 18 3t42 18.5t53.5 38t42 69.5t18.5 107v167q0 96 24.5 168t58 109t80 58.5t78 26.5t64.5 5h30v-115h-18q-27 0 -52.5 -7t-60 -30.5t-55 -79t-20.5 -139.5v-200q0 -55 -16.5 -103.5t-41 -76t-49 -47t-41.5 -25.5l-16 -8v-5q6 -2 17 -7t40 -24.5t50.5 -46 t39 -74.5t17.5 -108v-225q0 -82 21.5 -138t55 -79t59 -31t52.5 -8h18v-115q-12 -2 -30 -2q-33 0 -64.5 5.5t-78 28t-80 59t-58 108.5t-24.5 168v195q0 59 -18.5 105t-43 69.5t-50.5 38t-44 16.5z" /> +<glyph unicode="|" horiz-adv-x="563" d="M217 -322v1936h129v-1936h-129z" /> +<glyph unicode="}" horiz-adv-x="688" d="M70 -82h20q25 0 50.5 8t59 31t55 79t21.5 138v225q0 59 16.5 107.5t41 75t49.5 46t41 25.5l16 6v5q-6 2 -17 7t-40 26.5t-50.5 48t-39 74.5t-17.5 104v200q0 84 -20 139.5t-55 79t-59.5 30.5t-51.5 7h-20v115h32q31 0 63 -5t78 -27.5t79.5 -58.5t58.5 -107.5t25 -168.5 v-167q0 -174 137 -226l37 -10v-127q-6 0 -18.5 -3t-42.5 -18.5t-53.5 -38t-41.5 -68.5t-18 -105v-195q0 -96 -25 -168t-58.5 -108.5t-79.5 -59t-78 -28t-63 -5.5l-32 2v115z" /> +<glyph unicode="~" horiz-adv-x="1232" d="M152 428q0 162 69.5 239.5t190.5 77.5q61 0 110 -21.5t81 -53t61.5 -63.5t68.5 -53.5t86 -21.5q82 0 114 63.5t32 141.5h120q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134 33.5t-89 72.5t-79 73t-105 34q-82 0 -114 -63.5t-32 -141.5h-120z" /> +<glyph unicode="¡" horiz-adv-x="561" d="M201 872v158h157v-158h-157zM209 -410l6 1063h131l6 -1063h-143z" /> +<glyph unicode="¢" horiz-adv-x="1171" d="M123 720.5q0 231.5 113.5 390.5t316.5 181v172h115v-172q262 -31 383 -303l-131 -49q-102 221 -304 221q-170 0 -259 -123t-89 -317q0 -197 88 -318.5t260 -121.5q203 0 304 221l131 -51q-57 -127 -154.5 -209t-228.5 -95v-174h-115v174q-203 23 -316.5 182.5t-113.5 391 z" /> +<glyph unicode="£" horiz-adv-x="1206" d="M121 0v127h129v541h-90v112h90v305q0 162 119.5 270.5t304.5 108.5q86 0 166 -29.5t116 -58.5l37 -28l-86 -103q-100 86 -233 86q-131 0 -206 -72.5t-75 -181.5v-297h393v-112h-393v-541h694v-127h-966z" /> +<glyph unicode="¥" horiz-adv-x="1230" d="M70 1440h161l293 -510q47 -82 88 -185h4q41 102 89 185l294 510h162l-360 -619h215v-104h-273l-55 -99v-79h328v-107h-328v-432h-143v432h-334v107h334v79l-58 99h-276v104h217z" /> +<glyph unicode="§" horiz-adv-x="843" d="M113 -41l71 98q72 -61 168.5 -61t159.5 60.5t63 162.5q0 35 -8 66l-133 878h123l139 -889q8 -53 9 -71q0 -143 -98.5 -236.5t-256.5 -93.5q-137 2 -237 86zM139 1135q0 143 97.5 236t255.5 93q137 -2 237 -86l-72 -96q-70 59 -166 59t-160.5 -58t-64.5 -161q0 -33 8 -63 l136 -885h-123l-140 889q-8 33 -8 72z" /> +<glyph unicode="¨" horiz-adv-x="1032" d="M299 1608v176h125v-176h-125zM608 1608v176h127v-176h-127z" /> +<glyph unicode="©" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM444 717 q0 172 115 297t307 125q63 0 120.5 -19.5t94.5 -47.5t66 -56.5t41 -48.5l12 -19l-94 -63l-10 15q-6 9 -29 33.5t-48.5 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 226 127l10 14l94 -64q-4 -8 -13 -20t-40 -45t-67 -58.5t-93 -46t-121 -20.5 q-195 0 -308.5 124t-113.5 294z" /> +<glyph unicode="ª" horiz-adv-x="874" d="M166 541v96h541v-96h-541zM170 977q0 227 391 227h27v8q0 152 -146 152q-41 0 -84 -14.5t-65 -30.5l-23 -14l-53 79q90 76 236 76q121 0 183 -64.5t62 -187.5v-413h-106v100h-4q-6 -12 -19.5 -30.5t-63.5 -50.5t-110 -32q-90 0 -157.5 51.5t-67.5 143.5zM285 987 q0 -45 33.5 -75.5t93.5 -30.5q78 0 126 66.5t48 148.5v18h-25q-276 0 -276 -127z" /> +<glyph unicode="«" horiz-adv-x="1071" d="M102 578l336 421h150l-336 -421l336 -420h-150zM469 578l336 421h151l-335 -421l335 -420h-151z" /> +<glyph unicode="¬" horiz-adv-x="1275" d="M150 700v119h954v-495h-125v376h-829z" /> +<glyph unicode="­" horiz-adv-x="884" d="M152 518v127h581v-127h-581z" /> +<glyph unicode="®" horiz-adv-x="1701" d="M123 721q0 309 212 526t511 217q305 0 519 -217t214 -526q0 -313 -213 -529.5t-520 -216.5q-301 0 -512 217.5t-211 528.5zM244 721q0 -268 174 -451.5t428 -183.5q260 0 437 183.5t177 451.5q0 266 -177 449.5t-437 183.5q-254 0 -428 -183.5t-174 -449.5zM604 1120h285 q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 27 -45l153 -301h-127l-160 323h-153v-323h-115v798zM719 735h149q66 0 104 39t38 109q0 68 -38 104.5t-104 36.5h-149v-289z" /> +<glyph unicode="¯" horiz-adv-x="1032" d="M264 1608v112h504v-112h-504z" /> +<glyph unicode="°" horiz-adv-x="780" d="M102 1178q0 117 84 200.5t203 83.5t204 -84t85 -200q0 -119 -84 -202t-205 -83q-119 0 -203 83t-84 202zM225 1178q0 -72 47 -121t117 -49t119 49t49 121q0 70 -49 120t-119 50t-117 -50t-47 -120z" /> +<glyph unicode="±" horiz-adv-x="1409" d="M170 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM207 -213h995v-119h-995v119z" /> +<glyph unicode="²" horiz-adv-x="782" d="M102 930q0 94 46.5 167.5t112 121t130 88.5t110.5 93t46 116q0 66 -47 111.5t-121 45.5q-100 0 -178 -96l-4 -4l-74 72q10 14 29.5 36.5t87 59.5t143.5 37q127 0 203 -74t76 -186q0 -84 -44.5 -149.5t-108 -108.5t-127 -82t-109.5 -92.5t-50 -116.5h455v-103h-569 q-7 35 -7 64z" /> +<glyph unicode="³" horiz-adv-x="782" d="M88 981l72 78q8 -12 25.5 -29.5t73.5 -47.5t118 -30q74 0 133 52.5t59 130t-60 125t-140 47.5h-68l-29 63l203 236l51 51v4q-39 -6 -75 -6h-316v102h539v-74l-244 -282q102 -12 178 -78t76 -188q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 33.5t-56 38.5 t-37.5 34.5z" /> +<glyph unicode="´" horiz-adv-x="1032" d="M365 1540l141 244h162l-176 -244h-127z" /> +<glyph unicode="µ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> +<glyph unicode="μ" horiz-adv-x="1247" d="M182 -410v1440h140v-618q0 -145 45 -225.5t180 -80.5q168 0 273.5 128t105.5 303v493h139v-1030h-135v156l4 80h-4q-4 -10 -13.5 -28t-43 -63t-74.5 -79.5t-114 -62.5t-157 -28q-76 0 -133 21.5t-76 44.5l-18 20h-4q14 -104 14 -155v-316h-129z" /> +<glyph unicode="¶" horiz-adv-x="1173" d="M100 968.5q0 198.5 143.5 335t344.5 136.5h489v-127h-370v-1415h-117v596q-201 0 -345.5 138t-144.5 336.5zM834 -102v1292h118v-1292h-118z" /> +<glyph unicode="·" horiz-adv-x="555" d="M199 508v164h157v-164h-157z" /> +<glyph unicode="¸" horiz-adv-x="1032" d="M367 -311q39 -12 86 -13q104 0 104 70t-117 70l-30 -2l53 227l82 -14v-17l-23 -123q63 -10 103.5 -48t40.5 -97q0 -84 -56.5 -123t-140.5 -39l-102 10v99z" /> +<glyph unicode="¹" horiz-adv-x="782" d="M150 1556l202 201h107v-788h190v-103h-497v103h194v592l2 49h-2q-8 -16 -43 -51l-82 -78z" /> +<glyph unicode="º" horiz-adv-x="970" d="M141 1126q0 141 100.5 238.5t242 97.5t241.5 -97t100 -239q0 -145 -99 -243.5t-242.5 -98.5t-243 98.5t-99.5 243.5zM176 541v96h621v-96h-621zM254 1126q0 -102 66.5 -169.5t163 -67.5t163 67.5t66.5 169.5q0 100 -66.5 167t-163 67t-163 -67t-66.5 -167z" /> +<glyph unicode="»" horiz-adv-x="1073" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151zM483 158l336 420l-336 421h152l336 -421l-336 -420h-152z" /> +<glyph unicode="¼" horiz-adv-x="1933" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM528 0l689 1440h118l-686 -1440h-121zM1147 233v78l434 580h113v-555h133v-103h-133v-233h-113v233h-434zM1286 336h295v278l6 127h-4q-33 -55 -65 -100l-232 -301v-4z" /> +<glyph unicode="½" horiz-adv-x="1929" d="M127 1239l203 201h106v-789h191v-102h-498v102h195v592l2 49h-2q-8 -16 -43 -51l-82 -78zM530 0l689 1440h118l-686 -1440h-121zM1206 63q0 94 46 168t112 121t130.5 88t110.5 93.5t46 115.5q0 66 -47.5 112t-120.5 46q-100 0 -178 -96l-5 -4l-73 71q10 14 29.5 37 t87 59.5t143.5 36.5q127 0 202.5 -73.5t75.5 -186.5q0 -84 -44 -149.5t-107.5 -108.5t-127 -82t-109.5 -92t-50 -117h455v-102h-570q-6 32 -6 63z" /> +<glyph unicode="¾" horiz-adv-x="1966" d="M96 664l72 77q8 -12 25.5 -29.5t74 -47t117.5 -29.5q74 0 133.5 52t59.5 130t-60.5 125t-140.5 47h-68l-28 64l202 235l52 51v4q-39 -6 -76 -6h-316v103h539v-74l-244 -283q102 -12 178 -77.5t76 -188.5q0 -119 -88 -204t-217 -85q-55 0 -105.5 14.5t-82 34t-56 39 t-37.5 33.5zM561 0l688 1440h119l-686 -1440h-121zM1180 233v78l434 580h112v-555h134v-103h-134v-233h-112v233h-434zM1319 336h295v278l6 127h-4q-33 -55 -66 -100l-231 -301v-4z" /> +<glyph unicode="¿" horiz-adv-x="901" d="M92 -68q0 94 38 169t91 126.5t107.5 98.5t92.5 109.5t38 135.5v82h137v-88q0 -88 -37 -160.5t-89 -124t-104.5 -99.5t-89 -109.5t-36.5 -132.5q0 -100 75.5 -168t192.5 -68q61 0 123.5 21.5t93.5 42.5l31 22l75 -102q-14 -12 -40.5 -32t-112.5 -52.5t-176 -32.5 q-176 0 -293 102t-117 260zM449 872v158h157v-158h-157z" /> +<glyph unicode="À" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM393 1784h162l141 -244h-127z" /> +<glyph unicode="Á" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM565 1540l142 244h161l-176 -244h-127z" /> +<glyph unicode="Â" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM383 1540l170 244h154l172 -244h-136l-110 166h-4l-111 -166h-135z" /> +<glyph unicode="Ã" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM311 1546q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186z " /> +<glyph unicode="Ä" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM414 1608v176h125v-176h-125zM723 1608v176h127v-176h-127z" /> +<glyph unicode="Å" horiz-adv-x="1261" d="M27 0l528 1440h152l528 -1440h-150l-165 459h-580l-164 -459h-149zM381 582h496l-189 522l-55 186h-4q-31 -119 -56 -186zM477 1662.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104zM565 1663q0 -29 18.5 -48.5t47.5 -19.5 q31 0 49 19.5t18 48.5q0 31 -18 50.5t-49 19.5q-29 0 -47.5 -19.5t-18.5 -50.5z" /> +<glyph unicode="Æ" horiz-adv-x="1746" d="M20 0l592 1440h985v-127h-669v-525h547v-126h-547v-535h706v-127h-848v664h-348l-268 -664h-150zM489 786h297v527h-84z" /> +<glyph unicode="Ç" horiz-adv-x="1492" d="M115 729q0 313 206.5 524t516.5 211q96 0 185 -19.5t146.5 -46t101.5 -54t64 -46.5l21 -20l-76 -104q-6 6 -19.5 17t-57.5 38.5t-91 48t-120.5 38t-149.5 17.5q-252 0 -416 -173t-164 -429q0 -262 165 -443.5t419 -181.5q82 0 159.5 19.5t131 48.5t95.5 57.5t62 47.5 l19 20l82 -100l-23 -23q-14 -14 -65.5 -52t-108.5 -67.5t-148.5 -54.5t-185.5 -27l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-291 25 -475 236.5t-184 512.5z" /> +<glyph unicode="È" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM399 1784h162l141 -244h-127z" /> +<glyph unicode="É" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM571 1540l142 244h161l-176 -244h-127z" /> +<glyph unicode="Ê" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM391 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> +<glyph unicode="Ë" horiz-adv-x="1169" d="M209 0v1440h811v-127h-670v-525h547v-126h-547v-535h707v-127h-848zM422 1608v176h125v-176h-125zM731 1608v176h127v-176h-127z" /> +<glyph unicode="Ì" horiz-adv-x="559" d="M43 1784h162l141 -244h-127zM209 0v1440h141v-1440h-141z" /> +<glyph unicode="Í" horiz-adv-x="559" d="M209 0v1440h141v-1440h-141zM213 1540l141 244h162l-176 -244h-127z" /> +<glyph unicode="Î" horiz-adv-x="559" d="M33 1540l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM209 0v1440h141v-1440h-141z" /> +<glyph unicode="Ï" horiz-adv-x="559" d="M63 1608v176h125v-176h-125zM209 0v1440h141v-1440h-141zM373 1608v176h127v-176h-127z" /> +<glyph unicode="Ð" horiz-adv-x="1544" d="M119 662v122h123v656h463q330 0 526 -191.5t196 -527.5q0 -340 -196.5 -530.5t-525.5 -190.5h-463v662h-123zM383 127h307q270 0 430 154.5t160 439.5q0 283 -159.5 437.5t-430.5 154.5h-307v-529h342v-122h-342v-535z" /> +<glyph unicode="Ñ" horiz-adv-x="1542" d="M209 0v1440h137l735 -1037l119 -194h4q-12 119 -12 194v1037h141v-1440h-137l-735 1036l-119 195h-4q12 -119 12 -195v-1036h-141zM453 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140 h-112z" /> +<glyph unicode="Ò" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM604 1784h162l141 -244h-127z " /> +<glyph unicode="Ó" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM776 1540l142 244h161 l-176 -244h-127z" /> +<glyph unicode="Ô" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM596 1540l170 244h154l172 -244 h-136l-110 166h-4l-111 -166h-135z" /> +<glyph unicode="Õ" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM524 1546q0 240 189 240 q59 0 103 -37t81 -74t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103.5 37t-81 73t-73.5 36q-80 0 -80 -140h-113z" /> +<glyph unicode="Ö" horiz-adv-x="1687" d="M111 729q0 309 213 522t520 213t520 -213t213 -522q0 -315 -214 -534.5t-519 -219.5t-519 219.5t-214 534.5zM258 729q0 -262 170 -442.5t416 -180.5q244 0 415 180.5t171 442.5q0 256 -171.5 430t-414.5 174q-246 0 -416 -174t-170 -430zM627 1608v176h125v-176h-125z M936 1608v176h127v-176h-127z" /> +<glyph unicode="×" horiz-adv-x="1341" d="M147 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-444 -497l444 -498l-84 -84l-438 494l-439 -494z" /> +<glyph unicode="Ø" horiz-adv-x="1693" d="M115 729q0 309 213 522t520 213q207 0 387 -108l96 135l84 -61l-96 -136q123 -102 192.5 -249.5t69.5 -315.5q0 -315 -214 -534.5t-519 -219.5q-215 0 -393 115l-99 -139l-86 59l101 142q-121 104 -188.5 254.5t-67.5 322.5zM262 729q0 -279 191 -463l702 979 q-143 88 -307 88q-246 0 -416 -174t-170 -430zM535 201q143 -94 313 -95q244 0 415 180.5t171 442.5q0 274 -195 453z" /> +<glyph unicode="Ù" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM504 1784h162l141 -244h-127z" /> +<glyph unicode="Ú" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM676 1540l141 244h162l-176 -244h-127z" /> +<glyph unicode="Û" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM494 1540l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> +<glyph unicode="Ü" horiz-adv-x="1482" d="M190 502v938h144v-936q0 -184 110.5 -291t296.5 -107q188 0 299 108t111 294v932h141v-938q0 -238 -151.5 -382.5t-397.5 -144.5q-248 0 -400.5 144.5t-152.5 382.5zM524 1608v176h125v-176h-125zM834 1608v176h127v-176h-127z" /> +<glyph unicode="Ý" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM520 1540l142 244h161l-176 -244h-127z" /> +<glyph unicode="Þ" horiz-adv-x="1226" d="M209 0v1440h141v-256h357q195 0 319.5 -119t124.5 -317q0 -197 -126 -318t-323 -121h-352v-309h-141zM350 436h338q145 0 230.5 83t85.5 228.5t-84 227.5t-230 82h-340v-621z" /> +<glyph unicode="ß" horiz-adv-x="1173" d="M168 0v1087q0 174 123 275.5t289 101.5q160 0 259 -90t99 -215q0 -72 -36 -134t-78 -99t-77.5 -82t-35.5 -88q0 -45 62.5 -97.5t137 -96.5t137 -119.5t62.5 -163.5q0 -139 -96 -216t-236 -77q-86 0 -161.5 16t-108.5 33l-33 16v133q123 -74 293 -73q84 0 142.5 44 t58.5 128q0 63 -62.5 123.5t-138.5 101.5t-138.5 106.5t-62.5 137.5q0 59 36 114.5t78 92t78 90t36 108.5q0 72 -58.5 126t-163.5 54q-106 0 -186 -69.5t-80 -190.5v-1077h-139z" /> +<glyph unicode="à" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM291 1440h162l141 -244h-127z" /> +<glyph unicode="á" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM461 1196l141 244h162l-176 -244h-127z" /> +<glyph unicode="â" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM283 1196l170 244h153l172 -244h-135l-111 166h-4l-110 -166h-135z" /> +<glyph unicode="ã" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM211 1202q0 240 188 240q59 0 103.5 -37t81.5 -74t73 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -79 -139h-113zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59 q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131z" /> +<glyph unicode="ä" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM313 1264v176h125v-176h-125zM623 1264v176h127v-176h-127z" /> +<glyph unicode="å" d="M84 281q0 356 631 356h57v27q0 266 -256 266q-76 0 -148.5 -24.5t-107.5 -49.5l-35 -25l-65 107q14 12 43.5 31.5t125 52.5t197.5 33q186 0 285.5 -101.5t99.5 -294.5v-659h-133v113l4 86h-4q-4 -8 -11 -23.5t-36 -54.5t-64.5 -67.5t-98 -53.5t-134.5 -25 q-141 0 -245.5 80.5t-104.5 225.5zM227 289q0 -78 60.5 -136.5t169.5 -58.5q139 0 227 119t88 264v45h-59q-86 0 -148.5 -5t-150.5 -25.5t-137.5 -71.5t-49.5 -131zM375 1318.5q0 63.5 45 104.5t108.5 41t109.5 -41t46 -104.5t-46 -104t-109.5 -40.5t-108.5 40.5t-45 104z M463 1319q0 -29 18.5 -48.5t46.5 -19.5q31 0 49.5 19.5t18.5 48.5q0 31 -18.5 50.5t-49.5 19.5q-29 0 -47 -19.5t-18 -50.5z" /> +<glyph unicode="æ" horiz-adv-x="1781" d="M84 281q0 70 23.5 125t58.5 90.5t91 62.5t105.5 40t119 20.5t113.5 8.5t107 1h68v35q0 266 -262 266q-154 0 -281 -94l-4 -5l-63 105q14 12 42.5 32.5t121 53.5t192.5 33q281 0 348 -213h4q127 213 389 213q199 0 312.5 -134.5t113.5 -328.5l-4 -78h-774 q4 -199 110.5 -306.5t274.5 -107.5q82 0 160 32t115 63l37 30l63 -106q-16 -16 -47 -40t-130 -64t-204 -40q-158 0 -276.5 76t-176.5 211h-4q-6 -23 -19 -51.5t-46 -72.5t-73 -77.5t-106.5 -59.5t-144.5 -26q-150 0 -252 81.5t-102 224.5zM227 289q0 -80 61.5 -137.5 t170.5 -57.5q139 0 226 120t87 265v35h-121q-82 0 -142 -6t-132 -26.5t-111 -69.5t-39 -123zM913 629h629q-6 152 -89 229.5t-202 77.5q-133 0 -223 -78.5t-115 -228.5z" /> +<glyph unicode="ç" horiz-adv-x="1126" d="M98 514q0 236 156 388.5t385 152.5q221 0 360 -131l17 -17l-72 -104q-12 14 -36.5 34.5t-103.5 55.5t-161 35q-172 0 -286.5 -116t-114.5 -298q0 -180 116.5 -297t288.5 -117q59 0 114.5 15.5t92.5 36t66.5 42t42.5 35.5l14 17l63 -109q-14 -16 -43.5 -42.5t-129 -70.5 t-210.5 -49l-16 -88q63 -10 103 -48t40 -97q0 -84 -56 -123t-140 -39l-103 10v99q39 -12 86 -13q104 0 104.5 70t-116.5 70l-31 -2l39 166q-207 23 -338 170t-131 364z" /> +<glyph unicode="è" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM369 1440h161l142 -244h-127z" /> +<glyph unicode="é" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM539 1196l141 244h162l-176 -244h-127z" /> +<glyph unicode="ê" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM358 1196l170 244h154l172 -244h-135l-111 166h-4l-110 -166h-136z" /> +<glyph unicode="ë" horiz-adv-x="1132" d="M96 514q0 246 146.5 393.5t361.5 147.5q205 0 317.5 -136.5t112.5 -338.5l-4 -72h-790q4 -190 117.5 -299t281.5 -109q172 0 305 117l8 8l64 -106q-16 -16 -48 -40t-131.5 -64t-201.5 -40q-231 0 -385 151.5t-154 387.5zM246 623h647q-6 154 -88 234.5t-205 80.5 q-135 0 -232 -82.5t-122 -232.5zM389 1264v176h125v-176h-125zM698 1264v176h127v-176h-127z" /> +<glyph unicode="ì" horiz-adv-x="475" d="M0 1440h162l141 -244h-127zM168 0v1030h139v-1030h-139z" /> +<glyph unicode="í" horiz-adv-x="475" d="M168 0v1030h139v-1030h-139zM172 1196l141 244h162l-176 -244h-127z" /> +<glyph unicode="î" horiz-adv-x="475" d="M-8 1196l170 244h153l172 -244h-135l-110 166h-4l-111 -166h-135zM168 0v1030h139v-1030h-139z" /> +<glyph unicode="ï" horiz-adv-x="475" d="M23 1264v176h124v-176h-124zM168 0v1030h139v-1030h-139zM332 1264v176h127v-176h-127z" /> +<glyph unicode="ð" horiz-adv-x="1204" d="M100 475q0 197 130 339t360 142q178 0 287 -102l8 -8h4q-70 199 -254 325l-361 -163l-26 98l276 129q-131 68 -291 104l41 119q236 -59 402 -158l268 121l27 -98l-199 -92q309 -242 309 -672q0 -106 -29.5 -206.5t-89 -186.5t-160 -138.5t-229.5 -52.5q-215 0 -344 149.5 t-129 350.5zM244 473q0 -152 90 -262.5t244 -110.5q176 0 268 132.5t92 299.5q0 133 -92 219.5t-242 86.5q-174 0 -267 -107.5t-93 -257.5z" /> +<glyph unicode="ñ" horiz-adv-x="1214" d="M168 1030h137v-153l-4 -82h4q37 94 143.5 177t268.5 83q184 0 264 -100.5t80 -299.5v-655h-139v618q0 145 -44 225.5t-180 80.5q-131 0 -235.5 -81t-138.5 -210q-16 -57 -17 -139v-494h-139v1030zM317 1202q0 240 189 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h110 q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> +<glyph unicode="ò" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM399 1440h162l141 -244h-127z" /> +<glyph unicode="ó" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM571 1196l142 244h161l-176 -244h-127z" /> +<glyph unicode="ô" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM389 1196l170 244h154l172 -244h-135l-111 166 h-4l-111 -166h-135z" /> +<glyph unicode="õ" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM317 1202q0 240 189 240q59 0 103 -37t81 -74 t74 -37q82 0 82 142h110q0 -240 -188 -240q-59 0 -103 37t-81 72.5t-74 35.5q-80 0 -80 -139h-113z" /> +<glyph unicode="ö" horiz-adv-x="1273" d="M92 520q0 227 159 381t386 154t386 -153.5t159 -381.5q0 -231 -159 -388t-386 -157t-386 157t-159 388zM236 520q0 -178 116.5 -299t284.5 -121t284.5 121t116.5 299q0 174 -116.5 291t-284.5 117t-284.5 -117t-116.5 -291zM420 1264v176h125v-176h-125zM729 1264v176 h127v-176h-127z" /> +<glyph unicode="÷" horiz-adv-x="1323" d="M160 522v119h1003v-119h-1003zM584 125v151h153v-151h-153zM584 887v151h153v-151h-153z" /> +<glyph unicode="ø" horiz-adv-x="1277" d="M94 520q0 227 159 381t386 154q150 0 279 -74l79 111l84 -62l-77 -110q180 -158 180 -400q0 -231 -159 -388t-386 -157q-139 0 -264 66l-78 -109l-84 62l76 104q-195 162 -195 422zM238 520q0 -188 129 -311l475 663q-94 55 -203 56q-168 0 -284.5 -117t-116.5 -291z M451 147q84 -47 188 -47q168 0 284.5 121t116.5 299q0 172 -116 289z" /> +<glyph unicode="ù" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM358 1440h162l142 -244h-127z" /> +<glyph unicode="ú" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM528 1196l142 244h161l-176 -244h-127z" /> +<glyph unicode="û" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM348 1196l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> +<glyph unicode="ü" horiz-adv-x="1204" d="M154 375v655h139v-618q0 -145 44 -225.5t179 -80.5q170 0 275.5 127t105.5 304v493h139v-1030h-135v154l4 82h-4q-39 -94 -144.5 -177.5t-258.5 -83.5q-180 0 -262 98.5t-82 301.5zM379 1264v176h125v-176h-125zM688 1264v176h127v-176h-127z" /> +<glyph unicode="ý" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM446 1196l142 244h162l-177 -244h-127z" /> +<glyph unicode="þ" horiz-adv-x="1206" d="M168 -410v1850h139v-498l-2 -84h4l13 19q12 18 26 38.5t44 46t65 45t87 34t111 14.5q207 0 329 -149.5t122 -389.5q0 -242 -129 -391.5t-332 -149.5q-70 0 -131 20.5t-97 49.5t-62.5 57.5t-37.5 49.5l-10 20h-4q4 -37 4 -90v-492h-139zM303 514q0 -174 89 -294t241 -120 q141 0 235.5 114t94.5 302q0 184 -90.5 298t-233.5 114q-145 0 -240.5 -102.5t-95.5 -311.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1021" d="M14 -369l54 111q57 -47 122 -47q121 0 195 168l64 145l-431 1022h154l303 -751l37 -109h4q14 57 35 109l297 751h151l-507 -1245q-41 -100 -119 -157.5t-178 -57.5q-105 0 -181 61zM297 1264v176h125v-176h-125zM606 1264v176h127v-176h-127z" /> +<glyph unicode="Œ" horiz-adv-x="1951" d="M113 721q0 313 207.5 526t525.5 213q45 0 129 -10t115 -10h710v-127h-667v-525h544v-126h-544v-535h704v-127h-745q-29 0 -115 -10t-131 -10q-317 0 -525 213t-208 528zM260 721q0 -262 163 -437t423 -175l143 14v1192q-66 16 -143 16q-260 0 -423 -174t-163 -436z" /> +<glyph unicode="œ" horiz-adv-x="2074" d="M94 512q0 240 158 391.5t383 151.5q154 0 275.5 -74t189.5 -203h4q59 131 175 204t265 73q205 0 318.5 -136.5t113.5 -338.5l-4 -72h-790q8 -195 121.5 -301.5t277.5 -106.5q84 0 162 32t112 63l37 30l66 -106q-16 -16 -48 -40t-131.5 -64t-203.5 -40q-160 0 -283 75 t-186 206h-4q-66 -131 -188.5 -206t-278.5 -75q-225 0 -383 149.5t-158 387.5zM238 512q0 -182 115.5 -297t283.5 -115t283.5 117t115.5 303q0 182 -116.5 295t-282.5 113q-168 0 -283.5 -116t-115.5 -300zM1188 623h645q-6 154 -87 234.5t-204 80.5q-135 0 -232 -82.5 t-122 -232.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1175" d="M31 1440h162l305 -522q43 -74 88 -173h4q43 96 88 173l305 522h160l-484 -822v-618h-143v618zM360 1608v176h125v-176h-125zM670 1608v176h127v-176h-127z" /> +<glyph unicode="ˆ" horiz-adv-x="1032" d="M268 1540l170 244h154l172 -244h-135l-111 166h-4l-111 -166h-135z" /> +<glyph unicode="˜" horiz-adv-x="1032" d="M197 1546q0 240 188 240q59 0 103 -37t81 -74t74 -37q82 0 82 142h111q0 -240 -189 -240q-59 0 -103 37t-81 73t-74 36q-80 0 -80 -140h-112z" /> +<glyph unicode="–" horiz-adv-x="1449" d="M213 522v119h1024v-119h-1024z" /> +<glyph unicode="—" horiz-adv-x="1859" d="M213 522v119h1434v-119h-1434z" /> +<glyph unicode="‘" horiz-adv-x="440" d="M115 1106l116 352h111l-80 -352h-147z" /> +<glyph unicode="’" horiz-adv-x="428" d="M117 1108l80 352h147l-115 -352h-112z" /> +<glyph unicode="‚" horiz-adv-x="487" d="M104 -184l80 352h146l-115 -352h-111z" /> +<glyph unicode="“" horiz-adv-x="686" d="M115 1106l116 352h111l-80 -352h-147zM360 1106l115 352h113l-80 -352h-148z" /> +<glyph unicode="”" horiz-adv-x="673" d="M117 1108l80 352h147l-115 -352h-112zM362 1108l80 352h148l-115 -352h-113z" /> +<glyph unicode="„" horiz-adv-x="729" d="M104 -184l80 352h146l-115 -352h-111zM346 -184l80 352h145l-114 -352h-111z" /> +<glyph unicode="•" horiz-adv-x="821" d="M119 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> +<glyph unicode="…" horiz-adv-x="1464" d="M172 0v164h158v-164h-158zM653 0v164h158v-164h-158zM1135 0v164h157v-164h-157z" /> +<glyph unicode="‹" horiz-adv-x="702" d="M102 578l336 421h150l-336 -421l336 -420h-150z" /> +<glyph unicode="›" horiz-adv-x="704" d="M115 158l336 420l-336 421h151l336 -421l-336 -420h-151z" /> +<glyph unicode="€" horiz-adv-x="1208" d="M84 545v104h113q-12 72 0 166h-113v105h131q61 242 249.5 393t438.5 151l195 -24l-35 -133q-76 23 -162 22q-195 0 -338 -112.5t-196 -296.5h626l-20 -105h-629q-12 -78 -2 -166h600l-20 -104h-557q49 -195 195.5 -314.5t344.5 -119.5q45 0 91 7t69 13l22 8l33 -133 q-94 -31 -217 -31q-258 0 -447.5 159t-244.5 411h-127z" /> +<glyph unicode="™" horiz-adv-x="1908" d="M55 1333v107h758v-107h-321v-790h-117v790h-320zM887 543l71 897h107l235 -514q18 -39 29 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> +<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> +<glyph unicode="fi" horiz-adv-x="1130" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h609v-1030h-140v913h-469v-913h-139v913h-129zM819 1266v174h146v-174h-146z" /> +<glyph unicode="fl" horiz-adv-x="1161" d="M86 901v117h129v49q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-49h264v-117h-264v-901h-139v901h-129zM813 244v1196h139v-1166q0 -156 115 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> +<glyph unicode="ffi" horiz-adv-x="1785" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h608v-1030h-139v913h-469v-913h-140v913h-516v-913h-139v913h-129zM1475 1266v174h145v-174h-145z" /> +<glyph unicode="ffl" horiz-adv-x="1816" d="M86 913v117h129v37q0 119 38 202t99.5 118.5t112.5 49t106 13.5l64 -4v-125q-20 4 -49 4q-37 0 -71 -9t-74 -32.5t-63.5 -80t-23.5 -136.5v-37h516v37q0 119 38 202t99.5 118.5t112.5 49t107 13.5l63 -4v-125q-20 4 -49 4q-37 0 -70.5 -9t-73.5 -32.5t-63.5 -80 t-23.5 -136.5v-37h264v-117h-264v-913h-140v913h-516v-913h-139v913h-129zM1468 244v1196h140v-1166q0 -156 114 -155l35 2v-125q-25 -4 -51 -4q-238 0 -238 252z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.ttf b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.ttf Binary files differnew file mode 100755 index 000000000..0a4444b76 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.ttf diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.woff b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.woff Binary files differnew file mode 100755 index 000000000..22110a14e --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300-webfont.woff diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.eot b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.eot Binary files differnew file mode 100755 index 000000000..3a35076a1 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.eot diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.svg b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.svg new file mode 100755 index 000000000..b848d3756 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.svg @@ -0,0 +1,227 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +This is a custom SVG webfont generated by Fontspring. +</metadata> +<defs> +<font id="MuseoSans300Italic" horiz-adv-x="1255" > +<font-face units-per-em="2048" ascent="1536" descent="-512" /> +<missing-glyph horiz-adv-x="555" /> +<glyph unicode=" " horiz-adv-x="555" /> +<glyph unicode="	" horiz-adv-x="555" /> +<glyph unicode=" " horiz-adv-x="555" /> +<glyph unicode="!" horiz-adv-x="632" d="M117 0l33 162h161l-32 -162h-162zM205 377l201 1063h145l-215 -1063h-131z" /> +<glyph unicode=""" horiz-adv-x="647" d="M236 1114l67 346h119l-66 -346h-120zM485 1114l66 346h121l-68 -346h-119z" /> +<glyph unicode="#" horiz-adv-x="1480" d="M53 399l43 115h287l149 401h-286l41 115h286l152 410h129l-152 -410h355l151 410h127l-151 -410h284l-41 -115h-284l-150 -401h283l-41 -115h-285l-147 -399h-129l149 399h-354l-147 -399h-129l149 399h-289zM512 514h352l150 401h-355z" /> +<glyph unicode="$" horiz-adv-x="1142" d="M41 160l96 100q4 -6 14.5 -16.5t43 -36t70.5 -45t98.5 -35.5t125.5 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61 140t-149.5 102t-175.5 88t-148 123t-61 181q0 160 132 284t324 138l39 191h115l-37 -193q94 -10 172 -44t109 -62l30 -29l-84 -108q-12 12 -35.5 30.5 t-101.5 50t-162 31.5q-150 0 -253 -90t-103 -199q0 -72 61.5 -127t149.5 -97t175 -90t148.5 -129t61.5 -191q0 -168 -131 -294t-328 -137l-35 -186h-114l34 193q-111 12 -200.5 56t-124.5 83z" /> +<glyph unicode="%" horiz-adv-x="1505" d="M18 0l1360 1440h160l-1364 -1440h-156zM221 1147q0 121 102.5 219t231.5 98q113 0 182.5 -69.5t69.5 -180.5q0 -125 -101.5 -222t-230.5 -97q-117 0 -185.5 68.5t-68.5 183.5zM344 1145q0 -57 39 -96t100 -39q80 0 140.5 61.5t60.5 142.5q0 57 -38 96.5t-99 39.5 q-80 0 -141.5 -62.5t-61.5 -142.5zM741 227q0 121 102.5 219.5t231.5 98.5q115 0 183.5 -69.5t68.5 -180.5q0 -125 -101.5 -222.5t-230.5 -97.5q-115 0 -184.5 68.5t-69.5 183.5zM864 225q0 -59 39 -97t101 -38q80 0 140 60.5t60 142.5q0 59 -38 98t-99 39 q-78 0 -140.5 -62.5t-62.5 -142.5z" /> +<glyph unicode="&" horiz-adv-x="1378" d="M76 342q0 145 97 270t249 164v4q-6 2 -16.5 7.5t-35 24.5t-44 45t-36 73t-16.5 104q0 188 140.5 309t349.5 121l176 -26l-57 -113q-68 14 -119 14q-141 0 -242.5 -85t-101.5 -222q0 -201 266 -201h303l41 203h139l-39 -203h195l-25 -126h-194l-43 -211 q-104 -518 -553 -519q-205 0 -319.5 100.5t-114.5 266.5zM223 346q0 -104 77 -170.5t212 -66.5q334 0 412 389l41 207h-303q-182 0 -310.5 -94.5t-128.5 -264.5z" /> +<glyph unicode="'" horiz-adv-x="401" d="M236 1114l67 346h121l-66 -346h-122z" /> +<glyph unicode="(" horiz-adv-x="587" d="M143 350q0 637 418 1145h135q-424 -535 -424 -1149q0 -289 97 -541h-125q-101 258 -101 545z" /> +<glyph unicode=")" horiz-adv-x="589" d="M-94 -195q424 535 424 1149q0 289 -97 541h125q100 -258 101 -545q0 -637 -418 -1145h-135z" /> +<glyph unicode="*" horiz-adv-x="956" d="M178 1108l64 125l274 -109l49 316h140l-76 -316l319 107l19 -129l-324 -90v-4l141 -242l-114 -78l-127 260h-4l-226 -258l-100 80l242 250v4z" /> +<glyph unicode="+" horiz-adv-x="1390" d="M143 522l23 119h471l104 522h125l-102 -522h471l-23 -119h-471l-102 -522h-125l102 522h-473z" /> +<glyph unicode="," horiz-adv-x="507" d="M-78 -199l191 367h157l-223 -367h-125z" /> +<glyph unicode="-" horiz-adv-x="999" d="M190 518l23 127h582l-25 -127h-580z" /> +<glyph unicode="." horiz-adv-x="497" d="M51 0l33 170h166l-33 -170h-166z" /> +<glyph unicode="/" horiz-adv-x="804" d="M-53 -86l831 1606h140l-832 -1606h-139z" /> +<glyph unicode="0" horiz-adv-x="1290" d="M137 440q0 119 20.5 249t69.5 270.5t121 251t186.5 182t253.5 71.5q406 0 406 -467q0 -119 -19.5 -249t-68.5 -270t-121 -249.5t-186.5 -181.5t-255.5 -72q-406 0 -406 465zM285 440q0 -332 262 -331q106 0 194 62t143.5 158.5t93.5 218.5t53.5 234.5t15.5 212.5 q0 336 -263 336q-125 0 -226 -88t-157.5 -226t-86 -287t-29.5 -290z" /> +<glyph unicode="1" horiz-adv-x="954" d="M4 0l23 127h323l203 1042l18 80h-4q-20 -29 -90 -86l-178 -147l-78 100l393 324h134l-259 -1313h318l-25 -127h-778z" /> +<glyph unicode="2" horiz-adv-x="1161" d="M18 0q2 123 56.5 227.5t137.5 179t182.5 141t198.5 127t181 122t133 140.5t51 169q0 102 -66.5 162.5t-184.5 60.5q-59 0 -119 -20.5t-102 -48t-75.5 -56t-50.5 -49.5l-16 -20l-100 79q8 10 22.5 26.5t62.5 59.5t100 77t132 60.5t160 26.5q182 0 285.5 -95t103.5 -253 q0 -141 -86 -259t-213 -201t-256 -158.5t-232.5 -171t-125.5 -199.5h745l-24 -127h-900z" /> +<glyph unicode="3" horiz-adv-x="1159" d="M8 172l96 98q4 -6 13.5 -17t41 -39t69.5 -48.5t99.5 -37.5t129.5 -17q150 0 269.5 108.5t119.5 263.5q0 119 -87 182.5t-222 63.5h-107l-18 84l440 422l90 80v4q-41 -6 -117 -6h-530l24 127h842l-18 -94l-525 -498q47 -2 94.5 -13.5t99.5 -39t91 -66.5t64.5 -102.5 t25.5 -141.5q0 -205 -159.5 -357.5t-376.5 -152.5q-88 0 -166 20.5t-127 49.5t-86 57.5t-53 49.5z" /> +<glyph unicode="4" horiz-adv-x="1226" d="M33 399l18 93l879 948h166l-178 -916h204l-24 -125h-205l-78 -399h-141l78 399h-719zM240 524h536l117 602l33 136h-4l-13 -17q-12 -16 -34.5 -43.5t-43.5 -48.5z" /> +<glyph unicode="5" horiz-adv-x="1157" d="M31 180l102 92q4 -6 11.5 -17t34 -39t58 -49.5t87 -38.5t118.5 -17q164 0 295 118.5t131 286.5q0 119 -86 194.5t-223 75.5q-152 0 -276 -77l-88 32l213 699h700l-25 -127h-571l-115 -365l-28 -82h4q94 51 217 52q190 0 308 -112t118 -286q0 -225 -173 -385t-401 -160 q-252 0 -385 166z" /> +<glyph unicode="6" horiz-adv-x="1228" d="M127 494q0 106 31.5 233t97.5 258t157 237.5t222 174t278 67.5q78 0 146.5 -15t99.5 -30l31 -14l-72 -119q-84 45 -203 45q-211 0 -368.5 -171t-224.5 -406h4q66 78 168 123t208 45q178 0 283 -103.5t105 -275.5q0 -217 -147.5 -392.5t-379.5 -175.5q-203 0 -319.5 141.5 t-116.5 377.5zM274 467q0 -141 77 -249.5t210 -108.5q162 0 273.5 125.5t111.5 304.5q0 119 -71.5 187.5t-200.5 68.5q-137 0 -268.5 -95.5t-131.5 -232.5z" /> +<glyph unicode="7" horiz-adv-x="1071" d="M66 0l813 1180q25 35 50 67.5t40 48.5l14 17v4q-37 -4 -109 -4h-661l25 127h936l-19 -99l-930 -1341h-159z" /> +<glyph unicode="8" horiz-adv-x="1247" d="M90 356q0 94 44 180.5t109.5 145.5t105.5 88t69 43q-135 100 -135 244q0 160 136 283.5t353 123.5q188 0 292.5 -86t104.5 -235q0 -76 -33.5 -156t-86 -143.5t-84 -95t-60.5 -56.5q162 -104 162 -260q0 -190 -161 -323.5t-382 -133.5q-190 0 -312 102.5t-122 278.5z M240 360q0 -117 83 -185.5t203 -68.5q152 0 272 91.5t120 232.5q0 45 -22 83t-68 70.5t-84.5 54t-110.5 55.5t-107 52q-37 -20 -75.5 -47.5t-91 -77t-86 -118t-33.5 -142.5zM430 1057q0 -37 16.5 -71t37 -57.5t65.5 -51t72.5 -41t88 -42t85.5 -40.5q229 190 229 381 q0 92 -69.5 145t-186.5 53q-145 0 -241.5 -81.5t-96.5 -194.5z" /> +<glyph unicode="9" horiz-adv-x="1228" d="M82 35l72 119q86 -45 204 -45q143 0 268.5 88t203 214t120.5 275h-4q-61 -74 -163.5 -121t-211.5 -47q-180 0 -284.5 102.5t-104.5 276.5q0 217 148.5 392t380.5 175q203 0 318.5 -141t115.5 -377q0 -106 -32 -233t-97.5 -258t-156.5 -237.5t-222 -174.5t-279 -68 q-78 0 -146.5 14.5t-98.5 30.5zM326 901q0 -119 71.5 -187.5t196.5 -68.5q137 0 271 95.5t134 232.5q0 141 -77.5 249.5t-208.5 108.5q-162 0 -274.5 -126t-112.5 -304z" /> +<glyph unicode=":" horiz-adv-x="600" d="M98 0l33 170h166l-33 -170h-166zM266 860l33 170h166l-33 -170h-166z" /> +<glyph unicode=";" horiz-adv-x="608" d="M-41 -199l188 367h160l-223 -367h-125zM279 860l32 170h166l-33 -170h-165z" /> +<glyph unicode="<" horiz-adv-x="1206" d="M94 530v103l926 414v-138l-752 -325v-4l752 -326v-137z" /> +<glyph unicode="=" horiz-adv-x="1406" d="M215 344v119h954v-119h-954zM215 700v119h954v-119h-954z" /> +<glyph unicode=">" horiz-adv-x="1181" d="M150 117v137l751 326v4l-751 325v138l925 -414v-103z" /> +<glyph unicode="?" horiz-adv-x="976" d="M180 0l33 162h160l-33 -162h-160zM213 1358q16 12 47 30.5t120 48t173 29.5q162 0 260 -86t98 -225q0 -100 -45 -183t-112.5 -140.5t-137 -109.5t-127 -117.5t-71.5 -139.5l-19 -88h-137l19 92q18 94 75.5 173t124 132t131 105.5t107.5 118t43 143.5q0 84 -60.5 138 t-162.5 54q-66 0 -132.5 -21.5t-99.5 -43.5l-35 -23z" /> +<glyph unicode="@" horiz-adv-x="1624" d="M96 358q0 231 125 438.5t327 329t421 121.5q236 0 342 -89t106 -234q0 -27 -8 -80l-123 -629h146l-23 -115h-530q-162 0 -260.5 95.5t-98.5 240.5q0 174 142.5 312.5t330.5 138.5h285q4 25 4 39q0 88 -77 144t-230 56q-291 0 -513 -231t-222 -533q0 -217 136 -356 t363 -139l-22 -121q-268 0 -444.5 174t-176.5 438zM664 438q0 -96 63.5 -159.5t167.5 -63.5h254l108 563h-249q-135 0 -239.5 -103.5t-104.5 -236.5z" /> +<glyph unicode="A" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186z" /> +<glyph unicode="B" horiz-adv-x="1284" d="M90 0l281 1440h463q104 0 172 -27q182 -72 182 -276q0 -131 -68.5 -230.5t-181.5 -146.5v-4q82 -29 130 -103.5t48 -179.5q0 -152 -79 -265.5t-206 -168.5q-92 -39 -204 -39h-537zM256 127h369q86 0 149 29q88 41 141.5 125t53.5 192q0 102 -63.5 160.5t-172.5 58.5h-366 zM391 815h348q123 0 212 88t89 221q0 88 -53 138.5t-151 50.5h-349z" /> +<glyph unicode="C" horiz-adv-x="1488" d="M121 594q0 233 119.5 435t317.5 318.5t417 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t347 -137q129 0 255 48t188 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51t-123 -66 t-158.5 -51.5t-190 -22.5q-285 0 -452.5 172.5t-167.5 446.5z" /> +<glyph unicode="D" horiz-adv-x="1511" d="M90 0l281 1440h436q293 0 459 -146.5t166 -412.5q0 -369 -241 -625t-611 -256h-490zM254 127h309q311 0 516 214t205 531q0 211 -130 326t-359 115h-308z" /> +<glyph unicode="E" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848z" /> +<glyph unicode="F" horiz-adv-x="1056" d="M90 0l281 1440h757l-24 -127h-617l-104 -541h528l-24 -127h-529l-127 -645h-141z" /> +<glyph unicode="G" horiz-adv-x="1550" d="M119 578q0 236 118.5 440.5t318.5 325t425 120.5q152 0 276.5 -42t176.5 -83l49 -41l-90 -102q-6 6 -17.5 15.5t-50.5 32t-83 41t-114.5 32.5t-144.5 14q-293 0 -505 -223t-212 -524q0 -213 129 -344t338 -131q80 0 161 22.5t139.5 56t104.5 66.5t70 55l23 23l47 229 h-246l25 127h379l-133 -688h-132l23 111l14 61h-4q-8 -8 -22.5 -21.5t-64.5 -47t-103 -59.5t-134 -47.5t-163 -21.5q-264 0 -431 168.5t-167 434.5z" /> +<glyph unicode="H" horiz-adv-x="1536" d="M90 0l281 1440h141l-127 -656h834l129 656h141l-281 -1440h-143l129 657h-834l-129 -657h-141z" /> +<glyph unicode="I" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141z" /> +<glyph unicode="J" horiz-adv-x="1060" d="M14 301q0 51 11 107l10 53h141l-8 -51q-10 -51 -10 -88q0 -213 213 -213q68 0 129 25.5t115.5 95t74.5 173.5l174 910h-350l25 127h491l-203 -1051q-41 -213 -170 -313.5t-288 -100.5q-152 0 -253.5 81t-101.5 245z" /> +<glyph unicode="K" horiz-adv-x="1228" d="M90 0l281 1440h141l-121 -625h234l518 625h168l-572 -686v-4l314 -750h-154l-283 688h-249l-136 -688h-141z" /> +<glyph unicode="L" horiz-adv-x="1044" d="M90 0l281 1440h141l-256 -1313h668l-27 -127h-807z" /> +<glyph unicode="M" horiz-adv-x="1746" d="M43 0l395 1440h144l211 -846l36 -176h5q57 100 104 176l543 846h149l-166 -1440h-139l119 1008q4 35 11 85t13.5 82.5t8.5 32.5h-4q-66 -127 -115 -200l-481 -740h-134l-196 740l-39 204h-4q-20 -127 -41 -204l-279 -1008h-141z" /> +<glyph unicode="N" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141z" /> +<glyph unicode="O" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512z" /> +<glyph unicode="P" horiz-adv-x="1228" d="M90 0l281 1440h471q141 0 227 -49q170 -92 170 -304q0 -164 -86 -292.5t-223 -188.5q-100 -41 -209 -41h-379l-111 -565h-141zM367 692h340q94 0 167 33q98 45 158 137t60 219q0 111 -70 171.5t-197 60.5h-338z" /> +<glyph unicode="Q" horiz-adv-x="1708" d="M119 598q0 227 124 429t324.5 319.5t417.5 117.5q279 0 452 -170t173 -436q0 -365 -285 -633l139 -174l-94 -84l-139 178q-225 -170 -486 -170q-279 0 -452.5 174.5t-173.5 448.5zM266 602q0 -217 134.5 -355t344.5 -138q215 0 402 141l-143 182l94 84l143 -186 q221 225 221 522q0 211 -133 345t-346 134q-276 0 -496.5 -217t-220.5 -512z" /> +<glyph unicode="R" horiz-adv-x="1282" d="M90 0l281 1440h473q125 0 200 -39q170 -82 170 -291q0 -170 -101 -301t-263 -168v-4q10 -18 24 -59l205 -578h-151l-211 606h-367l-117 -606h-143zM375 733h334q152 0 256 101.5t104 261.5q0 102 -64.5 159.5t-177.5 57.5h-340z" /> +<glyph unicode="S" horiz-adv-x="1101" d="M20 160l95 100q4 -6 14 -16.5t43 -36t71 -45t98 -35.5t126 -16q135 0 238.5 82.5t103.5 212.5q0 80 -61.5 140t-149.5 102t-175 88t-148.5 123t-61.5 181q0 170 147.5 297t354.5 127q117 0 212 -34.5t134 -69.5l37 -35l-84 -108q-12 12 -36 30.5t-100.5 50t-160.5 31.5 q-152 0 -255.5 -89t-103.5 -200q0 -72 61.5 -127t148.5 -97t175 -90t149.5 -129t61.5 -191q0 -174 -140 -302.5t-347 -128.5q-258 0 -420 156z" /> +<glyph unicode="T" horiz-adv-x="1191" d="M143 1313l23 127h1173l-22 -127h-518l-254 -1313h-144l256 1313h-514z" /> +<glyph unicode="U" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5z" /> +<glyph unicode="V" horiz-adv-x="1259" d="M178 1440h146l184 -1094q12 -74 18 -186h4l15 28q14 31 36.5 79t41.5 79l612 1094h160l-813 -1440h-154z" /> +<glyph unicode="W" horiz-adv-x="1908" d="M236 1440h145l63 -1118l2 -154h5q33 80 67 154l537 1118h141l72 -1118l4 -154h4q31 82 61 154l498 1118h156l-654 -1440h-172l-69 1014l-4 215h-5q-51 -121 -94 -213l-491 -1016h-168z" /> +<glyph unicode="X" horiz-adv-x="1198" d="M-66 0l605 758l-285 682h154l170 -422l63 -164h4q57 86 117 162l340 424h170l-561 -697l319 -743h-151l-207 492l-60 159h-4q-55 -82 -114 -155l-396 -496h-164z" /> +<glyph unicode="Y" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618z" /> +<glyph unicode="Z" horiz-adv-x="1210" d="M-35 0l21 100l942 1082q68 78 127 131v4q-33 -4 -105 -4h-690l27 127h979l-21 -101l-944 -1081q-68 -78 -127 -131v-4q35 4 105 4h737l-25 -127h-1026z" /> +<glyph unicode="[" horiz-adv-x="581" d="M59 -195l330 1690h277l-23 -115h-149l-281 -1460h147l-22 -115h-279z" /> +<glyph unicode="\" horiz-adv-x="790" d="M242 1520h125l206 -1606h-124z" /> +<glyph unicode="]" horiz-adv-x="569" d="M-82 -195l23 115h149l283 1460h-150l23 115h278l-327 -1690h-279z" /> +<glyph unicode="^" horiz-adv-x="1241" d="M31 512l405 928h96l406 -928h-133l-320 758l-319 -758h-135z" /> +<glyph unicode="_" horiz-adv-x="1187" d="M-76 -119l23 119h1057l-23 -119h-1057z" /> +<glyph unicode="`" horiz-adv-x="1032" d="M281 1784h151l96 -244h-118z" /> +<glyph unicode="a" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268z" /> +<glyph unicode="b" horiz-adv-x="1210" d="M51 0l279 1440h139l-96 -498l-27 -94h4q55 92 157.5 149.5t215.5 57.5q180 0 279.5 -110.5t99.5 -303.5q0 -287 -169 -476.5t-392 -189.5q-117 0 -204 55.5t-120 155.5h-4q0 -43 -10 -92l-19 -94h-133zM274 391q0 -127 64.5 -209t193.5 -82q162 0 294 147.5t132 383.5 q0 139 -69.5 218t-190.5 79q-182 0 -303 -164t-121 -373z" /> +<glyph unicode="c" horiz-adv-x="1124" d="M68 414q0 272 191.5 456.5t440.5 184.5q115 0 208 -37t128 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95.5 51.5t-155 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5q-211 0 -342 121t-131 318z" /> +<glyph unicode="d" horiz-adv-x="1210" d="M70 389q0 287 169 476.5t396 189.5q113 0 199 -52.5t118 -152.5h4q0 43 9 86l98 504h139l-278 -1440h-136l21 109l22 81h-4q-55 -90 -154.5 -152.5t-219.5 -62.5q-184 0 -283.5 110.5t-99.5 303.5zM213 397q0 -139 69.5 -218t192.5 -79q182 0 302 167t120 370 q0 127 -64.5 209t-191.5 82q-162 0 -295 -147.5t-133 -383.5z" /> +<glyph unicode="e" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231z" /> +<glyph unicode="f" horiz-adv-x="661" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140z" /> +<glyph unicode="g" horiz-adv-x="1193" d="M10 -344l68 106q115 -68 270 -67q158 0 272.5 81t149.5 242l21 95l22 82h-4q-127 -188 -342 -189q-182 0 -286.5 111.5t-104.5 298.5q0 152 60.5 294t187.5 243.5t292 101.5q117 0 207 -43t121 -140h4q-2 23 2 46l23 112h135l-199 -1018q-45 -229 -197.5 -335.5 t-353.5 -106.5q-188 0 -348 86zM219 424q0 -137 70.5 -215t200 -78t223.5 90t135 211t41 246q0 250 -262 250q-186 0 -297 -152.5t-111 -351.5z" /> +<glyph unicode="h" horiz-adv-x="1216" d="M49 0l281 1440h139l-107 -557l-24 -92h4q49 94 173 179t278 85q141 0 216.5 -67.5t75.5 -199.5q0 -55 -16 -137l-125 -651h-139l119 616q16 94 16 138q0 84 -47 127t-129 43q-170 0 -308.5 -132.5t-174.5 -314.5l-93 -477h-139z" /> +<glyph unicode="i" horiz-adv-x="475" d="M49 0l201 1030h139l-201 -1030h-139zM289 1266l37 174h149l-35 -174h-151z" /> +<glyph unicode="j" horiz-adv-x="475" d="M-309 -416l24 121q16 -2 45 -2q37 0 73 9t80 34t80 82t52 139l205 1063h139l-207 -1067q-23 -121 -74 -204t-115.5 -118.5t-115.5 -49t-104 -13.5zM289 1266l35 174h149l-33 -174h-151z" /> +<glyph unicode="k" horiz-adv-x="1026" d="M49 0l283 1440h139l-158 -803h160l385 393h176l-448 -455v-4l280 -571h-153l-246 514h-176l-103 -514h-139z" /> +<glyph unicode="l" horiz-adv-x="505" d="M80 182q0 35 8 74l231 1184h140l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> +<glyph unicode="m" horiz-adv-x="1875" d="M51 0l199 1030h137l-29 -151q-4 -20 -11 -43t-11 -37l-4 -13h4q59 113 178 191t248 78q137 0 200.5 -65.5t69.5 -192.5h4q61 111 178 184.5t244 73.5q141 0 214 -68.5t73 -200.5q0 -57 -16 -139l-125 -647h-140l119 608q16 78 16 142q0 178 -178 178 q-156 0 -275.5 -136.5t-152.5 -304.5l-96 -487h-139l119 608q16 78 16 146q0 174 -170 174q-154 0 -280 -135.5t-158 -307.5l-95 -485h-139z" /> +<glyph unicode="n" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139z" /> +<glyph unicode="o" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z " /> +<glyph unicode="p" horiz-adv-x="1210" d="M-29 -410l279 1440h133l-18 -100l-25 -88h4q59 92 156.5 152.5t220.5 60.5q180 0 280.5 -110.5t100.5 -303.5q0 -287 -168 -476.5t-389 -189.5q-117 0 -203 52.5t-121 154.5h-4q-2 -45 -12 -98l-96 -494h-138zM274 397q0 -129 66 -213t192 -84q162 0 294 147.5t132 383.5 q0 139 -68.5 218t-191.5 79q-180 0 -302 -165t-122 -366z" /> +<glyph unicode="q" horiz-adv-x="1210" d="M70 387q0 289 170 478.5t397 189.5q117 0 201 -53.5t116 -153.5h4q2 33 11 78l20 104h133l-278 -1440h-139l96 496l26 98h-4q-53 -88 -149 -148.5t-221 -60.5q-182 0 -282.5 111t-100.5 301zM213 397q0 -137 70.5 -217t191.5 -80q182 0 303 167t121 370q0 127 -64.5 209 t-191.5 82q-164 0 -297 -147.5t-133 -383.5z" /> +<glyph unicode="r" horiz-adv-x="729" d="M51 0l199 1030h137l-37 -182l-24 -90h4q57 121 156.5 201.5t220.5 80.5q37 0 61 -6l-27 -137q-29 4 -51 4q-154 0 -271.5 -163t-154.5 -353l-74 -385h-139z" /> +<glyph unicode="s" horiz-adv-x="905" d="M-6 125l84 92q12 -12 33.5 -31.5t97.5 -52.5t162 -33q94 0 168.5 50.5t74.5 138.5q0 51 -48 90t-116.5 67.5t-137 62.5t-117 93.5t-48.5 138.5q0 145 115 229.5t264 84.5q98 0 177 -28t110 -56l31 -29l-78 -98q-8 10 -25.5 24.5t-80 38t-136.5 23.5q-92 0 -165.5 -46 t-73.5 -139q0 -61 73.5 -109t160.5 -79t161 -99.5t74 -168.5q0 -135 -113 -224.5t-268 -89.5q-72 0 -137.5 15.5t-107.5 37t-73.5 44t-46.5 39.5z" /> +<glyph unicode="t" horiz-adv-x="681" d="M127 903l23 119h137l57 293h137l-59 -293h260l-23 -119h-258l-98 -510q-10 -57 -10 -92q0 -184 176 -184l59 4l-24 -125q-25 -4 -53 -4q-299 0 -299 291q0 41 10 112l100 508h-135z" /> +<glyph unicode="u" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202z" /> +<glyph unicode="v" horiz-adv-x="978" d="M96 1030h140l135 -760l12 -125h4q33 72 64 125l430 760h151l-594 -1030h-147z" /> +<glyph unicode="w" horiz-adv-x="1642" d="M115 1030h139l100 -772l8 -111h5q29 59 55 111l399 768h140l104 -768l10 -111h4q25 57 51 111l402 772h149l-546 -1030h-152l-111 739l-10 111h-4q-27 -61 -53 -111l-391 -739h-152z" /> +<glyph unicode="x" horiz-adv-x="1001" d="M-63 0l471 543l-250 487h155l162 -342l25 -61h2q23 31 45 57l289 346h168l-435 -500l269 -530h-150l-186 383l-27 59h-4q-16 -27 -39 -55l-330 -387h-165z" /> +<glyph unicode="y" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61z" /> +<glyph unicode="z" horiz-adv-x="1034" d="M-33 0l17 90l706 723l98 94v4q-33 -4 -98 -4h-524l24 123h820l-19 -92l-708 -721l-101 -94v-4q35 4 103 4h567l-23 -123h-862z" /> +<glyph unicode="{" horiz-adv-x="686" d="M102 598l25 127q8 0 20.5 3t45 18.5t59.5 38t54.5 69.5t39.5 107l35 174q72 360 375 360h30l-20 -115h-18q-25 0 -50.5 -7t-65.5 -28.5t-74 -79t-50 -141.5l-41 -206q-12 -59 -38 -107.5t-55.5 -74t-57 -43t-46.5 -23.5l-18 -6v-5q12 -6 32.5 -19t53.5 -66.5t33 -120.5 q0 -27 -6 -60l-43 -219q-10 -57 -11 -90q0 -72 32 -112t60.5 -47t59.5 -7h18l-22 -115q-12 -2 -33 -2q-31 0 -64.5 9.5t-77.5 33t-73 80t-29 137.5q0 49 13 115l36 189q6 33 7 61q0 70 -34 113t-69 51z" /> +<glyph unicode="|" horiz-adv-x="630" d="M256 -322v1936h129v-1936h-129z" /> +<glyph unicode="}" horiz-adv-x="679" d="M-90 -197l22 115h19q27 0 52.5 7t64 28.5t71.5 78t49 142.5l45 229q18 98 72.5 163t100.5 81l43 17v4q-12 6 -33 19t-53.5 64.5t-32.5 116.5q0 25 6 60l39 196q10 57 10 90q0 72 -31.5 112t-60.5 47t-60 7h-18l23 115q14 2 32 2q31 0 65 -9t78 -32.5t72.5 -80 t28.5 -138.5q0 -49 -12 -115l-33 -164q-6 -37 -6 -63q0 -70 33.5 -113t68.5 -51l33 -8l-25 -127q-6 0 -18 -3t-45 -17.5t-60.5 -38t-55 -69.5t-40.5 -108l-39 -196q-72 -362 -374 -363z" /> +<glyph unicode="~" horiz-adv-x="1206" d="M131 428q0 162 69.5 239.5t190.5 77.5q61 0 110.5 -21.5t81 -53t61.5 -63.5t69 -53.5t86 -21.5q82 0 113.5 63.5t31.5 141.5h121q0 -162 -69.5 -239.5t-190.5 -77.5q-76 0 -134.5 33.5t-89 72.5t-78.5 73t-106 34q-82 0 -113.5 -63.5t-31.5 -141.5h-121z" /> +<glyph unicode="¡" horiz-adv-x="557" d="M8 -410l215 1063h131l-202 -1063h-144zM248 868l33 162h161l-34 -162h-160z" /> +<glyph unicode="¢" horiz-adv-x="1173" d="M129 586q0 258 156.5 473t398.5 233l35 172h115l-33 -176q213 -33 299 -231l22 -68l-131 -49q-2 8 -6 23.5t-22.5 53.5t-45 67.5t-78 53t-116.5 23.5q-199 0 -324 -171t-125 -408q0 -139 70 -220t209 -81q186 0 324 180l26 39l127 -54q-6 -12 -18.5 -31.5t-55.5 -68.5 t-92 -89t-127 -73.5t-159 -40.5l-33 -170h-115l33 177q-154 25 -244 139.5t-90 296.5z" /> +<glyph unicode="£" horiz-adv-x="1187" d="M2 0l25 127h127l104 541h-90l22 112h89l63 318q31 156 164 261t309 105q184 0 305 -112l10 -11l-98 -92q-8 8 -25.5 22.5t-75 37t-118.5 22.5q-131 0 -220 -72.5t-110 -181.5l-59 -297h393l-22 -112h-392l-106 -541h694l-24 -127h-965z" /> +<glyph unicode="¥" horiz-adv-x="1224" d="M170 432l18 105h334l19 79l-39 101h-277l21 104h217l-238 619h154l192 -512q31 -80 60 -183h4q55 100 119 183l393 512h170l-479 -619h215l-21 -104h-274l-74 -101l-18 -79h329l-18 -105h-330l-86 -432h-143l86 432h-334z" /> +<glyph unicode="§" horiz-adv-x="849" d="M-8 -37l84 88q57 -55 155 -55q123 0 196 80t77 200l39 887h123l-39 -897q-6 -164 -113.5 -278.5t-282.5 -114.5q-68 0 -128 22.5t-87 45.5zM201 174l37 897q6 164 113.5 278.5t283.5 114.5q68 0 128 -22.5t85 -44.5l26 -23l-83 -88q-59 55 -158 55q-121 0 -194.5 -79.5 t-78.5 -202.5l-36 -885h-123z" /> +<glyph unicode="¨" horiz-adv-x="1032" d="M176 1608l35 176h125l-33 -176h-127zM485 1608l35 176h127l-35 -176h-127z" /> +<glyph unicode="©" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM473 717q0 172 114.5 297t307.5 125q63 0 120.5 -19.5t94.5 -47.5t65.5 -56.5t41.5 -48.5l12 -19l-94 -63l-11 15q-6 9 -28.5 33.5t-48 43t-65.5 34t-83 15.5q-141 0 -223 -90t-82 -217t81 -217t224 -90q135 0 225 127l11 14l94 -64q-4 -8 -13.5 -20t-40 -45 t-66.5 -58.5t-93.5 -46t-120.5 -20.5q-195 0 -308.5 124t-113.5 294z" /> +<glyph unicode="ª" horiz-adv-x="870" d="M150 541l18 96h539l-19 -96h-538zM233 952q0 57 24 102.5t64.5 71t85 43t98.5 24.5t87 9t70 2h36q8 35 9 53q0 106 -119 107q-41 0 -88 -14.5t-74 -28.5l-25 -14l-39 84q102 70 242 69q215 0 215 -190q0 -33 -12 -90l-76 -385h-108l20 100h-4q-4 -4 -9 -12.5t-26.5 -27.5 t-44 -33.5t-59.5 -27t-74 -12.5q-74 0 -133.5 44t-59.5 126zM352 965q0 -37 28 -60.5t79 -23.5q76 0 141.5 73.5t77.5 141.5l4 18h-27q-303 1 -303 -149z" /> +<glyph unicode="«" horiz-adv-x="1062" d="M90 582l393 417h160l-407 -428l258 -413h-140zM451 582l421 417h162l-440 -428l260 -413h-141z" /> +<glyph unicode="¬" horiz-adv-x="1306" d="M166 700v119h954v-495h-125v376h-829z" /> +<glyph unicode="­" horiz-adv-x="884" d="M20 518l23 127h582l-25 -127h-580z" /> +<glyph unicode="®" horiz-adv-x="1722" d="M152 721q0 309 211.5 526t510.5 217q305 0 519.5 -217t214.5 -526q0 -313 -213 -529.5t-521 -216.5q-301 0 -511.5 217.5t-210.5 528.5zM272 721q0 -268 174.5 -451.5t427.5 -183.5q260 0 437.5 183.5t177.5 451.5q0 266 -177 449.5t-438 183.5q-254 0 -428 -183.5 t-174 -449.5zM633 1120h285q106 0 172.5 -65.5t66.5 -171.5q0 -84 -44 -140.5t-105 -70.5v-4q8 -10 26 -45l154 -301h-127l-160 323h-153v-323h-115v798zM748 735h149q66 0 103.5 39t37.5 109q0 68 -37.5 104.5t-103.5 36.5h-149v-289z" /> +<glyph unicode="¯" horiz-adv-x="1032" d="M147 1608l21 112h506l-21 -112h-506z" /> +<glyph unicode="°" horiz-adv-x="778" d="M205 1141q0 125 101.5 223t228.5 98q111 0 182 -70.5t71 -177.5q0 -125 -102 -223t-227 -98q-113 0 -183.5 69.5t-70.5 178.5zM326 1145q0 -59 38.5 -98t102.5 -39q78 0 139.5 61t61.5 141q0 59 -39 98.5t-101 39.5q-78 0 -140 -61.5t-62 -141.5z" /> +<glyph unicode="±" horiz-adv-x="1437" d="M158 522v119h473v522h125v-522h471v-119h-471v-522h-125v522h-473zM195 -213h995v-119h-995v119z" /> +<glyph unicode="²" horiz-adv-x="782" d="M0 866q2 113 62.5 200t143.5 141.5t166 101.5t140 106.5t57 130.5q0 55 -38.5 91t-102.5 36q-49 0 -99 -25.5t-77 -50.5l-27 -24l-65 78q12 14 36.5 35.5t96.5 56.5t141 35q117 0 184.5 -61.5t67.5 -162.5q0 -90 -49 -160.5t-124 -117.5t-150.5 -89t-139 -97.5 t-82.5 -120.5h449l-21 -103h-569z" /> +<glyph unicode="³" horiz-adv-x="782" d="M16 981l78 72q8 -10 24.5 -27.5t74 -45.5t120.5 -28q86 0 152.5 61.5t66.5 151.5q0 66 -51 104t-121 38h-67l-19 63l248 236l62 51v4q-39 -6 -76 -6h-311l18 102h539l-15 -74l-299 -284q78 -10 143.5 -66.5t65.5 -163.5q0 -127 -98 -225t-240 -98q-170 0 -284 123z" /> +<glyph unicode="´" horiz-adv-x="1032" d="M223 1540l191 244h172l-228 -244h-135z" /> +<glyph unicode="µ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> +<glyph unicode="μ" horiz-adv-x="1245" d="M-16 -410l278 1440h139l-118 -612q-16 -86 -17 -142q0 -170 183 -170q166 0 299 137.5t167 313.5l91 473h139l-199 -1030h-137l29 147l26 97h-4q-55 -98 -174 -183.5t-276 -85.5q-150 0 -213 88h-4q-8 -106 -19 -157l-63 -316h-127z" /> +<glyph unicode="¶" horiz-adv-x="1173" d="M160 903q0 215 174 376t389 161h512l-23 -127h-370l-275 -1415h-118l114 596q-162 0 -282.5 117.5t-120.5 291.5zM694 -102l250 1292h117l-250 -1292h-117z" /> +<glyph unicode="·" horiz-adv-x="559" d="M174 504l33 170h164l-31 -170h-166z" /> +<glyph unicode="¸" horiz-adv-x="1032" d="M201 -408l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l98 227l78 -14l-2 -17l-47 -123q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44z" /> +<glyph unicode="¹" horiz-adv-x="782" d="M53 866l21 103h192l113 583l14 50h-4q-10 -16 -49 -50l-96 -77l-60 81l244 201h107l-154 -788h188l-18 -103h-498z" /> +<glyph unicode="º" horiz-adv-x="966" d="M160 541l18 96h621l-19 -96h-620zM233 1067q0 160 122 277.5t274 117.5q131 0 214 -79.5t83 -200.5q0 -164 -122 -281t-276 -117q-131 0 -213 79t-82 204zM346 1075q0 -84 51.5 -135t134.5 -51q109 0 195 84t86 203q0 82 -52 133t-136 51q-109 0 -194 -84t-85 -201z" /> +<glyph unicode="»" horiz-adv-x="1062" d="M16 158l439 428l-260 413h141l264 -424l-422 -417h-162zM406 158l409 428l-260 413h141l265 -424l-394 -417h-161z" /> +<glyph unicode="¼" horiz-adv-x="1933" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM406 0l966 1440h127l-964 -1440h-129zM1069 233l14 78l545 580h119l-109 -555h134l-19 -103h-133l-47 -233h-113l45 233h-436zM1235 336h291l53 278 q4 25 13.5 56.5t13.5 50.5l6 20h-4q-43 -55 -86 -100l-287 -301v-4z" /> +<glyph unicode="½" horiz-adv-x="1906" d="M113 549l20 102h193l112 584l15 49h-4q-10 -16 -50 -49l-96 -78l-59 82l243 201h107l-154 -789h189l-19 -102h-497zM408 0l966 1440h127l-964 -1440h-129zM1090 0q2 113 62 200t143 141t166 101t140.5 106.5t57.5 131.5q0 55 -39 91t-102 36q-49 0 -99.5 -24.5 t-77.5 -49.5l-26 -26l-66 77q12 14 37 36t96.5 56.5t141.5 34.5q117 0 184.5 -61.5t67.5 -161.5q0 -90 -49.5 -160.5t-124 -118t-150.5 -89t-139.5 -97t-81.5 -121.5h448l-20 -102h-569z" /> +<glyph unicode="¾" horiz-adv-x="1959" d="M98 664l78 71q8 -10 24.5 -27.5t74 -45t120.5 -27.5q86 0 152.5 61.5t66.5 151.5q0 66 -51 103.5t-121 37.5h-67l-19 64l248 235l62 51v4q-39 -6 -76 -6h-311l18 103h539l-15 -74l-299 -285q78 -10 143.5 -66.5t65.5 -162.5q0 -127 -98 -225.5t-240 -98.5 q-170 0 -284 123zM432 0l967 1440h127l-965 -1440h-129zM1096 233l14 78l545 580h119l-109 -555h133l-18 -103h-133l-48 -233h-112l45 233h-436zM1262 336h290l54 278q4 25 13 56.5t15 50.5l4 20h-4q-43 -55 -86 -100l-286 -301v-4z" /> +<glyph unicode="¿" horiz-adv-x="899" d="M-43 -119q0 100 45 183t112.5 140.5t137.5 110t126 118t73 138.5l18 82h137l-18 -88q-20 -94 -77.5 -172t-124.5 -131t-130 -105.5t-106.5 -118t-43.5 -142.5q0 -84 60.5 -138.5t163.5 -54.5q66 0 132 21.5t99 42.5l35 22l59 -113q-16 -12 -46.5 -29.5t-120 -47 t-173.5 -29.5q-162 0 -260 85t-98 226zM496 868l32 162h160l-33 -162h-159z" /> +<glyph unicode="À" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM623 1784h151l96 -244h-118z" /> +<glyph unicode="Á" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM741 1540l191 244h172l-227 -244h-136z" /> +<glyph unicode="Â" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM559 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> +<glyph unicode="Ã" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM510 1546q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36 q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> +<glyph unicode="Ä" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM610 1608l35 176h125l-33 -176h-127zM920 1608l34 176h127l-34 -176h-127z" /> +<glyph unicode="Å" d="M-88 0l803 1440h155l248 -1440h-143l-76 459h-580l-253 -459h-154zM383 582h496l-86 522l-23 186h-4q-53 -119 -90 -186zM680 1645q0 68 52 115.5t120 47.5q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -113.5t-118.5 -47.5t-103.5 34t-38 93zM768 1647q0 -51 55 -52 q35 0 58.5 25t23.5 59q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> +<glyph unicode="Æ" horiz-adv-x="1755" d="M-92 0l870 1440h996l-25 -127h-670l-102 -525h547l-25 -126h-547l-104 -535h706l-24 -127h-848l129 664h-346l-397 -664h-160zM539 786h295l104 527h-82z" /> +<glyph unicode="Ç" horiz-adv-x="1492" d="M125 594q0 233 120 435t317.5 318.5t416.5 116.5q297 0 477 -155l31 -31l-90 -100q-6 6 -17.5 16t-50.5 36.5t-83 47t-115.5 37t-147.5 16.5q-287 0 -499 -218t-212 -515q0 -215 130 -352t348 -137q129 0 254.5 48t187.5 95l61 47l70 -111q-10 -8 -28.5 -22t-78 -51 t-123 -66t-158.5 -51.5t-190 -22.5h-4l-32 -88q49 -8 83.5 -42.5t34.5 -90.5q0 -86 -67.5 -130t-153.5 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -105 60l-30 -2l71 168q-246 27 -387 194.5t-141 417.5z" /> +<glyph unicode="È" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM627 1784h151l96 -244h-118z" /> +<glyph unicode="É" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM748 1540l190 244h172l-227 -244h-135z" /> +<glyph unicode="Ê" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM565 1540l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> +<glyph unicode="Ë" horiz-adv-x="1163" d="M90 0l281 1440h811l-27 -127h-668l-102 -525h547l-25 -126h-545l-106 -535h705l-23 -127h-848zM616 1608l35 176h125l-33 -176h-127zM926 1608l35 176h126l-34 -176h-127z" /> +<glyph unicode="Ì" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM272 1784h152l96 -244h-119z" /> +<glyph unicode="Í" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM389 1540l191 244h172l-228 -244h-135z" /> +<glyph unicode="Î" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM209 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> +<glyph unicode="Ï" horiz-adv-x="559" d="M90 0l281 1440h141l-281 -1440h-141zM260 1608l35 176h125l-33 -176h-127zM569 1608l35 176h127l-35 -176h-127z" /> +<glyph unicode="Ð" horiz-adv-x="1540" d="M117 0l129 662h-121l25 122h120l129 656h437q293 0 458.5 -146.5t165.5 -412.5q0 -369 -240.5 -625t-613.5 -256h-489zM283 127h309q311 0 516 214t205 531q0 211 -130 326t-360 115h-307l-104 -529h344l-25 -122h-344z" /> +<glyph unicode="Ñ" horiz-adv-x="1529" d="M90 0l281 1440h127l532 -1037q37 -72 80 -194h4q10 119 25 194l202 1037h142l-281 -1440h-127l-532 1036l-82 195h-4q-10 -119 -25 -195l-201 -1036h-141zM641 1546q45 240 217 240q45 0 79 -22.5t51.5 -51.5t42 -51.5t52.5 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-35.5 -96.5h-111z" /> +<glyph unicode="Ò" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM827 1784h152l96 -244h-119z" /> +<glyph unicode="Ó" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM946 1540l191 244h172l-228 -244h-135z" /> +<glyph unicode="Ô" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM764 1540l219 244h154l123 -244h-130l-77 166h-4l-144 -166h-141z" /> +<glyph unicode="Õ" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM715 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> +<glyph unicode="Ö" horiz-adv-x="1683" d="M119 598q0 227 124 429t323.5 319.5t416.5 117.5q279 0 453 -170t174 -436q0 -231 -125 -437t-326 -326t-416 -120q-279 0 -451.5 174.5t-172.5 448.5zM264 602q0 -217 134 -355t347 -138q272 0 494.5 222t222.5 521q0 211 -134 345t-347 134q-276 0 -496.5 -217 t-220.5 -512zM815 1608l35 176h125l-33 -176h-127zM1124 1608l35 176h127l-35 -176h-127z" /> +<glyph unicode="×" horiz-adv-x="1421" d="M184 84l443 498l-443 497l84 84l439 -493l438 493l84 -84l-445 -497l445 -498l-84 -84l-438 494l-439 -494z" /> +<glyph unicode="Ø" horiz-adv-x="1689" d="M121 598q0 227 124 429t324.5 319.5t417.5 117.5q223 0 383 -114l129 141l78 -66l-129 -141q164 -168 164 -426q0 -231 -125 -437t-324.5 -326t-414.5 -120q-227 0 -392 119l-131 -143l-80 63l136 148q-160 172 -160 436zM268 602q0 -197 113 -332l893 975 q-121 86 -289 86q-276 0 -496.5 -217t-220.5 -512zM453 201q125 -92 295 -92q274 0 495 222t221 521q0 190 -114 326z" /> +<glyph unicode="Ù" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM727 1784h152l96 -244h-119z" /> +<glyph unicode="Ú" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM846 1540l190 244h172l-227 -244h-135z" /> +<glyph unicode="Û" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM664 1540l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> +<glyph unicode="Ü" horiz-adv-x="1476" d="M156 393q0 55 12 117l182 930h142l-183 -934q-10 -49 -10 -96q0 -143 90 -222t252 -79q186 0 317.5 107.5t167.5 293.5l183 930h143l-188 -948q-47 -240 -215 -378.5t-410 -138.5q-219 0 -351 111.5t-132 306.5zM715 1608l35 176h124l-32 -176h-127zM1024 1608l35 176 h127l-35 -176h-127z" /> +<glyph unicode="Ý" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM676 1540l190 244h172l-227 -244h-135z" /> +<glyph unicode="Þ" horiz-adv-x="1230" d="M90 0l283 1440h141l-51 -256h332q141 0 227 -49q168 -90 168 -304q0 -164 -86 -292.5t-221 -188.5q-94 -41 -211 -41h-377l-62 -309h-143zM317 436h340q94 0 168 33q98 43 157.5 135t59.5 221q0 109 -69.5 170.5t-194.5 61.5h-340z" /> +<glyph unicode="ß" horiz-adv-x="1175" d="M51 0l213 1104q33 166 167 263t290 97q154 0 243 -75.5t89 -192.5q0 -68 -33 -126t-78 -98t-91 -76t-79 -75t-33 -80q0 -43 49.5 -92t107.5 -90t107.5 -108.5t49.5 -141.5q0 -133 -111 -228t-258 -95q-88 0 -167 16t-114 33l-34 16l26 129q111 -70 281 -69q88 0 160.5 51 t72.5 145q0 57 -49 113.5t-108.5 95.5t-108.5 97.5t-49 119.5q0 70 49 133.5t107.5 104.5t107.5 98t49 117q0 61 -49 106t-139 45q-109 0 -202 -69.5t-116 -190.5l-211 -1077h-139z" /> +<glyph unicode="à" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM449 1440h151l96 -244h-118z" /> +<glyph unicode="á" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM569 1196l191 244h172l-227 -244h-136z" /> +<glyph unicode="â" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM385 1196l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> +<glyph unicode="ã" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM336 1202q45 240 217 240q45 0 79 -22.5t51 -51.5t42 -51.5t53 -22.5q78 0 105 142h110q-47 -240 -219 -240 q-55 0 -93 37t-67.5 72.5t-64.5 35.5q-41 0 -66.5 -43t-36.5 -96h-110z" /> +<glyph unicode="ä" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM436 1264l35 176h125l-33 -176h-127zM745 1264l35 176h127l-35 -176h-127z" /> +<glyph unicode="å" horiz-adv-x="1067" d="M16 236q0 96 46.5 169.5t116 116.5t165.5 69.5t184 36t183 9.5h65q14 63 15 108q0 184 -211 185q-76 0 -154 -24.5t-119 -49.5l-39 -25l-45 117q16 12 48 29.5t128.5 47.5t192.5 30q160 0 250 -73t90 -220q0 -51 -12 -113l-127 -649h-134l25 119l23 88h-5q2 0 -13 -23.5 t-47 -58.5t-75 -68.5t-107.5 -57.5t-133.5 -24q-131 0 -220.5 70t-89.5 191zM160 254q0 -68 50 -114t148 -46q135 0 247 122t145 269l8 37h-60q-538 0 -538 -268zM506 1300q0 68 52 116t120 48q66 0 103.5 -33.5t37.5 -95.5q0 -66 -53 -114t-118.5 -47.5t-103.5 34t-38 92.5 zM594 1303q0 -51 55 -52q35 0 58.5 24.5t23.5 59.5q0 23 -15.5 38.5t-39.5 15.5q-33 0 -57.5 -24.5t-24.5 -61.5z" /> +<glyph unicode="æ" horiz-adv-x="1781" d="M16 236q0 393 689 393h67q14 74 14 116q0 184 -217 185q-152 -2 -301 -99l-45 117q18 12 50 29.5t126.5 47.5t184.5 30q279 0 317 -199h4q160 199 412 199q184 0 280.5 -101.5t96.5 -273.5l-29 -166h-776q-8 -41 -8 -88q0 -158 81.5 -242t229.5 -84q84 0 168 32t127 63 l43 30l45 -114q-18 -14 -53 -37t-135.5 -61t-196.5 -38q-164 0 -276.5 76t-147.5 205h-4q-12 -29 -41 -67.5t-80 -91t-134 -87.5t-179 -35q-133 0 -222.5 69t-89.5 192zM160 252q0 -68 50 -113t146 -45q137 0 244 117t143 262l11 41h-121q-473 0 -473 -262zM918 629h628 q4 45 4 67q0 121 -66.5 181.5t-168.5 60.5q-131 0 -237.5 -81t-159.5 -228z" /> +<glyph unicode="ç" horiz-adv-x="1128" d="M72 414q0 272 191.5 456.5t441.5 184.5q115 0 208 -37t127 -74l37 -37l-84 -94q-10 12 -31.5 31.5t-95 51.5t-155.5 32q-193 0 -344.5 -145.5t-151.5 -356.5q0 -145 93 -235.5t243 -90.5q188 0 346 133l14 13l43 -117q-6 -6 -18 -16.5t-54 -37t-86 -47t-113 -37 t-138 -16.5h-10l-33 -88q49 -8 84 -42.5t35 -90.5q0 -86 -68 -130t-154 -44l-110 12l20 95q35 -10 82 -11q119 0 119 80q0 59 -104 60l-31 -2l71 170q-172 27 -273 141.5t-101 288.5z" /> +<glyph unicode="è" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM526 1440h152l96 -244h-119z" /> +<glyph unicode="é" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM645 1196l191 244h172l-228 -244h-135z" /> +<glyph unicode="ê" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM463 1196l219 244h154l122 -244h-129l-77 166h-4l-144 -166h-141z" /> +<glyph unicode="ë" horiz-adv-x="1132" d="M70 410q0 258 172 451.5t426 193.5q186 0 281 -102.5t95 -270.5q0 -35 -8 -79t-16 -71l-6 -24h-791q-8 -41 -8 -88q0 -139 86 -229.5t244 -90.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37t-135.5 -61t-197.5 -38q-211 0 -341 120t-130 315zM250 623h645 q6 35 6 71q0 119 -64.5 181.5t-168.5 62.5q-133 0 -249 -84t-169 -231zM514 1264l35 176h125l-33 -176h-127zM823 1264l35 176h127l-35 -176h-127z" /> +<glyph unicode="ì" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM162 1440h151l97 -244h-119z" /> +<glyph unicode="í" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM283 1196l190 244h172l-227 -244h-135z" /> +<glyph unicode="î" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM98 1196l219 244h154l123 -244h-129l-78 166h-4l-143 -166h-142z" /> +<glyph unicode="ï" horiz-adv-x="475" d="M51 0l199 1030h139l-199 -1030h-139zM152 1264l34 176h125l-32 -176h-127zM461 1264l35 176h127l-35 -176h-127z" /> +<glyph unicode="ð" horiz-adv-x="1208" d="M66 383q0 221 160.5 397t418.5 176q184 0 283 -108l8 -10h4q-35 203 -192 333l-394 -161l-8 100l309 127q-117 70 -274 113l57 108q211 -55 361 -162l303 127l10 -100l-229 -94q209 -199 209 -506q0 -115 -36 -239t-105.5 -240.5t-192.5 -192.5t-277 -76q-199 0 -307 117 t-108 291zM209 387q0 -123 70.5 -205t201.5 -82q190 0 319.5 163t129.5 333q0 109 -76 175.5t-207 66.5q-180 0 -309 -133.5t-129 -317.5z" /> +<glyph unicode="ñ" horiz-adv-x="1216" d="M49 0l201 1030h135l-27 -147l-26 -97h4q49 96 174 182.5t281 86.5q141 0 217.5 -67.5t76.5 -199.5q0 -55 -16 -137l-127 -651h-139l119 616q16 76 16 138q0 170 -176 170q-170 0 -307.5 -132.5t-173.5 -314.5l-93 -477h-139zM444 1202q45 240 217 240q45 0 79 -22.5 t51.5 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> +<glyph unicode="ò" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M559 1440h152l96 -244h-119z" /> +<glyph unicode="ó" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M680 1196l190 244h172l-227 -244h-135z" /> +<glyph unicode="ô" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M498 1196l219 244h153l123 -244h-129l-78 166h-4l-143 -166h-141z" /> +<glyph unicode="õ" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M446 1202q45 240 218 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 104 142h111q-47 -240 -219 -240q-55 0 -93 37t-68 72.5t-65 35.5q-41 0 -66.5 -43t-35.5 -96h-111z" /> +<glyph unicode="ö" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q209 0 340 -125t131 -320q0 -260 -194.5 -447.5t-437.5 -187.5q-209 0 -340 126t-131 325zM211 430q0 -145 91 -237.5t239 -92.5q186 0 336.5 148.5t150.5 355.5q0 143 -92 233.5t-238 90.5q-188 0 -337.5 -146.5t-149.5 -351.5z M549 1264l35 176h125l-33 -176h-127zM858 1264l35 176h127l-35 -176h-127z" /> +<glyph unicode="÷" horiz-adv-x="1316" d="M150 522v119h1003v-119h-1003zM573 125v151h154v-151h-154zM573 887v151h154v-151h-154z" /> +<glyph unicode="ø" horiz-adv-x="1275" d="M68 426q0 258 192.5 443.5t439.5 185.5q162 0 283 -80l107 117l77 -68l-106 -117q111 -121 110 -297q0 -260 -194.5 -447.5t-437.5 -187.5q-154 0 -269 70l-104 -113l-78 66l100 111q-120 124 -120 317zM211 430q0 -129 72 -217l606 661q-84 53 -191 54 q-188 0 -337.5 -146.5t-149.5 -351.5zM362 145q78 -45 179 -45q186 0 336.5 148.5t150.5 355.5q0 117 -63 199z" /> +<glyph unicode="ù" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM518 1440h152l96 -244h-119z" /> +<glyph unicode="ú" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM639 1196l190 244h172l-227 -244h-135z" /> +<glyph unicode="û" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM455 1196l219 244h153l123 -244h-129l-78 166h-4 l-143 -166h-141z" /> +<glyph unicode="ü" horiz-adv-x="1206" d="M94 242q0 55 17 137l125 651h139l-119 -612q-14 -74 -14 -142q0 -82 40 -126t140 -44q166 0 299 137.5t168 313.5l92 473h139l-200 -1030h-138l29 147l27 97h-4q-53 -98 -173 -183.5t-278 -85.5q-127 0 -208 65t-81 202zM508 1264l35 176h125l-33 -176h-127zM817 1264 l35 176h127l-35 -176h-127z" /> +<glyph unicode="ý" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM547 1196l190 244h172l-227 -244h-135z" /> +<glyph unicode="þ" horiz-adv-x="1212" d="M-29 -410l359 1850h137l-96 -504l-23 -86h4q55 86 151.5 145.5t219.5 59.5q180 0 280.5 -110.5t100.5 -303.5q0 -285 -168 -475.5t-389 -190.5q-115 0 -202 53.5t-122 153.5h-4q-2 -45 -12 -98l-96 -494h-140zM276 397q0 -129 66 -213t193 -84q162 0 292.5 147.5 t130.5 383.5q0 139 -68.5 218t-189.5 79q-180 0 -302 -165t-122 -366z" /> +<glyph unicode="ÿ" horiz-adv-x="1021" d="M-184 -369l69 105q43 -41 115 -41q125 0 229 166l93 149l-234 1020h145l160 -770l19 -108h2q29 57 57 106l447 772h157l-753 -1249q-125 -211 -318 -211q-114 0 -188 61zM416 1264l35 176h124l-32 -176h-127zM725 1264l35 176h127l-35 -176h-127z" /> +<glyph unicode="Œ" horiz-adv-x="1943" d="M121 588q0 231 118.5 433t317.5 320.5t422 118.5q51 0 144.5 -10t127.5 -10h711l-25 -127h-667l-103 -525h547l-26 -126h-547l-103 -535h705l-25 -127h-723q-29 0 -116.5 -10t-130.5 -10q-285 0 -456 170t-171 438zM266 582q0 -209 130 -340t354 -131q35 0 71.5 4t55.5 8 l20 4l229 1186q-63 16 -141 16q-293 0 -506 -221t-213 -526z" /> +<glyph unicode="œ" horiz-adv-x="2074" d="M68 426q0 258 192.5 443.5t439.5 185.5q156 0 267.5 -76t158.5 -203h4q80 127 206 203t276 76q184 0 279.5 -102.5t95.5 -270.5q0 -35 -8.5 -79t-16.5 -71l-6 -24h-789q-8 -41 -8 -88q0 -141 87 -230.5t241 -89.5q82 0 166 32t127 63l43 30l45 -114q-18 -14 -52 -37 t-135.5 -61t-197.5 -38q-162 0 -275.5 74t-156.5 207h-4q-88 -129 -224.5 -205t-281.5 -76q-209 0 -341 126t-132 325zM211 430q0 -145 92 -237.5t238 -92.5q186 0 337.5 148.5t151.5 355.5q0 143 -92 233.5t-238 90.5q-190 0 -339.5 -146.5t-149.5 -351.5zM1194 623h643 q6 35 6 71q0 119 -63.5 181.5t-169.5 62.5q-133 0 -248 -84t-168 -231z" /> +<glyph unicode="Ÿ" horiz-adv-x="1155" d="M176 1440h152l202 -522l58 -173h4q59 94 119 170l405 525h172l-649 -826l-121 -614h-141l123 618zM545 1608l35 176h125l-33 -176h-127zM854 1608l35 176h127l-35 -176h-127z" /> +<glyph unicode="ˆ" horiz-adv-x="1032" d="M125 1540l219 244h154l123 -244h-129l-78 166h-4l-144 -166h-141z" /> +<glyph unicode="˜" horiz-adv-x="1032" d="M74 1546q45 240 217 240q45 0 78.5 -22.5t51 -51.5t42 -51.5t53.5 -22.5q78 0 105 142h110q-47 -240 -219 -240q-55 0 -93 37t-67.5 73t-64.5 36q-41 0 -66.5 -43.5t-36.5 -96.5h-110z" /> +<glyph unicode="–" horiz-adv-x="1441" d="M193 522l22 119h1022l-20 -119h-1024z" /> +<glyph unicode="—" horiz-adv-x="1851" d="M193 522l22 119h1432l-21 -119h-1433z" /> +<glyph unicode="‘" horiz-adv-x="440" d="M205 1108l182 350h117l-146 -350h-153z" /> +<glyph unicode="’" horiz-adv-x="432" d="M211 1108l147 350h152l-182 -350h-117z" /> +<glyph unicode="‚" horiz-adv-x="495" d="M-43 -184l145 352h154l-182 -352h-117z" /> +<glyph unicode="“" horiz-adv-x="684" d="M205 1108l182 350h117l-146 -350h-153zM451 1108l182 350h117l-148 -350h-151z" /> +<glyph unicode="”" horiz-adv-x="677" d="M211 1108l147 350h152l-182 -350h-117zM457 1108l145 350h154l-183 -350h-116z" /> +<glyph unicode="„" horiz-adv-x="741" d="M-43 -184l147 352h152l-182 -352h-117zM203 -184l145 352h154l-183 -352h-116z" /> +<glyph unicode="•" horiz-adv-x="823" d="M115 596q0 121 86 207t206.5 86t205.5 -86t85 -207t-85 -207t-205.5 -86t-206.5 86t-86 207z" /> +<glyph unicode="…" horiz-adv-x="1458" d="M51 0l33 170h164l-33 -170h-164zM532 0l33 170h164l-33 -170h-164zM1014 0l33 170h163l-32 -170h-164z" /> +<glyph unicode="‹" horiz-adv-x="688" d="M90 582l393 417h160l-407 -428l258 -413h-140z" /> +<glyph unicode="›" horiz-adv-x="686" d="M31 158l407 428l-258 413h139l265 -424l-394 -417h-159z" /> +<glyph unicode="€" horiz-adv-x="1200" d="M68 545l18 104h113q6 84 30 166h-108l18 105h125q102 240 316.5 392t459.5 152l213 -28l-57 -127q-72 20 -158 20q-193 0 -360.5 -113.5t-255.5 -295.5h627l-41 -105h-629q-27 -92 -33 -166h598l-39 -104h-555q12 -190 129 -312t326 -122q45 0 92 7t72 13l24 8l6 -135 q-88 -29 -200 -29q-262 0 -426 158t-174 412h-131z" /> +<glyph unicode="™" horiz-adv-x="2027" d="M184 1333v107h758v-107h-321v-790h-117v790h-320zM1016 543l71 897h107l236 -514q18 -39 28 -84h4q10 45 29 84l235 514h107l70 -897h-113l-51 608l2 59h-4l-230 -499h-94l-229 499h-4l2 -59l-52 -608h-114z" /> +<glyph unicode="" horiz-adv-x="1030" d="M0 1030h1030v-1030h-1030v1030z" /> +<glyph unicode="fi" horiz-adv-x="1136" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h611l-201 -1030h-139l176 911h-467l-178 -911h-140zM950 1266l37 174h150l-35 -174h-152z " /> +<glyph unicode="fl" horiz-adv-x="1167" d="M102 0l177 903h-129l22 119h129l10 53q23 117 75 198t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-11 -45h264l-22 -119h-262l-176 -903h-140zM741 182q0 35 9 74l231 1184h139l-227 -1166 q-6 -33 -6 -63q0 -41 16.5 -62.5t34.5 -25.5t45 -4l31 2l-27 -125q-23 -4 -47 -4q-78 0 -138.5 42t-60.5 148z" /> +<glyph unicode="ffi" horiz-adv-x="1798" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h525l8 43q23 119 75 200t118.5 115.5t118.5 48t104 13.5l75 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h610l-201 -1030h-139l176 911h-467l-178 -911h-139l178 911h-522l-178 -911h-140zM1612 1266l37 174h149l-35 -174h-151z" /> +<glyph unicode="ffl" horiz-adv-x="1828" d="M102 0l179 911h-129l22 119h129l8 43q23 119 75 200t118.5 115.5t119 48t103.5 13.5l76 -4l-27 -125q-18 4 -47 4t-56.5 -4t-63.5 -20.5t-65.5 -43t-56 -75.5t-38.5 -115l-9 -37h523l8 43q23 119 75 200t118.5 115.5t118.5 47.5q51 14 103 14l76 -4l-26 -125q-18 4 -47 4 t-56.5 -4t-63.5 -20.5t-65.5 -43t-56.5 -75.5t-39 -115l-8 -37h264l-23 -119h-262l-178 -911h-139l178 911h-520l-178 -911h-140zM1403 182q0 35 8 74l232 1184h139l-228 -1166q-6 -33 -6 -63q0 -41 16.5 -62.5t35 -25.5t45.5 -4l30 2l-26 -125q-23 -4 -47 -4 q-78 0 -138.5 42t-60.5 148z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.ttf b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.ttf Binary files differnew file mode 100755 index 000000000..58241a2e9 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.ttf diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.woff b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.woff Binary files differnew file mode 100755 index 000000000..95c94194f --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_300_Italic-webfont.woff diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.eot b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.eot Binary files differnew file mode 100755 index 000000000..2731833c7 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.eot diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.svg b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.svg new file mode 100755 index 000000000..dd240b802 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.svg @@ -0,0 +1,227 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +This is a custom SVG webfont generated by Fontspring. +</metadata> +<defs> +<font id="MuseoSans500" horiz-adv-x="1681" > +<font-face units-per-em="2048" ascent="1536" descent="-512" /> +<missing-glyph horiz-adv-x="526" /> +<glyph unicode=" " horiz-adv-x="526" /> +<glyph unicode="	" horiz-adv-x="526" /> +<glyph unicode=" " horiz-adv-x="526" /> +<glyph unicode="!" horiz-adv-x="651" d="M223 1446h205l-12 -1049h-178zM225 0v199h203v-199h-203z" /> +<glyph unicode=""" horiz-adv-x="700" d="M129 1085v385h156v-385h-156zM416 1085v385h155v-385h-155z" /> +<glyph unicode="#" horiz-adv-x="1470" d="M90 391l25 152h268l59 344h-264l25 149h266l72 410h166l-72 -410h317l72 410h166l-72 -410h268l-26 -149h-266l-62 -344h266l-26 -152h-264l-70 -391h-166l68 391h-318l-67 -391h-166l67 391h-266zM549 543h317l62 344h-318z" /> +<glyph unicode="$" horiz-adv-x="1159" d="M111 166l114 153q6 -6 17.5 -16t50.5 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 82 -73 142.5t-177.5 104.5t-208.5 95t-177 139t-73 209q0 150 105.5 261.5t275.5 135.5v193h146v-191q102 -8 189 -42.5t124 -67.5l37 -31l-92 -168q-14 14 -42 34.5 t-111 55.5t-165 35q-115 0 -188.5 -61.5t-73.5 -149.5q0 -57 39 -103t101.5 -79t138 -63.5t151.5 -68.5t138.5 -85t101.5 -121t39 -168q0 -158 -104.5 -270.5t-282.5 -132.5v-189h-146v189q-231 23 -389 170z" /> +<glyph unicode="%" horiz-adv-x="1558" d="M98 1167q0 125 90.5 214t219.5 89t220 -89t91 -214t-91 -214t-220 -89t-219.5 88t-90.5 215zM129 0l1106 1446h192l-1105 -1446h-193zM256 1167q0 -66 44 -108.5t107.5 -42.5t107.5 43t44 108q0 63 -44 108.5t-107.5 45.5t-107.5 -45.5t-44 -108.5zM840 279q0 125 91 214 t220 89q127 0 219 -89.5t92 -214t-92 -214t-219 -89.5q-131 0 -221 88.5t-90 215.5zM999 279q0 -66 43 -109t109 -43q63 0 107.5 44t44.5 107.5t-44.5 108.5t-108 45t-107.5 -45t-44 -108z" /> +<glyph unicode="&" horiz-adv-x="1400" d="M111 406q0 123 68.5 227t185.5 143v4q-8 2 -20.5 8.5t-45.5 31t-58.5 57t-46 92t-20.5 129.5q0 176 124 274t320 98q35 0 79 -6t71 -10l27 -6l-52 -162q-59 12 -108 12q-111 0 -183.5 -59t-72.5 -162q0 -39 11 -74.5t38 -72.5t82 -58.5t135 -21.5h268v197h199v-197h193 v-176h-193v-193q0 -240 -133 -373t-367 -133q-223 0 -362 123.5t-139 307.5zM317 416q0 -106 82 -180t213 -74q143 0 222 81t79 246v185h-276q-154 0 -237 -67.5t-83 -190.5z" /> +<glyph unicode="'" horiz-adv-x="415" d="M129 1085v385h158v-385h-158z" /> +<glyph unicode="(" horiz-adv-x="618" d="M150 696q0 430 237 809h174q-231 -387 -231 -811q0 -469 231 -889h-174q-237 395 -237 891z" /> +<glyph unicode=")" horiz-adv-x="618" d="M57 -195q231 420 232 889q0 424 -232 811h174q238 -379 238 -809q0 -496 -238 -891h-174z" /> +<glyph unicode="*" horiz-adv-x="956" d="M74 1085l53 172l272 -102l-14 291h186l-16 -291l274 102l56 -172l-281 -75v-4l180 -226l-145 -106l-158 241h-4l-160 -241l-147 106l182 226v4z" /> +<glyph unicode="+" horiz-adv-x="1398" d="M158 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458z" /> +<glyph unicode="," horiz-adv-x="522" d="M55 -207l127 422h203l-172 -422h-158z" /> +<glyph unicode="-" horiz-adv-x="966" d="M184 496v176h598v-176h-598z" /> +<glyph unicode="." horiz-adv-x="520" d="M156 0v211h209v-211h-209z" /> +<glyph unicode="/" horiz-adv-x="827" d="M74 -86l520 1610h176l-520 -1610h-176z" /> +<glyph unicode="0" horiz-adv-x="1280" d="M129 725q0 745 510 745q512 0 512 -745q0 -750 -512 -750q-510 0 -510 750zM336 725q0 -563 303 -563q305 0 305 563q0 559 -305 559q-303 0 -303 -559z" /> +<glyph unicode="1" horiz-adv-x="1001" d="M104 1110l347 336h180v-1270h315v-176h-831v176h319v934l2 90h-4q-16 -33 -70 -84l-135 -133z" /> +<glyph unicode="2" horiz-adv-x="1171" d="M113 111q0 121 52 224t131 170.5t171 135.5t171 122t131 127t52 150q0 106 -72.5 173t-187.5 67q-53 0 -103 -19.5t-83 -46t-58.5 -53t-37.5 -47.5l-11 -18l-149 100q6 10 16 29.5t50 66.5t88.5 83t129 65.5t172.5 29.5q201 0 329 -114.5t128 -300.5q0 -96 -38 -180 t-99 -144.5t-135 -116t-147.5 -104.5t-135 -98.5t-100.5 -109.5t-39 -126h717v-176h-932q-10 66 -10 111z" /> +<glyph unicode="3" horiz-adv-x="1161" d="M82 172l111 154q16 -18 44.5 -44t121 -70t184.5 -44q123 0 209 74.5t86 189.5q0 127 -96.5 196.5t-239.5 69.5h-101l-47 109l316 371l90 94v4q-43 -6 -123 -6h-490v176h865v-129l-394 -453q168 -18 296 -124.5t128 -299t-137 -329t-354 -136.5q-82 0 -161 20.5t-132 49.5 t-95 57.5t-61 49.5z" /> +<glyph unicode="4" horiz-adv-x="1241" d="M63 387v127l668 932h232v-887h196v-172h-196v-387h-199v387h-701zM287 559h477v526l8 144h-4q-33 -68 -72 -119l-409 -547v-4z" /> +<glyph unicode="5" horiz-adv-x="1153" d="M98 176l113 148q4 -6 13 -16.5t40 -38t64.5 -48t88 -37t111.5 -16.5q131 0 224.5 82t93.5 211t-94.5 213t-235.5 84q-63 0 -123.5 -18.5t-89.5 -34.5l-31 -19l-116 43l71 717h729v-176h-553l-34 -305l-11 -76h4q80 45 187 45q223 0 363.5 -136t140.5 -335 q0 -209 -146.5 -348.5t-365.5 -139.5q-248 0 -414 168z" /> +<glyph unicode="6" horiz-adv-x="1226" d="M121 657q0 143 40 283.5t116.5 261.5t204.5 194.5t290 73.5q76 0 145.5 -14t102.5 -31l33 -14l-66 -174q-92 47 -207 47q-186 0 -296.5 -142.5t-137.5 -342.5h4q45 61 134 99t186 38q203 0 329.5 -136t126.5 -341q0 -213 -131 -348.5t-333 -135.5q-236 0 -388.5 188.5 t-152.5 493.5zM334 561q0 -147 96 -273t229 -126q121 0 194 84t73 213q0 135 -81 220t-216 85q-121 0 -208 -61.5t-87 -141.5z" /> +<glyph unicode="7" horiz-adv-x="1083" d="M72 1270v176h966v-139l-653 -1307h-209l563 1139q18 37 39 69.5t33 48.5l12 15v4q-33 -6 -106 -6h-645z" /> +<glyph unicode="8" horiz-adv-x="1243" d="M117 418q0 76 28.5 146.5t74.5 120.5t74 74.5t54 43.5q-162 117 -162 289q0 156 117 267t334 111q203 0 329 -105t126 -282q0 -186 -172 -376q197 -121 196 -308q0 -174 -138 -299t-357.5 -125t-361.5 124t-142 319zM324 430q0 -121 88 -196.5t209 -75.5 q117 0 201.5 69.5t84.5 178.5q0 37 -18.5 70.5t-43 57t-71.5 51t-83 44t-97.5 44t-95.5 44.5q-174 -121 -174 -287zM387 1087q0 -29 10.5 -55t21.5 -46.5t39.5 -43t47 -35t59.5 -33t61.5 -29.5t71 -29.5t68.5 -29.5q127 127 127 285q0 98 -71.5 157.5t-186.5 59.5 q-117 0 -182.5 -57.5t-65.5 -143.5z" /> +<glyph unicode="9" horiz-adv-x="1226" d="M100 987q0 213 131 348t334 135q233 0 387 -188t154 -494q0 -143 -40 -283t-117 -261t-205 -195t-289 -74q-76 0 -146.5 14.5t-103.5 30.5l-31 15l66 176q92 -49 206 -49q186 0 297 142t138 343h-4q-43 -61 -133.5 -98t-186.5 -37q-203 0 -330 135t-127 340zM301 987 q0 -135 80 -220t217 -85q121 0 208 62.5t87 140.5q0 147 -96.5 273t-229.5 126q-123 0 -194.5 -84t-71.5 -213z" /> +<glyph unicode=":" horiz-adv-x="598" d="M195 0v211h208v-211h-208zM195 825v211h208v-211h-208z" /> +<glyph unicode=";" horiz-adv-x="600" d="M96 -207l109 422h205l-154 -422h-160zM207 825v211h209v-211h-209z" /> +<glyph unicode="<" horiz-adv-x="1142" d="M68 516v135l954 426v-182l-733 -309v-4l733 -310v-182z" /> +<glyph unicode="=" horiz-adv-x="1370" d="M197 309v160h977v-160h-977zM197 696v160h977v-160h-977z" /> +<glyph unicode=">" horiz-adv-x="1142" d="M121 90v182l731 310v4l-731 309v182l954 -426v-135z" /> +<glyph unicode="?" horiz-adv-x="1001" d="M66 1343q14 14 42.5 36t123 59t192.5 37q178 0 303 -104.5t125 -270.5q0 -94 -37 -169t-90 -125t-107.5 -96t-91.5 -103.5t-37 -125.5v-84h-194v97q0 86 36 156.5t87 119.5t102 94t87 101.5t36 119.5q0 86 -66.5 144.5t-166.5 58.5q-57 0 -115.5 -21.5t-89.5 -41.5 l-29 -23zM291 0v199h203v-199h-203z" /> +<glyph unicode="@" d="M121 493.5q0 317.5 217 537.5t530 220q276 0 404.5 -117.5t128.5 -297.5v-580h147v-150h-559q-186 0 -305 114t-119 274q0 158 118 270.5t306 112.5h221q-4 92 -91 151t-240 59q-236 0 -398 -175t-162 -418q0 -248 163 -418t419 -170v-162q-340 0 -560 216t-220 533.5z M766 496q0 -100 67.5 -170t170.5 -70h206v483h-202q-106 0 -174 -70.5t-68 -172.5z" /> +<glyph unicode="A" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> +<glyph unicode="B" horiz-adv-x="1298" d="M197 0v1446h505q186 0 303 -98.5t117 -270.5q0 -104 -48 -186t-132 -125v-4q111 -33 174.5 -129t63.5 -221q0 -197 -132.5 -304.5t-332.5 -107.5h-518zM399 176h326q115 0 181.5 66.5t66.5 179.5q0 111 -68.5 179.5t-181.5 68.5h-324v-494zM399 838h303q96 0 154.5 61.5 t58.5 157.5t-57 154.5t-160 58.5h-299v-432z" /> +<glyph unicode="C" horiz-adv-x="1478" d="M98 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53.5 44t-145 70t-219.5 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -10 -23.5 -25.5 t-70 -54.5t-115 -69.5t-155.5 -55.5t-197 -25q-322 0 -531 217t-209 539z" /> +<glyph unicode="D" horiz-adv-x="1515" d="M197 0v1446h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479zM399 176h263q248 0 393 143.5t145 405.5q0 260 -145.5 402.5t-392.5 142.5h-263v-1094z" /> +<glyph unicode="E" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874z" /> +<glyph unicode="F" horiz-adv-x="1067" d="M197 0v1446h796v-176h-594v-475h506v-177h-506v-618h-202z" /> +<glyph unicode="G" horiz-adv-x="1556" d="M100 725q0 315 211 530t527 215q96 0 186 -18t149.5 -43t104.5 -50.5t65 -43.5l21 -19l-102 -151q-18 16 -52 39.5t-140.5 62.5t-215.5 39q-248 0 -396.5 -158.5t-148.5 -398.5q0 -250 151.5 -408.5t381.5 -158.5q111 0 213 45t149 90l47 45v209h-235v176h420v-727h-179 v90l3 62h-5l-18 -19q-12 -12 -55 -43t-90.5 -53.5t-124 -42t-156.5 -19.5q-297 0 -504 212t-207 538z" /> +<glyph unicode="H" horiz-adv-x="1548" d="M197 0v1446h202v-635h750v635h203v-1446h-203v635h-750v-635h-202z" /> +<glyph unicode="I" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202z" /> +<glyph unicode="J" horiz-adv-x="1099" d="M61 487h201v-61q0 -137 66.5 -200.5t163 -63.5t161 61.5t64.5 194.5v852h-365v176h568v-1030q0 -219 -127 -330t-303.5 -111t-302.5 112t-126 329v71z" /> +<glyph unicode="K" horiz-adv-x="1275" d="M197 0v1446h202v-608h215l365 608h223l-420 -686v-4l447 -756h-230l-385 664h-215v-664h-202z" /> +<glyph unicode="L" horiz-adv-x="1083" d="M197 0v1446h202v-1270h648v-176h-850z" /> +<glyph unicode="M" horiz-adv-x="1773" d="M152 0l116 1446h213l332 -782l72 -195h4q39 115 72 195l331 782h213l117 -1446h-201l-71 911l-2 213h-5q-43 -133 -77 -213l-289 -651h-180l-287 651q-33 78 -78 217h-4q2 -129 -4 -217l-70 -911h-202z" /> +<glyph unicode="N" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202z" /> +<glyph unicode="O" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5z" /> +<glyph unicode="P" horiz-adv-x="1243" d="M197 0v1446h528q201 0 328 -124t127 -329t-128 -331.5t-327 -126.5h-326v-535h-202zM399 711h293q131 0 206 75.5t75 206.5q0 129 -75 203t-204 74h-295v-559z" /> +<glyph unicode="Q" horiz-adv-x="1705" d="M100 731q0 313 214 526t528 213q315 0 529 -213t214 -526q0 -270 -170 -477l172 -164l-119 -127l-168 168q-195 -156 -458 -156q-313 0 -527.5 219.5t-214.5 536.5zM309 731q0 -242 153.5 -405.5t379.5 -163.5q180 0 313 106l-170 166l119 127l166 -168q106 147 106 338 q0 238 -153.5 396.5t-380.5 158.5q-225 0 -379 -158.5t-154 -396.5z" /> +<glyph unicode="R" horiz-adv-x="1312" d="M197 0v1446h442q182 0 270 -33q113 -41 178.5 -145.5t65.5 -245.5q0 -139 -70.5 -245.5t-189.5 -145.5v-4q16 -18 43 -66l307 -561h-229l-305 575h-310v-575h-202zM399 752h291q119 0 187.5 70.5t68.5 191.5q0 160 -115 223q-61 33 -198 33h-234v-518z" /> +<glyph unicode="S" horiz-adv-x="1118" d="M86 166l115 153q6 -6 17 -16t50 -37.5t79 -48t101.5 -37t120.5 -16.5q106 0 178 57.5t72 155.5q0 63 -39 112.5t-100.5 84t-136 66.5t-149.5 68.5t-136 82t-100 116t-39 160.5q0 170 132 286.5t335 116.5q119 0 221 -36.5t145 -73.5l43 -35l-92 -168q-14 14 -41.5 34.5 t-110.5 55.5t-165 35q-113 0 -187.5 -61.5t-74.5 -149.5q0 -82 71.5 -139.5t175 -98t207 -90t175 -140.5t71.5 -220q0 -174 -125 -291t-334 -117q-86 0 -167 19.5t-135 47.5t-96 56.5t-61 48.5z" /> +<glyph unicode="T" horiz-adv-x="1214" d="M10 1270v176h1194v-176h-495v-1270h-203v1270h-496z" /> +<glyph unicode="U" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5z" /> +<glyph unicode="V" horiz-adv-x="1294" d="M12 1446h219l359 -1022l55 -199h4q29 121 56 199l362 1022h215l-532 -1446h-203z" /> +<glyph unicode="W" horiz-adv-x="1941" d="M68 1446h208l256 -1061q18 -78 27 -154h4q10 74 31 154l283 1061h180l282 -1061l31 -154h4q6 76 27 154l266 1061h209l-379 -1446h-235l-250 938q-25 92 -43 205h-4q-18 -113 -43 -205l-250 -938h-236z" /> +<glyph unicode="X" horiz-adv-x="1253" d="M45 0l457 745l-428 701h233l228 -391l92 -172h4q41 92 88 172l227 391h234l-428 -701l456 -745h-229l-262 444l-92 166h-4q-39 -86 -86 -166l-263 -444h-227z" /> +<glyph unicode="Y" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612z" /> +<glyph unicode="Z" horiz-adv-x="1243" d="M84 0v135l696 1004q25 37 50.5 69.5t39.5 48.5l15 15v4q-39 -6 -109 -6h-655v176h1016v-133l-697 -1006q-25 -35 -51.5 -67.5t-40.5 -46.5l-12 -17v-4q39 4 108 4h701v-176h-1061z" /> +<glyph unicode="[" horiz-adv-x="616" d="M207 -195v1700h338v-149h-164v-1399h164v-152h-338z" /> +<glyph unicode="\" horiz-adv-x="827" d="M57 1524h176l521 -1610h-176z" /> +<glyph unicode="]" horiz-adv-x="618" d="M72 -43h166v1399h-166v149h340v-1700h-340v152z" /> +<glyph unicode="^" horiz-adv-x="1255" d="M141 506l410 940h129l407 -940h-178l-295 721l-292 -721h-181z" /> +<glyph unicode="_" horiz-adv-x="1216" d="M57 0h1102v-160h-1102v160z" /> +<glyph unicode="`" horiz-adv-x="1021" d="M330 1806h213l149 -260h-168z" /> +<glyph unicode="a" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> +<glyph unicode="b" horiz-adv-x="1228" d="M156 0v1446h198v-473l-4 -88h4q4 6 11.5 18t36 43t62.5 53.5t94 42t128 19.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-339 -149.5q-66 0 -123.5 18.5t-92 45.5t-61 52.5t-37.5 43.5l-12 19h-4q4 -33 4 -78v-76h-188zM348 514q0 -150 77 -259.5t216 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> +<glyph unicode="c" horiz-adv-x="1120" d="M82 518q0 231 156.5 387t398.5 156q115 0 212 -38t138 -77l39 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-18 -17q-11 -11 -50 -40t-84 -50.5t-115.5 -40 t-146.5 -18.5q-244 0 -399.5 153.5t-155.5 389.5z" /> +<glyph unicode="d" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 125 -16.5t91 -41t59.5 -49t35.5 -41.5l9 -16h4q-4 31 -4 70v479h198v-1446h-188v98l2 70h-4q-4 -8 -11.5 -20.5t-35 -46t-63.5 -59.5t-97.5 -46.5t-132.5 -20.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> +<glyph unicode="e" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5z" /> +<glyph unicode="f" horiz-adv-x="688" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129z" /> +<glyph unicode="g" horiz-adv-x="1214" d="M88 542.5q0 229.5 121 374t332 144.5q213 0 311 -131l14 -23h4q-2 14 -2 33v96h191v-993q0 -123 -44 -217t-120 -148.5t-166 -81t-192 -26.5q-186 0 -355 86l66 156q129 -70 284 -70q147 0 237.5 70.5t90.5 220.5v76l2 65h-4q-96 -162 -307 -162t-337 150.5t-126 380z M289 547q0 -164 81 -263.5t220 -99.5q121 0 197.5 84t76.5 273q0 348 -293 348q-133 0 -207.5 -91t-74.5 -251z" /> +<glyph unicode="h" horiz-adv-x="1234" d="M156 1446h198v-531l-4 -86h4q41 90 141.5 161t241.5 71q356 0 357 -397v-664h-199v618q0 125 -41 193t-155.5 68t-205 -72t-122.5 -184q-16 -55 -17 -138v-485h-198v1446z" /> +<glyph unicode="i" horiz-adv-x="509" d="M154 1243v203h200v-203h-200zM156 0v1036h198v-1036h-198z" /> +<glyph unicode="j" horiz-adv-x="507" d="M-113 -248q18 -2 45 -2q35 0 68 8.5t71 28.5t61.5 69.5t23.5 120.5v1059h196v-1071q0 -121 -42 -205t-109.5 -119.5t-125 -49t-118.5 -13.5l-70 4v170zM154 1243v203h200v-203h-200z" /> +<glyph unicode="k" horiz-adv-x="1077" d="M156 0v1446h198v-791h146l282 381h226l-344 -456v-5l383 -575h-232l-311 487h-150v-487h-198z" /> +<glyph unicode="l" horiz-adv-x="542" d="M143 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l34 2v-176q-31 -4 -65 -4q-279 0 -279 291z" /> +<glyph unicode="m" horiz-adv-x="1871" d="M156 1036h192v-137l-4 -76h4q39 96 139.5 167t217.5 71q258 0 311 -236h4q45 98 146.5 167t222.5 69q342 0 342 -397v-664h-199v621q0 125 -38 192.5t-146 67.5q-104 0 -183.5 -76t-107.5 -189q-14 -59 -15 -143v-473h-198v621q0 123 -36 191.5t-144.5 68.5t-187.5 -78 t-109 -195q-12 -49 -13 -135v-473h-198v1036z" /> +<glyph unicode="n" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036z" /> +<glyph unicode="o" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5z" /> +<glyph unicode="p" horiz-adv-x="1228" d="M156 1036h182v-88l-4 -76h4q4 8 11 20.5t37 45.5t65.5 57.5t98 45t136.5 20.5q207 0 331 -149.5t124 -393.5t-132 -393.5t-337 -149.5q-63 0 -119.5 17.5t-91.5 43t-60.5 50.5t-35.5 41l-11 18h-4q4 -37 4 -90v-465h-198v1446zM348 514q0 -150 79 -259.5t214 -109.5 q127 0 213 99.5t86 271.5q0 168 -81 269.5t-212 101.5q-127 0 -213 -93.5t-86 -279.5z" /> +<glyph unicode="q" horiz-adv-x="1230" d="M88 518q0 246 131 394.5t338 148.5q68 0 126 -18.5t93 -43t61.5 -50t36.5 -44.5l11 -18h4q-2 31 -2 71v78h188v-1446h-198v473l4 91h-4q-4 -8 -11.5 -19.5t-35 -42.5t-62.5 -54.5t-94.5 -43t-128.5 -19.5q-209 0 -333 149.5t-124 393.5zM291 518q0 -168 81 -269.5 t212 -101.5q127 0 213 93.5t86 279.5q0 150 -77 259.5t-216 109.5q-127 0 -213 -99.5t-86 -271.5z" /> +<glyph unicode="r" horiz-adv-x="768" d="M156 0v1036h192v-180l-4 -78h4q37 119 124 195t204 76l51 -5v-196q-27 6 -57 6q-96 0 -176 -65.5t-115 -178.5q-25 -80 -25 -186v-424h-198z" /> +<glyph unicode="s" horiz-adv-x="917" d="M72 127l96 141q12 -14 36.5 -33.5t102.5 -53.5t158 -34q70 0 121 35t51 94q0 51 -55.5 90.5t-133 69t-155.5 65.5t-133.5 103.5t-55.5 161.5q0 137 106.5 216t268.5 79q100 0 184.5 -28.5t116.5 -57.5l33 -29l-80 -149q-10 10 -29.5 25.5t-86 41t-140.5 25.5 q-72 0 -121 -32t-49 -95q0 -51 55.5 -88t133 -66.5t155.5 -65.5t133.5 -103.5t55.5 -162.5q0 -131 -103.5 -216t-271.5 -85q-113 0 -211 38t-139 77z" /> +<glyph unicode="t" horiz-adv-x="733" d="M63 862v160h142v299h192v-299h250v-160h-250v-461q0 -59 16.5 -103t40 -68.5t55.5 -39t57.5 -18.5t51.5 -4l48 4v-176q-29 -4 -70 -4q-49 0 -94 6t-102.5 30.5t-99.5 64.5t-71.5 114t-29.5 172v483h-136z" /> +<glyph unicode="u" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398z" /> +<glyph unicode="v" horiz-adv-x="1028" d="M14 1036h211l252 -700q8 -25 16.5 -60.5t14.5 -58.5l4 -22h4l4 22q6 23 15.5 58.5t17.5 60.5l252 700h209l-383 -1036h-230z" /> +<glyph unicode="w" horiz-adv-x="1667" d="M35 1036h211l215 -727q6 -23 13 -51.5t9 -44.5l4 -14h5q10 57 26 110l225 725h183l223 -725l29 -110h4q8 57 24 110l217 727h209l-334 -1036h-219l-215 666l-28 112h-5q-12 -59 -28 -112l-213 -666h-221z" /> +<glyph unicode="x" horiz-adv-x="1040" d="M45 0l352 532l-334 504h228l192 -315l35 -62h4q18 35 35 62l193 315h227l-334 -504l352 -532h-225l-217 346l-31 57h-4q-16 -33 -31 -57l-217 -346h-225z" /> +<glyph unicode="y" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118z" /> +<glyph unicode="z" horiz-adv-x="1058" d="M80 0v115l522 655l86 96v4q-33 -4 -100 -4h-486v170h854v-114l-522 -658l-88 -94v-4q35 4 103 4h526v-170h-895z" /> +<glyph unicode="{" horiz-adv-x="716" d="M100 578v176q6 0 18.5 2t42 16t53.5 36.5t42 68t18 104.5v172q0 92 26 160.5t61.5 104.5t86 58.5t86 27.5t72.5 5l47 -2v-151h-28q-27 0 -50.5 -7.5t-55.5 -26.5t-51 -65.5t-19 -115.5v-211q0 -57 -17.5 -104.5t-42 -75t-48.5 -47t-42 -27.5l-16 -6v-4q6 -2 17 -6.5 t40 -25t50.5 -47t39.5 -74.5q19 -47 19 -107v-236q0 -70 19 -116t51 -65.5t55.5 -26.5t50.5 -7h28v-152q-18 -4 -47 -4q-37 0 -72.5 5.5t-86 28t-86 58t-61.5 105.5t-26 162v196q0 59 -18 103.5t-43 66t-50.5 34.5t-43.5 15z" /> +<glyph unicode="|" horiz-adv-x="579" d="M203 -326v1948h174v-1948h-174z" /> +<glyph unicode="}" horiz-adv-x="716" d="M63 -45h29q27 0 50.5 7t55 26.5t51 65.5t19.5 116v235q0 94 42 159t83 83l41 19v4q-6 2 -17 7t-40 25.5t-50.5 47t-40 74.5t-18.5 106v211q0 70 -19.5 116t-51 65t-55 26.5t-50.5 7.5h-29v151q18 2 48 2q37 0 72.5 -5t85.5 -27.5t86 -58.5t61.5 -104.5t25.5 -160.5v-172 q0 -172 138 -219l36 -8v-176q-6 0 -18 -2.5t-42 -16.5t-53.5 -35.5t-42 -65.5t-18.5 -104v-196q0 -92 -25.5 -162t-61.5 -105.5t-86 -58t-86 -28t-72 -5.5l-48 4v152z" /> +<glyph unicode="~" horiz-adv-x="1245" d="M137 418q0 174 75 260t212 86q72 0 130 -32t89 -68.5t76 -68.5t96 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130 30.5t-88.5 68.5t-77 68.5t-97.5 30.5q-72 0 -104.5 -57t-32.5 -133h-162z" /> +<glyph unicode="¡" horiz-adv-x="591" d="M193 -410l14 1049h178l12 -1049h-204zM193 838v198h202v-198h-202z" /> +<glyph unicode="¢" horiz-adv-x="1179" d="M109 723q0 227 116.5 388t315.5 187v172h145v-172q133 -20 232.5 -103t152.5 -214l-180 -70q-90 203 -273 203q-143 0 -225 -109.5t-82 -281.5q0 -176 80 -282.5t227 -106.5q184 0 273 203l180 -72q-55 -125 -152.5 -213t-232.5 -102v-177h-145v177q-199 27 -315.5 187.5 t-116.5 385.5z" /> +<glyph unicode="£" horiz-adv-x="1210" d="M115 0v176h125v477h-90v144h90v278q0 170 126 282.5t318 112.5q186 0 332 -120l10 -11l-117 -141q-98 88 -223 88q-111 0 -176.5 -62.5t-65.5 -156.5v-270h377v-144h-377v-477h666v-176h-995z" /> +<glyph unicode="¥" horiz-adv-x="1243" d="M57 1446h232l241 -451l88 -209h5q43 113 88 209l243 451h232l-340 -606h209v-129h-277l-55 -99v-75h332v-129h-332v-408h-205v408h-334v129h334v75l-55 99h-279v129h211z" /> +<glyph unicode="§" horiz-adv-x="905" d="M98 -23l90 138q84 -76 199 -76q94 0 155.5 56.5t61.5 158.5q0 41 -12 92l-135 770h161l144 -799q10 -55 10 -92q0 -156 -104.5 -254t-280.5 -98q-80 0 -151.5 26.5t-104.5 51.5zM129 1120q0 154 104.5 252t282.5 98q78 0 150.5 -26.5t105.5 -50.5l33 -27l-94 -131 q-82 70 -195 70q-96 0 -157.5 -53.5t-61.5 -153.5q0 -37 12 -82l140 -789h-164l-144 799q-12 47 -12 94z" /> +<glyph unicode="¨" horiz-adv-x="1021" d="M258 1599v207h164v-207h-164zM600 1599v207h164v-207h-164z" /> +<glyph unicode="©" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM449 721q0 168 111.5 288.5t291.5 120.5 q195 0 311 -165l23 -37l-125 -68q-8 14 -23.5 36t-67.5 57.5t-112 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l21 33l125 -68q-4 -8 -12.5 -21.5t-38 -49t-64.5 -62.5t-94 -48.5t-125 -21.5q-180 0 -291.5 120 t-111.5 290z" /> +<glyph unicode="ª" horiz-adv-x="864" d="M150 543v116h563v-116h-563zM152 981q0 225 385 225h20v13q0 129 -131 129q-39 0 -82 -14.5t-65 -28.5l-23 -15l-59 101q92 76 247 75q127 0 194 -66.5t67 -191.5v-411h-140v94h-4q-6 -12 -19.5 -30.5t-61.5 -48.5t-107 -30q-88 0 -154.5 53.5t-66.5 145.5zM299 991 q0 -37 27.5 -62.5t76.5 -25.5q68 0 111 56.5t43 125.5v17h-25q-233 0 -233 -111z" /> +<glyph unicode="«" horiz-adv-x="1138" d="M90 578l336 421h199l-336 -421l336 -420h-199zM502 578l336 421h198l-336 -421l336 -420h-198z" /> +<glyph unicode="¬" horiz-adv-x="1257" d="M123 696v160h977v-547h-166v387h-811z" /> +<glyph unicode="­" horiz-adv-x="882" d="M143 496v176h598v-176h-598z" /> +<glyph unicode="®" d="M111 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM260 723q0 -256 167 -432t411 -176q248 0 415.5 176t167.5 432t-168 432t-415 176q-244 0 -411 -176t-167 -432zM588 340v772h297q111 0 177 -64.5 t66 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 27 -43l147 -285h-160l-143 299h-125v-299h-145zM733 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> +<glyph unicode="¯" horiz-adv-x="1021" d="M250 1606v143h522v-143h-522z" /> +<glyph unicode="°" horiz-adv-x="796" d="M88 1167q0 125 90 214t219 89t220.5 -89t91.5 -214t-91.5 -214t-220.5 -89t-219 88t-90 215zM246 1167.5q0 -63.5 44 -107.5t107.5 -44t107.5 44t44 107.5t-44 108.5t-107.5 45t-107.5 -45t-44 -108.5z" /> +<glyph unicode="±" horiz-adv-x="1394" d="M156 504v160h458v503h168v-503h457v-160h-457v-504h-168v504h-458zM188 -195h1018v-159h-1018v159z" /> +<glyph unicode="²" horiz-adv-x="796" d="M96 940q0 96 45 171t108.5 121t127 86t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -172 -98l-100 92l11 16.5t32.5 35t56.5 44t79 36t101 16.5q127 0 211 -75t84 -194q0 -82 -42 -147.5t-103.5 -107t-123 -78.5t-105.5 -81t-48 -98h436v-135h-598q0 8 -2 23.5t-3 28 t-1 22.5z" /> +<glyph unicode="³" horiz-adv-x="796" d="M82 981l86 109q8 -12 24.5 -29t70.5 -45.5t114 -28.5q68 0 119 45t51 111q0 68 -54.5 106.5t-127.5 38.5h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -181q0 -121 -91 -209t-228 -88q-92 0 -167 33.5t-105 66.5z" /> +<glyph unicode="´" horiz-adv-x="1021" d="M330 1546l149 260h213l-196 -260h-166z" /> +<glyph unicode="µ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> +<glyph unicode="μ" horiz-adv-x="1267" d="M170 -410v1446h199v-618q0 -125 40 -191.5t152 -66.5q154 0 246 114.5t92 276.5v485h199v-1036h-193v141l4 72h-6q-4 -10 -12 -25.5t-40 -56.5t-72 -72.5t-108.5 -57.5t-148.5 -26q-131 2 -186 64h-4q14 -100 14 -160v-289h-176z" /> +<glyph unicode="¶" horiz-adv-x="1208" d="M88 970.5q0 200.5 142.5 338t340.5 137.5h557v-176h-401v-1372h-154v596q-199 0 -342 138t-143 338.5zM854 -102v1255h152v-1255h-152z" /> +<glyph unicode="·" horiz-adv-x="563" d="M180 489v211h203v-211h-203z" /> +<glyph unicode="¸" horiz-adv-x="1021" d="M350 -291q41 -14 86 -14q98 0 98.5 63.5t-108.5 63.5l-37 -2l60 227l100 -20v-17l-25 -112q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119z" /> +<glyph unicode="¹" horiz-adv-x="796" d="M133 1550l217 211h139v-760h187v-135h-531v135h191v510l4 54h-4q-8 -18 -37 -45l-72 -70z" /> +<glyph unicode="º" horiz-adv-x="956" d="M127 1130q0 145 101.5 241.5t246.5 96.5q147 0 249.5 -96t102.5 -242q0 -150 -101 -247t-248.5 -97t-249 97t-101.5 247zM160 543v116h639v-116h-639zM274 1130q0 -92 58.5 -152t144.5 -60q84 0 142.5 60t58.5 152q0 90 -58.5 148.5t-142.5 58.5q-86 0 -144.5 -58.5 t-58.5 -148.5z" /> +<glyph unicode="»" horiz-adv-x="1140" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199zM516 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> +<glyph unicode="¼" horiz-adv-x="1980" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM535 0l688 1446h153l-688 -1446h-153zM1167 219v103l412 573h166v-541h125v-135h-125v-219h-152v219h-426zM1335 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> +<glyph unicode="½" horiz-adv-x="1968" d="M109 1235l217 211h139v-760h186v-135h-530v135h190v510l4 53h-4q-8 -18 -37 -45l-71 -69zM539 0l688 1446h153l-688 -1446h-153zM1229 74q0 96 45 170.5t108.5 121t127 86.5t108.5 87t45 102q0 57 -42 95t-105 38q-96 -4 -173 -98l-100 92q4 6 11.5 16.5t33 35t56 44 t78.5 35.5t102 16q127 0 211 -74.5t84 -193.5q0 -82 -42 -147.5t-103.5 -107.5t-123 -79t-105.5 -81t-48 -97h436v-135h-598q0 8 -2 23.5t-3 28t-1 22.5z" /> +<glyph unicode="¾" horiz-adv-x="2004" d="M82 666l86 108q8 -12 24.5 -28.5t70.5 -45t114 -28.5q68 0 119 45t51 110q0 68 -54.5 107t-127.5 39h-70l-33 78l182 211l50 49v4q-39 -6 -74 -6h-289v137h555v-98l-223 -258q102 -14 170.5 -81t68.5 -182q0 -121 -91 -209t-228 -88q-92 0 -167 34t-105 67zM559 0 l688 1446h154l-688 -1446h-154zM1192 219v103l412 573h165v-541h125v-135h-125v-219h-151v219h-426zM1360 354h258v252l6 119h-4q-29 -55 -59 -98l-201 -269v-4z" /> +<glyph unicode="¿" horiz-adv-x="921" d="M80 -57q0 94 37 168.5t90 125t107.5 96.5t91 104.5t36.5 125.5v76h193v-88q0 -86 -36 -157.5t-86 -120t-101.5 -93.5t-87 -101t-35.5 -120q0 -86 66.5 -145.5t166.5 -59.5q57 0 115.5 22.5t87.5 43.5l31 22l108 -141q-6 -6 -16 -14.5t-45 -31t-74 -39.5t-98.5 -31.5 t-122.5 -14.5q-178 0 -303 103.5t-125 269.5zM438 838v198h203v-198h-203z" /> +<glyph unicode="À" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM369 1806h213l149 -260h-168zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> +<glyph unicode="Á" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM553 1546l149 260h213l-196 -260h-166z" /> +<glyph unicode="Â" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM358 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205z" /> +<glyph unicode="Ã" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM299 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143zM422 584h438l-160 458l-55 205h-4 q-33 -131 -57 -205z" /> +<glyph unicode="Ä" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM391 1599v207h164v-207h-164zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM733 1599v207h164v-207h-164z" /> +<glyph unicode="Å" horiz-adv-x="1286" d="M16 0l521 1446h213l520 -1446h-211l-146 416h-544l-144 -416h-209zM422 584h438l-160 458l-55 205h-4q-33 -131 -57 -205zM469 1673q0 70 51 112t123 42t123 -42t51 -112q0 -68 -51 -109.5t-123 -41.5t-123 41.5t-51 109.5zM575 1673q0 -29 18.5 -48t49.5 -19 q29 0 48.5 19.5t19.5 47.5q0 33 -19.5 52.5t-48.5 19.5q-31 0 -49.5 -19.5t-18.5 -52.5z" /> +<glyph unicode="Æ" horiz-adv-x="1798" d="M8 0l598 1446h1057v-176h-639v-453h520v-176h-520v-465h674v-176h-875v643h-346l-258 -643h-211zM545 811h278v459h-94z" /> +<glyph unicode="Ç" horiz-adv-x="1482" d="M102 731q0 315 210 527t526 212q98 0 188 -19t148.5 -47t103.5 -56.5t65 -49.5l21 -18l-100 -152q-18 18 -53 44t-145 70t-220 44q-238 0 -386.5 -158.5t-148.5 -394.5q0 -238 150.5 -404.5t386.5 -166.5q121 0 232.5 47t162.5 94l51 47l109 -145q-8 -8 -22.5 -23.5 t-65.5 -52.5t-108.5 -66.5t-147.5 -56t-187 -31.5l-16 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 160q-291 27 -475.5 238.5t-184.5 512.5z" /> +<glyph unicode="È" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM365 1806h213l149 -260h-168z" /> +<glyph unicode="É" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM551 1546l149 260h213l-196 -260h-166z" /> +<glyph unicode="Ê" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM356 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> +<glyph unicode="Ë" horiz-adv-x="1173" d="M197 0v1446h839v-176h-637v-453h519v-176h-519v-465h672v-176h-874zM387 1599v207h164v-207h-164zM729 1599v207h164v-207h-164z" /> +<glyph unicode="Ì" horiz-adv-x="595" d="M25 1806h213l149 -260h-168zM197 0v1446h202v-1446h-202z" /> +<glyph unicode="Í" horiz-adv-x="595" d="M197 0v1446h202v-1446h-202zM211 1546l149 260h213l-196 -260h-166z" /> +<glyph unicode="Î" horiz-adv-x="595" d="M14 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM197 0v1446h202v-1446h-202z" /> +<glyph unicode="Ï" horiz-adv-x="595" d="M47 1599v207h164v-207h-164zM197 0v1446h202v-1446h-202zM389 1599v207h164v-207h-164z" /> +<glyph unicode="Ð" horiz-adv-x="1554" d="M115 639v168h121v639h479q336 0 534.5 -191.5t198.5 -529.5q0 -340 -198.5 -532.5t-534.5 -192.5h-479v639h-121zM438 176h262q248 0 393.5 143.5t145.5 405.5q0 260 -145.5 402.5t-393.5 142.5h-262v-463h305v-168h-305v-463z" /> +<glyph unicode="Ñ" horiz-adv-x="1550" d="M197 0v1446h200l643 -940q25 -35 54.5 -87t48.5 -87l18 -35h4q-14 129 -14 209v940h203v-1446h-199l-645 938q-53 80 -121 211h-4q14 -129 14 -211v-938h-202zM430 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260 q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> +<glyph unicode="Ò" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM567 1806h213l150 -260h-168z " /> +<glyph unicode="Ó" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM754 1546l149 260h213 l-196 -260h-166z" /> +<glyph unicode="Ô" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM557 1546l180 260h207 l180 -260h-174l-108 164h-4l-107 -164h-174z" /> +<glyph unicode="Õ" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM498 1548q0 260 209 260 q59 0 104 -34.5t82 -69.5t72 -35q41 0 60 40t19 93h144q0 -260 -209 -260q-59 0 -104.5 35t-82 69.5t-71.5 34.5q-80 0 -80 -133h-143z" /> +<glyph unicode="Ö" d="M98 733q0 311 215 524t528.5 213t527.5 -213t214 -524q0 -319 -214 -538.5t-527.5 -219.5t-528.5 219.5t-215 538.5zM307 733q0 -242 155.5 -406.5t379 -164.5t378 165t154.5 406q0 236 -154.5 394.5t-378 158.5t-379 -158.5t-155.5 -394.5zM590 1599v207h164v-207h-164z M932 1599v207h164v-207h-164z" /> +<glyph unicode="×" horiz-adv-x="1320" d="M129 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> +<glyph unicode="Ø" horiz-adv-x="1687" d="M102 733q0 311 215 524t529 213q205 0 379 -100l94 129l100 -69l-94 -132q123 -102 192.5 -248.5t69.5 -316.5q0 -319 -214 -538.5t-527 -219.5q-217 0 -393 109l-97 -135l-102 69l100 142q-119 104 -185.5 252.5t-66.5 320.5zM311 733q0 -246 160 -411l641 890 q-121 74 -266 74q-223 0 -379 -158.5t-156 -394.5zM567 242q125 -80 279 -80q223 0 377.5 165t154.5 406q0 248 -168 406z" /> +<glyph unicode="Ù" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM471 1806h213l150 -260h-168z" /> +<glyph unicode="Ú" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM655 1546l150 260h213l-197 -260h-166z" /> +<glyph unicode="Û" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM461 1546l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> +<glyph unicode="Ü" horiz-adv-x="1490" d="M176 512v934h203v-934q0 -164 98 -257t266 -93q170 0 269.5 93t99.5 261v930h203v-934q0 -240 -158 -388.5t-411.5 -148.5t-411.5 148.5t-158 388.5zM494 1599v207h163v-207h-163zM836 1599v207h163v-207h-163z" /> +<glyph unicode="Ý" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM514 1546l150 260h213l-197 -260h-166z" /> +<glyph unicode="Þ" horiz-adv-x="1243" d="M197 1446h200v-246h328q201 0 327 -124t126 -328.5t-127 -331.5t-328 -127h-326v-289h-200v1446zM397 465h295q131 0 206 75.5t75 207.5q0 129 -75 202.5t-204 73.5h-297v-559z" /> +<glyph unicode="ß" horiz-adv-x="1204" d="M156 0v1085q0 180 131 282.5t311 102.5q168 0 278.5 -95t110.5 -234q0 -68 -31.5 -126.5t-70.5 -93t-71 -77.5t-32 -84q0 -35 38 -72t92.5 -73.5t107.5 -78.5t91 -104.5t38 -134.5q0 -147 -102.5 -229t-247.5 -82q-84 0 -157 14t-103 29l-31 16v176q115 -63 266 -63 q74 0 123 36.5t49 110.5q0 55 -57.5 109.5t-126 94.5t-125.5 105.5t-57 139.5q0 57 32.5 110.5t70.5 89t70.5 86t32.5 99.5q0 66 -51 112.5t-143 46.5q-98 0 -168 -59t-70 -168v-1071h-198z" /> +<glyph unicode="à" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M264 1446h213l150 -260h-168zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> +<glyph unicode="á" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM446 1186l150 260h213l-197 -260h-166z" /> +<glyph unicode="â" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M252 1186l180 260h207l180 -260h-174l-108 164h-5l-106 -164h-174zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> +<glyph unicode="ã" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M193 1188q0 260 208 260q59 0 104.5 -35t82.5 -69.5t71 -34.5q41 0 60.5 40t19.5 93h144q0 -260 -209 -260q-59 0 -104.5 34.5t-82 69.5t-71.5 35q-80 0 -80 -133h-143zM272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197z" /> +<glyph unicode="ä" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM285 1239v207h164v-207h-164zM627 1239v207h164v-207h-164z" /> +<glyph unicode="å" horiz-adv-x="1081" d="M72 291q0 356 624 356h45v19q0 227 -227 227q-156 -2 -289 -100l-82 145q16 14 48 34.5t132.5 54.5t206.5 34q197 0 303.5 -104.5t106.5 -301.5v-655h-184v98l4 82h-4l-12 -22q-7 -14 -34.5 -49t-61.5 -62t-94 -49.5t-130 -22.5q-143 0 -247.5 84.5t-104.5 231.5z M272 301q0 -68 51.5 -117t143.5 -49q119 0 197.5 103.5t78.5 226.5v33h-51q-420 0 -420 -197zM362 1313q0 70 51.5 111.5t123 41.5t123 -42t51.5 -111q0 -68 -51.5 -110t-123 -42t-123 42t-51.5 110zM469 1313q0 -29 18.5 -48.5t49.5 -19.5q29 0 48 19.5t19 48.5 q0 33 -19.5 52t-47.5 19q-31 0 -49.5 -19t-18.5 -52z" /> +<glyph unicode="æ" horiz-adv-x="1769" d="M74 291q0 92 45 160.5t109.5 104.5t155.5 58.5t160.5 27.5t147.5 5h51v19q0 227 -233 227q-70 0 -140.5 -24.5t-107.5 -49.5l-37 -26l-80 145q6 4 17.5 13.5t48.5 29.5t78 36.5t105.5 30t129.5 13.5q260 0 344 -182h4q123 182 379 182q203 0 317.5 -142.5t114.5 -361.5 l-4 -59h-743q8 -170 103.5 -260.5t240.5 -90.5q80 0 156.5 30t113.5 61l37 28l82 -143q-16 -16 -49 -41t-137.5 -66t-212.5 -41q-154 0 -268.5 69t-178.5 192h-4q-10 -29 -32.5 -65t-67.5 -84t-121 -80t-170 -32q-150 0 -252 85.5t-102 230.5zM276 301q0 -70 50.5 -118 t144.5 -48q121 0 197.5 103.5t76.5 228.5v31h-96q-373 0 -373 -197zM944 647h539q-4 125 -74 190.5t-172 65.5q-117 0 -195 -64.5t-98 -191.5z" /> +<glyph unicode="ç" horiz-adv-x="1122" d="M84 518q0 231 156.5 387t398.5 156q115 0 212 -38t136 -77l41 -37l-94 -139q-12 12 -36 32.5t-98.5 53.5t-152.5 33q-156 0 -258 -104.5t-102 -264.5t103.5 -266.5t262.5 -106.5q86 0 166 35t117 70l37 35l80 -146l-17 -16q-10 -10 -47 -38t-79 -49.5t-108.5 -41 t-137.5 -21.5l-17 -77q66 -8 107 -47t41 -103q0 -88 -60.5 -130t-148.5 -42l-113 14v119q41 -14 86 -14q98 0 98 63.5t-108 63.5l-37 -2l41 162q-209 29 -339 176t-130 360z" /> +<glyph unicode="è" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM330 1446h213l149 -260h-168z" /> +<glyph unicode="é" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM514 1186l150 260h213l-197 -260h-166z" /> +<glyph unicode="ê" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM317 1186l181 260h207l180 -260h-174l-109 164h-4l-106 -164h-175z" /> +<glyph unicode="ë" horiz-adv-x="1136" d="M84 518q0 244 146.5 393.5t371.5 149.5q211 0 330 -137.5t119 -348.5l-7 -86h-755q8 -164 109.5 -253t246.5 -89q164 0 299 115l8 6l82 -145q-16 -16 -49 -41t-137.5 -66t-214.5 -41q-242 0 -395.5 155t-153.5 388zM295 639h553q-4 129 -75 196.5t-175 67.5 q-117 0 -200 -69.5t-103 -194.5zM350 1239v207h164v-207h-164zM692 1239v207h164v-207h-164z" /> +<glyph unicode="ì" horiz-adv-x="509" d="M-18 1446h213l149 -260h-168zM156 0v1036h198v-1036h-198z" /> +<glyph unicode="í" horiz-adv-x="509" d="M156 0v1036h198v-1036h-198zM168 1186l149 260h213l-196 -260h-166z" /> +<glyph unicode="î" horiz-adv-x="509" d="M-27 1186l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174zM156 0v1036h198v-1036h-198z" /> +<glyph unicode="ï" horiz-adv-x="509" d="M4 1239v207h164v-207h-164zM156 0v1036h198v-1036h-198zM346 1239v207h164v-207h-164z" /> +<glyph unicode="ð" horiz-adv-x="1206" d="M88 481q0 193 130 333t355 140q158 -2 252 -86h4q-61 164 -223 273l-370 -164l-21 127l254 113q-125 63 -264 94l55 162q238 -53 424 -164l285 125l18 -125l-188 -86q295 -246 295 -660q0 -109 -30 -209t-89.5 -187t-163.5 -139.5t-238 -52.5q-223 0 -354 150.5 t-131 355.5zM289 477q0 -135 76.5 -232.5t212.5 -97.5q80 0 142 34t98 91.5t54.5 122t18.5 133.5q0 117 -79 192t-210 75q-150 0 -231.5 -93.5t-81.5 -224.5z" /> +<glyph unicode="ñ" horiz-adv-x="1234" d="M156 1036h192v-137l-4 -76h4q41 88 139.5 163t249.5 75q356 0 357 -397v-664h-199v618q0 125 -41 193t-156 68q-117 0 -206 -71t-121 -183q-16 -55 -17 -140v-485h-198v1036zM297 1188q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143 q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> +<glyph unicode="ò" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM365 1446h213 l149 -260h-168z" /> +<glyph unicode="ó" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM551 1186 l149 260h213l-196 -260h-166z" /> +<glyph unicode="ô" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM356 1186 l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> +<glyph unicode="õ" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM295 1188 q0 260 209 260q59 0 104 -35t82 -69.5t72 -34.5q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 34.5t-82 69.5t-72 35q-80 0 -80 -133h-143z" /> +<glyph unicode="ö" horiz-adv-x="1277" d="M80 520.5q0 233.5 161.5 387t397 153.5t397.5 -153.5t162 -387t-163 -389.5t-396 -156t-396 156t-163 389.5zM283 520q0 -160 104.5 -266.5t251.5 -106.5q150 0 253 105.5t103 267.5q0 160 -103.5 264.5t-252.5 104.5q-147 0 -251.5 -104.5t-104.5 -264.5zM387 1239v207 h164v-207h-164zM729 1239v207h164v-207h-164z" /> +<glyph unicode="÷" horiz-adv-x="1300" d="M133 504v160h1034v-160h-1034zM553 90v186h192v-186h-192zM553 891v186h192v-186h-192z" /> +<glyph unicode="ø" horiz-adv-x="1277" d="M80 520q0 233 161.5 387t397.5 154q147 0 276 -68l82 113l97 -70l-80 -110q184 -158 184 -406q0 -233 -163 -389t-396 -156q-137 0 -262 60l-80 -113l-98 72l75 106q-194 158 -194 420zM283 520q0 -160 102 -266l426 592q-82 43 -172 43q-147 0 -251.5 -104.5 t-104.5 -264.5zM483 182q74 -35 156 -35q150 0 253 105.5t103 267.5q0 147 -92 250z" /> +<glyph unicode="ù" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM332 1446h213l149 -260h-168z" /> +<glyph unicode="ú" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM516 1186l150 260h213l-197 -260h-166z" /> +<glyph unicode="û" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM322 1186l180 260h207l180 -260h-174l-109 164h-4l-106 -164h-174z" /> +<glyph unicode="ü" horiz-adv-x="1224" d="M141 373v663h199v-618q0 -125 40 -191.5t155 -66.5q152 0 243.5 114.5t91.5 276.5v485h199v-1036h-192v137l4 76h-4q-39 -90 -140.5 -164t-240.5 -74q-355 1 -355 398zM354 1239v207h164v-207h-164zM696 1239v207h164v-207h-164z" /> +<glyph unicode="ý" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM440 1186l150 260h213l-197 -260h-166z" /> +<glyph unicode="þ" horiz-adv-x="1228" d="M156 -410v1856h198v-471l-2 -86h4q2 2 18.5 22.5t30 36t43 38t60.5 37.5t77 26.5t97 11.5q209 0 335 -151.5t126 -391t-130 -391.5t-337 -152q-66 0 -124 17.5t-93 43t-59.5 50.5t-34.5 41l-11 18h-4q4 -37 4 -90v-465h-198zM348 516q0 -162 81 -265.5t216 -103.5 q127 0 211 102.5t84 268.5q0 164 -80 267.5t-211 103.5q-129 0 -215 -92.5t-86 -280.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1044" d="M4 1036h223l260 -678l39 -125h4q16 70 35 123l252 680h215l-485 -1222q-47 -117 -136 -180.5t-200 -63.5q-51 0 -101.5 16.5t-74.5 32.5l-25 14l70 152q57 -43 121 -43q123 0 186 152l51 118zM276 1239v207h164v-207h-164zM618 1239v207h164v-207h-164z" /> +<glyph unicode="Œ" horiz-adv-x="1966" d="M98 725q0 313 214 526t534 213q53 0 136 -9t116 -9h733v-176h-639v-453h520v-176h-520v-465h676v-176h-768q-33 0 -117 -9t-137 -9q-317 0 -532.5 214t-215.5 529zM307 725q0 -242 151.5 -404.5t387.5 -162.5q37 0 72.5 3t54.5 7l18 4v1102q-63 16 -145 16 q-236 0 -387.5 -162.5t-151.5 -402.5z" /> +<glyph unicode="œ" horiz-adv-x="2048" d="M82 516q0 240 160.5 392.5t392.5 152.5q301 0 448 -246h4q131 246 426 246q211 0 330 -137.5t119 -348.5l-6 -86h-756q12 -164 112.5 -253t243.5 -89q164 0 299 115l9 6l82 -145q-16 -16 -49 -41t-137.5 -66t-215.5 -41q-313 0 -452 252h-5q-145 -252 -452 -252 q-231 0 -392 150.5t-161 390.5zM285 516q0 -164 102 -266.5t251.5 -102.5t253 103.5t103.5 271.5q0 162 -104.5 264.5t-251.5 102.5t-250.5 -103.5t-103.5 -269.5zM1206 639h553q-4 127 -73.5 195.5t-174.5 68.5q-119 0 -202 -69.5t-103 -194.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1204" d="M16 1446h230l268 -475l88 -183h4q43 100 88 183l264 475h230l-483 -834v-612h-203v612zM344 1599v207h164v-207h-164zM686 1599v207h164v-207h-164z" /> +<glyph unicode="ˆ" horiz-adv-x="1021" d="M227 1546l181 260h206l181 -260h-174l-109 164h-4l-107 -164h-174z" /> +<glyph unicode="˜" horiz-adv-x="1021" d="M166 1548q0 260 209 260q59 0 104 -34.5t82 -69.5t72 -35q41 0 60.5 40t19.5 93h143q0 -260 -209 -260q-59 0 -104 35t-82 69.5t-72 34.5q-80 0 -80 -133h-143z" /> +<glyph unicode="–" horiz-adv-x="1445" d="M184 504v160h1078v-160h-1078z" /> +<glyph unicode="—" horiz-adv-x="1855" d="M184 504v160h1487v-160h-1487z" /> +<glyph unicode="‘" horiz-adv-x="464" d="M100 1069l136 399h145l-88 -399h-193z" /> +<glyph unicode="’" horiz-adv-x="448" d="M104 1071l89 399h192l-133 -399h-148z" /> +<glyph unicode="‚" horiz-adv-x="499" d="M86 -184l88 399h186l-133 -399h-141z" /> +<glyph unicode="“" horiz-adv-x="755" d="M100 1069l136 399h147l-88 -399h-195zM389 1069l135 399h148l-88 -399h-195z" /> +<glyph unicode="”" horiz-adv-x="737" d="M104 1071l89 399h194l-135 -399h-148zM393 1071l88 399h195l-133 -399h-150z" /> +<glyph unicode="„" horiz-adv-x="784" d="M86 -184l88 399h186l-133 -399h-141zM369 -184l88 399h188l-133 -399h-143z" /> +<glyph unicode="•" horiz-adv-x="841" d="M104 596q0 133 93.5 225t224.5 92t223 -93t92 -224t-92 -224t-223 -93t-224.5 92t-93.5 225z" /> +<glyph unicode="…" horiz-adv-x="1576" d="M156 0v211h202v-211h-202zM686 0v211h205v-211h-205zM1219 0v211h202v-211h-202z" /> +<glyph unicode="‹" horiz-adv-x="727" d="M90 578l336 421h199l-336 -421l336 -420h-199z" /> +<glyph unicode="›" horiz-adv-x="727" d="M102 158l336 420l-336 421h199l336 -421l-336 -420h-199z" /> +<glyph unicode="€" horiz-adv-x="1210" d="M78 528v129h112q-8 82 0 148h-112v131h137q61 236 251.5 385t440.5 149q51 0 102.5 -6t77.5 -12l27 -6l-49 -186q-76 23 -162 22q-170 0 -296 -94t-177 -252h576l-27 -131h-578q-12 -68 -2 -148h553l-26 -129h-492q47 -162 177 -261t300 -99q45 0 92.5 6t69.5 14l25 7 l39 -185q-98 -35 -230 -35q-258 0 -447.5 153t-246.5 400h-135z" /> +<glyph unicode="™" horiz-adv-x="1925" d="M47 1309v137h778v-137h-311v-764h-156v764h-311zM891 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l2 -62l-43 -538h-153z" /> +<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> +<glyph unicode="fi" horiz-adv-x="1198" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h634v-1036h-198v877h-436v-877h-197v877h-129zM842 1243v203h200v-203h-200z" /> +<glyph unicode="fl" horiz-adv-x="1230" d="M82 862v160h129v49q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-45h245v-160h-245v-862h-197v862h-129zM831 283v1163h199v-1129q0 -86 28.5 -116.5t82.5 -30.5l35 2v-176q-31 -4 -66 -4 q-279 0 -279 291z" /> +<glyph unicode="ffi" horiz-adv-x="1886" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h635v-1036h-199v877h-436v-877h-197v877h-491v-877h-197v877h-129zM1530 1243v203h201v-203h-201z" /> +<glyph unicode="ffl" horiz-adv-x="1918" d="M82 877v159h129v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5t-59 -67.5t-22.5 -115v-31h491v35q0 98 28.5 171t69.5 113t98.5 63.5t101.5 30.5t91 7l76 -6v-170q-20 4 -51 4q-35 0 -67 -7t-68.5 -27.5 t-59 -67.5t-22.5 -115v-31h245v-159h-245v-877h-197v877h-491v-877h-197v877h-129zM1520 283v1163h198v-1129q0 -86 29 -116.5t82 -30.5l35 2v-176q-31 -4 -66 -4q-278 0 -278 291z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.ttf b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.ttf Binary files differnew file mode 100755 index 000000000..d23f991ce --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.ttf diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.woff b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.woff Binary files differnew file mode 100755 index 000000000..c1f85a061 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500-webfont.woff diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.eot b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.eot Binary files differnew file mode 100755 index 000000000..e60c7e02e --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.eot diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.svg b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.svg new file mode 100755 index 000000000..28df57c2f --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.svg @@ -0,0 +1,227 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata> +This is a custom SVG webfont generated by Fontspring. +</metadata> +<defs> +<font id="MuseoSans500Italic" horiz-adv-x="1073" > +<font-face units-per-em="2048" ascent="1536" descent="-512" /> +<missing-glyph horiz-adv-x="526" /> +<glyph unicode=" " horiz-adv-x="526" /> +<glyph unicode="	" horiz-adv-x="526" /> +<glyph unicode=" " horiz-adv-x="526" /> +<glyph unicode="!" horiz-adv-x="643" d="M100 0l41 201h205l-39 -201h-207zM190 397l191 1049h207l-219 -1049h-179z" /> +<glyph unicode=""" horiz-adv-x="694" d="M217 1085l74 385h155l-73 -385h-156zM504 1085l76 385h155l-76 -385h-155z" /> +<glyph unicode="#" horiz-adv-x="1462" d="M43 391l53 152h264l129 344h-262l56 149h260l151 410h170l-151 -410h319l152 410h170l-152 -410h262l-55 -149h-262l-129 -344h262l-55 -152h-262l-144 -391h-170l144 391h-318l-143 -391h-170l143 391h-262zM530 543h318l129 344h-318z" /> +<glyph unicode="$" horiz-adv-x="1159" d="M27 166l129 143q14 -16 40.5 -40.5t118 -64.5t191.5 -40q115 0 206 68.5t91 181.5q0 70 -60.5 124t-145.5 96t-171 90t-146.5 128t-60.5 186q0 168 135 291t330 139l37 189h143l-37 -193q201 -25 316 -135l6 -6l-115 -149q-12 12 -36.5 30.5t-103.5 48t-163 29.5 q-125 0 -216 -73.5t-91 -170.5q0 -63 60.5 -114.5t146.5 -93.5t171 -90t145.5 -132t60.5 -194q0 -172 -134.5 -299t-334.5 -138l-37 -186h-144l35 193q-221 31 -354 168z" /> +<glyph unicode="%" horiz-adv-x="1570" d="M25 0l1366 1446h202l-1366 -1446h-202zM199 1133q0 129 109.5 233t246.5 104q123 0 199.5 -75.5t76.5 -194.5q0 -131 -109.5 -233.5t-246.5 -102.5q-125 0 -200.5 74t-75.5 195zM360 1137q0 -53 35 -87t94 -34q72 0 126.5 53t54.5 127q0 55 -36 90t-93 35 q-70 0 -125.5 -55t-55.5 -129zM784 244q0 129 108.5 233.5t246.5 104.5q123 0 199.5 -76t76.5 -195q0 -131 -109.5 -233.5t-244.5 -102.5q-125 0 -201 74t-76 195zM944 248q0 -53 36 -87t95 -34q70 0 125 54.5t55 125.5q0 55 -35.5 90t-93.5 35q-70 0 -126 -56t-56 -128z " /> +<glyph unicode="&" horiz-adv-x="1394" d="M63 356q0 139 96.5 260t243.5 162v4q-6 2 -15 7.5t-33.5 25t-43 44t-34 70.5t-15.5 101q0 201 147.5 320.5t356.5 119.5q43 0 91 -7t73 -13l26 -8l-79 -156q-57 12 -107 12q-123 0 -214 -74.5t-91 -197.5q0 -176 227 -176h269l38 197h199l-37 -197h191l-35 -176h-191 l-39 -193q-100 -506 -565 -506q-215 0 -337 105.5t-122 275.5zM276 369q0 -92 67 -149.5t183 -57.5q299 0 365 327l37 185h-277q-154 0 -264.5 -79t-110.5 -226z" /> +<glyph unicode="'" horiz-adv-x="409" d="M217 1085l74 385h160l-76 -385h-158z" /> +<glyph unicode="(" horiz-adv-x="612" d="M131 354q0 655 424 1151h180q-426 -532 -426 -1155q0 -287 94 -545h-165q-107 268 -107 549z" /> +<glyph unicode=")" horiz-adv-x="614" d="M-109 -195q426 537 426 1156q0 287 -94 544h166q106 -264 107 -549q0 -651 -424 -1151h-181z" /> +<glyph unicode="*" horiz-adv-x="948" d="M160 1090l88 167l252 -102l41 291h186l-74 -291l295 102l25 -174l-301 -79l-2 -5l135 -221l-156 -106l-117 243h-4l-204 -241l-134 108l228 230v4z" /> +<glyph unicode="+" horiz-adv-x="1376" d="M127 504l31 160h456l101 503h168l-101 -503h457l-29 -160h-456l-99 -504h-168l99 504h-459z" /> +<glyph unicode="," horiz-adv-x="528" d="M-100 -207l209 422h210l-258 -422h-161z" /> +<glyph unicode="-" horiz-adv-x="956" d="M156 496l32 176h598l-32 -176h-598z" /> +<glyph unicode="." horiz-adv-x="512" d="M35 0l41 215h213l-41 -215h-213z" /> +<glyph unicode="/" horiz-adv-x="825" d="M-68 -86l832 1610h188l-833 -1610h-187z" /> +<glyph unicode="0" horiz-adv-x="1288" d="M123 453q0 119 20.5 248.5t69.5 269t122 249t188.5 180t256.5 70.5q428 0 428 -477q0 -119 -20.5 -249t-69.5 -269t-121.5 -248.5t-188.5 -180.5t-259 -71q-426 1 -426 478zM332 457q0 -295 225 -295q92 0 169 58.5t126 148.5t83 202.5t48 217t14 196.5q0 299 -223 299 q-111 0 -200 -83t-139 -213t-76.5 -267t-26.5 -264z" /> +<glyph unicode="1" horiz-adv-x="995" d="M2 0l31 176h319l180 918l19 88h-4q-23 -33 -84 -84l-158 -129l-106 139l417 338h183l-248 -1270h313l-33 -176h-829z" /> +<glyph unicode="2" horiz-adv-x="1171" d="M10 0q2 129 52.5 237.5t130 185.5t176 143.5t192.5 125t175 115.5t128 129t49 151q0 88 -59 140.5t-158 52.5q-55 0 -109.5 -19.5t-92 -46t-68.5 -53t-45 -47.5l-16 -18l-144 112q8 10 22.5 27.5t64.5 64t104.5 80t137.5 62t169 28.5q184 0 297.5 -99t113.5 -263 q0 -139 -81.5 -255t-201.5 -197t-243 -151.5t-220 -154.5t-118 -174h707l-33 -176h-930z" /> +<glyph unicode="3" horiz-adv-x="1159" d="M-8 172l127 141q4 -6 12 -15t40 -34.5t66.5 -45t94 -35t123.5 -15.5q137 0 243.5 92t106.5 223q0 106 -82 160.5t-211 54.5h-104l-25 109l379 371l108 94v4q-43 -6 -122 -6h-478l35 176h864l-26 -129l-477 -459q57 -6 113.5 -27.5t110.5 -62.5t88 -112.5t34 -163.5 q0 -207 -160 -362t-393 -155q-92 0 -173 20.5t-132.5 49.5t-90 57.5t-55.5 49.5z" /> +<glyph unicode="4" horiz-adv-x="1243" d="M20 387l25 127l832 932h249l-174 -887h197l-33 -172h-196l-76 -387h-199l74 387h-699zM295 559h459l102 526l35 144h-4q-47 -66 -94 -119l-498 -549v-2z" /> +<glyph unicode="5" horiz-adv-x="1159" d="M16 176l131 137q4 -6 11.5 -15t35 -34.5t59.5 -45t85 -35t113 -15.5q143 0 258.5 101.5t115.5 248.5q0 106 -76.5 173t-201.5 67q-66 0 -130.5 -18.5t-97.5 -34.5l-30 -19l-115 45l213 715h735l-35 -176h-555l-92 -301l-24 -76h4q82 41 186 41q188 0 309 -114.5 t121 -291.5q0 -229 -175 -391t-408 -162q-264 0 -408 164z" /> +<glyph unicode="6" horiz-adv-x="1228" d="M113 504q0 143 54 307t150.5 313.5t253 247.5t340.5 98q84 0 158 -15t107 -30l30 -16l-92 -166q-86 41 -201 41q-186 0 -325 -142.5t-205 -342.5h4q55 61 145.5 99t178.5 38q184 0 289.5 -109.5t105.5 -287.5q0 -215 -149.5 -389.5t-381.5 -174.5q-211 0 -336.5 142.5 t-125.5 386.5zM317 485q0 -131 71 -227t185 -96q139 0 234.5 108.5t95.5 261.5q0 106 -64.5 169t-183.5 63q-121 0 -229.5 -81t-108.5 -198z" /> +<glyph unicode="7" horiz-adv-x="1085" d="M39 0l784 1139q59 84 111 133v4q-33 -6 -105 -6h-632l34 176h967l-27 -139l-907 -1307h-225z" /> +<glyph unicode="8" horiz-adv-x="1249" d="M76 369q0 86 40 166.5t102.5 139t100 88.5t70.5 48q-123 102 -123 240q0 166 138.5 292.5t363.5 126.5q195 0 306.5 -90t111.5 -250q0 -72 -32 -147.5t-81 -136t-80.5 -93t-58.5 -55.5q154 -106 153 -260q0 -188 -160.5 -325.5t-391.5 -137.5q-209 0 -334 107t-125 287z M289 379q0 -100 71.5 -160.5t178.5 -60.5q133 0 236.5 77.5t103.5 200.5q0 39 -17.5 71t-60.5 63.5t-72 48t-100 52.5l-97 48q-33 -18 -67.5 -45t-77.5 -71t-70.5 -102.5t-27.5 -121.5zM471 1053q0 -29 9 -54.5t30.5 -49t39 -40t54.5 -37t56.5 -31t64.5 -32t61 -29.5 q193 166 193 336q0 80 -58.5 126t-160.5 46q-127 0 -208 -68.5t-81 -166.5z" /> +<glyph unicode="9" horiz-adv-x="1230" d="M66 37l92 166q88 -41 202 -41q186 0 324.5 142t204.5 343h-4q-45 -55 -135.5 -95t-186.5 -40q-186 0 -290.5 108.5t-104.5 286.5q0 215 150.5 389t381.5 174q211 0 336 -142t125 -386q0 -113 -32.5 -242t-101.5 -257t-161 -232.5t-224 -170t-280 -65.5q-185 1 -296 62z M369 913q0 -104 64.5 -167.5t180.5 -63.5q121 0 230.5 82t109.5 199q0 131 -69.5 226t-186.5 95q-139 0 -234 -108.5t-95 -262.5z" /> +<glyph unicode=":" horiz-adv-x="595" d="M72 0l41 215h215l-43 -215h-213zM231 821l43 215h213l-41 -215h-215z" /> +<glyph unicode=";" horiz-adv-x="606" d="M-74 -207l209 422h211l-256 -422h-164zM252 821l41 215h209l-41 -215h-209z" /> +<glyph unicode="<" horiz-adv-x="1171" d="M59 516v135l955 426v-182l-733 -309v-4l733 -310v-182z" /> +<glyph unicode="=" horiz-adv-x="1376" d="M190 309v160h977v-160h-977zM190 696v160h977v-160h-977z" /> +<glyph unicode=">" horiz-adv-x="1165" d="M141 90v182l731 310v4l-731 309v182l955 -426v-135z" /> +<glyph unicode="?" horiz-adv-x="989" d="M168 0l41 201h205l-39 -201h-207zM199 1356q18 12 51 32.5t128 53.5t185 33q166 0 273.5 -89.5t107.5 -238.5q0 -100 -45 -184t-111.5 -140.5t-135 -105.5t-124 -109.5t-67.5 -126.5l-19 -84h-192l18 97q18 90 72.5 165.5t119 126t127 99.5t104.5 108.5t42 128.5 q0 74 -53 120t-143 46q-131 -2 -250 -86z" /> +<glyph unicode="@" horiz-adv-x="1658" d="M84 358q0 176 73.5 341t195.5 286t285 193.5t333 72.5q252 0 364.5 -95t112.5 -255q0 -49 -12 -110l-103 -535h146l-29 -150h-537q-174 0 -275 95.5t-101 240.5q0 170 140 302.5t343 132.5h242q4 20 4 32q0 80 -77 129t-216 49q-274 0 -482 -220t-208 -498 q0 -205 129 -336t352 -131l-31 -158q-283 0 -466 174t-183 440zM737 446q0 -84 54.5 -137t144.5 -53h205l94 483h-201q-121 0 -209 -88t-88 -205z" /> +<glyph unicode="A" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205z" /> +<glyph unicode="B" horiz-adv-x="1302" d="M78 0l282 1446h465q125 0 197 -27q92 -35 143.5 -109.5t51.5 -179.5q0 -123 -67 -221t-177 -145v-4q84 -31 131 -106.5t47 -178.5q0 -156 -84 -270.5t-221 -167.5q-94 -37 -213 -37h-555zM315 176h326q78 0 135 29q76 37 121 109.5t45 164.5q0 88 -54 139.5t-153 51.5 h-323zM442 838h306q111 0 186.5 77.5t75.5 192.5q0 76 -46 119t-135 43h-301z" /> +<glyph unicode="C" horiz-adv-x="1480" d="M111 602q0 231 118.5 433t316 318.5t421.5 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t61 -47.5l19 -20l-121 -139q-16 16 -47 40.5t-133.5 64.5t-214.5 40q-270 0 -462 -201.5t-192 -470.5q0 -197 118 -323.5t323 -126.5q236 0 452 164l29 22l88 -160q-10 -8 -28.5 -22 t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5q-293 0 -466 174t-173 453z" /> +<glyph unicode="D" horiz-adv-x="1513" d="M80 0l280 1446h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304 -320.5t-442.5 -120h-512zM315 176h263q289 0 475 197.5t186 492.5q0 195 -119 299.5t-327 104.5h-265z" /> +<glyph unicode="E" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876z" /> +<glyph unicode="F" horiz-adv-x="1069" d="M78 0l282 1446h795l-35 -176h-594l-92 -475h504l-33 -177h-506l-120 -618h-201z" /> +<glyph unicode="G" horiz-adv-x="1556" d="M111 590q0 358 258 619t610 261q299 0 489 -147l29 -25l-123 -141q-6 6 -17 14.5t-49 30t-80 38.5t-108.5 30.5t-136.5 13.5q-281 0 -471 -205t-190 -479q0 -201 119.5 -319.5t312.5 -118.5q219 0 422 168l26 22l39 199h-233l32 176h420l-141 -727h-176l16 90l15 62h-5 q-6 -6 -19 -18.5t-58 -43.5t-94.5 -53.5t-125 -42t-153.5 -19.5q-260 0 -434 170.5t-174 444.5z" /> +<glyph unicode="H" horiz-adv-x="1546" d="M78 0l282 1446h201l-125 -637h752l125 637h200l-282 -1446h-201l123 635h-752l-122 -635h-201z" /> +<glyph unicode="I" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203z" /> +<glyph unicode="J" horiz-adv-x="1089" d="M10 317q0 55 10 107l13 63h200l-10 -59q-8 -53 -8 -82q0 -184 182 -184q94 0 171 62.5t104 193.5l166 852h-363l35 176h563l-203 -1047q-29 -145 -105.5 -243.5t-169.5 -139.5t-202 -41q-164 0 -273.5 87t-109.5 255z" /> +<glyph unicode="K" horiz-adv-x="1275" d="M78 0l282 1446h201l-119 -608h207l492 608h235l-565 -694v-4l299 -748h-215l-258 664h-229l-129 -664h-201z" /> +<glyph unicode="L" horiz-adv-x="1071" d="M78 0l282 1446h203l-248 -1270h648l-37 -176h-848z" /> +<glyph unicode="M" horiz-adv-x="1771" d="M31 0l395 1446h211l180 -782l33 -195h4q61 113 111 195l485 782h217l-166 -1446h-198l108 911q10 88 37 213h-4q-70 -135 -119 -213l-414 -651h-182l-162 651l-37 217h-4q-18 -129 -43 -217l-250 -911h-202z" /> +<glyph unicode="N" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201z" /> +<glyph unicode="O" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471z" /> +<glyph unicode="P" horiz-adv-x="1245" d="M78 0l282 1446h496q137 0 225 -47q86 -45 134.5 -129t48.5 -193q0 -170 -87 -304t-229 -195q-100 -43 -215 -43h-348l-104 -535h-203zM418 711h295q88 0 153 32q86 41 137.5 125t51.5 195q0 98 -60.5 152.5t-173.5 54.5h-293z" /> +<glyph unicode="Q" horiz-adv-x="1699" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q287 0 465 -172t178 -442q0 -350 -268 -614l133 -160l-129 -119l-136 170q-209 -158 -462 -158q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 122 -326.5t317 -125.5q178 0 342 114l-140 170l129 119l138 -174 q182 199 182 455q0 195 -122 316.5t-314 121.5q-252 0 -453 -199t-201 -471z" /> +<glyph unicode="R" horiz-adv-x="1306" d="M78 0l282 1446h492q125 0 205 -37q184 -86 184 -303q0 -164 -94 -298t-254 -179v-4q10 -20 27 -66l200 -559h-215l-198 575h-316l-110 -575h-203zM426 752h285q135 0 228 90t93 235q0 90 -57 141.5t-158 51.5h-291z" /> +<glyph unicode="S" horiz-adv-x="1120" d="M6 166l127 143q4 -6 14.5 -15t44 -35t71.5 -45t98.5 -34.5t123.5 -15.5q115 0 205 68.5t90 181.5q0 70 -60.5 124t-145.5 96t-170 90t-145 128t-60 186q0 180 151.5 306t362.5 126q127 0 230.5 -36.5t143.5 -73.5l41 -37l-114 -149q-12 12 -37 30.5t-103.5 48 t-162.5 29.5q-125 0 -217.5 -73.5t-92.5 -170.5q0 -63 60.5 -114.5t146.5 -93.5t172 -90t146.5 -132t60.5 -194q0 -178 -145.5 -308.5t-360.5 -130.5q-272 0 -444 160z" /> +<glyph unicode="T" horiz-adv-x="1206" d="M131 1270l33 176h1194l-33 -176h-498l-245 -1270h-203l248 1270h-496z" /> +<glyph unicode="U" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5z" /> +<glyph unicode="V" horiz-adv-x="1290" d="M166 1446h211l160 -1022q12 -78 16 -199h4q53 121 94 199l559 1022h228l-809 -1446h-217z" /> +<glyph unicode="W" horiz-adv-x="1951" d="M225 1446h207l53 -1061v-154h4q27 74 64 154l500 1061h184l63 -1061v-154h5q27 78 59 154l461 1061h221l-651 -1446h-238l-63 938v205h-4q-43 -111 -86 -203l-449 -940h-233z" /> +<glyph unicode="X" horiz-adv-x="1239" d="M-74 0l598 754l-291 692h220l153 -385l62 -172h4q55 88 119 168l303 389h239l-571 -709l317 -737h-215l-182 438l-59 166h-5q-55 -82 -116 -162l-346 -442h-230z" /> +<glyph unicode="Y" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612z" /> +<glyph unicode="Z" horiz-adv-x="1232" d="M-37 0l27 135l874 1004q33 37 66 69l49 49l16 15v4q-37 -6 -106 -6h-643l35 176h1013l-26 -133l-877 -1006q-33 -37 -65.5 -69.5t-49.5 -47.5l-16 -14v-4q37 4 107 4h686l-33 -176h-1057z" /> +<glyph unicode="[" horiz-adv-x="612" d="M43 -195l332 1700h340l-31 -149h-166l-270 -1399h166l-31 -152h-340z" /> +<glyph unicode="\" horiz-adv-x="806" d="M229 1524h168l207 -1610h-168z" /> +<glyph unicode="]" horiz-adv-x="602" d="M-94 -195l31 152h163l271 1399h-164l29 149h339l-329 -1700h-340z" /> +<glyph unicode="^" horiz-adv-x="1255" d="M23 506l409 940h129l408 -940h-178l-295 721l-293 -721h-180z" /> +<glyph unicode="_" horiz-adv-x="1204" d="M-96 -160l28 160h1102l-30 -160h-1100z" /> +<glyph unicode="`" horiz-adv-x="1021" d="M248 1806h205l96 -260h-158z" /> +<glyph unicode="a" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228z" /> +<glyph unicode="b" horiz-adv-x="1226" d="M35 0l280 1446h199l-90 -469l-27 -94h4q55 80 149.5 129t194.5 49q184 0 287 -115t103 -311q0 -285 -171 -472.5t-397 -187.5q-109 0 -193.5 49.5t-121.5 139.5h-4q0 -39 -8 -84l-17 -80h-188zM317 410q0 -115 58.5 -189t173.5 -74q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-158 0 -269.5 -143.5t-111.5 -333.5z" /> +<glyph unicode="c" horiz-adv-x="1118" d="M53 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-147 30q-178 0 -312 -132t-134 -317q0 -131 83 -212t220 -81q86 0 173 35t132 70l43 35l56 -158q-18 -16 -53.5 -42t-146 -69t-222.5 -43q-223 0 -355.5 125 t-132.5 326z" /> +<glyph unicode="d" horiz-adv-x="1228" d="M55 399q0 287 171 474.5t403 187.5q100 0 184 -44t119 -130h4q0 39 8 76l94 483h199l-281 -1446h-190l20 98l19 76h-4q-57 -86 -149.5 -142.5t-205.5 -56.5q-184 0 -287.5 113.5t-103.5 310.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5 q0 115 -58 188.5t-173 73.5q-145 0 -264 -131t-119 -342z" /> +<glyph unicode="e" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5z" /> +<glyph unicode="f" horiz-adv-x="686" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199z" /> +<glyph unicode="g" horiz-adv-x="1210" d="M-2 -338l86 148q113 -68 276 -68q145 0 250 71.5t133 219.5l17 76l18 71h-2q-123 -168 -319 -168q-186 0 -291 116t-105 304q0 150 61.5 291t189.5 239.5t296 98.5q248 0 316 -164h4q0 23 4 43l18 96h189l-195 -1007q-47 -238 -206.5 -348.5t-366.5 -110.5t-373 92z M264 446q0 -123 62.5 -192.5t179.5 -69.5q166 0 261 151.5t95 330.5q0 223 -237 223q-164 0 -262.5 -133.5t-98.5 -309.5z" /> +<glyph unicode="h" horiz-adv-x="1230" d="M35 0l280 1446h199l-102 -531l-23 -92h4q49 88 164 163t254 75q143 0 224 -68.5t81 -206.5q0 -55 -16 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153 150q-152 0 -275 -120t-153 -286l-93 -473h-198z" /> +<glyph unicode="i" horiz-adv-x="507" d="M35 0l203 1036h198l-203 -1036h-198zM274 1243l39 203h205l-41 -203h-203z" /> +<glyph unicode="j" horiz-adv-x="507" d="M-311 -418l32 170q18 -2 46 -2q35 0 68.5 8.5t76.5 28.5t74.5 69.5t46.5 120.5l205 1059h198l-209 -1069q-18 -98 -60 -173t-88 -114.5t-105.5 -64.5t-102.5 -31t-88 -6zM274 1243l39 203h205l-39 -203h-205z" /> +<glyph unicode="k" d="M35 0l282 1446h199l-156 -789h142l358 379h240l-443 -465v-4l269 -567h-215l-219 485h-164l-95 -485h-198z" /> +<glyph unicode="l" horiz-adv-x="540" d="M72 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l32 2l-36 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> +<glyph unicode="m" horiz-adv-x="1867" d="M37 0l201 1036h194l-26 -133l-25 -86h4q57 100 167 172t230 72q250 0 273 -236h4q61 100 171.5 168t231.5 68q141 0 216 -68.5t75 -206.5q0 -57 -16 -139l-125 -647h-199l121 616q12 68 12 113q0 152 -147 152q-137 0 -244.5 -124t-138.5 -284l-92 -473h-197l119 616 q12 68 12 117q0 147 -143 148q-135 0 -246 -124t-141 -286l-92 -471h-199z" /> +<glyph unicode="n" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199z" /> +<glyph unicode="o" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5z" /> +<glyph unicode="p" horiz-adv-x="1226" d="M-43 -410l281 1446h184l-16 -88l-23 -82h4q57 86 150.5 140.5t210.5 54.5q184 0 286.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-106 0 -189 46.5t-120 134.5h-4q-4 -43 -14 -97l-90 -469h-199zM319 414q0 -117 59.5 -192t172.5 -75q145 0 264 131.5t119 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -268.5 -144.5t-112.5 -328.5z" /> +<glyph unicode="q" horiz-adv-x="1228" d="M55 397q0 287 171 475.5t403 188.5q233 0 309 -180h4q2 31 10 71l15 84h190l-280 -1446h-199l90 473l27 97h-4q-49 -76 -139.5 -130.5t-207.5 -54.5q-184 0 -286.5 113.5t-102.5 308.5zM258 414q0 -125 63.5 -196t172.5 -71q158 0 268 146.5t110 331.5q0 115 -58 188.5 t-173 73.5q-145 0 -264 -131t-119 -342z" /> +<glyph unicode="r" horiz-adv-x="765" d="M37 0l201 1036h192l-37 -180l-20 -84h2q55 117 156.5 197t218.5 80q37 0 61 -5l-39 -196q-23 6 -55 6q-137 0 -255 -144.5t-155 -332.5l-71 -377h-199z" /> +<glyph unicode="s" horiz-adv-x="909" d="M-23 125l109 131q12 -12 33.5 -30.5t96.5 -50.5t157 -32q80 0 144.5 41t64.5 113q0 43 -47.5 77t-114 62.5t-133 63.5t-113.5 96t-47 145q0 145 120 232.5t277 87.5q205 0 330 -107l8 -8l-98 -137q-8 10 -25.5 23.5t-80 37t-136.5 23.5q-78 0 -142.5 -38t-64.5 -112 q0 -43 47.5 -76.5t115 -62.5t134 -63.5t113.5 -97t47 -146.5q0 -141 -115.5 -231.5t-283.5 -90.5q-72 0 -139.5 15.5t-111.5 37t-78 44t-50 39.5z" /> +<glyph unicode="t" horiz-adv-x="722" d="M111 864l30 162h140l59 295h192l-59 -295h250l-31 -162h-250l-86 -452q-8 -41 -8 -82q0 -162 170 -162l60 4l-35 -176q-33 -4 -66 -4q-334 0 -334 303q0 45 13 104l90 465h-135z" /> +<glyph unicode="u" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208z" /> +<glyph unicode="v" horiz-adv-x="1009" d="M86 1036h197l112 -704l11 -142h4q35 84 65 142l387 704h213l-586 -1036h-219z" /> +<glyph unicode="w" horiz-adv-x="1658" d="M115 1036h198l74 -731l4 -110h4q25 59 49 110l365 729h184l80 -729l6 -110h4q20 57 47 110l361 731h213l-535 -1036h-219l-86 670l-6 110h-4q-25 -57 -51 -110l-342 -670h-215z" /> +<glyph unicode="x" horiz-adv-x="1032" d="M-76 0l465 539l-250 497h213l144 -309l22 -65h4q23 35 43 61l254 313h236l-439 -512l261 -524h-209l-160 340l-25 61h-4q-18 -33 -39 -57l-282 -344h-234z" /> +<glyph unicode="y" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68z" /> +<glyph unicode="z" horiz-adv-x="1046" d="M-41 0l21 115l641 655l102 96v4q-31 -4 -98 -4h-478l33 170h852l-20 -114l-643 -658l-105 -94v-4q33 4 101 4h516l-33 -170h-889z" /> +<glyph unicode="{" horiz-adv-x="714" d="M90 578l35 176q6 0 18.5 2t45 16t60 36.5t54.5 68t39 104.5l37 184q68 344 399 344q10 0 21.5 -1t17.5 -1h8l-30 -151h-27q-176 0 -219 -215l-45 -226q-33 -170 -185 -235l-32 -12v-4l13 -6.5t29.5 -22t37 -40t30 -60t13.5 -82.5q0 -27 -7 -60l-45 -223q-8 -41 -8 -72 q0 -143 146 -143h28l-30 -152q-20 -4 -50 -4q-27 0 -55.5 5.5t-69 21.5t-71.5 44t-52.5 78t-21.5 118q0 49 12 104l35 184q6 35 6 60q0 127 -114 159z" /> +<glyph unicode="|" horiz-adv-x="651" d="M244 -326v1948h174v-1948h-174z" /> +<glyph unicode="}" horiz-adv-x="706" d="M-100 -197l28 152h27q180 0 221 215l47 244q12 59 39 107t56.5 74t57 43t46.5 24l18 6v4q-14 6 -33.5 18t-53.5 64.5t-34 122.5q0 29 7 61l39 203q8 35 8 71q0 143 -146 144h-26l28 151q23 4 49.5 4t55 -5t69.5 -21.5t72 -44t53.5 -77.5t22.5 -118q0 -31 -12 -104 l-31 -164q-6 -35 -6 -59q0 -68 33.5 -109t66.5 -47l35 -8l-33 -176q-8 0 -20.5 -2.5t-45 -16.5t-59 -36.5t-54.5 -67.5t-40 -105l-39 -205q-66 -346 -401 -346z" /> +<glyph unicode="~" horiz-adv-x="1210" d="M113 418q0 174 74.5 260t211.5 86q72 0 130.5 -32t89 -68.5t75.5 -68.5t97 -32q74 0 105.5 57.5t31.5 135.5h162q0 -346 -285 -346q-72 0 -130.5 30.5t-89 68.5t-76.5 68.5t-97 30.5q-72 0 -105 -57t-33 -133h-161z" /> +<glyph unicode="¡" horiz-adv-x="585" d="M-8 -410l219 1049h178l-190 -1049h-207zM231 836l41 200h207l-41 -200h-207z" /> +<glyph unicode="¢" horiz-adv-x="1181" d="M117 602q0 172 73.5 327.5t202.5 256t283 114.5l33 170h145l-35 -178q78 -14 139.5 -51t93 -80t53 -85t28.5 -68l6 -27l-181 -68q-2 8 -5 21.5t-19 48.5t-40 61.5t-70 48t-105 21.5q-170 0 -283.5 -150.5t-113.5 -361.5q0 -125 62 -196.5t183 -71.5q90 0 170 50t115 99 l33 49l176 -73q-6 -12 -18.5 -31.5t-56.5 -71t-94 -92.5t-130 -76.5t-166 -42.5l-33 -172h-145l35 181q-154 31 -245 148.5t-91 299.5z" /> +<glyph unicode="£" horiz-adv-x="1193" d="M-6 0l35 176h121l92 477h-90l28 144h90l58 293q31 164 169 272t320 108q197 0 328 -124l12 -15l-133 -127q-8 8 -25.5 22.5t-73 37t-112.5 22.5q-111 0 -188.5 -62.5t-96.5 -156.5l-53 -270h379l-29 -144h-379l-92 -477h668l-35 -176h-993z" /> +<glyph unicode="¥" horiz-adv-x="1239" d="M139 408l25 129h334l16 75l-37 99h-278l24 129h211l-221 606h221l154 -451q33 -94 55 -209h4q57 113 125 207l328 453h241l-456 -606h209l-27 -129h-276l-72 -99l-17 -75h332l-24 -129h-332l-80 -408h-205l80 408h-334z" /> +<glyph unicode="§" horiz-adv-x="894" d="M-23 -16l109 120q70 -63 186 -63q123 0 191.5 80t71.5 207l14 788h162l-15 -797q-4 -186 -116.5 -316t-309.5 -130q-170 0 -286 104zM207 227l14 799q4 186 116 315t310 129q170 0 287 -104l6 -6l-109 -119q-70 63 -184 64q-125 0 -193.5 -81t-70.5 -208l-14 -789h-162z " /> +<glyph unicode="¨" horiz-adv-x="1021" d="M131 1599l41 207h164l-41 -207h-164zM475 1599l39 207h164l-41 -207h-162z" /> +<glyph unicode="©" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM475 721q0 168 111.5 288.5t292.5 120.5 q195 0 311 -165l22 -37l-125 -68q-8 14 -23 36t-67.5 57.5t-111.5 35.5q-117 0 -185.5 -79t-68.5 -189q0 -115 67.5 -191.5t186.5 -76.5q59 0 110.5 32.5t71.5 63.5l20 33l125 -68q-4 -8 -12 -21.5t-37.5 -49t-64.5 -62.5t-94.5 -48.5t-124.5 -21.5q-180 0 -292 120 t-112 290z" /> +<glyph unicode="ª" horiz-adv-x="856" d="M131 543l23 116h563l-25 -116h-561zM213 956q0 250 420 250h35q6 35 6 51q0 90 -109 91q-41 0 -87 -14.5t-72 -26.5l-25 -15l-41 105q106 70 258 69q223 0 223 -198q0 -39 -10 -86l-76 -385h-139l18 94h-4q-8 -12 -24.5 -30.5t-69.5 -48.5t-113 -30q-76 0 -133 46 t-57 128zM367 973q0 -31 22.5 -50.5t65.5 -19.5q66 0 121 60.5t67 119.5l4 19h-24q-256 0 -256 -129z" /> +<glyph unicode="«" horiz-adv-x="1134" d="M76 582l391 417h209l-410 -430l262 -411h-188zM483 582l424 417h213l-446 -430l262 -411h-188z" /> +<glyph unicode="¬" horiz-adv-x="1290" d="M143 696v160h977v-547h-166v387h-811z" /> +<glyph unicode="­" horiz-adv-x="882" d="M6 496l33 176h598l-33 -176h-598z" /> +<glyph unicode="®" horiz-adv-x="1697" d="M137 723q0 311 212 529t515 218q305 0 519 -218t214 -529t-214 -529.5t-519 -218.5q-303 0 -515 218.5t-212 529.5zM287 723q0 -256 167 -432t410 -176q248 0 416 176t168 432t-168 432t-416 176q-244 0 -410.5 -176t-166.5 -432zM614 340v772h297q111 0 177.5 -64.5 t66.5 -170.5q0 -82 -43 -136.5t-98 -68.5v-4q8 -8 26 -43l148 -285h-160l-143 299h-125v-299h-146zM760 745h123q57 0 91 35t34 97q0 59 -34 91.5t-91 32.5h-123v-256z" /> +<glyph unicode="¯" horiz-adv-x="1021" d="M131 1606l27 143h520l-27 -143h-520z" /> +<glyph unicode="°" horiz-adv-x="792" d="M186 1130q0 133 107.5 236.5t241.5 103.5q123 0 201.5 -75.5t78.5 -190.5q0 -135 -108.5 -237.5t-239.5 -102.5q-123 0 -202 74.5t-79 191.5zM346 1139q0 -55 35 -89t94 -34q70 0 125 53t55 125q0 55 -35.5 91t-93.5 36q-72 0 -126 -55t-54 -127z" /> +<glyph unicode="±" horiz-adv-x="1433" d="M145 504v160h459v503h168v-503h457v-160h-457v-504h-168v504h-459zM178 -195h1018v-159h-1018v159z" /> +<glyph unicode="²" horiz-adv-x="796" d="M-8 866q2 119 60.5 209t139 143.5t161.5 98.5t137.5 99t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5t-73 -48.5l-27 -25l-90 100q14 16 40 39t102.5 62t150.5 39q121 0 197 -64.5t76 -171.5q0 -88 -48.5 -157.5t-119 -115.5t-143 -85t-133 -86t-77.5 -101h430 l-26 -135h-598z" /> +<glyph unicode="³" horiz-adv-x="796" d="M8 981l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52.5t57.5 127.5q0 55 -46 88t-110 33h-69l-25 78l221 211l60 49v4q-39 -6 -74 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135.5 -73.5t59.5 -162.5q0 -127 -101.5 -225t-251.5 -98q-88 0 -164.5 33.5 t-107.5 66.5z" /> +<glyph unicode="´" horiz-adv-x="1021" d="M186 1546l201 260h223l-245 -260h-179z" /> +<glyph unicode="µ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> +<glyph unicode="μ" horiz-adv-x="1265" d="M-29 -410l281 1446h199l-119 -610q-12 -68 -13 -119q0 -72 36 -109.5t120 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-195l25 121l27 98h-5q-53 -92 -165.5 -168t-253.5 -76q-125 0 -185 68h-4q-6 -104 -18 -164l-58 -289h-176z" /> +<glyph unicode="¶" horiz-adv-x="1210" d="M147 909q0 215 173.5 376t388.5 161h581l-33 -176h-403l-266 -1372h-154l115 596q-162 0 -282 119.5t-120 295.5zM715 -102l241 1255h154l-244 -1255h-151z" /> +<glyph unicode="·" horiz-adv-x="552" d="M147 485l41 215h207l-41 -215h-207z" /> +<glyph unicode="¸" horiz-adv-x="1021" d="M184 -410l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l103 227l96 -20l-2 -17l-47 -112q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7z" /> +<glyph unicode="¹" horiz-adv-x="796" d="M43 866l25 135h190l96 500l17 53h-4q-12 -16 -45 -45l-82 -65l-78 106l260 211h137l-147 -760h188l-27 -135h-530z" /> +<glyph unicode="º" horiz-adv-x="950" d="M141 543l23 116h641l-23 -116h-641zM217 1071q0 164 124 280.5t280 116.5q135 0 221 -79.5t86 -206.5q0 -164 -124 -280t-282 -116q-133 0 -219 80t-86 205zM367 1083q0 -76 46 -120.5t119 -44.5q94 0 170 74.5t76 181.5q0 72 -46 117.5t-118 45.5q-96 0 -171.5 -75 t-75.5 -179z" /> +<glyph unicode="»" horiz-adv-x="1134" d="M2 158l447 430l-263 411h189l264 -424l-426 -417h-211zM446 158l410 430l-262 411h188l265 -424l-392 -417h-209z" /> +<glyph unicode="¼" horiz-adv-x="1966" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM410 0l966 1446h164l-967 -1446h-163zM1087 219l19 103l516 573h176l-106 -541h127l-25 -135h-127l-43 -219h-151l43 219h-429zM1290 354h250l49 252 l31 119h-4q-37 -55 -78 -98l-248 -269v-4z" /> +<glyph unicode="½" horiz-adv-x="1947" d="M104 551l25 135h190l97 500l16 53h-4q-12 -16 -45 -45l-82 -66l-78 107l260 211h138l-148 -760h189l-27 -135h-531zM414 0l966 1446h164l-966 -1446h-164zM1112 0q2 119 60.5 209t139.5 143t161.5 98.5t137 99.5t56.5 118q0 47 -34 76.5t-89 29.5q-45 0 -93 -24.5 t-75 -49.5l-24 -24l-90 100q14 16 39.5 39t102.5 61.5t150 38.5q121 0 197 -64.5t76 -170.5q0 -88 -48 -157.5t-119 -116t-143.5 -85t-133 -86t-76.5 -100.5h430l-27 -135h-598z" /> +<glyph unicode="¾" horiz-adv-x="1984" d="M84 666l96 100q8 -10 23.5 -25.5t71 -42t116.5 -26.5q78 0 135.5 52t57.5 128q0 55 -46 88t-110 33h-70l-24 78l221 211l59 49v4q-39 -6 -73 -6h-283l25 137h557l-19 -98l-274 -258q76 -14 135 -74t59 -162q0 -127 -101 -225.5t-251 -98.5q-88 0 -165 34t-109 67zM428 0 l967 1446h164l-967 -1446h-164zM1106 219l18 103l516 573h177l-107 -541h127l-25 -135h-126l-44 -219h-151l43 219h-428zM1309 354h250l49 252l30 119h-4q-37 -55 -78 -98l-247 -269v-4z" /> +<glyph unicode="¿" horiz-adv-x="923" d="M-51 -102q0 100 45 183t111.5 139t135 106.5t124 111t67.5 125.5l17 76h194l-18 -88q-18 -90 -72.5 -166t-120 -127t-127 -99t-103.5 -107.5t-42 -129.5q0 -74 53 -121t143 -47q59 0 122 22.5t95 43.5l33 22l88 -153q-18 -12 -51 -33t-128 -53.5t-185 -32.5 q-166 0 -273.5 89t-107.5 239zM477 836l41 200h205l-39 -200h-207z" /> +<glyph unicode="À" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM598 1806h205l96 -260h-158z" /> +<glyph unicode="Á" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM733 1546l201 260h223l-246 -260h-178z" /> +<glyph unicode="Â" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM537 1546l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> +<glyph unicode="Ã" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM498 1548q49 260 243 260q55 0 94.5 -34.5t68 -69.5t61.5 -35q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 35t-70 69.5t-64 34.5 q-72 0 -98 -133h-145z" /> +<glyph unicode="Ä" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM588 1599l41 207h164l-41 -207h-164zM932 1599l39 207h164l-41 -207h-162z" /> +<glyph unicode="Å" horiz-adv-x="1282" d="M-98 0l792 1446h226l235 -1446h-203l-63 416h-545l-225 -416h-217zM428 584h440l-71 458l-21 205h-4q-55 -131 -94 -205zM678 1655q0 76 59.5 124t132.5 48q72 0 116 -36t44 -99q0 -74 -60.5 -122t-133.5 -48q-70 0 -114 35t-44 98zM784 1657q0 -51 58 -51 q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-42.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> +<glyph unicode="Æ" horiz-adv-x="1816" d="M-102 0l874 1446h1075l-35 -176h-638l-89 -453h519l-35 -176h-518l-90 -465h671l-35 -176h-872l125 643h-344l-383 -643h-225zM606 811h277l88 459h-92z" /> +<glyph unicode="Ç" horiz-adv-x="1484" d="M115 602q0 231 118.5 433t316.5 318.5t421 116.5q102 0 193 -19t148.5 -48t100.5 -57.5t62 -47.5l18 -20l-121 -139q-16 16 -47 40.5t-133 64.5t-215 40q-270 0 -461.5 -201.5t-191.5 -470.5q0 -197 117.5 -323.5t322.5 -126.5q236 0 453 164l28 22l88 -160 q-10 -8 -28.5 -22t-78 -51t-123 -66t-159.5 -51.5t-190 -22.5h-2l-33 -77q51 -8 87 -42t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 164q-246 33 -387 200.5t-141 417.5z" /> +<glyph unicode="È" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM592 1806h205l96 -260h-158z" /> +<glyph unicode="É" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM727 1546l201 260h223l-246 -260h-178z" /> +<glyph unicode="Ê" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM530 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> +<glyph unicode="Ë" horiz-adv-x="1171" d="M78 0l284 1446h838l-35 -176h-637l-88 -453h518l-34 -176h-518l-91 -465h672l-33 -176h-876zM580 1599l41 207h163l-41 -207h-163zM924 1599l39 207h163l-41 -207h-161z" /> +<glyph unicode="Ì" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM252 1806h205l96 -260h-158z" /> +<glyph unicode="Í" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM385 1546l201 260h223l-246 -260h-178z" /> +<glyph unicode="Î" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM190 1546l232 260h207l129 -260h-168l-74 164h-4l-139 -164h-183z" /> +<glyph unicode="Ï" horiz-adv-x="595" d="M78 0l282 1446h201l-280 -1446h-203zM242 1599l41 207h163l-40 -207h-164zM586 1599l39 207h163l-40 -207h-162z" /> +<glyph unicode="Ð" horiz-adv-x="1550" d="M115 0l123 639h-119l33 168h118l125 639h447q299 0 469 -147.5t170 -415.5q0 -242 -107.5 -442.5t-304.5 -320.5t-442 -120h-512zM348 176h264q287 0 473.5 197.5t186.5 492.5q0 195 -119 299.5t-328 104.5h-262l-92 -463h309l-32 -168h-310z" /> +<glyph unicode="Ñ" horiz-adv-x="1536" d="M78 0l282 1446h187l463 -940q37 -76 77 -209h5q10 129 26 209l182 940h203l-282 -1446h-187l-463 938q-39 80 -79 211h-5q-10 -129 -26 -211l-182 -938h-201zM618 1548q49 260 244 260q55 0 94 -34.5t68 -69.5t61 -35q78 0 101 133h145q-51 -260 -244 -260q-53 0 -92 35 t-69.5 69.5t-63.5 34.5q-72 0 -98 -133h-146z" /> +<glyph unicode="Ò" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM786 1806h205l96 -260h-157z" /> +<glyph unicode="Ó" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM922 1546l200 260h224l-246 -260h-178z" /> +<glyph unicode="Ô" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM725 1546l231 260h207l129 -260h-168l-73 164h-4l-140 -164h-182z" /> +<glyph unicode="Õ" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM686 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-69.5 69.5t-63.5 34.5q-72 0 -99 -133h-145z" /> +<glyph unicode="Ö" horiz-adv-x="1677" d="M109 606q0 227 122.5 429t322.5 318.5t417 116.5q289 0 467 -172t178 -442q0 -231 -125 -437t-324.5 -325t-414.5 -119q-289 0 -466 177.5t-177 453.5zM315 614q0 -201 123 -326.5t316 -125.5q250 0 451.5 203.5t201.5 480.5q0 195 -122 316.5t-316 121.5 q-252 0 -453 -199t-201 -471zM776 1599l41 207h164l-41 -207h-164zM1120 1599l39 207h164l-41 -207h-162z" /> +<glyph unicode="×" horiz-adv-x="1409" d="M170 113l422 471l-422 471l113 112l417 -467l420 467l113 -112l-424 -471l424 -471l-113 -113l-420 465l-417 -465z" /> +<glyph unicode="Ø" horiz-adv-x="1681" d="M113 606q0 227 122.5 429t322.5 318.5t417 116.5q221 0 385 -108l127 137l94 -78l-127 -137q164 -170 164 -428q0 -231 -124 -437t-323.5 -325t-414.5 -119q-229 0 -398 119l-133 -145l-94 76l137 149q-155 172 -155 432zM319 614q0 -172 89 -288l817 886 q-111 72 -252 72q-252 0 -453 -199t-201 -471zM496 242q109 -80 262 -80q248 0 449.5 203.5t201.5 480.5q0 168 -94 284z" /> +<glyph unicode="Ù" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM696 1806h205l96 -260h-157z" /> +<glyph unicode="Ú" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM831 1546l201 260h223l-245 -260h-179z" /> +<glyph unicode="Û" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM635 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164 h-182z" /> +<glyph unicode="Ü" horiz-adv-x="1488" d="M147 403q0 55 13 117l180 926h201l-181 -932q-8 -39 -8 -86q0 -127 80 -196.5t225 -69.5q168 0 285 94t150 262l182 928h201l-185 -944q-47 -242 -219 -384.5t-418 -142.5q-225 0 -365.5 113.5t-140.5 314.5zM684 1599l41 207h164l-41 -207h-164zM1028 1599l39 207h164 l-41 -207h-162z" /> +<glyph unicode="Ý" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM670 1546l200 260h224l-246 -260h-178z" /> +<glyph unicode="Þ" horiz-adv-x="1247" d="M78 0l282 1446h203l-49 -246h295q135 0 227 -47q180 -94 181 -322q0 -170 -87.5 -304t-228.5 -195q-102 -43 -215 -43h-348l-57 -289h-203zM371 465h295q88 0 153 33q86 41 137.5 124t51.5 195q0 98 -60.5 152.5t-171.5 54.5h-297z" /> +<glyph unicode="ß" horiz-adv-x="1200" d="M37 0l213 1102q33 172 174 270t309 98q164 0 263.5 -80.5t99.5 -207.5q0 -82 -45 -151.5t-98.5 -107.5t-98.5 -86.5t-45 -91.5q0 -41 44 -89t97.5 -87t97.5 -104.5t44 -136.5q0 -141 -118 -241.5t-272 -100.5q-86 0 -161.5 14t-108.5 29l-33 16l35 172q100 -59 254 -59 q76 0 138.5 43t62.5 127q0 43 -30 84t-72 75.5t-82.5 69.5t-70.5 81t-30 95q0 70 45 132.5t99.5 102.5t99.5 92t45 103q0 57 -43 96t-125 39q-98 0 -178 -59t-103 -168l-208 -1071h-199z" /> +<glyph unicode="à" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM410 1446h204l97 -260h-158z" /> +<glyph unicode="á" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM545 1186l200 260h224l-246 -260h-178z" /> +<glyph unicode="â" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM348 1186l232 260h206l129 -260h-167l-74 164h-4l-140 -164h-182z" /> +<glyph unicode="ã" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM309 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 101 133h145 q-51 -260 -244 -260q-53 0 -92 34.5t-69.5 69.5t-63.5 35q-72 0 -98 -133h-146z" /> +<glyph unicode="ä" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM397 1239l41 207h164l-41 -207h-164zM741 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="å" d="M0 238q0 119 66.5 204.5t176 127.5t219 59.5t228.5 17.5h51q8 41 9 84q0 162 -187 162q-72 0 -148.5 -24.5t-119.5 -49.5l-41 -24l-53 157q18 12 53 30.5t137.5 48.5t200.5 30q162 0 261 -75t99 -232q0 -57 -12 -115l-125 -639h-184l20 104q14 82 23 82h-4 q2 0 -13.5 -21.5t-46 -52t-71.5 -62.5t-102.5 -53.5t-127.5 -21.5q-129 0 -219 71t-90 192zM203 270q0 -57 42 -96t124 -39q117 0 213 101.5t127 226.5l8 35h-51q-463 -1 -463 -228zM487 1294q0 76 59.5 124t133.5 48q72 0 116 -35.5t44 -99.5q0 -74 -60.5 -122t-134.5 -48 q-70 0 -114 35t-44 98zM594 1296q0 -51 57 -51q33 0 57.5 24.5t24.5 59.5q0 25 -15.5 40t-41.5 15q-33 0 -57.5 -25.5t-24.5 -62.5z" /> +<glyph unicode="æ" horiz-adv-x="1761" d="M2 238q0 121 63.5 204.5t172 124.5t217 57.5t233.5 16.5h53q10 66 11 88q0 164 -193 164q-147 -2 -303 -98l-53 157q20 12 54 30.5t135.5 48.5t195.5 30q248 0 311 -174h4q154 174 385 174q195 0 296.5 -103.5t101.5 -281.5q0 -35 -7.5 -80t-15.5 -74l-8 -28h-746 q-6 -37 -6 -68q0 -125 74 -202t209 -77q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-160 0 -272.5 69t-155.5 187h-5q-12 -27 -38.5 -61.5t-76.5 -82.5t-131 -80t-175 -32q-137 0 -229.5 70t-92.5 193zM205 270q0 -59 43 -97t123 -38 q119 0 214 102.5t124 227.5l6 27h-94q-416 -1 -416 -222zM946 643h537q4 33 4 53q0 100 -56.5 153.5t-144.5 53.5q-115 0 -205 -68.5t-135 -191.5z" /> +<glyph unicode="ç" horiz-adv-x="1120" d="M55 426q0 262 190.5 448.5t448.5 186.5q236 0 373 -131l18 -19l-110 -129q-10 12 -31.5 29.5t-92.5 47.5t-146 30q-178 0 -312.5 -132t-134.5 -317q0 -131 83 -212t220 -81q86 0 173 35t130 70l45 35l56 -158q-18 -16 -53 -42t-146 -69t-223 -43h-4l-33 -77q51 -8 87 -42 t36 -92q0 -94 -73 -141t-163 -47q-33 0 -62.5 3t-43.5 7l-15 4l23 117q39 -12 84 -12t77.5 17.5t32.5 56.5q0 53 -96 53l-37 -2l74 166q-174 29 -274.5 147.5t-100.5 292.5z" /> +<glyph unicode="è" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM479 1446h205l96 -260h-157z" /> +<glyph unicode="é" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM614 1186l201 260h223l-245 -260h-179z" /> +<glyph unicode="ê" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM418 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> +<glyph unicode="ë" horiz-adv-x="1128" d="M55 418q0 262 173 452.5t429 190.5q195 0 295.5 -104.5t100.5 -278.5q0 -37 -8.5 -84t-16.5 -76l-8 -29h-756q-6 -31 -6 -61q0 -121 78 -201t217 -80q80 0 162 31t125 60l43 30l57 -157q-18 -14 -53 -37t-139.5 -61t-202.5 -38q-223 0 -356.5 123t-133.5 320zM297 639 h553q4 23 4 55q0 100 -55.5 154.5t-145.5 54.5q-115 0 -212 -71.5t-144 -192.5zM469 1239l41 207h164l-41 -207h-164zM813 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="ì" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM137 1446h205l96 -260h-157z" /> +<glyph unicode="í" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM272 1186l201 260h223l-245 -260h-179z" /> +<glyph unicode="î" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM76 1186l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> +<glyph unicode="ï" horiz-adv-x="507" d="M37 0l201 1036h198l-200 -1036h-199zM125 1239l41 207h164l-41 -207h-164zM469 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="ð" horiz-adv-x="1202" d="M51 391q0 217 161 390t417 173q76 0 139 -23.5t88 -45.5l27 -25h4q-35 164 -174 283l-406 -162l4 129l285 115q-111 63 -250 100l82 148q217 -55 373 -166l325 131l-2 -129l-221 -88q199 -203 199 -502q0 -90 -21.5 -187.5t-69.5 -198t-117 -179t-175.5 -129 t-231.5 -50.5q-209 0 -322.5 119t-113.5 297zM254 395q0 -109 60.5 -178.5t174.5 -69.5q166 0 279 141.5t113 295.5q0 94 -65.5 152.5t-178.5 58.5q-162 0 -272.5 -119t-110.5 -281z" /> +<glyph unicode="ñ" horiz-adv-x="1232" d="M37 0l201 1036h194l-22 -121l-29 -98h4q49 90 168 167t260 77q143 0 223 -68.5t80 -206.5q0 -49 -14 -131l-127 -655h-199l119 612q14 76 14 117q0 150 -153.5 150t-275.5 -119t-154 -287l-90 -473h-199zM422 1188q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5 q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> +<glyph unicode="ò" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM520 1446 h205l96 -260h-157z" /> +<glyph unicode="ó" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM655 1186 l201 260h223l-245 -260h-179z" /> +<glyph unicode="ô" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM459 1186 l231 260h207l129 -260h-168l-74 164h-4l-139 -164h-182z" /> +<glyph unicode="õ" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM418 1188 q49 260 244 260q55 0 94 -35t67.5 -69.5t61.5 -34.5q78 0 100 133h145q-51 -260 -243 -260q-53 0 -92 34.5t-70 69.5t-63 35q-72 0 -99 -133h-145z" /> +<glyph unicode="ö" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q217 0 354.5 -126t137.5 -327q0 -262 -195.5 -447.5t-443.5 -185.5q-219 0 -356.5 127t-137.5 330zM256 440q0 -131 82 -212t211 -81q166 0 300 132.5t134 318.5q0 129 -82 210t-209 81q-170 0 -303 -131.5t-133 -317.5zM508 1239 l41 207h164l-41 -207h-164zM852 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="÷" horiz-adv-x="1292" d="M123 504v160h1034v-160h-1034zM543 90v186h192v-186h-192zM543 891v186h192v-186h-192z" /> +<glyph unicode="ø" horiz-adv-x="1273" d="M53 432q0 260 195.5 444.5t445.5 184.5q164 0 287 -76l111 121l92 -76l-111 -121q113 -123 113 -301q0 -262 -195.5 -447.5t-443.5 -185.5q-152 0 -275 68l-110 -121l-90 78l106 115q-125 124 -125 317zM256 440q0 -109 55 -182l541 588q-74 43 -160 43 q-170 0 -303 -131.5t-133 -317.5zM401 182q63 -35 148 -35q166 0 300 132.5t134 318.5q0 92 -45 166z" /> +<glyph unicode="ù" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM483 1446h205l96 -260h-157z" /> +<glyph unicode="ú" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM618 1186l201 260h223l-245 -260h-179z" /> +<glyph unicode="û" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM422 1186l231 260h207l129 -260h-168l-73 164 h-5l-139 -164h-182z" /> +<glyph unicode="ü" horiz-adv-x="1220" d="M80 250q0 49 14 131l127 655h199l-119 -610q-12 -68 -12 -119q0 -72 35.5 -109.5t119.5 -37.5q150 0 266.5 123t147.5 282l92 471h199l-201 -1036h-194l24 121l27 98h-4q-53 -92 -166 -168t-254 -76q-133 0 -217 67t-84 208zM473 1239l41 207h164l-41 -207h-164z M817 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="ý" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM532 1186l201 260h223l-245 -260h-179z" /> +<glyph unicode="þ" horiz-adv-x="1226" d="M-43 -410l358 1856h197l-94 -481l-21 -82h4q55 78 146.5 128t200.5 50q182 0 284.5 -115t102.5 -311q0 -285 -170 -472.5t-394 -187.5q-102 0 -187 46.5t-122 134.5h-4q-2 -43 -12 -97l-92 -469h-197zM319 414q0 -117 58.5 -192t173.5 -75q145 0 263 131.5t118 342.5 q0 125 -62.5 195.5t-171.5 70.5q-156 0 -267.5 -144.5t-111.5 -328.5z" /> +<glyph unicode="ÿ" horiz-adv-x="1042" d="M-188 -362l92 141q43 -37 112 -37q129 0 220 149l75 123l-237 1022h207l139 -700l16 -123h2q31 68 60 119l389 704h223l-727 -1226q-143 -240 -358 -240q-125 0 -213 68zM387 1239l41 207h164l-41 -207h-164zM731 1239l39 207h164l-41 -207h-162z" /> +<glyph unicode="Œ" horiz-adv-x="1964" d="M109 598q0 229 120.5 431t319.5 318.5t422 116.5q63 0 156.5 -9t132.5 -9h735l-35 -176h-639l-88 -453h518l-35 -176h-518l-90 -465h674l-35 -176h-743q-31 0 -116 -9t-138 -9q-289 0 -465 173t-176 443zM315 598q0 -193 121 -314.5t324 -121.5q37 0 73.5 4t55.5 8l18 4 l211 1092q-59 14 -141 14q-268 0 -465 -202.5t-197 -483.5z" /> +<glyph unicode="œ" horiz-adv-x="2039" d="M53 432q0 260 194.5 444.5t444.5 184.5q145 0 254 -65.5t162 -180.5h4q80 115 199 180.5t258 65.5q195 0 295 -104.5t100 -278.5q0 -37 -8 -84t-17 -76l-8 -29h-753q-6 -35 -7 -63q0 -127 82 -203t213 -76q78 0 161 31t126 60l43 30l55 -157q-18 -14 -53 -37t-139.5 -61 t-202.5 -38q-154 0 -264.5 67t-161.5 185h-4q-88 -117 -216 -184.5t-265 -67.5q-219 0 -355.5 127t-136.5 330zM256 440q0 -131 81 -212t210 -81q166 0 300 132.5t134 318.5q0 129 -81 210t-210 81q-168 0 -301 -131.5t-133 -317.5zM1210 639h551q6 27 6 55q0 100 -55 154.5 t-145 54.5q-117 0 -213.5 -70.5t-143.5 -193.5z" /> +<glyph unicode="Ÿ" horiz-adv-x="1185" d="M164 1446h217l174 -475q29 -80 53 -183h4q61 98 123 181l355 477h243l-651 -840l-119 -606h-201l121 612zM522 1599l41 207h164l-41 -207h-164zM866 1599l39 207h164l-41 -207h-162z" /> +<glyph unicode="ˆ" horiz-adv-x="1021" d="M82 1546l231 260h207l129 -260h-168l-73 164h-5l-139 -164h-182z" /> +<glyph unicode="˜" horiz-adv-x="1021" d="M39 1548q49 260 244 260q55 0 94 -34.5t67.5 -69.5t61.5 -35q78 0 100 133h146q-51 -260 -244 -260q-53 0 -92 35t-70 69.5t-63 34.5q-72 0 -99 -133h-145z" /> +<glyph unicode="–" horiz-adv-x="1435" d="M158 504l30 160h1078l-31 -160h-1077z" /> +<glyph unicode="—" horiz-adv-x="1845" d="M158 504l30 160h1487l-30 -160h-1487z" /> +<glyph unicode="‘" horiz-adv-x="464" d="M182 1071l211 397h154l-164 -397h-201z" /> +<glyph unicode="’" horiz-adv-x="452" d="M188 1071l164 397h201l-211 -397h-154z" /> +<glyph unicode="‚" horiz-adv-x="509" d="M-66 -184l164 399h201l-211 -399h-154z" /> +<glyph unicode="“" horiz-adv-x="753" d="M182 1071l211 397h154l-164 -397h-201zM471 1071l211 397h154l-164 -397h-201z" /> +<glyph unicode="”" horiz-adv-x="741" d="M188 1071l166 397h199l-209 -397h-156zM477 1071l166 397h199l-209 -397h-156z" /> +<glyph unicode="„" horiz-adv-x="798" d="M-66 -184l164 399h201l-209 -399h-156zM223 -184l166 399h199l-209 -399h-156z" /> +<glyph unicode="•" horiz-adv-x="837" d="M98 596q0 133 92.5 225t225.5 92q131 0 223 -93t92 -224t-92 -224t-223 -93q-133 0 -225.5 92t-92.5 225z" /> +<glyph unicode="…" horiz-adv-x="1568" d="M35 0l41 215h209l-43 -215h-207zM565 0l43 215h207l-41 -215h-209zM1098 0l41 215h209l-43 -215h-207z" /> +<glyph unicode="‹" horiz-adv-x="708" d="M76 582l391 417h209l-410 -430l262 -411h-188z" /> +<glyph unicode="›" horiz-adv-x="708" d="M18 158l410 430l-260 411h188l265 -424l-394 -417h-209z" /> +<glyph unicode="€" horiz-adv-x="1202" d="M57 528l25 129h113q6 76 24 148h-108l24 131h127q102 236 314 385t456 149q61 0 120.5 -8t88.5 -16l29 -8l-82 -176q-72 20 -158 20q-168 0 -315.5 -95t-229.5 -251h578l-51 -131h-580q-23 -76 -29 -148h551l-49 -129h-489q18 -160 121.5 -260t281.5 -100q47 0 95.5 6 t72.5 14l25 7l4 -189q-92 -31 -207 -31q-258 0 -424 152t-186 401h-142z" /> +<glyph unicode="™" horiz-adv-x="2041" d="M176 1309v137h778v-137h-311v-764h-156v764h-311zM1020 545l72 901h141l213 -471l29 -86h4q12 49 26 86l213 471h144l69 -901h-153l-43 538l2 62h-4l-195 -434h-125l-194 434h-5l3 -62l-43 -538h-154z" /> +<glyph unicode="" horiz-adv-x="1035" d="M0 1035h1035v-1035h-1035v1035z" /> +<glyph unicode="fi" horiz-adv-x="1193" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630l-202 -1036h-199l170 874h-430l-170 -874h-199zM961 1243l38 203h205l-41 -203h-202z" /> +<glyph unicode="fl" horiz-adv-x="1226" d="M92 0l168 864h-129l31 162h129l10 49q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-9 -41h244l-31 -162h-243l-168 -864h-199zM758 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2 l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> +<glyph unicode="ffi" horiz-adv-x="1880" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h630 l-202 -1036h-199l170 874h-430l-170 -874h-199l170 874h-487l-170 -874h-199zM1647 1243l39 203h204l-41 -203h-202z" /> +<glyph unicode="ffl" horiz-adv-x="1912" d="M92 0l170 874h-129l31 162h129l8 39q18 96 60 169t89.5 112t107.5 63.5t104.5 30.5t87.5 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h487l8 39q18 96 60.5 169t89.5 112t107.5 63.5t104.5 30.5t87 6l90 -6l-37 -170q-16 4 -47 4q-217 0 -258 -217l-6 -31h243 l-30 -162h-244l-170 -874h-199l170 874h-487l-170 -874h-199zM1444 209q0 33 10 88l223 1149h199l-215 -1114q-10 -47 -10 -78q0 -84 92 -84l33 2l-37 -176q-29 -4 -60 -4q-98 0 -166.5 49t-68.5 168z" /> +</font> +</defs></svg>
\ No newline at end of file diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.ttf b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.ttf Binary files differnew file mode 100755 index 000000000..445af3ac1 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.ttf diff --git a/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.woff b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.woff Binary files differnew file mode 100755 index 000000000..453194a98 --- /dev/null +++ b/web/cobrands/fixmystreet/fonts/MuseoSans_500_Italic-webfont.woff diff --git a/web/cobrands/fixmystreet/images/ie_fixed.gif b/web/cobrands/fixmystreet/images/ie_fixed.gif Binary files differnew file mode 100644 index 000000000..438bd6894 --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_fixed.gif diff --git a/web/cobrands/fixmystreet/images/ie_front_logo.gif b/web/cobrands/fixmystreet/images/ie_front_logo.gif Binary files differnew file mode 100644 index 000000000..71225283f --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_front_logo.gif diff --git a/web/cobrands/fixmystreet/images/ie_green_chevron.gif b/web/cobrands/fixmystreet/images/ie_green_chevron.gif Binary files differnew file mode 100644 index 000000000..341ac1eeb --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_green_chevron.gif diff --git a/web/cobrands/fixmystreet/images/ie_key_tools_sprite.gif b/web/cobrands/fixmystreet/images/ie_key_tools_sprite.gif Binary files differnew file mode 100644 index 000000000..aed0bafa3 --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_key_tools_sprite.gif diff --git a/web/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif b/web/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif Binary files differnew file mode 100644 index 000000000..0b2fd5741 --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_key_tools_sprite_dark.gif diff --git a/web/cobrands/fixmystreet/images/ie_logo.gif b/web/cobrands/fixmystreet/images/ie_logo.gif Binary files differnew file mode 100644 index 000000000..cfcbd258b --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_logo.gif diff --git a/web/cobrands/fixmystreet/images/ie_mobileapps.gif b/web/cobrands/fixmystreet/images/ie_mobileapps.gif Binary files differnew file mode 100644 index 000000000..604efc101 --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_mobileapps.gif diff --git a/web/cobrands/fixmystreet/images/ie_mysoc_logo.gif b/web/cobrands/fixmystreet/images/ie_mysoc_logo.gif Binary files differnew file mode 100644 index 000000000..e00fd955a --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_mysoc_logo.gif diff --git a/web/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif b/web/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif Binary files differnew file mode 100644 index 000000000..1afd136e7 --- /dev/null +++ b/web/cobrands/fixmystreet/images/ie_sub_map_links_sprite.gif diff --git a/web/cobrands/fixmystreet/images/spinner-black-333.gif b/web/cobrands/fixmystreet/images/spinner-black-333.gif Binary files differnew file mode 100644 index 000000000..63b3a9d08 --- /dev/null +++ b/web/cobrands/fixmystreet/images/spinner-black-333.gif diff --git a/web/cobrands/fixmystreet/images/spinner-black.gif b/web/cobrands/fixmystreet/images/spinner-black.gif Binary files differnew file mode 100644 index 000000000..763c98d35 --- /dev/null +++ b/web/cobrands/fixmystreet/images/spinner-black.gif diff --git a/web/cobrands/fixmystreet/images/spinner-yellow.gif b/web/cobrands/fixmystreet/images/spinner-yellow.gif Binary files differnew file mode 100644 index 000000000..56eed1541 --- /dev/null +++ b/web/cobrands/fixmystreet/images/spinner-yellow.gif diff --git a/web/cobrands/fixmystreet/images/sprite.png b/web/cobrands/fixmystreet/images/sprite.png Binary files differnew file mode 100644 index 000000000..68de30268 --- /dev/null +++ b/web/cobrands/fixmystreet/images/sprite.png diff --git a/web/cobrands/fixmystreet/images/temp-map.jpg b/web/cobrands/fixmystreet/images/temp-map.jpg Binary files differnew file mode 100644 index 000000000..60ca79878 --- /dev/null +++ b/web/cobrands/fixmystreet/images/temp-map.jpg diff --git a/web/cobrands/fixmystreet/images/temp-map.png b/web/cobrands/fixmystreet/images/temp-map.png Binary files differnew file mode 100644 index 000000000..12b9f2ab4 --- /dev/null +++ b/web/cobrands/fixmystreet/images/temp-map.png diff --git a/web/cobrands/fixmystreet/images/tile-y-border.jpg b/web/cobrands/fixmystreet/images/tile-y-border.jpg Binary files differnew file mode 100644 index 000000000..04c75a9de --- /dev/null +++ b/web/cobrands/fixmystreet/images/tile-y-border.jpg diff --git a/web/cobrands/fixmystreet/images/tile-y.jpg b/web/cobrands/fixmystreet/images/tile-y.jpg Binary files differnew file mode 100644 index 000000000..63682f1c4 --- /dev/null +++ b/web/cobrands/fixmystreet/images/tile-y.jpg diff --git a/web/cobrands/fixmystreet/images/tile.jpg b/web/cobrands/fixmystreet/images/tile.jpg Binary files differnew file mode 100644 index 000000000..b412774e4 --- /dev/null +++ b/web/cobrands/fixmystreet/images/tile.jpg diff --git a/web/cobrands/fixmystreet/layout.scss b/web/cobrands/fixmystreet/layout.scss index fea728bc6..ff75409ec 100644 --- a/web/cobrands/fixmystreet/layout.scss +++ b/web/cobrands/fixmystreet/layout.scss @@ -1,169 +1,1066 @@ + +@import "compass"; @import "_colours"; +@import "_mixins"; + +//hacks for desk/mob only stuff +.desk-only { + display:block !important; +} +.mob-only { + display:none !important; +} body { - margin: 7px 0 0 0; - padding: 0; - background-color: #3c3c3c; - background-image: url(/cobrands/fixmystreet/texture.png); + background: #1A1A1A url(images/tile.jpg) 0 0 repeat; +} + +h1 { + margin-top: 0; +} + +// Page wrapper and header bits follow + +.container{ + margin: 0 auto; + padding: 0em; + width: 60em; + position: relative; + z-index:1; +} + +//z-index stack order gets reset to 0 in ie6/7 if you position anything, +//so to fix things we give it a high value (don't ask me why) +//see: http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/ +//this affects #site-logo +.ie6, .ie7 { + .container { + z-index:100; + } } -#wrapper2 { - padding: 0 0.5em; +.wrapper{ + display: table; + caption-side: top; + width: 100%; + .table-cell { + display:table-cell; + } +} + +//pad the top of the wrapper to allow space for the menu to fit in +//when its positioned absolute below +.ie6, .ie7 { + .wrapper { + padding-top:4em; + } } -/* A third wrapper is needed because display:table cannot be given a max-width. - * The other two wrappers (to set full width white background and the - * max-width, are defined in base.scss. */ -#wrapper3 { - display: table; - caption-side: top; +.nav-wrapper{ + display: table-caption; + .nav-wrapper-2{ width: 100%; - background-color: #fff; + min-height: 4em; + position: absolute; + border-top:4px solid #1a1a1a; + @include border-image(url(images/tile-y-border.jpg) 4 0 0 0); + border-left:0; + border-right:0; + z-index:2; + } } -/* As the navigation is put in place using position:absolute in IE6+7, add some - * extra space here to cover it. */ +//position absolute the menu as ie doesn't like display:table .ie6, .ie7 { - #wrapper3 { - padding-top: 2em; + .nav-wrapper { + position: absolute; + top:0; + left:0; + width:100%; + .nav-wrapper-2 { + // position static as well so we fix lots of the z-index issues + position:static; } + } } -#meta { - float: right; - margin: -3em 0 0 1em; +// Resets a lot of the mobile styling. #site-header only used to help position logo on desktop +#site-header { + height: auto; + background: none; + border-top: 0px; + .container { + position: static;//reset position so the nav links become clickable + } } - -#mysociety { - padding: 0 0 1em 0; +#site-logo { + top: 0.9em; + position: absolute; + z-index: 3; +} +.ie6, .ie7 { + #site-header { + height:3em; + .container { + //ie broken z-index bug: the site-logo won't appear if we don't do this + //doesn't seem to render the nav link unclickable like in other browsers + position: relative; + } + } + #site-logo { + position: absolute; + top:-3.25em; + } +} +#nav-link { + left:-999999px; +} +#main-nav{ + margin: 0 auto; + padding: 0em; + width: 60em; + ul{ + list-style: none; + padding: 0px; + margin: 0px; + float:right; + li{ + list-style: none; + display: inline; + margin: 0px; + padding: 0px; + float:left; + a, + span { + display: block; + color:#fff; + background: none; + border-bottom: none; + } + } + &#main-menu{ + li{ + a, span{ + padding: 0.75em; + font-size: 0.9em; + } + a:hover{ + background:#444; + @include background(linear-gradient(#000, #444 10%, #444 95%, #111)); + } + a.report-a-problem-btn { + background:$primary; + padding:0.25em; + margin:0.5em; + color:#333; + @include border-radius(0.25em); + &:hover { + background:$primary/1.1; + } + } + span { + color:$primary; + } + } + } + &#mysoc-menu{ + padding: 0em 0.5em; + margin-left: 0.25em; + background:$primary url(images/tile-y.jpg); + @include border-radius(0 0 0.375em 0.375em); + li{ + a{ + background:none; + color:#000; + text-transform: uppercase; + font-size: 0.6875em; + padding: 1.3em 0.7em 1em 0.7em; + &#mysoc-logo { + width:84px; + height:16px; + background-position:-260px -43px; + opacity: 0.8; + &:hover { + opacity: 1; + } + } + &:hover{ + color:#fff; + } + } + } + } + } } -/* Giving this a display: table-caption, and #wrapper3 a caption-side: top, - * means that this div appears above the main content, even though it is below - * it in source order. */ -#navigation { - border: none; - padding-top: 0; + + + +// .content Is the white box + +// The narrow single column box +.content{ + width: 27em; + margin-top: 3em; + background: #fff; + padding: 1em; + padding-bottom: 3em; + margin-left: 0.5em; + margin-bottom: -1em; + @include box-shadow(0px 0px 6px 1px #000); +} +.ie6, .ie7, .ie8 { + .content { + // If no box-shadow, just want a boring black border to stand it out from the map. + border: 1px solid black; + //take off margins so we line up properly margin: 0; - display: table-caption; - line-height: 1.2; + } +} +//weird margining thing for ie8 +.ie8 .content { + margin-top:3em; } -#navigation .spacer { - display: table-cell; - width: 100%; +// map page - has fixed header and different styling +body.mappage { + .content { + float:left; + } + #main-nav ul#main-menu li a, + #main-nav ul#main-menu li span { + padding: 1.4em 0.75em 1.35em 0.75em; + } + #main-nav ul#main-menu li a.report-a-problem-btn { + padding: 0.5em; + margin:0.9em 0.25em 0.85em 0.25em; + } + .nav-wrapper{ + .nav-wrapper-2{ + position: fixed; + background: #222; + @include background(linear-gradient(#000, #222 10%, #222 90%, #000)); + } + } + #site-logo{ + position: fixed; + } +} +.ie6, .ie7 { + body.mappage { + // The below is *mandatory* to allow pins/zoom to be clickable in IE6/7. Do NOT remove. + .container { + float: left; + width: 27em; + margin-left: 1.4em; + } + .nav-wrapper{ + z-index:1; + .nav-wrapper-2 { + position:static; + } + } + #site-logo { + position: absolute; + } + } +} +.ie6 { + body.mappage { + .container { + margin-left: 0.7em; + } + } +} +//ie8 needs different stuff on .nav-wrapper so we +//have to define all the rest of it again as this resets +//the z-index base yet again :S +.ie8 { + body.mappage { + .nav-wrapper{ + position: relative; + z-index:0; + .nav-wrapper-2 { + position:static; + } + } + #site-logo { + position: absolute; + } + } } -/* The two lists in the navigation are displayed as simple horizontal lists in - * table cells. */ -.nav { - display: table-cell; - width: auto; - white-space: nowrap; - margin: 0; - padding: 0; - list-style-type: none; - vertical-align: top; + + +// full width page +body.fullwidthpage { + .content { + width: 57em; + } + .intro { + width:40em; + } +} +// two thirds width page, also has option for a sidebar which can be sticky or not +body.twothirdswidthpage { + @extend .fullwidthpage; + .content { + width:40em; + position: relative; + aside { + background:#eee; + position:absolute; + left:42em; + top:0; + z-index: -1; + width:13em; + padding:1em; + @include box-shadow(0px 0px 6px 1px #000); + h2 { + margin-top: 0; + } + img { + margin-bottom: 0.25em; + } + } + .sticky-sidebar { + position: absolute; + left:42em; + z-index: -1; + aside { + position: fixed; + top:7em; + left:auto; + } + } + } +} +//as ie6 doesn't like 'fixed' we will make it absolute again +.ie6 body.twothirdswidthpage .content .sticky-sidebar { + position:static; + aside { + position:absolute; + left:42em; + top:0; + } } -.nav li { - display: inline-block; + +// table wrapper - this enables anything to become a +// table with div children as table cells +.tablewrapper { + display:table; + width:100%; + padding:0 0 1em 0; + >div { + display:table-cell; + width:50%; + } + .full-width { + width:auto; + margin:0; + } } -.nav a, .nav span { - text-decoration: none; - display: block; - padding: 10px; +//fix table to be a block for ie, float the children +.ie6, .ie7 { + .tablewrapper { + display:block; + div {//ie6 doesn't support '>div', so we'll go with the somewhat risker 'div' + width:48%; + display:block; + float: left; + border:none !important; + } + } } -.nav span { - text-decoration: underline; +// adds border to the top and goes full width +.bordered { + margin:0 -1em; + padding:0 1em; + width:auto; + border-top:0.25em solid $primary; } -#site-nav a, #site-nav span { - color: $colour; - padding: 9px 20px 8px 0px; +//footer blocks +#footer-mobileapps { + border-right:1em solid #fff; + background:none; + padding:0; + @include box-shadow(inset rgba(0, 0, 0, 0) 0 0 0); + h2 { + color:#222; + margin-top:0; + } + ul { + @include list-reset; + li { + border-bottom:none; + float:left; + margin:0 1em 1em 0; + a { + color:#222; + padding:0; + width: 96px; + height: 32px; + margin:0 auto; + text-indent: -999999px; + background: url(images/sprite.png) -12px -3610px no-repeat; + opacity: 0.8; + &:hover { + opacity: 1; + } + &.m-app-iphone { + background-position: -12px -3610px; + } + &.m-app-iphone-streetreport { + background-position: -12px -3678px; + height:50px; + } + &.m-app-droid { + background-position: -12px -3756px; + } + &.m-app-nokia { + background-position: -12px -3820px; + width:74px; + } + } + } + } +} +.ie6, .ie7 { + #footer-mobileapps { + margin:0 0.5em; + margin-right:2%; + } +} +.ie6 #footer-mobileapps ul li a { + background:url(images/ie_mobileapps.gif) -1px -1px no-repeat; + &.m-app-iphone-streetreport { + background-position: -1px -69px; + height:50px; + } + &.m-app-droid { + background-position: -1px -148px; + } + &.m-app-nokia { + background-position: -1px -212px; + width:74px; + } } -#site-nav a:hover { - color: #000; +#footer-help { + border-left:1em solid #fff; + ul { + display:table; + li { + display:table-cell; + border-bottom:none; + &:last-child { + border-left:1.25em solid #fff; + } + } + } +} +.ie6, .ie7 { + #footer-help { + margin-left:2%; + ul { + width:100%; + li { + float:left; + width:45% + } + } + } } -#mysociety-nav { - line-height: 1.5; - font-size: 68.75%; - text-transform: uppercase; - background-color: #3c3c3c; - background-image: url(/cobrands/fixmystreet/texture.png); - border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - -webkit-border-radius: 0 0 6px 6px; + +// map box (fallback for non js really as most users +// will have fullscreen map) +#map_box{ + position: absolute; + height: 29em; + width: 29em; + right: 1em; + top: 3em; + z-index:1; } -#mysociety-nav li a { - color: #fff; +// Pull OpenLayers navigation down a bit +#fms_pan_zoom { + top: 4.75em !important; } -#mysociety-nav li a:hover { - color: #ffe600; +// push zoom back over to right +#fms_pan_zoom_zoomin { + left:auto !important; + right:30px; + top:130px !important; +} +#fms_pan_zoom_zoomout { + left:auto !important; + right:30px; + top:174px !important; } -#mysociety-logo { - width: 78px; - background: url(mysociety-logo.png) center center no-repeat; - text-indent: -999999em; +.olControlAttribution { + bottom:0.5em !important; + left: auto !important; } -/* As IE6 cannot cope with the PNG transparency (the above logo will work on - * any colour), we generate a static non-transparent PNG on the right - * background colour and use that here. */ -.ie6 #mysociety-logo { - background: url(mysociety-logo-ie6.gif) center center no-repeat; +#sub_map_links { + left:auto; + bottom:auto; + bottom:2em; + #map_links_toggle { + display:block; + cursor: pointer; + position:absolute; + left:-1em; + width:1em; + height:100%; + background:#000 url(images/sprite.png) right -4119px no-repeat; + @include border-radius(0.25em 0 0 0.25em); + &:hover { + left:-1.5em; + //use border so we don't have to redefine the background-position + border-right:0.5em solid #000; + } + &.closed { + background-position: right -4159px; + } + } +} +.ie6 #sub_map_links #map_links_toggle { + height:1.75em; + background:#000 url('images/ie_sub_map_links_sprite.gif') center -143px no-repeat; + &.closed { + background-position: center -183px; + } } -#footer p { - text-align: center; - display: table-cell; - width: 31%; - padding: 0 1%; +// log in bit, pokes above the .content div +#user-meta{ + display:block; + position: relative; + max-width: 57em; + margin:0 auto; + p { + @include inline-block; + position:absolute; + top:1em; + height:2em; + padding:0.25em 6em 0.5em 0.5em; + @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); + a { + top:0.5em; + right:0.5em; + font-size:0.6875em; + padding:0.5em 0.75em; + line-height:1em; + &:hover { + text-decoration:none; + background:#444; + } + } + } +} +.ie6, .ie7 { + #user-meta { + z-index:1; + p { + top:-2em; + } + } +} +.ie6 #user-meta { + width:57em; //ie6 doesn't like max-width +} + + + +// Wraps around #key-tools box - sticks to the bottom of the screen on desktop +.shadow-wrap { + position:fixed; + z-index:10; //this is just to ensure anythign inside .content that has position set goes sites it + bottom: 0; + width: 29em; + overflow: hidden; + padding-top: 3em; + ul#key-tools { + border-top: 0.25em solid $primary; margin: 0; + @include box-shadow(-0em 0px 1em 1em #fff); + li { + border:none; + a { + font-size: 0.75em; + color:#888888; + padding: 0.5em 1.5em 0.5em 0; + text-transform:none; + &.abuse { + background-image:url(images/sprite.png); + background-position:right -2935px; + } + &.feed { + background-image:url(images/sprite.png); + background-position:right -3074px; + } + &.chevron { + background-image:url(images/sprite.png); + background-position:right -3225px; + } + &.hover { + background-image:url(images/sprite.png); + background-position:right -1876px; + } + } + } + &.singleton { + li { + text-align:right; + a { + padding-right:3em; + } + } + } + } + &.static { + padding:0 0 1em 0; + position: static; + } +} +// The padding is for the fading out when it's fixed positioned, which it isn't in IE6. +.ie6 .shadow-wrap { + padding-top: 0; +} + +// pokes over the RHS with a little triangle +.big-green-banner { + top:auto; + right:-1.25em; + margin-left:-2em; + font-size:1.375em; + padding:1em 3em 1em 1em; + background: $contrast1 url(images/sprite.png) right -2188px no-repeat; + &:before { + right:0; + left:auto; + top:-0.5em; + position: absolute; + border-top: 0.5em solid transparent; + border-left: 0.5em solid #4B8304; + border-bottom:none; + } +} +.ie6 .big-green-banner { + background: $contrast1 url(images/ie_green_chevron.gif) right center no-repeat; +} + +.banner { + // state banners + p { + top:-2.25em; + padding:1em; + &:before { + left:-0.75em; + border-left: 0.75em solid transparent; + border-bottom: 0.75em solid #888; + } + &#fixed { + padding-top:5em; + background-image:url(images/sprite.png); + background-position:-324px -326px; + background-repeat:no-repeat; + &:before { + border-bottom: 0.75em solid #4B8304; + } + } + } +} +.ie6 .banner p { + top:-1.5em; + &#fixed { + background-image:url(images/ie_fixed.gif); + background-position:center 0.75em; + } +} + + +// for pulling elements fullwidth regardless +// of .contents' padding +.full-width{ + margin: 0 0 0em -1em; + width: 29em; +} + +/*FORMS*/ +input[type=text], +input[type=password], +input[type=email], +textarea{ + width: 25em; +} +.form-box { + max-width:25em; +} + + +/* form errors */ +div.form-error, +p.form-error { + display:block; + width:24.7em; +} + +input.form-error, +textarea.form-error { + @include border-radius(0 0 0.25em 0.25em); } -/* IE6 and IE7 do no understand display:table, but we'd like them to get the - * grasp of the right thing, rather than the mobile-first default. So move the - * navigation bar into place with position:absolute, and float all the list - * items. */ + +// Report a problem sidebar notes +#report-a-problem-sidebar { + position:absolute; + z-index:-1;//push behind .content, .container resets z-index for this + left:29.5em; + top:5em; + width:15em; + @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); + .sidebar-tips { + background:#eeeeee; + padding:1em; + font-size:0.75em; + } + .sidebar-notes { + background:#333333; + padding:1em; + color:#ffffff; + font-size:0.75em; + } +} .ie6, .ie7 { + #report-a-problem-sidebar { + left: 29em; // 0.5em left margin gone on .content in IE6/7, so reduce this accordingly. + } +} + +.no-js .general-sidebar-notes, +.no-js #report-a-problem-sidebar { + position: static; + width: auto; + @include box-shadow(rgba(0, 0, 0, 0), 0, 0, 0); + .sidebar-tips, + .sidebar-notes { + font-size:1em; + } +} + +// More general sidebar notes +.general-sidebar-notes { + position: absolute; + left:29.5em; + width:15em; + z-index: -1; //push behind .content, .container resets z-index for this + @include box-shadow(rgba(0, 0, 0, 0.6) 0px 0px 4px 1px); + p { + background:#eeeeee; + font-size:0.75em; + padding:0.75em; + margin:0; + &.dark { + background:#333333; + color:#ffffff; + } + } +} + +// Frontpage + +body.frontpage { + .table-cell { + // we do this so we can have full screen width elements + >.container { + width:100%; + } + .content { + margin:14em auto 0 auto; + } + } + .nav-wrapper-2{ + height:6em; + } + #site-header{ + height:9em; + } + #site-logo{ + top:3em; + width: 300px; + height: 60px; + background-position:-2px -108px; + } + #user-meta { + z-index:10; + p { + top:-4em; + right:0; + color:#FFD000; + background:none; + @include box-shadow(rgba(0, 0, 0, 0) 0 0 0); + a { + background:#fff; + color:#1a1a1a; + &:hover { + background:#ddd; + } + } + } + } +} +//logo fix +.ie6, .ie7, .ie8 { + body.frontpage { + #site-logo { + position:relative; + width:60em; + margin:0 auto; + } + } +} +.ie6, .ie7 { + body.frontpage { + #site-header { + height:3em; + } + #site-logo { + top:-1em; + } + #user-meta p { + top:-2em; + } + } +} +.ie6 body.frontpage #site-logo { + background:url(images/ie_front_logo.gif) 0 0 no-repeat; +} +//weird margining thing for ie8 +.ie8 body.frontpage { + #front-main { + top:-12em; + } + .table-cell .content { + margin-top:12em; + } +} - #navigation { - position: absolute; - top: 7px; - right: 0; - width: 47em; +// big yellow bit full screen width +#front-main { + background:$primary url(images/tile-y.jpg); + position:absolute; + width:100%; + left:0; + top:-15em; + #front-main-container { + max-width: 57em; + margin:0 auto; + } + h2 { + font-style:normal; + margin:0; + color:#222; + } + #postcodeForm { + background:none; + overflow:hidden; + margin-right:0.5em; + label { + margin:0.5em 0; + } + div { + display:block; + margin:0 auto; + width:20em; + overflow:hidden; + input#pc { + display:block; + float:left; + padding:0.25em 0.5em; + height:1.5em; + width:16em; + } + input#submit { + display:block; + float:right; + width:3em; + height:2.3em; + padding-top:0.2em; + } } + } + a#geolocate_link { + background:none; + color:#222; + margin:-1em 0 0.5em 0; + &:hover { + text-decoration:underline; + background:none; + } + } +} +.ie6, .ie7 { + #front-main { + top:2em; + } +} + - #navigation .spacer { - display: none; +#front-howto { + border-right:1em solid #fff; + #front_stats { + background:none; + border-top:0.25em solid $primary; + padding-top:1em; + div { + big { + color:$primary; + font-size:3.2308em; + } } + } +} +.ie6, .ie7 { + #front_stats { + div { + width:8em; + float:left; + } + } +} + +#front-recently { + border-left:1em solid #fff; +} + +#front-howto h2, +#front-recently h2 { + margin-top:0; +} - .nav { - float: left; + +.ie6, .ie7 { + .tablewrapper { + #front-howto { + margin-right:2%; } + #front-recently { + margin-left:2%; + } + } +} - .nav li { - float: left; - display: block; + + + +/* MEDIA QUERIES */ +@media only screen and (min-width: 48em) and (max-width: 61em) { + .container { + width: 100%; + } + /*FORMS*/ + input[type=text], + input[type=password], + input[type=email], + textarea{ + width: 95%; + } + + // Remove central positioning of mainmenu and float right. + // Left padding is to ensure no overlap of the site-logo + // Background styling replicates header styling + + #main-nav{ + width: auto; + float:right; + padding-left: 180px; + } + .nav-wrapper { + // width:auto; + .nav-wrapper-2 { + // width:auto; } + } - .nav a { - display: block; + //Main menu drops below logo and my-soc menu + #main-menu{ + margin-top: 3em; + } + //therefore header needs to open up + #site-header { + height:6em; + } + // Pull OpenLayers navigation down a bit more + #fms_pan_zoom { + top: 7em !important; + } + + //fix the left margin on login bit + #user-meta { + p { + left:1em; + } + } + body.frontpage { + #user-meta { + p { + left:auto; + } } + } + + //Map becomes percentage width + #map_box{ + left: 32em; + width:auto; + } - #footer p { - text-align: left; - width: auto; - padding: 0; - margin: 0.5em 0; + //put the RAP notes into the main copy area + // Note: Also used for the non-JS case. + #report-a-problem-sidebar, + .general-sidebar-notes { + position: static; + width: auto; + @include box-shadow(rgba(0, 0, 0, 0), 0, 0, 0); + .sidebar-tips, + .sidebar-notes { + font-size:1em; } + } + //Revert to mobile use of the .full-width class + .full-width{ + width: auto; + margin: 0em -1em 0 -1em; + } + + //make fullpage auto width + body.fullwidthpage .content { + width: auto; + } + + //make twothirdswidthpage nearly as small as main + //.content: just enough to still fit the sidebar in + body.twothirdswidthpage { + .content { + width:30em; + .sticky-sidebar { + left:32em; + top:30em; + aside { + top:9em; + } + } + } + } } diff --git a/web/cobrands/fixmystreet/mysociety-logo-ie6.gif b/web/cobrands/fixmystreet/mysociety-logo-ie6.gif Binary files differdeleted file mode 100644 index b0a262666..000000000 --- a/web/cobrands/fixmystreet/mysociety-logo-ie6.gif +++ /dev/null diff --git a/web/cobrands/fixmystreet/mysociety-logo.png b/web/cobrands/fixmystreet/mysociety-logo.png Binary files differdeleted file mode 100644 index 8b7d6fc75..000000000 --- a/web/cobrands/fixmystreet/mysociety-logo.png +++ /dev/null diff --git a/web/cobrands/fixmystreet/texture.png b/web/cobrands/fixmystreet/texture.png Binary files differdeleted file mode 100644 index 31ac97633..000000000 --- a/web/cobrands/fixmystreet/texture.png +++ /dev/null diff --git a/web/favicon.ico b/web/favicon.ico Binary files differindex 4c3d992ab..ee7512592 100644 --- a/web/favicon.ico +++ b/web/favicon.ico diff --git a/web/i/pin-green.png b/web/i/pin-green.png Binary files differnew file mode 100644 index 000000000..8b64d5160 --- /dev/null +++ b/web/i/pin-green.png diff --git a/web/i/pin-red.png b/web/i/pin-red.png Binary files differnew file mode 100644 index 000000000..9b754e42e --- /dev/null +++ b/web/i/pin-red.png diff --git a/web/i/pin-shadow-big.png b/web/i/pin-shadow-big.png Binary files differnew file mode 100644 index 000000000..113184b94 --- /dev/null +++ b/web/i/pin-shadow-big.png diff --git a/web/i/pin-shadow.png b/web/i/pin-shadow.png Binary files differindex 1b6d2380f..8b470592a 100644 --- a/web/i/pin-shadow.png +++ b/web/i/pin-shadow.png diff --git a/web/i/pin-yellow-big.png b/web/i/pin-yellow-big.png Binary files differnew file mode 100644 index 000000000..59ed29dbd --- /dev/null +++ b/web/i/pin-yellow-big.png diff --git a/web/i/pin-yellow.png b/web/i/pin-yellow.png Binary files differnew file mode 100644 index 000000000..f9359b0b3 --- /dev/null +++ b/web/i/pin-yellow.png diff --git a/web/i/pinB.png b/web/i/pinB.png Binary files differdeleted file mode 100644 index 0d549dc8c..000000000 --- a/web/i/pinB.png +++ /dev/null diff --git a/web/i/pinG.png b/web/i/pinG.png Binary files differdeleted file mode 100644 index 388658fd9..000000000 --- a/web/i/pinG.png +++ /dev/null diff --git a/web/i/pinP.png b/web/i/pinP.png Binary files differdeleted file mode 100644 index 4e835234c..000000000 --- a/web/i/pinP.png +++ /dev/null diff --git a/web/i/pinR.png b/web/i/pinR.png Binary files differdeleted file mode 100644 index c16299fd2..000000000 --- a/web/i/pinR.png +++ /dev/null diff --git a/web/js/OpenLayers.fixmystreet.js b/web/js/OpenLayers.fixmystreet.js index eab691def..ba874e424 100644 --- a/web/js/OpenLayers.fixmystreet.js +++ b/web/js/OpenLayers.fixmystreet.js @@ -198,7 +198,7 @@ var str=coordinatedegrees+"\u00B0";if(dmsOption.indexOf('dm')>=0){if(coordinatem str+=coordinateminutes+"'";if(dmsOption.indexOf('dms')>=0){if(coordinateseconds<10){coordinateseconds="0"+coordinateseconds;} str+=coordinateseconds+'"';}} if(axis=="lon"){str+=coordinate<0?OpenLayers.i18n("W"):OpenLayers.i18n("E");}else{str+=coordinate<0?OpenLayers.i18n("S"):OpenLayers.i18n("N");} -return str;};OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} +return str;};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Feature=OpenLayers.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:null,popup:null,initialize:function(layer,lonlat,data){this.layer=layer;this.lonlat=lonlat;this.data=(data!=null)?data:{};this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup);}} if(this.layer!=null&&this.marker!=null){this.layer.removeMarker(this.marker);} this.layer=null;this.id=null;this.lonlat=null;this.data=null;if(this.marker!=null){this.destroyMarker(this.marker);this.marker=null;} if(this.popup!=null){this.destroyPopup(this.popup);this.popup=null;}},onScreen:function(){var onScreen=false;if((this.layer!=null)&&(this.layer.map!=null)){var screenBounds=this.layer.map.getExtent();onScreen=screenBounds.containsLonLat(this.lonlat);} @@ -212,106 +212,7 @@ this.geometry=null;this.modified=null;OpenLayers.Feature.prototype.destroy.apply return onScreen;},getVisibility:function(){return!(this.style&&this.style.display=='none'||!this.layer||this.layer&&this.layer.styleMap&&this.layer.styleMap.createSymbolizer(this,this.renderIntent).display=='none'||this.layer&&!this.layer.getVisibility());},createMarker:function(){return null;},destroyMarker:function(){},createPopup:function(){return null;},atPoint:function(lonlat,toleranceLon,toleranceLat){var atPoint=false;if(this.geometry){atPoint=this.geometry.atPoint(lonlat,toleranceLon,toleranceLat);} return atPoint;},destroyPopup:function(){},move:function(location){if(!this.layer||!this.geometry.move){return undefined;} var pixel;if(location.CLASS_NAME=="OpenLayers.LonLat"){pixel=this.layer.getViewPortPxFromLonLat(location);}else{pixel=location;} -var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:false,propertyStyles:null,initialize:function(style,options){OpenLayers.Util.extend(this,options);this.rules=[];if(options&&options.rules){this.addRules(options.rules);} -this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i=0,len=this.rules.length;i<len;i++){this.rules[i].destroy();this.rules[i]=null;} -this.rules=null;this.defaultStyle=null;},createSymbolizer:function(feature){var style=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),feature);var rules=this.rules;var rule,context;var elseRules=[];var appliedRules=false;for(var i=0,len=rules.length;i<len;i++){rule=rules[i];var applies=rule.evaluate(feature);if(applies){if(rule instanceof OpenLayers.Rule&&rule.elseFilter){elseRules.push(rule);}else{appliedRules=true;this.applySymbolizer(rule,style,feature);}}} -if(appliedRules==false&&elseRules.length>0){appliedRules=true;for(var i=0,len=elseRules.length;i<len;i++){this.applySymbolizer(elseRules[i],style,feature);}} -if(rules.length>0&&appliedRules==false){style.display="none";} -if(style.label&&typeof style.label!=="string"){style.label=String(style.label);} -return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;if(this.defaultsPerSymbolizer===true){var defaults=this.defaultStyle;OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:defaults.pointRadius});if(symbolizer.stroke===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{strokeWidth:defaults.strokeWidth,strokeColor:defaults.strokeColor,strokeOpacity:defaults.strokeOpacity,strokeDashstyle:defaults.strokeDashstyle,strokeLinecap:defaults.strokeLinecap});} -if(symbolizer.fill===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{fillColor:defaults.fillColor,fillOpacity:defaults.fillOpacity});} -if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset});}} -return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=OpenLayers.Util.extend({},feature.attributes||feature.data);OpenLayers.Util.extend(context,this.context);for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature,i);} -return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0,len=rules.length;i<len;i++){symbolizer=rules[i].symbolizer;for(var key in symbolizer){value=symbolizer[key];if(typeof value=="object"){this.addPropertyStyles(propertyStyles,value);}else{this.addPropertyStyles(propertyStyles,symbolizer);break;}}} -return propertyStyles;},addPropertyStyles:function(propertyStyles,symbolizer){var property;for(var key in symbolizer){property=symbolizer[key];if(typeof property=="string"&&property.match(/\$\{\w+\}/)){propertyStyles[key]=true;}} -return propertyStyles;},addRules:function(rules){Array.prototype.push.apply(this.rules,rules);this.propertyStyles=this.findPropertyStyles();},setDefaultStyle:function(style){this.defaultStyle=style;this.propertyStyles=this.findPropertyStyles();},getSymbolizerPrefix:function(geometry){var prefixes=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=prefixes.length;i<len;i++){if(geometry.CLASS_NAME.indexOf(prefixes[i])!=-1){return prefixes[i];}}},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.rules){options.rules=[];for(var i=0,len=this.rules.length;i<len;++i){options.rules.push(this.rules[i].clone());}} -options.context=this.context&&OpenLayers.Util.extend({},this.context);var defaultStyle=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(defaultStyle,options);},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(value,context,feature,property){if(typeof value=="string"&&value.indexOf("${")!=-1){value=OpenLayers.String.format(value,context,[feature,property]);value=(isNaN(value)||!value)?value:parseFloat(value);} -return value;};OpenLayers.Style.SYMBOLIZER_PREFIXES=['Point','Line','Polygon','Text','Raster'];OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:false,size:null,resolution:null,map:null,initialize:function(containerID,options){this.container=OpenLayers.Util.getElement(containerID);OpenLayers.Util.extend(this,options);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent,resolutionChanged){this.extent=extent.clone();if(resolutionChanged){this.resolution=null;}},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;} -if(feature.geometry){var bounds=feature.geometry.getBounds();if(bounds){if(!bounds.intersectsBounds(this.extent)){style={display:"none"};} -var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(style.display!="none"&&style.label&&rendered!==false){var location=feature.geometry.getCentroid();if(style.labelXOffset||style.labelYOffset){var xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;var yOffset=isNaN(style.labelYOffset)?0:style.labelYOffset;var res=this.getResolution();location.move(xOffset*res,yOffset*res);} -this.drawText(feature.id,style,location);}else{this.removeText(feature.id);} -return rendered;}}},drawGeometry:function(geometry,style,featureId){},drawText:function(featureId,style,location){},removeText:function(featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} -for(var i=0,len=features.length;i<len;++i){var feature=features[i];this.eraseGeometry(feature.geometry,feature.id);this.removeText(feature.id);}},eraseGeometry:function(geometry,featureId){},moveRoot:function(renderer){},getRenderLayerId:function(){return this.container.id;},applyDefaultSymbolizer:function(symbolizer){var result=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);if(symbolizer.stroke===false){delete result.strokeWidth;delete result.strokeColor;} -if(symbolizer.fill===false){delete result.fillColor;} -OpenLayers.Util.extend(result,symbolizer);return result;},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0};OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(yOrdering){this.compare=yOrdering?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear();},insert:function(newNode){if(this.exists(newNode)){this.remove(newNode);} -var nodeId=newNode.id;this.determineZIndex(newNode);var leftIndex=-1;var rightIndex=this.order.length;var middle;while(rightIndex-leftIndex>1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}} -this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex<this.order.length){var nextElement=OpenLayers.Util.getElement(this.order[nextIndex]);if(nextElement==undefined){nextElement=this.getNextElement(nextIndex);} -return nextElement;}else{return null;}},CLASS_NAME:"OpenLayers.ElementsIndexer"});OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(indexer,newNode,nextNode){var newZIndex=indexer.getZIndex(newNode);var returnVal=0;if(nextNode){var nextZIndex=indexer.getZIndex(nextNode);returnVal=newZIndex-nextZIndex;} -return returnVal;},Z_ORDER_DRAWING_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal==0){returnVal=1;} -return returnVal;},Z_ORDER_Y_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal===0){var result=nextNode._boundsBottom-newNode._boundsBottom;returnVal=(result===0)?1:result;} -return returnVal;}};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(options&&(options.zIndexing||options.yOrdering)){this.indexer=new OpenLayers.ElementsIndexer(options.yOrdering);}},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){var child;var root=this.vectorRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} -root=this.textRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} -if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;i<len;i++){rendered=this.drawGeometry(geometry.components[i],style,featureId)&&rendered;} -return rendered;};rendered=false;var removeBackground=false;if(style.display!="none"){if(style.backgroundGraphic){this.redrawBackgroundNode(geometry.id,geometry,style,featureId);}else{removeBackground=true;} -rendered=this.redrawNode(geometry.id,geometry,style,featureId);} -if(rendered==false){var node=document.getElementById(geometry.id);if(node){if(node._style.backgroundGraphic){removeBackground=true;} -node.parentNode.removeChild(node);}} -if(removeBackground){var node=document.getElementById(geometry.id+this.BACKGROUND_ID_SUFFIX);if(node){node.parentNode.removeChild(node);}} -return rendered;},redrawNode:function(id,geometry,style,featureId){style=this.applyDefaultSymbolizer(style);var node=this.nodeFactory(id,this.getNodeType(geometry,style));node._featureId=featureId;node._boundsBottom=geometry.getBounds().bottom;node._geometryClass=geometry.CLASS_NAME;node._style=style;var drawResult=this.drawGeometryNode(node,geometry,style);if(drawResult===false){return false;} -node=drawResult.node;if(this.indexer){var insert=this.indexer.insert(node);if(insert){this.vectorRoot.insertBefore(node,insert);}else{this.vectorRoot.appendChild(node);}}else{if(node.parentNode!==this.vectorRoot){this.vectorRoot.appendChild(node);}} -this.postDraw(node);return drawResult.complete;},redrawBackgroundNode:function(id,geometry,style,featureId){var backgroundStyle=OpenLayers.Util.extend({},style);backgroundStyle.externalGraphic=backgroundStyle.backgroundGraphic;backgroundStyle.graphicXOffset=backgroundStyle.backgroundXOffset;backgroundStyle.graphicYOffset=backgroundStyle.backgroundYOffset;backgroundStyle.graphicZIndex=backgroundStyle.backgroundGraphicZIndex;backgroundStyle.graphicWidth=backgroundStyle.backgroundWidth||backgroundStyle.graphicWidth;backgroundStyle.graphicHeight=backgroundStyle.backgroundHeight||backgroundStyle.graphicHeight;backgroundStyle.backgroundGraphic=null;backgroundStyle.backgroundXOffset=null;backgroundStyle.backgroundYOffset=null;backgroundStyle.backgroundGraphicZIndex=null;return this.redrawNode(id+this.BACKGROUND_ID_SUFFIX,geometry,backgroundStyle,null);},drawGeometryNode:function(node,geometry,style){style=style||node._style;var options={'isFilled':style.fill===undefined?true:style.fill,'isStroked':style.stroke===undefined?!!style.strokeWidth:style.stroke};var drawn;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.graphic===false){options.isFilled=false;options.isStroked=false;} -drawn=this.drawPoint(node,geometry);break;case"OpenLayers.Geometry.LineString":options.isFilled=false;drawn=this.drawLineString(node,geometry);break;case"OpenLayers.Geometry.LinearRing":drawn=this.drawLinearRing(node,geometry);break;case"OpenLayers.Geometry.Polygon":drawn=this.drawPolygon(node,geometry);break;case"OpenLayers.Geometry.Surface":drawn=this.drawSurface(node,geometry);break;case"OpenLayers.Geometry.Rectangle":drawn=this.drawRectangle(node,geometry);break;default:break;} -node._options=options;if(drawn!=false){return{node:this.setStyle(node,style,options,geometry),complete:drawn};}else{return false;}},postDraw:function(node){},drawPoint:function(node,geometry){},drawLineString:function(node,geometry){},drawLinearRing:function(node,geometry){},drawPolygon:function(node,geometry){},drawRectangle:function(node,geometry){},drawCircle:function(node,geometry){},drawSurface:function(node,geometry){},removeText:function(featureId){var label=document.getElementById(featureId+this.LABEL_ID_SUFFIX);if(label){this.textRoot.removeChild(label);}},getFeatureIdFromEvent:function(evt){var target=evt.target;var useElement=target&&target.correspondingUseElement;var node=useElement?useElement:(target||evt.srcElement);var featureId=node._featureId;return featureId;},eraseGeometry:function(geometry,featureId){if((geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPoint")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiLineString")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPolygon")||(geometry.CLASS_NAME=="OpenLayers.Geometry.Collection")){for(var i=0,len=geometry.components.length;i<len;i++){this.eraseGeometry(geometry.components[i],featureId);}}else{var element=OpenLayers.Util.getElement(geometry.id);if(element&&element.parentNode){if(element.geometry){element.geometry.destroy();element.geometry=null;} -element.parentNode.removeChild(element);if(this.indexer){this.indexer.remove(element);} -if(element._style.backgroundGraphic){var backgroundId=geometry.id+this.BACKGROUND_ID_SUFFIX;var bElem=OpenLayers.Util.getElement(backgroundId);if(bElem&&bElem.parentNode){bElem.parentNode.removeChild(bElem);}}}}},nodeFactory:function(id,type){var node=OpenLayers.Util.getElement(id);if(node){if(!this.nodeTypeCompare(node,type)){node.parentNode.removeChild(node);node=this.nodeFactory(id,type);}}else{node=this.createNode(type,id);} -return node;},nodeTypeCompare:function(node,type){},createNode:function(type,id){},moveRoot:function(renderer){var root=this.root;if(renderer.root.parentNode==this.rendererRoot){root=renderer.root;} -root.parentNode.removeChild(root);renderer.rendererRoot.appendChild(root);},getRenderLayerId:function(){return this.root.parentNode.parentNode.id;},isComplexSymbol:function(graphicName){return(graphicName!="circle")&&!!graphicName;},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.symbol={"star":[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],"cross":[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],"x":[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],"square":[0,0,0,1,1,1,1,0,0,0],"triangle":[0,10,10,10,5,0,0,10]};OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(containerID){if(!this.supported()){return;} -if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);var style=document.createStyleSheet();var shapes=['shape','rect','oval','fill','stroke','imagedata','group','textbox'];for(var i=0,len=shapes.length;i<len;i++){style.addRule('olv\\:'+shapes[i],"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");}} -OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=(extent.left/resolution)|0;var top=(extent.top/resolution-this.size.h)|0;if(resolutionChanged||!this.offset){this.offset={x:left,y:top};left=0;top=0;}else{left=left-this.offset.x;top=top-this.offset.y;} -var org=left+" "+top;this.root.coordorigin=org;var roots=[this.root,this.vectorRoot,this.textRoot];var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];var size=this.size.w+" "+this.size.h;root.coordsize=size;} -this.root.style.flip="y";return true;},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);var roots=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot];var w=this.size.w+"px";var h=this.size.h+"px";var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];root.style.width=w;root.style.height=h;}},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="olv:rect";}else if(this.isComplexSymbol(style.graphicName)){nodeType="olv:shape";}else{nodeType="olv:oval";} -break;case"OpenLayers.Geometry.Rectangle":nodeType="olv:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="olv:shape";break;default:break;} -return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;var fillColor=style.fillColor;if(node._geometryClass==="OpenLayers.Geometry.Point"){if(style.externalGraphic){options.isFilled=true;if(style.graphicTitle){node.title=style.graphicTitle;} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=(((geometry.x/resolution-this.offset.x)+xOffset)|0)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)-(yOffset+height))|0)+"px";node.style.width=width+"px";node.style.height=height+"px";node.style.flip="y";fillColor="none";options.isStroked=false;}else if(this.isComplexSymbol(style.graphicName)){var cache=this.importSymbol(style.graphicName);node.path=cache.path;node.coordorigin=cache.left+","+cache.bottom;var size=cache.size;node.coordsize=size+","+size;this.drawCircle(node,geometry,style.pointRadius);node.style.flip="y";}else{this.drawCircle(node,geometry,style.pointRadius);}} -if(options.isFilled){node.fillcolor=fillColor;}else{node.filled="false";} -var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('olv:fill',node.id+"_fill");} -fill.opacity=style.fillOpacity;if(node._geometryClass==="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.opacity=style.graphicOpacity;} -fill.src=style.externalGraphic;fill.type="frame";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}} -if(fill.parentNode!=node){node.appendChild(fill);}} -var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)){node._rotation=rotation;if(style.externalGraphic){this.graphicRotate(node,xOffset,yOffset,style);fill.opacity=0;}else if(node._geometryClass==="OpenLayers.Geometry.Point"){node.style.rotation=rotation||0;}} -var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){node.stroked=false;if(stroke){stroke.on=false;}}else{if(!stroke){stroke=this.createNode('olv:stroke',node.id+"_stroke");node.appendChild(stroke);} -stroke.on=true;stroke.color=style.strokeColor;stroke.weight=style.strokeWidth+"px";stroke.opacity=style.strokeOpacity;stroke.endcap=style.strokeLinecap=='butt'?'flat':(style.strokeLinecap||'round');if(style.strokeDashstyle){stroke.dashstyle=this.dashStyle(style);}} -if(style.cursor!="inherit"&&style.cursor!=null){node.style.cursor=style.cursor;} -return node;},graphicRotate:function(node,xOffset,yOffset,style){var style=style||node._style;var rotation=style.rotation||0;var aspectRatio,size;if(!(style.graphicWidth&&style.graphicHeight)){var img=new Image();img.onreadystatechange=OpenLayers.Function.bind(function(){if(img.readyState=="complete"||img.readyState=="interactive"){aspectRatio=img.width/img.height;size=Math.max(style.pointRadius*2,style.graphicWidth||0,style.graphicHeight||0);xOffset=xOffset*aspectRatio;style.graphicWidth=size*aspectRatio;style.graphicHeight=size;this.graphicRotate(node,xOffset,yOffset,style);}},this);img.src=style.externalGraphic;return;}else{size=Math.max(style.graphicWidth,style.graphicHeight);aspectRatio=style.graphicWidth/style.graphicHeight;} -var width=Math.round(style.graphicWidth||size*aspectRatio);var height=Math.round(style.graphicHeight||size);node.style.width=width+"px";node.style.height=height+"px";var image=document.getElementById(node.id+"_image");if(!image){image=this.createNode("olv:imagedata",node.id+"_image");node.appendChild(image);} -image.style.width=width+"px";image.style.height=height+"px";image.src=style.externalGraphic;image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader("+"src='', sizingMethod='scale')";var rot=rotation*Math.PI/180;var sintheta=Math.sin(rot);var costheta=Math.cos(rot);var filter="progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')\n";var opacity=style.graphicOpacity||style.fillOpacity;if(opacity&&opacity!=1){filter+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+ -opacity+")\n";} -node.style.filter=filter;var centerPoint=new OpenLayers.Geometry.Point(-xOffset,-yOffset);var imgBox=new OpenLayers.Bounds(0,0,width,height).toGeometry();imgBox.rotate(style.rotation,centerPoint);var imgBounds=imgBox.getBounds();node.style.left=Math.round(parseInt(node.style.left)+imgBounds.left)+"px";node.style.top=Math.round(parseInt(node.style.top)-imgBounds.bottom)+"px";},postDraw:function(node){node.style.visibility="visible";var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.fillcolor!=fillColor){node.fillcolor=fillColor;} -if(strokeColor=="none"&&node.strokecolor!=strokeColor){node.strokecolor=strokeColor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution-this.offset.x)|0,(bbox.bottom/resolution-this.offset.y)|0,(bbox.right/resolution-this.offset.x)|0,(bbox.top/resolution-this.offset.y)|0);node.style.left=scaledBox.left+"px";node.style.top=scaledBox.top+"px";node.style.width=scaledBox.getWidth()+"px";node.style.height=scaledBox.getHeight()+"px";node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},dashStyle:function(style){var dash=style.strokeDashstyle;switch(dash){case'solid':case'dot':case'dash':case'dashdot':case'longdash':case'longdashdot':return dash;default:var parts=dash.split(/[ ,]/);if(parts.length==2){if(1*parts[0]>=2*parts[1]){return"longdash";} -return(parts[0]==1||parts[1]==1)?"dot":"dash";}else if(parts.length==4){return(1*parts[0]>=2*parts[1])?"longdashdot":"dashdot";} -return"solid";}},createNode:function(type,id){var node=document.createElement(type);if(id){node.id=id;} -node.unselectable='on';node.onselectstart=OpenLayers.Function.False;return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} -var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);} -return(subType==nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"olv:group");},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=(((geometry.x/resolution-this.offset.x)|0)-radius)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)|0)-radius)+"px";var diameter=radius*2;node.style.width=diameter+"px";node.style.height=diameter+"px";return node;} -return false;},drawLineString:function(node,geometry){return this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){return this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var numComponents=geometry.components.length;var parts=new Array(numComponents);var comp,x,y;for(var i=0;i<numComponents;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;parts[i]=" "+x+","+y+" l ";} -var end=(closeLine)?" x e":" e";node.path="m"+parts.join("")+end;return node;},drawPolygon:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var j,jj,points,area,first,second,i,ii,comp,pathComp,x,y;for(j=0,jj=geometry.components.length;j<jj;j++){path.push("m");points=geometry.components[j].components;area=(j===0);first=null;second=null;for(i=0,ii=points.length;i<ii;i++){comp=points[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;pathComp=" "+x+","+y;path.push(pathComp);if(i==0){path.push(" l");} -if(!area){if(!first){first=pathComp;}else if(first!=pathComp){if(!second){second=pathComp;}else if(second!=pathComp){area=true;}}}} -path.push(area?" x ":" ");} -path.push("e");node.path=path.join("");return node;},drawRectangle:function(node,geometry){var resolution=this.getResolution();node.style.left=((geometry.x/resolution-this.offset.x)|0)+"px";node.style.top=((geometry.y/resolution-this.offset.y)|0)+"px";node.style.width=((geometry.width/resolution)|0)+"px";node.style.height=((geometry.height/resolution)|0)+"px";return node;},drawText:function(featureId,style,location){var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"olv:rect");var textbox=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox");var resolution=this.getResolution();label.style.left=((location.x/resolution-this.offset.x)|0)+"px";label.style.top=((location.y/resolution-this.offset.y)|0)+"px";label.style.flip="y";textbox.innerText=style.label;if(style.cursor!="inherit"&&style.cursor!=null){textbox.style.cursor=style.cursor;} -if(style.fontColor){textbox.style.color=style.fontColor;} -if(style.fontOpacity){textbox.style.filter='alpha(opacity='+(style.fontOpacity*100)+')';} -if(style.fontFamily){textbox.style.fontFamily=style.fontFamily;} -if(style.fontSize){textbox.style.fontSize=style.fontSize;} -if(style.fontWeight){textbox.style.fontWeight=style.fontWeight;} -if(style.fontStyle){textbox.style.fontStyle=style.fontStyle;} -if(style.labelSelect===true){label._featureId=featureId;textbox._featureId=featureId;textbox._geometry=location;textbox._geometryClass=location.CLASS_NAME;} -textbox.style.whiteSpace="nowrap";textbox.inset="1px,0px,0px,0px";if(!label.parentNode){label.appendChild(textbox);this.textRoot.appendChild(label);} -var align=style.labelAlign||"cm";if(align.length==1){align+="m";} -var xshift=textbox.clientWidth*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(0,1)]);var yshift=textbox.clientHeight*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(1,1)]);label.style.left=parseInt(label.style.left)-xshift-1+"px";label.style.top=parseInt(label.style.top)+yshift+"px";},drawSurface:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var comp,x,y;for(var i=0,len=geometry.components.length;i<len;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;if((i%3)==0&&(i/3)==0){path.push("m");}else if((i%3)==1){path.push(" c");} -path.push(" "+x+","+y);} -path.push(" x e");node.path=path.join("");return node;},moveRoot:function(renderer){var layer=this.map.getLayer(renderer.container.id);if(layer instanceof OpenLayers.Layer.Vector.RootContainer){layer=this.map.getLayer(this.container.id);} -layer&&layer.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);layer&&layer.redraw();},importSymbol:function(graphicName){var id=this.container.id+"-"+graphicName;var cache=this.symbolCache[id];if(cache){return cache;} -var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');} -var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var pathitems=["m"];for(var i=0;i<symbol.length;i=i+2){var x=symbol[i];var y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);pathitems.push(x);pathitems.push(y);if(i==0){pathitems.push("l");}} -pathitems.push("x e");var path=pathitems.join(" ");var diff=(symbolExtent.getWidth()-symbolExtent.getHeight())/2;if(diff>0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left+diff;symbolExtent.right=symbolExtent.right-diff;} -cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Tween=OpenLayers.Class({INTERVAL:10,easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,interval:null,playing:false,initialize:function(easing){this.easing=(easing)?easing:OpenLayers.Easing.Expo.easeOut;},start:function(begin,finish,duration,options){this.playing=true;this.begin=begin;this.finish=finish;this.duration=duration;this.callbacks=options.callbacks;this.time=0;if(this.interval){window.clearInterval(this.interval);this.interval=null;} -if(this.callbacks&&this.callbacks.start){this.callbacks.start.call(this,this.begin);} -this.interval=window.setInterval(OpenLayers.Function.bind(this.play,this),this.INTERVAL);},stop:function(){if(!this.playing){return;} -if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);} -window.clearInterval(this.interval);this.interval=null;this.playing=false;},play:function(){var value={};for(var i in this.begin){var b=this.begin[i];var f=this.finish[i];if(b==null||f==null||isNaN(b)||isNaN(f)){OpenLayers.Console.error('invalid value for Tween');} -var c=f-b;value[i]=this.easing.apply(this,[this.time,b,c,this.duration]);} -this.time++;if(this.callbacks&&this.callbacks.eachStep){this.callbacks.eachStep.call(this,value);} -if(this.time>this.duration){this.stop();}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Format=OpenLayers.Class({options:null,externalProjection:null,internalProjection:null,data:null,keepData:false,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;},destroy:function(){},read:function(data){OpenLayers.Console.userError(OpenLayers.i18n("readNotImplemented"));},write:function(object){OpenLayers.Console.userError(OpenLayers.i18n("writeNotImplemented"));},CLASS_NAME:"OpenLayers.Format"});OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){this.regExes={'typeStr':/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,'spaces':/\s+/,'parenComma':/\)\s*,\s*\(/,'doubleParenComma':/\)\s*\)\s*,\s*\(\s*\(/,'trimParens':/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(wkt){var features,type,str;wkt=wkt.replace(/[\n\r]/g," ");var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} +var lastPixel=this.layer.getViewPortPxFromLonLat(this.geometry.getBounds().getCenterLonLat());var res=this.layer.map.getResolution();this.geometry.move(res*(pixel.x-lastPixel.x),res*(lastPixel.y-pixel.y));this.layer.drawFeature(this);return lastPixel;},toState:function(state){if(state==OpenLayers.State.UPDATE){switch(this.state){case OpenLayers.State.UNKNOWN:case OpenLayers.State.DELETE:this.state=state;break;case OpenLayers.State.UPDATE:case OpenLayers.State.INSERT:break;}}else if(state==OpenLayers.State.INSERT){switch(this.state){case OpenLayers.State.UNKNOWN:break;default:this.state=state;break;}}else if(state==OpenLayers.State.DELETE){switch(this.state){case OpenLayers.State.INSERT:break;case OpenLayers.State.DELETE:break;case OpenLayers.State.UNKNOWN:case OpenLayers.State.UPDATE:this.state=state;break;}}else if(state==OpenLayers.State.UNKNOWN){this.state=state;}},CLASS_NAME:"OpenLayers.Feature.Vector"});OpenLayers.Feature.Vector.style={'default':{fillColor:"#ee9900",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#ee9900",strokeOpacity:1,strokeWidth:1,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'select':{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},'temporary':{fillColor:"#66cccc",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#66cccc",strokeOpacity:1,strokeLinecap:"round",strokeWidth:2,strokeDashstyle:"solid",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"inherit"},'delete':{display:"none"}};OpenLayers.Format.WKT=OpenLayers.Class(OpenLayers.Format,{initialize:function(options){this.regExes={'typeStr':/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,'spaces':/\s+/,'parenComma':/\)\s*,\s*\(/,'doubleParenComma':/\)\s*\)\s*,\s*\(\s*\(/,'trimParens':/^\s*\(?(.*?)\)?\s*$/};OpenLayers.Format.prototype.initialize.apply(this,[options]);},read:function(wkt){var features,type,str;wkt=wkt.replace(/[\n\r]/g," ");var matches=this.regExes.typeStr.exec(wkt);if(matches){type=matches[1].toLowerCase();str=matches[2];if(this.parse[type]){features=this.parse[type].apply(this,[str]);} if(this.internalProjection&&this.externalProjection){if(features&&features.CLASS_NAME=="OpenLayers.Feature.Vector"){features.geometry.transform(this.externalProjection,this.internalProjection);}else if(features&&type!="geometrycollection"&&typeof features=="object"){for(var i=0,len=features.length;i<len;i++){var component=features[i];component.geometry.transform(this.externalProjection,this.internalProjection);}}}} return features;},write:function(features){var collection,geometry,type,data,isCollection;if(features.constructor==Array){collection=features;isCollection=true;}else{collection=[features];isCollection=false;} var pieces=[];if(isCollection){pieces.push('GEOMETRYCOLLECTION(');} @@ -435,17 +336,40 @@ if(cx<=px){continue;} if(x1!=x2&&(cx<Math.min(x1,x2)||cx>Math.max(x1,x2))){continue;} if(y1<y2&&(py>=y1&&py<y2)||y1>y2&&(py<y1&&py>=y2)){++crosses;}} var contained=(crosses==-1)?1:!!(crosses&1);return contained;},intersects:function(geometry){var intersect=false;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"){intersect=geometry.intersects(this);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){intersect=OpenLayers.Geometry.LineString.prototype.intersects.apply(this,[geometry]);}else{for(var i=0,len=geometry.components.length;i<len;++i){intersect=geometry.components[i].intersects(this);if(intersect){break;}}} -return intersect;},getVertices:function(nodes){return(nodes===true)?[]:this.components.slice(0,this.components.length-1);},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},getArea:function(){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getArea());for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getArea());}} -return area;},getGeodesicArea:function(projection){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getGeodesicArea(projection));for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getGeodesicArea(projection));}} -return area;},containsPoint:function(point){var numRings=this.components.length;var contained=false;if(numRings>0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i<numRings;++i){hole=this.components[i].containsPoint(point);if(hole){if(hole===1){contained=1;}else{contained=false;} -break;}}}}} -return contained;},intersects:function(geometry){var intersect=false;var i,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"||geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){for(i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}} -if(!intersect){for(i=0,len=geometry.components.length;i<len;++i){intersect=this.containsPoint(geometry.components[i]);if(intersect){break;}}}}else{for(i=0,len=geometry.components.length;i<len;++i){intersect=this.intersects(geometry.components[i]);if(intersect){break;}}} -if(!intersect&&geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){var ring=this.components[0];for(i=0,len=ring.components.length;i<len;++i){intersect=geometry.containsPoint(ring.components[i]);if(intersect){break;}}} -return intersect;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var result;if(!edge&&this.intersects(geometry)){result=0;}else{result=OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,[geometry,options]);} -return result;},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(origin,radius,sides,rotation){var angle=Math.PI*((1/sides)-(1/2));if(rotation){angle+=(rotation/180)*Math.PI;} -var rotatedAngle,x,y;var points=[];for(var i=0;i<sides;++i){rotatedAngle=angle+(i*2*Math.PI/sides);x=origin.x+(radius*Math.cos(rotatedAngle));y=origin.y+(radius*Math.sin(rotatedAngle));points.push(new OpenLayers.Geometry.Point(x,y));} -var ring=new OpenLayers.Geometry.LinearRing(points);return new OpenLayers.Geometry.Polygon([ring]);};OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isSingleTouch:function(event){return event.touches&&event.touches.length==1;},isMultiTouch:function(event){return event.touches&&event.touches.length>1;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} +return intersect;},getVertices:function(nodes){return(nodes===true)?[]:this.components.slice(0,this.components.length-1);},CLASS_NAME:"OpenLayers.Geometry.LinearRing"});OpenLayers.Renderer=OpenLayers.Class({container:null,root:null,extent:null,locked:false,size:null,resolution:null,map:null,initialize:function(containerID,options){this.container=OpenLayers.Util.getElement(containerID);OpenLayers.Util.extend(this,options);},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null;},supported:function(){return false;},setExtent:function(extent,resolutionChanged){this.extent=extent.clone();if(resolutionChanged){this.resolution=null;}},setSize:function(size){this.size=size.clone();this.resolution=null;},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution;},drawFeature:function(feature,style){if(style==null){style=feature.style;} +if(feature.geometry){var bounds=feature.geometry.getBounds();if(bounds){if(!bounds.intersectsBounds(this.extent)){style={display:"none"};} +var rendered=this.drawGeometry(feature.geometry,style,feature.id);if(style.display!="none"&&style.label&&rendered!==false){var location=feature.geometry.getCentroid();if(style.labelXOffset||style.labelYOffset){var xOffset=isNaN(style.labelXOffset)?0:style.labelXOffset;var yOffset=isNaN(style.labelYOffset)?0:style.labelYOffset;var res=this.getResolution();location.move(xOffset*res,yOffset*res);} +this.drawText(feature.id,style,location);}else{this.removeText(feature.id);} +return rendered;}}},drawGeometry:function(geometry,style,featureId){},drawText:function(featureId,style,location){},removeText:function(featureId){},clear:function(){},getFeatureIdFromEvent:function(evt){},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} +for(var i=0,len=features.length;i<len;++i){var feature=features[i];this.eraseGeometry(feature.geometry,feature.id);this.removeText(feature.id);}},eraseGeometry:function(geometry,featureId){},moveRoot:function(renderer){},getRenderLayerId:function(){return this.container.id;},applyDefaultSymbolizer:function(symbolizer){var result=OpenLayers.Util.extend({},OpenLayers.Renderer.defaultSymbolizer);if(symbolizer.stroke===false){delete result.strokeWidth;delete result.strokeColor;} +if(symbolizer.fill===false){delete result.fillColor;} +OpenLayers.Util.extend(result,symbolizer);return result;},CLASS_NAME:"OpenLayers.Renderer"});OpenLayers.Renderer.defaultSymbolizer={fillColor:"#000000",strokeColor:"#000000",strokeWidth:2,fillOpacity:1,strokeOpacity:1,pointRadius:0};OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:true,hitOverflow:0,canvas:null,features:null,pendingRedraw:false,initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};if(this.hitDetection){this.hitCanvas=document.createElement("canvas");this.hitContext=this.hitCanvas.getContext("2d");}},eraseGeometry:function(geometry,featureId){this.eraseFeatures(this.features[featureId][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setSize:function(size){this.size=size.clone();var root=this.root;root.style.width=size.w+"px";root.style.height=size.h+"px";root.width=size.w;root.height=size.h;this.resolution=null;if(this.hitDetection){var hitCanvas=this.hitCanvas;hitCanvas.style.width=size.w+"px";hitCanvas.style.height=size.h+"px";hitCanvas.width=size.w;hitCanvas.height=size.h;}},drawFeature:function(feature,style){var rendered;if(feature.geometry){style=this.applyDefaultSymbolizer(style||feature.style);var bounds=feature.geometry.getBounds();rendered=(style.display!=="none")&&!!bounds&&bounds.intersectsBounds(this.extent);if(rendered){this.features[feature.id]=[feature,style];} +else{delete(this.features[feature.id]);} +this.pendingRedraw=true;} +if(this.pendingRedraw&&!this.locked){this.redraw();this.pendingRedraw=false;} +return rendered;},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;i<geometry.components.length;i++){this.drawGeometry(geometry.components[i],style,featureId);} +return;} +switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":this.drawPoint(geometry,style,featureId);break;case"OpenLayers.Geometry.LineString":this.drawLineString(geometry,style,featureId);break;case"OpenLayers.Geometry.LinearRing":this.drawLinearRing(geometry,style,featureId);break;case"OpenLayers.Geometry.Polygon":this.drawPolygon(geometry,style,featureId);break;default:break;}},drawExternalGraphic:function(geometry,style,featureId){var img=new Image();if(style.graphicTitle){img.title=style.graphicTitle;} +var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;var onLoad=function(){if(!this.features[featureId]){return;} +var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var x=(p0+xOffset)|0;var y=(p1+yOffset)|0;var canvas=this.canvas;canvas.globalAlpha=opacity;var factor=OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);canvas.drawImage(img,x*factor,y*factor,width*factor,height*factor);if(this.hitDetection){this.setHitContextStyle("fill",featureId);this.hitContext.fillRect(x,y,width,height);}}};img.onload=OpenLayers.Function.bind(onLoad,this);img.src=style.externalGraphic;},setCanvasStyle:function(type,style){if(type==="fill"){this.canvas.globalAlpha=style['fillOpacity'];this.canvas.fillStyle=style['fillColor'];}else if(type==="stroke"){this.canvas.globalAlpha=style['strokeOpacity'];this.canvas.strokeStyle=style['strokeColor'];this.canvas.lineWidth=style['strokeWidth'];}else{this.canvas.globalAlpha=0;this.canvas.lineWidth=1;}},featureIdToHex:function(featureId){var id=Number(featureId.split("_").pop())+1;if(id>=16777216){this.hitOverflow=id-16777215;id=id%16777216+1;} +var hex="000000"+id.toString(16);var len=hex.length;hex="#"+hex.substring(len-6,len);return hex;},setHitContextStyle:function(type,featureId,symbolizer){var hex=this.featureIdToHex(featureId);if(type=="fill"){this.hitContext.globalAlpha=1.0;this.hitContext.fillStyle=hex;}else if(type=="stroke"){this.hitContext.globalAlpha=1.0;this.hitContext.strokeStyle=hex;this.hitContext.lineWidth=symbolizer.strokeWidth+2;}else{this.hitContext.globalAlpha=0;this.hitContext.lineWidth=1;}},drawPoint:function(geometry,style,featureId){if(style.graphic!==false){if(style.externalGraphic){this.drawExternalGraphic(geometry,style,featureId);}else{var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var twoPi=Math.PI*2;var radius=style.pointRadius;if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.fill();}} +if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.stroke();} +this.setCanvasStyle("reset");}}}}},drawLineString:function(geometry,style,featureId){style=OpenLayers.Util.applyDefaults({fill:false},style);this.drawLinearRing(geometry,style,featureId);},drawLinearRing:function(geometry,style,featureId){if(style.fill!==false){this.setCanvasStyle("fill",style);this.renderPath(this.canvas,geometry,style,featureId,"fill");if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"fill");}} +if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.renderPath(this.canvas,geometry,style,featureId,"stroke");if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"stroke");}} +this.setCanvasStyle("reset");},renderPath:function(context,geometry,style,featureId,type){var components=geometry.components;var len=components.length;context.beginPath();var start=this.getLocalXY(components[0]);var x=start[0];var y=start[1];if(!isNaN(x)&&!isNaN(y)){context.moveTo(start[0],start[1]);for(var i=1;i<len;++i){var pt=this.getLocalXY(components[i]);context.lineTo(pt[0],pt[1]);} +if(type==="fill"){context.fill();}else{context.stroke();}}},drawPolygon:function(geometry,style,featureId){var components=geometry.components;var len=components.length;this.drawLinearRing(components[0],style,featureId);for(var i=1;i<len;++i){this.canvas.globalCompositeOperation="destination-out";if(this.hitDetection){this.hitContext.globalCompositeOperation="destination-out";} +this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({stroke:false,fillOpacity:1.0},style),featureId);this.canvas.globalCompositeOperation="source-over";if(this.hitDetection){this.hitContext.globalCompositeOperation="source-over";} +this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({fill:false},style),featureId);}},drawText:function(location,style){style=OpenLayers.Util.extend({fontColor:"#000000",labelAlign:"cm"},style);var pt=this.getLocalXY(location);this.setCanvasStyle("reset");this.canvas.fillStyle=style.fontColor;this.canvas.globalAlpha=style.fontOpacity||1.0;var fontStyle=[style.fontStyle?style.fontStyle:"normal","normal",style.fontWeight?style.fontWeight:"normal",style.fontSize?style.fontSize:"1em",style.fontFamily?style.fontFamily:"sans-serif"].join(" ");var labelRows=style.label.split('\n');var numRows=labelRows.length;if(this.canvas.fillText){this.canvas.font=fontStyle;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[1]]||"middle";var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;} +var lineHeight=this.canvas.measureText('Mg').height||this.canvas.measureText('xx').width;pt[1]+=lineHeight*vfactor*(numRows-1);for(var i=0;i<numRows;i++){this.canvas.fillText(labelRows[i],pt[0],pt[1]+(lineHeight*i));}}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=fontStyle;var hfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[0]];if(hfactor==null){hfactor=-.5;} +var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;} +var lineHeight=this.canvas.mozMeasureText('xx');pt[1]+=lineHeight*(1+(vfactor*numRows));for(var i=0;i<numRows;i++){var x=pt[0]+(hfactor*this.canvas.mozMeasureText(labelRows[i]));var y=pt[1]+(i*lineHeight);this.canvas.translate(x,y);this.canvas.mozDrawText(labelRows[i]);this.canvas.translate(-x,-y);}} +this.setCanvasStyle("reset");},getLocalXY:function(point){var resolution=this.getResolution();var extent=this.extent;var x=(point.x/resolution+(-extent.left/resolution));var y=((extent.top/resolution)-point.y/resolution);return[x,y];},clear:function(){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);this.features={};if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}},getFeatureIdFromEvent:function(evt){var feature=null;if(this.hitDetection){if(!this.map.dragging){var xy=evt.xy;var x=xy.x|0;var y=xy.y|0;var data=this.hitContext.getImageData(x,y,1,1).data;if(data[3]===255){var id=data[2]+(256*(data[1]+(256*data[0])));if(id){feature=this.features["OpenLayers.Feature.Vector_"+(id-1+this.hitOverflow)][0];}}}} +return feature;},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} +for(var i=0;i<features.length;++i){delete this.features[features[i].id];} +this.redraw();},redraw:function(){if(!this.locked){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);} +var labelMap=[];var feature,style;for(var id in this.features){if(!this.features.hasOwnProperty(id)){continue;} +feature=this.features[id][0];style=this.features[id][1];this.drawGeometry(feature.geometry,style,feature.id);if(style.label){labelMap.push([feature,style]);}} +var item;for(var i=0,len=labelMap.length;i<len;++i){item=labelMap[i];this.drawText(item[0].geometry.getCentroid(),item[1]);}}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={"l":"left","r":"right","t":"top","b":"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={"l":0,"r":-1,"t":0,"b":-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(event){return event.target||event.srcElement;},isSingleTouch:function(event){return event.touches&&event.touches.length==1;},isMultiTouch:function(event){return event.touches&&event.touches.length>1;},isLeftClick:function(event){return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));},isRightClick:function(event){return(((event.which)&&(event.which==3))||((event.button)&&(event.button==2)));},stop:function(event,allowDefault){if(!allowDefault){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}} if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}},findElement:function(event,tagName){var element=OpenLayers.Event.element(event);while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase()))){element=element.parentNode;} return element;},observe:function(elementParam,name,observer,useCapture){var element=OpenLayers.Util.getElement(elementParam);useCapture=useCapture||false;if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent)){name='keydown';} if(!this.observers){this.observers={};} @@ -481,7 +405,342 @@ if(!this.element.lefttop){this.element.lefttop=[(document.documentElement.client if(!this.element.offsets){this.element.offsets=OpenLayers.Util.pagePosition(this.element);} return new OpenLayers.Pixel((evt.clientX+this.element.scrolls[0])-this.element.offsets[0] -this.element.lefttop[0],(evt.clientY+this.element.scrolls[1])-this.element.offsets[1] --this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1000},EVENT_TYPES:["preaddlayer","addlayer","preremovelayer","removelayer","changelayer","movestart","move","moveend","zoomend","popupopen","popupclose","addmarker","removemarker","clearmarkers","mouseover","mouseout","mousemove","dragstart","drag","dragend","changebaselayer"],id:null,fractionalZoom:false,events:null,allOverlays:false,div:null,dragging:false,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,viewRequestID:0,tileSize:null,projection:"EPSG:4326",units:'degrees',resolutions:null,maxResolution:1.40625,minResolution:null,maxScale:null,minScale:null,maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:true,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(div,options){if(arguments.length===1&&typeof div==="object"){options=div;div=options&&options.div;} +-this.element.lefttop[1]);},CLASS_NAME:"OpenLayers.Events"});OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:false,evt:null,initialize:function(control,callbacks,options){OpenLayers.Util.extend(this,options);this.control=control;this.callbacks=callbacks;var map=this.map||control.map;if(map){this.setMap(map);} +this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},setMap:function(map){this.map=map;},checkModifiers:function(evt){if(this.keyMask==null){return true;} +var keyModifiers=(evt.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(evt.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(evt.altKey?OpenLayers.Handler.MOD_ALT:0);return(keyModifiers==this.keyMask);},activate:function(){if(this.active){return false;} +var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.register(events[i],this[events[i]]);}} +this.active=true;return true;},deactivate:function(){if(!this.active){return false;} +var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.unregister(events[i],this[events[i]]);}} +this.active=false;return true;},callback:function(name,args){if(name&&this.callbacks[name]){this.callbacks[name].apply(this.control,args);}},register:function(name,method){this.map.events.registerPriority(name,this,method);this.map.events.registerPriority(name,this,this.setEvent);},unregister:function(name,method){this.map.events.unregister(name,this,method);this.map.events.unregister(name,this,this.setEvent);},setEvent:function(evt){this.evt=evt;return true;},destroy:function(){this.deactivate();this.control=this.map=null;},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:true,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null;},onWheelEvent:function(e){if(!this.map||!this.checkModifiers(e)){return;} +var overScrollableDiv=false;var overLayerDiv=false;var overMapDiv=false;var elem=OpenLayers.Event.element(e);while((elem!=null)&&!overMapDiv&&!overScrollableDiv){if(!overScrollableDiv){try{if(elem.currentStyle){overflow=elem.currentStyle["overflow"];}else{var style=document.defaultView.getComputedStyle(elem,null);var overflow=style.getPropertyValue("overflow");} +overScrollableDiv=(overflow&&(overflow=="auto")||(overflow=="scroll"));}catch(err){}} +if(!overLayerDiv){for(var i=0,len=this.map.layers.length;i<len;i++){if(elem==this.map.layers[i].div||elem==this.map.layers[i].pane){overLayerDiv=true;break;}}} +overMapDiv=(elem==this.map.div);elem=elem.parentNode;} +if(!overScrollableDiv&&overMapDiv){if(overLayerDiv){var delta=0;if(!e){e=window.event;} +if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} +this.delta=this.delta+delta;if(this.interval){window.clearTimeout(this._timeoutId);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(e);},this),this.interval);}else{this.wheelZoom(e);}} +OpenLayers.Event.stop(e);}},wheelZoom:function(e){var delta=this.delta;this.delta=0;if(delta){if(this.mousePosition){e.xy=this.mousePosition;} +if(!e.xy){e.xy=this.map.getPixelFromLonLat(this.map.getCenter());} +if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Symbolizer=OpenLayers.Class({zIndex:0,initialize:function(config){OpenLayers.Util.extend(this,config);},clone:function(){var Type=eval(this.CLASS_NAME);return new Type(OpenLayers.Util.extend({},this));},CLASS_NAME:"OpenLayers.Symbolizer"});OpenLayers.Symbolizer.Raster=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Raster"});OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size,options){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;if(size){this.size=size.clone();} +this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);OpenLayers.Util.extend(this,options);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);} +OpenLayers.Util.applyDefaults(obj,this);return obj;},draw:function(){var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));this.shouldDraw=(withinMaxExtent||this.layer.displayOutsideMaxExtent);this.clear();return this.shouldDraw;},moveTo:function(bounds,position,redraw){if(redraw==null){redraw=true;} +this.bounds=bounds.clone();this.position=position.clone();if(redraw){this.draw();}},clear:function(){},getBoundsFromBaseLayer:function(position){var msg=OpenLayers.i18n('reprojectDeprecated',{'layerName':this.layer.name});OpenLayers.Console.warn(msg);var topLeft=this.layer.map.getLonLatFromLayerPx(position);var bottomRightPx=position.clone();bottomRightPx.x+=this.size.w;bottomRightPx.y+=this.size.h;var bottomRight=this.layer.map.getLonLatFromLayerPx(bottomRightPx);if(topLeft.lon>bottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} +var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,isFirstDraw:true,backBufferTile:null,maxGetUrlLength:null,initialize:function(layer,position,bounds,url,size,options){OpenLayers.Tile.prototype.initialize.apply(this,arguments);if(this.maxGetUrlLength!=null){OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame);} +this.url=url;this.frame=document.createElement('div');this.frame.style.overflow='hidden';this.frame.style.position='absolute';this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();},destroy:function(){if(this.imgDiv!=null){this.removeImgDiv();} +this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame);} +this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;} +this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);} +obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);} +var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if((OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1)||this.layer.singleTile){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);} +this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}} +if(!drawTile){return false;} +if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} +return this.renderTile();},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.getImageSize(this.bounds)||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();} +this.backBufferTile.hide();}},renderTile:function(){if(this.layer.async){this.initImgDiv();this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{this.url=this.layer.getURL(this.bounds);this.initImgDiv();this.positionImage();} +return true;},positionImage:function(){if(this.layer===null){return;} +OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){if(this.imgDiv==null){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} +if(OpenLayers.Util.isArray(this.layer.url)){this.imgDiv.urls=this.layer.url.slice();} +this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} +this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} +var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));} +this.imgDiv.viewRequestID=this.layer.map.viewRequestID;},removeImgDiv:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;} +this.imgDiv.urls=null;var child=this.imgDiv.firstChild;if(child){OpenLayers.Event.stopObservingElement(child);this.imgDiv.removeChild(child);delete child;}else{this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} +var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} +if(ratio!=1){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} +OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}}},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(OpenLayers.IS_GECKO===true){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.BROWSER_NAME=="safari"||OpenLayers.BROWSER_NAME=="opera");OpenLayers.ElementsIndexer=OpenLayers.Class({maxZIndex:null,order:null,indices:null,compare:null,initialize:function(yOrdering){this.compare=yOrdering?OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_Y_ORDER:OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER_DRAWING_ORDER;this.clear();},insert:function(newNode){if(this.exists(newNode)){this.remove(newNode);} +var nodeId=newNode.id;this.determineZIndex(newNode);var leftIndex=-1;var rightIndex=this.order.length;var middle;while(rightIndex-leftIndex>1){middle=parseInt((leftIndex+rightIndex)/2);var placement=this.compare(this,newNode,OpenLayers.Util.getElement(this.order[middle]));if(placement>0){leftIndex=middle;}else{rightIndex=middle;}} +this.order.splice(rightIndex,0,nodeId);this.indices[nodeId]=this.getZIndex(newNode);return this.getNextElement(rightIndex);},remove:function(node){var nodeId=node.id;var arrayIndex=OpenLayers.Util.indexOf(this.order,nodeId);if(arrayIndex>=0){this.order.splice(arrayIndex,1);delete this.indices[nodeId];if(this.order.length>0){var lastId=this.order[this.order.length-1];this.maxZIndex=this.indices[lastId];}else{this.maxZIndex=0;}}},clear:function(){this.order=[];this.indices={};this.maxZIndex=0;},exists:function(node){return(this.indices[node.id]!=null);},getZIndex:function(node){return node._style.graphicZIndex;},determineZIndex:function(node){var zIndex=node._style.graphicZIndex;if(zIndex==null){zIndex=this.maxZIndex;node._style.graphicZIndex=zIndex;}else if(zIndex>this.maxZIndex){this.maxZIndex=zIndex;}},getNextElement:function(index){var nextIndex=index+1;if(nextIndex<this.order.length){var nextElement=OpenLayers.Util.getElement(this.order[nextIndex]);if(nextElement==undefined){nextElement=this.getNextElement(nextIndex);} +return nextElement;}else{return null;}},CLASS_NAME:"OpenLayers.ElementsIndexer"});OpenLayers.ElementsIndexer.IndexingMethods={Z_ORDER:function(indexer,newNode,nextNode){var newZIndex=indexer.getZIndex(newNode);var returnVal=0;if(nextNode){var nextZIndex=indexer.getZIndex(nextNode);returnVal=newZIndex-nextZIndex;} +return returnVal;},Z_ORDER_DRAWING_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal==0){returnVal=1;} +return returnVal;},Z_ORDER_Y_ORDER:function(indexer,newNode,nextNode){var returnVal=OpenLayers.ElementsIndexer.IndexingMethods.Z_ORDER(indexer,newNode,nextNode);if(nextNode&&returnVal===0){var result=nextNode._boundsBottom-newNode._boundsBottom;returnVal=(result===0)?1:result;} +return returnVal;}};OpenLayers.Renderer.Elements=OpenLayers.Class(OpenLayers.Renderer,{rendererRoot:null,root:null,vectorRoot:null,textRoot:null,xmlns:null,indexer:null,BACKGROUND_ID_SUFFIX:"_background",LABEL_ID_SUFFIX:"_label",initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.rendererRoot=this.createRenderRoot();this.root=this.createRoot("_root");this.vectorRoot=this.createRoot("_vroot");this.textRoot=this.createRoot("_troot");this.root.appendChild(this.vectorRoot);this.root.appendChild(this.textRoot);this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot);if(options&&(options.zIndexing||options.yOrdering)){this.indexer=new OpenLayers.ElementsIndexer(options.yOrdering);}},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;OpenLayers.Renderer.prototype.destroy.apply(this,arguments);},clear:function(){var child;var root=this.vectorRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} +root=this.textRoot;if(root){while(child=root.firstChild){root.removeChild(child);}} +if(this.indexer){this.indexer.clear();}},getNodeType:function(geometry,style){},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;var rendered=true;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0,len=geometry.components.length;i<len;i++){rendered=this.drawGeometry(geometry.components[i],style,featureId)&&rendered;} +return rendered;};rendered=false;var removeBackground=false;if(style.display!="none"){if(style.backgroundGraphic){this.redrawBackgroundNode(geometry.id,geometry,style,featureId);}else{removeBackground=true;} +rendered=this.redrawNode(geometry.id,geometry,style,featureId);} +if(rendered==false){var node=document.getElementById(geometry.id);if(node){if(node._style.backgroundGraphic){removeBackground=true;} +node.parentNode.removeChild(node);}} +if(removeBackground){var node=document.getElementById(geometry.id+this.BACKGROUND_ID_SUFFIX);if(node){node.parentNode.removeChild(node);}} +return rendered;},redrawNode:function(id,geometry,style,featureId){style=this.applyDefaultSymbolizer(style);var node=this.nodeFactory(id,this.getNodeType(geometry,style));node._featureId=featureId;node._boundsBottom=geometry.getBounds().bottom;node._geometryClass=geometry.CLASS_NAME;node._style=style;var drawResult=this.drawGeometryNode(node,geometry,style);if(drawResult===false){return false;} +node=drawResult.node;if(this.indexer){var insert=this.indexer.insert(node);if(insert){this.vectorRoot.insertBefore(node,insert);}else{this.vectorRoot.appendChild(node);}}else{if(node.parentNode!==this.vectorRoot){this.vectorRoot.appendChild(node);}} +this.postDraw(node);return drawResult.complete;},redrawBackgroundNode:function(id,geometry,style,featureId){var backgroundStyle=OpenLayers.Util.extend({},style);backgroundStyle.externalGraphic=backgroundStyle.backgroundGraphic;backgroundStyle.graphicXOffset=backgroundStyle.backgroundXOffset;backgroundStyle.graphicYOffset=backgroundStyle.backgroundYOffset;backgroundStyle.graphicZIndex=backgroundStyle.backgroundGraphicZIndex;backgroundStyle.graphicWidth=backgroundStyle.backgroundWidth||backgroundStyle.graphicWidth;backgroundStyle.graphicHeight=backgroundStyle.backgroundHeight||backgroundStyle.graphicHeight;backgroundStyle.backgroundGraphic=null;backgroundStyle.backgroundXOffset=null;backgroundStyle.backgroundYOffset=null;backgroundStyle.backgroundGraphicZIndex=null;return this.redrawNode(id+this.BACKGROUND_ID_SUFFIX,geometry,backgroundStyle,null);},drawGeometryNode:function(node,geometry,style){style=style||node._style;var options={'isFilled':style.fill===undefined?true:style.fill,'isStroked':style.stroke===undefined?!!style.strokeWidth:style.stroke};var drawn;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.graphic===false){options.isFilled=false;options.isStroked=false;} +drawn=this.drawPoint(node,geometry);break;case"OpenLayers.Geometry.LineString":options.isFilled=false;drawn=this.drawLineString(node,geometry);break;case"OpenLayers.Geometry.LinearRing":drawn=this.drawLinearRing(node,geometry);break;case"OpenLayers.Geometry.Polygon":drawn=this.drawPolygon(node,geometry);break;case"OpenLayers.Geometry.Surface":drawn=this.drawSurface(node,geometry);break;case"OpenLayers.Geometry.Rectangle":drawn=this.drawRectangle(node,geometry);break;default:break;} +node._options=options;if(drawn!=false){return{node:this.setStyle(node,style,options,geometry),complete:drawn};}else{return false;}},postDraw:function(node){},drawPoint:function(node,geometry){},drawLineString:function(node,geometry){},drawLinearRing:function(node,geometry){},drawPolygon:function(node,geometry){},drawRectangle:function(node,geometry){},drawCircle:function(node,geometry){},drawSurface:function(node,geometry){},removeText:function(featureId){var label=document.getElementById(featureId+this.LABEL_ID_SUFFIX);if(label){this.textRoot.removeChild(label);}},getFeatureIdFromEvent:function(evt){var target=evt.target;var useElement=target&&target.correspondingUseElement;var node=useElement?useElement:(target||evt.srcElement);var featureId=node._featureId;return featureId;},eraseGeometry:function(geometry,featureId){if((geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPoint")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiLineString")||(geometry.CLASS_NAME=="OpenLayers.Geometry.MultiPolygon")||(geometry.CLASS_NAME=="OpenLayers.Geometry.Collection")){for(var i=0,len=geometry.components.length;i<len;i++){this.eraseGeometry(geometry.components[i],featureId);}}else{var element=OpenLayers.Util.getElement(geometry.id);if(element&&element.parentNode){if(element.geometry){element.geometry.destroy();element.geometry=null;} +element.parentNode.removeChild(element);if(this.indexer){this.indexer.remove(element);} +if(element._style.backgroundGraphic){var backgroundId=geometry.id+this.BACKGROUND_ID_SUFFIX;var bElem=OpenLayers.Util.getElement(backgroundId);if(bElem&&bElem.parentNode){bElem.parentNode.removeChild(bElem);}}}}},nodeFactory:function(id,type){var node=OpenLayers.Util.getElement(id);if(node){if(!this.nodeTypeCompare(node,type)){node.parentNode.removeChild(node);node=this.nodeFactory(id,type);}}else{node=this.createNode(type,id);} +return node;},nodeTypeCompare:function(node,type){},createNode:function(type,id){},moveRoot:function(renderer){var root=this.root;if(renderer.root.parentNode==this.rendererRoot){root=renderer.root;} +root.parentNode.removeChild(root);renderer.rendererRoot.appendChild(root);},getRenderLayerId:function(){return this.root.parentNode.parentNode.id;},isComplexSymbol:function(graphicName){return(graphicName!="circle")&&!!graphicName;},CLASS_NAME:"OpenLayers.Renderer.Elements"});OpenLayers.Renderer.symbol={"star":[350,75,379,161,469,161,397,215,423,301,350,250,277,301,303,215,231,161,321,161,350,75],"cross":[4,0,6,0,6,4,10,4,10,6,6,6,6,10,4,10,4,6,0,6,0,4,4,4,4,0],"x":[0,0,25,0,50,35,75,0,100,0,65,50,100,100,75,100,50,65,25,100,0,100,35,50,0,0],"square":[0,0,0,1,1,1,1,0,0,0],"triangle":[0,10,10,10,5,0,0,10]};OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",autoActivate:false,active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);} +if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);} +this.events.destroy();this.events=null;} +this.eventListeners=null;if(this.handler){this.handler.destroy();this.handler=null;} +if(this.handlers){for(var key in this.handlers){if(this.handlers.hasOwnProperty(key)&&typeof this.handlers[key].destroy=="function"){this.handlers[key].destroy();}} +this.handlers=null;} +if(this.map){this.map.removeControl(this);this.map=null;} +this.div=null;},setMap:function(map){this.map=map;if(this.handler){this.handler.setMap(map);}},draw:function(px){if(this.div==null){this.div=OpenLayers.Util.createDiv(this.id);this.div.className=this.displayClass;if(!this.allowSelection){this.div.className+=" olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=OpenLayers.Function.False;} +if(this.title!=""){this.div.title=this.title;}} +if(px!=null){this.position=px.clone();} +this.moveTo(this.position);return this.div;},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},activate:function(){if(this.active){return false;} +if(this.handler){this.handler.activate();} +this.active=true;if(this.map){OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} +this.events.triggerEvent("activate");return true;},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate();} +this.active=false;if(this.map){OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} +this.events.triggerEvent("deactivate");return true;} +return false;},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(url){url=url||window.location.href;var parameters=OpenLayers.Util.getParameters(url);var index=url.indexOf('#');if(index>0){url='?'+url.substring(index+1,url.length);OpenLayers.Util.extend(parameters,OpenLayers.Util.getParameters(url));} +return parameters;},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if((control!=this)&&(control.CLASS_NAME=="OpenLayers.Control.ArgParser")){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;} +break;}} +if(i==this.map.controls.length){var args=this.getParameters();if(args.layers){this.layers=args.layers;this.map.events.register('addlayer',this,this.configureLayers);this.configureLayers();} +if(args.lat&&args.lon){this.center=new OpenLayers.LonLat(parseFloat(args.lon),parseFloat(args.lat));if(args.zoom){this.zoom=parseInt(args.zoom);} +this.map.events.register('changebaselayer',this,this.setCenter);this.setCenter();}}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister('changebaselayer',this,this.setCenter);if(this.displayProjection){this.center.transform(this.displayProjection,this.map.getProjectionObject());} +this.map.setCenter(this.center,this.zoom);}},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister('addlayer',this,this.configureLayers);for(var i=0,len=this.layers.length;i<len;i++){var layer=this.map.layers[i];var c=this.layers.charAt(i);if(c=="B"){this.map.setBaseLayer(layer);}else if((c=="T")||(c=="F")){layer.setVisibility(c=="T");}}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:false,base:'',displayProjection:null,initialize:function(element,base,options){if(element!==null&&typeof element=='object'&&!OpenLayers.Util.isElement(element)){options=element;this.base=document.location.href;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.element!=null){this.element=OpenLayers.Util.getElement(this.element);}} +else{OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);this.base=base||document.location.href;}},destroy:function(){if(this.element.parentNode==this.div){this.div.removeChild(this.element);} +this.element=null;this.map.events.unregister('moveend',this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if(control.CLASS_NAME==this.argParserClass.CLASS_NAME){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;} +break;}} +if(i==this.map.controls.length){this.map.addControl(new this.argParserClass({'displayProjection':this.displayProjection}));}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element&&!this.anchor){this.element=document.createElement("a");this.element.innerHTML=OpenLayers.i18n("Permalink");this.element.href="";this.div.appendChild(this.element);} +this.map.events.on({'moveend':this.updateLink,'changelayer':this.updateLink,'changebaselayer':this.updateLink,scope:this});this.updateLink();return this.div;},updateLink:function(){var separator=this.anchor?'#':'?';var href=this.base;if(href.indexOf(separator)!=-1){href=href.substring(0,href.indexOf(separator));} +href+=separator+OpenLayers.Util.getParameterString(this.createParams());if(this.anchor&&!this.element){window.location.href=href;} +else{this.element.href=href;}},createParams:function(center,zoom,layers){center=center||this.map.getCenter();var params=OpenLayers.Util.getParameters(this.base);if(center){params.zoom=zoom||this.map.getZoom();var lat=center.lat;var lon=center.lon;if(this.displayProjection){var mapPosition=OpenLayers.Projection.transform({x:lon,y:lat},this.map.getProjectionObject(),this.displayProjection);lon=mapPosition.x;lat=mapPosition.y;} +params.lat=Math.round(lat*100000)/100000;params.lon=Math.round(lon*100000)/100000;layers=layers||this.map.layers;params.layers='';for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer.isBaseLayer){params.layers+=(layer==this.map.baseLayer)?"B":"0";}else{params.layers+=(layer.getVisibility())?"T":"F";}}} +return params;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:true,autoDestroy:true,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;this.active=false;},destroy:function(){this.deactivate();this.layer=null;this.options=null;},setLayer:function(layer){this.layer=layer;},activate:function(){if(!this.active){this.active=true;return true;} +return false;},deactivate:function(){if(this.active){this.active=false;return true;} +return false;},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:false,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({"refresh":this.load,scope:this});if(this.layer.visibility==true||this.preload){this.load();}else{this.layer.events.on({"visibilitychanged":this.load,scope:this});} +return true;} +return false;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"refresh":this.load,"visibilitychanged":this.load,scope:this});} +return deactivated;},load:function(options){var layer=this.layer;layer.events.triggerEvent("loadstart");layer.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,layer.map.getProjectionObject()),filter:layer.filter},options));layer.events.un({"visibilitychanged":this.load,scope:this});},merge:function(mapProjection,resp){var layer=this.layer;layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){if(!mapProjection.equals(layer.projection)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(layer.projection,mapProjection);}}} +layer.addFeatures(features);} +layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Date={toISOString:(function(){if("toISOString"in Date.prototype){return function(date){return date.toISOString();};}else{function pad(num,len){var str=num+"";while(str.length<len){str="0"+str;} +return str;} +return function(date){var str;if(isNaN(date.getTime())){str="Invalid Date";}else{str=date.getUTCFullYear()+"-"+ +pad(date.getUTCMonth()+1,2)+"-"+ +pad(date.getUTCDate(),2)+"T"+ +pad(date.getUTCHours(),2)+":"+ +pad(date.getUTCMinutes(),2)+":"+ +pad(date.getUTCSeconds(),2)+"."+ +pad(date.getUTCMilliseconds(),3)+"Z";} +return str;};}})(),parse:function(str){var date;var match=str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);if(match&&(match[1]||match[7])){var year=parseInt(match[1],10)||0;var month=(parseInt(match[2],10)-1)||0;var day=parseInt(match[3],10)||1;date=new Date(Date.UTC(year,month,day));var type=match[7];if(type){var hours=parseInt(match[4],10);var minutes=parseInt(match[5],10);var secFrac=parseFloat(match[6]);var seconds=secFrac|0;var milliseconds=Math.round(1000*(secFrac-seconds));date.setUTCHours(hours,minutes,seconds,milliseconds);if(type!=="Z"){var hoursOffset=parseInt(type,10);var minutesOffset=parseInt(match[8],10)||0;var offset=-1000*(60*(hoursOffset*60)+minutesOffset*60);date=new Date(date.getTime()+offset);}}}else{date=new Date("invalid");} +return date;}};OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(options){if(window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");} +OpenLayers.Format.prototype.initialize.apply(this,[options]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var alias in this.namespaces){this.namespaceAlias[this.namespaces[alias]]=alias;}},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,arguments);},setNamespace:function(alias,uri){this.namespaces[alias]=uri;this.namespaceAlias[uri]=alias;},read:function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} +var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;} +xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} +req.send(null);return req.responseXML;});if(this.keepData){this.data=node;} +return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} +doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} +return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} +return element;},createTextNode:function(text){var node;if(typeof text!=="string"){text=String(text);} +if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} +return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0,len=allNodes.length;i<len;++i){potentialNode=allNodes[i];fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if((name=="*")||(fullName==potentialNode.nodeName)){if((uri=="*")||(uri==potentialNode.namespaceURI)){elements.push(potentialNode);}}}} +return elements;},getAttributeNodeNS:function(node,uri,name){var attributeNode=null;if(node.getAttributeNodeNS){attributeNode=node.getAttributeNodeNS(uri,name);}else{var attributes=node.attributes;var potentialNode,fullName;for(var i=0,len=attributes.length;i<len;++i){potentialNode=attributes[i];if(potentialNode.namespaceURI==uri){fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if(fullName==potentialNode.nodeName){attributeNode=potentialNode;break;}}}} +return attributeNode;},getAttributeNS:function(node,uri,name){var attributeValue="";if(node.getAttributeNS){attributeValue=node.getAttributeNS(uri,name)||"";}else{var attributeNode=this.getAttributeNodeNS(node,uri,name);if(attributeNode){attributeValue=attributeNode.nodeValue;}} +return attributeValue;},getChildValue:function(node,def){var value=def||"";if(node){for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 3:case 4:value+=child.nodeValue;}}} +return value;},concatChildValues:function(node,def){var value="";var child=node.firstChild;var childValue;while(child){childValue=child.nodeValue;if(childValue){value+=childValue;} +child=child.nextSibling;} +if(value==""&&def!=undefined){value=def;} +return value;},isSimpleContent:function(node){var simple=true;for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===1){simple=false;break;}} +return simple;},contentType:function(node){var simple=false,complex=false;var type=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 1:complex=true;break;case 8:break;default:simple=true;} +if(complex&&simple){break;}} +if(complex&&simple){type=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;}else if(complex){return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;}else if(simple){return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE;} +return type;},hasAttributeNS:function(node,uri,name){var found=false;if(node.hasAttributeNS){found=node.hasAttributeNS(uri,name);}else{found=!!this.getAttributeNodeNS(node,uri,name);} +return found;},setAttributeNS:function(node,uri,name,value){if(node.setAttributeNS){node.setAttributeNS(uri,name,value);}else{if(this.xmldom){if(uri){var attribute=node.ownerDocument.createNode(2,name,uri);attribute.nodeValue=value;node.setAttributeNode(attribute);}else{node.setAttribute(name,value);}}else{throw"setAttributeNS not implemented";}}},createElementNSPlus:function(name,options){options=options||{};var uri=options.uri||this.namespaces[options.prefix];if(!uri){var loc=name.indexOf(":");uri=this.namespaces[name.substring(0,loc)];} +if(!uri){uri=this.namespaces[this.defaultPrefix];} +var node=this.createElementNS(uri,name);if(options.attributes){this.setAttributes(node,options.attributes);} +var value=options.value;if(value!=null){node.appendChild(this.createTextNode(value));} +return node;},setAttributes:function(node,obj){var value,uri;for(var name in obj){if(obj[name]!=null&&obj[name].toString){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}}},readNode:function(node,obj){if(!obj){obj={};} +var group=this.readers[node.namespaceURI?this.namespaceAlias[node.namespaceURI]:this.defaultPrefix];if(group){var local=node.localName||node.nodeName.split(":").pop();var reader=group[local]||group["*"];if(reader){reader.apply(this,[node,obj]);}} +return obj;},readChildNodes:function(node,obj){if(!obj){obj={};} +var children=node.childNodes;var child;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){this.readNode(child,obj);}} +return obj;},writeNode:function(name,obj,parent){var prefix,local;var split=name.indexOf(":");if(split>0){prefix=name.substring(0,split);local=name.substring(split+1);}else{if(parent){prefix=this.namespaceAlias[parent.namespaceURI];}else{prefix=this.defaultPrefix;} +local=name;} +var child=this.writers[prefix][local].apply(this,[obj]);if(parent){parent.appendChild(child);} +return child;},getChildEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.firstChild,name,uri);},getNextEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.nextSibling,name,uri);},getThisOrNextEl:function(node,name,uri){outer:for(var sibling=node;sibling;sibling=sibling.nextSibling){switch(sibling.nodeType){case 1:if((!name||name===(sibling.localName||sibling.nodeName.split(":").pop()))&&(!uri||uri===sibling.namespaceURI)){break outer;} +sibling=null;break outer;case 3:if(/^\s*$/.test(sibling.nodeValue)){break;} +case 4:case 6:case 12:case 10:case 11:sibling=null;break outer;}} +return sibling||null;},lookupNamespaceURI:function(node,prefix){var uri=null;if(node){if(node.lookupNamespaceURI){uri=node.lookupNamespaceURI(prefix);}else{outer:switch(node.nodeType){case 1:if(node.namespaceURI!==null&&node.prefix===prefix){uri=node.namespaceURI;break outer;} +var len=node.attributes.length;if(len){var attr;for(var i=0;i<len;++i){attr=node.attributes[i];if(attr.prefix==="xmlns"&&attr.name==="xmlns:"+prefix){uri=attr.value||null;break outer;}else if(attr.name==="xmlns"&&prefix===null){uri=attr.value||null;break outer;}}} +uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;case 2:uri=this.lookupNamespaceURI(node.ownerElement,prefix);break outer;case 9:uri=this.lookupNamespaceURI(node.documentElement,prefix);break outer;case 6:case 12:case 10:case 11:break outer;default:uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;}}} +return uri;},getXMLDoc:function(){if(!OpenLayers.Format.XML.document&&!this.xmldom){if(document.implementation&&document.implementation.createDocument){OpenLayers.Format.XML.document=document.implementation.createDocument("","",null);}else if(!this.xmldom&&window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}} +return OpenLayers.Format.XML.document||this.xmldom;},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Geometry.Polygon=OpenLayers.Class(OpenLayers.Geometry.Collection,{componentTypes:["OpenLayers.Geometry.LinearRing"],initialize:function(components){OpenLayers.Geometry.Collection.prototype.initialize.apply(this,arguments);},getArea:function(){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getArea());for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getArea());}} +return area;},getGeodesicArea:function(projection){var area=0.0;if(this.components&&(this.components.length>0)){area+=Math.abs(this.components[0].getGeodesicArea(projection));for(var i=1,len=this.components.length;i<len;i++){area-=Math.abs(this.components[i].getGeodesicArea(projection));}} +return area;},containsPoint:function(point){var numRings=this.components.length;var contained=false;if(numRings>0){contained=this.components[0].containsPoint(point);if(contained!==1){if(contained&&numRings>1){var hole;for(var i=1;i<numRings;++i){hole=this.components[i].containsPoint(point);if(hole){if(hole===1){contained=1;}else{contained=false;} +break;}}}}} +return contained;},intersects:function(geometry){var intersect=false;var i,len;if(geometry.CLASS_NAME=="OpenLayers.Geometry.Point"){intersect=this.containsPoint(geometry);}else if(geometry.CLASS_NAME=="OpenLayers.Geometry.LineString"||geometry.CLASS_NAME=="OpenLayers.Geometry.LinearRing"){for(i=0,len=this.components.length;i<len;++i){intersect=geometry.intersects(this.components[i]);if(intersect){break;}} +if(!intersect){for(i=0,len=geometry.components.length;i<len;++i){intersect=this.containsPoint(geometry.components[i]);if(intersect){break;}}}}else{for(i=0,len=geometry.components.length;i<len;++i){intersect=this.intersects(geometry.components[i]);if(intersect){break;}}} +if(!intersect&&geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon"){var ring=this.components[0];for(i=0,len=ring.components.length;i<len;++i){intersect=geometry.containsPoint(ring.components[i]);if(intersect){break;}}} +return intersect;},distanceTo:function(geometry,options){var edge=!(options&&options.edge===false);var result;if(!edge&&this.intersects(geometry)){result=0;}else{result=OpenLayers.Geometry.Collection.prototype.distanceTo.apply(this,[geometry,options]);} +return result;},CLASS_NAME:"OpenLayers.Geometry.Polygon"});OpenLayers.Geometry.Polygon.createRegularPolygon=function(origin,radius,sides,rotation){var angle=Math.PI*((1/sides)-(1/2));if(rotation){angle+=(rotation/180)*Math.PI;} +var rotatedAngle,x,y;var points=[];for(var i=0;i<sides;++i){rotatedAngle=angle+(i*2*Math.PI/sides);x=origin.x+(radius*Math.cos(rotatedAngle));y=origin.y+(radius*Math.sin(rotatedAngle));points.push(new OpenLayers.Geometry.Point(x,y));} +var ring=new OpenLayers.Geometry.LinearRing(points);return new OpenLayers.Geometry.Polygon([ring]);};OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=OpenLayers.Util.urlAppend(config.url,OpenLayers.Util.getParameterString(config.params||{}));var sameOrigin=!(url.indexOf("http")==0);var urlParts=!sameOrigin&&url.match(this.URL_SPLIT_REGEX);if(urlParts){var location=window.location;sameOrigin=urlParts[1]==location.protocol&&urlParts[3]==location.hostname;var uPort=urlParts[4],lPort=location.port;if(uPort!=80&&uPort!=""||lPort!="80"&&lPort!=""){sameOrigin=sameOrigin&&uPort==lPort;}} +if(!sameOrigin){if(config.proxy){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(url);}}else{OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:url});}} +request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);} +var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){if(request.readyState!==0){request.send(config.data);}},0);} +return request;},runCallbacks:function(options){var request=options.request;var config=options.config;var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;} +var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;} +if(OpenLayers.Util.createUrlObject(config.url).protocol=="file:"&&request.responseText){request.status=200;} +complete(request);if(!request.status||(request.status>=200&&request.status<300)){this.events.triggerEvent("success",options);if(success){success(request);}} +if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("failure",options);if(failure){failure(request);}}},GET:function(config){config=OpenLayers.Util.extend(config,{method:"GET"});return OpenLayers.Request.issue(config);},POST:function(config){config=OpenLayers.Util.extend(config,{method:"POST"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} +return OpenLayers.Request.issue(config);},PUT:function(config){config=OpenLayers.Util.extend(config,{method:"PUT"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} +return OpenLayers.Request.issue(config);},DELETE:function(config){config=OpenLayers.Util.extend(config,{method:"DELETE"});return OpenLayers.Request.issue(config);},HEAD:function(config){config=OpenLayers.Util.extend(config,{method:"HEAD"});return OpenLayers.Request.issue(config);},OPTIONS:function(config){config=OpenLayers.Util.extend(config,{method:"OPTIONS"});return OpenLayers.Request.issue(config);}};(function(){var oXMLHttpRequest=window.XMLHttpRequest;var bGecko=!!window.controllers,bIE=window.document.all&&!window.opera,bIE7=bIE&&window.navigator.userAgent.match(/MSIE 7.0/);function fXMLHttpRequest(){this._object=oXMLHttpRequest&&!bIE7?new oXMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[];};function cXMLHttpRequest(){return new fXMLHttpRequest;};cXMLHttpRequest.prototype=fXMLHttpRequest.prototype;if(bGecko&&oXMLHttpRequest.wrapped) +cXMLHttpRequest.wrapped=oXMLHttpRequest.wrapped;cXMLHttpRequest.UNSENT=0;cXMLHttpRequest.OPENED=1;cXMLHttpRequest.HEADERS_RECEIVED=2;cXMLHttpRequest.LOADING=3;cXMLHttpRequest.DONE=4;cXMLHttpRequest.prototype.readyState=cXMLHttpRequest.UNSENT;cXMLHttpRequest.prototype.responseText='';cXMLHttpRequest.prototype.responseXML=null;cXMLHttpRequest.prototype.status=0;cXMLHttpRequest.prototype.statusText='';cXMLHttpRequest.prototype.priority="NORMAL";cXMLHttpRequest.prototype.onreadystatechange=null;cXMLHttpRequest.onreadystatechange=null;cXMLHttpRequest.onopen=null;cXMLHttpRequest.onsend=null;cXMLHttpRequest.onabort=null;cXMLHttpRequest.prototype.open=function(sMethod,sUrl,bAsync,sUser,sPassword){delete this._headers;if(arguments.length<3) +bAsync=true;this._async=bAsync;var oRequest=this,nState=this.readyState,fOnUnload;if(bIE&&bAsync){fOnUnload=function(){if(nState!=cXMLHttpRequest.DONE){fCleanTransport(oRequest);oRequest.abort();}};window.attachEvent("onunload",fOnUnload);} +if(cXMLHttpRequest.onopen) +cXMLHttpRequest.onopen.apply(this,arguments);if(arguments.length>4) +this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);else +if(arguments.length>3) +this._object.open(sMethod,sUrl,bAsync,sUser);else +this._object.open(sMethod,sUrl,bAsync);this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);this._object.onreadystatechange=function(){if(bGecko&&!bAsync) +return;oRequest.readyState=oRequest._object.readyState;fSynchronizeValues(oRequest);if(oRequest._aborted){oRequest.readyState=cXMLHttpRequest.UNSENT;return;} +if(oRequest.readyState==cXMLHttpRequest.DONE){delete oRequest._data;fCleanTransport(oRequest);if(bIE&&bAsync) +window.detachEvent("onunload",fOnUnload);} +if(nState!=oRequest.readyState) +fReadyStateChange(oRequest);nState=oRequest.readyState;}};function fXMLHttpRequest_send(oRequest){oRequest._object.send(oRequest._data);if(bGecko&&!oRequest._async){oRequest.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(oRequest);while(oRequest.readyState<cXMLHttpRequest.DONE){oRequest.readyState++;fReadyStateChange(oRequest);if(oRequest._aborted) +return;}}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend) +cXMLHttpRequest.onsend.apply(this,arguments);if(!arguments.length) +vData=null;if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!oRequest._headers["Content-Type"]) +oRequest._object.setRequestHeader("Content-Type","application/xml");} +this._data=vData;fXMLHttpRequest_send(this);};cXMLHttpRequest.prototype.abort=function(){if(cXMLHttpRequest.onabort) +cXMLHttpRequest.onabort.apply(this,arguments);if(this.readyState>cXMLHttpRequest.UNSENT) +this._aborted=true;this._object.abort();fCleanTransport(this);this.readyState=cXMLHttpRequest.UNSENT;delete this._data;};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers) +this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.addEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) +return;this._listeners.push([sName,fHandler,bUseCapture]);};cXMLHttpRequest.prototype.removeEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) +break;if(oListener) +this._listeners.splice(nIndex,1);};cXMLHttpRequest.prototype.dispatchEvent=function(oEvent){var oEventPseudo={'type':oEvent.type,'target':this,'currentTarget':this,'eventPhase':2,'bubbles':oEvent.bubbles,'cancelable':oEvent.cancelable,'timeStamp':oEvent.timeStamp,'stopPropagation':function(){},'preventDefault':function(){},'initEvent':function(){}};if(oEventPseudo.type=="readystatechange"&&this.onreadystatechange) +(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[oEventPseudo]);for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) +if(oListener[0]==oEventPseudo.type&&!oListener[2]) +(oListener[1].handleEvent||oListener[1]).apply(this,[oEventPseudo]);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(cXMLHttpRequest.onreadystatechange) +cXMLHttpRequest.onreadystatechange.apply(oRequest);oRequest.dispatchEvent({'type':"readystatechange",'bubbles':false,'cancelable':false,'timeStamp':new Date+0});};function fGetDocument(oRequest){var oDocument=oRequest.responseXML,sResponse=oRequest.responseText;if(bIE&&sResponse&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new window.ActiveXObject("Microsoft.XMLDOM");oDocument.async=false;oDocument.validateOnParse=false;oDocument.loadXML(sResponse);} +if(oDocument) +if((bIE&&oDocument.parseError!=0)||!oDocument.documentElement||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror")) +return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){} +try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){} +try{oRequest.status=oRequest._object.status;}catch(e){} +try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments) +oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){var p=projection,equals=false;if(p){if(window.Proj4js&&this.proj.defData&&p.proj.defData){equals=this.proj.defData.replace(this.titleRegEx,"")==p.proj.defData.replace(this.titleRegEx,"");}else if(p.getCode){var source=this.getCode(),target=p.getCode();equals=source==target||!!OpenLayers.Projection.transforms[source]&&OpenLayers.Projection.transforms[source][target]===OpenLayers.Projection.nullTransform;}} +return equals;},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} +OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} +return point;};OpenLayers.Projection.nullTransform=function(point){return point;};OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,extractTracks:false,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g),kmlColor:(/(\w{2})(\w{2})(\w{2})(\w{2})/),kmlIconPalette:(/root:\/\/icons\/palette-(\d+)(\.\w+)/),straightBracket:(/\$\[(.*?)\]/g)};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:0,styleBaseUrl:this.styleBaseUrl};return this.parseData(data,options);},parseData:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} +var types=["Link","NetworkLink","Style","StyleMap","Placemark"];for(var i=0,len=types.length;i<len;++i){var type=types[i];var nodes=this.getElementsByTagNameNS(data,"*",type);if(nodes.length==0){continue;} +switch(type.toLowerCase()){case"link":case"networklink":this.parseLinks(nodes,options);break;case"style":if(this.extractStyles){this.parseStyles(nodes,options);} +break;case"stylemap":if(this.extractStyles){this.parseStyleMaps(nodes,options);} +break;case"placemark":this.parseFeatures(nodes,options);break;}} +return this.features;},parseLinks:function(nodes,options){if(options.depth>=this.maxDepth){return false;} +var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0,len=nodes.length;i<len;i++){var href=this.parseProperty(nodes[i],"*","href");if(href&&!this.fetched[href]){this.fetched[href]=true;var data=this.fetchLink(href);if(data){this.parseData(data,newOptions);}}}},fetchLink:function(href){var request=OpenLayers.Request.GET({url:href,async:false});if(request){return request.responseText;}},parseStyles:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var style=this.parseStyle(nodes[i]);if(style){var styleName=(options.styleBaseUrl||"")+"#"+style.id;this.styles[styleName]=style;}}},parseKmlColor:function(kmlColor){var color=null;if(kmlColor){var matches=kmlColor.match(this.regExes.kmlColor);if(matches){color={color:'#'+matches[4]+matches[3]+matches[2],opacity:parseInt(matches[1],16)/255};}} +return color;},parseStyle:function(node){var style={};var types=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"];var type,styleTypeNode,nodeList,geometry,parser;for(var i=0,len=types.length;i<len;++i){type=types[i];styleTypeNode=this.getElementsByTagNameNS(node,"*",type)[0];if(!styleTypeNode){continue;} +switch(type.toLowerCase()){case"linestyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["strokeColor"]=color.color;style["strokeOpacity"]=color.opacity;} +var width=this.parseProperty(styleTypeNode,"*","width");if(width){style["strokeWidth"]=width;} +break;case"polystyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fillOpacity"]=color.opacity;style["fillColor"]=color.color;} +var fill=this.parseProperty(styleTypeNode,"*","fill");if(fill=="0"){style["fillColor"]="none";} +var outline=this.parseProperty(styleTypeNode,"*","outline");if(outline=="0"){style["strokeWidth"]="0";} +break;case"iconstyle":var scale=parseFloat(this.parseProperty(styleTypeNode,"*","scale")||1);var width=32*scale;var height=32*scale;var iconNode=this.getElementsByTagNameNS(styleTypeNode,"*","Icon")[0];if(iconNode){var href=this.parseProperty(iconNode,"*","href");if(href){var w=this.parseProperty(iconNode,"*","w");var h=this.parseProperty(iconNode,"*","h");var google="http://maps.google.com/mapfiles/kml";if(OpenLayers.String.startsWith(href,google)&&!w&&!h){w=64;h=64;scale=scale/2;} +w=w||h;h=h||w;if(w){width=parseInt(w)*scale;} +if(h){height=parseInt(h)*scale;} +var matches=href.match(this.regExes.kmlIconPalette);if(matches){var palette=matches[1];var file_extension=matches[2];var x=this.parseProperty(iconNode,"*","x");var y=this.parseProperty(iconNode,"*","y");var posX=x?x/32:0;var posY=y?(7-y/32):7;var pos=posY*8+posX;href="http://maps.google.com/mapfiles/kml/pal" ++palette+"/icon"+pos+file_extension;} +style["graphicOpacity"]=1;style["externalGraphic"]=href;}} +var hotSpotNode=this.getElementsByTagNameNS(styleTypeNode,"*","hotSpot")[0];if(hotSpotNode){var x=parseFloat(hotSpotNode.getAttribute("x"));var y=parseFloat(hotSpotNode.getAttribute("y"));var xUnits=hotSpotNode.getAttribute("xunits");if(xUnits=="pixels"){style["graphicXOffset"]=-x*scale;} +else if(xUnits=="insetPixels"){style["graphicXOffset"]=-width+(x*scale);} +else if(xUnits=="fraction"){style["graphicXOffset"]=-width*x;} +var yUnits=hotSpotNode.getAttribute("yunits");if(yUnits=="pixels"){style["graphicYOffset"]=-height+(y*scale)+1;} +else if(yUnits=="insetPixels"){style["graphicYOffset"]=-(y*scale)+1;} +else if(yUnits=="fraction"){style["graphicYOffset"]=-height*(1-y)+1;}} +style["graphicWidth"]=width;style["graphicHeight"]=height;break;case"balloonstyle":var balloonStyle=OpenLayers.Util.getXmlNodeValue(styleTypeNode);if(balloonStyle){style["balloonStyle"]=balloonStyle.replace(this.regExes.straightBracket,"${$1}");} +break;case"labelstyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fontColor"]=color.color;style["fontOpacity"]=color.opacity;} +break;default:}} +if(!style["strokeColor"]&&style["fillColor"]){style["strokeColor"]=style["fillColor"];} +var id=node.getAttribute("id");if(id&&style){style.id=id;} +return style;},parseStyleMaps:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];var pairs=this.getElementsByTagNameNS(node,"*","Pair");var id=node.getAttribute("id");for(var j=0,jlen=pairs.length;j<jlen;j++){var pair=pairs[j];var key=this.parseProperty(pair,"*","key");var styleUrl=this.parseProperty(pair,"*","styleUrl");if(styleUrl&&key=="normal"){this.styles[(options.styleBaseUrl||"")+"#"+id]=this.styles[(options.styleBaseUrl||"")+styleUrl];} +if(styleUrl&&key=="highlight"){}}}},parseFeatures:function(nodes,options){var features=[];for(var i=0,len=nodes.length;i<len;i++){var featureNode=nodes[i];var feature=this.parseFeature.apply(this,[featureNode]);if(feature){if(this.extractStyles&&feature.attributes&&feature.attributes.styleUrl){feature.style=this.getStyle(feature.attributes.styleUrl,options);} +if(this.extractStyles){var inlineStyleNode=this.getElementsByTagNameNS(featureNode,"*","Style")[0];if(inlineStyleNode){var inlineStyle=this.parseStyle(inlineStyleNode);if(inlineStyle){feature.style=OpenLayers.Util.extend(feature.style,inlineStyle);}}} +if(this.extractTracks){var tracks=this.getElementsByTagNameNS(featureNode,this.namespaces.gx,"Track");if(tracks&&tracks.length>0){var track=tracks[0];var container={features:[],feature:feature};this.readNode(track,container);if(container.features.length>0){features.push.apply(features,container.features);}}}else{features.push(feature);}}else{throw"Bad Placemark: "+i;}} +this.features=this.features.concat(features);},readers:{"kml":{"when":function(node,container){container.whens.push(OpenLayers.Date.parse(this.getChildValue(node)));},"_trackPointAttribute":function(node,container){var name=node.nodeName.split(":").pop();container.attributes[name].push(this.getChildValue(node));}},"gx":{"Track":function(node,container){var obj={whens:[],points:[],angles:[]};if(this.trackAttributes){var name;obj.attributes={};for(var i=0,ii=this.trackAttributes.length;i<ii;++i){name=this.trackAttributes[i];obj.attributes[name]=[];if(!(name in this.readers.kml)){this.readers.kml[name]=this.readers.kml._trackPointAttribute;}}} +this.readChildNodes(node,obj);if(obj.whens.length!==obj.points.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:coord ("+obj.points.length+") elements.");} +var hasAngles=obj.angles.length>0;if(hasAngles&&obj.whens.length!==obj.angles.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:angles ("+obj.angles.length+") elements.");} +var feature,point,angles;for(var i=0,ii=obj.whens.length;i<ii;++i){feature=container.feature.clone();feature.fid=container.feature.fid||container.feature.id;point=obj.points[i];feature.geometry=point;if("z"in point){feature.attributes.altitude=point.z;} +if(this.internalProjection&&this.externalProjection){feature.geometry.transform(this.externalProjection,this.internalProjection);} +if(this.trackAttributes){for(var j=0,jj=this.trackAttributes.length;j<jj;++j){feature.attributes[name]=obj.attributes[this.trackAttributes[j]][i];}} +feature.attributes.when=obj.whens[i];feature.attributes.trackId=container.feature.id;if(hasAngles){angles=obj.angles[i];feature.attributes.heading=parseFloat(angles[0]);feature.attributes.tilt=parseFloat(angles[1]);feature.attributes.roll=parseFloat(angles[2]);} +container.features.push(feature);}},"coord":function(node,container){var str=this.getChildValue(node);var coords=str.replace(this.regExes.trimSpace,"").split(/\s+/);var point=new OpenLayers.Geometry.Point(coords[0],coords[1]);if(coords.length>2){point.z=parseFloat(coords[2]);} +container.points.push(point);},"angles":function(node,container){var str=this.getChildValue(node);var parts=str.replace(this.regExes.trimSpace,"").split(/\s+/);container.angles.push(parts);}}},parseFeature:function(node){var order=["MultiGeometry","Polygon","LineString","Point"];var type,nodeList,geometry,parser;for(var i=0,len=order.length;i<len;++i){type=order[i];this.internalns=node.namespaceURI?node.namespaceURI:this.kmlns;nodeList=this.getElementsByTagNameNS(node,this.internalns,type);if(nodeList.length>0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} +break;}} +var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} +var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;} +return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}} +var style=OpenLayers.Util.extend({},this.styles[styleUrl]);return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} +var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;} +point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;} +return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i<numPoints;++i){coords=pointList[i].split(",");numCoords=coords.length;if(numCoords>1){if(coords.length==2){coords[2]=null;} +points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+ +pointList[i];}} +if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}} +return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0,len=nodeList.length;i<len;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components[i]=ring;}else{throw"Bad LinearRing geometry: "+i;}}} +return new OpenLayers.Geometry.Polygon(components);},multigeometry:function(node){var child,parser;var parts=[];var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){var type=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var parser=this.parseGeometry[type.toLowerCase()];if(parser){parts.push(parser.apply(this,[child]));}}} +return new OpenLayers.Geometry.Collection(parts);}},parseAttributes:function(node){var attributes={};var edNodes=node.getElementsByTagName("ExtendedData");if(edNodes.length){attributes=this.parseExtendedData(edNodes[0]);} +var child,grandchildren,grandchild;var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length>=1&&grandchildren.length<=3){var grandchild;switch(grandchildren.length){case 1:grandchild=grandchildren[0];break;case 2:var c1=grandchildren[0];var c2=grandchildren[1];grandchild=(c1.nodeType==3||c1.nodeType==4)?c1:c2;break;case 3:default:grandchild=grandchildren[1];break;} +if(grandchild.nodeType==3||grandchild.nodeType==4){var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var value=OpenLayers.Util.getXmlNodeValue(grandchild);if(value){value=value.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}} +return attributes;},parseExtendedData:function(node){var attributes={};var i,len,data,key;var dataNodes=node.getElementsByTagName("Data");for(i=0,len=dataNodes.length;i<len;i++){data=dataNodes[i];key=data.getAttribute("name");var ed={};var valueNode=data.getElementsByTagName("value");if(valueNode.length){ed['value']=this.getChildValue(valueNode[0]);} +var nameNode=data.getElementsByTagName("displayName");if(nameNode.length){ed['displayName']=this.getChildValue(nameNode[0]);} +attributes[key]=ed;} +var simpleDataNodes=node.getElementsByTagName("SimpleData");for(i=0,len=simpleDataNodes.length;i<len;i++){var ed={};data=simpleDataNodes[i];key=data.getAttribute("name");ed['value']=this.getChildValue(data);ed['displayName']=key;attributes[key]=ed;} +return attributes;},parseProperty:function(xmlNode,namespace,tagName){var value;var nodeList=this.getElementsByTagNameNS(xmlNode,namespace,tagName);try{value=OpenLayers.Util.getXmlNodeValue(nodeList[0]);}catch(e){value=null;} +return value;},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} +var kml=this.createElementNS(this.kmlns,"kml");var folder=this.createFolderXML();for(var i=0,len=features.length;i<len;++i){folder.appendChild(this.createPlacemarkXML(features[i]));} +kml.appendChild(folder);return OpenLayers.Format.XML.prototype.write.apply(this,[kml]);},createFolderXML:function(){var folder=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var folderName=this.createElementNS(this.kmlns,"name");var folderNameText=this.createTextNode(this.foldersName);folderName.appendChild(folderNameText);folder.appendChild(folderName);} +if(this.foldersDesc){var folderDesc=this.createElementNS(this.kmlns,"description");var folderDescText=this.createTextNode(this.foldersDesc);folderDesc.appendChild(folderDescText);folder.appendChild(folderDesc);} +return folder;},createPlacemarkXML:function(feature){var placemarkName=this.createElementNS(this.kmlns,"name");var name=feature.style&&feature.style.label?feature.style.label:feature.attributes.name||feature.id;placemarkName.appendChild(this.createTextNode(name));var placemarkDesc=this.createElementNS(this.kmlns,"description");var desc=feature.attributes.description||this.placemarksDesc;placemarkDesc.appendChild(this.createTextNode(desc));var placemarkNode=this.createElementNS(this.kmlns,"Placemark");if(feature.fid!=null){placemarkNode.setAttribute("id",feature.fid);} +placemarkNode.appendChild(placemarkName);placemarkNode.appendChild(placemarkDesc);var geometryNode=this.buildGeometryNode(feature.geometry);placemarkNode.appendChild(geometryNode);return placemarkNode;},buildGeometryNode:function(geometry){var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];var node=null;if(builder){node=builder.apply(this,[geometry]);} +return node;},buildGeometry:{point:function(geometry){var kml=this.createElementNS(this.kmlns,"Point");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multipoint:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linestring:function(geometry){var kml=this.createElementNS(this.kmlns,"LineString");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multilinestring:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linearring:function(geometry){var kml=this.createElementNS(this.kmlns,"LinearRing");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},polygon:function(geometry){var kml=this.createElementNS(this.kmlns,"Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0,len=rings.length;i<len;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.kmlns,type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);kml.appendChild(ringMember);} +return kml;},multipolygon:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},collection:function(geometry){var kml=this.createElementNS(this.kmlns,"MultiGeometry");var child;for(var i=0,len=geometry.components.length;i<len;++i){child=this.buildGeometryNode.apply(this,[geometry.components[i]]);if(child){kml.appendChild(child);}} +return kml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.kmlns,"coordinates");var path;var points=geometry.components;if(points){var point;var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;++i){point=points[i];parts[i]=this.buildCoordinates(point);} +path=parts.join(" ");}else{path=this.buildCoordinates(geometry);} +var txtNode=this.createTextNode(path);coordinatesNode.appendChild(txtNode);return coordinatesNode;},buildCoordinates:function(point){if(this.internalProjection&&this.externalProjection){point=point.clone();point.transform(this.internalProjection,this.externalProjection);} +return point.x+","+point.y;},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Style=OpenLayers.Class({id:null,name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,defaultsPerSymbolizer:false,propertyStyles:null,initialize:function(style,options){OpenLayers.Util.extend(this,options);this.rules=[];if(options&&options.rules){this.addRules(options.rules);} +this.setDefaultStyle(style||OpenLayers.Feature.Vector.style["default"]);this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i=0,len=this.rules.length;i<len;i++){this.rules[i].destroy();this.rules[i]=null;} +this.rules=null;this.defaultStyle=null;},createSymbolizer:function(feature){var style=this.defaultsPerSymbolizer?{}:this.createLiterals(OpenLayers.Util.extend({},this.defaultStyle),feature);var rules=this.rules;var rule,context;var elseRules=[];var appliedRules=false;for(var i=0,len=rules.length;i<len;i++){rule=rules[i];var applies=rule.evaluate(feature);if(applies){if(rule instanceof OpenLayers.Rule&&rule.elseFilter){elseRules.push(rule);}else{appliedRules=true;this.applySymbolizer(rule,style,feature);}}} +if(appliedRules==false&&elseRules.length>0){appliedRules=true;for(var i=0,len=elseRules.length;i<len;i++){this.applySymbolizer(elseRules[i],style,feature);}} +if(rules.length>0&&appliedRules==false){style.display="none";} +if(style.label&&typeof style.label!=="string"){style.label=String(style.label);} +return style;},applySymbolizer:function(rule,style,feature){var symbolizerPrefix=feature.geometry?this.getSymbolizerPrefix(feature.geometry):OpenLayers.Style.SYMBOLIZER_PREFIXES[0];var symbolizer=rule.symbolizer[symbolizerPrefix]||rule.symbolizer;if(this.defaultsPerSymbolizer===true){var defaults=this.defaultStyle;OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:defaults.pointRadius});if(symbolizer.stroke===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{strokeWidth:defaults.strokeWidth,strokeColor:defaults.strokeColor,strokeOpacity:defaults.strokeOpacity,strokeDashstyle:defaults.strokeDashstyle,strokeLinecap:defaults.strokeLinecap});} +if(symbolizer.fill===true||symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{fillColor:defaults.fillColor,fillOpacity:defaults.fillOpacity});} +if(symbolizer.graphic===true){OpenLayers.Util.applyDefaults(symbolizer,{pointRadius:this.defaultStyle.pointRadius,externalGraphic:this.defaultStyle.externalGraphic,graphicName:this.defaultStyle.graphicName,graphicOpacity:this.defaultStyle.graphicOpacity,graphicWidth:this.defaultStyle.graphicWidth,graphicHeight:this.defaultStyle.graphicHeight,graphicXOffset:this.defaultStyle.graphicXOffset,graphicYOffset:this.defaultStyle.graphicYOffset});}} +return this.createLiterals(OpenLayers.Util.extend(style,symbolizer),feature);},createLiterals:function(style,feature){var context=OpenLayers.Util.extend({},feature.attributes||feature.data);OpenLayers.Util.extend(context,this.context);for(var i in this.propertyStyles){style[i]=OpenLayers.Style.createLiteral(style[i],context,feature,i);} +return style;},findPropertyStyles:function(){var propertyStyles={};var style=this.defaultStyle;this.addPropertyStyles(propertyStyles,style);var rules=this.rules;var symbolizer,value;for(var i=0,len=rules.length;i<len;i++){symbolizer=rules[i].symbolizer;for(var key in symbolizer){value=symbolizer[key];if(typeof value=="object"){this.addPropertyStyles(propertyStyles,value);}else{this.addPropertyStyles(propertyStyles,symbolizer);break;}}} +return propertyStyles;},addPropertyStyles:function(propertyStyles,symbolizer){var property;for(var key in symbolizer){property=symbolizer[key];if(typeof property=="string"&&property.match(/\$\{\w+\}/)){propertyStyles[key]=true;}} +return propertyStyles;},addRules:function(rules){Array.prototype.push.apply(this.rules,rules);this.propertyStyles=this.findPropertyStyles();},setDefaultStyle:function(style){this.defaultStyle=style;this.propertyStyles=this.findPropertyStyles();},getSymbolizerPrefix:function(geometry){var prefixes=OpenLayers.Style.SYMBOLIZER_PREFIXES;for(var i=0,len=prefixes.length;i<len;i++){if(geometry.CLASS_NAME.indexOf(prefixes[i])!=-1){return prefixes[i];}}},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.rules){options.rules=[];for(var i=0,len=this.rules.length;i<len;++i){options.rules.push(this.rules[i].clone());}} +options.context=this.context&&OpenLayers.Util.extend({},this.context);var defaultStyle=OpenLayers.Util.extend({},this.defaultStyle);return new OpenLayers.Style(defaultStyle,options);},CLASS_NAME:"OpenLayers.Style"});OpenLayers.Style.createLiteral=function(value,context,feature,property){if(typeof value=="string"&&value.indexOf("${")!=-1){value=OpenLayers.String.format(value,context,[feature,property]);value=(isNaN(value)||!value)?value:parseFloat(value);} +return value;};OpenLayers.Style.SYMBOLIZER_PREFIXES=['Point','Line','Polygon','Text','Raster'];OpenLayers.Filter=OpenLayers.Class({initialize:function(options){OpenLayers.Util.extend(this,options);},destroy:function(){},evaluate:function(context){return true;},clone:function(){return null;},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){var intersect=false;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(feature.geometry){var geom=this.value;if(this.value.CLASS_NAME=="OpenLayers.Bounds"){geom=this.value.toGeometry();} +if(feature.geometry.intersects(geom)){intersect=true;}} +break;default:OpenLayers.Console.error(OpenLayers.i18n("filterEvaluateNotImplemented"));break;} +return intersect;},clone:function(){var options=OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(options);},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"moveend":this.update,scope:this});this.layer.events.on({"refresh":this.update,scope:this});if(this.layer.visibility===true&&this.layer.inRange===true){this.update();}else{this.layer.events.on({"visibilitychanged":this.update,scope:this});}} +return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,"refresh":this.update,"visibilitychanged":this.update,scope:this});} +return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if(mapBounds!==null&&((options&&options.force)||this.invalidBounds(mapBounds))){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead(options);}},getMapBounds:function(){if(this.layer.map===null){return null;} +var bounds=this.layer.map.getExtent();if(bounds&&!this.layer.projection.equals(this.layer.map.getProjectionObject())){bounds=bounds.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection);} +return bounds;},invalidBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();} +var invalid=!this.bounds||!this.bounds.containsBounds(mapBounds);if(!invalid&&this.resFactor){var ratio=this.resolution/this.layer.map.getResolution();invalid=(ratio>=this.resFactor||ratio<=(1/this.resFactor));} +return invalid;},calculateBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();} +var center=mapBounds.getCenterLonLat();var dataWidth=mapBounds.getWidth()*this.ratio;var dataHeight=mapBounds.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(center.lon-(dataWidth/2),center.lat-(dataHeight/2),center.lon+(dataWidth/2),center.lat+(dataHeight/2));},triggerRead:function(options){if(this.response){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadend");} +this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},options));},createFilter:function(){var filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});if(this.layer.filter){filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.layer.filter,filter]});} +return filter;},merge:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}} +this.layer.addFeatures(features);} +this.response=null;this.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.BBOX"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{'click':{'in':'click','out':'clickout'},'mousemove':{'in':'over','out':'out'},'dblclick':{'in':'dblclick','out':null},'mousedown':{'in':null,'out':null},'mouseup':{'in':null,'out':null},'touchstart':{'in':'click','out':'clickout'}},feature:null,lastFeature:null,down:null,up:null,touch:false,clickTolerance:4,geometryTypes:null,stopClick:true,stopDown:true,stopUp:false,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this});} +return OpenLayers.Event.isMultiTouch(evt)?true:this.mousedown(evt);},touchmove:function(evt){OpenLayers.Event.stop(evt);},mousedown:function(evt){this.down=evt.xy;return this.handle(evt)?!this.stopDown:true;},mouseup:function(evt){this.up=evt.xy;return this.handle(evt)?!this.stopUp:true;},click:function(evt){return this.handle(evt)?!this.stopClick:true;},mousemove:function(evt){if(!this.callbacks['over']&&!this.callbacks['out']){return true;} +this.handle(evt);return true;},dblclick:function(evt){return!this.handle(evt);},geometryTypeMatches:function(feature){return this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1;},handle:function(evt){if(this.feature&&!this.feature.layer){this.feature=null;} +var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick"||type=="touchstart");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature&&!this.feature.layer){this.feature=null;} +if(this.lastFeature&&!this.lastFeature.layer){this.lastFeature=null;} +if(this.feature){if(type==="touchstart"){OpenLayers.Event.stop(evt);} +var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){if(this.lastFeature){this.triggerCallback(type,'out',[this.lastFeature]);} +this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);} +this.lastFeature=this.feature;handled=true;}else{if(this.lastFeature&&(previouslyIn&&inNew||click)){this.triggerCallback(type,'out',[this.lastFeature]);} +this.feature=null;}}else{if(this.lastFeature&&(previouslyIn||click)){this.triggerCallback(type,'out',[this.lastFeature]);}} +return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+ +Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.moveLayerToTop();this.map.events.on({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.moveLayerBack();this.feature=null;this.lastFeature=null;this.down=null;this.up=null;this.touch=false;this.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;} +return deactivated;},handleMapEvents:function(evt){if(evt.type=="removelayer"||evt.property=="order"){this.moveLayerToTop();}},moveLayerToTop:function(){var index=Math.max(this.map.Z_INDEX_BASE['Feature']-1,this.layer.getZIndex())+1;this.layer.setZIndex(index);},moveLayerBack:function(){var index=this.layer.getZIndex()-1;if(index>=this.map.Z_INDEX_BASE['Feature']){this.layer.setZIndex(index);}else{this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer));}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Tween=OpenLayers.Class({INTERVAL:10,easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,interval:null,playing:false,initialize:function(easing){this.easing=(easing)?easing:OpenLayers.Easing.Expo.easeOut;},start:function(begin,finish,duration,options){this.playing=true;this.begin=begin;this.finish=finish;this.duration=duration;this.callbacks=options.callbacks;this.time=0;if(this.interval){window.clearInterval(this.interval);this.interval=null;} +if(this.callbacks&&this.callbacks.start){this.callbacks.start.call(this,this.begin);} +this.interval=window.setInterval(OpenLayers.Function.bind(this.play,this),this.INTERVAL);},stop:function(){if(!this.playing){return;} +if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);} +window.clearInterval(this.interval);this.interval=null;this.playing=false;},play:function(){var value={};for(var i in this.begin){var b=this.begin[i];var f=this.finish[i];if(b==null||f==null||isNaN(b)||isNaN(f)){OpenLayers.Console.error('invalid value for Tween');} +var c=f-b;value[i]=this.easing.apply(this,[this.time,b,c,this.duration]);} +this.time++;if(this.callbacks&&this.callbacks.eachStep){this.callbacks.eachStep.call(this,value);} +if(this.time>this.duration){this.stop();}},CLASS_NAME:"OpenLayers.Tween"});OpenLayers.Easing={CLASS_NAME:"OpenLayers.Easing"};OpenLayers.Easing.Linear={easeIn:function(t,b,c,d){return c*t/d+b;},easeOut:function(t,b,c,d){return c*t/d+b;},easeInOut:function(t,b,c,d){return c*t/d+b;},CLASS_NAME:"OpenLayers.Easing.Linear"};OpenLayers.Easing.Expo={easeIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},CLASS_NAME:"OpenLayers.Easing.Expo"};OpenLayers.Easing.Quad={easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},CLASS_NAME:"OpenLayers.Easing.Quad"};OpenLayers.Map=OpenLayers.Class({Z_INDEX_BASE:{BaseLayer:100,Overlay:325,Feature:725,Popup:750,Control:1000},EVENT_TYPES:["preaddlayer","addlayer","preremovelayer","removelayer","changelayer","movestart","move","moveend","zoomend","popupopen","popupclose","addmarker","removemarker","clearmarkers","mouseover","mouseout","mousemove","dragstart","drag","dragend","changebaselayer"],id:null,fractionalZoom:false,events:null,allOverlays:false,div:null,dragging:false,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:0,panRatio:1.5,viewRequestID:0,tileSize:null,projection:"EPSG:4326",units:'degrees',resolutions:null,maxResolution:1.40625,minResolution:null,maxScale:null,minScale:null,maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:16,theme:null,displayProjection:null,fallThrough:true,panTween:null,eventListeners:null,panMethod:OpenLayers.Easing.Expo.easeOut,panDuration:50,paddingForPopups:null,minPx:null,maxPx:null,initialize:function(div,options){if(arguments.length===1&&typeof div==="object"){options=div;div=options&&options.div;} this.tileSize=new OpenLayers.Size(OpenLayers.Map.TILE_WIDTH,OpenLayers.Map.TILE_HEIGHT);this.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);this.paddingForPopups=new OpenLayers.Bounds(15,15,15,15);this.theme=OpenLayers._getScriptLocation()+'theme/default/style.css';OpenLayers.Util.extend(this,options);this.layers=[];this.id=OpenLayers.Util.createUniqueID("OpenLayers.Map_");this.div=OpenLayers.Util.getElement(div);if(!this.div){this.div=document.createElement("div");this.div.style.height="1px";this.div.style.width="1px";} OpenLayers.Element.addClass(this.div,'olMap');var id=this.id+"_OpenLayers_ViewPort";this.viewPortDiv=OpenLayers.Util.createDiv(id,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);var eventsDiv=document.createElement("div");eventsDiv.id=this.id+"_events";eventsDiv.style.position="absolute";eventsDiv.style.width="100%";eventsDiv.style.height="100%";eventsDiv.style.zIndex=this.Z_INDEX_BASE.Control-1;this.viewPortDiv.appendChild(eventsDiv);this.eventsDiv=eventsDiv;this.events=new OpenLayers.Events(this,this.eventsDiv,this.EVENT_TYPES,this.fallThrough,{includeXY:true});id=this.id+"_OpenLayers_Container";this.layerContainerDiv=OpenLayers.Util.createDiv(id);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE['Popup']-1;this.eventsDiv.appendChild(this.layerContainerDiv);this.updateSize();if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);} this.events.register("movestart",this,this.updateSize);if(OpenLayers.String.contains(navigator.appName,"Microsoft")){this.events.register("resize",this,this.updateSize);}else{this.updateSizeDestroy=OpenLayers.Function.bind(this.updateSize,this);OpenLayers.Event.observe(window,'resize',this.updateSizeDestroy);} @@ -581,10 +840,7 @@ return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(this.bas return px;},getLonLatFromPixel:function(px){return this.getLonLatFromViewPortPx(px);},getPixelFromLonLat:function(lonlat){var px=this.getViewPortPxFromLonLat(lonlat);px.x=Math.round(px.x);px.y=Math.round(px.y);return px;},getGeodesicPixelSize:function(px){var lonlat=px?this.getLonLatFromPixel(px):(this.getCachedCenter()||new OpenLayers.LonLat(0,0));var res=this.getResolution();var left=lonlat.add(-res/2,0);var right=lonlat.add(res/2,0);var bottom=lonlat.add(0,-res/2);var top=lonlat.add(0,res/2);var dest=new OpenLayers.Projection("EPSG:4326");var source=this.getProjectionObject()||dest;if(!source.equals(dest)){left.transform(source,dest);right.transform(source,dest);bottom.transform(source,dest);top.transform(source,dest);} return new OpenLayers.Size(OpenLayers.Util.distVincenty(left,right),OpenLayers.Util.distVincenty(bottom,top));},getViewPortPxFromLayerPx:function(layerPx){var viewPortPx=null;if(layerPx!=null){var dX=parseInt(this.layerContainerDiv.style.left);var dY=parseInt(this.layerContainerDiv.style.top);viewPortPx=layerPx.add(dX,dY);} return viewPortPx;},getLayerPxFromViewPortPx:function(viewPortPx){var layerPx=null;if(viewPortPx!=null){var dX=-parseInt(this.layerContainerDiv.style.left);var dY=-parseInt(this.layerContainerDiv.style.top);layerPx=viewPortPx.add(dX,dY);if(isNaN(layerPx.x)||isNaN(layerPx.y)){layerPx=null;}} -return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Projection=OpenLayers.Class({proj:null,projCode:null,titleRegEx:/\+title=[^\+]*/,initialize:function(projCode,options){OpenLayers.Util.extend(this,options);this.projCode=projCode;if(window.Proj4js){this.proj=new Proj4js.Proj(projCode);}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode;},getUnits:function(){return this.proj?this.proj.units:null;},toString:function(){return this.getCode();},equals:function(projection){var p=projection,equals=false;if(p){if(window.Proj4js&&this.proj.defData&&p.proj.defData){equals=this.proj.defData.replace(this.titleRegEx,"")==p.proj.defData.replace(this.titleRegEx,"");}else if(p.getCode){var source=this.getCode(),target=p.getCode();equals=source==target||!!OpenLayers.Projection.transforms[source]&&OpenLayers.Projection.transforms[source][target]===OpenLayers.Projection.nullTransform;}} -return equals;},destroy:function(){delete this.proj;delete this.projCode;},CLASS_NAME:"OpenLayers.Projection"});OpenLayers.Projection.transforms={};OpenLayers.Projection.addTransform=function(from,to,method){if(!OpenLayers.Projection.transforms[from]){OpenLayers.Projection.transforms[from]={};} -OpenLayers.Projection.transforms[from][to]=method;};OpenLayers.Projection.transform=function(point,source,dest){if(source.proj&&dest.proj){point=Proj4js.transform(source.proj,dest.proj,point);}else if(source&&dest&&OpenLayers.Projection.transforms[source.getCode()]&&OpenLayers.Projection.transforms[source.getCode()][dest.getCode()]){OpenLayers.Projection.transforms[source.getCode()][dest.getCode()](point);} -return point;};OpenLayers.Projection.nullTransform=function(point){return point;};OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend","added","removed"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}} +return layerPx;},getLonLatFromLayerPx:function(px){px=this.getViewPortPxFromLayerPx(px);return this.getLonLatFromViewPortPx(px);},getLayerPxFromLonLat:function(lonlat){var px=this.getPixelFromLonLat(lonlat);return this.getLayerPxFromViewPortPx(px);},CLASS_NAME:"OpenLayers.Map"});OpenLayers.Map.TILE_WIDTH=256;OpenLayers.Map.TILE_HEIGHT=256;OpenLayers.Layer=OpenLayers.Class({id:null,name:null,div:null,opacity:null,alwaysInRange:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged","move","moveend","added","removed"],RESOLUTION_PROPERTIES:['scales','resolutions','maxScale','minScale','maxResolution','minResolution','numZoomLevels','maxZoomLevel'],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:['resize'],metadata:{},initialize:function(name,options){this.addOptions(options);this.name=name;if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");this.div=OpenLayers.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.dir="ltr";this.events=new OpenLayers.Events(this,this.div,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);}} if(this.wrapDateLine){this.displayOutsideMaxExtent=true;}},destroy:function(setNewBaseLayer){if(setNewBaseLayer==null){setNewBaseLayer=true;} if(this.map!=null){this.map.removeLayer(this,setNewBaseLayer);} this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);} @@ -637,193 +893,7 @@ return lonlat;},getViewPortPxFromLonLat:function(lonlat){var px=null;if(lonlat!= return px;},setOpacity:function(opacity){if(opacity!=this.opacity){this.opacity=opacity;for(var i=0,len=this.div.childNodes.length;i<len;++i){var element=this.div.childNodes[i].firstChild;OpenLayers.Util.modifyDOMElement(element,null,null,null,null,null,null,opacity);} if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"opacity"});}}},getZIndex:function(){return this.div.style.zIndex;},setZIndex:function(zIndex){this.div.style.zIndex=zIndex;},adjustBounds:function(bounds){if(this.gutter){var mapGutter=this.gutter*this.map.getResolution();bounds=new OpenLayers.Bounds(bounds.left-mapGutter,bounds.bottom-mapGutter,bounds.right+mapGutter,bounds.top+mapGutter);} if(this.wrapDateLine){var wrappingOptions={'rightTolerance':this.getResolution(),'leftTolerance':this.getResolution()};bounds=bounds.wrapDateLine(this.maxExtent,wrappingOptions);} -return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(name,url,params,options){OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.url=url;this.params=OpenLayers.Util.extend({},params);},destroy:function(){this.url=null;this.params=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setUrl:function(newUrl){this.url=newUrl;},mergeNewParams:function(newParams){this.params=OpenLayers.Util.extend(this.params,newParams);var ret=this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});} -return ret;},redraw:function(force){if(force){return this.mergeNewParams({"_olSalt":Math.random()});}else{return OpenLayers.Layer.prototype.redraw.apply(this,[]);}},selectUrl:function(paramString,urls){var product=1;for(var i=0,len=paramString.length;i<len;i++){product*=paramString.charCodeAt(i)*this.URL_HASH_FACTOR;product-=Math.floor(product);} -return urls[Math.floor(product*urls.length)];},getFullRequestString:function(newParams,altUrl){var url=altUrl||this.url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(OpenLayers.Util.isArray(url)){url=this.selectUrl(paramsString,url);} -var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} -paramsString=OpenLayers.Util.getParameterString(allParams);return OpenLayers.Util.urlAppend(url,paramsString);},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,grid:null,singleTile:false,ratio:1.5,buffer:0,numLoadingTiles:0,tileLoadingDelay:100,timerId:null,initialize:function(name,url,params,options){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[];this._moveGriddedTiles=OpenLayers.Function.bind(this.moveGriddedTiles,this);},removeMap:function(map){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},destroy:function(){this.clearGrid();this.grid=null;this.tileSize=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments);},clearGrid:function(){if(this.grid){for(var iRow=0,len=this.grid.length;iRow<len;iRow++){var row=this.grid[iRow];for(var iCol=0,clen=row.length;iCol<clen;iCol++){var tile=row[iCol];this.removeTileMonitoringHooks(tile);tile.destroy();}} -this.grid=[];}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions());} -obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} -obj.grid=[];return obj;},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);bounds=bounds||this.map.getExtent();if(bounds!=null){var forceReTile=!this.grid.length||zoomChanged;var tilesBounds=this.getTilesBounds();if(this.singleTile){if(forceReTile||(!dragging&&!tilesBounds.containsBounds(bounds))){this.initSingleTile(bounds);}}else{if(forceReTile||!tilesBounds.containsBounds(bounds,true)){this.initGriddedTiles(bounds);}else{this.scheduleMoveGriddedTiles();}}}},moveByPx:function(dx,dy){if(!this.singleTile){this.scheduleMoveGriddedTiles();}},scheduleMoveGriddedTiles:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);} -this.timerId=window.setTimeout(this._moveGriddedTiles,this.tileLoadingDelay);},setTileSize:function(size){if(this.singleTile){size=this.map.getSize();size.h=parseInt(size.h*this.ratio);size.w=parseInt(size.w*this.ratio);} -OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[size]);},getGridBounds:function(){var msg="The getGridBounds() function is deprecated. It will be "+"removed in 3.0. Please use getTilesBounds() instead.";OpenLayers.Console.warn(msg);return this.getTilesBounds();},getTilesBounds:function(){var bounds=null;if(this.grid.length){var bottom=this.grid.length-1;var bottomLeftTile=this.grid[bottom][0];var right=this.grid[0].length-1;var topRightTile=this.grid[0][right];bounds=new OpenLayers.Bounds(bottomLeftTile.bounds.left,bottomLeftTile.bounds.bottom,topRightTile.bounds.right,topRightTile.bounds.top);} -return bounds;},initSingleTile:function(bounds){var center=bounds.getCenterLonLat();var tileWidth=bounds.getWidth()*this.ratio;var tileHeight=bounds.getHeight()*this.ratio;var tileBounds=new OpenLayers.Bounds(center.lon-(tileWidth/2),center.lat-(tileHeight/2),center.lon+(tileWidth/2),center.lat+(tileHeight/2));var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var px=this.map.getLayerPxFromLonLat(ul);if(!this.grid.length){this.grid[0]=[];} -var tile=this.grid[0][0];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);tile.draw();this.grid[0][0]=tile;}else{tile.moveTo(tileBounds,px);} -this.removeExcessTiles(1,1);},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=bounds.top-(origin.lat+tilelat);var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat+tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},getTileOrigin:function(){var origin=this.tileOrigin;if(!origin){var extent=this.getMaxExtent();var edges=({"tl":["left","top"],"tr":["right","top"],"bl":["left","bottom"],"br":["right","bottom"]})[this.tileOriginCorner];origin=new OpenLayers.LonLat(extent[edges[0]],extent[edges[1]]);} -return origin;},initGriddedTiles:function(bounds){var viewSize=this.map.getSize();var minRows=Math.ceil(viewSize.h/this.tileSize.h)+ -Math.max(1,2*this.buffer);var minCols=Math.ceil(viewSize.w/this.tileSize.w)+ -Math.max(1,2*this.buffer);var origin=this.getTileOrigin();var resolution=this.map.getResolution();var tileLayout=this.calculateGridLayout(bounds,origin,resolution);var tileoffsetx=Math.round(tileLayout.tileoffsetx);var tileoffsety=Math.round(tileLayout.tileoffsety);var tileoffsetlon=tileLayout.tileoffsetlon;var tileoffsetlat=tileLayout.tileoffsetlat;var tilelon=tileLayout.tilelon;var tilelat=tileLayout.tilelat;this.origin=new OpenLayers.Pixel(tileoffsetx,tileoffsety);var startX=tileoffsetx;var startLon=tileoffsetlon;var rowidx=0;var layerContainerDivLeft=parseInt(this.map.layerContainerDiv.style.left);var layerContainerDivTop=parseInt(this.map.layerContainerDiv.style.top);do{var row=this.grid[rowidx++];if(!row){row=[];this.grid.push(row);} -tileoffsetlon=startLon;tileoffsetx=startX;var colidx=0;do{var tileBounds=new OpenLayers.Bounds(tileoffsetlon,tileoffsetlat,tileoffsetlon+tilelon,tileoffsetlat+tilelat);var x=tileoffsetx;x-=layerContainerDivLeft;var y=tileoffsety;y-=layerContainerDivTop;var px=new OpenLayers.Pixel(x,y);var tile=row[colidx++];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);row.push(tile);}else{tile.moveTo(tileBounds,px,false);} -tileoffsetlon+=tilelon;tileoffsetx+=this.tileSize.w;}while((tileoffsetlon<=bounds.right+tilelon*this.buffer)||colidx<minCols);tileoffsetlat-=tilelat;tileoffsety+=this.tileSize.h;}while((tileoffsetlat>=bounds.bottom-tilelat*this.buffer)||rowidx<minRows);this.removeExcessTiles(rowidx,colidx);this.spiralTileLoad();},getMaxExtent:function(){return this.maxExtent;},spiralTileLoad:function(){var tileQueue=[];var directions=["right","down","left","up"];var iRow=0;var iCell=-1;var direction=OpenLayers.Util.indexOf(directions,"right");var directionsTried=0;while(directionsTried<directions.length){var testRow=iRow;var testCell=iCell;switch(directions[direction]){case"right":testCell++;break;case"down":testRow++;break;case"left":testCell--;break;case"up":testRow--;break;} -var tile=null;if((testRow<this.grid.length)&&(testRow>=0)&&(testCell<this.grid[0].length)&&(testCell>=0)){tile=this.grid[testRow][testCell];} -if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} -for(var i=0,len=tileQueue.length;i<len;i++){var tile=tileQueue[i];tile.draw();tile.queued=false;}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize,this.tileOptions);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this.numLoadingTiles==0){this.events.triggerEvent("loadstart");} -this.numLoadingTiles++;};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded");if(this.numLoadingTiles==0){this.events.triggerEvent("loadend");}};tile.events.register("loadend",this,tile.onLoadEnd);tile.events.register("unload",this,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:this});},moveGriddedTiles:function(){var shifted=true;var buffer=this.buffer||1;var tlLayer=this.grid[0][0].position;var offsetX=parseInt(this.map.layerContainerDiv.style.left);var offsetY=parseInt(this.map.layerContainerDiv.style.top);var tlViewPort=tlLayer.add(offsetX,offsetY);if(tlViewPort.x>-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{shifted=false;} -if(shifted){this.timerId=window.setTimeout(this._moveGriddedTiles,0);}},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0,len=modelRow.length;i<len;i++){var modelTile=modelRow[i];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.bottom=bounds.bottom+deltaLat;bounds.top=bounds.top+deltaLat;position.y=position.y+deltaY;row[i].moveTo(bounds,position);} -if(prepend){grid.unshift(row);}else{grid.push(row);}},shiftColumn:function(prepend){var deltaX=(prepend)?-this.tileSize.w:this.tileSize.w;var resolution=this.map.getResolution();var deltaLon=resolution*deltaX;for(var i=0,len=this.grid.length;i<len;i++){var row=this.grid[i];var modelTileIndex=(prepend)?0:(row.length-1);var modelTile=row[modelTileIndex];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.left=bounds.left+deltaLon;bounds.right=bounds.right+deltaLon;position.x=position.x+deltaX;var tile=prepend?this.grid[i].pop():this.grid[i].shift();tile.moveTo(bounds,position);if(prepend){row.unshift(tile);}else{row.push(tile);}}},removeExcessTiles:function(rows,columns){while(this.grid.length>rows){var row=this.grid.pop();for(var i=0,l=row.length;i<l;i++){var tile=row[i];this.removeTileMonitoringHooks(tile);tile.destroy();}} -while(this.grid[0].length>columns){for(var i=0,l=this.grid.length;i<l;i++){var row=this.grid[i];var tile=row.pop();this.removeTileMonitoringHooks(tile);tile.destroy();}}},onMapResize:function(){if(this.singleTile){this.clearGrid();this.setTileSize();}},getTileBounds:function(viewPortPx){var maxExtent=this.maxExtent;var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=maxExtent.left+(tileMapWidth*Math.floor((mapPoint.lon- -maxExtent.left)/tileMapWidth));var tileBottom=maxExtent.bottom+(tileMapHeight*Math.floor((mapPoint.lat- -maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Filter=OpenLayers.Class({initialize:function(options){OpenLayers.Util.extend(this,options);},destroy:function(){},evaluate:function(context){return true;},clone:function(){return null;},CLASS_NAME:"OpenLayers.Filter"});OpenLayers.Filter.Spatial=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,distance:null,distanceUnits:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);},evaluate:function(feature){var intersect=false;switch(this.type){case OpenLayers.Filter.Spatial.BBOX:case OpenLayers.Filter.Spatial.INTERSECTS:if(feature.geometry){var geom=this.value;if(this.value.CLASS_NAME=="OpenLayers.Bounds"){geom=this.value.toGeometry();} -if(feature.geometry.intersects(geom)){intersect=true;}} -break;default:OpenLayers.Console.error(OpenLayers.i18n("filterEvaluateNotImplemented"));break;} -return intersect;},clone:function(){var options=OpenLayers.Util.applyDefaults({value:this.value&&this.value.clone&&this.value.clone()},this);return new OpenLayers.Filter.Spatial(options);},CLASS_NAME:"OpenLayers.Filter.Spatial"});OpenLayers.Filter.Spatial.BBOX="BBOX";OpenLayers.Filter.Spatial.INTERSECTS="INTERSECTS";OpenLayers.Filter.Spatial.DWITHIN="DWITHIN";OpenLayers.Filter.Spatial.WITHIN="WITHIN";OpenLayers.Filter.Spatial.CONTAINS="CONTAINS";OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:true,defaultFilter:null,initialize:function(options){options=options||{};OpenLayers.Util.extend(this,options);this.options=options;},mergeWithDefaultFilter:function(filter){var merged;if(filter&&this.defaultFilter){merged=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,filter]});}else{merged=filter||this.defaultFilter||undefined;} -return merged;},destroy:function(){this.options=null;this.format=null;},read:function(options){options=options||{};options.filter=this.mergeWithDefaultFilter(options.filter);},create:function(){},update:function(){},"delete":function(){},commit:function(){},abort:function(response){},createCallback:function(method,response,options){return OpenLayers.Function.bind(function(){method.apply(this,[response,options]);},this);},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:true,features:null,reqFeatures:null,priv:null,error:null,initialize:function(options){OpenLayers.Util.extend(this,options);},success:function(){return this.code>0;},CLASS_NAME:"OpenLayers.Protocol.Response"});OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Control=OpenLayers.Class({id:null,map:null,div:null,type:null,allowSelection:false,displayClass:"",title:"",autoActivate:false,active:null,handler:null,eventListeners:null,events:null,EVENT_TYPES:["activate","deactivate"],initialize:function(options){this.displayClass=this.CLASS_NAME.replace("OpenLayers.","ol").replace(/\./g,"");OpenLayers.Util.extend(this,options);this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners);} -if(this.id==null){this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners);} -this.events.destroy();this.events=null;} -this.eventListeners=null;if(this.handler){this.handler.destroy();this.handler=null;} -if(this.handlers){for(var key in this.handlers){if(this.handlers.hasOwnProperty(key)&&typeof this.handlers[key].destroy=="function"){this.handlers[key].destroy();}} -this.handlers=null;} -if(this.map){this.map.removeControl(this);this.map=null;} -this.div=null;},setMap:function(map){this.map=map;if(this.handler){this.handler.setMap(map);}},draw:function(px){if(this.div==null){this.div=OpenLayers.Util.createDiv(this.id);this.div.className=this.displayClass;if(!this.allowSelection){this.div.className+=" olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=OpenLayers.Function.False;} -if(this.title!=""){this.div.title=this.title;}} -if(px!=null){this.position=px.clone();} -this.moveTo(this.position);return this.div;},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},activate:function(){if(this.active){return false;} -if(this.handler){this.handler.activate();} -this.active=true;if(this.map){OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} -this.events.triggerEvent("activate");return true;},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate();} -this.active=false;if(this.map){OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass.replace(/ /g,"")+"Active");} -this.events.triggerEvent("deactivate");return true;} -return false;},CLASS_NAME:"OpenLayers.Control"});OpenLayers.Control.TYPE_BUTTON=1;OpenLayers.Control.TYPE_TOGGLE=2;OpenLayers.Control.TYPE_TOOL=3;OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",destroy:function(){this.map.events.un({"removelayer":this.updateAttribution,"addlayer":this.updateAttribution,"changelayer":this.updateAttribution,"changebaselayer":this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({'changebaselayer':this.updateAttribution,'changelayer':this.updateAttribution,'addlayer':this.updateAttribution,'removelayer':this.updateAttribution,scope:this});this.updateAttribution();return this.div;},updateAttribution:function(){var attributions=[];if(this.map&&this.map.layers){for(var i=0,len=this.map.layers.length;i<len;i++){var layer=this.map.layers[i];if(layer.attribution&&layer.getVisibility()){if(OpenLayers.Util.indexOf(attributions,layer.attribution)===-1){attributions.push(layer.attribution);}}} -this.div.innerHTML=attributions.join(this.separator);}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:false,nativeJSON:(function(){return!!(window.JSON&&typeof JSON.parse=="function"&&typeof JSON.stringify=="function");})(),read:function(json,filter){var object;if(this.nativeJSON){object=JSON.parse(json,filter);}else try{if(/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){object=eval('('+json+')');if(typeof filter==='function'){function walk(k,v){if(v&&typeof v==='object'){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}} -return filter(k,v);} -object=walk('',object);}}}catch(e){} -if(this.keepData){this.data=object;} -return object;},write:function(value,pretty){this.pretty=!!pretty;var json=null;var type=typeof value;if(this.serialize[type]){try{json=(!this.pretty&&this.nativeJSON)?JSON.stringify(value):this.serialize[type].apply(this,[value]);}catch(err){OpenLayers.Console.error("Trouble serializing: "+err);}} -return json;},writeIndent:function(){var pieces=[];if(this.pretty){for(var i=0;i<this.level;++i){pieces.push(this.indent);}} -return pieces.join('');},writeNewline:function(){return(this.pretty)?this.newline:'';},writeSpace:function(){return(this.pretty)?this.space:'';},serialize:{'object':function(object){if(object==null){return"null";} -if(object.constructor==Date){return this.serialize.date.apply(this,[object]);} -if(object.constructor==Array){return this.serialize.array.apply(this,[object]);} -var pieces=['{'];this.level+=1;var key,keyJSON,valueJSON;var addComma=false;for(key in object){if(object.hasOwnProperty(key)){keyJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[key,this.pretty]);valueJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[object[key],this.pretty]);if(keyJSON!=null&&valueJSON!=null){if(addComma){pieces.push(',');} -pieces.push(this.writeNewline(),this.writeIndent(),keyJSON,':',this.writeSpace(),valueJSON);addComma=true;}}} -this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),'}');return pieces.join('');},'array':function(array){var json;var pieces=['['];this.level+=1;for(var i=0,len=array.length;i<len;++i){json=OpenLayers.Format.JSON.prototype.write.apply(this,[array[i],this.pretty]);if(json!=null){if(i>0){pieces.push(',');} -pieces.push(this.writeNewline(),this.writeIndent(),json);}} -this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),']');return pieces.join('');},'string':function(string){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};if(/["\\\x00-\x1f]/.test(string)){return'"'+string.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;} -c=b.charCodeAt();return'\\u00'+ -Math.floor(c/16).toString(16)+ -(c%16).toString(16);})+'"';} -return'"'+string+'"';},'number':function(number){return isFinite(number)?String(number):"null";},'boolean':function(bool){return String(bool);},'date':function(date){function format(number){return(number<10)?'0'+number:number;} -return'"'+date.getFullYear()+'-'+ -format(date.getMonth()+1)+'-'+ -format(date.getDate())+'T'+ -format(date.getHours())+':'+ -format(date.getMinutes())+':'+ -format(date.getSeconds())+'"';}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Format.XML=OpenLayers.Class(OpenLayers.Format,{namespaces:null,namespaceAlias:null,defaultPrefix:null,readers:{},writers:{},xmldom:null,initialize:function(options){if(window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");} -OpenLayers.Format.prototype.initialize.apply(this,[options]);this.namespaces=OpenLayers.Util.extend({},this.namespaces);this.namespaceAlias={};for(var alias in this.namespaces){this.namespaceAlias[this.namespaces[alias]]=alias;}},destroy:function(){this.xmldom=null;OpenLayers.Format.prototype.destroy.apply(this,arguments);},setNamespace:function(alias,uri){this.namespaces[alias]=uri;this.namespaceAlias[uri]=alias;},read:function(text){var index=text.indexOf('<');if(index>0){text=text.substring(index);} -var node=OpenLayers.Util.Try(OpenLayers.Function.bind((function(){var xmldom;if(window.ActiveXObject&&!this.xmldom){xmldom=new ActiveXObject("Microsoft.XMLDOM");}else{xmldom=this.xmldom;} -xmldom.loadXML(text);return xmldom;}),this),function(){return new DOMParser().parseFromString(text,'text/xml');},function(){var req=new XMLHttpRequest();req.open("GET","data:"+"text/xml"+";charset=utf-8,"+encodeURIComponent(text),false);if(req.overrideMimeType){req.overrideMimeType("text/xml");} -req.send(null);return req.responseXML;});if(this.keepData){this.data=node;} -return node;},write:function(node){var data;if(this.xmldom){data=node.xml;}else{var serializer=new XMLSerializer();if(node.nodeType==1){var doc=document.implementation.createDocument("","",null);if(doc.importNode){node=doc.importNode(node,true);} -doc.appendChild(node);data=serializer.serializeToString(doc);}else{data=serializer.serializeToString(node);}} -return data;},createElementNS:function(uri,name){var element;if(this.xmldom){if(typeof uri=="string"){element=this.xmldom.createNode(1,name,uri);}else{element=this.xmldom.createNode(1,name,"");}}else{element=document.createElementNS(uri,name);} -return element;},createTextNode:function(text){var node;if(typeof text!=="string"){text=String(text);} -if(this.xmldom){node=this.xmldom.createTextNode(text);}else{node=document.createTextNode(text);} -return node;},getElementsByTagNameNS:function(node,uri,name){var elements=[];if(node.getElementsByTagNameNS){elements=node.getElementsByTagNameNS(uri,name);}else{var allNodes=node.getElementsByTagName("*");var potentialNode,fullName;for(var i=0,len=allNodes.length;i<len;++i){potentialNode=allNodes[i];fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if((name=="*")||(fullName==potentialNode.nodeName)){if((uri=="*")||(uri==potentialNode.namespaceURI)){elements.push(potentialNode);}}}} -return elements;},getAttributeNodeNS:function(node,uri,name){var attributeNode=null;if(node.getAttributeNodeNS){attributeNode=node.getAttributeNodeNS(uri,name);}else{var attributes=node.attributes;var potentialNode,fullName;for(var i=0,len=attributes.length;i<len;++i){potentialNode=attributes[i];if(potentialNode.namespaceURI==uri){fullName=(potentialNode.prefix)?(potentialNode.prefix+":"+name):name;if(fullName==potentialNode.nodeName){attributeNode=potentialNode;break;}}}} -return attributeNode;},getAttributeNS:function(node,uri,name){var attributeValue="";if(node.getAttributeNS){attributeValue=node.getAttributeNS(uri,name)||"";}else{var attributeNode=this.getAttributeNodeNS(node,uri,name);if(attributeNode){attributeValue=attributeNode.nodeValue;}} -return attributeValue;},getChildValue:function(node,def){var value=def||"";if(node){for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 3:case 4:value+=child.nodeValue;}}} -return value;},concatChildValues:function(node,def){var value="";var child=node.firstChild;var childValue;while(child){childValue=child.nodeValue;if(childValue){value+=childValue;} -child=child.nextSibling;} -if(value==""&&def!=undefined){value=def;} -return value;},isSimpleContent:function(node){var simple=true;for(var child=node.firstChild;child;child=child.nextSibling){if(child.nodeType===1){simple=false;break;}} -return simple;},contentType:function(node){var simple=false,complex=false;var type=OpenLayers.Format.XML.CONTENT_TYPE.EMPTY;for(var child=node.firstChild;child;child=child.nextSibling){switch(child.nodeType){case 1:complex=true;break;case 8:break;default:simple=true;} -if(complex&&simple){break;}} -if(complex&&simple){type=OpenLayers.Format.XML.CONTENT_TYPE.MIXED;}else if(complex){return OpenLayers.Format.XML.CONTENT_TYPE.COMPLEX;}else if(simple){return OpenLayers.Format.XML.CONTENT_TYPE.SIMPLE;} -return type;},hasAttributeNS:function(node,uri,name){var found=false;if(node.hasAttributeNS){found=node.hasAttributeNS(uri,name);}else{found=!!this.getAttributeNodeNS(node,uri,name);} -return found;},setAttributeNS:function(node,uri,name,value){if(node.setAttributeNS){node.setAttributeNS(uri,name,value);}else{if(this.xmldom){if(uri){var attribute=node.ownerDocument.createNode(2,name,uri);attribute.nodeValue=value;node.setAttributeNode(attribute);}else{node.setAttribute(name,value);}}else{throw"setAttributeNS not implemented";}}},createElementNSPlus:function(name,options){options=options||{};var uri=options.uri||this.namespaces[options.prefix];if(!uri){var loc=name.indexOf(":");uri=this.namespaces[name.substring(0,loc)];} -if(!uri){uri=this.namespaces[this.defaultPrefix];} -var node=this.createElementNS(uri,name);if(options.attributes){this.setAttributes(node,options.attributes);} -var value=options.value;if(value!=null){node.appendChild(this.createTextNode(value));} -return node;},setAttributes:function(node,obj){var value,uri;for(var name in obj){if(obj[name]!=null&&obj[name].toString){value=obj[name].toString();uri=this.namespaces[name.substring(0,name.indexOf(":"))]||null;this.setAttributeNS(node,uri,name,value);}}},readNode:function(node,obj){if(!obj){obj={};} -var group=this.readers[node.namespaceURI?this.namespaceAlias[node.namespaceURI]:this.defaultPrefix];if(group){var local=node.localName||node.nodeName.split(":").pop();var reader=group[local]||group["*"];if(reader){reader.apply(this,[node,obj]);}} -return obj;},readChildNodes:function(node,obj){if(!obj){obj={};} -var children=node.childNodes;var child;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){this.readNode(child,obj);}} -return obj;},writeNode:function(name,obj,parent){var prefix,local;var split=name.indexOf(":");if(split>0){prefix=name.substring(0,split);local=name.substring(split+1);}else{if(parent){prefix=this.namespaceAlias[parent.namespaceURI];}else{prefix=this.defaultPrefix;} -local=name;} -var child=this.writers[prefix][local].apply(this,[obj]);if(parent){parent.appendChild(child);} -return child;},getChildEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.firstChild,name,uri);},getNextEl:function(node,name,uri){return node&&this.getThisOrNextEl(node.nextSibling,name,uri);},getThisOrNextEl:function(node,name,uri){outer:for(var sibling=node;sibling;sibling=sibling.nextSibling){switch(sibling.nodeType){case 1:if((!name||name===(sibling.localName||sibling.nodeName.split(":").pop()))&&(!uri||uri===sibling.namespaceURI)){break outer;} -sibling=null;break outer;case 3:if(/^\s*$/.test(sibling.nodeValue)){break;} -case 4:case 6:case 12:case 10:case 11:sibling=null;break outer;}} -return sibling||null;},lookupNamespaceURI:function(node,prefix){var uri=null;if(node){if(node.lookupNamespaceURI){uri=node.lookupNamespaceURI(prefix);}else{outer:switch(node.nodeType){case 1:if(node.namespaceURI!==null&&node.prefix===prefix){uri=node.namespaceURI;break outer;} -var len=node.attributes.length;if(len){var attr;for(var i=0;i<len;++i){attr=node.attributes[i];if(attr.prefix==="xmlns"&&attr.name==="xmlns:"+prefix){uri=attr.value||null;break outer;}else if(attr.name==="xmlns"&&prefix===null){uri=attr.value||null;break outer;}}} -uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;case 2:uri=this.lookupNamespaceURI(node.ownerElement,prefix);break outer;case 9:uri=this.lookupNamespaceURI(node.documentElement,prefix);break outer;case 6:case 12:case 10:case 11:break outer;default:uri=this.lookupNamespaceURI(node.parentNode,prefix);break outer;}}} -return uri;},getXMLDoc:function(){if(!OpenLayers.Format.XML.document&&!this.xmldom){if(document.implementation&&document.implementation.createDocument){OpenLayers.Format.XML.document=document.implementation.createDocument("","",null);}else if(!this.xmldom&&window.ActiveXObject){this.xmldom=new ActiveXObject("Microsoft.XMLDOM");}} -return OpenLayers.Format.XML.document||this.xmldom;},CLASS_NAME:"OpenLayers.Format.XML"});OpenLayers.Format.XML.CONTENT_TYPE={EMPTY:0,SIMPLE:1,COMPLEX:2,MIXED:3};OpenLayers.Format.XML.lookupNamespaceURI=OpenLayers.Function.bind(OpenLayers.Format.XML.prototype.lookupNamespaceURI,OpenLayers.Format.XML.prototype);OpenLayers.Format.XML.document=null;OpenLayers.Handler=OpenLayers.Class({id:null,control:null,map:null,keyMask:null,active:false,evt:null,initialize:function(control,callbacks,options){OpenLayers.Util.extend(this,options);this.control=control;this.callbacks=callbacks;var map=this.map||control.map;if(map){this.setMap(map);} -this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},setMap:function(map){this.map=map;},checkModifiers:function(evt){if(this.keyMask==null){return true;} -var keyModifiers=(evt.shiftKey?OpenLayers.Handler.MOD_SHIFT:0)|(evt.ctrlKey?OpenLayers.Handler.MOD_CTRL:0)|(evt.altKey?OpenLayers.Handler.MOD_ALT:0);return(keyModifiers==this.keyMask);},activate:function(){if(this.active){return false;} -var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.register(events[i],this[events[i]]);}} -this.active=true;return true;},deactivate:function(){if(!this.active){return false;} -var events=OpenLayers.Events.prototype.BROWSER_EVENTS;for(var i=0,len=events.length;i<len;i++){if(this[events[i]]){this.unregister(events[i],this[events[i]]);}} -this.active=false;return true;},callback:function(name,args){if(name&&this.callbacks[name]){this.callbacks[name].apply(this.control,args);}},register:function(name,method){this.map.events.registerPriority(name,this,method);this.map.events.registerPriority(name,this,this.setEvent);},unregister:function(name,method){this.map.events.unregister(name,this,method);this.map.events.unregister(name,this,this.setEvent);},setEvent:function(evt){this.evt=evt;return true;},destroy:function(){this.deactivate();this.control=this.map=null;},CLASS_NAME:"OpenLayers.Handler"});OpenLayers.Handler.MOD_NONE=0;OpenLayers.Handler.MOD_SHIFT=1;OpenLayers.Handler.MOD_CTRL=2;OpenLayers.Handler.MOD_ALT=4;OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,touch:false,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.documentDrag===true){var me=this;this._docMove=function(evt){me.mousemove({xy:{x:evt.clientX,y:evt.clientY},element:document});};this._docUp=function(evt){me.mouseup({xy:{x:evt.clientX,y:evt.clientY}});};}},dragstart:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&(OpenLayers.Event.isLeftClick(evt)||OpenLayers.Event.isSingleTouch(evt))){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True;} -document.onselectstart=OpenLayers.Function.False;propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} -return propagate;},dragmove:function(evt){this.lastMoveEvt=evt;if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.documentDrag===true&&this.documentEvents){if(evt.element===document){this.adjustXY(evt);this.setEvent(evt);}else{this.removeDocumentEvents();}} -if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);} -this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=OpenLayers.Function.False;} -this.last=evt.xy;} -return true;},dragend:function(evt){if(this.started){if(this.documentDrag===true&&this.documentEvents){this.adjustXY(evt);this.removeDocumentEvents();} -var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);} -document.onselectstart=this.oldOnselectstart;} -return true;},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){return this.dragstart(evt);},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this});} -return this.dragstart(evt);},mousemove:function(evt){return this.dragmove(evt);},touchmove:function(evt){return this.dragmove(evt);},removeTimeout:function(){this.timeoutId=null;if(this.dragging){this.mousemove(this.lastMoveEvt);}},mouseup:function(evt){return this.dragend(evt);},touchend:function(evt){evt.xy=this.last;return this.dragend(evt);},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.documentDrag===true){this.addDocumentEvents();}else{var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);} -if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}}} -return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;} -return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.touch=false;this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");} -return deactivated;},adjustXY:function(evt){var pos=OpenLayers.Util.pagePosition(this.map.viewPortDiv);evt.xy.x-=pos[0];evt.xy.y-=pos[1];},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=true;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp);},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=false;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp);},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Feature=OpenLayers.Class(OpenLayers.Handler,{EVENTMAP:{'click':{'in':'click','out':'clickout'},'mousemove':{'in':'over','out':'out'},'dblclick':{'in':'dblclick','out':null},'mousedown':{'in':null,'out':null},'mouseup':{'in':null,'out':null},'touchstart':{'in':'click','out':'clickout'}},feature:null,lastFeature:null,down:null,up:null,touch:false,clickTolerance:4,geometryTypes:null,stopClick:true,stopDown:true,stopUp:false,initialize:function(control,layer,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,[control,callbacks,options]);this.layer=layer;},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,dblclick:this.dblclick,scope:this});} -return OpenLayers.Event.isMultiTouch(evt)?true:this.mousedown(evt);},touchmove:function(evt){OpenLayers.Event.stop(evt);},mousedown:function(evt){this.down=evt.xy;return this.handle(evt)?!this.stopDown:true;},mouseup:function(evt){this.up=evt.xy;return this.handle(evt)?!this.stopUp:true;},click:function(evt){return this.handle(evt)?!this.stopClick:true;},mousemove:function(evt){if(!this.callbacks['over']&&!this.callbacks['out']){return true;} -this.handle(evt);return true;},dblclick:function(evt){return!this.handle(evt);},geometryTypeMatches:function(feature){return this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1;},handle:function(evt){if(this.feature&&!this.feature.layer){this.feature=null;} -var type=evt.type;var handled=false;var previouslyIn=!!(this.feature);var click=(type=="click"||type=="dblclick"||type=="touchstart");this.feature=this.layer.getFeatureFromEvent(evt);if(this.feature&&!this.feature.layer){this.feature=null;} -if(this.lastFeature&&!this.lastFeature.layer){this.lastFeature=null;} -if(this.feature){if(type==="touchstart"){OpenLayers.Event.stop(evt);} -var inNew=(this.feature!=this.lastFeature);if(this.geometryTypeMatches(this.feature)){if(previouslyIn&&inNew){if(this.lastFeature){this.triggerCallback(type,'out',[this.lastFeature]);} -this.triggerCallback(type,'in',[this.feature]);}else if(!previouslyIn||click){this.triggerCallback(type,'in',[this.feature]);} -this.lastFeature=this.feature;handled=true;}else{if(this.lastFeature&&(previouslyIn&&inNew||click)){this.triggerCallback(type,'out',[this.lastFeature]);} -this.feature=null;}}else{if(this.lastFeature&&(previouslyIn||click)){this.triggerCallback(type,'out',[this.lastFeature]);}} -return handled;},triggerCallback:function(type,mode,args){var key=this.EVENTMAP[type][mode];if(key){if(type=='click'&&this.up&&this.down){var dpx=Math.sqrt(Math.pow(this.up.x-this.down.x,2)+ -Math.pow(this.up.y-this.down.y,2));if(dpx<=this.clickTolerance){this.callback(key,args);}}else{this.callback(key,args);}}},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.moveLayerToTop();this.map.events.on({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});activated=true;} -return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.moveLayerBack();this.feature=null;this.lastFeature=null;this.down=null;this.up=null;this.touch=false;this.map.events.un({"removelayer":this.handleMapEvents,"changelayer":this.handleMapEvents,scope:this});deactivated=true;} -return deactivated;},handleMapEvents:function(evt){if(evt.type=="removelayer"||evt.property=="order"){this.moveLayerToTop();}},moveLayerToTop:function(){var index=Math.max(this.map.Z_INDEX_BASE['Feature']-1,this.layer.getZIndex())+1;this.layer.setZIndex(index);},moveLayerBack:function(){var index=this.layer.getZIndex()-1;if(index>=this.map.Z_INDEX_BASE['Feature']){this.layer.setZIndex(index);}else{this.map.setLayerZIndex(this.layer,this.map.getLayerIndex(this.layer));}},CLASS_NAME:"OpenLayers.Handler.Feature"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(feature,pixel){},onDrag:function(feature,pixel){},onComplete:function(feature,pixel){},onEnter:function(feature){},onLeave:function(feature){},documentDrag:false,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})};},clickFeature:function(feature){if(this.handlers.feature.touch&&!this.over&&this.overFeature(feature)){this.handlers.drag.dragstart(this.handlers.feature.evt);this.handlers.drag.stopDown=false;}},clickoutFeature:function(feature){if(this.handlers.feature.touch&&this.over){this.outFeature(feature);this.handlers.drag.stopDown=true;}},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=false;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},overFeature:function(feature){var activated=false;if(!this.handlers.drag.dragging){this.feature=feature;this.handlers.drag.activate();activated=true;this.over=true;OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over");this.onEnter(feature);}else{if(this.feature.id==feature.id){this.over=true;}else{this.over=false;}} -return activated;},downFeature:function(pixel){this.lastPixel=pixel;this.onStart(this.feature,pixel);},moveFeature:function(pixel){var res=this.map.getResolution();this.feature.geometry.move(res*(pixel.x-this.lastPixel.x),res*(this.lastPixel.y-pixel.y));this.layer.drawFeature(this.feature);this.lastPixel=pixel;this.onDrag(this.feature,pixel);},upFeature:function(pixel){if(!this.over){this.handlers.drag.deactivate();}},doneDragging:function(pixel){this.onComplete(this.feature,pixel);},outFeature:function(feature){if(!this.handlers.drag.dragging){this.over=false;this.handlers.drag.deactivate();OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");this.onLeave(feature);this.feature=null;}else{if(this.feature.id==feature.id){this.over=false;}}},cancel:function(){this.handlers.drag.deactivate();this.over=false;},setMap:function(map){this.handlers.drag.setMap(map);this.handlers.feature.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxOffsets:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask});},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;}},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv('zoomBox',new OpenLayers.Pixel(-9999,-9999));this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.eventsDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);var offset=this.getBoxOffsets();this.zoomBox.style.width=(deltaX+offset.width+1)+"px";this.zoomBox.style.height=(deltaY+offset.height+1)+"px";this.zoomBox.style.left=(xy.x<startX?startX-deltaX-offset.left:startX-offset.left)+"px";this.zoomBox.style.top=(xy.y<startY?startY-deltaY-offset.top:startY-offset.top)+"px";},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} -this.removeBox();this.callback("done",[result]);},removeBox:function(){this.map.eventsDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxOffsets=null;OpenLayers.Element.removeClass(this.map.eventsDiv,"olDrawBox");},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.dragHandler.deactivate()){if(this.zoomBox){this.removeBox();}} -return true;}else{return false;}},getBoxOffsets:function(){if(!this.boxOffsets){var testDiv=document.createElement("div");testDiv.style.position="absolute";testDiv.style.border="1px solid black";testDiv.style.width="3px";document.body.appendChild(testDiv);var w3cBoxModel=testDiv.clientWidth==3;document.body.removeChild(testDiv);var left=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"));var right=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"));var top=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"));var bottom=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:left,right:right,top:top,bottom:bottom,width:w3cBoxModel===false?left+right:0,height:w3cBoxModel===false?top+bottom:0};} -return this.boxOffsets;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var bounds;if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);} -var lastZoom=this.map.getZoom();this.map.zoomToExtent(bounds);if(lastZoom==this.map.getZoom()&&this.alwaysZoom==true){this.map.zoomTo(lastZoom+(this.out?-1:1));}}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:1,documentDrag:false,kinetic:null,enableKinetic:false,kineticInterval:10,draw:function(){if(this.enableKinetic){var config={interval:this.kineticInterval};if(typeof this.enableKinetic==="object"){config=OpenLayers.Util.extend(config,this.enableKinetic);} -this.kinetic=new OpenLayers.Kinetic(config);} -this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone,"down":this.panMapStart},{interval:this.interval,documentDrag:this.documentDrag});},panMapStart:function(){if(this.kinetic){this.kinetic.begin();}},panMap:function(xy){if(this.kinetic){this.kinetic.update(xy);} -this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:true,animate:false});},panMapDone:function(xy){if(this.panned){var res=null;if(this.kinetic){res=this.kinetic.end(xy);} -this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:!!res,animate:false});if(res){var self=this;this.kinetic.move(res,function(x,y,end){self.map.pan(x,y,{dragging:!end,animate:false});});} -this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.MouseWheel=OpenLayers.Class(OpenLayers.Handler,{wheelListener:null,mousePosition:null,interval:0,delta:0,cumulative:true,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=OpenLayers.Function.bindAsEventListener(this.onWheelEvent,this);},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null;},onWheelEvent:function(e){if(!this.map||!this.checkModifiers(e)){return;} -var overScrollableDiv=false;var overLayerDiv=false;var overMapDiv=false;var elem=OpenLayers.Event.element(e);while((elem!=null)&&!overMapDiv&&!overScrollableDiv){if(!overScrollableDiv){try{if(elem.currentStyle){overflow=elem.currentStyle["overflow"];}else{var style=document.defaultView.getComputedStyle(elem,null);var overflow=style.getPropertyValue("overflow");} -overScrollableDiv=(overflow&&(overflow=="auto")||(overflow=="scroll"));}catch(err){}} -if(!overLayerDiv){for(var i=0,len=this.map.layers.length;i<len;i++){if(elem==this.map.layers[i].div||elem==this.map.layers[i].pane){overLayerDiv=true;break;}}} -overMapDiv=(elem==this.map.div);elem=elem.parentNode;} -if(!overScrollableDiv&&overMapDiv){if(overLayerDiv){var delta=0;if(!e){e=window.event;} -if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){delta=-delta;}}else if(e.detail){delta=-e.detail/3;} -this.delta=this.delta+delta;if(this.interval){window.clearTimeout(this._timeoutId);this._timeoutId=window.setTimeout(OpenLayers.Function.bind(function(){this.wheelZoom(e);},this),this.interval);}else{this.wheelZoom(e);}} -OpenLayers.Event.stop(e);}},wheelZoom:function(e){var delta=this.delta;this.delta=0;if(delta){if(this.mousePosition){e.xy=this.mousePosition;} -if(!e.xy){e.xy=this.map.getPixelFromLonLat(this.map.getCenter());} -if(delta<0){this.callback("down",[e,this.cumulative?delta:-1]);}else{this.callback("up",[e,this.cumulative?delta:1]);}}},mousemove:function(evt){this.mousePosition=evt.xy;},activate:function(evt){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.observe(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.observe(window,"mousewheel",wheelListener);OpenLayers.Event.observe(document,"mousewheel",wheelListener);return true;}else{return false;}},deactivate:function(evt){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){var wheelListener=this.wheelListener;OpenLayers.Event.stopObserving(window,"DOMMouseScroll",wheelListener);OpenLayers.Event.stopObserving(window,"mousewheel",wheelListener);OpenLayers.Event.stopObserving(document,"mousewheel",wheelListener);return true;}else{return false;}},CLASS_NAME:"OpenLayers.Handler.MouseWheel"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,dblclickTolerance:13,stopSingle:false,stopDouble:false,timerId:null,touch:false,down:null,last:null,first:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){if(!this.touch){this.unregisterMouseListeners();this.touch=true;} -this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},touchmove:function(evt){this.last=this.getEventInfo(evt);return true;},touchend:function(evt){if(this.down){evt.xy=this.last.xy;evt.lastTouches=this.last.touches;this.handleSingle(evt);this.down=null;} -return true;},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this});},mousedown:function(evt){this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},mouseup:function(evt){var propagate=true;if(this.checkModifiers(evt)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(evt)){propagate=this.rightclick(evt);} -return propagate;},rightclick:function(evt){if(this.passesTolerance(evt)){if(this.rightclickTimerId!=null){this.clearTimer();this.callback('dblrightclick',[evt]);return!this.stopDouble;}else{var clickEvent=this['double']?OpenLayers.Util.extend({},evt):this.callback('rightclick',[evt]);var delayedRightCall=OpenLayers.Function.bind(this.delayedRightCall,this,clickEvent);this.rightclickTimerId=window.setTimeout(delayedRightCall,this.delay);}} -return!this.stopSingle;},delayedRightCall:function(evt){this.rightclickTimerId=null;if(evt){this.callback('rightclick',[evt]);}},click:function(evt){if(!this.last){this.last=this.getEventInfo(evt);} -this.handleSingle(evt);return!this.stopSingle;},dblclick:function(evt){this.handleDouble(evt);return!this.stopDouble;},handleDouble:function(evt){if(this["double"]&&this.passesDblclickTolerance(evt)){this.callback("dblclick",[evt]);}},handleSingle:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){if(this.last.touches&&this.last.touches.length===1){if(this["double"]){OpenLayers.Event.stop(evt);} -this.handleDouble(evt);} -if(!this.last.touches||this.last.touches.length!==2){this.clearTimer();}}else{this.first=this.getEventInfo(evt);var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.queuePotentialClick(clickEvent);}}},queuePotentialClick:function(evt){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down&&this.down.xy){passes=this.pixelTolerance>=this.down.xy.distanceTo(evt.xy);if(passes&&this.touch&&this.down.touches.length===this.last.touches.length){for(var i=0,ii=this.down.touches.length;i<ii;++i){if(this.getTouchDistance(this.down.touches[i],this.last.touches[i])>this.pixelTolerance){passes=false;break;}}}} -return passes;},getTouchDistance:function(from,to){return Math.sqrt(Math.pow(from.clientX-to.clientX,2)+ -Math.pow(from.clientY-to.clientY,2));},passesDblclickTolerance:function(evt){var passes=true;if(this.down&&this.first){passes=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance;} -return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;} -if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback("click",[evt]);}},getEventInfo:function(evt){var touches;if(evt.touches){var len=evt.touches.length;touches=new Array(len);var touch;for(var i=0;i<len;i++){touch=evt.touches[i];touches[i]={clientX:touch.clientX,clientY:touch.clientY};}} -return{xy:evt.xy,touches:touches};},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;this.first=null;this.last=null;this.touch=false;deactivated=true;} -return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:false,zoomBox:null,zoomBoxEnabled:true,zoomWheelEnabled:true,mouseWheelOptions:null,handleRightClicks:false,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:true,initialize:function(options){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy();} -this.dragPan=null;if(this.zoomBox){this.zoomBox.destroy();} -this.zoomBox=null;if(this.pinchZoom){this.pinchZoom.destroy();} -this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){this.dragPan.activate();if(this.zoomWheelEnabled){this.handlers.wheel.activate();} -this.handlers.click.activate();if(this.zoomBoxEnabled){this.zoomBox.activate();} -if(this.pinchZoom){this.pinchZoom.activate();} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.pinchZoom){this.pinchZoom.deactivate();} -this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},draw:function(){if(this.handleRightClicks){this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False;} -var clickCallbacks={'click':this.defaultClick,'dblclick':this.defaultDblClick,'dblrightclick':this.defaultDblRightClick};var clickOptions={'double':true,'stopDouble':true};this.handlers.click=new OpenLayers.Handler.Click(this,clickCallbacks,clickOptions);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{"up":this.wheelUp,"down":this.wheelDown},this.mouseWheelOptions);if(OpenLayers.Control.PinchZoom){this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions));}},defaultClick:function(evt){if(evt.lastTouches&&evt.lastTouches.length==2){this.map.zoomOut();}},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);},defaultDblRightClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom-1);},wheelChange:function(evt,deltaZ){var currentZoom=this.map.getZoom();var newZoom=this.map.getZoom()+Math.round(deltaZ);newZoom=Math.max(newZoom,0);newZoom=Math.min(newZoom,this.map.getNumZoomLevels());if(newZoom===currentZoom){return;} -var size=this.map.getSize();var deltaX=size.w/2-evt.xy.x;var deltaY=evt.xy.y-size.h/2;var newRes=this.map.baseLayer.getResolutionForZoom(newZoom);var zoomPoint=this.map.getLonLatFromPixel(evt.xy);var newCenter=new OpenLayers.LonLat(zoomPoint.lon+deltaX*newRes,zoomPoint.lat+deltaY*newRes);this.map.setCenter(newCenter,newZoom);},wheelUp:function(evt,delta){this.wheelChange(evt,delta||1);},wheelDown:function(evt,delta){this.wheelChange(evt,delta||-1);},disableZoomBox:function(){this.zoomBoxEnabled=false;this.zoomBox.deactivate();},enableZoomBox:function(){this.zoomBoxEnabled=true;if(this.active){this.zoomBox.activate();}},disableZoomWheel:function(){this.zoomWheelEnabled=false;this.handlers.wheel.deactivate();},enableZoomWheel:function(){this.zoomWheelEnabled=true;if(this.active){this.handlers.wheel.activate();}},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}} +return bounds;},CLASS_NAME:"OpenLayers.Layer"});OpenLayers.StyleMap=OpenLayers.Class({styles:null,extendDefault:true,initialize:function(style,options){this.styles={"default":new OpenLayers.Style(OpenLayers.Feature.Vector.style["default"]),"select":new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),"temporary":new OpenLayers.Style(OpenLayers.Feature.Vector.style["temporary"]),"delete":new OpenLayers.Style(OpenLayers.Feature.Vector.style["delete"])};if(style instanceof OpenLayers.Style){this.styles["default"]=style;this.styles["select"]=style;this.styles["temporary"]=style;this.styles["delete"]=style;}else if(typeof style=="object"){for(var key in style){if(style[key]instanceof OpenLayers.Style){this.styles[key]=style[key];}else if(typeof style[key]=="object"){this.styles[key]=new OpenLayers.Style(style[key]);}else{this.styles["default"]=new OpenLayers.Style(style);this.styles["select"]=new OpenLayers.Style(style);this.styles["temporary"]=new OpenLayers.Style(style);this.styles["delete"]=new OpenLayers.Style(style);break;}}} OpenLayers.Util.extend(this,options);},destroy:function(){for(var key in this.styles){this.styles[key].destroy();} this.styles=null;},createSymbolizer:function(feature,intent){if(!feature){feature=new OpenLayers.Feature.Vector();} if(!this.styles[intent]){intent="default";} @@ -874,69 +944,105 @@ return feature;},getFeatureBy:function(property,value){var feature=null;for(var return feature;},getFeatureById:function(featureId){return this.getFeatureBy('id',featureId);},getFeatureByFid:function(featureFid){return this.getFeatureBy('fid',featureFid);},getFeaturesByAttribute:function(attrName,attrValue){var i,feature,len=this.features.length,foundFeatures=[];for(i=0;i<len;i++){feature=this.features[i];if(feature&&feature.attributes){if(feature.attributes[attrName]===attrValue){foundFeatures.push(feature);}}} return foundFeatures;},onFeatureInsert:function(feature){},preFeatureInsert:function(feature){},getDataExtent:function(){var maxExtent=null;var features=this.features;if(features&&(features.length>0)){var geometry=null;for(var i=0,len=features.length;i<len;i++){geometry=features[i].geometry;if(geometry){if(maxExtent===null){maxExtent=new OpenLayers.Bounds();} maxExtent.extend(geometry.getBounds());}}} -return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:false,layers:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},display:function(){},getFeatureFromEvent:function(evt){var layers=this.layers;var feature;for(var i=0;i<layers.length;i++){feature=layers[i].getFeatureFromEvent(evt);if(feature){return feature;}}},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();map.events.register("changelayer",this,this.handleChangeLayer);},removeMap:function(map){map.events.unregister("changelayer",this,this.handleChangeLayer);this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},collectRoots:function(){var layer;for(var i=0;i<this.map.layers.length;++i){layer=this.map.layers[i];if(OpenLayers.Util.indexOf(this.layers,layer)!=-1){layer.renderer.moveRoot(this.renderer);}}},resetRoots:function(){var layer;for(var i=0;i<this.layers.length;++i){layer=this.layers[i];if(this.renderer&&layer.renderer.getRenderLayerId()==this.id){this.renderer.moveRoot(layer.renderer);}}},handleChangeLayer:function(evt){var layer=evt.layer;if(evt.property=="order"&&OpenLayers.Util.indexOf(this.layers,layer)!=-1){this.resetRoots();this.collectRoots();}},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(options){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this);},evaluate:function(context){var i,len;switch(this.type){case OpenLayers.Filter.Logical.AND:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==false){return false;}} +return maxExtent;},CLASS_NAME:"OpenLayers.Layer.Vector"});OpenLayers.Layer.Vector.RootContainer=OpenLayers.Class(OpenLayers.Layer.Vector,{displayInLayerSwitcher:false,layers:null,initialize:function(name,options){OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments);},display:function(){},getFeatureFromEvent:function(evt){var layers=this.layers;var feature;for(var i=0;i<layers.length;i++){feature=layers[i].getFeatureFromEvent(evt);if(feature){return feature;}}},setMap:function(map){OpenLayers.Layer.Vector.prototype.setMap.apply(this,arguments);this.collectRoots();map.events.register("changelayer",this,this.handleChangeLayer);},removeMap:function(map){map.events.unregister("changelayer",this,this.handleChangeLayer);this.resetRoots();OpenLayers.Layer.Vector.prototype.removeMap.apply(this,arguments);},collectRoots:function(){var layer;for(var i=0;i<this.map.layers.length;++i){layer=this.map.layers[i];if(OpenLayers.Util.indexOf(this.layers,layer)!=-1){layer.renderer.moveRoot(this.renderer);}}},resetRoots:function(){var layer;for(var i=0;i<this.layers.length;++i){layer=this.layers[i];if(this.renderer&&layer.renderer.getRenderLayerId()==this.id){this.renderer.moveRoot(layer.renderer);}}},handleChangeLayer:function(evt){var layer=evt.layer;if(evt.property=="order"&&OpenLayers.Util.indexOf(this.layers,layer)!=-1){this.resetRoots();this.collectRoots();}},CLASS_NAME:"OpenLayers.Layer.Vector.RootContainer"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforefeaturehighlighted","featurehighlighted","featureunhighlighted"],multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,highlightOnly:false,box:false,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(layers,options){this.EVENT_TYPES=OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.scope===null){this.scope=this;} +this.initLayer(layers);var callbacks={click:this.clickFeature,clickout:this.clickoutFeature};if(this.hover){callbacks.over=this.overFeature;callbacks.out=this.outFeature;} +this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"});}},initLayer:function(layers){if(OpenLayers.Util.isArray(layers)){this.layers=layers;this.layer=new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:layers});}else{this.layer=layers;}},destroy:function(){if(this.active&&this.layers){this.map.removeLayer(this.layer);} +OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.layers){this.layer.destroy();}},activate:function(){if(!this.active){if(this.layers){this.map.addLayer(this.layer);} +this.handlers.feature.activate();if(this.box&&this.handlers.box){this.handlers.box.activate();}} +return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.handlers.feature.deactivate();if(this.handlers.box){this.handlers.box.deactivate();} +if(this.layers){this.map.removeLayer(this.layer);}} +return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},unselectAll:function(options){var layers=this.layers||[this.layer];var layer,feature;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=layer.selectedFeatures.length-1;i>=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});} +this.select(feature);}}},multipleSelect:function(){return this.multiple||(this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;if(feature._prevHighlighter==undefined){delete feature._lastHighlighter;}else if(feature._prevHighlighter==this.id){delete feature._prevHighlighter;}else{feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;} +layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);if(!this.handlers.feature.lastFeature){this.handlers.feature.lastFeature=layer.selectedFeatures[0];} +layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);if(!this.multipleSelect()){this.unselectAll();} +var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=0,len=layer.features.length;i<len;++i){var feature=layer.features[i];if(!feature.getVisibility()){continue;} +if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}} +this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);} +OpenLayers.Control.prototype.setMap.apply(this,arguments);},setLayer:function(layers){var isActive=this.active;this.unselectAll();this.deactivate();if(this.layers){this.layer.destroy();this.layers=null;} +this.initLayer(layers);this.handlers.feature.layer=this.layer;if(isActive){this.activate();}},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Control.Attribution=OpenLayers.Class(OpenLayers.Control,{separator:", ",destroy:function(){this.map.events.un({"removelayer":this.updateAttribution,"addlayer":this.updateAttribution,"changelayer":this.updateAttribution,"changebaselayer":this.updateAttribution,scope:this});OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);this.map.events.on({'changebaselayer':this.updateAttribution,'changelayer':this.updateAttribution,'addlayer':this.updateAttribution,'removelayer':this.updateAttribution,scope:this});this.updateAttribution();return this.div;},updateAttribution:function(){var attributions=[];if(this.map&&this.map.layers){for(var i=0,len=this.map.layers.length;i<len;i++){var layer=this.map.layers[i];if(layer.attribution&&layer.getVisibility()){if(OpenLayers.Util.indexOf(attributions,layer.attribution)===-1){attributions.push(layer.attribution);}}} +this.div.innerHTML=attributions.join(this.separator);}},CLASS_NAME:"OpenLayers.Control.Attribution"});OpenLayers.Filter.Logical=OpenLayers.Class(OpenLayers.Filter,{filters:null,type:null,initialize:function(options){this.filters=[];OpenLayers.Filter.prototype.initialize.apply(this,[options]);},destroy:function(){this.filters=null;OpenLayers.Filter.prototype.destroy.apply(this);},evaluate:function(context){var i,len;switch(this.type){case OpenLayers.Filter.Logical.AND:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==false){return false;}} return true;case OpenLayers.Filter.Logical.OR:for(i=0,len=this.filters.length;i<len;i++){if(this.filters[i].evaluate(context)==true){return true;}} return false;case OpenLayers.Filter.Logical.NOT:return(!this.filters[0].evaluate(context));} return undefined;},clone:function(){var filters=[];for(var i=0,len=this.filters.length;i<len;++i){filters.push(this.filters[i].clone());} -return new OpenLayers.Filter.Logical({type:this.type,filters:filters});},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Tile=OpenLayers.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,initialize:function(layer,position,bounds,url,size,options){this.layer=layer;this.position=position.clone();this.bounds=bounds.clone();this.url=url;if(size){this.size=size.clone();} -this.id=OpenLayers.Util.createUniqueID("Tile_");this.events=new OpenLayers.Events(this,null,this.EVENT_TYPES);OpenLayers.Util.extend(this,options);},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload");}},destroy:function(){this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile(this.layer,this.position,this.bounds,this.url,this.size);} -OpenLayers.Util.applyDefaults(obj,this);return obj;},draw:function(){var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));this.shouldDraw=(withinMaxExtent||this.layer.displayOutsideMaxExtent);this.clear();return this.shouldDraw;},moveTo:function(bounds,position,redraw){if(redraw==null){redraw=true;} -this.bounds=bounds.clone();this.position=position.clone();if(redraw){this.draw();}},clear:function(){},getBoundsFromBaseLayer:function(position){var msg=OpenLayers.i18n('reprojectDeprecated',{'layerName':this.layer.name});OpenLayers.Console.warn(msg);var topLeft=this.layer.map.getLonLatFromLayerPx(position);var bottomRightPx=position.clone();bottomRightPx.x+=this.size.w;bottomRightPx.y+=this.size.h;var bottomRight=this.layer.map.getLonLatFromLayerPx(bottomRightPx);if(topLeft.lon>bottomRight.lon){if(topLeft.lon<0){topLeft.lon=-180-(topLeft.lon+180);}else{bottomRight.lon=180+bottomRight.lon+180;}} -var bounds=new OpenLayers.Bounds(topLeft.lon,bottomRight.lat,bottomRight.lon,topLeft.lat);return bounds;},showTile:function(){if(this.shouldDraw){this.show();}},show:function(){},hide:function(){},CLASS_NAME:"OpenLayers.Tile"});OpenLayers.Tile.Image=OpenLayers.Class(OpenLayers.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,isBackBuffer:false,isFirstDraw:true,backBufferTile:null,maxGetUrlLength:null,initialize:function(layer,position,bounds,url,size,options){OpenLayers.Tile.prototype.initialize.apply(this,arguments);if(this.maxGetUrlLength!=null){OpenLayers.Util.extend(this,OpenLayers.Tile.Image.IFrame);} -this.url=url;this.frame=document.createElement('div');this.frame.style.overflow='hidden';this.frame.style.position='absolute';this.layerAlphaHack=this.layer.alpha&&OpenLayers.Util.alphaHack();},destroy:function(){if(this.imgDiv!=null){this.removeImgDiv();} -this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame);} -this.frame=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null;} -this.layer.events.unregister("loadend",this,this.resetBackBuffer);OpenLayers.Tile.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size);} -obj=OpenLayers.Tile.prototype.clone.apply(this,[obj]);obj.imgDiv=null;return obj;},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position);} -var drawTile=OpenLayers.Tile.prototype.draw.apply(this,arguments);if((OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1)||this.layer.singleTile){if(drawTile){if(!this.backBufferTile){this.backBufferTile=this.clone();this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register('loadend',this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer);} -this.startTransition();}else{if(this.backBufferTile){this.backBufferTile.clear();}}}else{if(drawTile&&this.isFirstDraw){this.events.register('loadend',this,this.showTile);this.isFirstDraw=false;}} -if(!drawTile){return false;} -if(this.isLoading){this.events.triggerEvent("reload");}else{this.isLoading=true;this.events.triggerEvent("loadstart");} -return this.renderTile();},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;var maxExtent=this.layer.maxExtent;var withinMaxExtent=(maxExtent&&this.bounds.intersectsBounds(maxExtent,false));if(withinMaxExtent){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.getImageSize(this.bounds)||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile();} -this.backBufferTile.hide();}},renderTile:function(){if(this.layer.async){this.initImgDiv();this.layer.getURLasync(this.bounds,this,"url",this.positionImage);}else{this.url=this.layer.getURL(this.bounds);this.initImgDiv();this.positionImage();} -return true;},positionImage:function(){if(this.layer===null){return;} -OpenLayers.Util.modifyDOMElement(this.frame,null,this.position,this.size);var imageSize=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv,null,null,imageSize,this.url);}else{OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,imageSize);this.imgDiv.src=this.url;}},clear:function(){if(this.imgDiv){this.hide();if(OpenLayers.Tile.Image.useBlankTile){this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}}},initImgDiv:function(){if(this.imgDiv==null){var offset=this.layer.imageOffset;var size=this.layer.getImageSize(this.bounds);if(this.layerAlphaHack){this.imgDiv=OpenLayers.Util.createAlphaImageDiv(null,offset,size,null,"relative",null,null,null,true);}else{this.imgDiv=OpenLayers.Util.createImage(null,offset,size,null,"relative",null,null,true);} -if(OpenLayers.Util.isArray(this.layer.url)){this.imgDiv.urls=this.layer.url.slice();} -this.imgDiv.className='olTileImage';this.frame.style.zIndex=this.isBackBuffer?0:1;this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){OpenLayers.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity);} -this.imgDiv.map=this.layer.map;var onload=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");}};if(this.layerAlphaHack){OpenLayers.Event.observe(this.imgDiv.childNodes[0],'load',OpenLayers.Function.bind(onload,this));}else{OpenLayers.Event.observe(this.imgDiv,'load',OpenLayers.Function.bind(onload,this));} -var onerror=function(){if(this.imgDiv._attempts>OpenLayers.IMAGE_RELOAD_ATTEMPTS){onload.call(this);}};OpenLayers.Event.observe(this.imgDiv,"error",OpenLayers.Function.bind(onerror,this));} -this.imgDiv.viewRequestID=this.layer.map.viewRequestID;},removeImgDiv:function(){OpenLayers.Event.stopObservingElement(this.imgDiv);if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;} -this.imgDiv.urls=null;var child=this.imgDiv.firstChild;if(child){OpenLayers.Event.stopObservingElement(child);this.imgDiv.removeChild(child);delete child;}else{this.imgDiv.src=OpenLayers.Util.getImagesLocation()+"blank.gif";}},checkImgURL:function(){if(this.layer){var loaded=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!OpenLayers.Util.isEquivalentUrl(loaded,this.url)){this.hide();}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return;} -var ratio=1;if(this.backBufferTile.resolution){ratio=this.backBufferTile.resolution/this.layer.getResolution();} -if(ratio!=1){if(this.layer.transitionEffect=='resize'){var upperLeft=new OpenLayers.LonLat(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top);var size=new OpenLayers.Size(this.backBufferTile.size.w*ratio,this.backBufferTile.size.h*ratio);var px=this.layer.map.getLayerPxFromLonLat(upperLeft);OpenLayers.Util.modifyDOMElement(this.backBufferTile.frame,null,px,size);var imageSize=this.backBufferTile.imageSize;imageSize=new OpenLayers.Size(imageSize.w*ratio,imageSize.h*ratio);var imageOffset=this.backBufferTile.imageOffset;if(imageOffset){imageOffset=new OpenLayers.Pixel(imageOffset.x*ratio,imageOffset.y*ratio);} -OpenLayers.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,imageOffset,imageSize);this.backBufferTile.show();}}else{if(this.layer.singleTile){this.backBufferTile.show();}else{this.backBufferTile.hide();}}},show:function(){this.frame.style.display='';if(OpenLayers.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(OpenLayers.IS_GECKO===true){this.frame.scrollLeft=this.frame.scrollLeft;}}},hide:function(){this.frame.style.display='none';},CLASS_NAME:"OpenLayers.Tile.Image"});OpenLayers.Tile.Image.useBlankTile=(OpenLayers.BROWSER_NAME=="safari"||OpenLayers.BROWSER_NAME=="opera");OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,serverResolutions:null,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),maxResolution:156543.03390625,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);} +return new OpenLayers.Filter.Logical({type:this.type,filters:filters});},CLASS_NAME:"OpenLayers.Filter.Logical"});OpenLayers.Filter.Logical.AND="&&";OpenLayers.Filter.Logical.OR="||";OpenLayers.Filter.Logical.NOT="!";OpenLayers.Handler.Drag=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:true,dragging:false,touch:false,last:null,start:null,lastMoveEvt:null,oldOnselectstart:null,interval:0,timeoutId:null,documentDrag:false,documentEvents:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);if(this.documentDrag===true){var me=this;this._docMove=function(evt){me.mousemove({xy:{x:evt.clientX,y:evt.clientY},element:document});};this._docUp=function(evt){me.mouseup({xy:{x:evt.clientX,y:evt.clientY}});};}},dragstart:function(evt){var propagate=true;this.dragging=false;if(this.checkModifiers(evt)&&(OpenLayers.Event.isLeftClick(evt)||OpenLayers.Event.isSingleTouch(evt))){this.started=true;this.start=evt.xy;this.last=evt.xy;OpenLayers.Element.addClass(this.map.viewPortDiv,"olDragDown");this.down(evt);this.callback("down",[evt.xy]);OpenLayers.Event.stop(evt);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart?document.onselectstart:OpenLayers.Function.True;} +document.onselectstart=OpenLayers.Function.False;propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +return propagate;},dragmove:function(evt){this.lastMoveEvt=evt;if(this.started&&!this.timeoutId&&(evt.xy.x!=this.last.x||evt.xy.y!=this.last.y)){if(this.documentDrag===true&&this.documentEvents){if(evt.element===document){this.adjustXY(evt);this.setEvent(evt);}else{this.removeDocumentEvents();}} +if(this.interval>0){this.timeoutId=setTimeout(OpenLayers.Function.bind(this.removeTimeout,this),this.interval);} +this.dragging=true;this.move(evt);this.callback("move",[evt.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=OpenLayers.Function.False;} +this.last=evt.xy;} +return true;},dragend:function(evt){if(this.started){if(this.documentDrag===true&&this.documentEvents){this.adjustXY(evt);this.removeDocumentEvents();} +var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.up(evt);this.callback("up",[evt.xy]);if(dragged){this.callback("done",[evt.xy]);} +document.onselectstart=this.oldOnselectstart;} +return true;},down:function(evt){},move:function(evt){},up:function(evt){},out:function(evt){},mousedown:function(evt){return this.dragstart(evt);},touchstart:function(evt){if(!this.touch){this.touch=true;this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,mousemove:this.mousemove,click:this.click,scope:this});} +return this.dragstart(evt);},mousemove:function(evt){return this.dragmove(evt);},touchmove:function(evt){return this.dragmove(evt);},removeTimeout:function(){this.timeoutId=null;if(this.dragging){this.mousemove(this.lastMoveEvt);}},mouseup:function(evt){return this.dragend(evt);},touchend:function(evt){evt.xy=this.last;return this.dragend(evt);},mouseout:function(evt){if(this.started&&OpenLayers.Util.mouseLeft(evt,this.map.eventsDiv)){if(this.documentDrag===true){this.addDocumentEvents();}else{var dragged=(this.start!=this.last);this.started=false;this.dragging=false;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");this.out(evt);this.callback("out",[]);if(dragged){this.callback("done",[evt.xy]);} +if(document.onselectstart){document.onselectstart=this.oldOnselectstart;}}} +return true;},click:function(evt){return(this.start==this.last);},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.touch=false;this.started=false;this.dragging=false;this.start=null;this.last=null;deactivated=true;OpenLayers.Element.removeClass(this.map.viewPortDiv,"olDragDown");} +return deactivated;},adjustXY:function(evt){var pos=OpenLayers.Util.pagePosition(this.map.viewPortDiv);evt.xy.x-=pos[0];evt.xy.y-=pos[1];},addDocumentEvents:function(){OpenLayers.Element.addClass(document.body,"olDragDown");this.documentEvents=true;OpenLayers.Event.observe(document,"mousemove",this._docMove);OpenLayers.Event.observe(document,"mouseup",this._docUp);},removeDocumentEvents:function(){OpenLayers.Element.removeClass(document.body,"olDragDown");this.documentEvents=false;OpenLayers.Event.stopObserving(document,"mousemove",this._docMove);OpenLayers.Event.stopObserving(document,"mouseup",this._docUp);},CLASS_NAME:"OpenLayers.Handler.Drag"});OpenLayers.Handler.Box=OpenLayers.Class(OpenLayers.Handler,{dragHandler:null,boxDivClassName:'olHandlerBoxZoomBox',boxOffsets:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);this.dragHandler=new OpenLayers.Handler.Drag(this,{down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox},{keyMask:this.keyMask});},destroy:function(){OpenLayers.Handler.prototype.destroy.apply(this,arguments);if(this.dragHandler){this.dragHandler.destroy();this.dragHandler=null;}},setMap:function(map){OpenLayers.Handler.prototype.setMap.apply(this,arguments);if(this.dragHandler){this.dragHandler.setMap(map);}},startBox:function(xy){this.callback("start",[]);this.zoomBox=OpenLayers.Util.createDiv('zoomBox',new OpenLayers.Pixel(-9999,-9999));this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE["Popup"]-1;this.map.eventsDiv.appendChild(this.zoomBox);OpenLayers.Element.addClass(this.map.eventsDiv,"olDrawBox");},moveBox:function(xy){var startX=this.dragHandler.start.x;var startY=this.dragHandler.start.y;var deltaX=Math.abs(startX-xy.x);var deltaY=Math.abs(startY-xy.y);var offset=this.getBoxOffsets();this.zoomBox.style.width=(deltaX+offset.width+1)+"px";this.zoomBox.style.height=(deltaY+offset.height+1)+"px";this.zoomBox.style.left=(xy.x<startX?startX-deltaX-offset.left:startX-offset.left)+"px";this.zoomBox.style.top=(xy.y<startY?startY-deltaY-offset.top:startY-offset.top)+"px";},endBox:function(end){var result;if(Math.abs(this.dragHandler.start.x-end.x)>5||Math.abs(this.dragHandler.start.y-end.y)>5){var start=this.dragHandler.start;var top=Math.min(start.y,end.y);var bottom=Math.max(start.y,end.y);var left=Math.min(start.x,end.x);var right=Math.max(start.x,end.x);result=new OpenLayers.Bounds(left,bottom,right,top);}else{result=this.dragHandler.start.clone();} +this.removeBox();this.callback("done",[result]);},removeBox:function(){this.map.eventsDiv.removeChild(this.zoomBox);this.zoomBox=null;this.boxOffsets=null;OpenLayers.Element.removeClass(this.map.eventsDiv,"olDrawBox");},activate:function(){if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true;}else{return false;}},deactivate:function(){if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){if(this.dragHandler.deactivate()){if(this.zoomBox){this.removeBox();}} +return true;}else{return false;}},getBoxOffsets:function(){if(!this.boxOffsets){var testDiv=document.createElement("div");testDiv.style.position="absolute";testDiv.style.border="1px solid black";testDiv.style.width="3px";document.body.appendChild(testDiv);var w3cBoxModel=testDiv.clientWidth==3;document.body.removeChild(testDiv);var left=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-left-width"));var right=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-right-width"));var top=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-top-width"));var bottom=parseInt(OpenLayers.Element.getStyle(this.zoomBox,"border-bottom-width"));this.boxOffsets={left:left,right:right,top:top,bottom:bottom,width:w3cBoxModel===false?left+right:0,height:w3cBoxModel===false?top+bottom:0};} +return this.boxOffsets;},CLASS_NAME:"OpenLayers.Handler.Box"});OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,draw:function(){this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask});},zoomBox:function(position){if(position instanceof OpenLayers.Bounds){var bounds;if(!this.out){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);}else{var pixWidth=Math.abs(position.right-position.left);var pixHeight=Math.abs(position.top-position.bottom);var zoomFactor=Math.min((this.map.size.h/pixHeight),(this.map.size.w/pixWidth));var extent=this.map.getExtent();var center=this.map.getLonLatFromPixel(position.getCenterPixel());var xmin=center.lon-(extent.getWidth()/2)*zoomFactor;var xmax=center.lon+(extent.getWidth()/2)*zoomFactor;var ymin=center.lat-(extent.getHeight()/2)*zoomFactor;var ymax=center.lat+(extent.getHeight()/2)*zoomFactor;bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);} +var lastZoom=this.map.getZoom();this.map.zoomToExtent(bounds);if(lastZoom==this.map.getZoom()&&this.alwaysZoom==true){this.map.zoomTo(lastZoom+(this.out?-1:1));}}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()+1);}else{this.map.setCenter(this.map.getLonLatFromPixel(position),this.map.getZoom()-1);}}},CLASS_NAME:"OpenLayers.Control.ZoomBox"});OpenLayers.Control.DragPan=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,panned:false,interval:1,documentDrag:false,kinetic:null,enableKinetic:false,kineticInterval:10,draw:function(){if(this.enableKinetic){var config={interval:this.kineticInterval};if(typeof this.enableKinetic==="object"){config=OpenLayers.Util.extend(config,this.enableKinetic);} +this.kinetic=new OpenLayers.Kinetic(config);} +this.handler=new OpenLayers.Handler.Drag(this,{"move":this.panMap,"done":this.panMapDone,"down":this.panMapStart},{interval:this.interval,documentDrag:this.documentDrag});},panMapStart:function(){if(this.kinetic){this.kinetic.begin();}},panMap:function(xy){if(this.kinetic){this.kinetic.update(xy);} +this.panned=true;this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:true,animate:false});},panMapDone:function(xy){if(this.panned){var res=null;if(this.kinetic){res=this.kinetic.end(xy);} +this.map.pan(this.handler.last.x-xy.x,this.handler.last.y-xy.y,{dragging:!!res,animate:false});if(res){var self=this;this.kinetic.move(res,function(x,y,end){self.map.pan(x,y,{dragging:!end,animate:false});});} +this.panned=false;}},CLASS_NAME:"OpenLayers.Control.DragPan"});OpenLayers.Handler.Click=OpenLayers.Class(OpenLayers.Handler,{delay:300,single:true,'double':false,pixelTolerance:0,dblclickTolerance:13,stopSingle:false,stopDouble:false,timerId:null,touch:false,down:null,last:null,first:null,rightclickTimerId:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){if(!this.touch){this.unregisterMouseListeners();this.touch=true;} +this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},touchmove:function(evt){this.last=this.getEventInfo(evt);return true;},touchend:function(evt){if(this.down){evt.xy=this.last.xy;evt.lastTouches=this.last.touches;this.handleSingle(evt);this.down=null;} +return true;},unregisterMouseListeners:function(){this.map.events.un({mousedown:this.mousedown,mouseup:this.mouseup,click:this.click,dblclick:this.dblclick,scope:this});},mousedown:function(evt){this.down=this.getEventInfo(evt);this.last=this.getEventInfo(evt);return true;},mouseup:function(evt){var propagate=true;if(this.checkModifiers(evt)&&this.control.handleRightClicks&&OpenLayers.Event.isRightClick(evt)){propagate=this.rightclick(evt);} +return propagate;},rightclick:function(evt){if(this.passesTolerance(evt)){if(this.rightclickTimerId!=null){this.clearTimer();this.callback('dblrightclick',[evt]);return!this.stopDouble;}else{var clickEvent=this['double']?OpenLayers.Util.extend({},evt):this.callback('rightclick',[evt]);var delayedRightCall=OpenLayers.Function.bind(this.delayedRightCall,this,clickEvent);this.rightclickTimerId=window.setTimeout(delayedRightCall,this.delay);}} +return!this.stopSingle;},delayedRightCall:function(evt){this.rightclickTimerId=null;if(evt){this.callback('rightclick',[evt]);}},click:function(evt){if(!this.last){this.last=this.getEventInfo(evt);} +this.handleSingle(evt);return!this.stopSingle;},dblclick:function(evt){this.handleDouble(evt);return!this.stopDouble;},handleDouble:function(evt){if(this["double"]&&this.passesDblclickTolerance(evt)){this.callback("dblclick",[evt]);}},handleSingle:function(evt){if(this.passesTolerance(evt)){if(this.timerId!=null){if(this.last.touches&&this.last.touches.length===1){if(this["double"]){OpenLayers.Event.stop(evt);} +this.handleDouble(evt);} +if(!this.last.touches||this.last.touches.length!==2){this.clearTimer();}}else{this.first=this.getEventInfo(evt);var clickEvent=this.single?OpenLayers.Util.extend({},evt):null;this.queuePotentialClick(clickEvent);}}},queuePotentialClick:function(evt){this.timerId=window.setTimeout(OpenLayers.Function.bind(this.delayedCall,this,evt),this.delay);},passesTolerance:function(evt){var passes=true;if(this.pixelTolerance!=null&&this.down&&this.down.xy){passes=this.pixelTolerance>=this.down.xy.distanceTo(evt.xy);if(passes&&this.touch&&this.down.touches.length===this.last.touches.length){for(var i=0,ii=this.down.touches.length;i<ii;++i){if(this.getTouchDistance(this.down.touches[i],this.last.touches[i])>this.pixelTolerance){passes=false;break;}}}} +return passes;},getTouchDistance:function(from,to){return Math.sqrt(Math.pow(from.clientX-to.clientX,2)+ +Math.pow(from.clientY-to.clientY,2));},passesDblclickTolerance:function(evt){var passes=true;if(this.down&&this.first){passes=this.down.xy.distanceTo(this.first.xy)<=this.dblclickTolerance;} +return passes;},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;} +if(this.rightclickTimerId!=null){window.clearTimeout(this.rightclickTimerId);this.rightclickTimerId=null;}},delayedCall:function(evt){this.timerId=null;if(evt){this.callback("click",[evt]);}},getEventInfo:function(evt){var touches;if(evt.touches){var len=evt.touches.length;touches=new Array(len);var touch;for(var i=0;i<len;i++){touch=evt.touches[i];touches[i]={clientX:touch.clientX,clientY:touch.clientY};}} +return{xy:evt.xy,touches:touches};},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;this.first=null;this.last=null;this.touch=false;deactivated=true;} +return deactivated;},CLASS_NAME:"OpenLayers.Handler.Click"});OpenLayers.Control.Navigation=OpenLayers.Class(OpenLayers.Control,{dragPan:null,dragPanOptions:null,pinchZoom:null,pinchZoomOptions:null,documentDrag:false,zoomBox:null,zoomBoxEnabled:true,zoomWheelEnabled:true,mouseWheelOptions:null,handleRightClicks:false,zoomBoxKeyMask:OpenLayers.Handler.MOD_SHIFT,autoActivate:true,initialize:function(options){this.handlers={};OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy();} +this.dragPan=null;if(this.zoomBox){this.zoomBox.destroy();} +this.zoomBox=null;if(this.pinchZoom){this.pinchZoom.destroy();} +this.pinchZoom=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},activate:function(){this.dragPan.activate();if(this.zoomWheelEnabled){this.handlers.wheel.activate();} +this.handlers.click.activate();if(this.zoomBoxEnabled){this.zoomBox.activate();} +if(this.pinchZoom){this.pinchZoom.activate();} +return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.pinchZoom){this.pinchZoom.deactivate();} +this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},draw:function(){if(this.handleRightClicks){this.map.viewPortDiv.oncontextmenu=OpenLayers.Function.False;} +var clickCallbacks={'click':this.defaultClick,'dblclick':this.defaultDblClick,'dblrightclick':this.defaultDblRightClick};var clickOptions={'double':true,'stopDouble':true};this.handlers.click=new OpenLayers.Handler.Click(this,clickCallbacks,clickOptions);this.dragPan=new OpenLayers.Control.DragPan(OpenLayers.Util.extend({map:this.map,documentDrag:this.documentDrag},this.dragPanOptions));this.zoomBox=new OpenLayers.Control.ZoomBox({map:this.map,keyMask:this.zoomBoxKeyMask});this.dragPan.draw();this.zoomBox.draw();this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{"up":this.wheelUp,"down":this.wheelDown},this.mouseWheelOptions);if(OpenLayers.Control.PinchZoom){this.pinchZoom=new OpenLayers.Control.PinchZoom(OpenLayers.Util.extend({map:this.map},this.pinchZoomOptions));}},defaultClick:function(evt){if(evt.lastTouches&&evt.lastTouches.length==2){this.map.zoomOut();}},defaultDblClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);},defaultDblRightClick:function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom-1);},wheelChange:function(evt,deltaZ){var currentZoom=this.map.getZoom();var newZoom=this.map.getZoom()+Math.round(deltaZ);newZoom=Math.max(newZoom,0);newZoom=Math.min(newZoom,this.map.getNumZoomLevels());if(newZoom===currentZoom){return;} +var size=this.map.getSize();var deltaX=size.w/2-evt.xy.x;var deltaY=evt.xy.y-size.h/2;var newRes=this.map.baseLayer.getResolutionForZoom(newZoom);var zoomPoint=this.map.getLonLatFromPixel(evt.xy);var newCenter=new OpenLayers.LonLat(zoomPoint.lon+deltaX*newRes,zoomPoint.lat+deltaY*newRes);this.map.setCenter(newCenter,newZoom);},wheelUp:function(evt,delta){this.wheelChange(evt,delta||1);},wheelDown:function(evt,delta){this.wheelChange(evt,delta||-1);},disableZoomBox:function(){this.zoomBoxEnabled=false;this.zoomBox.deactivate();},enableZoomBox:function(){this.zoomBoxEnabled=true;if(this.active){this.zoomBox.activate();}},disableZoomWheel:function(){this.zoomWheelEnabled=false;this.handlers.wheel.deactivate();},enableZoomWheel:function(){this.zoomWheelEnabled=true;if(this.active){this.handlers.wheel.activate();}},CLASS_NAME:"OpenLayers.Control.Navigation"});OpenLayers.Layer.HTTPRequest=OpenLayers.Class(OpenLayers.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(name,url,params,options){OpenLayers.Layer.prototype.initialize.apply(this,[name,options]);this.url=url;this.params=OpenLayers.Util.extend({},params);},destroy:function(){this.url=null;this.params=null;OpenLayers.Layer.prototype.destroy.apply(this,arguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.HTTPRequest(this.name,this.url,this.params,this.getOptions());} +obj=OpenLayers.Layer.prototype.clone.apply(this,[obj]);return obj;},setUrl:function(newUrl){this.url=newUrl;},mergeNewParams:function(newParams){this.params=OpenLayers.Util.extend(this.params,newParams);var ret=this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"params"});} +return ret;},redraw:function(force){if(force){return this.mergeNewParams({"_olSalt":Math.random()});}else{return OpenLayers.Layer.prototype.redraw.apply(this,[]);}},selectUrl:function(paramString,urls){var product=1;for(var i=0,len=paramString.length;i<len;i++){product*=paramString.charCodeAt(i)*this.URL_HASH_FACTOR;product-=Math.floor(product);} +return urls[Math.floor(product*urls.length)];},getFullRequestString:function(newParams,altUrl){var url=altUrl||this.url;var allParams=OpenLayers.Util.extend({},this.params);allParams=OpenLayers.Util.extend(allParams,newParams);var paramsString=OpenLayers.Util.getParameterString(allParams);if(OpenLayers.Util.isArray(url)){url=this.selectUrl(paramsString,url);} +var urlParams=OpenLayers.Util.upperCaseObject(OpenLayers.Util.getParameters(url));for(var key in allParams){if(key.toUpperCase()in urlParams){delete allParams[key];}} +paramsString=OpenLayers.Util.getParameterString(allParams);return OpenLayers.Util.urlAppend(url,paramsString);},CLASS_NAME:"OpenLayers.Layer.HTTPRequest"});OpenLayers.Layer.Grid=OpenLayers.Class(OpenLayers.Layer.HTTPRequest,{tileSize:null,tileOriginCorner:"bl",tileOrigin:null,tileOptions:null,grid:null,singleTile:false,ratio:1.5,buffer:0,numLoadingTiles:0,tileLoadingDelay:100,timerId:null,initialize:function(name,url,params,options){OpenLayers.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[];this._moveGriddedTiles=OpenLayers.Function.bind(this.moveGriddedTiles,this);},removeMap:function(map){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null;}},destroy:function(){this.clearGrid();this.grid=null;this.tileSize=null;OpenLayers.Layer.HTTPRequest.prototype.destroy.apply(this,arguments);},clearGrid:function(){if(this.grid){for(var iRow=0,len=this.grid.length;iRow<len;iRow++){var row=this.grid[iRow];for(var iCol=0,clen=row.length;iCol<clen;iCol++){var tile=row[iCol];this.removeTileMonitoringHooks(tile);tile.destroy();}} +this.grid=[];}},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.Grid(this.name,this.url,this.params,this.getOptions());} +obj=OpenLayers.Layer.HTTPRequest.prototype.clone.apply(this,[obj]);if(this.tileSize!=null){obj.tileSize=this.tileSize.clone();} +obj.grid=[];return obj;},moveTo:function(bounds,zoomChanged,dragging){OpenLayers.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);bounds=bounds||this.map.getExtent();if(bounds!=null){var forceReTile=!this.grid.length||zoomChanged;var tilesBounds=this.getTilesBounds();if(this.singleTile){if(forceReTile||(!dragging&&!tilesBounds.containsBounds(bounds))){this.initSingleTile(bounds);}}else{if(forceReTile||!tilesBounds.containsBounds(bounds,true)){this.initGriddedTiles(bounds);}else{this.scheduleMoveGriddedTiles();}}}},moveByPx:function(dx,dy){if(!this.singleTile){this.scheduleMoveGriddedTiles();}},scheduleMoveGriddedTiles:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);} +this.timerId=window.setTimeout(this._moveGriddedTiles,this.tileLoadingDelay);},setTileSize:function(size){if(this.singleTile){size=this.map.getSize();size.h=parseInt(size.h*this.ratio);size.w=parseInt(size.w*this.ratio);} +OpenLayers.Layer.HTTPRequest.prototype.setTileSize.apply(this,[size]);},getGridBounds:function(){var msg="The getGridBounds() function is deprecated. It will be "+"removed in 3.0. Please use getTilesBounds() instead.";OpenLayers.Console.warn(msg);return this.getTilesBounds();},getTilesBounds:function(){var bounds=null;if(this.grid.length){var bottom=this.grid.length-1;var bottomLeftTile=this.grid[bottom][0];var right=this.grid[0].length-1;var topRightTile=this.grid[0][right];bounds=new OpenLayers.Bounds(bottomLeftTile.bounds.left,bottomLeftTile.bounds.bottom,topRightTile.bounds.right,topRightTile.bounds.top);} +return bounds;},initSingleTile:function(bounds){var center=bounds.getCenterLonLat();var tileWidth=bounds.getWidth()*this.ratio;var tileHeight=bounds.getHeight()*this.ratio;var tileBounds=new OpenLayers.Bounds(center.lon-(tileWidth/2),center.lat-(tileHeight/2),center.lon+(tileWidth/2),center.lat+(tileHeight/2));var ul=new OpenLayers.LonLat(tileBounds.left,tileBounds.top);var px=this.map.getLayerPxFromLonLat(ul);if(!this.grid.length){this.grid[0]=[];} +var tile=this.grid[0][0];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);tile.draw();this.grid[0][0]=tile;}else{tile.moveTo(tileBounds,px);} +this.removeExcessTiles(1,1);},calculateGridLayout:function(bounds,origin,resolution){var tilelon=resolution*this.tileSize.w;var tilelat=resolution*this.tileSize.h;var offsetlon=bounds.left-origin.lon;var tilecol=Math.floor(offsetlon/tilelon)-this.buffer;var tilecolremain=offsetlon/tilelon-tilecol;var tileoffsetx=-tilecolremain*this.tileSize.w;var tileoffsetlon=origin.lon+tilecol*tilelon;var offsetlat=bounds.top-(origin.lat+tilelat);var tilerow=Math.ceil(offsetlat/tilelat)+this.buffer;var tilerowremain=tilerow-offsetlat/tilelat;var tileoffsety=-tilerowremain*this.tileSize.h;var tileoffsetlat=origin.lat+tilerow*tilelat;return{tilelon:tilelon,tilelat:tilelat,tileoffsetlon:tileoffsetlon,tileoffsetlat:tileoffsetlat,tileoffsetx:tileoffsetx,tileoffsety:tileoffsety};},getTileOrigin:function(){var origin=this.tileOrigin;if(!origin){var extent=this.getMaxExtent();var edges=({"tl":["left","top"],"tr":["right","top"],"bl":["left","bottom"],"br":["right","bottom"]})[this.tileOriginCorner];origin=new OpenLayers.LonLat(extent[edges[0]],extent[edges[1]]);} +return origin;},initGriddedTiles:function(bounds){var viewSize=this.map.getSize();var minRows=Math.ceil(viewSize.h/this.tileSize.h)+ +Math.max(1,2*this.buffer);var minCols=Math.ceil(viewSize.w/this.tileSize.w)+ +Math.max(1,2*this.buffer);var origin=this.getTileOrigin();var resolution=this.map.getResolution();var tileLayout=this.calculateGridLayout(bounds,origin,resolution);var tileoffsetx=Math.round(tileLayout.tileoffsetx);var tileoffsety=Math.round(tileLayout.tileoffsety);var tileoffsetlon=tileLayout.tileoffsetlon;var tileoffsetlat=tileLayout.tileoffsetlat;var tilelon=tileLayout.tilelon;var tilelat=tileLayout.tilelat;this.origin=new OpenLayers.Pixel(tileoffsetx,tileoffsety);var startX=tileoffsetx;var startLon=tileoffsetlon;var rowidx=0;var layerContainerDivLeft=parseInt(this.map.layerContainerDiv.style.left);var layerContainerDivTop=parseInt(this.map.layerContainerDiv.style.top);do{var row=this.grid[rowidx++];if(!row){row=[];this.grid.push(row);} +tileoffsetlon=startLon;tileoffsetx=startX;var colidx=0;do{var tileBounds=new OpenLayers.Bounds(tileoffsetlon,tileoffsetlat,tileoffsetlon+tilelon,tileoffsetlat+tilelat);var x=tileoffsetx;x-=layerContainerDivLeft;var y=tileoffsety;y-=layerContainerDivTop;var px=new OpenLayers.Pixel(x,y);var tile=row[colidx++];if(!tile){tile=this.addTile(tileBounds,px);this.addTileMonitoringHooks(tile);row.push(tile);}else{tile.moveTo(tileBounds,px,false);} +tileoffsetlon+=tilelon;tileoffsetx+=this.tileSize.w;}while((tileoffsetlon<=bounds.right+tilelon*this.buffer)||colidx<minCols);tileoffsetlat-=tilelat;tileoffsety+=this.tileSize.h;}while((tileoffsetlat>=bounds.bottom-tilelat*this.buffer)||rowidx<minRows);this.removeExcessTiles(rowidx,colidx);this.spiralTileLoad();},getMaxExtent:function(){return this.maxExtent;},spiralTileLoad:function(){var tileQueue=[];var directions=["right","down","left","up"];var iRow=0;var iCell=-1;var direction=OpenLayers.Util.indexOf(directions,"right");var directionsTried=0;while(directionsTried<directions.length){var testRow=iRow;var testCell=iCell;switch(directions[direction]){case"right":testCell++;break;case"down":testRow++;break;case"left":testCell--;break;case"up":testRow--;break;} +var tile=null;if((testRow<this.grid.length)&&(testRow>=0)&&(testCell<this.grid[0].length)&&(testCell>=0)){tile=this.grid[testRow][testCell];} +if((tile!=null)&&(!tile.queued)){tileQueue.unshift(tile);tile.queued=true;directionsTried=0;iRow=testRow;iCell=testCell;}else{direction=(direction+1)%4;directionsTried++;}} +for(var i=0,len=tileQueue.length;i<len;i++){var tile=tileQueue[i];tile.draw();tile.queued=false;}},addTile:function(bounds,position){return new OpenLayers.Tile.Image(this,position,bounds,null,this.tileSize,this.tileOptions);},addTileMonitoringHooks:function(tile){tile.onLoadStart=function(){if(this.numLoadingTiles==0){this.events.triggerEvent("loadstart");} +this.numLoadingTiles++;};tile.events.register("loadstart",this,tile.onLoadStart);tile.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded");if(this.numLoadingTiles==0){this.events.triggerEvent("loadend");}};tile.events.register("loadend",this,tile.onLoadEnd);tile.events.register("unload",this,tile.onLoadEnd);},removeTileMonitoringHooks:function(tile){tile.unload();tile.events.un({"loadstart":tile.onLoadStart,"loadend":tile.onLoadEnd,"unload":tile.onLoadEnd,scope:this});},moveGriddedTiles:function(){var shifted=true;var buffer=this.buffer||1;var tlLayer=this.grid[0][0].position;var offsetX=parseInt(this.map.layerContainerDiv.style.left);var offsetY=parseInt(this.map.layerContainerDiv.style.top);var tlViewPort=tlLayer.add(offsetX,offsetY);if(tlViewPort.x>-this.tileSize.w*(buffer-1)){this.shiftColumn(true);}else if(tlViewPort.x<-this.tileSize.w*buffer){this.shiftColumn(false);}else if(tlViewPort.y>-this.tileSize.h*(buffer-1)){this.shiftRow(true);}else if(tlViewPort.y<-this.tileSize.h*buffer){this.shiftRow(false);}else{shifted=false;} +if(shifted){this.timerId=window.setTimeout(this._moveGriddedTiles,0);}},shiftRow:function(prepend){var modelRowIndex=(prepend)?0:(this.grid.length-1);var grid=this.grid;var modelRow=grid[modelRowIndex];var resolution=this.map.getResolution();var deltaY=(prepend)?-this.tileSize.h:this.tileSize.h;var deltaLat=resolution*-deltaY;var row=(prepend)?grid.pop():grid.shift();for(var i=0,len=modelRow.length;i<len;i++){var modelTile=modelRow[i];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.bottom=bounds.bottom+deltaLat;bounds.top=bounds.top+deltaLat;position.y=position.y+deltaY;row[i].moveTo(bounds,position);} +if(prepend){grid.unshift(row);}else{grid.push(row);}},shiftColumn:function(prepend){var deltaX=(prepend)?-this.tileSize.w:this.tileSize.w;var resolution=this.map.getResolution();var deltaLon=resolution*deltaX;for(var i=0,len=this.grid.length;i<len;i++){var row=this.grid[i];var modelTileIndex=(prepend)?0:(row.length-1);var modelTile=row[modelTileIndex];var bounds=modelTile.bounds.clone();var position=modelTile.position.clone();bounds.left=bounds.left+deltaLon;bounds.right=bounds.right+deltaLon;position.x=position.x+deltaX;var tile=prepend?this.grid[i].pop():this.grid[i].shift();tile.moveTo(bounds,position);if(prepend){row.unshift(tile);}else{row.push(tile);}}},removeExcessTiles:function(rows,columns){while(this.grid.length>rows){var row=this.grid.pop();for(var i=0,l=row.length;i<l;i++){var tile=row[i];this.removeTileMonitoringHooks(tile);tile.destroy();}} +while(this.grid[0].length>columns){for(var i=0,l=this.grid.length;i<l;i++){var row=this.grid[i];var tile=row.pop();this.removeTileMonitoringHooks(tile);tile.destroy();}}},onMapResize:function(){if(this.singleTile){this.clearGrid();this.setTileSize();}},getTileBounds:function(viewPortPx){var maxExtent=this.maxExtent;var resolution=this.getResolution();var tileMapWidth=resolution*this.tileSize.w;var tileMapHeight=resolution*this.tileSize.h;var mapPoint=this.getLonLatFromViewPortPx(viewPortPx);var tileLeft=maxExtent.left+(tileMapWidth*Math.floor((mapPoint.lon- +maxExtent.left)/tileMapWidth));var tileBottom=maxExtent.bottom+(tileMapHeight*Math.floor((mapPoint.lat- +maxExtent.bottom)/tileMapHeight));return new OpenLayers.Bounds(tileLeft,tileBottom,tileLeft+tileMapWidth,tileBottom+tileMapHeight);},CLASS_NAME:"OpenLayers.Layer.Grid"});OpenLayers.Layer.XYZ=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,sphericalMercator:false,zoomOffset:0,serverResolutions:null,initialize:function(name,url,options){if(options&&options.sphericalMercator||this.sphericalMercator){options=OpenLayers.Util.extend({maxExtent:new OpenLayers.Bounds(-128*156543.03390625,-128*156543.03390625,128*156543.03390625,128*156543.03390625),maxResolution:156543.03390625,numZoomLevels:19,units:"m",projection:"EPSG:900913"},options);} url=url||this.url;name=name||this.name;var newArguments=[name,url,{},options];OpenLayers.Layer.Grid.prototype.initialize.apply(this,newArguments);},clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.XYZ(this.name,this.url,this.getOptions());} obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]);return obj;},getURL:function(bounds){var xyz=this.getXYZ(bounds);var url=this.url;if(OpenLayers.Util.isArray(url)){var s=''+xyz.x+xyz.y+xyz.z;url=this.selectUrl(s,url);} return OpenLayers.String.format(url,xyz);},getXYZ:function(bounds){var res=this.map.getResolution();var x=Math.round((bounds.left-this.maxExtent.left)/(res*this.tileSize.w));var y=Math.round((this.maxExtent.top-bounds.top)/(res*this.tileSize.h));var z=this.serverResolutions!=null?OpenLayers.Util.indexOf(this.serverResolutions,res):this.map.getZoom()+this.zoomOffset;var limit=Math.pow(2,z);if(this.wrapDateLine) {x=((x%limit)+limit)%limit;} return{'x':x,'y':y,'z':z};},setMap:function(map){OpenLayers.Layer.Grid.prototype.setMap.apply(this,arguments);if(!this.tileOrigin){this.tileOrigin=new OpenLayers.LonLat(this.maxExtent.left,this.maxExtent.bottom);}},CLASS_NAME:"OpenLayers.Layer.XYZ"});OpenLayers.Layer.OSM=OpenLayers.Class(OpenLayers.Layer.XYZ,{name:"OpenStreetMap",attribution:"Data CC-By-SA by <a href='http://openstreetmap.org/'>OpenStreetMap</a>",sphericalMercator:true,url:'http://tile.openstreetmap.org/${z}/${x}/${y}.png',clone:function(obj){if(obj==null){obj=new OpenLayers.Layer.OSM(this.name,this.url,this.getOptions());} -obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},wrapDateLine:true,CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer.Canvas=OpenLayers.Class(OpenLayers.Renderer,{hitDetection:true,hitOverflow:0,canvas:null,features:null,pendingRedraw:false,initialize:function(containerID,options){OpenLayers.Renderer.prototype.initialize.apply(this,arguments);this.root=document.createElement("canvas");this.container.appendChild(this.root);this.canvas=this.root.getContext("2d");this.features={};if(this.hitDetection){this.hitCanvas=document.createElement("canvas");this.hitContext=this.hitCanvas.getContext("2d");}},eraseGeometry:function(geometry,featureId){this.eraseFeatures(this.features[featureId][0]);},supported:function(){var canvas=document.createElement("canvas");return!!canvas.getContext;},setSize:function(size){this.size=size.clone();var root=this.root;root.style.width=size.w+"px";root.style.height=size.h+"px";root.width=size.w;root.height=size.h;this.resolution=null;if(this.hitDetection){var hitCanvas=this.hitCanvas;hitCanvas.style.width=size.w+"px";hitCanvas.style.height=size.h+"px";hitCanvas.width=size.w;hitCanvas.height=size.h;}},drawFeature:function(feature,style){var rendered;if(feature.geometry){style=this.applyDefaultSymbolizer(style||feature.style);var bounds=feature.geometry.getBounds();rendered=(style.display!=="none")&&!!bounds&&bounds.intersectsBounds(this.extent);if(rendered){this.features[feature.id]=[feature,style];} -else{delete(this.features[feature.id]);} -this.pendingRedraw=true;} -if(this.pendingRedraw&&!this.locked){this.redraw();this.pendingRedraw=false;} -return rendered;},drawGeometry:function(geometry,style,featureId){var className=geometry.CLASS_NAME;if((className=="OpenLayers.Geometry.Collection")||(className=="OpenLayers.Geometry.MultiPoint")||(className=="OpenLayers.Geometry.MultiLineString")||(className=="OpenLayers.Geometry.MultiPolygon")){for(var i=0;i<geometry.components.length;i++){this.drawGeometry(geometry.components[i],style,featureId);} -return;} -switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":this.drawPoint(geometry,style,featureId);break;case"OpenLayers.Geometry.LineString":this.drawLineString(geometry,style,featureId);break;case"OpenLayers.Geometry.LinearRing":this.drawLinearRing(geometry,style,featureId);break;case"OpenLayers.Geometry.Polygon":this.drawPolygon(geometry,style,featureId);break;default:break;}},drawExternalGraphic:function(geometry,style,featureId){var img=new Image();if(style.graphicTitle){img.title=style.graphicTitle;} -var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);var opacity=style.graphicOpacity||style.fillOpacity;var onLoad=function(){if(!this.features[featureId]){return;} -var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var x=(p0+xOffset)|0;var y=(p1+yOffset)|0;var canvas=this.canvas;canvas.globalAlpha=opacity;var factor=OpenLayers.Renderer.Canvas.drawImageScaleFactor||(OpenLayers.Renderer.Canvas.drawImageScaleFactor=/android 2.1/.test(navigator.userAgent.toLowerCase())?320/window.screen.width:1);canvas.drawImage(img,x*factor,y*factor,width*factor,height*factor);if(this.hitDetection){this.setHitContextStyle("fill",featureId);this.hitContext.fillRect(x,y,width,height);}}};img.onload=OpenLayers.Function.bind(onLoad,this);img.src=style.externalGraphic;},setCanvasStyle:function(type,style){if(type==="fill"){this.canvas.globalAlpha=style['fillOpacity'];this.canvas.fillStyle=style['fillColor'];}else if(type==="stroke"){this.canvas.globalAlpha=style['strokeOpacity'];this.canvas.strokeStyle=style['strokeColor'];this.canvas.lineWidth=style['strokeWidth'];}else{this.canvas.globalAlpha=0;this.canvas.lineWidth=1;}},featureIdToHex:function(featureId){var id=Number(featureId.split("_").pop())+1;if(id>=16777216){this.hitOverflow=id-16777215;id=id%16777216+1;} -var hex="000000"+id.toString(16);var len=hex.length;hex="#"+hex.substring(len-6,len);return hex;},setHitContextStyle:function(type,featureId,symbolizer){var hex=this.featureIdToHex(featureId);if(type=="fill"){this.hitContext.globalAlpha=1.0;this.hitContext.fillStyle=hex;}else if(type=="stroke"){this.hitContext.globalAlpha=1.0;this.hitContext.strokeStyle=hex;this.hitContext.lineWidth=symbolizer.strokeWidth+2;}else{this.hitContext.globalAlpha=0;this.hitContext.lineWidth=1;}},drawPoint:function(geometry,style,featureId){if(style.graphic!==false){if(style.externalGraphic){this.drawExternalGraphic(geometry,style,featureId);}else{var pt=this.getLocalXY(geometry);var p0=pt[0];var p1=pt[1];if(!isNaN(p0)&&!isNaN(p1)){var twoPi=Math.PI*2;var radius=style.pointRadius;if(style.fill!==false){this.setCanvasStyle("fill",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.fill();if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.fill();}} -if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.canvas.beginPath();this.canvas.arc(p0,p1,radius,0,twoPi,true);this.canvas.stroke();if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.hitContext.beginPath();this.hitContext.arc(p0,p1,radius,0,twoPi,true);this.hitContext.stroke();} -this.setCanvasStyle("reset");}}}}},drawLineString:function(geometry,style,featureId){style=OpenLayers.Util.applyDefaults({fill:false},style);this.drawLinearRing(geometry,style,featureId);},drawLinearRing:function(geometry,style,featureId){if(style.fill!==false){this.setCanvasStyle("fill",style);this.renderPath(this.canvas,geometry,style,featureId,"fill");if(this.hitDetection){this.setHitContextStyle("fill",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"fill");}} -if(style.stroke!==false){this.setCanvasStyle("stroke",style);this.renderPath(this.canvas,geometry,style,featureId,"stroke");if(this.hitDetection){this.setHitContextStyle("stroke",featureId,style);this.renderPath(this.hitContext,geometry,style,featureId,"stroke");}} -this.setCanvasStyle("reset");},renderPath:function(context,geometry,style,featureId,type){var components=geometry.components;var len=components.length;context.beginPath();var start=this.getLocalXY(components[0]);var x=start[0];var y=start[1];if(!isNaN(x)&&!isNaN(y)){context.moveTo(start[0],start[1]);for(var i=1;i<len;++i){var pt=this.getLocalXY(components[i]);context.lineTo(pt[0],pt[1]);} -if(type==="fill"){context.fill();}else{context.stroke();}}},drawPolygon:function(geometry,style,featureId){var components=geometry.components;var len=components.length;this.drawLinearRing(components[0],style,featureId);for(var i=1;i<len;++i){this.canvas.globalCompositeOperation="destination-out";if(this.hitDetection){this.hitContext.globalCompositeOperation="destination-out";} -this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({stroke:false,fillOpacity:1.0},style),featureId);this.canvas.globalCompositeOperation="source-over";if(this.hitDetection){this.hitContext.globalCompositeOperation="source-over";} -this.drawLinearRing(components[i],OpenLayers.Util.applyDefaults({fill:false},style),featureId);}},drawText:function(location,style){style=OpenLayers.Util.extend({fontColor:"#000000",labelAlign:"cm"},style);var pt=this.getLocalXY(location);this.setCanvasStyle("reset");this.canvas.fillStyle=style.fontColor;this.canvas.globalAlpha=style.fontOpacity||1.0;var fontStyle=[style.fontStyle?style.fontStyle:"normal","normal",style.fontWeight?style.fontWeight:"normal",style.fontSize?style.fontSize:"1em",style.fontFamily?style.fontFamily:"sans-serif"].join(" ");var labelRows=style.label.split('\n');var numRows=labelRows.length;if(this.canvas.fillText){this.canvas.font=fontStyle;this.canvas.textAlign=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[0]]||"center";this.canvas.textBaseline=OpenLayers.Renderer.Canvas.LABEL_ALIGN[style.labelAlign[1]]||"middle";var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;} -var lineHeight=this.canvas.measureText('Mg').height||this.canvas.measureText('xx').width;pt[1]+=lineHeight*vfactor*(numRows-1);for(var i=0;i<numRows;i++){this.canvas.fillText(labelRows[i],pt[0],pt[1]+(lineHeight*i));}}else if(this.canvas.mozDrawText){this.canvas.mozTextStyle=fontStyle;var hfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[0]];if(hfactor==null){hfactor=-.5;} -var vfactor=OpenLayers.Renderer.Canvas.LABEL_FACTOR[style.labelAlign[1]];if(vfactor==null){vfactor=-.5;} -var lineHeight=this.canvas.mozMeasureText('xx');pt[1]+=lineHeight*(1+(vfactor*numRows));for(var i=0;i<numRows;i++){var x=pt[0]+(hfactor*this.canvas.mozMeasureText(labelRows[i]));var y=pt[1]+(i*lineHeight);this.canvas.translate(x,y);this.canvas.mozDrawText(labelRows[i]);this.canvas.translate(-x,-y);}} -this.setCanvasStyle("reset");},getLocalXY:function(point){var resolution=this.getResolution();var extent=this.extent;var x=(point.x/resolution+(-extent.left/resolution));var y=((extent.top/resolution)-point.y/resolution);return[x,y];},clear:function(){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);this.features={};if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);}},getFeatureIdFromEvent:function(evt){var feature=null;if(this.hitDetection){if(!this.map.dragging){var xy=evt.xy;var x=xy.x|0;var y=xy.y|0;var data=this.hitContext.getImageData(x,y,1,1).data;if(data[3]===255){var id=data[2]+(256*(data[1]+(256*data[0])));if(id){feature=this.features["OpenLayers.Feature.Vector_"+(id-1+this.hitOverflow)][0];}}}} -return feature;},eraseFeatures:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} -for(var i=0;i<features.length;++i){delete this.features[features[i].id];} -this.redraw();},redraw:function(){if(!this.locked){var height=this.root.height;var width=this.root.width;this.canvas.clearRect(0,0,width,height);if(this.hitDetection){this.hitContext.clearRect(0,0,width,height);} -var labelMap=[];var feature,style;for(var id in this.features){if(!this.features.hasOwnProperty(id)){continue;} -feature=this.features[id][0];style=this.features[id][1];this.drawGeometry(feature.geometry,style,feature.id);if(style.label){labelMap.push([feature,style]);}} -var item;for(var i=0,len=labelMap.length;i<len;++i){item=labelMap[i];this.drawText(item[0].geometry.getCentroid(),item[1]);}}},CLASS_NAME:"OpenLayers.Renderer.Canvas"});OpenLayers.Renderer.Canvas.LABEL_ALIGN={"l":"left","r":"right","t":"top","b":"bottom"};OpenLayers.Renderer.Canvas.LABEL_FACTOR={"l":0,"r":-1,"t":0,"b":-1};OpenLayers.Renderer.Canvas.drawImageScaleFactor=null;OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolMetrics:null,initialize:function(containerID){if(!this.supported()){return;} +obj=OpenLayers.Layer.XYZ.prototype.clone.apply(this,[obj]);return obj;},wrapDateLine:true,CLASS_NAME:"OpenLayers.Layer.OSM"});OpenLayers.Renderer.SVG=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",xlinkns:"http://www.w3.org/1999/xlink",MAX_PIXEL:15000,translationParameters:null,symbolMetrics:null,initialize:function(containerID){if(!this.supported()){return;} OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);this.translationParameters={x:0,y:0};this.symbolMetrics={};},supported:function(){var svgFeature="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(svgFeature+"SVG","1.1")||document.implementation.hasFeature(svgFeature+"BasicStructure","1.1")));},inValidRange:function(x,y,xyOnly){var left=x+(xyOnly?0:this.translationParameters.x);var top=y+(xyOnly?0:this.translationParameters.y);return(left>=-this.MAX_PIXEL&&left<=this.MAX_PIXEL&&top>=-this.MAX_PIXEL&&top<=this.MAX_PIXEL);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=-extent.left/resolution;var top=extent.top/resolution;if(resolutionChanged){this.left=left;this.top=top;var extentString="0 0 "+this.size.w+" "+this.size.h;this.rendererRoot.setAttributeNS(null,"viewBox",extentString);this.translate(0,0);return true;}else{var inRange=this.translate(left-this.left,top-this.top);if(!inRange){this.setExtent(extent,true);} return inRange;}},translate:function(x,y){if(!this.inValidRange(x,y,true)){return false;}else{var transformString="";if(x||y){transformString="translate("+x+","+y+")";} this.root.setAttributeNS(null,"transform",transformString);this.translationParameters={x:x,y:y};return true;}},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);this.rendererRoot.setAttributeNS(null,"height",this.size.h);},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="image";}else if(this.isComplexSymbol(style.graphicName)){nodeType="svg";}else{nodeType="circle";} @@ -986,7 +1092,78 @@ if(existing!=null){return existing;} var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');} var symbolNode=this.nodeFactory(id,"symbol");var node=this.nodeFactory(null,"polygon");symbolNode.appendChild(node);var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var points=[];var x,y;for(var i=0;i<symbol.length;i=i+2){x=symbol[i];y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);points.push(x,",",y);} node.setAttributeNS(null,"points",points.join(" "));var width=symbolExtent.getWidth();var height=symbolExtent.getHeight();var viewBox=[symbolExtent.left-width,symbolExtent.bottom-height,width*3,height*3];symbolNode.setAttributeNS(null,"viewBox",viewBox.join(" "));this.symbolMetrics[id]=[Math.max(width,height),symbolExtent.getCenterLonLat().lon,symbolExtent.getCenterLonLat().lat];this.defs.appendChild(symbolNode);return symbolNode;},getFeatureIdFromEvent:function(evt){var featureId=OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent.apply(this,arguments);if(!featureId){var target=evt.target;featureId=target.parentNode&&target!=this.rendererRoot&&target.parentNode._featureId;} -return featureId;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={"l":"start","r":"end","b":"bottom","t":"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={"t":"-70%","b":"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={"t":0,"b":-1};OpenLayers.Renderer.SVG.preventDefault=function(e){e.preventDefault&&e.preventDefault();};OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:true,lowerBoundary:null,upperBoundary:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);if(this.type===OpenLayers.Filter.Comparison.LIKE&&options.matchCase===undefined){this.matchCase=null;}},evaluate:function(context){if(context instanceof OpenLayers.Feature.Vector){context=context.attributes;} +return featureId;},CLASS_NAME:"OpenLayers.Renderer.SVG"});OpenLayers.Renderer.SVG.LABEL_ALIGN={"l":"start","r":"end","b":"bottom","t":"hanging"};OpenLayers.Renderer.SVG.LABEL_VSHIFT={"t":"-70%","b":"0"};OpenLayers.Renderer.SVG.LABEL_VFACTOR={"t":0,"b":-1};OpenLayers.Renderer.SVG.preventDefault=function(e){e.preventDefault&&e.preventDefault();};OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.removeButtons();this.buttons=null;this.position=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+id,xy,sz,imgLocation,"absolute");btn.style.cursor="pointer";this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;if(!this.slideRatio){var slideFactorPixels=this.slideFactor;var getSlideFactor=function(){return slideFactorPixels;};}else{var slideRatio=this.slideRatio;var getSlideFactor=function(dim){return this.map.getSize()[dim]*slideRatio;};} +btn.getSlideFactor=getSlideFactor;this.buttons.push(btn);return btn;},_removeButton:function(btn){OpenLayers.Event.stopObservingElement(btn);btn.map=null;btn.getSlideFactor=null;this.div.removeChild(btn);OpenLayers.Util.removeItem(this.buttons,btn);},removeButtons:function(){for(var i=this.buttons.length-1;i>=0;--i){this._removeButton(this.buttons[i]);}},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} +switch(this.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} +OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Popup=OpenLayers.Class({events:null,id:"",lonlat:null,div:null,contentSize:null,size:null,contentHTML:null,backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:false,minSize:null,maxSize:null,displayClass:"olPopup",contentDisplayClass:"olPopupContent",padding:0,disableFirefoxOverflowHack:false,fixPadding:function(){if(typeof this.padding=="number"){this.padding=new OpenLayers.Bounds(this.padding,this.padding,this.padding,this.padding);}},panMapIfOutOfView:false,keepInMap:false,closeOnMove:false,map:null,initialize:function(id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback){if(id==null){id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");} +this.id=id;this.lonlat=lonlat;this.contentSize=(contentSize!=null)?contentSize:new OpenLayers.Size(OpenLayers.Popup.WIDTH,OpenLayers.Popup.HEIGHT);if(contentHTML!=null){this.contentHTML=contentHTML;} +this.backgroundColor=OpenLayers.Popup.COLOR;this.opacity=OpenLayers.Popup.OPACITY;this.border=OpenLayers.Popup.BORDER;this.div=OpenLayers.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className=this.displayClass;var groupDivId=this.id+"_GroupDiv";this.groupDiv=OpenLayers.Util.createDiv(groupDivId,null,null,null,"relative",null,"hidden");var id=this.div.id+"_contentDiv";this.contentDiv=OpenLayers.Util.createDiv(id,null,this.contentSize.clone(),null,"relative");this.contentDiv.className=this.contentDisplayClass;this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);if(closeBox){this.addCloseBox(closeBoxCallback);} +this.registerEvents();},destroy:function(){this.id=null;this.lonlat=null;this.size=null;this.contentHTML=null;this.backgroundColor=null;this.opacity=null;this.border=null;if(this.closeOnMove&&this.map){this.map.events.unregister("movestart",this,this.hide);} +this.events.destroy();this.events=null;if(this.closeDiv){OpenLayers.Event.stopObservingElement(this.closeDiv);this.groupDiv.removeChild(this.closeDiv);} +this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;if(this.map!=null){this.map.removePopup(this);} +this.map=null;this.div=null;this.autoSize=null;this.minSize=null;this.maxSize=null;this.padding=null;this.panMapIfOutOfView=null;},draw:function(px){if(px==null){if((this.lonlat!=null)&&(this.map!=null)){px=this.map.getLayerPxFromLonLat(this.lonlat);}} +if(this.closeOnMove){this.map.events.register("movestart",this,this.hide);} +if(!this.disableFirefoxOverflowHack&&OpenLayers.BROWSER_NAME=='firefox'){this.map.events.register("movestart",this,function(){var style=document.defaultView.getComputedStyle(this.contentDiv,null);var currentOverflow=style.getPropertyValue("overflow");if(currentOverflow!="hidden"){this.contentDiv._oldOverflow=currentOverflow;this.contentDiv.style.overflow="hidden";}});this.map.events.register("moveend",this,function(){var oldOverflow=this.contentDiv._oldOverflow;if(oldOverflow){this.contentDiv.style.overflow=oldOverflow;this.contentDiv._oldOverflow=null;}});} +this.moveTo(px);if(!this.autoSize&&!this.size){this.setSize(this.contentSize);} +this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();if(this.panMapIfOutOfView){this.panIntoView();} +return this.div;},updatePosition:function(){if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);if(px){this.moveTo(px);}}},moveTo:function(px){if((px!=null)&&(this.div!=null)){this.div.style.left=px.x+"px";this.div.style.top=px.y+"px";}},visible:function(){return OpenLayers.Element.visible(this.div);},toggle:function(){if(this.visible()){this.hide();}else{this.show();}},show:function(){this.div.style.display='';if(this.panMapIfOutOfView){this.panIntoView();}},hide:function(){this.div.style.display='none';},setSize:function(contentSize){this.size=contentSize.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;} +this.size.w+=wPadding;this.size.h+=hPadding;if(OpenLayers.BROWSER_NAME=="msie"){this.contentSize.w+=contentDivPadding.left+contentDivPadding.right;this.contentSize.h+=contentDivPadding.bottom+contentDivPadding.top;} +if(this.div!=null){this.div.style.width=this.size.w+"px";this.div.style.height=this.size.h+"px";} +if(this.contentDiv!=null){this.contentDiv.style.width=contentSize.w+"px";this.contentDiv.style.height=contentSize.h+"px";}},updateSize:function(){var preparedHTML="<div class='"+this.contentDisplayClass+"'>"+ +this.contentDiv.innerHTML+"</div>";var containerElement=(this.map)?this.map.layerContainerDiv:document.body;var realSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,null,{displayClass:this.displayClass,containerElement:containerElement});var safeSize=this.getSafeContentSize(realSize);var newSize=null;if(safeSize.equals(realSize)){newSize=realSize;}else{var fixedSize=new OpenLayers.Size();fixedSize.w=(safeSize.w<realSize.w)?safeSize.w:null;fixedSize.h=(safeSize.h<realSize.h)?safeSize.h:null;if(fixedSize.w&&fixedSize.h){newSize=safeSize;}else{var clippedSize=OpenLayers.Util.getRenderedDimensions(preparedHTML,fixedSize,{displayClass:this.contentDisplayClass,containerElement:containerElement});var currentOverflow=OpenLayers.Element.getStyle(this.contentDiv,"overflow");if((currentOverflow!="hidden")&&(clippedSize.equals(safeSize))){var scrollBar=OpenLayers.Util.getScrollbarWidth();if(fixedSize.w){clippedSize.h+=scrollBar;}else{clippedSize.w+=scrollBar;}} +newSize=this.getSafeContentSize(clippedSize);}} +this.setSize(newSize);},setBackgroundColor:function(color){if(color!=undefined){this.backgroundColor=color;} +if(this.div!=null){this.div.style.backgroundColor=this.backgroundColor;}},setOpacity:function(opacity){if(opacity!=undefined){this.opacity=opacity;} +if(this.div!=null){this.div.style.opacity=this.opacity;this.div.style.filter='alpha(opacity='+this.opacity*100+')';}},setBorder:function(border){if(border!=undefined){this.border=border;} +if(this.div!=null){this.div.style.border=this.border;}},setContentHTML:function(contentHTML){if(contentHTML!=null){this.contentHTML=contentHTML;} +if((this.contentDiv!=null)&&(this.contentHTML!=null)&&(this.contentHTML!=this.contentDiv.innerHTML)){this.contentDiv.innerHTML=this.contentHTML;if(this.autoSize){this.registerImageListeners();this.updateSize();}}},registerImageListeners:function(){var onImgLoad=function(){this.popup.updateSize();if(this.popup.visible()&&this.popup.panMapIfOutOfView){this.popup.panIntoView();} +OpenLayers.Event.stopObserving(this.img,"load",this.img._onImageLoad);};var images=this.contentDiv.getElementsByTagName("img");for(var i=0,len=images.length;i<len;i++){var img=images[i];if(img.width==0||img.height==0){var context={'popup':this,'img':img};img._onImgLoad=OpenLayers.Function.bind(onImgLoad,context);OpenLayers.Event.observe(img,'load',img._onImgLoad);}}},getSafeContentSize:function(size){var safeContentSize=size.clone();var contentDivPadding=this.getContentDivPadding();var wPadding=contentDivPadding.left+contentDivPadding.right;var hPadding=contentDivPadding.top+contentDivPadding.bottom;this.fixPadding();wPadding+=this.padding.left+this.padding.right;hPadding+=this.padding.top+this.padding.bottom;if(this.closeDiv){var closeDivWidth=parseInt(this.closeDiv.style.width);wPadding+=closeDivWidth+contentDivPadding.right;} +if(this.minSize){safeContentSize.w=Math.max(safeContentSize.w,(this.minSize.w-wPadding));safeContentSize.h=Math.max(safeContentSize.h,(this.minSize.h-hPadding));} +if(this.maxSize){safeContentSize.w=Math.min(safeContentSize.w,(this.maxSize.w-wPadding));safeContentSize.h=Math.min(safeContentSize.h,(this.maxSize.h-hPadding));} +if(this.map&&this.map.size){var extraX=0,extraY=0;if(this.keepInMap&&!this.panMapIfOutOfView){var px=this.map.getPixelFromLonLat(this.lonlat);switch(this.relativePosition){case"tr":extraX=px.x;extraY=this.map.size.h-px.y;break;case"tl":extraX=this.map.size.w-px.x;extraY=this.map.size.h-px.y;break;case"bl":extraX=this.map.size.w-px.x;extraY=px.y;break;case"br":extraX=px.x;extraY=px.y;break;default:extraX=px.x;extraY=this.map.size.h-px.y;break;}} +var maxY=this.map.size.h- +this.map.paddingForPopups.top- +this.map.paddingForPopups.bottom- +hPadding-extraY;var maxX=this.map.size.w- +this.map.paddingForPopups.left- +this.map.paddingForPopups.right- +wPadding-extraX;safeContentSize.w=Math.min(safeContentSize.w,maxX);safeContentSize.h=Math.min(safeContentSize.h,maxY);} +return safeContentSize;},getContentDivPadding:function(){var contentDivPadding=this._contentDivPadding;if(!contentDivPadding){if(this.div.parentNode==null){this.div.style.display="none";document.body.appendChild(this.div);} +contentDivPadding=new OpenLayers.Bounds(OpenLayers.Element.getStyle(this.contentDiv,"padding-left"),OpenLayers.Element.getStyle(this.contentDiv,"padding-bottom"),OpenLayers.Element.getStyle(this.contentDiv,"padding-right"),OpenLayers.Element.getStyle(this.contentDiv,"padding-top"));this._contentDivPadding=contentDivPadding;if(this.div.parentNode==document.body){document.body.removeChild(this.div);this.div.style.display="";}} +return contentDivPadding;},addCloseBox:function(callback){this.closeDiv=OpenLayers.Util.createDiv(this.id+"_close",null,new OpenLayers.Size(17,17));this.closeDiv.className="olPopupCloseBox";var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+"px";this.closeDiv.style.top=contentDivPadding.top+"px";this.groupDiv.appendChild(this.closeDiv);var closePopup=callback||function(e){this.hide();OpenLayers.Event.stop(e);};OpenLayers.Event.observe(this.closeDiv,"touchend",OpenLayers.Function.bindAsEventListener(closePopup,this));OpenLayers.Event.observe(this.closeDiv,"click",OpenLayers.Function.bindAsEventListener(closePopup,this));},panIntoView:function(){var mapSize=this.map.getSize();var origTL=this.map.getViewPortPxFromLayerPx(new OpenLayers.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top)));var newTL=origTL.clone();if(origTL.x<this.map.paddingForPopups.left){newTL.x=this.map.paddingForPopups.left;}else +if((origTL.x+this.size.w)>(mapSize.w-this.map.paddingForPopups.right)){newTL.x=mapSize.w-this.map.paddingForPopups.right-this.size.w;} +if(origTL.y<this.map.paddingForPopups.top){newTL.y=this.map.paddingForPopups.top;}else +if((origTL.y+this.size.h)>(mapSize.h-this.map.paddingForPopups.bottom)){newTL.y=mapSize.h-this.map.paddingForPopups.bottom-this.size.h;} +var dx=origTL.x-newTL.x;var dy=origTL.y-newTL.y;this.map.pan(dx,dy);},registerEvents:function(){this.events=new OpenLayers.Events(this,this.div,null,true);function onTouchstart(evt){OpenLayers.Event.stop(evt,true);} +this.events.on({"mousedown":this.onmousedown,"mousemove":this.onmousemove,"mouseup":this.onmouseup,"click":this.onclick,"mouseout":this.onmouseout,"dblclick":this.ondblclick,"touchstart":onTouchstart,scope:this});},onmousedown:function(evt){this.mousedown=true;OpenLayers.Event.stop(evt,true);},onmousemove:function(evt){if(this.mousedown){OpenLayers.Event.stop(evt,true);}},onmouseup:function(evt){if(this.mousedown){this.mousedown=false;OpenLayers.Event.stop(evt,true);}},onclick:function(evt){OpenLayers.Event.stop(evt,true);},onmouseout:function(evt){this.mousedown=false;},ondblclick:function(evt){OpenLayers.Event.stop(evt,true);},CLASS_NAME:"OpenLayers.Popup"});OpenLayers.Popup.WIDTH=200;OpenLayers.Popup.HEIGHT=200;OpenLayers.Popup.COLOR="white";OpenLayers.Popup.OPACITY=1;OpenLayers.Popup.BORDER="0px";OpenLayers.Popup.Anchored=OpenLayers.Class(OpenLayers.Popup,{relativePosition:null,keepInMap:true,anchor:null,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){var newArguments=[id,lonlat,contentSize,contentHTML,closeBox,closeBoxCallback];OpenLayers.Popup.prototype.initialize.apply(this,newArguments);this.anchor=(anchor!=null)?anchor:{size:new OpenLayers.Size(0,0),offset:new OpenLayers.Pixel(0,0)};},destroy:function(){this.anchor=null;this.relativePosition=null;OpenLayers.Popup.prototype.destroy.apply(this,arguments);},show:function(){this.updatePosition();OpenLayers.Popup.prototype.show.apply(this,arguments);},moveTo:function(px){var oldRelativePosition=this.relativePosition;this.relativePosition=this.calculateRelativePosition(px);var newPx=this.calculateNewPx(px);var newArguments=new Array(newPx);OpenLayers.Popup.prototype.moveTo.apply(this,newArguments);if(this.relativePosition!=oldRelativePosition){this.updateRelativePosition();}},setSize:function(contentSize){OpenLayers.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var px=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(px);}},calculateRelativePosition:function(px){var lonlat=this.map.getLonLatFromLayerPx(px);var extent=this.map.getExtent();var quadrant=extent.determineQuadrant(lonlat);return OpenLayers.Bounds.oppositeQuadrant(quadrant);},updateRelativePosition:function(){},calculateNewPx:function(px){var newPx=px.offset(this.anchor.offset);var size=this.size||this.contentSize;var top=(this.relativePosition.charAt(0)=='t');newPx.y+=(top)?-size.h:this.anchor.size.h;var left=(this.relativePosition.charAt(1)=='l');newPx.x+=(left)?-size.w:this.anchor.size.w;return newPx;},CLASS_NAME:"OpenLayers.Popup.Anchored"});OpenLayers.Popup.Framed=OpenLayers.Class(OpenLayers.Popup.Anchored,{imageSrc:null,imageSize:null,isAlphaImage:false,positionBlocks:null,blocks:null,fixedRelativePosition:false,initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){OpenLayers.Popup.Anchored.prototype.initialize.apply(this,arguments);if(this.fixedRelativePosition){this.updateRelativePosition();this.calculateRelativePosition=function(px){return this.relativePosition;};} +this.contentDiv.style.position="absolute";this.contentDiv.style.zIndex=1;if(closeBox){this.closeDiv.style.zIndex=1;} +this.groupDiv.style.position="absolute";this.groupDiv.style.top="0px";this.groupDiv.style.left="0px";this.groupDiv.style.height="100%";this.groupDiv.style.width="100%";},destroy:function(){this.imageSrc=null;this.imageSize=null;this.isAlphaImage=null;this.fixedRelativePosition=false;this.positionBlocks=null;for(var i=0;i<this.blocks.length;i++){var block=this.blocks[i];if(block.image){block.div.removeChild(block.image);} +block.image=null;if(block.div){this.groupDiv.removeChild(block.div);} +block.div=null;} +this.blocks=null;OpenLayers.Popup.Anchored.prototype.destroy.apply(this,arguments);},setBackgroundColor:function(color){},setBorder:function(){},setOpacity:function(opacity){},setSize:function(contentSize){OpenLayers.Popup.Anchored.prototype.setSize.apply(this,arguments);this.updateBlocks();},updateRelativePosition:function(){this.padding=this.positionBlocks[this.relativePosition].padding;if(this.closeDiv){var contentDivPadding=this.getContentDivPadding();this.closeDiv.style.right=contentDivPadding.right+ +this.padding.right+"px";this.closeDiv.style.top=contentDivPadding.top+ +this.padding.top+"px";} +this.updateBlocks();},calculateNewPx:function(px){var newPx=OpenLayers.Popup.Anchored.prototype.calculateNewPx.apply(this,arguments);newPx=newPx.offset(this.positionBlocks[this.relativePosition].offset);return newPx;},createBlocks:function(){this.blocks=[];var firstPosition=null;for(var key in this.positionBlocks){firstPosition=key;break;} +var position=this.positionBlocks[firstPosition];for(var i=0;i<position.blocks.length;i++){var block={};this.blocks.push(block);var divId=this.id+'_FrameDecorationDiv_'+i;block.div=OpenLayers.Util.createDiv(divId,null,null,null,"absolute",null,"hidden",null);var imgId=this.id+'_FrameDecorationImg_'+i;var imageCreator=(this.isAlphaImage)?OpenLayers.Util.createAlphaImageDiv:OpenLayers.Util.createImage;block.image=imageCreator(imgId,null,this.imageSize,this.imageSrc,"absolute",null,null,null);block.div.appendChild(block.image);this.groupDiv.appendChild(block.div);}},updateBlocks:function(){if(!this.blocks){this.createBlocks();} +if(this.size&&this.relativePosition){var position=this.positionBlocks[this.relativePosition];for(var i=0;i<position.blocks.length;i++){var positionBlock=position.blocks[i];var block=this.blocks[i];var l=positionBlock.anchor.left;var b=positionBlock.anchor.bottom;var r=positionBlock.anchor.right;var t=positionBlock.anchor.top;var w=(isNaN(positionBlock.size.w))?this.size.w-(r+l):positionBlock.size.w;var h=(isNaN(positionBlock.size.h))?this.size.h-(b+t):positionBlock.size.h;block.div.style.width=(w<0?0:w)+'px';block.div.style.height=(h<0?0:h)+'px';block.div.style.left=(l!=null)?l+'px':'';block.div.style.bottom=(b!=null)?b+'px':'';block.div.style.right=(r!=null)?r+'px':'';block.div.style.top=(t!=null)?t+'px':'';block.image.style.left=positionBlock.position.x+'px';block.image.style.top=positionBlock.position.y+'px';} +this.contentDiv.style.left=this.padding.left+"px";this.contentDiv.style.top=this.padding.top+"px";}},CLASS_NAME:"OpenLayers.Popup.Framed"});OpenLayers.Layer.SphericalMercator={getExtent:function(){var extent=null;if(this.sphericalMercator){extent=this.map.calculateBounds();}else{extent=OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this);} +return extent;},getLonLatFromViewPortPx:function(viewPortPx){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments);},getViewPortPxFromLonLat:function(lonlat){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments);},initMercatorParameters:function(){this.RESOLUTIONS=[];var maxResolution=156543.03390625;for(var zoom=0;zoom<=this.MAX_ZOOM_LEVEL;++zoom){this.RESOLUTIONS[zoom]=maxResolution/Math.pow(2,zoom);} +this.units="m";this.projection=this.projection||"EPSG:900913";},forwardMercator:function(lon,lat){var x=lon*20037508.34/180;var y=Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return new OpenLayers.LonLat(x,y);},inverseMercator:function(x,y){var lon=(x/20037508.34)*180;var lat=(y/20037508.34)*180;lat=180/Math.PI*(2*Math.atan(Math.exp(lat*Math.PI/180))-Math.PI/2);return new OpenLayers.LonLat(lon,lat);},projectForward:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;},projectInverse:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;}};(function(){var codes=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"];var add=OpenLayers.Projection.addTransform;var merc=OpenLayers.Layer.SphericalMercator;var same=OpenLayers.Projection.nullTransform;var i,len,code,other,j;for(i=0,len=codes.length;i<len;++i){code=codes[i];add("EPSG:4326",code,merc.projectForward);add(code,"EPSG:4326",merc.projectInverse);for(j=i+1;j<len;++j){other=codes[j];add(code,other,same);add(other,code,same);}}})();OpenLayers.Popup.FramedCloud=OpenLayers.Class(OpenLayers.Popup.Framed,{contentDisplayClass:"olFramedCloudPopupContent",autoSize:true,panMapIfOutOfView:true,imageSize:new OpenLayers.Size(1276,736),isAlphaImage:false,fixedRelativePosition:false,positionBlocks:{"tl":{'offset':new OpenLayers.Pixel(44,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,18),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-632)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(0,-688)}]},"tr":{'offset':new OpenLayers.Pixel(-45,0),'padding':new OpenLayers.Bounds(8,40,8,9),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,51,22,0),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,50,0,0),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',19),anchor:new OpenLayers.Bounds(0,32,22,null),position:new OpenLayers.Pixel(0,-631)},{size:new OpenLayers.Size(22,19),anchor:new OpenLayers.Bounds(null,32,0,null),position:new OpenLayers.Pixel(-1238,-631)},{size:new OpenLayers.Size(81,35),anchor:new OpenLayers.Bounds(0,0,null,null),position:new OpenLayers.Pixel(-215,-687)}]},"bl":{'offset':new OpenLayers.Pixel(45,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(null,null,0,0),position:new OpenLayers.Pixel(-101,-674)}]},"br":{'offset':new OpenLayers.Pixel(-44,0),'padding':new OpenLayers.Bounds(8,9,8,40),'blocks':[{size:new OpenLayers.Size('auto','auto'),anchor:new OpenLayers.Bounds(0,21,22,32),position:new OpenLayers.Pixel(0,0)},{size:new OpenLayers.Size(22,'auto'),anchor:new OpenLayers.Bounds(null,21,0,32),position:new OpenLayers.Pixel(-1238,0)},{size:new OpenLayers.Size('auto',21),anchor:new OpenLayers.Bounds(0,0,22,null),position:new OpenLayers.Pixel(0,-629)},{size:new OpenLayers.Size(22,21),anchor:new OpenLayers.Bounds(null,0,0,null),position:new OpenLayers.Pixel(-1238,-629)},{size:new OpenLayers.Size(81,33),anchor:new OpenLayers.Bounds(0,null,null,0),position:new OpenLayers.Pixel(-311,-674)}]}},minSize:new OpenLayers.Size(105,10),maxSize:new OpenLayers.Size(1200,660),initialize:function(id,lonlat,contentSize,contentHTML,anchor,closeBox,closeBoxCallback){this.imageSrc=OpenLayers.Util.getImagesLocation()+'cloud-popup-relative.png';OpenLayers.Popup.Framed.prototype.initialize.apply(this,arguments);this.contentDiv.className=this.contentDisplayClass;},destroy:function(){OpenLayers.Popup.Framed.prototype.destroy.apply(this,arguments);},CLASS_NAME:"OpenLayers.Popup.FramedCloud"});OpenLayers.Symbolizer.Point=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Point"});OpenLayers.Symbolizer.Line=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Line"});OpenLayers.Symbolizer.Polygon=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Polygon"});OpenLayers.Symbolizer.Text=OpenLayers.Class(OpenLayers.Symbolizer,{initialize:function(config){OpenLayers.Symbolizer.prototype.initialize.apply(this,arguments);},CLASS_NAME:"OpenLayers.Symbolizer.Text"});OpenLayers.Rule=OpenLayers.Class({id:null,name:null,title:null,description:null,context:null,filter:null,elseFilter:false,symbolizer:null,symbolizers:null,minScaleDenominator:null,maxScaleDenominator:null,initialize:function(options){this.symbolizer={};OpenLayers.Util.extend(this,options);if(this.symbolizers){delete this.symbolizer;} +this.id=OpenLayers.Util.createUniqueID(this.CLASS_NAME+"_");},destroy:function(){for(var i in this.symbolizer){this.symbolizer[i]=null;} +this.symbolizer=null;delete this.symbolizers;},evaluate:function(feature){var context=this.getContext(feature);var applies=true;if(this.minScaleDenominator||this.maxScaleDenominator){var scale=feature.layer.map.getScale();} +if(this.minScaleDenominator){applies=scale>=OpenLayers.Style.createLiteral(this.minScaleDenominator,context);} +if(applies&&this.maxScaleDenominator){applies=scale<OpenLayers.Style.createLiteral(this.maxScaleDenominator,context);} +if(applies&&this.filter){if(this.filter.CLASS_NAME=="OpenLayers.Filter.FeatureId"){applies=this.filter.evaluate(feature);}else{applies=this.filter.evaluate(context);}} +return applies;},getContext:function(feature){var context=this.context;if(!context){context=feature.attributes||feature.data;} +if(typeof this.context=="function"){context=this.context(feature);} +return context;},clone:function(){var options=OpenLayers.Util.extend({},this);if(this.symbolizers){var len=this.symbolizers.length;options.symbolizers=new Array(len);for(var i=0;i<len;++i){options.symbolizers[i]=this.symbolizers[i].clone();}}else{options.symbolizer={};var value,type;for(var key in this.symbolizer){value=this.symbolizer[key];type=typeof value;if(type==="object"){options.symbolizer[key]=OpenLayers.Util.extend({},value);}else if(type==="string"){options.symbolizer[key]=value;}}} +options.filter=this.filter&&this.filter.clone();options.context=this.context&&OpenLayers.Util.extend({},this.context);return new OpenLayers.Rule(options);},CLASS_NAME:"OpenLayers.Rule"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:false,pinching:false,last:null,start:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){var propagate=true;this.pinching=false;if(OpenLayers.Event.isMultiTouch(evt)){this.started=true;this.last=this.start={distance:this.getDistance(evt.touches),delta:0,scale:1};this.callback("start",[evt,this.start]);propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} +OpenLayers.Event.stop(evt);return propagate;},touchmove:function(evt){if(this.started&&OpenLayers.Event.isMultiTouch(evt)){this.pinching=true;var current=this.getPinchData(evt);this.callback("move",[evt,current]);this.last=current;OpenLayers.Event.stop(evt);} +return true;},touchend:function(evt){if(this.started){this.started=false;this.pinching=false;this.callback("done",[evt,this.start,this.last]);this.start=null;this.last=null;} +return true;},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.pinching=false;activated=true;} +return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.pinching=false;this.start=null;this.last=null;deactivated=true;} +return deactivated;},getDistance:function(touches){var t0=touches[0];var t1=touches[1];return Math.sqrt(Math.pow(t0.clientX-t1.clientX,2)+ +Math.pow(t0.clientY-t1.clientY,2));},getPinchData:function(evt){var distance=this.getDistance(evt.touches);var scale=distance/this.start.distance;return{distance:distance,delta:this.last.distance-distance,scale:scale};},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Filter.Comparison=OpenLayers.Class(OpenLayers.Filter,{type:null,property:null,value:null,matchCase:true,lowerBoundary:null,upperBoundary:null,initialize:function(options){OpenLayers.Filter.prototype.initialize.apply(this,[options]);if(this.type===OpenLayers.Filter.Comparison.LIKE&&options.matchCase===undefined){this.matchCase=null;}},evaluate:function(context){if(context instanceof OpenLayers.Feature.Vector){context=context.attributes;} var result=false;var got=context[this.property];var exp;switch(this.type){case OpenLayers.Filter.Comparison.EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()==exp.toUpperCase());}else{result=(got==exp);} break;case OpenLayers.Filter.Comparison.NOT_EQUAL_TO:exp=this.value;if(!this.matchCase&&typeof got=="string"&&typeof exp=="string"){result=(got.toUpperCase()!=exp.toUpperCase());}else{result=(got!=exp);} break;case OpenLayers.Filter.Comparison.LESS_THAN:result=got<this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN:result=got>this.value;break;case OpenLayers.Filter.Comparison.LESS_THAN_OR_EQUAL_TO:result=got<=this.value;break;case OpenLayers.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO:result=got>=this.value;break;case OpenLayers.Filter.Comparison.BETWEEN:result=(got>=this.lowerBoundary)&&(got<=this.upperBoundary);break;case OpenLayers.Filter.Comparison.LIKE:var regexp=new RegExp(this.value,"gi");result=regexp.test(got);break;} @@ -998,59 +1175,57 @@ break;case"Comparison":var op=cmpToStr[filter.type];if(op!==undefined){var value params[filter.property+"__"+op]=value;params.queryable=params.queryable||[];params.queryable.push(filter.property);}else{OpenLayers.Console.warn("Unknown comparison filter type "+filter.type);} break;case"Logical":if(filter.type===OpenLayers.Filter.Logical.AND){for(var i=0,len=filter.filters.length;i<len;i++){params=this.write(filter.filters[i],params);}}else{OpenLayers.Console.warn("Unsupported logical filter type "+filter.type);} break;default:OpenLayers.Console.warn("Unknown filter type "+filterType);} -return params;},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"});})();OpenLayers.Control.PanZoom=OpenLayers.Class(OpenLayers.Control,{slideFactor:50,slideRatio:null,buttons:null,position:null,initialize:function(options){this.position=new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,OpenLayers.Control.PanZoom.Y);OpenLayers.Control.prototype.initialize.apply(this,arguments);},destroy:function(){this.removeButtons();this.buttons=null;this.position=null;OpenLayers.Control.prototype.destroy.apply(this,arguments);},draw:function(px){OpenLayers.Control.prototype.draw.apply(this,arguments);px=this.position;this.buttons=[];var sz=new OpenLayers.Size(18,18);var centered=new OpenLayers.Pixel(px.x+sz.w/2,px.y);this._addButton("panup","north-mini.png",centered,sz);px.y=centered.y+sz.h;this._addButton("panleft","west-mini.png",px,sz);this._addButton("panright","east-mini.png",px.add(sz.w,0),sz);this._addButton("pandown","south-mini.png",centered.add(0,sz.h*2),sz);this._addButton("zoomin","zoom-plus-mini.png",centered.add(0,sz.h*3+5),sz);this._addButton("zoomworld","zoom-world-mini.png",centered.add(0,sz.h*4+5),sz);this._addButton("zoomout","zoom-minus-mini.png",centered.add(0,sz.h*5+5),sz);return this.div;},_addButton:function(id,img,xy,sz){var imgLocation=OpenLayers.Util.getImagesLocation()+img;var btn=OpenLayers.Util.createAlphaImageDiv(this.id+"_"+id,xy,sz,imgLocation,"absolute");btn.style.cursor="pointer";this.div.appendChild(btn);OpenLayers.Event.observe(btn,"mousedown",OpenLayers.Function.bindAsEventListener(this.buttonDown,btn));OpenLayers.Event.observe(btn,"dblclick",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));OpenLayers.Event.observe(btn,"click",OpenLayers.Function.bindAsEventListener(this.doubleClick,btn));btn.action=id;btn.map=this.map;if(!this.slideRatio){var slideFactorPixels=this.slideFactor;var getSlideFactor=function(){return slideFactorPixels;};}else{var slideRatio=this.slideRatio;var getSlideFactor=function(dim){return this.map.getSize()[dim]*slideRatio;};} -btn.getSlideFactor=getSlideFactor;this.buttons.push(btn);return btn;},_removeButton:function(btn){OpenLayers.Event.stopObservingElement(btn);btn.map=null;btn.getSlideFactor=null;this.div.removeChild(btn);OpenLayers.Util.removeItem(this.buttons,btn);},removeButtons:function(){for(var i=this.buttons.length-1;i>=0;--i){this._removeButton(this.buttons[i]);}},doubleClick:function(evt){OpenLayers.Event.stop(evt);return false;},buttonDown:function(evt){if(!OpenLayers.Event.isLeftClick(evt)){return;} -switch(this.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":this.map.zoomIn();break;case"zoomout":this.map.zoomOut();break;case"zoomworld":this.map.zoomToMaxExtent();break;} -OpenLayers.Event.stop(evt);},CLASS_NAME:"OpenLayers.Control.PanZoom"});OpenLayers.Control.PanZoom.X=4;OpenLayers.Control.PanZoom.Y=4;OpenLayers.Strategy=OpenLayers.Class({layer:null,options:null,active:null,autoActivate:true,autoDestroy:true,initialize:function(options){OpenLayers.Util.extend(this,options);this.options=options;this.active=false;},destroy:function(){this.deactivate();this.layer=null;this.options=null;},setLayer:function(layer){this.layer=layer;},activate:function(){if(!this.active){this.active=true;return true;} -return false;},deactivate:function(){if(this.active){this.active=false;return true;} -return false;},CLASS_NAME:"OpenLayers.Strategy"});OpenLayers.Request={DEFAULT_CONFIG:{method:"GET",url:window.location.href,async:true,user:undefined,password:undefined,params:null,proxy:OpenLayers.ProxyHost,headers:{},data:null,callback:function(){},success:null,failure:null,scope:null},URL_SPLIT_REGEX:/([^:]*:)\/\/([^:]*:?[^@]*@)?([^:\/\?]*):?([^\/\?]*)/,events:new OpenLayers.Events(this,null,["complete","success","failure"]),issue:function(config){var defaultConfig=OpenLayers.Util.extend(this.DEFAULT_CONFIG,{proxy:OpenLayers.ProxyHost});config=OpenLayers.Util.applyDefaults(config,defaultConfig);var request=new OpenLayers.Request.XMLHttpRequest();var url=OpenLayers.Util.urlAppend(config.url,OpenLayers.Util.getParameterString(config.params||{}));var sameOrigin=!(url.indexOf("http")==0);var urlParts=!sameOrigin&&url.match(this.URL_SPLIT_REGEX);if(urlParts){var location=window.location;sameOrigin=urlParts[1]==location.protocol&&urlParts[3]==location.hostname;var uPort=urlParts[4],lPort=location.port;if(uPort!=80&&uPort!=""||lPort!="80"&&lPort!=""){sameOrigin=sameOrigin&&uPort==lPort;}} -if(!sameOrigin){if(config.proxy){if(typeof config.proxy=="function"){url=config.proxy(url);}else{url=config.proxy+encodeURIComponent(url);}}else{OpenLayers.Console.warn(OpenLayers.i18n("proxyNeeded"),{url:url});}} -request.open(config.method,url,config.async,config.user,config.password);for(var header in config.headers){request.setRequestHeader(header,config.headers[header]);} -var events=this.events;var self=this;request.onreadystatechange=function(){if(request.readyState==OpenLayers.Request.XMLHttpRequest.DONE){var proceed=events.triggerEvent("complete",{request:request,config:config,requestUrl:url});if(proceed!==false){self.runCallbacks({request:request,config:config,requestUrl:url});}}};if(config.async===false){request.send(config.data);}else{window.setTimeout(function(){if(request.readyState!==0){request.send(config.data);}},0);} -return request;},runCallbacks:function(options){var request=options.request;var config=options.config;var complete=(config.scope)?OpenLayers.Function.bind(config.callback,config.scope):config.callback;var success;if(config.success){success=(config.scope)?OpenLayers.Function.bind(config.success,config.scope):config.success;} -var failure;if(config.failure){failure=(config.scope)?OpenLayers.Function.bind(config.failure,config.scope):config.failure;} -if(OpenLayers.Util.createUrlObject(config.url).protocol=="file:"&&request.responseText){request.status=200;} -complete(request);if(!request.status||(request.status>=200&&request.status<300)){this.events.triggerEvent("success",options);if(success){success(request);}} -if(request.status&&(request.status<200||request.status>=300)){this.events.triggerEvent("failure",options);if(failure){failure(request);}}},GET:function(config){config=OpenLayers.Util.extend(config,{method:"GET"});return OpenLayers.Request.issue(config);},POST:function(config){config=OpenLayers.Util.extend(config,{method:"POST"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} -return OpenLayers.Request.issue(config);},PUT:function(config){config=OpenLayers.Util.extend(config,{method:"PUT"});config.headers=config.headers?config.headers:{};if(!("CONTENT-TYPE"in OpenLayers.Util.upperCaseObject(config.headers))){config.headers["Content-Type"]="application/xml";} -return OpenLayers.Request.issue(config);},DELETE:function(config){config=OpenLayers.Util.extend(config,{method:"DELETE"});return OpenLayers.Request.issue(config);},HEAD:function(config){config=OpenLayers.Util.extend(config,{method:"HEAD"});return OpenLayers.Request.issue(config);},OPTIONS:function(config){config=OpenLayers.Util.extend(config,{method:"OPTIONS"});return OpenLayers.Request.issue(config);}};(function(){var oXMLHttpRequest=window.XMLHttpRequest;var bGecko=!!window.controllers,bIE=window.document.all&&!window.opera,bIE7=bIE&&window.navigator.userAgent.match(/MSIE 7.0/);function fXMLHttpRequest(){this._object=oXMLHttpRequest&&!bIE7?new oXMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");this._listeners=[];};function cXMLHttpRequest(){return new fXMLHttpRequest;};cXMLHttpRequest.prototype=fXMLHttpRequest.prototype;if(bGecko&&oXMLHttpRequest.wrapped) -cXMLHttpRequest.wrapped=oXMLHttpRequest.wrapped;cXMLHttpRequest.UNSENT=0;cXMLHttpRequest.OPENED=1;cXMLHttpRequest.HEADERS_RECEIVED=2;cXMLHttpRequest.LOADING=3;cXMLHttpRequest.DONE=4;cXMLHttpRequest.prototype.readyState=cXMLHttpRequest.UNSENT;cXMLHttpRequest.prototype.responseText='';cXMLHttpRequest.prototype.responseXML=null;cXMLHttpRequest.prototype.status=0;cXMLHttpRequest.prototype.statusText='';cXMLHttpRequest.prototype.priority="NORMAL";cXMLHttpRequest.prototype.onreadystatechange=null;cXMLHttpRequest.onreadystatechange=null;cXMLHttpRequest.onopen=null;cXMLHttpRequest.onsend=null;cXMLHttpRequest.onabort=null;cXMLHttpRequest.prototype.open=function(sMethod,sUrl,bAsync,sUser,sPassword){delete this._headers;if(arguments.length<3) -bAsync=true;this._async=bAsync;var oRequest=this,nState=this.readyState,fOnUnload;if(bIE&&bAsync){fOnUnload=function(){if(nState!=cXMLHttpRequest.DONE){fCleanTransport(oRequest);oRequest.abort();}};window.attachEvent("onunload",fOnUnload);} -if(cXMLHttpRequest.onopen) -cXMLHttpRequest.onopen.apply(this,arguments);if(arguments.length>4) -this._object.open(sMethod,sUrl,bAsync,sUser,sPassword);else -if(arguments.length>3) -this._object.open(sMethod,sUrl,bAsync,sUser);else -this._object.open(sMethod,sUrl,bAsync);this.readyState=cXMLHttpRequest.OPENED;fReadyStateChange(this);this._object.onreadystatechange=function(){if(bGecko&&!bAsync) -return;oRequest.readyState=oRequest._object.readyState;fSynchronizeValues(oRequest);if(oRequest._aborted){oRequest.readyState=cXMLHttpRequest.UNSENT;return;} -if(oRequest.readyState==cXMLHttpRequest.DONE){delete oRequest._data;fCleanTransport(oRequest);if(bIE&&bAsync) -window.detachEvent("onunload",fOnUnload);} -if(nState!=oRequest.readyState) -fReadyStateChange(oRequest);nState=oRequest.readyState;}};function fXMLHttpRequest_send(oRequest){oRequest._object.send(oRequest._data);if(bGecko&&!oRequest._async){oRequest.readyState=cXMLHttpRequest.OPENED;fSynchronizeValues(oRequest);while(oRequest.readyState<cXMLHttpRequest.DONE){oRequest.readyState++;fReadyStateChange(oRequest);if(oRequest._aborted) -return;}}};cXMLHttpRequest.prototype.send=function(vData){if(cXMLHttpRequest.onsend) -cXMLHttpRequest.onsend.apply(this,arguments);if(!arguments.length) -vData=null;if(vData&&vData.nodeType){vData=window.XMLSerializer?new window.XMLSerializer().serializeToString(vData):vData.xml;if(!oRequest._headers["Content-Type"]) -oRequest._object.setRequestHeader("Content-Type","application/xml");} -this._data=vData;fXMLHttpRequest_send(this);};cXMLHttpRequest.prototype.abort=function(){if(cXMLHttpRequest.onabort) -cXMLHttpRequest.onabort.apply(this,arguments);if(this.readyState>cXMLHttpRequest.UNSENT) -this._aborted=true;this._object.abort();fCleanTransport(this);this.readyState=cXMLHttpRequest.UNSENT;delete this._data;};cXMLHttpRequest.prototype.getAllResponseHeaders=function(){return this._object.getAllResponseHeaders();};cXMLHttpRequest.prototype.getResponseHeader=function(sName){return this._object.getResponseHeader(sName);};cXMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){if(!this._headers) -this._headers={};this._headers[sName]=sValue;return this._object.setRequestHeader(sName,sValue);};cXMLHttpRequest.prototype.addEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) -if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) -return;this._listeners.push([sName,fHandler,bUseCapture]);};cXMLHttpRequest.prototype.removeEventListener=function(sName,fHandler,bUseCapture){for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) -if(oListener[0]==sName&&oListener[1]==fHandler&&oListener[2]==bUseCapture) -break;if(oListener) -this._listeners.splice(nIndex,1);};cXMLHttpRequest.prototype.dispatchEvent=function(oEvent){var oEventPseudo={'type':oEvent.type,'target':this,'currentTarget':this,'eventPhase':2,'bubbles':oEvent.bubbles,'cancelable':oEvent.cancelable,'timeStamp':oEvent.timeStamp,'stopPropagation':function(){},'preventDefault':function(){},'initEvent':function(){}};if(oEventPseudo.type=="readystatechange"&&this.onreadystatechange) -(this.onreadystatechange.handleEvent||this.onreadystatechange).apply(this,[oEventPseudo]);for(var nIndex=0,oListener;oListener=this._listeners[nIndex];nIndex++) -if(oListener[0]==oEventPseudo.type&&!oListener[2]) -(oListener[1].handleEvent||oListener[1]).apply(this,[oEventPseudo]);};cXMLHttpRequest.prototype.toString=function(){return'['+"object"+' '+"XMLHttpRequest"+']';};cXMLHttpRequest.toString=function(){return'['+"XMLHttpRequest"+']';};function fReadyStateChange(oRequest){if(cXMLHttpRequest.onreadystatechange) -cXMLHttpRequest.onreadystatechange.apply(oRequest);oRequest.dispatchEvent({'type':"readystatechange",'bubbles':false,'cancelable':false,'timeStamp':new Date+0});};function fGetDocument(oRequest){var oDocument=oRequest.responseXML,sResponse=oRequest.responseText;if(bIE&&sResponse&&oDocument&&!oDocument.documentElement&&oRequest.getResponseHeader("Content-Type").match(/[^\/]+\/[^\+]+\+xml/)){oDocument=new window.ActiveXObject("Microsoft.XMLDOM");oDocument.async=false;oDocument.validateOnParse=false;oDocument.loadXML(sResponse);} -if(oDocument) -if((bIE&&oDocument.parseError!=0)||!oDocument.documentElement||(oDocument.documentElement&&oDocument.documentElement.tagName=="parsererror")) -return null;return oDocument;};function fSynchronizeValues(oRequest){try{oRequest.responseText=oRequest._object.responseText;}catch(e){} -try{oRequest.responseXML=fGetDocument(oRequest._object);}catch(e){} -try{oRequest.status=oRequest._object.status;}catch(e){} -try{oRequest.statusText=oRequest._object.statusText;}catch(e){}};function fCleanTransport(oRequest){oRequest._object.onreadystatechange=new window.Function;};if(!window.Function.prototype.apply){window.Function.prototype.apply=function(oRequest,oArguments){if(!oArguments) -oArguments=[];oRequest.__func=this;oRequest.__func(oArguments[0],oArguments[1],oArguments[2],oArguments[3],oArguments[4]);delete oRequest.__func;};};OpenLayers.Request.XMLHttpRequest=cXMLHttpRequest;})();OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:false,wildcarded:false,srsInBBOX:false,initialize:function(options){options=options||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var format=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=function(filter,params){return format.write(filter,params);}}},destroy:function(){this.params=null;this.headers=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=options||{};options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);options=OpenLayers.Util.applyDefaults(options,this.options);if(options.filter&&this.filterToParams){options.params=this.filterToParams(options.filter,options.params);} +return params;},CLASS_NAME:"OpenLayers.Format.QueryStringFilter"});})();OpenLayers.Renderer.VML=OpenLayers.Class(OpenLayers.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",symbolCache:{},offset:null,initialize:function(containerID){if(!this.supported()){return;} +if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns);var style=document.createStyleSheet();var shapes=['shape','rect','oval','fill','stroke','imagedata','group','textbox'];for(var i=0,len=shapes.length;i<len;i++){style.addRule('olv\\:'+shapes[i],"behavior: url(#default#VML); "+"position: absolute; display: inline-block;");}} +OpenLayers.Renderer.Elements.prototype.initialize.apply(this,arguments);},supported:function(){return!!(document.namespaces);},setExtent:function(extent,resolutionChanged){OpenLayers.Renderer.Elements.prototype.setExtent.apply(this,arguments);var resolution=this.getResolution();var left=(extent.left/resolution)|0;var top=(extent.top/resolution-this.size.h)|0;if(resolutionChanged||!this.offset){this.offset={x:left,y:top};left=0;top=0;}else{left=left-this.offset.x;top=top-this.offset.y;} +var org=left+" "+top;this.root.coordorigin=org;var roots=[this.root,this.vectorRoot,this.textRoot];var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];var size=this.size.w+" "+this.size.h;root.coordsize=size;} +this.root.style.flip="y";return true;},setSize:function(size){OpenLayers.Renderer.prototype.setSize.apply(this,arguments);var roots=[this.rendererRoot,this.root,this.vectorRoot,this.textRoot];var w=this.size.w+"px";var h=this.size.h+"px";var root;for(var i=0,len=roots.length;i<len;++i){root=roots[i];root.style.width=w;root.style.height=h;}},getNodeType:function(geometry,style){var nodeType=null;switch(geometry.CLASS_NAME){case"OpenLayers.Geometry.Point":if(style.externalGraphic){nodeType="olv:rect";}else if(this.isComplexSymbol(style.graphicName)){nodeType="olv:shape";}else{nodeType="olv:oval";} +break;case"OpenLayers.Geometry.Rectangle":nodeType="olv:rect";break;case"OpenLayers.Geometry.LineString":case"OpenLayers.Geometry.LinearRing":case"OpenLayers.Geometry.Polygon":case"OpenLayers.Geometry.Curve":case"OpenLayers.Geometry.Surface":nodeType="olv:shape";break;default:break;} +return nodeType;},setStyle:function(node,style,options,geometry){style=style||node._style;options=options||node._options;var fillColor=style.fillColor;if(node._geometryClass==="OpenLayers.Geometry.Point"){if(style.externalGraphic){options.isFilled=true;if(style.graphicTitle){node.title=style.graphicTitle;} +var width=style.graphicWidth||style.graphicHeight;var height=style.graphicHeight||style.graphicWidth;width=width?width:style.pointRadius*2;height=height?height:style.pointRadius*2;var resolution=this.getResolution();var xOffset=(style.graphicXOffset!=undefined)?style.graphicXOffset:-(0.5*width);var yOffset=(style.graphicYOffset!=undefined)?style.graphicYOffset:-(0.5*height);node.style.left=(((geometry.x/resolution-this.offset.x)+xOffset)|0)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)-(yOffset+height))|0)+"px";node.style.width=width+"px";node.style.height=height+"px";node.style.flip="y";fillColor="none";options.isStroked=false;}else if(this.isComplexSymbol(style.graphicName)){var cache=this.importSymbol(style.graphicName);node.path=cache.path;node.coordorigin=cache.left+","+cache.bottom;var size=cache.size;node.coordsize=size+","+size;this.drawCircle(node,geometry,style.pointRadius);node.style.flip="y";}else{this.drawCircle(node,geometry,style.pointRadius);}} +if(options.isFilled){node.fillcolor=fillColor;}else{node.filled="false";} +var fills=node.getElementsByTagName("fill");var fill=(fills.length==0)?null:fills[0];if(!options.isFilled){if(fill){node.removeChild(fill);}}else{if(!fill){fill=this.createNode('olv:fill',node.id+"_fill");} +fill.opacity=style.fillOpacity;if(node._geometryClass==="OpenLayers.Geometry.Point"&&style.externalGraphic){if(style.graphicOpacity){fill.opacity=style.graphicOpacity;} +fill.src=style.externalGraphic;fill.type="frame";if(!(style.graphicWidth&&style.graphicHeight)){fill.aspect="atmost";}} +if(fill.parentNode!=node){node.appendChild(fill);}} +var rotation=style.rotation;if((rotation!==undefined||node._rotation!==undefined)){node._rotation=rotation;if(style.externalGraphic){this.graphicRotate(node,xOffset,yOffset,style);fill.opacity=0;}else if(node._geometryClass==="OpenLayers.Geometry.Point"){node.style.rotation=rotation||0;}} +var strokes=node.getElementsByTagName("stroke");var stroke=(strokes.length==0)?null:strokes[0];if(!options.isStroked){node.stroked=false;if(stroke){stroke.on=false;}}else{if(!stroke){stroke=this.createNode('olv:stroke',node.id+"_stroke");node.appendChild(stroke);} +stroke.on=true;stroke.color=style.strokeColor;stroke.weight=style.strokeWidth+"px";stroke.opacity=style.strokeOpacity;stroke.endcap=style.strokeLinecap=='butt'?'flat':(style.strokeLinecap||'round');if(style.strokeDashstyle){stroke.dashstyle=this.dashStyle(style);}} +if(style.cursor!="inherit"&&style.cursor!=null){node.style.cursor=style.cursor;} +return node;},graphicRotate:function(node,xOffset,yOffset,style){var style=style||node._style;var rotation=style.rotation||0;var aspectRatio,size;if(!(style.graphicWidth&&style.graphicHeight)){var img=new Image();img.onreadystatechange=OpenLayers.Function.bind(function(){if(img.readyState=="complete"||img.readyState=="interactive"){aspectRatio=img.width/img.height;size=Math.max(style.pointRadius*2,style.graphicWidth||0,style.graphicHeight||0);xOffset=xOffset*aspectRatio;style.graphicWidth=size*aspectRatio;style.graphicHeight=size;this.graphicRotate(node,xOffset,yOffset,style);}},this);img.src=style.externalGraphic;return;}else{size=Math.max(style.graphicWidth,style.graphicHeight);aspectRatio=style.graphicWidth/style.graphicHeight;} +var width=Math.round(style.graphicWidth||size*aspectRatio);var height=Math.round(style.graphicHeight||size);node.style.width=width+"px";node.style.height=height+"px";var image=document.getElementById(node.id+"_image");if(!image){image=this.createNode("olv:imagedata",node.id+"_image");node.appendChild(image);} +image.style.width=width+"px";image.style.height=height+"px";image.src=style.externalGraphic;image.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader("+"src='', sizingMethod='scale')";var rot=rotation*Math.PI/180;var sintheta=Math.sin(rot);var costheta=Math.cos(rot);var filter="progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')\n";var opacity=style.graphicOpacity||style.fillOpacity;if(opacity&&opacity!=1){filter+="progid:DXImageTransform.Microsoft.BasicImage(opacity="+ +opacity+")\n";} +node.style.filter=filter;var centerPoint=new OpenLayers.Geometry.Point(-xOffset,-yOffset);var imgBox=new OpenLayers.Bounds(0,0,width,height).toGeometry();imgBox.rotate(style.rotation,centerPoint);var imgBounds=imgBox.getBounds();node.style.left=Math.round(parseInt(node.style.left)+imgBounds.left)+"px";node.style.top=Math.round(parseInt(node.style.top)-imgBounds.bottom)+"px";},postDraw:function(node){node.style.visibility="visible";var fillColor=node._style.fillColor;var strokeColor=node._style.strokeColor;if(fillColor=="none"&&node.fillcolor!=fillColor){node.fillcolor=fillColor;} +if(strokeColor=="none"&&node.strokecolor!=strokeColor){node.strokecolor=strokeColor;}},setNodeDimension:function(node,geometry){var bbox=geometry.getBounds();if(bbox){var resolution=this.getResolution();var scaledBox=new OpenLayers.Bounds((bbox.left/resolution-this.offset.x)|0,(bbox.bottom/resolution-this.offset.y)|0,(bbox.right/resolution-this.offset.x)|0,(bbox.top/resolution-this.offset.y)|0);node.style.left=scaledBox.left+"px";node.style.top=scaledBox.top+"px";node.style.width=scaledBox.getWidth()+"px";node.style.height=scaledBox.getHeight()+"px";node.coordorigin=scaledBox.left+" "+scaledBox.top;node.coordsize=scaledBox.getWidth()+" "+scaledBox.getHeight();}},dashStyle:function(style){var dash=style.strokeDashstyle;switch(dash){case'solid':case'dot':case'dash':case'dashdot':case'longdash':case'longdashdot':return dash;default:var parts=dash.split(/[ ,]/);if(parts.length==2){if(1*parts[0]>=2*parts[1]){return"longdash";} +return(parts[0]==1||parts[1]==1)?"dot":"dash";}else if(parts.length==4){return(1*parts[0]>=2*parts[1])?"longdashdot":"dashdot";} +return"solid";}},createNode:function(type,id){var node=document.createElement(type);if(id){node.id=id;} +node.unselectable='on';node.onselectstart=OpenLayers.Function.False;return node;},nodeTypeCompare:function(node,type){var subType=type;var splitIndex=subType.indexOf(":");if(splitIndex!=-1){subType=subType.substr(splitIndex+1);} +var nodeName=node.nodeName;splitIndex=nodeName.indexOf(":");if(splitIndex!=-1){nodeName=nodeName.substr(splitIndex+1);} +return(subType==nodeName);},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div");},createRoot:function(suffix){return this.nodeFactory(this.container.id+suffix,"olv:group");},drawPoint:function(node,geometry){return this.drawCircle(node,geometry,1);},drawCircle:function(node,geometry,radius){if(!isNaN(geometry.x)&&!isNaN(geometry.y)){var resolution=this.getResolution();node.style.left=(((geometry.x/resolution-this.offset.x)|0)-radius)+"px";node.style.top=(((geometry.y/resolution-this.offset.y)|0)-radius)+"px";var diameter=radius*2;node.style.width=diameter+"px";node.style.height=diameter+"px";return node;} +return false;},drawLineString:function(node,geometry){return this.drawLine(node,geometry,false);},drawLinearRing:function(node,geometry){return this.drawLine(node,geometry,true);},drawLine:function(node,geometry,closeLine){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var numComponents=geometry.components.length;var parts=new Array(numComponents);var comp,x,y;for(var i=0;i<numComponents;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;parts[i]=" "+x+","+y+" l ";} +var end=(closeLine)?" x e":" e";node.path="m"+parts.join("")+end;return node;},drawPolygon:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var j,jj,points,area,first,second,i,ii,comp,pathComp,x,y;for(j=0,jj=geometry.components.length;j<jj;j++){path.push("m");points=geometry.components[j].components;area=(j===0);first=null;second=null;for(i=0,ii=points.length;i<ii;i++){comp=points[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;pathComp=" "+x+","+y;path.push(pathComp);if(i==0){path.push(" l");} +if(!area){if(!first){first=pathComp;}else if(first!=pathComp){if(!second){second=pathComp;}else if(second!=pathComp){area=true;}}}} +path.push(area?" x ":" ");} +path.push("e");node.path=path.join("");return node;},drawRectangle:function(node,geometry){var resolution=this.getResolution();node.style.left=((geometry.x/resolution-this.offset.x)|0)+"px";node.style.top=((geometry.y/resolution-this.offset.y)|0)+"px";node.style.width=((geometry.width/resolution)|0)+"px";node.style.height=((geometry.height/resolution)|0)+"px";return node;},drawText:function(featureId,style,location){var label=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX,"olv:rect");var textbox=this.nodeFactory(featureId+this.LABEL_ID_SUFFIX+"_textbox","olv:textbox");var resolution=this.getResolution();label.style.left=((location.x/resolution-this.offset.x)|0)+"px";label.style.top=((location.y/resolution-this.offset.y)|0)+"px";label.style.flip="y";textbox.innerText=style.label;if(style.cursor!="inherit"&&style.cursor!=null){textbox.style.cursor=style.cursor;} +if(style.fontColor){textbox.style.color=style.fontColor;} +if(style.fontOpacity){textbox.style.filter='alpha(opacity='+(style.fontOpacity*100)+')';} +if(style.fontFamily){textbox.style.fontFamily=style.fontFamily;} +if(style.fontSize){textbox.style.fontSize=style.fontSize;} +if(style.fontWeight){textbox.style.fontWeight=style.fontWeight;} +if(style.fontStyle){textbox.style.fontStyle=style.fontStyle;} +if(style.labelSelect===true){label._featureId=featureId;textbox._featureId=featureId;textbox._geometry=location;textbox._geometryClass=location.CLASS_NAME;} +textbox.style.whiteSpace="nowrap";textbox.inset="1px,0px,0px,0px";if(!label.parentNode){label.appendChild(textbox);this.textRoot.appendChild(label);} +var align=style.labelAlign||"cm";if(align.length==1){align+="m";} +var xshift=textbox.clientWidth*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(0,1)]);var yshift=textbox.clientHeight*(OpenLayers.Renderer.VML.LABEL_SHIFT[align.substr(1,1)]);label.style.left=parseInt(label.style.left)-xshift-1+"px";label.style.top=parseInt(label.style.top)+yshift+"px";},drawSurface:function(node,geometry){this.setNodeDimension(node,geometry);var resolution=this.getResolution();var path=[];var comp,x,y;for(var i=0,len=geometry.components.length;i<len;i++){comp=geometry.components[i];x=(comp.x/resolution-this.offset.x)|0;y=(comp.y/resolution-this.offset.y)|0;if((i%3)==0&&(i/3)==0){path.push("m");}else if((i%3)==1){path.push(" c");} +path.push(" "+x+","+y);} +path.push(" x e");node.path=path.join("");return node;},moveRoot:function(renderer){var layer=this.map.getLayer(renderer.container.id);if(layer instanceof OpenLayers.Layer.Vector.RootContainer){layer=this.map.getLayer(this.container.id);} +layer&&layer.renderer.clear();OpenLayers.Renderer.Elements.prototype.moveRoot.apply(this,arguments);layer&&layer.redraw();},importSymbol:function(graphicName){var id=this.container.id+"-"+graphicName;var cache=this.symbolCache[id];if(cache){return cache;} +var symbol=OpenLayers.Renderer.symbol[graphicName];if(!symbol){throw new Error(graphicName+' is not a valid symbol name');} +var symbolExtent=new OpenLayers.Bounds(Number.MAX_VALUE,Number.MAX_VALUE,0,0);var pathitems=["m"];for(var i=0;i<symbol.length;i=i+2){var x=symbol[i];var y=symbol[i+1];symbolExtent.left=Math.min(symbolExtent.left,x);symbolExtent.bottom=Math.min(symbolExtent.bottom,y);symbolExtent.right=Math.max(symbolExtent.right,x);symbolExtent.top=Math.max(symbolExtent.top,y);pathitems.push(x);pathitems.push(y);if(i==0){pathitems.push("l");}} +pathitems.push("x e");var path=pathitems.join(" ");var diff=(symbolExtent.getWidth()-symbolExtent.getHeight())/2;if(diff>0){symbolExtent.bottom=symbolExtent.bottom-diff;symbolExtent.top=symbolExtent.top+diff;}else{symbolExtent.left=symbolExtent.left+diff;symbolExtent.right=symbolExtent.right-diff;} +cache={path:path,size:symbolExtent.getWidth(),left:symbolExtent.left,bottom:symbolExtent.bottom};this.symbolCache[id]=cache;return cache;},CLASS_NAME:"OpenLayers.Renderer.VML"});OpenLayers.Renderer.VML.LABEL_SHIFT={"l":0,"c":.5,"r":1,"t":0,"m":.5,"b":1};OpenLayers.Protocol=OpenLayers.Class({format:null,options:null,autoDestroy:true,defaultFilter:null,initialize:function(options){options=options||{};OpenLayers.Util.extend(this,options);this.options=options;},mergeWithDefaultFilter:function(filter){var merged;if(filter&&this.defaultFilter){merged=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.defaultFilter,filter]});}else{merged=filter||this.defaultFilter||undefined;} +return merged;},destroy:function(){this.options=null;this.format=null;},read:function(options){options=options||{};options.filter=this.mergeWithDefaultFilter(options.filter);},create:function(){},update:function(){},"delete":function(){},commit:function(){},abort:function(response){},createCallback:function(method,response,options){return OpenLayers.Function.bind(function(){method.apply(this,[response,options]);},this);},CLASS_NAME:"OpenLayers.Protocol"});OpenLayers.Protocol.Response=OpenLayers.Class({code:null,requestType:null,last:true,features:null,reqFeatures:null,priv:null,error:null,initialize:function(options){OpenLayers.Util.extend(this,options);},success:function(){return this.code>0;},CLASS_NAME:"OpenLayers.Protocol.Response"});OpenLayers.Protocol.Response.SUCCESS=1;OpenLayers.Protocol.Response.FAILURE=0;OpenLayers.Protocol.HTTP=OpenLayers.Class(OpenLayers.Protocol,{url:null,headers:null,params:null,callback:null,scope:null,readWithPOST:false,wildcarded:false,srsInBBOX:false,initialize:function(options){options=options||{};this.params={};this.headers={};OpenLayers.Protocol.prototype.initialize.apply(this,arguments);if(!this.filterToParams&&OpenLayers.Format.QueryStringFilter){var format=new OpenLayers.Format.QueryStringFilter({wildcarded:this.wildcarded,srsInBBOX:this.srsInBBOX});this.filterToParams=function(filter,params){return format.write(filter,params);}}},destroy:function(){this.params=null;this.headers=null;OpenLayers.Protocol.prototype.destroy.apply(this);},read:function(options){OpenLayers.Protocol.prototype.read.apply(this,arguments);options=options||{};options.params=OpenLayers.Util.applyDefaults(options.params,this.options.params);options=OpenLayers.Util.applyDefaults(options,this.options);if(options.filter&&this.filterToParams){options.params=this.filterToParams(options.filter,options.params);} var readWithPOST=(options.readWithPOST!==undefined)?options.readWithPOST:this.readWithPOST;var resp=new OpenLayers.Protocol.Response({requestType:"read"});if(readWithPOST){resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleRead,resp,options),data:OpenLayers.Util.getParameterString(options.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}});}else{resp.priv=OpenLayers.Request.GET({url:options.url,callback:this.createCallback(this.handleRead,resp,options),params:options.params,headers:options.headers});} return resp;},handleRead:function(resp,options){this.handleResponse(resp,options);},create:function(features,options){options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:features,requestType:"create"});resp.priv=OpenLayers.Request.POST({url:options.url,callback:this.createCallback(this.handleCreate,resp,options),headers:options.headers,data:this.format.write(features)});return resp;},handleCreate:function(resp,options){this.handleResponse(resp,options);},update:function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"update"});resp.priv=OpenLayers.Request.PUT({url:url,callback:this.createCallback(this.handleUpdate,resp,options),headers:options.headers,data:this.format.write(feature)});return resp;},handleUpdate:function(resp,options){this.handleResponse(resp,options);},"delete":function(feature,options){options=options||{};var url=options.url||feature.url||this.options.url+"/"+feature.fid;options=OpenLayers.Util.applyDefaults(options,this.options);var resp=new OpenLayers.Protocol.Response({reqFeatures:feature,requestType:"delete"});resp.priv=OpenLayers.Request.DELETE({url:url,callback:this.createCallback(this.handleDelete,resp,options),headers:options.headers});return resp;},handleDelete:function(resp,options){this.handleResponse(resp,options);},handleResponse:function(resp,options){var request=resp.priv;if(options.callback){if(request.status>=200&&request.status<300){if(resp.requestType!="delete"){resp.features=this.parseFeatures(request);} resp.code=OpenLayers.Protocol.Response.SUCCESS;}else{resp.code=OpenLayers.Protocol.Response.FAILURE;} @@ -1065,145 +1240,30 @@ function callback(response){this.callUserCallback(response,options);success=succ var queue=types[OpenLayers.State.INSERT];if(queue.length>0){resp.push(this.create(queue,OpenLayers.Util.applyDefaults({callback:insertCallback,scope:this},options.create)));} queue=types[OpenLayers.State.UPDATE];for(var i=queue.length-1;i>=0;--i){resp.push(this.update(queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options.update)));} queue=types[OpenLayers.State.DELETE];for(var i=queue.length-1;i>=0;--i){resp.push(this["delete"](queue[i],OpenLayers.Util.applyDefaults({callback:callback,scope:this},options["delete"])));} -return resp;},abort:function(response){if(response){response.priv.abort();}},callUserCallback:function(resp,options){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);}},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Control.ArgParser=OpenLayers.Class(OpenLayers.Control,{center:null,zoom:null,layers:null,displayProjection:null,getParameters:function(url){url=url||window.location.href;var parameters=OpenLayers.Util.getParameters(url);var index=url.indexOf('#');if(index>0){url='?'+url.substring(index+1,url.length);OpenLayers.Util.extend(parameters,OpenLayers.Util.getParameters(url));} -return parameters;},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if((control!=this)&&(control.CLASS_NAME=="OpenLayers.Control.ArgParser")){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;} -break;}} -if(i==this.map.controls.length){var args=this.getParameters();if(args.layers){this.layers=args.layers;this.map.events.register('addlayer',this,this.configureLayers);this.configureLayers();} -if(args.lat&&args.lon){this.center=new OpenLayers.LonLat(parseFloat(args.lon),parseFloat(args.lat));if(args.zoom){this.zoom=parseInt(args.zoom);} -this.map.events.register('changebaselayer',this,this.setCenter);this.setCenter();}}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister('changebaselayer',this,this.setCenter);if(this.displayProjection){this.center.transform(this.displayProjection,this.map.getProjectionObject());} -this.map.setCenter(this.center,this.zoom);}},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister('addlayer',this,this.configureLayers);for(var i=0,len=this.layers.length;i<len;i++){var layer=this.map.layers[i];var c=this.layers.charAt(i);if(c=="B"){this.map.setBaseLayer(layer);}else if((c=="T")||(c=="F")){layer.setVisibility(c=="T");}}}},CLASS_NAME:"OpenLayers.Control.ArgParser"});OpenLayers.Control.Permalink=OpenLayers.Class(OpenLayers.Control,{argParserClass:OpenLayers.Control.ArgParser,element:null,anchor:false,base:'',displayProjection:null,initialize:function(element,base,options){if(element!==null&&typeof element=='object'&&!OpenLayers.Util.isElement(element)){options=element;this.base=document.location.href;OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.element!=null){this.element=OpenLayers.Util.getElement(this.element);}} -else{OpenLayers.Control.prototype.initialize.apply(this,[options]);this.element=OpenLayers.Util.getElement(element);this.base=base||document.location.href;}},destroy:function(){if(this.element.parentNode==this.div){this.div.removeChild(this.element);} -this.element=null;this.map.events.unregister('moveend',this,this.updateLink);OpenLayers.Control.prototype.destroy.apply(this,arguments);},setMap:function(map){OpenLayers.Control.prototype.setMap.apply(this,arguments);for(var i=0,len=this.map.controls.length;i<len;i++){var control=this.map.controls[i];if(control.CLASS_NAME==this.argParserClass.CLASS_NAME){if(control.displayProjection!=this.displayProjection){this.displayProjection=control.displayProjection;} -break;}} -if(i==this.map.controls.length){this.map.addControl(new this.argParserClass({'displayProjection':this.displayProjection}));}},draw:function(){OpenLayers.Control.prototype.draw.apply(this,arguments);if(!this.element&&!this.anchor){this.element=document.createElement("a");this.element.innerHTML=OpenLayers.i18n("Permalink");this.element.href="";this.div.appendChild(this.element);} -this.map.events.on({'moveend':this.updateLink,'changelayer':this.updateLink,'changebaselayer':this.updateLink,scope:this});this.updateLink();return this.div;},updateLink:function(){var separator=this.anchor?'#':'?';var href=this.base;if(href.indexOf(separator)!=-1){href=href.substring(0,href.indexOf(separator));} -href+=separator+OpenLayers.Util.getParameterString(this.createParams());if(this.anchor&&!this.element){window.location.href=href;} -else{this.element.href=href;}},createParams:function(center,zoom,layers){center=center||this.map.getCenter();var params=OpenLayers.Util.getParameters(this.base);if(center){params.zoom=zoom||this.map.getZoom();var lat=center.lat;var lon=center.lon;if(this.displayProjection){var mapPosition=OpenLayers.Projection.transform({x:lon,y:lat},this.map.getProjectionObject(),this.displayProjection);lon=mapPosition.x;lat=mapPosition.y;} -params.lat=Math.round(lat*100000)/100000;params.lon=Math.round(lon*100000)/100000;layers=layers||this.map.layers;params.layers='';for(var i=0,len=layers.length;i<len;i++){var layer=layers[i];if(layer.isBaseLayer){params.layers+=(layer==this.map.baseLayer)?"B":"0";}else{params.layers+=(layer.getVisibility())?"T":"F";}}} -return params;},CLASS_NAME:"OpenLayers.Control.Permalink"});OpenLayers.Control.SelectFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["beforefeaturehighlighted","featurehighlighted","featureunhighlighted"],multipleKey:null,toggleKey:null,multiple:false,clickout:true,toggle:false,hover:false,highlightOnly:false,box:false,onBeforeSelect:function(){},onSelect:function(){},onUnselect:function(){},scope:null,geometryTypes:null,layer:null,layers:null,callbacks:null,selectStyle:null,renderIntent:"select",handlers:null,initialize:function(layers,options){this.EVENT_TYPES=OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(OpenLayers.Control.prototype.EVENT_TYPES);OpenLayers.Control.prototype.initialize.apply(this,[options]);if(this.scope===null){this.scope=this;} -this.initLayer(layers);var callbacks={click:this.clickFeature,clickout:this.clickoutFeature};if(this.hover){callbacks.over=this.overFeature;callbacks.out=this.outFeature;} -this.callbacks=OpenLayers.Util.extend(callbacks,this.callbacks);this.handlers={feature:new OpenLayers.Handler.Feature(this,this.layer,this.callbacks,{geometryTypes:this.geometryTypes})};if(this.box){this.handlers.box=new OpenLayers.Handler.Box(this,{done:this.selectBox},{boxDivClassName:"olHandlerBoxSelectFeature"});}},initLayer:function(layers){if(OpenLayers.Util.isArray(layers)){this.layers=layers;this.layer=new OpenLayers.Layer.Vector.RootContainer(this.id+"_container",{layers:layers});}else{this.layer=layers;}},destroy:function(){if(this.active&&this.layers){this.map.removeLayer(this.layer);} -OpenLayers.Control.prototype.destroy.apply(this,arguments);if(this.layers){this.layer.destroy();}},activate:function(){if(!this.active){if(this.layers){this.map.addLayer(this.layer);} -this.handlers.feature.activate();if(this.box&&this.handlers.box){this.handlers.box.activate();}} -return OpenLayers.Control.prototype.activate.apply(this,arguments);},deactivate:function(){if(this.active){this.handlers.feature.deactivate();if(this.handlers.box){this.handlers.box.deactivate();} -if(this.layers){this.map.removeLayer(this.layer);}} -return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},unselectAll:function(options){var layers=this.layers||[this.layer];var layer,feature;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=layer.selectedFeatures.length-1;i>=0;--i){feature=layer.selectedFeatures[i];if(!options||options.except!=feature){this.unselect(feature);}}}},clickFeature:function(feature){if(!this.hover){var selected=(OpenLayers.Util.indexOf(feature.layer.selectedFeatures,feature)>-1);if(selected){if(this.toggleSelect()){this.unselect(feature);}else if(!this.multipleSelect()){this.unselectAll({except:feature});}}else{if(!this.multipleSelect()){this.unselectAll({except:feature});} -this.select(feature);}}},multipleSelect:function(){return this.multiple||(this.handlers.feature.evt&&this.handlers.feature.evt[this.multipleKey]);},toggleSelect:function(){return this.toggle||(this.handlers.feature.evt&&this.handlers.feature.evt[this.toggleKey]);},clickoutFeature:function(feature){if(!this.hover&&this.clickout){this.unselectAll();}},overFeature:function(feature){var layer=feature.layer;if(this.hover){if(this.highlightOnly){this.highlight(feature);}else if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}},outFeature:function(feature){if(this.hover){if(this.highlightOnly){if(feature._lastHighlighter==this.id){if(feature._prevHighlighter&&feature._prevHighlighter!=this.id){delete feature._lastHighlighter;var control=this.map.getControl(feature._prevHighlighter);if(control){control.highlight(feature);}}else{this.unhighlight(feature);}}}else{this.unselect(feature);}}},highlight:function(feature){var layer=feature.layer;var cont=this.events.triggerEvent("beforefeaturehighlighted",{feature:feature});if(cont!==false){feature._prevHighlighter=feature._lastHighlighter;feature._lastHighlighter=this.id;var style=this.selectStyle||this.renderIntent;layer.drawFeature(feature,style);this.events.triggerEvent("featurehighlighted",{feature:feature});}},unhighlight:function(feature){var layer=feature.layer;if(feature._prevHighlighter==undefined){delete feature._lastHighlighter;}else if(feature._prevHighlighter==this.id){delete feature._prevHighlighter;}else{feature._lastHighlighter=feature._prevHighlighter;delete feature._prevHighlighter;} -layer.drawFeature(feature,feature.style||feature.layer.style||"default");this.events.triggerEvent("featureunhighlighted",{feature:feature});},select:function(feature){var cont=this.onBeforeSelect.call(this.scope,feature);var layer=feature.layer;if(cont!==false){cont=layer.events.triggerEvent("beforefeatureselected",{feature:feature});if(cont!==false){layer.selectedFeatures.push(feature);this.highlight(feature);if(!this.handlers.feature.lastFeature){this.handlers.feature.lastFeature=layer.selectedFeatures[0];} -layer.events.triggerEvent("featureselected",{feature:feature});this.onSelect.call(this.scope,feature);}}},unselect:function(feature){var layer=feature.layer;this.unhighlight(feature);OpenLayers.Util.removeItem(layer.selectedFeatures,feature);layer.events.triggerEvent("featureunselected",{feature:feature});this.onUnselect.call(this.scope,feature);},selectBox:function(position){if(position instanceof OpenLayers.Bounds){var minXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.left,position.bottom));var maxXY=this.map.getLonLatFromPixel(new OpenLayers.Pixel(position.right,position.top));var bounds=new OpenLayers.Bounds(minXY.lon,minXY.lat,maxXY.lon,maxXY.lat);if(!this.multipleSelect()){this.unselectAll();} -var prevMultiple=this.multiple;this.multiple=true;var layers=this.layers||[this.layer];var layer;for(var l=0;l<layers.length;++l){layer=layers[l];for(var i=0,len=layer.features.length;i<len;++i){var feature=layer.features[i];if(!feature.getVisibility()){continue;} -if(this.geometryTypes==null||OpenLayers.Util.indexOf(this.geometryTypes,feature.geometry.CLASS_NAME)>-1){if(bounds.toGeometry().intersects(feature.geometry)){if(OpenLayers.Util.indexOf(layer.selectedFeatures,feature)==-1){this.select(feature);}}}}} -this.multiple=prevMultiple;}},setMap:function(map){this.handlers.feature.setMap(map);if(this.box){this.handlers.box.setMap(map);} -OpenLayers.Control.prototype.setMap.apply(this,arguments);},setLayer:function(layers){var isActive=this.active;this.unselectAll();this.deactivate();if(this.layers){this.layer.destroy();this.layers=null;} -this.initLayer(layers);this.handlers.feature.layer=this.layer;if(isActive){this.activate();}},CLASS_NAME:"OpenLayers.Control.SelectFeature"});OpenLayers.Strategy.Fixed=OpenLayers.Class(OpenLayers.Strategy,{preload:false,activate:function(){if(OpenLayers.Strategy.prototype.activate.apply(this,arguments)){this.layer.events.on({"refresh":this.load,scope:this});if(this.layer.visibility==true||this.preload){this.load();}else{this.layer.events.on({"visibilitychanged":this.load,scope:this});} -return true;} -return false;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"refresh":this.load,"visibilitychanged":this.load,scope:this});} -return deactivated;},load:function(options){var layer=this.layer;layer.events.triggerEvent("loadstart");layer.protocol.read(OpenLayers.Util.applyDefaults({callback:OpenLayers.Function.bind(this.merge,this,layer.map.getProjectionObject()),filter:layer.filter},options));layer.events.un({"visibilitychanged":this.load,scope:this});},merge:function(mapProjection,resp){var layer=this.layer;layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){if(!mapProjection.equals(layer.projection)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(layer.projection,mapProjection);}}} -layer.addFeatures(features);} -layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.Fixed"});OpenLayers.Handler.Pinch=OpenLayers.Class(OpenLayers.Handler,{started:false,stopDown:false,pinching:false,last:null,start:null,initialize:function(control,callbacks,options){OpenLayers.Handler.prototype.initialize.apply(this,arguments);},touchstart:function(evt){var propagate=true;this.pinching=false;if(OpenLayers.Event.isMultiTouch(evt)){this.started=true;this.last=this.start={distance:this.getDistance(evt.touches),delta:0,scale:1};this.callback("start",[evt,this.start]);propagate=!this.stopDown;}else{this.started=false;this.start=null;this.last=null;} -OpenLayers.Event.stop(evt);return propagate;},touchmove:function(evt){if(this.started&&OpenLayers.Event.isMultiTouch(evt)){this.pinching=true;var current=this.getPinchData(evt);this.callback("move",[evt,current]);this.last=current;OpenLayers.Event.stop(evt);} -return true;},touchend:function(evt){if(this.started){this.started=false;this.pinching=false;this.callback("done",[evt,this.start,this.last]);this.start=null;this.last=null;} -return true;},activate:function(){var activated=false;if(OpenLayers.Handler.prototype.activate.apply(this,arguments)){this.pinching=false;activated=true;} -return activated;},deactivate:function(){var deactivated=false;if(OpenLayers.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.pinching=false;this.start=null;this.last=null;deactivated=true;} -return deactivated;},getDistance:function(touches){var t0=touches[0];var t1=touches[1];return Math.sqrt(Math.pow(t0.clientX-t1.clientX,2)+ -Math.pow(t0.clientY-t1.clientY,2));},getPinchData:function(evt){var distance=this.getDistance(evt.touches);var scale=distance/this.start.distance;return{distance:distance,delta:this.last.distance-distance,scale:scale};},CLASS_NAME:"OpenLayers.Handler.Pinch"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerOrigin:null,pinchOrigin:null,currentCenter:null,autoActivate:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions);},activate:function(){var activated=OpenLayers.Control.prototype.activate.apply(this,arguments);if(activated){this.map.events.on({moveend:this.updateContainerOrigin,scope:this});this.updateContainerOrigin();} +return resp;},abort:function(response){if(response){response.priv.abort();}},callUserCallback:function(resp,options){var opt=options[resp.requestType];if(opt&&opt.callback){opt.callback.call(opt.scope,resp);}},CLASS_NAME:"OpenLayers.Protocol.HTTP"});OpenLayers.Format.JSON=OpenLayers.Class(OpenLayers.Format,{indent:" ",space:" ",newline:"\n",level:0,pretty:false,nativeJSON:(function(){return!!(window.JSON&&typeof JSON.parse=="function"&&typeof JSON.stringify=="function");})(),read:function(json,filter){var object;if(this.nativeJSON){object=JSON.parse(json,filter);}else try{if(/^[\],:{}\s]*$/.test(json.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){object=eval('('+json+')');if(typeof filter==='function'){function walk(k,v){if(v&&typeof v==='object'){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}} +return filter(k,v);} +object=walk('',object);}}}catch(e){} +if(this.keepData){this.data=object;} +return object;},write:function(value,pretty){this.pretty=!!pretty;var json=null;var type=typeof value;if(this.serialize[type]){try{json=(!this.pretty&&this.nativeJSON)?JSON.stringify(value):this.serialize[type].apply(this,[value]);}catch(err){OpenLayers.Console.error("Trouble serializing: "+err);}} +return json;},writeIndent:function(){var pieces=[];if(this.pretty){for(var i=0;i<this.level;++i){pieces.push(this.indent);}} +return pieces.join('');},writeNewline:function(){return(this.pretty)?this.newline:'';},writeSpace:function(){return(this.pretty)?this.space:'';},serialize:{'object':function(object){if(object==null){return"null";} +if(object.constructor==Date){return this.serialize.date.apply(this,[object]);} +if(object.constructor==Array){return this.serialize.array.apply(this,[object]);} +var pieces=['{'];this.level+=1;var key,keyJSON,valueJSON;var addComma=false;for(key in object){if(object.hasOwnProperty(key)){keyJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[key,this.pretty]);valueJSON=OpenLayers.Format.JSON.prototype.write.apply(this,[object[key],this.pretty]);if(keyJSON!=null&&valueJSON!=null){if(addComma){pieces.push(',');} +pieces.push(this.writeNewline(),this.writeIndent(),keyJSON,':',this.writeSpace(),valueJSON);addComma=true;}}} +this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),'}');return pieces.join('');},'array':function(array){var json;var pieces=['['];this.level+=1;for(var i=0,len=array.length;i<len;++i){json=OpenLayers.Format.JSON.prototype.write.apply(this,[array[i],this.pretty]);if(json!=null){if(i>0){pieces.push(',');} +pieces.push(this.writeNewline(),this.writeIndent(),json);}} +this.level-=1;pieces.push(this.writeNewline(),this.writeIndent(),']');return pieces.join('');},'string':function(string){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};if(/["\\\x00-\x1f]/.test(string)){return'"'+string.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;} +c=b.charCodeAt();return'\\u00'+ +Math.floor(c/16).toString(16)+ +(c%16).toString(16);})+'"';} +return'"'+string+'"';},'number':function(number){return isFinite(number)?String(number):"null";},'boolean':function(bool){return String(bool);},'date':function(date){function format(number){return(number<10)?'0'+number:number;} +return'"'+date.getFullYear()+'-'+ +format(date.getMonth()+1)+'-'+ +format(date.getDate())+'T'+ +format(date.getHours())+':'+ +format(date.getMinutes())+':'+ +format(date.getSeconds())+'"';}},CLASS_NAME:"OpenLayers.Format.JSON"});OpenLayers.Control.DragFeature=OpenLayers.Class(OpenLayers.Control,{geometryTypes:null,onStart:function(feature,pixel){},onDrag:function(feature,pixel){},onComplete:function(feature,pixel){},onEnter:function(feature){},onLeave:function(feature){},documentDrag:false,layer:null,feature:null,dragCallbacks:{},featureCallbacks:{},lastPixel:null,initialize:function(layer,options){OpenLayers.Control.prototype.initialize.apply(this,[options]);this.layer=layer;this.handlers={drag:new OpenLayers.Handler.Drag(this,OpenLayers.Util.extend({down:this.downFeature,move:this.moveFeature,up:this.upFeature,out:this.cancel,done:this.doneDragging},this.dragCallbacks),{documentDrag:this.documentDrag}),feature:new OpenLayers.Handler.Feature(this,this.layer,OpenLayers.Util.extend({click:this.clickFeature,clickout:this.clickoutFeature,over:this.overFeature,out:this.outFeature},this.featureCallbacks),{geometryTypes:this.geometryTypes})};},clickFeature:function(feature){if(this.handlers.feature.touch&&!this.over&&this.overFeature(feature)){this.handlers.drag.dragstart(this.handlers.feature.evt);this.handlers.drag.stopDown=false;}},clickoutFeature:function(feature){if(this.handlers.feature.touch&&this.over){this.outFeature(feature);this.handlers.drag.stopDown=true;}},destroy:function(){this.layer=null;OpenLayers.Control.prototype.destroy.apply(this,[]);},activate:function(){return(this.handlers.feature.activate()&&OpenLayers.Control.prototype.activate.apply(this,arguments));},deactivate:function(){this.handlers.drag.deactivate();this.handlers.feature.deactivate();this.feature=null;this.dragging=false;this.lastPixel=null;OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");return OpenLayers.Control.prototype.deactivate.apply(this,arguments);},overFeature:function(feature){var activated=false;if(!this.handlers.drag.dragging){this.feature=feature;this.handlers.drag.activate();activated=true;this.over=true;OpenLayers.Element.addClass(this.map.viewPortDiv,this.displayClass+"Over");this.onEnter(feature);}else{if(this.feature.id==feature.id){this.over=true;}else{this.over=false;}} +return activated;},downFeature:function(pixel){this.lastPixel=pixel;this.onStart(this.feature,pixel);},moveFeature:function(pixel){var res=this.map.getResolution();this.feature.geometry.move(res*(pixel.x-this.lastPixel.x),res*(this.lastPixel.y-pixel.y));this.layer.drawFeature(this.feature);this.lastPixel=pixel;this.onDrag(this.feature,pixel);},upFeature:function(pixel){if(!this.over){this.handlers.drag.deactivate();}},doneDragging:function(pixel){this.onComplete(this.feature,pixel);},outFeature:function(feature){if(!this.handlers.drag.dragging){this.over=false;this.handlers.drag.deactivate();OpenLayers.Element.removeClass(this.map.viewPortDiv,this.displayClass+"Over");this.onLeave(feature);this.feature=null;}else{if(this.feature.id==feature.id){this.over=false;}}},cancel:function(){this.handlers.drag.deactivate();this.over=false;},setMap:function(map){this.handlers.drag.setMap(map);this.handlers.feature.setMap(map);OpenLayers.Control.prototype.setMap.apply(this,arguments);},CLASS_NAME:"OpenLayers.Control.DragFeature"});OpenLayers.Control.PinchZoom=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,containerOrigin:null,pinchOrigin:null,currentCenter:null,autoActivate:true,initialize:function(options){OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Pinch(this,{start:this.pinchStart,move:this.pinchMove,done:this.pinchDone},this.handlerOptions);},activate:function(){var activated=OpenLayers.Control.prototype.activate.apply(this,arguments);if(activated){this.map.events.on({moveend:this.updateContainerOrigin,scope:this});this.updateContainerOrigin();} return activated;},deactivate:function(){var deactivated=OpenLayers.Control.prototype.deactivate.apply(this,arguments);if(this.map&&this.map.events){this.map.events.un({moveend:this.updateContainerOrigin,scope:this});} -return deactivated;},updateContainerOrigin:function(){var container=this.map.layerContainerDiv;this.containerOrigin={x:parseInt(container.style.left,10),y:parseInt(container.style.top,10)};},pinchStart:function(evt,pinchData){this.pinchOrigin=evt.xy;this.currentCenter=evt.xy;},pinchMove:function(evt,pinchData){var scale=pinchData.scale;var containerOrigin=this.containerOrigin;var pinchOrigin=this.pinchOrigin;var current=evt.xy;var dx=Math.round((current.x-pinchOrigin.x)+(scale-1)*(containerOrigin.x-pinchOrigin.x));var dy=Math.round((current.y-pinchOrigin.y)+(scale-1)*(containerOrigin.y-pinchOrigin.y));this.applyTransform("translate("+dx+"px, "+dy+"px) scale("+scale+")");this.currentCenter=current;},applyTransform:function(transform){var style=this.map.layerContainerDiv.style;style['-webkit-transform']=transform;style['-moz-transform']=transform;},pinchDone:function(evt,start,last){this.applyTransform("");var zoom=this.map.getZoomForResolution(this.map.getResolution()/last.scale,true);if(zoom!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var resolution=this.map.getResolutionForZoom(zoom);var location=this.map.getLonLatFromPixel(this.pinchOrigin);var zoomPixel=this.currentCenter;var size=this.map.getSize();location.lon+=resolution*((size.w/2)-zoomPixel.x);location.lat-=resolution*((size.h/2)-zoomPixel.y);this.map.setCenter(location,zoom);}},CLASS_NAME:"OpenLayers.Control.PinchZoom"});OpenLayers.Date={toISOString:(function(){if("toISOString"in Date.prototype){return function(date){return date.toISOString();};}else{function pad(num,len){var str=num+"";while(str.length<len){str="0"+str;} -return str;} -return function(date){var str;if(isNaN(date.getTime())){str="Invalid Date";}else{str=date.getUTCFullYear()+"-"+ -pad(date.getUTCMonth()+1,2)+"-"+ -pad(date.getUTCDate(),2)+"T"+ -pad(date.getUTCHours(),2)+":"+ -pad(date.getUTCMinutes(),2)+":"+ -pad(date.getUTCSeconds(),2)+"."+ -pad(date.getUTCMilliseconds(),3)+"Z";} -return str;};}})(),parse:function(str){var date;var match=str.match(/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{1,2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(?:[+-]\d{1,2}(?::(\d{2}))?)))?$/);if(match&&(match[1]||match[7])){var year=parseInt(match[1],10)||0;var month=(parseInt(match[2],10)-1)||0;var day=parseInt(match[3],10)||1;date=new Date(Date.UTC(year,month,day));var type=match[7];if(type){var hours=parseInt(match[4],10);var minutes=parseInt(match[5],10);var secFrac=parseFloat(match[6]);var seconds=secFrac|0;var milliseconds=Math.round(1000*(secFrac-seconds));date.setUTCHours(hours,minutes,seconds,milliseconds);if(type!=="Z"){var hoursOffset=parseInt(type,10);var minutesOffset=parseInt(match[8],10)||0;var offset=-1000*(60*(hoursOffset*60)+minutesOffset*60);date=new Date(date.getTime()+offset);}}}else{date=new Date("invalid");} -return date;}};OpenLayers.Layer.SphericalMercator={getExtent:function(){var extent=null;if(this.sphericalMercator){extent=this.map.calculateBounds();}else{extent=OpenLayers.Layer.FixedZoomLevels.prototype.getExtent.apply(this);} -return extent;},getLonLatFromViewPortPx:function(viewPortPx){return OpenLayers.Layer.prototype.getLonLatFromViewPortPx.apply(this,arguments);},getViewPortPxFromLonLat:function(lonlat){return OpenLayers.Layer.prototype.getViewPortPxFromLonLat.apply(this,arguments);},initMercatorParameters:function(){this.RESOLUTIONS=[];var maxResolution=156543.03390625;for(var zoom=0;zoom<=this.MAX_ZOOM_LEVEL;++zoom){this.RESOLUTIONS[zoom]=maxResolution/Math.pow(2,zoom);} -this.units="m";this.projection=this.projection||"EPSG:900913";},forwardMercator:function(lon,lat){var x=lon*20037508.34/180;var y=Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y=y*20037508.34/180;return new OpenLayers.LonLat(x,y);},inverseMercator:function(x,y){var lon=(x/20037508.34)*180;var lat=(y/20037508.34)*180;lat=180/Math.PI*(2*Math.atan(Math.exp(lat*Math.PI/180))-Math.PI/2);return new OpenLayers.LonLat(lon,lat);},projectForward:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.forwardMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;},projectInverse:function(point){var lonlat=OpenLayers.Layer.SphericalMercator.inverseMercator(point.x,point.y);point.x=lonlat.lon;point.y=lonlat.lat;return point;}};(function(){var codes=["EPSG:900913","EPSG:3857","EPSG:102113","EPSG:102100"];var add=OpenLayers.Projection.addTransform;var merc=OpenLayers.Layer.SphericalMercator;var same=OpenLayers.Projection.nullTransform;var i,len,code,other,j;for(i=0,len=codes.length;i<len;++i){code=codes[i];add("EPSG:4326",code,merc.projectForward);add(code,"EPSG:4326",merc.projectInverse);for(j=i+1;j<len;++j){other=codes[j];add(code,other,same);add(other,code,same);}}})();OpenLayers.Format.KML=OpenLayers.Class(OpenLayers.Format.XML,{namespaces:{kml:"http://www.opengis.net/kml/2.2",gx:"http://www.google.com/kml/ext/2.2"},kmlns:"http://earth.google.com/kml/2.0",placemarksDesc:"No description available",foldersName:"OpenLayers export",foldersDesc:"Exported on "+new Date(),extractAttributes:true,extractStyles:false,extractTracks:false,trackAttributes:null,internalns:null,features:null,styles:null,styleBaseUrl:"",fetched:null,maxDepth:0,initialize:function(options){this.regExes={trimSpace:(/^\s*|\s*$/g),removeSpace:(/\s*/g),splitSpace:(/\s+/),trimComma:(/\s*,\s*/g),kmlColor:(/(\w{2})(\w{2})(\w{2})(\w{2})/),kmlIconPalette:(/root:\/\/icons\/palette-(\d+)(\.\w+)/),straightBracket:(/\$\[(.*?)\]/g)};this.externalProjection=new OpenLayers.Projection("EPSG:4326");OpenLayers.Format.XML.prototype.initialize.apply(this,[options]);},read:function(data){this.features=[];this.styles={};this.fetched={};var options={depth:0,styleBaseUrl:this.styleBaseUrl};return this.parseData(data,options);},parseData:function(data,options){if(typeof data=="string"){data=OpenLayers.Format.XML.prototype.read.apply(this,[data]);} -var types=["Link","NetworkLink","Style","StyleMap","Placemark"];for(var i=0,len=types.length;i<len;++i){var type=types[i];var nodes=this.getElementsByTagNameNS(data,"*",type);if(nodes.length==0){continue;} -switch(type.toLowerCase()){case"link":case"networklink":this.parseLinks(nodes,options);break;case"style":if(this.extractStyles){this.parseStyles(nodes,options);} -break;case"stylemap":if(this.extractStyles){this.parseStyleMaps(nodes,options);} -break;case"placemark":this.parseFeatures(nodes,options);break;}} -return this.features;},parseLinks:function(nodes,options){if(options.depth>=this.maxDepth){return false;} -var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;for(var i=0,len=nodes.length;i<len;i++){var href=this.parseProperty(nodes[i],"*","href");if(href&&!this.fetched[href]){this.fetched[href]=true;var data=this.fetchLink(href);if(data){this.parseData(data,newOptions);}}}},fetchLink:function(href){var request=OpenLayers.Request.GET({url:href,async:false});if(request){return request.responseText;}},parseStyles:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var style=this.parseStyle(nodes[i]);if(style){var styleName=(options.styleBaseUrl||"")+"#"+style.id;this.styles[styleName]=style;}}},parseKmlColor:function(kmlColor){var color=null;if(kmlColor){var matches=kmlColor.match(this.regExes.kmlColor);if(matches){color={color:'#'+matches[4]+matches[3]+matches[2],opacity:parseInt(matches[1],16)/255};}} -return color;},parseStyle:function(node){var style={};var types=["LineStyle","PolyStyle","IconStyle","BalloonStyle","LabelStyle"];var type,styleTypeNode,nodeList,geometry,parser;for(var i=0,len=types.length;i<len;++i){type=types[i];styleTypeNode=this.getElementsByTagNameNS(node,"*",type)[0];if(!styleTypeNode){continue;} -switch(type.toLowerCase()){case"linestyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["strokeColor"]=color.color;style["strokeOpacity"]=color.opacity;} -var width=this.parseProperty(styleTypeNode,"*","width");if(width){style["strokeWidth"]=width;} -break;case"polystyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fillOpacity"]=color.opacity;style["fillColor"]=color.color;} -var fill=this.parseProperty(styleTypeNode,"*","fill");if(fill=="0"){style["fillColor"]="none";} -var outline=this.parseProperty(styleTypeNode,"*","outline");if(outline=="0"){style["strokeWidth"]="0";} -break;case"iconstyle":var scale=parseFloat(this.parseProperty(styleTypeNode,"*","scale")||1);var width=32*scale;var height=32*scale;var iconNode=this.getElementsByTagNameNS(styleTypeNode,"*","Icon")[0];if(iconNode){var href=this.parseProperty(iconNode,"*","href");if(href){var w=this.parseProperty(iconNode,"*","w");var h=this.parseProperty(iconNode,"*","h");var google="http://maps.google.com/mapfiles/kml";if(OpenLayers.String.startsWith(href,google)&&!w&&!h){w=64;h=64;scale=scale/2;} -w=w||h;h=h||w;if(w){width=parseInt(w)*scale;} -if(h){height=parseInt(h)*scale;} -var matches=href.match(this.regExes.kmlIconPalette);if(matches){var palette=matches[1];var file_extension=matches[2];var x=this.parseProperty(iconNode,"*","x");var y=this.parseProperty(iconNode,"*","y");var posX=x?x/32:0;var posY=y?(7-y/32):7;var pos=posY*8+posX;href="http://maps.google.com/mapfiles/kml/pal" -+palette+"/icon"+pos+file_extension;} -style["graphicOpacity"]=1;style["externalGraphic"]=href;}} -var hotSpotNode=this.getElementsByTagNameNS(styleTypeNode,"*","hotSpot")[0];if(hotSpotNode){var x=parseFloat(hotSpotNode.getAttribute("x"));var y=parseFloat(hotSpotNode.getAttribute("y"));var xUnits=hotSpotNode.getAttribute("xunits");if(xUnits=="pixels"){style["graphicXOffset"]=-x*scale;} -else if(xUnits=="insetPixels"){style["graphicXOffset"]=-width+(x*scale);} -else if(xUnits=="fraction"){style["graphicXOffset"]=-width*x;} -var yUnits=hotSpotNode.getAttribute("yunits");if(yUnits=="pixels"){style["graphicYOffset"]=-height+(y*scale)+1;} -else if(yUnits=="insetPixels"){style["graphicYOffset"]=-(y*scale)+1;} -else if(yUnits=="fraction"){style["graphicYOffset"]=-height*(1-y)+1;}} -style["graphicWidth"]=width;style["graphicHeight"]=height;break;case"balloonstyle":var balloonStyle=OpenLayers.Util.getXmlNodeValue(styleTypeNode);if(balloonStyle){style["balloonStyle"]=balloonStyle.replace(this.regExes.straightBracket,"${$1}");} -break;case"labelstyle":var kmlColor=this.parseProperty(styleTypeNode,"*","color");var color=this.parseKmlColor(kmlColor);if(color){style["fontColor"]=color.color;style["fontOpacity"]=color.opacity;} -break;default:}} -if(!style["strokeColor"]&&style["fillColor"]){style["strokeColor"]=style["fillColor"];} -var id=node.getAttribute("id");if(id&&style){style.id=id;} -return style;},parseStyleMaps:function(nodes,options){for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];var pairs=this.getElementsByTagNameNS(node,"*","Pair");var id=node.getAttribute("id");for(var j=0,jlen=pairs.length;j<jlen;j++){var pair=pairs[j];var key=this.parseProperty(pair,"*","key");var styleUrl=this.parseProperty(pair,"*","styleUrl");if(styleUrl&&key=="normal"){this.styles[(options.styleBaseUrl||"")+"#"+id]=this.styles[(options.styleBaseUrl||"")+styleUrl];} -if(styleUrl&&key=="highlight"){}}}},parseFeatures:function(nodes,options){var features=[];for(var i=0,len=nodes.length;i<len;i++){var featureNode=nodes[i];var feature=this.parseFeature.apply(this,[featureNode]);if(feature){if(this.extractStyles&&feature.attributes&&feature.attributes.styleUrl){feature.style=this.getStyle(feature.attributes.styleUrl,options);} -if(this.extractStyles){var inlineStyleNode=this.getElementsByTagNameNS(featureNode,"*","Style")[0];if(inlineStyleNode){var inlineStyle=this.parseStyle(inlineStyleNode);if(inlineStyle){feature.style=OpenLayers.Util.extend(feature.style,inlineStyle);}}} -if(this.extractTracks){var tracks=this.getElementsByTagNameNS(featureNode,this.namespaces.gx,"Track");if(tracks&&tracks.length>0){var track=tracks[0];var container={features:[],feature:feature};this.readNode(track,container);if(container.features.length>0){features.push.apply(features,container.features);}}}else{features.push(feature);}}else{throw"Bad Placemark: "+i;}} -this.features=this.features.concat(features);},readers:{"kml":{"when":function(node,container){container.whens.push(OpenLayers.Date.parse(this.getChildValue(node)));},"_trackPointAttribute":function(node,container){var name=node.nodeName.split(":").pop();container.attributes[name].push(this.getChildValue(node));}},"gx":{"Track":function(node,container){var obj={whens:[],points:[],angles:[]};if(this.trackAttributes){var name;obj.attributes={};for(var i=0,ii=this.trackAttributes.length;i<ii;++i){name=this.trackAttributes[i];obj.attributes[name]=[];if(!(name in this.readers.kml)){this.readers.kml[name]=this.readers.kml._trackPointAttribute;}}} -this.readChildNodes(node,obj);if(obj.whens.length!==obj.points.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:coord ("+obj.points.length+") elements.");} -var hasAngles=obj.angles.length>0;if(hasAngles&&obj.whens.length!==obj.angles.length){throw new Error("gx:Track with unequal number of when ("+obj.whens.length+") and gx:angles ("+obj.angles.length+") elements.");} -var feature,point,angles;for(var i=0,ii=obj.whens.length;i<ii;++i){feature=container.feature.clone();feature.fid=container.feature.fid||container.feature.id;point=obj.points[i];feature.geometry=point;if("z"in point){feature.attributes.altitude=point.z;} -if(this.internalProjection&&this.externalProjection){feature.geometry.transform(this.externalProjection,this.internalProjection);} -if(this.trackAttributes){for(var j=0,jj=this.trackAttributes.length;j<jj;++j){feature.attributes[name]=obj.attributes[this.trackAttributes[j]][i];}} -feature.attributes.when=obj.whens[i];feature.attributes.trackId=container.feature.id;if(hasAngles){angles=obj.angles[i];feature.attributes.heading=parseFloat(angles[0]);feature.attributes.tilt=parseFloat(angles[1]);feature.attributes.roll=parseFloat(angles[2]);} -container.features.push(feature);}},"coord":function(node,container){var str=this.getChildValue(node);var coords=str.replace(this.regExes.trimSpace,"").split(/\s+/);var point=new OpenLayers.Geometry.Point(coords[0],coords[1]);if(coords.length>2){point.z=parseFloat(coords[2]);} -container.points.push(point);},"angles":function(node,container){var str=this.getChildValue(node);var parts=str.replace(this.regExes.trimSpace,"").split(/\s+/);container.angles.push(parts);}}},parseFeature:function(node){var order=["MultiGeometry","Polygon","LineString","Point"];var type,nodeList,geometry,parser;for(var i=0,len=order.length;i<len;++i){type=order[i];this.internalns=node.namespaceURI?node.namespaceURI:this.kmlns;nodeList=this.getElementsByTagNameNS(node,this.internalns,type);if(nodeList.length>0){var parser=this.parseGeometry[type.toLowerCase()];if(parser){geometry=parser.apply(this,[nodeList[0]]);if(this.internalProjection&&this.externalProjection){geometry.transform(this.externalProjection,this.internalProjection);}}else{OpenLayers.Console.error(OpenLayers.i18n("unsupportedGeometryType",{'geomType':type}));} -break;}} -var attributes;if(this.extractAttributes){attributes=this.parseAttributes(node);} -var feature=new OpenLayers.Feature.Vector(geometry,attributes);var fid=node.getAttribute("id")||node.getAttribute("name");if(fid!=null){feature.fid=fid;} -return feature;},getStyle:function(styleUrl,options){var styleBaseUrl=OpenLayers.Util.removeTail(styleUrl);var newOptions=OpenLayers.Util.extend({},options);newOptions.depth++;newOptions.styleBaseUrl=styleBaseUrl;if(!this.styles[styleUrl]&&!OpenLayers.String.startsWith(styleUrl,"#")&&newOptions.depth<=this.maxDepth&&!this.fetched[styleBaseUrl]){var data=this.fetchLink(styleBaseUrl);if(data){this.parseData(data,newOptions);}} -var style=OpenLayers.Util.extend({},this.styles[styleUrl]);return style;},parseGeometry:{point:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var coords=[];if(nodeList.length>0){var coordString=nodeList[0].firstChild.nodeValue;coordString=coordString.replace(this.regExes.removeSpace,"");coords=coordString.split(",");} -var point=null;if(coords.length>1){if(coords.length==2){coords[2]=null;} -point=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad coordinate string: "+coordString;} -return point;},linestring:function(node,ring){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"coordinates");var line=null;if(nodeList.length>0){var coordString=this.getChildValue(nodeList[0]);coordString=coordString.replace(this.regExes.trimSpace,"");coordString=coordString.replace(this.regExes.trimComma,",");var pointList=coordString.split(this.regExes.splitSpace);var numPoints=pointList.length;var points=new Array(numPoints);var coords,numCoords;for(var i=0;i<numPoints;++i){coords=pointList[i].split(",");numCoords=coords.length;if(numCoords>1){if(coords.length==2){coords[2]=null;} -points[i]=new OpenLayers.Geometry.Point(coords[0],coords[1],coords[2]);}else{throw"Bad LineString point coordinates: "+ -pointList[i];}} -if(numPoints){if(ring){line=new OpenLayers.Geometry.LinearRing(points);}else{line=new OpenLayers.Geometry.LineString(points);}}else{throw"Bad LineString coordinates: "+coordString;}} -return line;},polygon:function(node){var nodeList=this.getElementsByTagNameNS(node,this.internalns,"LinearRing");var numRings=nodeList.length;var components=new Array(numRings);if(numRings>0){var ring;for(var i=0,len=nodeList.length;i<len;++i){ring=this.parseGeometry.linestring.apply(this,[nodeList[i],true]);if(ring){components[i]=ring;}else{throw"Bad LinearRing geometry: "+i;}}} -return new OpenLayers.Geometry.Polygon(components);},multigeometry:function(node){var child,parser;var parts=[];var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){var type=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var parser=this.parseGeometry[type.toLowerCase()];if(parser){parts.push(parser.apply(this,[child]));}}} -return new OpenLayers.Geometry.Collection(parts);}},parseAttributes:function(node){var attributes={};var edNodes=node.getElementsByTagName("ExtendedData");if(edNodes.length){attributes=this.parseExtendedData(edNodes[0]);} -var child,grandchildren,grandchild;var children=node.childNodes;for(var i=0,len=children.length;i<len;++i){child=children[i];if(child.nodeType==1){grandchildren=child.childNodes;if(grandchildren.length>=1&&grandchildren.length<=3){var grandchild;switch(grandchildren.length){case 1:grandchild=grandchildren[0];break;case 2:var c1=grandchildren[0];var c2=grandchildren[1];grandchild=(c1.nodeType==3||c1.nodeType==4)?c1:c2;break;case 3:default:grandchild=grandchildren[1];break;} -if(grandchild.nodeType==3||grandchild.nodeType==4){var name=(child.prefix)?child.nodeName.split(":")[1]:child.nodeName;var value=OpenLayers.Util.getXmlNodeValue(grandchild);if(value){value=value.replace(this.regExes.trimSpace,"");attributes[name]=value;}}}}} -return attributes;},parseExtendedData:function(node){var attributes={};var i,len,data,key;var dataNodes=node.getElementsByTagName("Data");for(i=0,len=dataNodes.length;i<len;i++){data=dataNodes[i];key=data.getAttribute("name");var ed={};var valueNode=data.getElementsByTagName("value");if(valueNode.length){ed['value']=this.getChildValue(valueNode[0]);} -var nameNode=data.getElementsByTagName("displayName");if(nameNode.length){ed['displayName']=this.getChildValue(nameNode[0]);} -attributes[key]=ed;} -var simpleDataNodes=node.getElementsByTagName("SimpleData");for(i=0,len=simpleDataNodes.length;i<len;i++){var ed={};data=simpleDataNodes[i];key=data.getAttribute("name");ed['value']=this.getChildValue(data);ed['displayName']=key;attributes[key]=ed;} -return attributes;},parseProperty:function(xmlNode,namespace,tagName){var value;var nodeList=this.getElementsByTagNameNS(xmlNode,namespace,tagName);try{value=OpenLayers.Util.getXmlNodeValue(nodeList[0]);}catch(e){value=null;} -return value;},write:function(features){if(!(OpenLayers.Util.isArray(features))){features=[features];} -var kml=this.createElementNS(this.kmlns,"kml");var folder=this.createFolderXML();for(var i=0,len=features.length;i<len;++i){folder.appendChild(this.createPlacemarkXML(features[i]));} -kml.appendChild(folder);return OpenLayers.Format.XML.prototype.write.apply(this,[kml]);},createFolderXML:function(){var folder=this.createElementNS(this.kmlns,"Folder");if(this.foldersName){var folderName=this.createElementNS(this.kmlns,"name");var folderNameText=this.createTextNode(this.foldersName);folderName.appendChild(folderNameText);folder.appendChild(folderName);} -if(this.foldersDesc){var folderDesc=this.createElementNS(this.kmlns,"description");var folderDescText=this.createTextNode(this.foldersDesc);folderDesc.appendChild(folderDescText);folder.appendChild(folderDesc);} -return folder;},createPlacemarkXML:function(feature){var placemarkName=this.createElementNS(this.kmlns,"name");var name=feature.style&&feature.style.label?feature.style.label:feature.attributes.name||feature.id;placemarkName.appendChild(this.createTextNode(name));var placemarkDesc=this.createElementNS(this.kmlns,"description");var desc=feature.attributes.description||this.placemarksDesc;placemarkDesc.appendChild(this.createTextNode(desc));var placemarkNode=this.createElementNS(this.kmlns,"Placemark");if(feature.fid!=null){placemarkNode.setAttribute("id",feature.fid);} -placemarkNode.appendChild(placemarkName);placemarkNode.appendChild(placemarkDesc);var geometryNode=this.buildGeometryNode(feature.geometry);placemarkNode.appendChild(geometryNode);return placemarkNode;},buildGeometryNode:function(geometry){var className=geometry.CLASS_NAME;var type=className.substring(className.lastIndexOf(".")+1);var builder=this.buildGeometry[type.toLowerCase()];var node=null;if(builder){node=builder.apply(this,[geometry]);} -return node;},buildGeometry:{point:function(geometry){var kml=this.createElementNS(this.kmlns,"Point");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multipoint:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linestring:function(geometry){var kml=this.createElementNS(this.kmlns,"LineString");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},multilinestring:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},linearring:function(geometry){var kml=this.createElementNS(this.kmlns,"LinearRing");kml.appendChild(this.buildCoordinatesNode(geometry));return kml;},polygon:function(geometry){var kml=this.createElementNS(this.kmlns,"Polygon");var rings=geometry.components;var ringMember,ringGeom,type;for(var i=0,len=rings.length;i<len;++i){type=(i==0)?"outerBoundaryIs":"innerBoundaryIs";ringMember=this.createElementNS(this.kmlns,type);ringGeom=this.buildGeometry.linearring.apply(this,[rings[i]]);ringMember.appendChild(ringGeom);kml.appendChild(ringMember);} -return kml;},multipolygon:function(geometry){return this.buildGeometry.collection.apply(this,[geometry]);},collection:function(geometry){var kml=this.createElementNS(this.kmlns,"MultiGeometry");var child;for(var i=0,len=geometry.components.length;i<len;++i){child=this.buildGeometryNode.apply(this,[geometry.components[i]]);if(child){kml.appendChild(child);}} -return kml;}},buildCoordinatesNode:function(geometry){var coordinatesNode=this.createElementNS(this.kmlns,"coordinates");var path;var points=geometry.components;if(points){var point;var numPoints=points.length;var parts=new Array(numPoints);for(var i=0;i<numPoints;++i){point=points[i];parts[i]=this.buildCoordinates(point);} -path=parts.join(" ");}else{path=this.buildCoordinates(geometry);} -var txtNode=this.createTextNode(path);coordinatesNode.appendChild(txtNode);return coordinatesNode;},buildCoordinates:function(point){if(this.internalProjection&&this.externalProjection){point=point.clone();point.transform(this.internalProjection,this.externalProjection);} -return point.x+","+point.y;},CLASS_NAME:"OpenLayers.Format.KML"});OpenLayers.Strategy.BBOX=OpenLayers.Class(OpenLayers.Strategy,{bounds:null,resolution:null,ratio:2,resFactor:null,response:null,activate:function(){var activated=OpenLayers.Strategy.prototype.activate.call(this);if(activated){this.layer.events.on({"moveend":this.update,scope:this});this.layer.events.on({"refresh":this.update,scope:this});if(this.layer.visibility===true&&this.layer.inRange===true){this.update();}else{this.layer.events.on({"visibilitychanged":this.update,scope:this});}} -return activated;},deactivate:function(){var deactivated=OpenLayers.Strategy.prototype.deactivate.call(this);if(deactivated){this.layer.events.un({"moveend":this.update,"refresh":this.update,"visibilitychanged":this.update,scope:this});} -return deactivated;},update:function(options){var mapBounds=this.getMapBounds();if(mapBounds!==null&&((options&&options.force)||this.invalidBounds(mapBounds))){this.calculateBounds(mapBounds);this.resolution=this.layer.map.getResolution();this.triggerRead(options);}},getMapBounds:function(){if(this.layer.map===null){return null;} -var bounds=this.layer.map.getExtent();if(bounds&&!this.layer.projection.equals(this.layer.map.getProjectionObject())){bounds=bounds.clone().transform(this.layer.map.getProjectionObject(),this.layer.projection);} -return bounds;},invalidBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();} -var invalid=!this.bounds||!this.bounds.containsBounds(mapBounds);if(!invalid&&this.resFactor){var ratio=this.resolution/this.layer.map.getResolution();invalid=(ratio>=this.resFactor||ratio<=(1/this.resFactor));} -return invalid;},calculateBounds:function(mapBounds){if(!mapBounds){mapBounds=this.getMapBounds();} -var center=mapBounds.getCenterLonLat();var dataWidth=mapBounds.getWidth()*this.ratio;var dataHeight=mapBounds.getHeight()*this.ratio;this.bounds=new OpenLayers.Bounds(center.lon-(dataWidth/2),center.lat-(dataHeight/2),center.lon+(dataWidth/2),center.lat+(dataHeight/2));},triggerRead:function(options){if(this.response){this.layer.protocol.abort(this.response);this.layer.events.triggerEvent("loadend");} -this.layer.events.triggerEvent("loadstart");this.response=this.layer.protocol.read(OpenLayers.Util.applyDefaults({filter:this.createFilter(),callback:this.merge,scope:this},options));},createFilter:function(){var filter=new OpenLayers.Filter.Spatial({type:OpenLayers.Filter.Spatial.BBOX,value:this.bounds,projection:this.layer.projection});if(this.layer.filter){filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND,filters:[this.layer.filter,filter]});} -return filter;},merge:function(resp){this.layer.destroyFeatures();var features=resp.features;if(features&&features.length>0){var remote=this.layer.projection;var local=this.layer.map.getProjectionObject();if(!local.equals(remote)){var geom;for(var i=0,len=features.length;i<len;++i){geom=features[i].geometry;if(geom){geom.transform(remote,local);}}} -this.layer.addFeatures(features);} -this.response=null;this.layer.events.triggerEvent("loadend");},CLASS_NAME:"OpenLayers.Strategy.BBOX"}); +return deactivated;},updateContainerOrigin:function(){var container=this.map.layerContainerDiv;this.containerOrigin={x:parseInt(container.style.left,10),y:parseInt(container.style.top,10)};},pinchStart:function(evt,pinchData){this.pinchOrigin=evt.xy;this.currentCenter=evt.xy;},pinchMove:function(evt,pinchData){var scale=pinchData.scale;var containerOrigin=this.containerOrigin;var pinchOrigin=this.pinchOrigin;var current=evt.xy;var dx=Math.round((current.x-pinchOrigin.x)+(scale-1)*(containerOrigin.x-pinchOrigin.x));var dy=Math.round((current.y-pinchOrigin.y)+(scale-1)*(containerOrigin.y-pinchOrigin.y));this.applyTransform("translate("+dx+"px, "+dy+"px) scale("+scale+")");this.currentCenter=current;},applyTransform:function(transform){var style=this.map.layerContainerDiv.style;style['-webkit-transform']=transform;style['-moz-transform']=transform;},pinchDone:function(evt,start,last){this.applyTransform("");var zoom=this.map.getZoomForResolution(this.map.getResolution()/last.scale,true);if(zoom!==this.map.getZoom()||!this.currentCenter.equals(this.pinchOrigin)){var resolution=this.map.getResolutionForZoom(zoom);var location=this.map.getLonLatFromPixel(this.pinchOrigin);var zoomPixel=this.currentCenter;var size=this.map.getSize();location.lon+=resolution*((size.w/2)-zoomPixel.x);location.lat-=resolution*((size.h/2)-zoomPixel.y);this.map.setCenter(location,zoom);}},CLASS_NAME:"OpenLayers.Control.PinchZoom"}); diff --git a/web/js/fancybox/blank.gif b/web/js/fancybox/blank.gif Binary files differnew file mode 100644 index 000000000..35d42e808 --- /dev/null +++ b/web/js/fancybox/blank.gif diff --git a/web/js/fancybox/fancy_close.png b/web/js/fancybox/fancy_close.png Binary files differnew file mode 100644 index 000000000..07035307a --- /dev/null +++ b/web/js/fancybox/fancy_close.png diff --git a/web/js/fancybox/fancy_loading.png b/web/js/fancybox/fancy_loading.png Binary files differnew file mode 100644 index 000000000..250301796 --- /dev/null +++ b/web/js/fancybox/fancy_loading.png diff --git a/web/js/fancybox/fancy_nav_left.png b/web/js/fancybox/fancy_nav_left.png Binary files differnew file mode 100644 index 000000000..ebaa6a4fd --- /dev/null +++ b/web/js/fancybox/fancy_nav_left.png diff --git a/web/js/fancybox/fancy_nav_right.png b/web/js/fancybox/fancy_nav_right.png Binary files differnew file mode 100644 index 000000000..873294e96 --- /dev/null +++ b/web/js/fancybox/fancy_nav_right.png diff --git a/web/js/fancybox/fancy_shadow_e.png b/web/js/fancybox/fancy_shadow_e.png Binary files differnew file mode 100644 index 000000000..2eda08936 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_e.png diff --git a/web/js/fancybox/fancy_shadow_n.png b/web/js/fancybox/fancy_shadow_n.png Binary files differnew file mode 100644 index 000000000..69aa10e23 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_n.png diff --git a/web/js/fancybox/fancy_shadow_ne.png b/web/js/fancybox/fancy_shadow_ne.png Binary files differnew file mode 100644 index 000000000..79f6980a3 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_ne.png diff --git a/web/js/fancybox/fancy_shadow_nw.png b/web/js/fancybox/fancy_shadow_nw.png Binary files differnew file mode 100644 index 000000000..7182cd938 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_nw.png diff --git a/web/js/fancybox/fancy_shadow_s.png b/web/js/fancybox/fancy_shadow_s.png Binary files differnew file mode 100644 index 000000000..d8858bfb7 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_s.png diff --git a/web/js/fancybox/fancy_shadow_se.png b/web/js/fancybox/fancy_shadow_se.png Binary files differnew file mode 100644 index 000000000..541e3ffd3 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_se.png diff --git a/web/js/fancybox/fancy_shadow_sw.png b/web/js/fancybox/fancy_shadow_sw.png Binary files differnew file mode 100644 index 000000000..b451689fa --- /dev/null +++ b/web/js/fancybox/fancy_shadow_sw.png diff --git a/web/js/fancybox/fancy_shadow_w.png b/web/js/fancybox/fancy_shadow_w.png Binary files differnew file mode 100644 index 000000000..8a4e4a887 --- /dev/null +++ b/web/js/fancybox/fancy_shadow_w.png diff --git a/web/js/fancybox/fancy_title_left.png b/web/js/fancybox/fancy_title_left.png Binary files differnew file mode 100644 index 000000000..6049223d1 --- /dev/null +++ b/web/js/fancybox/fancy_title_left.png diff --git a/web/js/fancybox/fancy_title_main.png b/web/js/fancybox/fancy_title_main.png Binary files differnew file mode 100644 index 000000000..8044271f2 --- /dev/null +++ b/web/js/fancybox/fancy_title_main.png diff --git a/web/js/fancybox/fancy_title_over.png b/web/js/fancybox/fancy_title_over.png Binary files differnew file mode 100644 index 000000000..d9f458f4b --- /dev/null +++ b/web/js/fancybox/fancy_title_over.png diff --git a/web/js/fancybox/fancy_title_right.png b/web/js/fancybox/fancy_title_right.png Binary files differnew file mode 100644 index 000000000..e36d9db2a --- /dev/null +++ b/web/js/fancybox/fancy_title_right.png diff --git a/web/js/fancybox/fancybox-x.png b/web/js/fancybox/fancybox-x.png Binary files differnew file mode 100644 index 000000000..c2130f869 --- /dev/null +++ b/web/js/fancybox/fancybox-x.png diff --git a/web/js/fancybox/fancybox-y.png b/web/js/fancybox/fancybox-y.png Binary files differnew file mode 100644 index 000000000..7ef399b99 --- /dev/null +++ b/web/js/fancybox/fancybox-y.png diff --git a/web/js/fancybox/fancybox.png b/web/js/fancybox/fancybox.png Binary files differnew file mode 100644 index 000000000..65e14f68f --- /dev/null +++ b/web/js/fancybox/fancybox.png diff --git a/web/js/fancybox/jquery.easing-1.3.pack.js b/web/js/fancybox/jquery.easing-1.3.pack.js new file mode 100644 index 000000000..9028179e7 --- /dev/null +++ b/web/js/fancybox/jquery.easing-1.3.pack.js @@ -0,0 +1,72 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{})) + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.css b/web/js/fancybox/jquery.fancybox-1.3.4.css new file mode 100644 index 000000000..54c6f2479 --- /dev/null +++ b/web/js/fancybox/jquery.fancybox-1.3.4.css @@ -0,0 +1,359 @@ +/*
+ * FancyBox - jQuery Plugin
+ * Simple and fancy lightbox alternative
+ *
+ * Examples and documentation at: http://fancybox.net
+ *
+ * Copyright (c) 2008 - 2010 Janis Skarnelis
+ * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
+ *
+ * Version: 1.3.4 (11/11/2010)
+ * Requires: jQuery v1.3+
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+#fancybox-loading {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ margin-left: -20px;
+ cursor: pointer;
+ overflow: hidden;
+ z-index: 1104;
+ display: none;
+}
+
+#fancybox-loading div {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 480px;
+ background-image: url('fancybox.png');
+}
+
+#fancybox-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 1100;
+ display: none;
+}
+
+#fancybox-tmp {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ overflow: auto;
+ display: none;
+}
+
+#fancybox-wrap {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 20px;
+ z-index: 1101;
+ outline: none;
+ display: none;
+}
+
+#fancybox-outer {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ background: #fff;
+}
+
+#fancybox-content {
+ width: 0;
+ height: 0;
+ padding: 0;
+ outline: none;
+ position: relative;
+ overflow: hidden;
+ z-index: 1102;
+ border: 0px solid #fff;
+}
+
+#fancybox-hide-sel-frame {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: transparent;
+ z-index: 1101;
+}
+
+#fancybox-close {
+ position: absolute;
+ top: -15px;
+ right: -15px;
+ width: 30px;
+ height: 30px;
+ background: transparent url('fancybox.png') -40px 0px;
+ cursor: pointer;
+ z-index: 1103;
+ display: none;
+}
+
+#fancybox-error {
+ color: #444;
+ font: normal 12px/20px Arial;
+ padding: 14px;
+ margin: 0;
+}
+
+#fancybox-img {
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ margin: 0;
+ border: none;
+ outline: none;
+ line-height: 0;
+ vertical-align: top;
+}
+
+#fancybox-frame {
+ width: 100%;
+ height: 100%;
+ border: none;
+ display: block;
+}
+
+#fancybox-left, #fancybox-right {
+ position: absolute;
+ bottom: 0px;
+ height: 100%;
+ width: 35%;
+ cursor: pointer;
+ outline: none;
+ background: transparent url('blank.gif');
+ z-index: 1102;
+ display: none;
+}
+
+#fancybox-left {
+ left: 0px;
+}
+
+#fancybox-right {
+ right: 0px;
+}
+
+#fancybox-left-ico, #fancybox-right-ico {
+ position: absolute;
+ top: 50%;
+ left: -9999px;
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ cursor: pointer;
+ z-index: 1102;
+ display: block;
+}
+
+#fancybox-left-ico {
+ background-image: url('fancybox.png');
+ background-position: -40px -30px;
+}
+
+#fancybox-right-ico {
+ background-image: url('fancybox.png');
+ background-position: -40px -60px;
+}
+
+#fancybox-left:hover, #fancybox-right:hover {
+ visibility: visible; /* IE6 */
+}
+
+#fancybox-left:hover span {
+ left: 20px;
+}
+
+#fancybox-right:hover span {
+ left: auto;
+ right: 20px;
+}
+
+.fancybox-bg {
+ position: absolute;
+ padding: 0;
+ margin: 0;
+ border: 0;
+ width: 20px;
+ height: 20px;
+ z-index: 1001;
+}
+
+#fancybox-bg-n {
+ top: -20px;
+ left: 0;
+ width: 100%;
+ background-image: url('fancybox-x.png');
+}
+
+#fancybox-bg-ne {
+ top: -20px;
+ right: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -162px;
+}
+
+#fancybox-bg-e {
+ top: 0;
+ right: -20px;
+ height: 100%;
+ background-image: url('fancybox-y.png');
+ background-position: -20px 0px;
+}
+
+#fancybox-bg-se {
+ bottom: -20px;
+ right: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -182px;
+}
+
+#fancybox-bg-s {
+ bottom: -20px;
+ left: 0;
+ width: 100%;
+ background-image: url('fancybox-x.png');
+ background-position: 0px -20px;
+}
+
+#fancybox-bg-sw {
+ bottom: -20px;
+ left: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -142px;
+}
+
+#fancybox-bg-w {
+ top: 0;
+ left: -20px;
+ height: 100%;
+ background-image: url('fancybox-y.png');
+}
+
+#fancybox-bg-nw {
+ top: -20px;
+ left: -20px;
+ background-image: url('fancybox.png');
+ background-position: -40px -122px;
+}
+
+#fancybox-title {
+ font-family: Helvetica;
+ font-size: 12px;
+ z-index: 1102;
+}
+
+.fancybox-title-inside {
+ padding-bottom: 10px;
+ text-align: center;
+ color: #333;
+ background: #fff;
+ position: relative;
+}
+
+.fancybox-title-outside {
+ padding-top: 10px;
+ color: #fff;
+}
+
+.fancybox-title-over {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ color: #FFF;
+ text-align: left;
+}
+
+#fancybox-title-over {
+ padding: 10px;
+ background-image: url('fancy_title_over.png');
+ display: block;
+}
+
+.fancybox-title-float {
+ position: absolute;
+ left: 0;
+ bottom: -20px;
+ height: 32px;
+}
+
+#fancybox-title-float-wrap {
+ border: none;
+ border-collapse: collapse;
+ width: auto;
+}
+
+#fancybox-title-float-wrap td {
+ border: none;
+ white-space: nowrap;
+}
+
+#fancybox-title-float-left {
+ padding: 0 0 0 15px;
+ background: url('fancybox.png') -40px -90px no-repeat;
+}
+
+#fancybox-title-float-main {
+ color: #FFF;
+ line-height: 29px;
+ font-weight: bold;
+ padding: 0 0 3px 0;
+ background: url('fancybox-x.png') 0px -40px;
+}
+
+#fancybox-title-float-right {
+ padding: 0 0 0 15px;
+ background: url('fancybox.png') -55px -90px no-repeat;
+}
+
+/* IE6 */
+
+.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_close.png', sizingMethod='scale'); }
+
+.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_nav_left.png', sizingMethod='scale'); }
+.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_nav_right.png', sizingMethod='scale'); }
+
+.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
+.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_title_left.png', sizingMethod='scale'); }
+.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_title_main.png', sizingMethod='scale'); }
+.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_title_right.png', sizingMethod='scale'); }
+
+.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
+ height: expression(this.parentNode.clientHeight + "px");
+}
+
+#fancybox-loading.fancybox-ie6 {
+ position: absolute; margin-top: 0;
+ top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
+}
+
+#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_loading.png', sizingMethod='scale'); }
+
+/* IE6, IE7, IE8 */
+
+.fancybox-ie .fancybox-bg { background: transparent !important; }
+
+.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
+.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/js/fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.js b/web/js/fancybox/jquery.fancybox-1.3.4.js new file mode 100644 index 000000000..be7727537 --- /dev/null +++ b/web/js/fancybox/jquery.fancybox-1.3.4.js @@ -0,0 +1,1156 @@ +/*
+ * FancyBox - jQuery Plugin
+ * Simple and fancy lightbox alternative
+ *
+ * Examples and documentation at: http://fancybox.net
+ *
+ * Copyright (c) 2008 - 2010 Janis Skarnelis
+ * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
+ *
+ * Version: 1.3.4 (11/11/2010)
+ * Requires: jQuery v1.3+
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+;(function($) {
+ var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
+
+ selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
+
+ ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
+
+ loadingTimer, loadingFrame = 1,
+
+ titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
+
+ isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
+
+ /*
+ * Private methods
+ */
+
+ _abort = function() {
+ loading.hide();
+
+ imgPreloader.onerror = imgPreloader.onload = null;
+
+ if (ajaxLoader) {
+ ajaxLoader.abort();
+ }
+
+ tmp.empty();
+ },
+
+ _error = function() {
+ if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
+ loading.hide();
+ busy = false;
+ return;
+ }
+
+ selectedOpts.titleShow = false;
+
+ selectedOpts.width = 'auto';
+ selectedOpts.height = 'auto';
+
+ tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );
+
+ _process_inline();
+ },
+
+ _start = function() {
+ var obj = selectedArray[ selectedIndex ],
+ href,
+ type,
+ title,
+ str,
+ emb,
+ ret;
+
+ _abort();
+
+ selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
+
+ ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);
+
+ if (ret === false) {
+ busy = false;
+ return;
+ } else if (typeof ret == 'object') {
+ selectedOpts = $.extend(selectedOpts, ret);
+ }
+
+ title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';
+
+ if (obj.nodeName && !selectedOpts.orig) {
+ selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
+ }
+
+ if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
+ title = selectedOpts.orig.attr('alt');
+ }
+
+ href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;
+
+ if ((/^(?:javascript)/i).test(href) || href == '#') {
+ href = null;
+ }
+
+ if (selectedOpts.type) {
+ type = selectedOpts.type;
+
+ if (!href) {
+ href = selectedOpts.content;
+ }
+
+ } else if (selectedOpts.content) {
+ type = 'html';
+
+ } else if (href) {
+ if (href.match(imgRegExp)) {
+ type = 'image';
+
+ } else if (href.match(swfRegExp)) {
+ type = 'swf';
+
+ } else if ($(obj).hasClass("iframe")) {
+ type = 'iframe';
+
+ } else if (href.indexOf("#") === 0) {
+ type = 'inline';
+
+ } else {
+ type = 'ajax';
+ }
+ }
+
+ if (!type) {
+ _error();
+ return;
+ }
+
+ if (type == 'inline') {
+ obj = href.substr(href.indexOf("#"));
+ type = $(obj).length > 0 ? 'inline' : 'ajax';
+ }
+
+ selectedOpts.type = type;
+ selectedOpts.href = href;
+ selectedOpts.title = title;
+
+ if (selectedOpts.autoDimensions) {
+ if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
+ selectedOpts.width = 'auto';
+ selectedOpts.height = 'auto';
+ } else {
+ selectedOpts.autoDimensions = false;
+ }
+ }
+
+ if (selectedOpts.modal) {
+ selectedOpts.overlayShow = true;
+ selectedOpts.hideOnOverlayClick = false;
+ selectedOpts.hideOnContentClick = false;
+ selectedOpts.enableEscapeButton = false;
+ selectedOpts.showCloseButton = false;
+ }
+
+ selectedOpts.padding = parseInt(selectedOpts.padding, 10);
+ selectedOpts.margin = parseInt(selectedOpts.margin, 10);
+
+ tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
+
+ $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
+ $(this).replaceWith(content.children());
+ });
+
+ switch (type) {
+ case 'html' :
+ tmp.html( selectedOpts.content );
+ _process_inline();
+ break;
+
+ case 'inline' :
+ if ( $(obj).parent().is('#fancybox-content') === true) {
+ busy = false;
+ return;
+ }
+
+ $('<div class="fancybox-inline-tmp" />')
+ .hide()
+ .insertBefore( $(obj) )
+ .bind('fancybox-cleanup', function() {
+ $(this).replaceWith(content.children());
+ }).bind('fancybox-cancel', function() {
+ $(this).replaceWith(tmp.children());
+ });
+
+ $(obj).appendTo(tmp);
+
+ _process_inline();
+ break;
+
+ case 'image':
+ busy = false;
+
+ $.fancybox.showActivity();
+
+ imgPreloader = new Image();
+
+ imgPreloader.onerror = function() {
+ _error();
+ };
+
+ imgPreloader.onload = function() {
+ busy = true;
+
+ imgPreloader.onerror = imgPreloader.onload = null;
+
+ _process_image();
+ };
+
+ imgPreloader.src = href;
+ break;
+
+ case 'swf':
+ selectedOpts.scrolling = 'no';
+
+ str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
+ emb = '';
+
+ $.each(selectedOpts.swf, function(name, val) {
+ str += '<param name="' + name + '" value="' + val + '"></param>';
+ emb += ' ' + name + '="' + val + '"';
+ });
+
+ str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
+
+ tmp.html(str);
+
+ _process_inline();
+ break;
+
+ case 'ajax':
+ busy = false;
+
+ $.fancybox.showActivity();
+
+ selectedOpts.ajax.win = selectedOpts.ajax.success;
+
+ ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
+ url : href,
+ data : selectedOpts.ajax.data || {},
+ error : function(XMLHttpRequest, textStatus, errorThrown) {
+ if ( XMLHttpRequest.status > 0 ) {
+ _error();
+ }
+ },
+ success : function(data, textStatus, XMLHttpRequest) {
+ var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
+ if (o.status == 200) {
+ if ( typeof selectedOpts.ajax.win == 'function' ) {
+ ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);
+
+ if (ret === false) {
+ loading.hide();
+ return;
+ } else if (typeof ret == 'string' || typeof ret == 'object') {
+ data = ret;
+ }
+ }
+
+ tmp.html( data );
+ _process_inline();
+ }
+ }
+ }));
+
+ break;
+
+ case 'iframe':
+ _show();
+ break;
+ }
+ },
+
+ _process_inline = function() {
+ var
+ w = selectedOpts.width,
+ h = selectedOpts.height;
+
+ if (w.toString().indexOf('%') > -1) {
+ w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';
+
+ } else {
+ w = w == 'auto' ? 'auto' : w + 'px';
+ }
+
+ if (h.toString().indexOf('%') > -1) {
+ h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';
+
+ } else {
+ h = h == 'auto' ? 'auto' : h + 'px';
+ }
+
+ tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');
+
+ selectedOpts.width = tmp.width();
+ selectedOpts.height = tmp.height();
+
+ _show();
+ },
+
+ _process_image = function() {
+ selectedOpts.width = imgPreloader.width;
+ selectedOpts.height = imgPreloader.height;
+
+ $("<img />").attr({
+ 'id' : 'fancybox-img',
+ 'src' : imgPreloader.src,
+ 'alt' : selectedOpts.title
+ }).appendTo( tmp );
+
+ _show();
+ },
+
+ _show = function() {
+ var pos, equal;
+
+ loading.hide();
+
+ if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
+ $.event.trigger('fancybox-cancel');
+
+ busy = false;
+ return;
+ }
+
+ busy = true;
+
+ $(content.add( overlay )).unbind();
+
+ $(window).unbind("resize.fb scroll.fb");
+ $(document).unbind('keydown.fb');
+
+ if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
+ wrap.css('height', wrap.height());
+ }
+
+ currentArray = selectedArray;
+ currentIndex = selectedIndex;
+ currentOpts = selectedOpts;
+
+ if (currentOpts.overlayShow) {
+ overlay.css({
+ 'background-color' : currentOpts.overlayColor,
+ 'opacity' : currentOpts.overlayOpacity,
+ 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
+ 'height' : $(document).height()
+ });
+
+ if (!overlay.is(':visible')) {
+ if (isIE6) {
+ $('select:not(#fancybox-tmp select)').filter(function() {
+ return this.style.visibility !== 'hidden';
+ }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
+ this.style.visibility = 'inherit';
+ });
+ }
+
+ overlay.show();
+ }
+ } else {
+ overlay.hide();
+ }
+
+ final_pos = _get_zoom_to();
+
+ _process_title();
+
+ if (wrap.is(":visible")) {
+ $( close.add( nav_left ).add( nav_right ) ).hide();
+
+ pos = wrap.position(),
+
+ start_pos = {
+ top : pos.top,
+ left : pos.left,
+ width : wrap.width(),
+ height : wrap.height()
+ };
+
+ equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
+
+ content.fadeTo(currentOpts.changeFade, 0.3, function() {
+ var finish_resizing = function() {
+ content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
+ };
+
+ $.event.trigger('fancybox-change');
+
+ content
+ .empty()
+ .removeAttr('filter')
+ .css({
+ 'border-width' : currentOpts.padding,
+ 'width' : final_pos.width - currentOpts.padding * 2,
+ 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
+ });
+
+ if (equal) {
+ finish_resizing();
+
+ } else {
+ fx.prop = 0;
+
+ $(fx).animate({prop: 1}, {
+ duration : currentOpts.changeSpeed,
+ easing : currentOpts.easingChange,
+ step : _draw,
+ complete : finish_resizing
+ });
+ }
+ });
+
+ return;
+ }
+
+ wrap.removeAttr("style");
+
+ content.css('border-width', currentOpts.padding);
+
+ if (currentOpts.transitionIn == 'elastic') {
+ start_pos = _get_zoom_from();
+
+ content.html( tmp.contents() );
+
+ wrap.show();
+
+ if (currentOpts.opacity) {
+ final_pos.opacity = 0;
+ }
+
+ fx.prop = 0;
+
+ $(fx).animate({prop: 1}, {
+ duration : currentOpts.speedIn,
+ easing : currentOpts.easingIn,
+ step : _draw,
+ complete : _finish
+ });
+
+ return;
+ }
+
+ if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {
+ title.show();
+ }
+
+ content
+ .css({
+ 'width' : final_pos.width - currentOpts.padding * 2,
+ 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
+ })
+ .html( tmp.contents() );
+
+ wrap
+ .css(final_pos)
+ .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
+ },
+
+ _format_title = function(title) {
+ if (title && title.length) {
+ if (currentOpts.titlePosition == 'float') {
+ return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>';
+ }
+
+ return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>';
+ }
+
+ return false;
+ },
+
+ _process_title = function() {
+ titleStr = currentOpts.title || '';
+ titleHeight = 0;
+
+ title
+ .empty()
+ .removeAttr('style')
+ .removeClass();
+
+ if (currentOpts.titleShow === false) {
+ title.hide();
+ return;
+ }
+
+ titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
+
+ if (!titleStr || titleStr === '') {
+ title.hide();
+ return;
+ }
+
+ title
+ .addClass('fancybox-title-' + currentOpts.titlePosition)
+ .html( titleStr )
+ .appendTo( 'body' )
+ .show();
+
+ switch (currentOpts.titlePosition) {
+ case 'inside':
+ title
+ .css({
+ 'width' : final_pos.width - (currentOpts.padding * 2),
+ 'marginLeft' : currentOpts.padding,
+ 'marginRight' : currentOpts.padding
+ });
+
+ titleHeight = title.outerHeight(true);
+
+ title.appendTo( outer );
+
+ final_pos.height += titleHeight;
+ break;
+
+ case 'over':
+ title
+ .css({
+ 'marginLeft' : currentOpts.padding,
+ 'width' : final_pos.width - (currentOpts.padding * 2),
+ 'bottom' : currentOpts.padding
+ })
+ .appendTo( outer );
+ break;
+
+ case 'float':
+ title
+ .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
+ .appendTo( wrap );
+ break;
+
+ default:
+ title
+ .css({
+ 'width' : final_pos.width - (currentOpts.padding * 2),
+ 'paddingLeft' : currentOpts.padding,
+ 'paddingRight' : currentOpts.padding
+ })
+ .appendTo( wrap );
+ break;
+ }
+
+ title.hide();
+ },
+
+ _set_navigation = function() {
+ if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
+ $(document).bind('keydown.fb', function(e) {
+ if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
+ e.preventDefault();
+ $.fancybox.close();
+
+ } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
+ e.preventDefault();
+ $.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
+ }
+ });
+ }
+
+ if (!currentOpts.showNavArrows) {
+ nav_left.hide();
+ nav_right.hide();
+ return;
+ }
+
+ if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
+ nav_left.show();
+ }
+
+ if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
+ nav_right.show();
+ }
+ },
+
+ _finish = function () {
+ if (!$.support.opacity) {
+ content.get(0).style.removeAttribute('filter');
+ wrap.get(0).style.removeAttribute('filter');
+ }
+
+ if (selectedOpts.autoDimensions) {
+ content.css('height', 'auto');
+ }
+
+ wrap.css('height', 'auto');
+
+ if (titleStr && titleStr.length) {
+ title.show();
+ }
+
+ if (currentOpts.showCloseButton) {
+ close.show();
+ }
+
+ _set_navigation();
+
+ if (currentOpts.hideOnContentClick) {
+ content.bind('click', $.fancybox.close);
+ }
+
+ if (currentOpts.hideOnOverlayClick) {
+ overlay.bind('click', $.fancybox.close);
+ }
+
+ $(window).bind("resize.fb", $.fancybox.resize);
+
+ if (currentOpts.centerOnScroll) {
+ $(window).bind("scroll.fb", $.fancybox.center);
+ }
+
+ if (currentOpts.type == 'iframe') {
+ $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
+ }
+
+ wrap.show();
+
+ busy = false;
+
+ $.fancybox.center();
+
+ currentOpts.onComplete(currentArray, currentIndex, currentOpts);
+
+ _preload_images();
+ },
+
+ _preload_images = function() {
+ var href,
+ objNext;
+
+ if ((currentArray.length -1) > currentIndex) {
+ href = currentArray[ currentIndex + 1 ].href;
+
+ if (typeof href !== 'undefined' && href.match(imgRegExp)) {
+ objNext = new Image();
+ objNext.src = href;
+ }
+ }
+
+ if (currentIndex > 0) {
+ href = currentArray[ currentIndex - 1 ].href;
+
+ if (typeof href !== 'undefined' && href.match(imgRegExp)) {
+ objNext = new Image();
+ objNext.src = href;
+ }
+ }
+ },
+
+ _draw = function(pos) {
+ var dim = {
+ width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
+ height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
+
+ top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
+ left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
+ };
+
+ if (typeof final_pos.opacity !== 'undefined') {
+ dim.opacity = pos < 0.5 ? 0.5 : pos;
+ }
+
+ wrap.css(dim);
+
+ content.css({
+ 'width' : dim.width - currentOpts.padding * 2,
+ 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
+ });
+ },
+
+ _get_viewport = function() {
+ return [
+ $(window).width() - (currentOpts.margin * 2),
+ $(window).height() - (currentOpts.margin * 2),
+ $(document).scrollLeft() + currentOpts.margin,
+ $(document).scrollTop() + currentOpts.margin
+ ];
+ },
+
+ _get_zoom_to = function () {
+ var view = _get_viewport(),
+ to = {},
+ resize = currentOpts.autoScale,
+ double_padding = currentOpts.padding * 2,
+ ratio;
+
+ if (currentOpts.width.toString().indexOf('%') > -1) {
+ to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
+ } else {
+ to.width = currentOpts.width + double_padding;
+ }
+
+ if (currentOpts.height.toString().indexOf('%') > -1) {
+ to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
+ } else {
+ to.height = currentOpts.height + double_padding;
+ }
+
+ if (resize && (to.width > view[0] || to.height > view[1])) {
+ if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
+ ratio = (currentOpts.width ) / (currentOpts.height );
+
+ if ((to.width ) > view[0]) {
+ to.width = view[0];
+ to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
+ }
+
+ if ((to.height) > view[1]) {
+ to.height = view[1];
+ to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
+ }
+
+ } else {
+ to.width = Math.min(to.width, view[0]);
+ to.height = Math.min(to.height, view[1]);
+ }
+ }
+
+ to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
+ to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);
+
+ return to;
+ },
+
+ _get_obj_pos = function(obj) {
+ var pos = obj.offset();
+
+ pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
+ pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;
+
+ pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
+ pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;
+
+ pos.width = obj.width();
+ pos.height = obj.height();
+
+ return pos;
+ },
+
+ _get_zoom_from = function() {
+ var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
+ from = {},
+ pos,
+ view;
+
+ if (orig && orig.length) {
+ pos = _get_obj_pos(orig);
+
+ from = {
+ width : pos.width + (currentOpts.padding * 2),
+ height : pos.height + (currentOpts.padding * 2),
+ top : pos.top - currentOpts.padding - 20,
+ left : pos.left - currentOpts.padding - 20
+ };
+
+ } else {
+ view = _get_viewport();
+
+ from = {
+ width : currentOpts.padding * 2,
+ height : currentOpts.padding * 2,
+ top : parseInt(view[3] + view[1] * 0.5, 10),
+ left : parseInt(view[2] + view[0] * 0.5, 10)
+ };
+ }
+
+ return from;
+ },
+
+ _animate_loading = function() {
+ if (!loading.is(':visible')){
+ clearInterval(loadingTimer);
+ return;
+ }
+
+ $('div', loading).css('top', (loadingFrame * -40) + 'px');
+
+ loadingFrame = (loadingFrame + 1) % 12;
+ };
+
+ /*
+ * Public methods
+ */
+
+ $.fn.fancybox = function(options) {
+ if (!$(this).length) {
+ return this;
+ }
+
+ $(this)
+ .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
+ .unbind('click.fb')
+ .bind('click.fb', function(e) {
+ e.preventDefault();
+
+ if (busy) {
+ return;
+ }
+
+ busy = true;
+
+ $(this).blur();
+
+ selectedArray = [];
+ selectedIndex = 0;
+
+ var rel = $(this).attr('rel') || '';
+
+ if (!rel || rel == '' || rel === 'nofollow') {
+ selectedArray.push(this);
+
+ } else {
+ selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
+ selectedIndex = selectedArray.index( this );
+ }
+
+ _start();
+
+ return;
+ });
+
+ return this;
+ };
+
+ $.fancybox = function(obj) {
+ var opts;
+
+ if (busy) {
+ return;
+ }
+
+ busy = true;
+ opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
+
+ selectedArray = [];
+ selectedIndex = parseInt(opts.index, 10) || 0;
+
+ if ($.isArray(obj)) {
+ for (var i = 0, j = obj.length; i < j; i++) {
+ if (typeof obj[i] == 'object') {
+ $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
+ } else {
+ obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
+ }
+ }
+
+ selectedArray = jQuery.merge(selectedArray, obj);
+
+ } else {
+ if (typeof obj == 'object') {
+ $(obj).data('fancybox', $.extend({}, opts, obj));
+ } else {
+ obj = $({}).data('fancybox', $.extend({content : obj}, opts));
+ }
+
+ selectedArray.push(obj);
+ }
+
+ if (selectedIndex > selectedArray.length || selectedIndex < 0) {
+ selectedIndex = 0;
+ }
+
+ _start();
+ };
+
+ $.fancybox.showActivity = function() {
+ clearInterval(loadingTimer);
+
+ loading.show();
+ loadingTimer = setInterval(_animate_loading, 66);
+ };
+
+ $.fancybox.hideActivity = function() {
+ loading.hide();
+ };
+
+ $.fancybox.next = function() {
+ return $.fancybox.pos( currentIndex + 1);
+ };
+
+ $.fancybox.prev = function() {
+ return $.fancybox.pos( currentIndex - 1);
+ };
+
+ $.fancybox.pos = function(pos) {
+ if (busy) {
+ return;
+ }
+
+ pos = parseInt(pos);
+
+ selectedArray = currentArray;
+
+ if (pos > -1 && pos < currentArray.length) {
+ selectedIndex = pos;
+ _start();
+
+ } else if (currentOpts.cyclic && currentArray.length > 1) {
+ selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
+ _start();
+ }
+
+ return;
+ };
+
+ $.fancybox.cancel = function() {
+ if (busy) {
+ return;
+ }
+
+ busy = true;
+
+ $.event.trigger('fancybox-cancel');
+
+ _abort();
+
+ selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
+
+ busy = false;
+ };
+
+ // Note: within an iframe use - parent.$.fancybox.close();
+ $.fancybox.close = function() {
+ if (busy || wrap.is(':hidden')) {
+ return;
+ }
+
+ busy = true;
+
+ if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
+ busy = false;
+ return;
+ }
+
+ _abort();
+
+ $(close.add( nav_left ).add( nav_right )).hide();
+
+ $(content.add( overlay )).unbind();
+
+ $(window).unbind("resize.fb scroll.fb");
+ $(document).unbind('keydown.fb');
+
+ content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
+
+ if (currentOpts.titlePosition !== 'inside') {
+ title.empty();
+ }
+
+ wrap.stop();
+
+ function _cleanup() {
+ overlay.fadeOut('fast');
+
+ title.empty().hide();
+ wrap.hide();
+
+ $.event.trigger('fancybox-cleanup');
+
+ content.empty();
+
+ currentOpts.onClosed(currentArray, currentIndex, currentOpts);
+
+ currentArray = selectedOpts = [];
+ currentIndex = selectedIndex = 0;
+ currentOpts = selectedOpts = {};
+
+ busy = false;
+ }
+
+ if (currentOpts.transitionOut == 'elastic') {
+ start_pos = _get_zoom_from();
+
+ var pos = wrap.position();
+
+ final_pos = {
+ top : pos.top ,
+ left : pos.left,
+ width : wrap.width(),
+ height : wrap.height()
+ };
+
+ if (currentOpts.opacity) {
+ final_pos.opacity = 1;
+ }
+
+ title.empty().hide();
+
+ fx.prop = 1;
+
+ $(fx).animate({ prop: 0 }, {
+ duration : currentOpts.speedOut,
+ easing : currentOpts.easingOut,
+ step : _draw,
+ complete : _cleanup
+ });
+
+ } else {
+ wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
+ }
+ };
+
+ $.fancybox.resize = function() {
+ if (overlay.is(':visible')) {
+ overlay.css('height', $(document).height());
+ }
+
+ $.fancybox.center(true);
+ };
+
+ $.fancybox.center = function() {
+ var view, align;
+
+ if (busy) {
+ return;
+ }
+
+ align = arguments[0] === true ? 1 : 0;
+ view = _get_viewport();
+
+ if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
+ return;
+ }
+
+ wrap
+ .stop()
+ .animate({
+ 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
+ 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
+ }, typeof arguments[0] == 'number' ? arguments[0] : 200);
+ };
+
+ $.fancybox.init = function() {
+ if ($("#fancybox-wrap").length) {
+ return;
+ }
+
+ $('body').append(
+ tmp = $('<div id="fancybox-tmp"></div>'),
+ loading = $('<div id="fancybox-loading"><div></div></div>'),
+ overlay = $('<div id="fancybox-overlay"></div>'),
+ wrap = $('<div id="fancybox-wrap"></div>')
+ );
+
+ outer = $('<div id="fancybox-outer"></div>')
+ .append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
+ .appendTo( wrap );
+
+ outer.append(
+ content = $('<div id="fancybox-content"></div>'),
+ close = $('<a id="fancybox-close"></a>'),
+ title = $('<div id="fancybox-title"></div>'),
+
+ nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
+ nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
+ );
+
+ close.click($.fancybox.close);
+ loading.click($.fancybox.cancel);
+
+ nav_left.click(function(e) {
+ e.preventDefault();
+ $.fancybox.prev();
+ });
+
+ nav_right.click(function(e) {
+ e.preventDefault();
+ $.fancybox.next();
+ });
+
+ if ($.fn.mousewheel) {
+ wrap.bind('mousewheel.fb', function(e, delta) {
+ if (busy) {
+ e.preventDefault();
+
+ } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
+ e.preventDefault();
+ $.fancybox[ delta > 0 ? 'prev' : 'next']();
+ }
+ });
+ }
+
+ if (!$.support.opacity) {
+ wrap.addClass('fancybox-ie');
+ }
+
+ if (isIE6) {
+ loading.addClass('fancybox-ie6');
+ wrap.addClass('fancybox-ie6');
+
+ $('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
+ }
+ };
+
+ $.fn.fancybox.defaults = {
+ padding : 10,
+ margin : 40,
+ opacity : false,
+ modal : false,
+ cyclic : false,
+ scrolling : 'auto', // 'auto', 'yes' or 'no'
+
+ width : 560,
+ height : 340,
+
+ autoScale : true,
+ autoDimensions : true,
+ centerOnScroll : false,
+
+ ajax : {},
+ swf : { wmode: 'transparent' },
+
+ hideOnOverlayClick : true,
+ hideOnContentClick : false,
+
+ overlayShow : true,
+ overlayOpacity : 0.7,
+ overlayColor : '#777',
+
+ titleShow : true,
+ titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
+ titleFormat : null,
+ titleFromAlt : false,
+
+ transitionIn : 'fade', // 'elastic', 'fade' or 'none'
+ transitionOut : 'fade', // 'elastic', 'fade' or 'none'
+
+ speedIn : 300,
+ speedOut : 300,
+
+ changeSpeed : 300,
+ changeFade : 'fast',
+
+ easingIn : 'swing',
+ easingOut : 'swing',
+
+ showCloseButton : true,
+ showNavArrows : true,
+ enableEscapeButton : true,
+ enableKeyboardNav : true,
+
+ onStart : function(){},
+ onCancel : function(){},
+ onComplete : function(){},
+ onCleanup : function(){},
+ onClosed : function(){},
+ onError : function(){}
+ };
+
+ $(document).ready(function() {
+ $.fancybox.init();
+ });
+
+})(jQuery);
\ No newline at end of file diff --git a/web/js/fancybox/jquery.fancybox-1.3.4.pack.js b/web/js/fancybox/jquery.fancybox-1.3.4.pack.js new file mode 100644 index 000000000..1373ed083 --- /dev/null +++ b/web/js/fancybox/jquery.fancybox-1.3.4.pack.js @@ -0,0 +1,46 @@ +/* + * FancyBox - jQuery Plugin + * Simple and fancy lightbox alternative + * + * Examples and documentation at: http://fancybox.net + * + * Copyright (c) 2008 - 2010 Janis Skarnelis + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. + * + * Version: 1.3.4 (11/11/2010) + * Requires: jQuery v1.3+ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'); +F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| +c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= +false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", +function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+ +'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== +"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+ +";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, +opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? +d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); +y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== +i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); +f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== +37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); +s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j); +f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); +j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== +"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), +10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; +b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= +0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ +1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= +true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; +b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- +d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f); +D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); +b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}}; +b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", +easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);
\ No newline at end of file diff --git a/web/js/fancybox/jquery.mousewheel-3.0.4.pack.js b/web/js/fancybox/jquery.mousewheel-3.0.4.pack.js new file mode 100644 index 000000000..cb66588e2 --- /dev/null +++ b/web/js/fancybox/jquery.mousewheel-3.0.4.pack.js @@ -0,0 +1,14 @@ +/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) +* Licensed under the MIT License (LICENSE.txt). +* +* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. +* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. +* Thanks to: Seamus Leahy for adding deltaX and deltaY +* +* Version: 3.0.4 +* +* Requires: 1.2.2+ +*/ + +(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a= +f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
\ No newline at end of file diff --git a/web/js/jquery.placeholder.min.js b/web/js/jquery.placeholder.min.js new file mode 100644 index 000000000..122277a31 --- /dev/null +++ b/web/js/jquery.placeholder.min.js @@ -0,0 +1,2 @@ +/*! http://mths.be/placeholder v2.0.5 by @mathias */ +;(function(f,h,$){var a='placeholder' in h.createElement('input'),d='placeholder' in h.createElement('textarea'),i=$.fn,c=$.valHooks,k,j;if(a&&d){j=i.placeholder=function(){return this};j.input=j.textarea=true}else{j=i.placeholder=function(){var l=this;l.filter((a?'textarea':':input')+'[placeholder]').not('.placeholder').bind({'focus.placeholder':b,'blur.placeholder':e}).data('placeholder-enabled',true).trigger('blur.placeholder');return l};j.input=a;j.textarea=d;k={get:function(m){var l=$(m);return l.data('placeholder-enabled')&&l.hasClass('placeholder')?'':m.value},set:function(m,n){var l=$(m);if(!l.data('placeholder-enabled')){return m.value=n}if(n==''){m.value=n;if(m!=h.activeElement){e.call(m)}}else{if(l.hasClass('placeholder')){b.call(m,true,n)||(m.value=n)}else{m.value=n}}return l}};a||(c.input=k);d||(c.textarea=k);$(function(){$(h).delegate('form','submit.placeholder',function(){var l=$('.placeholder',this).each(b);setTimeout(function(){l.each(e)},10)})});$(f).bind('beforeunload.placeholder',function(){$('.placeholder').each(function(){this.value=''})})}function g(m){var l={},n=/^jQuery\d+$/;$.each(m.attributes,function(p,o){if(o.specified&&!n.test(o.name)){l[o.name]=o.value}});return l}function b(m,n){var l=this,o=$(l);if(l.value==o.attr('placeholder')&&o.hasClass('placeholder')){if(o.data('placeholder-password')){o=o.hide().next().show().attr('id',o.removeAttr('id').data('placeholder-id'));if(m===true){return o[0].value=n}o.focus()}else{l.value='';o.removeClass('placeholder')}}}function e(){var q,l=this,p=$(l),m=p,o=this.id;if(l.value==''){if(l.type=='password'){if(!p.data('placeholder-textinput')){try{q=p.clone().attr({type:'text'})}catch(n){q=$('<input>').attr($.extend(g(this),{type:'text'}))}q.removeAttr('name').data({'placeholder-password':true,'placeholder-id':o}).bind('focus.placeholder',b);p.data({'placeholder-textinput':q,'placeholder-id':o}).before(q)}p=p.removeAttr('id').hide().prev().attr('id',o).show()}p.addClass('placeholder');p[0].value=p.attr('placeholder')}else{p.removeClass('placeholder')}}}(this,document,jQuery));
\ No newline at end of file diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index 7cf253bc7..89c862847 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -20,7 +20,6 @@ function fixmystreet_activate_drag() { } function fms_markers_list(pins, transform) { - var cols = { 'red':'R', 'green':'G', 'blue':'B', 'purple':'P' }; var markers = []; for (var i=0; i<pins.length; i++) { var pin = pins[i]; @@ -33,7 +32,8 @@ function fms_markers_list(pins, transform) { ); } var marker = new OpenLayers.Feature.Vector(loc, { - type: cols[pin[2]], + colour: pin[2], + size: pin[5] || 'normal', id: pin[3], title: pin[4] || '' }); @@ -58,31 +58,48 @@ function fixmystreet_onload() { }); } + var pin_layer_style_map = new OpenLayers.StyleMap({ + 'default': new OpenLayers.Style({ + graphicTitle: "${title}", + graphicOpacity: 1, + graphicZIndex: 11, + backgroundGraphicZIndex: 10 + }) + }); + pin_layer_style_map.addUniqueValueRules('default', 'size', { + 'normal': { + externalGraphic: "/i/pin-${colour}.png", + graphicWidth: 48, + graphicHeight: 64, + graphicXOffset: -24, + graphicYOffset: -64, + backgroundGraphic: "/i/pin-shadow.png", + backgroundWidth: 60, + backgroundHeight: 30, + backgroundXOffset: -7, + backgroundYOffset: -30 + }, + 'big': { + externalGraphic: "/i/pin-${colour}-big.png", + graphicWidth: 78, + graphicHeight: 105, + graphicXOffset: -39, + graphicYOffset: -105, + backgroundGraphic: "/i/pin-shadow-big.png", + backgroundWidth: 88, + backgroundHeight: 40, + backgroundXOffset: -10, + backgroundYOffset: -35 + } + }); var pin_layer_options = { rendererOptions: { yOrdering: true }, - styleMap: new OpenLayers.StyleMap({ - 'default': new OpenLayers.Style({ - externalGraphic: "/i/pin${type}.png", - graphicTitle: "${title}", - graphicWidth: 44, - graphicHeight: 58, - graphicOpacity: 1, - graphicXOffset: -22, - graphicYOffset: -58, - backgroundGraphic: "/i/pin-shadow.png", - backgroundWidth: 50, - backgroundHeight: 19, - backgroundXOffset: -7, - backgroundYOffset: -19, - graphicZIndex: 11, - backgroundGraphicZIndex: 10 - }) - }) + styleMap: pin_layer_style_map }; if (fixmystreet.page == 'around') { - fixmystreet.bbox_strategy = new OpenLayers.Strategy.BBOX(); + fixmystreet.bbox_strategy = new OpenLayers.Strategy.BBOX({ ratio: 1 }); pin_layer_options.strategies = [ fixmystreet.bbox_strategy ]; pin_layer_options.protocol = new OpenLayers.Protocol.HTTP({ url: '/ajax', @@ -91,17 +108,37 @@ function fixmystreet_onload() { }); } fixmystreet.markers = new OpenLayers.Layer.Vector("Pins", pin_layer_options); + fixmystreet.markers.events.register( 'loadend', fixmystreet.markers, function(evt) { + if (fixmystreet.map.popups.length) fixmystreet.map.removePopup(fixmystreet.map.popups[0]); + }); var markers = fms_markers_list( fixmystreet.pins, true ); fixmystreet.markers.addFeatures( markers ); if (fixmystreet.page == 'around' || fixmystreet.page == 'reports' || fixmystreet.page == 'my') { - fixmystreet.markers.events.register( 'featureselected', fixmystreet.markers, function(evt) { - if (evt.feature.attributes.id) { - window.location = '/report/' + evt.feature.attributes.id; - } + var select = new OpenLayers.Control.SelectFeature( fixmystreet.markers ); + var selectedFeature; + function onPopupClose(evt) { + select.unselect(selectedFeature); OpenLayers.Event.stop(evt); + } + fixmystreet.markers.events.register( 'featureunselected', fixmystreet.markers, function(evt) { + var feature = evt.feature, popup = feature.popup; + fixmystreet.map.removePopup(popup); + popup.destroy(); + feature.popup = null; + }); + fixmystreet.markers.events.register( 'featureselected', fixmystreet.markers, function(evt) { + var feature = evt.feature; + selectedFeature = feature; + var popup = new OpenLayers.Popup.FramedCloud("popup", + feature.geometry.getBounds().getCenterLonLat(), + null, + feature.attributes.title + "<br><a href=/report/" + feature.attributes.id + ">More details</a>", + { size: new OpenLayers.Size(0,0), offset: new OpenLayers.Pixel(0,-40) }, + true, onPopupClose); + feature.popup = popup; + fixmystreet.map.addPopup(popup); }); - var select = new OpenLayers.Control.SelectFeature( fixmystreet.markers ); fixmystreet.map.addControl( select ); select.activate(); } else if (fixmystreet.page == 'new') { @@ -136,7 +173,7 @@ function fixmystreet_onload() { e.preventDefault(); fixmystreet.markers.setVisibility(true); var texts = [ - 'en', 'Include stale reports', 'Hide stale reports', + 'en', 'Show old', 'Hide old', 'nb', 'Inkluder utdaterte problemer', 'Skjul utdaterte rapporter', 'cy', 'Cynnwys hen adroddiadau', 'Cuddio hen adroddiadau' ]; @@ -166,14 +203,17 @@ function fixmystreet_onload() { $(function(){ - var perm = new OpenLayers.Control.Permalink(); - set_map_config(perm); + set_map_config(); fixmystreet.map = new OpenLayers.Map("map", { controls: fixmystreet.controls, displayProjection: new OpenLayers.Projection("EPSG:4326") }); + if ($('html').hasClass('mobile')) { + $('#fms_pan_zoom').css({ top: '2.75em !important' }); + } + fixmystreet.layer_options = OpenLayers.Util.extend({ zoomOffset: fixmystreet.zoomOffset, transitionEffect: 'resize', @@ -191,31 +231,64 @@ $(function(){ fixmystreet.map.setCenter(centre, fixmystreet.zoom || 3); } + if (fixmystreet.state_map && fixmystreet.state_map == 'full') { + // TODO Work better with window resizing, this is pretty 'set up' only at present + var q = $(window).width() / 4; + // Need to try and fake the 'centre' being 75% from the left + fixmystreet.map.pan(-q, -25, { animate: false }); + fixmystreet.map.events.register("movestart", null, function(e){ + fixmystreet.map.moveStart = { zoom: this.getZoom(), center: this.getCenter() }; + }); + fixmystreet.map.events.register("zoomend", null, function(e){ + if ( fixmystreet.map.moveStart && !fixmystreet.map.moveStart.zoom ) { + return true; // getZoom() on Firefox appears to return null at first? + } + if ( !fixmystreet.map.moveStart || !this.getCenter().equals(fixmystreet.map.moveStart.center) ) { + // Centre has moved, e.g. by double-click. Same whether zoom in or out + fixmystreet.map.pan(-q, -25, { animate: false }); + return; + } + var zoom_change = this.getZoom() - fixmystreet.map.moveStart.zoom; + if (zoom_change == -1) { + // Zoomed out, need to re'centre' + fixmystreet.map.pan(-q/2, 0, { animate: false }); + } else if (zoom_change == 1) { + // Using a zoom button + fixmystreet.map.pan(q, 0, { animate: false }); + } + }); + } + if (document.getElementById('mapForm')) { var click = new OpenLayers.Control.Click(); fixmystreet.map.addControl(click); click.activate(); } - /* To let permalink not be caught by the Click layer, answer found - * at http://www.mail-archive.com/users@openlayers.org/msg12958.html - * Not sure why you can't use eventListeners or events.register... - */ - OpenLayers.Event.observe( perm.element, "click", function(e) { - OpenLayers.Event.stop(e); - location.href = OpenLayers.Event.element(e).href; - return false; - }); - $(window).hashchange(function(){ - if (location.hash) { return; } + if (location.hash == '#report' && $('.rap-notes').is(':visible')) { + $('.rap-notes-close').click(); + return; + } + + if (location.hash && location.hash != '#') { + return; + } + // Okay, back to around view. fixmystreet.bbox_strategy.activate(); fixmystreet.markers.refresh( { force: true } ); + if ( fixmystreet.state_pins_were_hidden ) { + // If we had pins hidden when we clicked map (which had to show the pin layer as I'm doing it in one layer), hide them again. + $('#hide_pins_link').click(); + } fixmystreet.drag.deactivate(); $('#side-form').hide(); $('#side').show(); $('#sub_map_links').show(); + //only on mobile + $('#mob_sub_map_links').remove(); + $('.mobile-map-banner').text('Place pin on map'); fixmystreet.page = 'around'; }); @@ -328,12 +401,15 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { }, trigger: function(e) { + if (typeof fixmystreet.nav_control != 'undefined') { + fixmystreet.nav_control.disableZoomWheel(); + } var lonlat = fixmystreet.map.getLonLatFromViewPortPx(e.xy); if (fixmystreet.page == 'new') { - /* Already have a purple pin */ + /* Already have a pin */ fixmystreet.markers.features[0].move(lonlat); } else { - var markers = fms_markers_list( [ [ lonlat.lat, lonlat.lon, 'purple' ] ], false ); + var markers = fms_markers_list( [ [ lonlat.lat, lonlat.lon, 'green' ] ], false ); fixmystreet.bbox_strategy.deactivate(); fixmystreet.markers.removeAllFeatures(); fixmystreet.markers.addFeatures( markers ); @@ -344,6 +420,7 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { // link so that it updates the text in case they go // back if ( ! fixmystreet.markers.getVisibility() ) { + fixmystreet.state_pins_were_hidden = true; $('#hide_pins_link').click(); } if (fixmystreet.page == 'new') { @@ -356,7 +433,9 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { $('#councils_text').html(data.councils_text); $('#form_category_row').html(data.category); }); - $('#side-form').show(); + + $('#side-form, #site-logo').show(); + fixmystreet.map.updateSize(); // might have done, and otherwise Firefox gets confused. /* For some reason on IOS5 if you use the jQuery show method it * doesn't display the JS validation error messages unless you do this * or you cause a screen redraw by changing the phone orientation. @@ -365,7 +444,60 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { document.getElementById('side-form').style.display = 'block'; } $('#side').hide(); + if (typeof heightFix !== 'undefined') { + heightFix('#report-a-problem-sidebar', '.content', 26); + } + + // If we clicked the map somewhere inconvenient + var sidebar = $('#report-a-problem-sidebar'); + if (sidebar.css('position') == 'absolute') { + var w = sidebar.width(), h = sidebar.height(), o = sidebar.offset(); + if (e.xy.y <= o.top || (e.xy.x >= o.left && e.xy.x <= o.left + w + 24 && e.xy.y >= o.top && e.xy.y <= o.top + h + 64)) { + // top of the page, pin hidden by header; + // or underneath where the new sidebar will appear + lonlat.transform( + new OpenLayers.Projection("EPSG:4326"), + fixmystreet.map.getProjectionObject() + ); + var p = fixmystreet.map.getViewPortPxFromLonLat(lonlat); + p.x -= $(window).width() / 3; + lonlat = fixmystreet.map.getLonLatFromViewPortPx(p); + fixmystreet.map.panTo(lonlat); + } + } + $('#sub_map_links').hide(); + if ($('html').hasClass('mobile')) { + var $map_box = $('#map_box'), + width = $map_box.width(), + height = $map_box.height(); + $map_box.append( + '<p id="mob_sub_map_links">' + + '<a href="#" id="try_again">Try again</a>' + + '<a href="#ok" id="mob_ok">OK</a>' + + '</p>' + ).css({ position: 'relative', width: width, height: height, marginBottom: '1em' }); + // Making it relative here makes it much easier to do the scrolling later + + $('.mobile-map-banner').text('Right place?'); + + // mobile user clicks 'ok' on map + $('#mob_ok').toggle(function(){ + //scroll the height of the map box instead of the offset + //of the #side-form or whatever as we will probably want + //to do this on other pages where #side-form might not be + $('html, body').animate({ scrollTop: height-60 }, 1000, function(){ + $('#mob_sub_map_links').addClass('map_complete'); + $('#mob_ok').text('MAP'); + }); + }, function(){ + $('html, body').animate({ scrollTop: 0 }, 1000, function(){ + $('#mob_sub_map_links').removeClass('map_complete'); + $('#mob_ok').text('OK'); + }); + }); + } + fixmystreet.page = 'new'; location.hash = 'report'; } diff --git a/web/js/map-OpenStreetMap.js b/web/js/map-OpenStreetMap.js index 9d226f6a7..50f159635 100644 --- a/web/js/map-OpenStreetMap.js +++ b/web/js/map-OpenStreetMap.js @@ -1,11 +1,15 @@ function set_map_config(perm) { + var permalink_id; + if ($('#map_permalink').length) { + permalink_id = 'map_permalink'; + } fixmystreet.controls = [ new OpenLayers.Control.ArgParser(), //new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Navigation(), - perm, + new OpenLayers.Control.Permalink(permalink_id), new OpenLayers.Control.PermalinkFMS('osm_link', 'http://www.openstreetmap.org/'), - new OpenLayers.Control.PanZoomFMS() + new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) ]; } @@ -37,7 +41,7 @@ OpenLayers.Util.onImageLoadError = function() { } else if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)) { // do nothing - this layer is transparent } else { - OpenLayers.Util.OSM.originalOnImageLoadError; + OpenLayers.Util.OSM.originalOnImageLoadError(); } }; diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js index 94b777134..89b274b18 100644 --- a/web/js/map-bing-ol.js +++ b/web/js/map-bing-ol.js @@ -1,11 +1,21 @@ function set_map_config(perm) { + var permalink_id; + if ($('#map_permalink').length) { + permalink_id = 'map_permalink'; + } + + var nav_opts = { zoomWheelEnabled: false }; + if (fixmystreet.page == 'around' && $('html').hasClass('mobile')) { + nav_opts = {}; + } + fixmystreet.nav_control = new OpenLayers.Control.Navigation(nav_opts); + fixmystreet.controls = [ new OpenLayers.Control.Attribution(), new OpenLayers.Control.ArgParser(), - new OpenLayers.Control.Navigation(), - perm, - //new OpenLayers.Control.ZoomPanel() - new OpenLayers.Control.PanZoomFMS() + fixmystreet.nav_control, + new OpenLayers.Control.Permalink(permalink_id), + new OpenLayers.Control.PanZoomFMS({id: 'fms_pan_zoom' }) ]; fixmystreet.map_type = OpenLayers.Layer.Bing; } @@ -33,10 +43,12 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { logo: logo, copyrights: copyrights }); - this.map && this.map.events.triggerEvent("changelayer", { - layer: this, - property: "attribution" - }); + if (this.map) { + this.map.events.triggerEvent("changelayer", { + layer: this, + property: "attribution" + }); + } }, initialize: function(name, options) { @@ -59,10 +71,10 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { for (var i = level; i > 0; i--) { var digit = 0; var mask = 1 << (i - 1); - if ((x & mask) != 0) { + if ((x & mask) !== 0) { digit++; } - if ((y & mask) != 0) { + if ((y & mask) !== 0) { digit += 2; } key += digit; @@ -72,16 +84,17 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { getURL: function (bounds) { var res = this.map.getResolution(); - var x = Math.round((bounds.left - this.maxExtent.left) - / (res * this.tileSize.w)); - var y = Math.round((this.maxExtent.top - bounds.top) - / (res * this.tileSize.h)); - var z = this.serverResolutions != null ? + var x = Math.round((bounds.left - this.maxExtent.left) / + (res * this.tileSize.w)); + var y = Math.round((this.maxExtent.top - bounds.top) / + (res * this.tileSize.h)); + var z = this.serverResolutions !== null ? OpenLayers.Util.indexOf(this.serverResolutions, res) : this.map.getZoom() + this.zoomOffset; + var url; if (z >= 16) { - var url = [ + url = [ "http://tilma.mysociety.org/sv/${z}/${x}/${y}.png", "http://a.tilma.mysociety.org/sv/${z}/${x}/${y}.png", "http://b.tilma.mysociety.org/sv/${z}/${x}/${y}.png", @@ -89,8 +102,8 @@ OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, { ]; } else { var type = ''; - if (z > 10) type = '&productSet=mmOS'; - var url = [ + if (z > 10) { type = '&productSet=mmOS'; } + url = [ "http://ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, "http://ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, "http://ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type, diff --git a/web/js/map-streetview.js b/web/js/map-streetview.js index 99fdca983..b1ba3664d 100644 --- a/web/js/map-streetview.js +++ b/web/js/map-streetview.js @@ -3,7 +3,7 @@ function set_map_config(perm) { new OpenLayers.Control.ArgParser(), //new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Navigation(), - perm, + new OpenLayers.Control.Permalink(), new OpenLayers.Control.PanZoomFMS() ]; fixmystreet.map_type = OpenLayers.Layer.StreetView; @@ -32,7 +32,7 @@ OpenLayers.Util.OS.originalOnImageLoadError = OpenLayers.Util.onImageLoadError; * Function: onImageLoadError */ OpenLayers.Util.onImageLoadError = function() { - OpenLayers.Util.OS.originalOnImageLoadError; + OpenLayers.Util.OS.originalOnImageLoadError(); }; /** diff --git a/web/js/modernizr.custom.76759.js b/web/js/modernizr.custom.76759.js new file mode 100644 index 000000000..20a22d8fa --- /dev/null +++ b/web/js/modernizr.custom.76759.js @@ -0,0 +1,4 @@ +/* Modernizr 2.5.3 (Custom Build) | MIT & BSD + * Build: http://www.modernizr.com/download/#-input-shiv-mq-teststyles-load + */ +;window.Modernizr=function(a,b,c){function v(a){i.cssText=a}function w(a,b){return v(prefixes.join(a+";")+(b||""))}function x(a,b){return typeof a===b}function y(a,b){return!!~(""+a).indexOf(b)}function z(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:x(f,"function")?f.bind(d||b):f}return!1}function A(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)n[c[d]]=c[d]in j;return n.list&&(n.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),n}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "))}var d="2.5.3",e={},f=b.documentElement,g="modernizr",h=b.createElement(g),i=h.style,j=b.createElement("input"),k={}.toString,l={},m={},n={},o=[],p=o.slice,q,r=function(a,c,d,e){var h,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:g+(d+1),k.appendChild(j);return h=["­","<style>",a,"</style>"].join(""),k.id=g,m.innerHTML+=h,m.appendChild(k),l||(m.style.background="",f.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},s=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return r("@media "+b+" { #"+g+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},t={}.hasOwnProperty,u;!x(t,"undefined")&&!x(t.call,"undefined")?u=function(a,b){return t.call(a,b)}:u=function(a,b){return b in a&&x(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=p.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(p.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(p.call(arguments)))};return e});for(var B in l)u(l,B)&&(q=B.toLowerCase(),e[q]=l[B](),o.push((e[q]?"":"no-")+q));return e.input||A(),v(""),h=j=null,function(a,b){function g(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function h(){var a=k.elements;return typeof a=="string"?a.split(" "):a}function i(a){var b={},c=a.createElement,e=a.createDocumentFragment,f=e();a.createElement=function(a){var e=(b[a]||(b[a]=c(a))).cloneNode();return k.shivMethods&&e.canHaveChildren&&!d.test(a)?f.appendChild(e):e},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+h().join().replace(/\w+/g,function(a){return b[a]=c(a),f.createElement(a),'c("'+a+'")'})+");return n}")(k,f)}function j(a){var b;return a.documentShived?a:(k.shivCSS&&!e&&(b=!!g(a,"article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio{display:none}canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}mark{background:#FF0;color:#000}")),f||(b=!i(a)),b&&(a.documentShived=b),a)}var c=a.html5||{},d=/^<|^(?:button|form|map|select|textarea)$/i,e,f;(function(){var a=b.createElement("a");a.innerHTML="<xyz></xyz>",e="hidden"in a,f=a.childNodes.length==1||function(){try{b.createElement("a")}catch(a){return!0}var c=b.createDocumentFragment();return typeof c.cloneNode=="undefined"||typeof c.createDocumentFragment=="undefined"||typeof c.createElement=="undefined"}()})();var k={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:j};a.html5=k,j(b)}(this,b),e._version=d,e.mq=s,e.testStyles=r,e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a){return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(function(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
\ No newline at end of file |