diff options
84 files changed, 2490 insertions, 1316 deletions
diff --git a/main/res/layout/cache_image_item.xml b/main/res/layout/cache_image_item.xml index 7ed4782..3e025e1 100644 --- a/main/res/layout/cache_image_item.xml +++ b/main/res/layout/cache_image_item.xml @@ -27,4 +27,10 @@ android:textSize="14dip" android:visibility="gone" /> + <ProgressBar + android:id="@+id/progress_bar" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + style="@android:style/Widget.ProgressBar.Small"/> + </LinearLayout>
\ No newline at end of file diff --git a/main/res/layout/fragment_edit_note.xml b/main/res/layout/fragment_edit_note.xml new file mode 100644 index 0000000..68e2b2c --- /dev/null +++ b/main/res/layout/fragment_edit_note.xml @@ -0,0 +1,15 @@ +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/edit_note" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:orientation="vertical"> + + <EditText + android:id="@+id/note" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:imeOptions="actionDone"/> +</LinearLayout> diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml index 5ea6fdd..58e28ac 100644 --- a/main/res/values-cs/strings.xml +++ b/main/res/values-cs/strings.xml @@ -90,7 +90,7 @@ <string name="log_post">Odeslat Log</string> <string name="log_post_rate">Odeslat Log a hlasovat</string> <string name="log_post_no_rate">Odeslat Log a nehlasovat</string> - <string name="log_post_not_possible">Načítání stránky s Logy…</string> + <string name="log_post_not_possible">Načítání stránky s Logovacím formulářem…</string> <string name="log_add">Přidat</string> <string name="log_rating">Hodnocení</string> <string name="log_no_rating">Bez hodnocení</string> @@ -323,7 +323,7 @@ <string name="caches_filter_track">Se sledovatelnými předměty</string> <string name="caches_filter_clear">Vymazat filtry</string> <string name="caches_filter_modified">S upravenými souřadnicemi</string> - <string name="caches_filter_origin">Originální</string> + <string name="caches_filter_origin">Původ keše</string> <string name="caches_removing_from_history">Čištění Historie…</string> <string name="caches_clear_offlinelogs">Smazat offline Logy</string> <string name="caches_clear_offlinelogs_progress">Mazání offline logů</string> @@ -409,7 +409,6 @@ <string name="init_offline_wp">Ukládat statické mapy k bodům trasy pro offline použití</string> <string name="init_save_log_img">Ukládat obrázky z logů</string> <string name="init_units">Používat imperiální jednotky vzdálenosti</string> - <string name="init_nav">Používat Google Navigaci</string> <string name="init_log_offline">Povolit Offline logování\n(Při logování nezobrazovat online logovací obrazovku a neodesílat Log na server)</string> <string name="init_choose_list">Ptát se na seznam pro uložení keše</string> <string name="init_livelist">Zobrazovat směr v seznamu keší</string> @@ -515,7 +514,6 @@ <string name="cache_attributes">Atributy</string> <string name="cache_inventory">Inventář</string> <string name="cache_log_offline">Offline Log</string> - <string name="cache_log_images_loading">Načítání obrázků z logů…</string> <string name="cache_log_images_title">Obrázky z Logů</string> <string name="cache_log_image_default_title">Fotografie</string> <string name="cache_personal_note">Osobní poznámka</string> @@ -554,7 +552,7 @@ <string name="cache_dialog_loading_details_status_gcvote">Načítání GCVote</string> <string name="cache_dialog_loading_details_status_elevation">Načítání údajů o nadmořské výšce</string> <string name="cache_dialog_loading_details_status_cache">Ukládání do mezipaměti</string> - <string name="cache_dialog_loading_details_status_render">Renderování zobrazení</string> + <string name="cache_dialog_loading_details_status_render">Vykreslování pohledu</string> <string name="cache_dialog_offline_save_title">Offline</string> <string name="cache_dialog_offline_save_message">Ukládání keše pro offline použití…</string> <string name="cache_dialog_offline_drop_title">Offline</string> @@ -618,9 +616,7 @@ <string name="cache_coordinates">Souřadnice</string> <string name="cache_coordinates_original">Původní souřadnice</string> <string name="cache_spoiler_images_title">Obrázky s nápovědou</string> - <string name="cache_spoiler_images_loading">Načítání obrázků s nápovědou…</string> <string name="cache_images_title">Obrázky</string> - <string name="cache_images_loading">Načítání obrázků…</string> <string name="cache_log_types">Typy zápisů</string> <string name="cache_coordinates_no">Tato keš nemá souřadnice.</string> <string name="cache_clear_history">Vymazat historii</string> @@ -720,13 +716,6 @@ <string name="waypoint_coordinate_formats_plain">Prostý</string> - <!-- distance units --> - <string name="unit_m">m (Metry)</string> - <string name="unit_km">km (Kilometry)</string> - <string name="unit_ft">ft (Stopy)</string> - <string name="unit_yd">yd (Yardy)</string> - <string name="unit_mi">mi (Míle)</string> - <!-- visit --> <string name="visit_tweet">Oznámit nález na Twitteru</string> @@ -1062,7 +1051,6 @@ <string name="facebook">Facebook: <a href="http://www.facebook.com/pages/cgeo/297269860090">Stránka c:geo</a></string> <string name="twitter">Twitter: <a href="http://twitter.com/android_gc">@android_GC</a></string> <string name="nutshellmanual">Návod: <a href="http://manual.cgeo.org/">c:geo v Nutshell</a></string> - <string name="about_go4cache">Služba <b>Go 4 Cache</b> zobrazuje ostatní geokačery na mapě (v <b>c:geo</b> nebo v prohlížeči) v reálném čase. Může zobrazovat - na příklad - jakou keš zrovna hledají. Připojením se k <b>Go 4 Cache</b> získá aplikace <b>c:geo</b> povolení zveřejňovat tvou polohu při geocachingu (pouze když je <b>c:geo</b> spuštěno).</string> <string name="about_twitter">Má <b>c:geo</b> publikovat nový status na Twitteru vždy, když zaloguješ keš?</string> <string name="about_auth_1">Následující proces dovoluje aplikaci <b>c:geo</b> přístup na Twitter - pokud budeš souhlasit.</string> <string name="about_auth_2">Klepnutím na tlačítko \"Zahájit autorizaci\" bude proces zahájen. Tento proces otevře webový prohlížeč s Twitterem. Přihlaš se na této stránce a povol <b>c:geu</b> přístup k tvému účtu. Pokud je to povoleno, Twitter ti ukáže číselný PIN kód. Tento PIN kód musíš zadat do <b>c:geo</b> a potvrdit. To je vše.</string> diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml index 87086ef..048991b 100644 --- a/main/res/values-de/strings.xml +++ b/main/res/values-de/strings.xml @@ -502,7 +502,6 @@ <string name="cache_attributes">Attribute</string> <string name="cache_inventory">Inventar</string> <string name="cache_log_offline">Offline-Log</string> - <string name="cache_log_images_loading">Lade Logbild…</string> <string name="cache_log_images_title">Logbild</string> <string name="cache_log_image_default_title">Bild</string> <string name="cache_personal_note">Persönliche Notiz</string> @@ -585,6 +584,8 @@ <string name="cache_status_disabled">Deaktiviert</string> <string name="cache_status_premium">Nur für Premium-Mitglieder</string> <string name="cache_status_not_premium">Für alle Mitglieder</string> + <string name="cache_status_stored">Gespeichert</string> + <string name="cache_status_not_stored">Nicht gespeichert</string> <string name="cache_geocode">Geocode</string> <string name="cache_name">Name</string> <string name="cache_type">Typ</string> @@ -603,8 +604,6 @@ <string name="cache_coordinates">Koordinaten</string> <string name="cache_coordinates_original">Ursprüngliche Koordinaten</string> <string name="cache_spoiler_images_title">Hinweisbilder</string> - <string name="cache_spoiler_images_loading">Lade Hinweisbilder…</string> - <string name="cache_images_loading">Lade Bilder…</string> <string name="cache_log_types">Logs</string> <string name="cache_coordinates_no">Dieser Cache hat keine Koordinaten.</string> <string name="cache_clear_history">Verlauf leeren</string> @@ -704,13 +703,6 @@ <string name="waypoint_coordinate_formats_plain">Schlicht</string> -<!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">Diesen Eintrag auf Twitter veröffentlichen</string> diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml index 7215d72..0fe60b5 100644 --- a/main/res/values-es/strings.xml +++ b/main/res/values-es/strings.xml @@ -401,7 +401,6 @@ <string name="cache_attributes">Atributos</string> <string name="cache_inventory">Inventario</string> <string name="cache_log_offline">Registro desconectado</string> - <string name="cache_log_images_loading">Cargando imagen de registro…</string> <string name="cache_log_images_title">Imagen de resgistro</string> <string name="cache_log_image_default_title">Foto</string> <string name="cache_personal_note">Nota personal</string> @@ -464,7 +463,6 @@ <string name="cache_location">Ubicación</string> <string name="cache_coordinates">Coordenadas</string> <string name="cache_spoiler_images_title">Imágenes reveladoras</string> - <string name="cache_spoiler_images_loading">Cargando imágenes reveladoras…</string> <string name="cache_log_types">Tipos de registro</string> <string name="cache_coordinates_no">Este escondite no tiene coordenadas.</string> <string name="cache_clear_history">Borrar historial</string> diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml index 9de84ac..f7a6fde 100644 --- a/main/res/values-fr/strings.xml +++ b/main/res/values-fr/strings.xml @@ -512,7 +512,6 @@ <string name="cache_attributes">Attributs</string> <string name="cache_inventory">Inventaire</string> <string name="cache_log_offline">Visite hors-ligne</string> - <string name="cache_log_images_loading">Chargement de l\'image de la visite…</string> <string name="cache_log_images_title">Image de la visite</string> <string name="cache_log_image_default_title">Photo</string> <string name="cache_personal_note">Note personnelle</string> @@ -615,9 +614,7 @@ <string name="cache_coordinates">Coordonnées</string> <string name="cache_coordinates_original">Coordonnées d\'origine</string> <string name="cache_spoiler_images_title">Images indices</string> - <string name="cache_spoiler_images_loading">Chargement des images indices…</string> <string name="cache_images_title">Images</string> - <string name="cache_images_loading">Chargement des images…</string> <string name="cache_log_types">Types de visites</string> <string name="cache_coordinates_no">Cette cache n\'a pas de coordonnées.</string> <string name="cache_clear_history">Effacer l\'historique</string> @@ -717,13 +714,6 @@ <string name="waypoint_coordinate_formats_plain">Texte</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">Publier votre découverte sur Twitter</string> diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml index ec5e06e..353aa10 100644 --- a/main/res/values-hu/strings.xml +++ b/main/res/values-hu/strings.xml @@ -483,7 +483,6 @@ <string name="cache_attributes">Tulajdonságok</string> <string name="cache_inventory">Tárgyak</string> <string name="cache_log_offline">Offline bejegyzés</string> - <string name="cache_log_images_loading">Bejegyzés kép betöltése…</string> <string name="cache_log_images_title">Bejegyzés kép</string> <string name="cache_log_image_default_title">Fotó</string> <string name="cache_personal_note">Személyes megjegyzés</string> @@ -577,9 +576,7 @@ <string name="cache_coordinates">Koordináták</string> <string name="cache_coordinates_original">Eredeti koordináták</string> <string name="cache_spoiler_images_title">Spoiler képek</string> - <string name="cache_spoiler_images_loading">Spoiler képek betöltése…</string> <string name="cache_images_title">Képek</string> - <string name="cache_images_loading">Képek betéltése…</string> <string name="cache_log_types">Bejegyzés típusok</string> <string name="cache_coordinates_no">Ennek a ládának nincsenek koordinátái.</string> <string name="cache_clear_history">Előzmények törlése</string> @@ -661,13 +658,6 @@ <string name="search_history_cleared">Előzmények törölve</string> <string name="waypoint_coordinate_formats_plain">Egyszerű</string> - - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> <!-- visit --> <string name="visit_tweet">Twitteld ki ezt a megtalálást</string> diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml index f7d29cb..98a3f9c 100644 --- a/main/res/values-it/strings.xml +++ b/main/res/values-it/strings.xml @@ -85,6 +85,7 @@ <string name="log_tb_changeall">Cambia tutto</string> <string name="log_save">Salva</string> <string name="log_saving">Invio log…</string> + <string name="log_saving_and_uploading">Invio log e immagine…</string> <string name="log_clear">Azzera</string> <string name="log_post">Invia log</string> <string name="log_post_rate">Invia log + voto</string> @@ -118,6 +119,13 @@ <string name="log_today">Oggi</string> <string name="log_yesterday">Ieri</string> <string name="log_smilies">Smile</string> + <string name="log_image">Immagine</string> + <string name="log_image_attach">Aggiungi immagine</string> + <string name="log_image_edit">Modifica immagine</string> + <string name="log_image_stored">Esistente</string> + <string name="log_image_camera">Nuova</string> + <string name="log_image_caption">Didascalia</string> + <string name="log_image_description">Descrizione</string> <!-- translation --> <string name="translate_to_sys_lang">Traduci in %s</string> @@ -167,6 +175,8 @@ <string name="err_missing_device_name">Per cortesia inserire il nome del dispositivo prima di registrarsi.</string> <string name="err_favorite_failed">Errore nella modifica dello stato preferiti.</string> + <string name="err_select_logimage_failed">La selezione dell\'immagine per il log è fallita.</string> + <string name="err_aquire_image_failed">Acquisizione immagine fallita.</string> <string name="err_tb_display">c:geo non riesce a visualizzare il trackable che vuoi. È veramente un trackable?</string> <string name="err_tb_details_open">c:geo non riesce ad aprire i dettagli del trackable.</string> @@ -189,6 +199,7 @@ <string name="err_log_load_data_still">c:geo sta ancora caricando i dati necessari per salvare il log. Per cortesia attendere ancora un pochino.</string> <string name="err_log_failed_server">c:geo non è riuscito ad inviare il log perché il server non risponde.</string> <string name="err_log_post_failed">Sembra che il log non sia stato inviato. Prego verificare su Geocaching.com.</string> + <string name="err_logimage_post_failed">Sembra la l\'immagine non sia stata caricata. Si prega di controllare su Geocaching.com.</string> <string name="err_search_address_forgot">c:geo ha dimenticato l\'indirizzo che vuoi trovare.</string> <string name="err_parse_lat">c:geo non riesce ad interpretare la latitudine.</string> @@ -218,6 +229,8 @@ <string name="info_log_saved">c:geo ha salvato il log.</string> <string name="info_log_cleared">Il log è stato azzerato.</string> <string name="info_log_type_changed">Il tipo di log è cambiato!</string> + <string name="info_select_logimage_cancelled">Selezione o cattura immagine annnulata.</string> + <string name="info_stored_image">Nuova immagine salvata su:</string> <string name="info_storing_static_maps">Tento di salvare la static map</string> @@ -293,7 +306,7 @@ <string name="caches_refresh_selected">Aggiorna i cache selezionati</string> <string name="caches_refresh_all">Aggiorna tutti</string> <string name="caches_move_selected">Muovi i cache selezionati</string> - <string name="caches_move_all">Muovi tutte</string> + <string name="caches_move_all">Muovi tutti</string> <string name="caches_map_locus">Locus</string> <string name="caches_map_locus_export">Esporta in Locus</string> <string name="caches_recaptcha_title">reCAPTCHA</string> @@ -307,7 +320,10 @@ <string name="caches_filter_track">Con oggetti trackables</string> <string name="caches_filter_clear">Rimuovi filtri</string> <string name="caches_filter_modified">Con coordinate modificate</string> + <string name="caches_filter_origin">Origine</string> <string name="caches_removing_from_history">Rimozione dalla cronologia…</string> + <string name="caches_clear_offlinelogs">Cancella i log offline</string> + <string name="caches_clear_offlinelogs_progress">Cancellazione logs offline</string> <!-- caches lists --> <string name="list_menu">Lista</string> @@ -340,6 +356,7 @@ <!-- init --> <string name="init_geocaching">Geocaching.com</string> + <string name="init_gc_activate">Attiva Geocaching.com su mappa live e nelle ricerche</string> <string name="init_oc">opencaching.de</string> <string name="init_oc_activate">Attiva opencaching.de su mappa live e nelle ricerche</string> <string name="init_oc_username_description">Inserisci il tuo utente opencaching.de per marcare i tuoi ritrovamenti.</string> @@ -386,7 +403,8 @@ <string name="init_offline_wp">Salva i waypoints delle mappe per uso offline</string> <string name="init_save_log_img">Salva immagini contenute nei log</string> <string name="init_units">Usa miglia/piedi</string> - <string name="init_log_offline">Quando salvi log, fallo sempre offline (non visualizzerà lo schermo di log online, non invierà subito il log)</string> + <string name="init_log_offline">Attiva log offline (non visualizzerà lo schermo di log online, non invierà subito il log)</string> + <string name="init_choose_list">Chiedi la lista quando salvi un cache</string> <string name="init_livelist">Visualizza in che direzione sono i cache, nelle liste</string> <string name="init_altitude">Correzione di altitudine</string> <string name="init_altitude_description">Se il GPS restituisce un\'errata altitudine, puoi correggerla inserendo un valore positivo o negativo, in metri.</string> @@ -437,6 +455,12 @@ <string name="init_plain_logs">Visualizza i LOG senza colori</string> <string name="init_use_native_ua">Identifica come browser Android. Risolve alcuni problemi di login con alcuni provider di rete.</string> <string name="init_rendertheme_folder">Cartella per i temi mappa personali off-line</string> + <!-- map sources --> + <string name="map_source_google_map">Google: Map</string> + <string name="map_source_google_satellite">Google: Satellite</string> + <string name="map_source_osm_mapnik">OSM: Mapnik</string> + <string name="map_source_osm_cyclemap">OSM: Cyclemap</string> + <string name="map_source_osm_offline">OSM: Offline</string> <string name="init_sendToCgeo">Send to c:geo</string> <string name="init_sendToCgeo_name">Nome dispositivo:</string> @@ -484,7 +508,6 @@ <string name="cache_attributes">Attributi</string> <string name="cache_inventory">Oggetti</string> <string name="cache_log_offline">Log Offline</string> - <string name="cache_log_images_loading">Caricamento immagini log…</string> <string name="cache_log_images_title">Immagini Log</string> <string name="cache_log_image_default_title">Foto</string> <string name="cache_personal_note">Note personali</string> @@ -499,6 +522,9 @@ <string name="cache_favpoint_not_on">Questo cache non è uno dei tuoi favoriti.</string> <string name="cache_favpoint_add">Aggiungi</string> <string name="cache_favpoint_remove">Rimuovi</string> + <string name="cache_list_text">Lista:</string> + <string name="cache_list_change">Sposta</string> + <string name="cache_list_unknown">Non in una lista</string> <string name="cache_images">Immagini</string> <string name="cache_waypoints">Waypoints</string> @@ -583,9 +609,7 @@ <string name="cache_coordinates">Coordinate</string> <string name="cache_coordinates_original">Coordinate originali</string> <string name="cache_spoiler_images_title">Immagini spoiler</string> - <string name="cache_spoiler_images_loading">Caricamento immagini spoiler…</string> <string name="cache_images_title">Immaginis</string> - <string name="cache_images_loading">Caricamento immagini…</string> <string name="cache_log_types">Tipi di Log</string> <string name="cache_coordinates_no">Questo cache non ha coordinate.</string> <string name="cache_clear_history">Cancella cronologia</string> @@ -656,6 +680,7 @@ <string name="waypoint_edit_title">Modifica waypoint</string> <string name="waypoint_add_title">Aggiungi waypoint</string> <string name="waypoint_note">Note</string> + <string name="waypoint_visited">Visitato</string> <string name="waypoint_save">Salva</string> <string name="waypoint_loading">Caricamento waypoint…</string> <string name="waypoint_do_not_touch_cache_coordinates">Nessuna modifica alle coordinate cache</string> @@ -683,13 +708,6 @@ <string name="waypoint_coordinate_formats_plain">Plain</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">piedi</string> - <string name="unit_yd">iarde</string> - <string name="unit_mi">miglia</string> - <!-- visit --> <string name="visit_tweet">Segnala questo ritrovamento su Twitter</string> @@ -823,10 +841,7 @@ <string name="export_gpx_info">Il file GPX sarà esportato in %1$s con data ed ora correnti come nome file.</string> <string name="export_gpx_to">Invia il GPX esportato a</string> -<!-- attribute unknown --> - <string name="attribute_unknown_yes">(attributo sconosciuto) permesso</string> - <string name="attribute_unknown_no">(attributo sconosciuto) non permesso</string> - <!-- attributes (permissions -> allowed, not allowed) --> + <!-- GC attributes --> <string name="attribute_dogs_yes">Cani permessi</string> <string name="attribute_dogs_no">Cani NON permessi</string> <string name="attribute_bicycles_yes">Biciclette permesse</string> @@ -845,8 +860,6 @@ <string name="attribute_campfires_no">Fuochi da campo NON permessi</string> <string name="attribute_rv_yes">Camper/roulotte permessi</string> <string name="attribute_rv_no">Camper/roulotte NON permessi</string> - - <!-- attributes (conditions -> yes, no) --> <string name="attribute_kids_yes">Raccomandato per bambini</string> <string name="attribute_kids_no">Non raccomandato per bambini</string> <string name="attribute_onehour_yes">Richiede meno di un\'ora</string> @@ -899,8 +912,6 @@ <string name="attribute_landf_no">Non è un tour \"Lost and found\"</string> <string name="attribute_partnership_yes">Cache di gruppo</string> <string name="attribute_partnership_no">Cache non di gruppo</string> - - <!-- attributes (equipment -> required, not required) --> <string name="attribute_fee_yes">Accesso o parcheggio a pagamento</string> <string name="attribute_fee_no">Accesso o parcheggio non a pagamento</string> <string name="attribute_rappelling_yes">Richiesta attrezzatura da arrampicata</string> @@ -923,8 +934,6 @@ <string name="attribute_wirelessbeacon_no">Segnalatore radio non necessario</string> <string name="attribute_treeclimbing_yes">Richiede di salire su un albero</string> <string name="attribute_treeclimbing_no">Non richiede di salire su un albero</string> - - <!-- attributes (hazards -> present, not present) --> <string name="attribute_poisonoak_yes">Piante velenose</string> <string name="attribute_poisonoak_no">Piante non velenose</string> <string name="attribute_dangerousanimals_yes">Animali pericolosi</string> @@ -941,8 +950,6 @@ <string name="attribute_danger_no">Area non pericolosa</string> <string name="attribute_thorn_yes">Rovi</string> <string name="attribute_thorn_no">Senza rovi</string> - - <!-- attributes (facilities -> yes, no) --> <string name="attribute_wheelchair_yes">Accessibile con sedia a rotelle</string> <string name="attribute_wheelchair_no">Non accessibile con sedia a rotelle</string> <string name="attribute_parking_yes">Parcheggio</string> @@ -965,6 +972,65 @@ <string name="attribute_fuel_no">Lontano da pompa carburante</string> <string name="attribute_food_yes">Vicino a punto ristoro</string> <string name="attribute_food_no">Lontano da punti ristoro</string> + + <string name="attribute_oc_only_yes">Loggabile solo su Opencaching</string> + <string name="attribute_oc_only_no">Loggabile non solo su Opencaching</string> + <string name="attribute_link_only_yes">Hyperlink solo verso un altro portale di cache</string> + <string name="attribute_link_only_no">Non solo hyperlink ad un altro portale di cache</string> + <string name="attribute_letterbox_yes">Lettera (richiede francobollo)</string> + <string name="attribute_letterbox_no">No lettera (non richiede francobollo)</string> + <string name="attribute_railway_yes">Ferrovia attiva nelle vicinanze</string> + <string name="attribute_railway_no">Nessuna ferrovia nelle vicinanze</string> + <string name="attribute_syringe_yes">Pronto soccorso disponibile</string> + <string name="attribute_syringe_no">Pronto soccorso non disponibile</string> + <string name="attribute_swamp_yes">Paludoso</string> + <string name="attribute_swamp_no">Non paludoso</string> + <string name="attribute_hills_yes">Area collinare</string> + <string name="attribute_hills_no">Area non collinare</string> + <string name="attribute_poi_yes">Punto di interesse</string> + <string name="attribute_poi_no">Nessun punto di interesse</string> + <string name="attribute_moving_target_yes">Obiettivo in movimento</string> + <string name="attribute_moving_target_no">Obiettivo non in movimento</string> + <string name="attribute_webcam_yes">Webcam</string> + <string name="attribute_webcam_no">No webcam</string> + <string name="attribute_inside_yes">Con aree interne (cave, edifici etc.)</string> + <string name="attribute_inside_no">Senza aree interne</string> + <string name="attribute_in_water_yes">In acqua</string> + <string name="attribute_in_water_no">Non in acqua</string> + <string name="attribute_no_gps_yes">Senza GPS (lettere, cistes, carta e bussola...)</string> + <string name="attribute_no_gps_no">Con GPS</string> + <string name="attribute_overnight_yes">Necessario permanere di notte</string> + <string name="attribute_overnight_no">Permanenza notturna non necessaria</string> + <string name="attribute_specific_times_yes">Disponibile solo in certi orari</string> + <string name="attribute_specific_times_no">Disponibile a tutte le ore</string> + <string name="attribute_day_yes">Solo di giorno</string> + <string name="attribute_day_no">Non solo di giorno</string> + <string name="attribute_tide_yes">Marea</string> + <string name="attribute_tide_no">Senza marea</string> + <string name="attribute_all_seasons_yes">Tutte le stagioni</string> + <string name="attribute_all_seasons_no">Non in tutte le stagioni</string> + <string name="attribute_breeding_yes">Stagione di riproduzione / natura protetta</string> + <string name="attribute_breeding_no">Disponibile anche in stagione di riproduzione / natura protetta</string> + <string name="attribute_snow_proof_yes">Nascondiglio a prova di neve</string> + <string name="attribute_snow_proof_no">Nascondiglio non a prova di neve</string> + <string name="attribute_compass_yes">Bussola</string> + <string name="attribute_compass_no">Senza bussola</string> + <string name="attribute_cave_yes">Equipaggiamento da caverna</string> + <string name="attribute_cave_no">Senza equipaggiamento da caverna</string> + <string name="attribute_aircraft_yes">Aircraft</string> + <string name="attribute_aircraft_no">Senza aircraft</string> + <string name="attribute_investigation_yes">Investigazione</string> + <string name="attribute_investigation_no">Senza investigazione</string> + <string name="attribute_puzzle_yes">Puzzle / Mystery</string> + <string name="attribute_puzzle_no">No puzzle / mystery</string> + <string name="attribute_arithmetic_yes">Problema aritmetico</string> + <string name="attribute_arithmetic_no">Problema non aritmetico</string> + <string name="attribute_other_cache_yes">Cache di altro tipo</string> + <string name="attribute_other_cache_no">Cache non di altro tipo</string> + <string name="attribute_ask_owner_yes">Chiedere al proprietario per le condizioni di partenza</string> + <string name="attribute_ask_owner_no">Non chiedere al proprietario per le condizioni di partenza</string> + <string name="attribute_unknown_yes">Attributo sconosciuto</string> + <string name="attribute_unknown_no">Senza attributo sconosciuto</string> <!-- next things --> <string name="legal_note">Per usare i servizi di Geocaching.com, si applicano i termini e le condizioni del <a href="http://www.geocaching.com/about/termsofuse.aspx">Contratto Groundspeak</a> che deve essere approvato dall\'utente.</string> diff --git a/main/res/values-ja/strings.xml b/main/res/values-ja/strings.xml index 126a03c..27ffbd3 100644 --- a/main/res/values-ja/strings.xml +++ b/main/res/values-ja/strings.xml @@ -494,7 +494,6 @@ <string name="cache_attributes">属性</string> <string name="cache_inventory">目録</string> <string name="cache_log_offline">オフラインログ</string> - <string name="cache_log_images_loading">添付画像をロード中…</string> <string name="cache_log_images_title">ログの添付画像</string> <string name="cache_log_image_default_title">写真</string> <string name="cache_personal_note">パーソナルノート</string> @@ -595,9 +594,7 @@ <string name="cache_coordinates">座標</string> <string name="cache_coordinates_original">オリジナル座標</string> <!-- 「初公開時の座標」の方がいいかも --> <string name="cache_spoiler_images_title">スポイラー画像</string> - <string name="cache_spoiler_images_loading">スポイラー画像をロード中…</string> <string name="cache_images_title">画像</string> - <string name="cache_images_loading">画像をロード中…</string> <string name="cache_log_types">ログタイプ</string> <string name="cache_coordinates_no">このキャッシュに座標値はありません。</string> <string name="cache_clear_history">全履歴を削除</string> @@ -695,13 +692,6 @@ <string name="waypoint_coordinate_formats_plain">プレーン</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">この発見をTwitterでつぶやく</string> diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml index 729c382..557aa79 100644 --- a/main/res/values-nl/strings.xml +++ b/main/res/values-nl/strings.xml @@ -497,7 +497,6 @@ <string name="cache_attributes">Attributen</string> <string name="cache_inventory">Inventaris</string> <string name="cache_log_offline">Offline log</string> - <string name="cache_log_images_loading">Laden van logafbeeldingen…</string> <string name="cache_log_images_title">Logafbeelding</string> <string name="cache_log_image_default_title">Foto</string> <string name="cache_personal_note">Persoonlijke aantekening</string> @@ -600,9 +599,7 @@ <string name="cache_coordinates">Coördinaten</string> <string name="cache_coordinates_original">Originele coordinaten</string> <string name="cache_spoiler_images_title">Spoiler afbeeldingen</string> - <string name="cache_spoiler_images_loading">Spoiler afbeeldingen laden…</string> <string name="cache_images_title">Afbeeldingen</string> - <string name="cache_images_loading">Afbeeldingen laden…</string> <string name="cache_log_types">Log types</string> <string name="cache_coordinates_no">Deze cache heeft geen coördinaten.</string> <string name="cache_clear_history">Maak geschiedenis leeg</string> @@ -701,13 +698,6 @@ <string name="waypoint_coordinate_formats_plain">Vlak</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">Post deze vondst op Twitter</string> diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml index b5328c4..b3a5032 100644 --- a/main/res/values-pl/strings.xml +++ b/main/res/values-pl/strings.xml @@ -488,7 +488,6 @@ <string name="cache_attributes">Atrybuty</string> <string name="cache_inventory">Inwentarz</string> <string name="cache_log_offline">Wpis offline</string> - <string name="cache_log_images_loading">Trwa ładowanie zdjęć z wpisu…</string> <string name="cache_log_images_title">Zdjęcie z wpisu</string> <string name="cache_log_image_default_title">Zdjęcie</string> <string name="cache_personal_note">Notatka osobista</string> @@ -586,9 +585,7 @@ <string name="cache_coordinates">Współrzędne</string> <string name="cache_coordinates_original">Oryginalne współrzędne</string> <string name="cache_spoiler_images_title">Zdjęcia spoiler</string> - <string name="cache_spoiler_images_loading">Ładuję zdjęcia spoiler…</string> <string name="cache_images_title">Zdjęcia</string> - <string name="cache_images_loading">Ładuję zdjęcia…</string> <string name="cache_log_types">Rodzaj wpisu</string> <string name="cache_coordinates_no">Ta skrzynka nie ma współrzędnych GPS.</string> <string name="cache_clear_history">Usuń historię</string> @@ -684,13 +681,6 @@ <string name="waypoint_coordinate_formats_plain">zwykłe</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">stopy</string> - <string name="unit_yd">jardy</string> - <string name="unit_mi">mile</string> - <!-- visit --> <string name="visit_tweet">Wyślij informację do Twitter</string> diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml index 5f67281..d6ee413 100644 --- a/main/res/values-pt/strings.xml +++ b/main/res/values-pt/strings.xml @@ -484,7 +484,6 @@ <string name="cache_attributes">Atributos</string> <string name="cache_inventory">Inventário</string> <string name="cache_log_offline">Registo Offline</string> - <string name="cache_log_images_loading">A carregar imagem do registo…</string> <string name="cache_log_images_title">Imagem do registo</string> <string name="cache_log_image_default_title">Foto</string> <string name="cache_personal_note">Nota pessoal</string> @@ -580,9 +579,7 @@ <string name="cache_coordinates">Coordenadas</string> <string name="cache_coordinates_original">Coordenadas originais</string> <string name="cache_spoiler_images_title">Imagens spoiler</string> - <string name="cache_spoiler_images_loading">A carregar imagens spoiler…</string> <string name="cache_images_title">Imagens</string> - <string name="cache_images_loading">A carregar as imagens…</string> <string name="cache_log_types">Tipos de log</string> <string name="cache_coordinates_no">Esta cache não tem coordenadas.</string> <string name="cache_clear_history">Apagar histórico</string> diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml index cef88d4..ef316ea 100644 --- a/main/res/values-sk/strings.xml +++ b/main/res/values-sk/strings.xml @@ -484,7 +484,6 @@ <string name="cache_attributes">Atribúty</string> <string name="cache_inventory">Obsah</string> <string name="cache_log_offline">Offline log</string> - <string name="cache_log_images_loading">Načítanie obrázku z logu…</string> <string name="cache_log_images_title">Obrázok z logu</string> <string name="cache_log_image_default_title">Fotografia</string> <string name="cache_personal_note">Osobná poznámka</string> @@ -579,9 +578,7 @@ <string name="cache_coordinates">Súradnice</string> <string name="cache_coordinates_original">Pôvodné súradnice</string> <string name="cache_spoiler_images_title">Spoilerové obrázky</string> - <string name="cache_spoiler_images_loading">Načítanie spoilerových obrázkov…</string> <string name="cache_images_title">Obrázky</string> - <string name="cache_images_loading">Prebieha načítanie obrázkov…</string> <string name="cache_log_types">Typy záznamov</string> <string name="cache_coordinates_no">Táto skrýša nemá žiadne súradnice.</string> <string name="cache_clear_history">Vymazať históriu</string> @@ -665,13 +662,6 @@ <string name="waypoint_coordinate_formats_plain">Iba text</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">informovať o nájdení na Twitteri</string> diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml index d3be9ff..b68de4c 100644 --- a/main/res/values-sv/strings.xml +++ b/main/res/values-sv/strings.xml @@ -512,7 +512,6 @@ <string name="cache_attributes">Attribut</string> <string name="cache_inventory">Innehåll</string> <string name="cache_log_offline">Offline logg</string> - <string name="cache_log_images_loading">Laddar loggbilder…</string> <string name="cache_log_images_title">Loggbild</string> <string name="cache_log_image_default_title">Foto</string> <string name="cache_personal_note">Personlig anteckning</string> @@ -615,9 +614,7 @@ <string name="cache_coordinates">Koordinater</string> <string name="cache_coordinates_original">Ursprungliga koordinater</string> <string name="cache_spoiler_images_title">Spoiler bilder</string> - <string name="cache_spoiler_images_loading">Laddar spoiler bilder…</string> <string name="cache_images_title">Bilder</string> - <string name="cache_images_loading">Laddar bilder…</string> <string name="cache_log_types">Loggtyper</string> <string name="cache_coordinates_no">Cachen saknar koordinater.</string> <string name="cache_clear_history">Rensa historik</string> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 13926c5..d35a982 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -512,7 +512,6 @@ <string name="cache_attributes">Attributes</string> <string name="cache_inventory">Inventory</string> <string name="cache_log_offline">Offline Log</string> - <string name="cache_log_images_loading">Loading Log images…</string> <string name="cache_log_images_title">Log images</string> <string name="cache_log_image_default_title">Photo</string> <string name="cache_personal_note">Personal note</string> @@ -597,6 +596,8 @@ <string name="cache_status_disabled">Disabled</string> <string name="cache_status_premium">Premium Members only</string> <string name="cache_status_not_premium">All Members Access</string> + <string name="cache_status_stored">Stored</string> + <string name="cache_status_not_stored">Not stored</string> <string name="cache_geocode">Geo code</string> <string name="cache_name">Name</string> <string name="cache_type">Type</string> @@ -615,9 +616,7 @@ <string name="cache_coordinates">Coordinates</string> <string name="cache_coordinates_original">Original Coordinates</string> <string name="cache_spoiler_images_title">Spoiler images</string> - <string name="cache_spoiler_images_loading">Loading spoiler images…</string> <string name="cache_images_title">Images</string> - <string name="cache_images_loading">Loading images…</string> <string name="cache_log_types">Log types</string> <string name="cache_coordinates_no">This cache has no coordinates.</string> <string name="cache_clear_history">Clear history</string> @@ -717,13 +716,6 @@ <string name="waypoint_coordinate_formats_plain">Plain</string> - <!-- distance units --> - <string name="unit_m">m</string> - <string name="unit_km">km</string> - <string name="unit_ft">ft</string> - <string name="unit_yd">yd</string> - <string name="unit_mi">mi</string> - <!-- visit --> <string name="visit_tweet">Post this find to Twitter</string> diff --git a/main/res/values/strings_not_translatable.xml b/main/res/values/strings_not_translatable.xml index 553c16a..b392d73 100644 --- a/main/res/values/strings_not_translatable.xml +++ b/main/res/values/strings_not_translatable.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="waypoint_coordinate_formats" translatable="false">
<item>@string/waypoint_coordinate_formats_plain</item>
@@ -8,7 +8,14 @@ </string-array>
<!-- distance units -->
- <string-array name="distance_units">
+ <string name="unit_m" translatable="false">m</string>
+ <string name="unit_km" translatable="false">km</string>
+ <string name="unit_ft" translatable="false">ft</string>
+ <string name="unit_yd" translatable="false">yd</string>
+ <string name="unit_mi" translatable="false">mi</string>
+
+ <!-- distance units -->
+ <string-array name="distance_units" translatable="false">
<item>@string/unit_m</item>
<item>@string/unit_km</item>
<item>@string/unit_ft</item>
@@ -80,40 +87,17 @@ <!-- changelog -->
<string name="changelog" translatable="false">\n
- <b>2013.04.03</b>\n\n
+ <b>Next release</b>\n\n
<b>New Features/Functions:</b>\n
- · Support of attaching pictures to logs\n
- · Support of opencaching.de online API in live map and nearby search\n
- · Support for searching opencaching.nl caches\n
- · Alphabetical sorting of OSM:Offline maps in map selection\n
- · Color markers also in trackable logbook\n
- · Edit cache type filter by clicking on filter bar\n
- · Inverse sorting of cache lists (hit the same menu again)\n
- · View pager for trackable activity\n
- · Menu item to delete past events\n
- · Settings: Option to ask for list to store caches\n
- · Change list in cache details\n
- · Ability to select \"All\" list from main screen\n
- · Default log type for event caches will be \"Attended\" if \"Will attend\" was logged before\n
- · Improved and extended cache type detection on live map\n
- · Waypoints can be marked as visited\n
- · Possibility to delete offline logs in lists\n
- · Support of language specific characters in log text equally to the website\n
+ · ...\n
\n
<b>Bugfixing:</b>\n
- · Final flag icon lost when updating cache with self defined final\n
- · Bad selection in directory chooser\n
- · Log type \"Retract Listing\" now parsed correctly\n
- · Active cache detail page now remembered when rotating device\n
- · Replaced the term \"GC-Code\" by \"Geocode\"\n
- · Improvements for light theme\n
- · Share function uses short URL again\n
- · Offline log marker now shown after autosave of log\n
- · GPX export no longer exports waypoints without coordinates\n
- · Corrections for light scheme on Adnroid 2.x devices\n
- · Avoid crash if logging page is opened while not connected correctly\n
+ · Do not apply encryption/decryption when clicking on a link in a log\n
+ · Also show a picture attached to a log locally after sending the log\n
+ · Improved display of log text for OC-caches\n
+ · Improved performance of GPX exports\n
\n
- <a href="https://github.com/cgeo/c-geo-opensource/issues?milestone=9&state=closed">Detailed list of all changes</a>\n
+ <a href="https://github.com/cgeo/c-geo-opensource/issues?milestone=17&state=closed">Detailed list of all changes</a>\n
\n
<b>Known Limitations/Bugs:</b>\n
· Live map:\n
@@ -123,7 +107,6 @@ On low zoom owned/found caches may not be hidden anymore\n
· Other:\n
Log images with huge size cause a long loading time\n
- After uploading log images they are only shown in the logview after refreshing the cache\n
The personal note added to a cache is not synced to geocaching.com but will be overruled by personal notes on geocaching.com\n
On devices with HD display resolution OSM maps might not work. Please use Google maps in this case.\n
A huge amount of pictures on the image tab of a cache might cause a crash\n
diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index f903d00..44acfc5 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -67,12 +67,22 @@ public abstract class AbstractPopupActivity extends AbstractActivity { cacheDistance.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(cache.getCoords()))); cacheDistance.bringToFront(); } + onUpdateGeoData(geo); } catch (Exception e) { Log.w("Failed to UpdateLocation location."); } } }; + /** + * Callback to run when new location information is available. + * This may be overriden by deriving classes. The default implementation does nothing. + * + * @param geo the new data + */ + public void onUpdateGeoData(final IGeoData geo) { + } + protected AbstractPopupActivity(String helpTopic, int layout) { super(helpTopic); this.layout = layout; diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 43ce65f..c4287ed 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -21,13 +21,14 @@ import cgeo.geocaching.network.Parameters; import cgeo.geocaching.ui.AbstractCachingPageViewCreator; import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod; import cgeo.geocaching.ui.CacheDetailsCreator; +import cgeo.geocaching.ui.CoordinatesFormatSwitcher; import cgeo.geocaching.ui.DecryptTextClickListener; +import cgeo.geocaching.ui.EditNoteDialog; +import cgeo.geocaching.ui.EditNoteDialog.EditNoteDialogListener; import cgeo.geocaching.ui.Formatter; import cgeo.geocaching.ui.ImagesList; -import cgeo.geocaching.ui.ImagesList.ImageType; import cgeo.geocaching.ui.LoggingUI; import cgeo.geocaching.ui.WeakReferenceHandler; -import cgeo.geocaching.ui.dialog.EditorDialog; import cgeo.geocaching.utils.BaseUtils; import cgeo.geocaching.utils.CancellableHandler; import cgeo.geocaching.utils.ClipboardUtils; @@ -65,6 +66,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.support.v4.app.FragmentManager; import android.text.Editable; import android.text.Html; import android.text.Spannable; @@ -112,7 +114,8 @@ import java.util.regex.Pattern; * * e.g. details, description, logs, waypoints, inventory... */ -public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailActivity.Page> { +public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailActivity.Page> + implements EditNoteDialogListener { private static final int MENU_FIELD_COPY = 1; private static final int MENU_FIELD_TRANSLATE = 2; @@ -139,6 +142,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc private final Progress progress = new Progress(); private SearchResult search; + private EditNoteDialogListener editNoteDialogListener; + private final GeoDirHandler locationUpdater = new GeoDirHandler() { @Override public void updateGeoData(final IGeoData geo) { @@ -899,7 +904,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return; } imagesList = new ImagesList(this, cache.getGeocode()); - imagesList.loadImages(imageView, cache.getImages(), ImageType.AllImages, false); + imagesList.loadImages(imageView, cache.getImages(), false); } public static void startActivity(final Context context, final String geocode) { @@ -1202,23 +1207,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc // cache coordinates if (cache.getCoords() != null) { TextView valueView = details.add(R.string.cache_coordinates, cache.getCoords().toString()); - valueView.setOnClickListener(new View.OnClickListener() { - private int position = 0; - private GeopointFormatter.Format[] availableFormats = new GeopointFormatter.Format[] { - GeopointFormatter.Format.LAT_LON_DECMINUTE, - GeopointFormatter.Format.LAT_LON_DECSECOND, - GeopointFormatter.Format.LAT_LON_DECDEGREE - }; - - // rotate coordinate formats on click - @Override - public void onClick(View view) { - position = (position + 1) % availableFormats.length; - - final TextView valueView = (TextView) view.findViewById(R.id.value); - valueView.setText(cache.getCoords().format(availableFormats[position])); - } - }); + valueView.setOnClickListener(new CoordinatesFormatSwitcher(cache.getCoords())); registerForContextMenu(valueView); } @@ -1794,16 +1783,16 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc personalNoteEdit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - EditorDialog editor = new EditorDialog(CacheDetailActivity.this, personalNoteView.getText()); - editor.setOnEditorUpdate(new EditorDialog.EditorUpdate() { + editNoteDialogListener = new EditNoteDialogListener() { @Override - public void update(CharSequence editorText) { - cache.setPersonalNote(editorText.toString()); + public void onFinishEditNoteDialog(final String note) { + cache.setPersonalNote(note); setPersonalNote(personalNoteView); - cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB)); - } - }); - editor.show(); + cgData.saveCache(cache, EnumSet.of(SaveFlag.SAVE_DB)); } + }; + final FragmentManager fm = getSupportFragmentManager(); + final EditNoteDialog dialog = new EditNoteDialog(cache.getPersonalNote()); + dialog.show(fm, "fragment_edit_note"); } }); } else { @@ -1866,13 +1855,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc personalNoteView.setText(personalNote, TextView.BufferType.SPANNABLE); if (StringUtils.isNotBlank(personalNote)) { personalNoteView.setVisibility(View.VISIBLE); - } - else { + } else { personalNoteView.setVisibility(View.GONE); } - } - - private void loadLongDescription() { + }private void loadLongDescription() { Button showDesc = (Button) view.findViewById(R.id.show_description); showDesc.setVisibility(View.GONE); showDesc.setOnClickListener(null); @@ -1884,6 +1870,11 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } + @Override + public void onFinishEditNoteDialog(final String note) { + editNoteDialogListener.onFinishEditNoteDialog(note); + } + private static class HtmlImageCounter implements Html.ImageGetter { private int imageCount = 0; @@ -2095,7 +2086,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc if (imageCounter.getImageCount() > 0) { // Complete view: parse again with loading images - if necessary ! If there are any images causing problems the user can see at least the preview LogImageLoader loader = new LogImageLoader(holder); - loader.execute(new String[] { logText }); + loader.execute(logText); } } else { @@ -2206,6 +2197,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc // coordinates if (null != wpt.getCoords()) { final TextView coordinatesView = (TextView) waypointView.findViewById(R.id.coordinates); + coordinatesView.setOnClickListener(new CoordinatesFormatSwitcher(wpt.getCoords())); coordinatesView.setText(wpt.getCoords().toString()); coordinatesView.setVisibility(View.VISIBLE); } diff --git a/main/src/cgeo/geocaching/Geocache.java b/main/src/cgeo/geocaching/Geocache.java index 9a8325d..000435e 100644 --- a/main/src/cgeo/geocaching/Geocache.java +++ b/main/src/cgeo/geocaching/Geocache.java @@ -49,6 +49,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.regex.Pattern; @@ -710,10 +711,7 @@ public class Geocache implements ICache, IWaypoint { public String getPersonalNote() { // non premium members have no personal notes, premium members have an empty string by default. // map both to null, so other code doesn't need to differentiate - if (StringUtils.isBlank(personalNote)) { - return null; - } - return personalNote; + return StringUtils.defaultIfBlank(personalNote, null); } public boolean supportsUserActions() { @@ -1360,6 +1358,9 @@ public class Geocache implements ICache, IWaypoint { return null; } + /** + * Detect coordinates in the personal note and convert them to user defined waypoints. Works by rule of thumb. + */ public void parseWaypointsFromNote() { try { if (StringUtils.isBlank(getPersonalNote())) { @@ -1372,10 +1373,14 @@ public class Geocache implements ICache, IWaypoint { while (matcher.find()) { try { final Geopoint point = new Geopoint(note.substring(matcher.start())); - // coords must have non zero latitude and longitude and at least one part shall have fractional degrees - if (point.getLatitudeE6() != 0 && point.getLongitudeE6() != 0 && ((point.getLatitudeE6() % 1000) != 0 || (point.getLongitudeE6() % 1000) != 0)) { + // Coords must have non zero latitude and longitude, at least one part shall have fractional degrees, + // and there must exist no waypoint with the same coordinates already. + if (point.getLatitudeE6() != 0 && point.getLongitudeE6() != 0 && + ((point.getLatitudeE6() % 1000) != 0 || (point.getLongitudeE6() % 1000) != 0) && + !hasIdenticalWaypoint(point)) { final String name = cgeoapplication.getInstance().getString(R.string.cache_personal_note) + " " + count; - final Waypoint waypoint = new Waypoint(name, WaypointType.WAYPOINT, false); + final String potentialWaypointType = note.substring(Math.max(0, matcher.start() - 15)); + final Waypoint waypoint = new Waypoint(name, parseWaypointType(potentialWaypointType), false); waypoint.setCoords(point); addOrChangeWaypoint(waypoint, false); count++; @@ -1392,6 +1397,34 @@ public class Geocache implements ICache, IWaypoint { } } + /** + * Detect waypoint types in the personal note text. It works by rule of thumb only. + */ + private static WaypointType parseWaypointType(final String input) { + final String lowerInput = StringUtils.substring(input, 0, 20).toLowerCase(Locale.getDefault()); + for (WaypointType wpType : WaypointType.values()) { + if (lowerInput.contains(wpType.getL10n().toLowerCase(Locale.getDefault()))) { + return wpType; + } + if (lowerInput.contains(wpType.id)) { + return wpType; + } + if (lowerInput.contains(wpType.name().toLowerCase(Locale.US))) { + return wpType; + } + } + return WaypointType.WAYPOINT; + } + + private boolean hasIdenticalWaypoint(final Geopoint point) { + for (final Waypoint waypoint: waypoints) { + if (waypoint.getCoords().equals(point)) { + return true; + } + } + return false; + } + /* * For working in the debugger * (non-Javadoc) diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java index 08622a9..347cd86 100644 --- a/main/src/cgeo/geocaching/ImageSelectActivity.java +++ b/main/src/cgeo/geocaching/ImageSelectActivity.java @@ -159,6 +159,10 @@ public class ImageSelectActivity extends AbstractActivity { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imageUri = getOutputImageFileUri(); // create a file to save the image + if (imageUri == null) { + showFailure(); + return; + } intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); // set the image file name // start the image capture Intent @@ -180,37 +184,61 @@ public class ImageSelectActivity extends AbstractActivity { return; } - if (resultCode == RESULT_OK) { - if (data != null) { - Uri selectedImage = data.getData(); - String[] filePathColumn = { MediaColumns.DATA }; + if (resultCode != RESULT_OK) { + // Image capture failed, advise user + showFailure(); + return; + } - Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); + if (data != null) { + Uri selectedImage = data.getData(); + String[] filePathColumn = { MediaColumns.DATA }; + + Cursor cursor = null; + try { + cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); + if (cursor == null) { + showFailure(); + return; + } cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String filePath = cursor.getString(columnIndex); + if (StringUtils.isBlank(filePath)) { + showFailure(); + return; + } imageUri = Uri.parse(filePath); - cursor.close(); - - Log.d("SELECT IMAGE data = " + data.toString()); - } else { - Log.d("SELECT IMAGE data is null"); + } catch (Exception e) { + Log.e("ImageSelectActivity.onActivityResult", e); + showFailure(); + } finally { + if (cursor != null) { + cursor.close(); + } } - if (requestCode == SELECT_NEW_IMAGE) { - showToast(getResources().getString(R.string.info_stored_image) + "\n" + imageUri); - } + Log.d("SELECT IMAGE data = " + data.toString()); } else { - // Image capture failed, advise user - showToast(getResources().getString(R.string.err_aquire_image_failed)); - return; + Log.d("SELECT IMAGE data is null"); + } + + if (requestCode == SELECT_NEW_IMAGE) { + showToast(getResources().getString(R.string.info_stored_image) + "\n" + imageUri); } loadImagePreview(); } + private void showFailure() { + showToast(getResources().getString(R.string.err_aquire_image_failed)); + } + private void loadImagePreview() { + if (imageUri == null) { + return; + } if (!new File(imageUri.getPath()).exists()) { Log.i("Image does not exist"); return; @@ -225,7 +253,11 @@ public class ImageSelectActivity extends AbstractActivity { } private static Uri getOutputImageFileUri() { - return Uri.fromFile(getOutputImageFile()); + final File file = getOutputImageFile(); + if (file == null) { + return null; + } + return Uri.fromFile(file); } /** Create a File for saving an image or video */ diff --git a/main/src/cgeo/geocaching/ImagesActivity.java b/main/src/cgeo/geocaching/ImagesActivity.java index 24f699e..07ff734 100644 --- a/main/src/cgeo/geocaching/ImagesActivity.java +++ b/main/src/cgeo/geocaching/ImagesActivity.java @@ -19,10 +19,6 @@ import java.util.List; public class ImagesActivity extends AbstractActivity { - private static final String EXTRAS_IMAGES = "images"; - private static final String EXTRAS_TYPE = "type"; - private static final String EXTRAS_GEOCODE = "geocode"; - private boolean offline; private ArrayList<Image> imageNames; private ImagesList imagesList; @@ -37,8 +33,8 @@ public class ImagesActivity extends AbstractActivity { String geocode = null; if (extras != null) { - geocode = extras.getString(EXTRAS_GEOCODE); - imgType = (ImageType) extras.getSerializable(EXTRAS_TYPE); + geocode = extras.getString(Intents.EXTRA_GEOCODE); + imgType = (ImageType) extras.getSerializable(Intents.EXTRA_TYPE); } if (extras == null || geocode == null) { @@ -54,7 +50,7 @@ public class ImagesActivity extends AbstractActivity { imagesList = new ImagesList(this, geocode); - imageNames = extras.getParcelableArrayList(EXTRAS_IMAGES); + imageNames = extras.getParcelableArrayList(Intents.EXTRA_IMAGES); if (CollectionUtils.isEmpty(imageNames)) { showToast(res.getString(R.string.warn_load_images)); finish(); @@ -67,7 +63,7 @@ public class ImagesActivity extends AbstractActivity { @Override public void onStart() { super.onStart(); - imagesList.loadImages(findViewById(R.id.spoiler_list), imageNames, imgType, offline); + imagesList.loadImages(findViewById(R.id.spoiler_list), imageNames, offline); } @Override @@ -85,12 +81,12 @@ public class ImagesActivity extends AbstractActivity { final Intent logImgIntent = new Intent(fromActivity, ImagesActivity.class); // if resuming our app within this activity, finish it and return to the cache activity logImgIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) - .putExtra(EXTRAS_GEOCODE, geocode) - .putExtra(EXTRAS_TYPE, imageType); + .putExtra(Intents.EXTRA_GEOCODE, geocode) + .putExtra(Intents.EXTRA_TYPE, imageType); // avoid forcing the array list as parameter type final ArrayList<Image> arrayList = new ArrayList<Image>(logImages); - logImgIntent.putParcelableArrayListExtra(EXTRAS_IMAGES, arrayList); + logImgIntent.putParcelableArrayListExtra(Intents.EXTRA_IMAGES, arrayList); fromActivity.startActivity(logImgIntent); } diff --git a/main/src/cgeo/geocaching/Intents.java b/main/src/cgeo/geocaching/Intents.java index 7f0a004..a700451 100644 --- a/main/src/cgeo/geocaching/Intents.java +++ b/main/src/cgeo/geocaching/Intents.java @@ -9,10 +9,11 @@ public class Intents { private static final String PREFIX = "cgeo.geocaching.intent.extra."; public static final String EXTRA_ADDRESS = PREFIX + "address"; - public static final String EXTRAS_COORDS = PREFIX + "coords"; + public static final String EXTRA_COORDS = PREFIX + "coords"; public static final String EXTRA_COUNT = PREFIX + "count"; public static final String EXTRA_GEOCODE = PREFIX + "geocode"; public static final String EXTRA_GUID = PREFIX + "guid"; + public static final String EXTRA_IMAGES = PREFIX + "images"; public static final String EXTRA_ID = PREFIX + "id"; public static final String EXTRA_KEYWORD = PREFIX + "keyword"; public static final String EXTRA_KEYWORD_SEARCH = PREFIX + "keyword_search"; @@ -23,6 +24,7 @@ public class Intents { public static final String EXTRA_SEARCH = PREFIX + "search"; public static final String EXTRA_START_DIR = PREFIX + "start_dir"; public static final String EXTRA_TRACKING_CODE = PREFIX + "tracking_code"; + public static final String EXTRA_TYPE = PREFIX + "type"; public static final String EXTRA_USERNAME = PREFIX + "username"; public static final String EXTRA_WAYPOINT_ID = PREFIX + "waypoint_id"; public static final String EXTRA_CACHELIST = PREFIX + "cache_list"; diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java index 231555c..6fdff5a 100644 --- a/main/src/cgeo/geocaching/SearchActivity.java +++ b/main/src/cgeo/geocaching/SearchActivity.java @@ -291,7 +291,7 @@ public class SearchActivity extends AbstractActivity { } } else { try { - cgeocaches.startActivityCoordinates(this, new Geopoint(latText, lonText)); + cgeocaches.startActivityCoordinates(this, new Geopoint(StringUtils.trim(latText), StringUtils.trim(lonText))); } catch (Geopoint.ParseException e) { showToast(res.getString(e.resource)); } @@ -315,7 +315,7 @@ public class SearchActivity extends AbstractActivity { return; } - cgeocaches.startActivityKeyword(this, keyText); + cgeocaches.startActivityKeyword(this, StringUtils.trim(keyText)); } private class FindByAddressListener implements View.OnClickListener { @@ -334,7 +334,7 @@ public class SearchActivity extends AbstractActivity { } final Intent addressesIntent = new Intent(this, AddressListActivity.class); - addressesIntent.putExtra(Intents.EXTRA_KEYWORD, addText); + addressesIntent.putExtra(Intents.EXTRA_KEYWORD, StringUtils.trim(addText)); startActivity(addressesIntent); } @@ -354,7 +354,7 @@ public class SearchActivity extends AbstractActivity { return; } - cgeocaches.startActivityUserName(this, usernameText); + cgeocaches.startActivityUserName(this, StringUtils.trim(usernameText)); } private void findByOwnerFn() { @@ -369,7 +369,7 @@ public class SearchActivity extends AbstractActivity { return; } - cgeocaches.startActivityOwner(this, usernameText); + cgeocaches.startActivityOwner(this, StringUtils.trim(usernameText)); } private class FindByGeocodeListener implements View.OnClickListener { @@ -388,7 +388,7 @@ public class SearchActivity extends AbstractActivity { return; } - CacheDetailActivity.startActivity(this, geocodeText); + CacheDetailActivity.startActivity(this, StringUtils.trim(geocodeText)); } private class FindTrackableListener implements View.OnClickListener { @@ -408,7 +408,7 @@ public class SearchActivity extends AbstractActivity { } final Intent trackablesIntent = new Intent(this, TrackableActivity.class); - trackablesIntent.putExtra(Intents.EXTRA_GEOCODE, trackableText.toUpperCase(Locale.US)); + trackablesIntent.putExtra(Intents.EXTRA_GEOCODE, StringUtils.trim(trackableText).toUpperCase(Locale.US)); startActivity(trackablesIntent); } diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java index 0c157e1..93bfa9b 100644 --- a/main/src/cgeo/geocaching/Settings.java +++ b/main/src/cgeo/geocaching/Settings.java @@ -149,6 +149,7 @@ public final class Settings { // maps private static MapProvider mapProvider = null; + private static String cacheTwitterMessage = "I found [NAME] ([URL])"; private Settings() { // this class is not to be instantiated; @@ -1424,4 +1425,18 @@ public final class Settings { } }); } + + public static String getCacheTwitterMessage() { + // TODO make customizable from UI + return cacheTwitterMessage; + } + + public static String getTrackableTwitterMessage() { + // TODO make customizable from UI + return "I touched [NAME] ([URL])!"; + } + + public static void setCacheTwitterMessage(final String message) { + cacheTwitterMessage = message; + } } diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java index cd88071..9a4c00b 100644 --- a/main/src/cgeo/geocaching/StaticMapsProvider.java +++ b/main/src/cgeo/geocaching/StaticMapsProvider.java @@ -10,7 +10,6 @@ import cgeo.geocaching.utils.Log; import ch.boye.httpclientandroidlib.HttpResponse; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import android.content.Context; @@ -81,10 +80,6 @@ public class StaticMapsProvider { } public static void downloadMaps(Geocache cache) { - if (cache == null) { - Log.e("downloadMaps - missing input parameter cache"); - return; - } if ((!Settings.isStoreOfflineMaps() && !Settings.isStoreOfflineWpMaps()) || StringUtils.isBlank(cache.getGeocode())) { return; } @@ -96,8 +91,8 @@ public class StaticMapsProvider { } // clean old and download static maps for waypoints if one is missing - if (Settings.isStoreOfflineWpMaps() && CollectionUtils.isNotEmpty(cache.getWaypoints())) { - for (Waypoint waypoint : cache.getWaypoints()) { + if (Settings.isStoreOfflineWpMaps()) { + for (final Waypoint waypoint : cache.getWaypoints()) { if (!hasAllStaticMapsForWaypoint(cache.getGeocode(), waypoint)) { refreshAllWpStaticMaps(cache, edge); } @@ -167,10 +162,6 @@ public class StaticMapsProvider { } public static void storeCachePreviewMap(final Geocache cache) { - if (cache == null) { - Log.e("storeCachePreviewMap - missing input parameter cache"); - return; - } final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA); final Display display = ((WindowManager) cgeoapplication.getInstance().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); @@ -183,12 +174,7 @@ public class StaticMapsProvider { private static int guessMaxDisplaySide() { Point displaySize = Compatibility.getDisplaySize(); - final int maxWidth = displaySize.x - 25; - final int maxHeight = displaySize.y - 25; - if (maxWidth > maxHeight) { - return maxWidth; - } - return maxHeight; + return Math.max(displaySize.x, displaySize.y) - 25; } private static void downloadMaps(final String geocode, final String markerUrl, final String prefix, final String latlonMap, final int edge, @@ -245,7 +231,7 @@ public class StaticMapsProvider { /** * Check if at least one map file exists for the given cache. - * + * * @param cache * @return <code>true</code> if at least one map file exists; <code>false</code> otherwise */ @@ -268,7 +254,7 @@ public class StaticMapsProvider { /** * Checks if at least one map file exists for the given geocode and waypoint ID. - * + * * @param geocode * @param waypoint * @return <code>true</code> if at least one map file exists; <code>false</code> otherwise @@ -287,7 +273,7 @@ public class StaticMapsProvider { /** * Checks if all map files exist for the given geocode and waypoint ID. - * + * * @param geocode * @param waypoint * @return <code>true</code> if all map files exist; <code>false</code> otherwise @@ -326,5 +312,4 @@ public class StaticMapsProvider { } return null; } - } diff --git a/main/src/cgeo/geocaching/StoredList.java b/main/src/cgeo/geocaching/StoredList.java index 5a6f132..778c112 100644 --- a/main/src/cgeo/geocaching/StoredList.java +++ b/main/src/cgeo/geocaching/StoredList.java @@ -12,7 +12,10 @@ import android.content.res.Resources; import android.view.View; import android.widget.EditText; +import java.text.Collator; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; public class StoredList { @@ -69,7 +72,7 @@ public class StoredList { } public void promptForListSelection(final int titleId, final RunnableWithArgument<Integer> runAfterwards, final boolean onlyMoveTargets, final int exceptListId) { - final List<StoredList> lists = cgData.getLists(); + final List<StoredList> lists = getSortedLists(); if (lists == null) { return; @@ -115,6 +118,19 @@ public class StoredList { builder.create().show(); } + private static List<StoredList> getSortedLists() { + final Collator collator = Collator.getInstance(); + final List<StoredList> lists = cgData.getLists(); + Collections.sort(lists, new Comparator<StoredList>() { + + @Override + public int compare(StoredList lhs, StoredList rhs) { + return collator.compare(lhs.getTitle(), rhs.getTitle()); + } + }); + return lists; + } + public void promptForListCreation(final RunnableWithArgument<Integer> runAfterwards) { handleListNameInput("", R.string.list_dialog_create_title, R.string.list_dialog_create, new RunnableWithArgument<String>() { @@ -176,4 +192,13 @@ public class StoredList { }); } } + + /** + * Get the list title. This method is not public by intention to make clients use the {@link UserInterface} class. + * + * @return + */ + protected String getTitle() { + return title; + } } diff --git a/main/src/cgeo/geocaching/VisitCacheActivity.java b/main/src/cgeo/geocaching/VisitCacheActivity.java index d95f6df..74890f4 100644 --- a/main/src/cgeo/geocaching/VisitCacheActivity.java +++ b/main/src/cgeo/geocaching/VisitCacheActivity.java @@ -12,6 +12,7 @@ import cgeo.geocaching.network.Parameters; import cgeo.geocaching.twitter.Twitter; import cgeo.geocaching.ui.Formatter; import cgeo.geocaching.ui.dialog.DateDialog; +import cgeo.geocaching.utils.AsyncTaskWithProgress; import cgeo.geocaching.utils.Log; import cgeo.geocaching.utils.LogTemplateProvider; import cgeo.geocaching.utils.LogTemplateProvider.LogContext; @@ -20,17 +21,15 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; +import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.util.SparseArray; @@ -67,7 +66,6 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD private LayoutInflater inflater = null; private Geocache cache = null; - private ProgressDialog waitDialog = null; private String cacheid = null; private String geocode = null; private String text = null; @@ -240,34 +238,6 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD return res.getString(R.string.log_post_rate) + " " + ratingTextValue(rating) + "*"; } - private final Handler postLogHandler = new Handler() { - - @Override - public void handleMessage(final Message msg) { - if (waitDialog != null) { - waitDialog.dismiss(); - } - - final StatusCode error = (StatusCode) msg.obj; - if (error == StatusCode.NO_ERROR) { - showToast(res.getString(R.string.info_log_posted)); - // No need to save the log when quitting if it has been posted. - text = currentLogText(); - finish(); - } else if (error == StatusCode.LOG_SAVED) { - showToast(res.getString(R.string.info_log_saved)); - - if (waitDialog != null) { - waitDialog.dismiss(); - } - - finish(); - } else { - showToast(error.getErrorString(res)); - } - } - }; - public VisitCacheActivity() { super("c:geo-log"); } @@ -543,81 +513,79 @@ public class VisitCacheActivity extends AbstractLoggingActivity implements DateD private class PostListener implements View.OnClickListener { @Override public void onClick(View arg0) { - waitDialog = ProgressDialog.show(VisitCacheActivity.this, null, - res.getString(StringUtils.isBlank(imageUri.getPath()) ? R.string.log_saving : R.string.log_saving_and_uploading), true); - waitDialog.setCancelable(true); - - final Thread thread = new PostLogThread(postLogHandler, currentLogText()); - thread.start(); + final String message = res.getString(StringUtils.isBlank(imageUri.getPath()) ? + R.string.log_saving : + R.string.log_saving_and_uploading); + new Poster(VisitCacheActivity.this, message).execute(currentLogText()); } } - private class PostLogThread extends Thread { + private class Poster extends AsyncTaskWithProgress<String, StatusCode> { - private final Handler handler; - private final String log; - - public PostLogThread(Handler handlerIn, String logIn) { - super("Post log"); - handler = handlerIn; - log = logIn; + public Poster(final Activity activity, final String progressMessage) { + super(activity, null, progressMessage, true); } @Override - public void run() { - final StatusCode status = postLogFn(log); - handler.sendMessage(handler.obtainMessage(0, status)); - } - } - - public StatusCode postLogFn(String log) { - - StatusCode result = StatusCode.LOG_POST_ERROR; - - try { - - final ImmutablePair<StatusCode, String> logResult = GCParser.postLog(geocode, cacheid, viewstates, typeSelected, - date.get(Calendar.YEAR), (date.get(Calendar.MONTH) + 1), date.get(Calendar.DATE), - log, trackables); - - result = logResult.left; - - if (logResult.left == StatusCode.NO_ERROR) { - final LogEntry logNow = new LogEntry(date, typeSelected, log); - - cache.getLogs().add(0, logNow); - - if (typeSelected == LogType.FOUND_IT || typeSelected == LogType.ATTENDED) { - cache.setFound(true); + protected StatusCode doInBackgroundInternal(final String[] logTexts) { + final String log = logTexts[0]; + try { + final ImmutablePair<StatusCode, String> postResult = GCParser.postLog(geocode, cacheid, viewstates, typeSelected, + date.get(Calendar.YEAR), (date.get(Calendar.MONTH) + 1), date.get(Calendar.DATE), + log, trackables); + + if (postResult.left == StatusCode.NO_ERROR) { + final LogEntry logNow = new LogEntry(date, typeSelected, log); + + cache.getLogs().add(0, logNow); + + if (typeSelected == LogType.FOUND_IT || typeSelected == LogType.ATTENDED) { + cache.setFound(true); + } + + cgData.saveChangedCache(cache); + cgData.clearLogOffline(geocode); + + if (typeSelected == LogType.FOUND_IT) { + if (tweetCheck.isChecked() && tweetBox.getVisibility() == View.VISIBLE) { + Twitter.postTweetCache(geocode); + } + GCVote.setRating(cache, rating); + } + + if (StringUtils.isNotBlank(imageUri.getPath())) { + ImmutablePair<StatusCode, String> imageResult = GCParser.uploadLogImage(postResult.right, imageCaption, imageDescription, imageUri); + final String uploadedImageUrl = imageResult.right; + if (StringUtils.isNotEmpty(uploadedImageUrl)) { + logNow.addLogImage(new Image(uploadedImageUrl, imageCaption, imageDescription)); + cgData.saveChangedCache(cache); + } + return imageResult.left; + } } - cgData.saveChangedCache(cache); + return postResult.left; + } catch (Exception e) { + Log.e("cgeovisit.postLogFn", e); } - if (logResult.left == StatusCode.NO_ERROR) { - cgData.clearLogOffline(geocode); - } - - if (logResult.left == StatusCode.NO_ERROR && typeSelected == LogType.FOUND_IT && Settings.isUseTwitter() - && Settings.isTwitterLoginValid() - && tweetCheck.isChecked() && tweetBox.getVisibility() == View.VISIBLE) { - Twitter.postTweetCache(geocode); - } - - if (logResult.left == StatusCode.NO_ERROR && typeSelected == LogType.FOUND_IT && Settings.isGCvoteLogin()) { - GCVote.setRating(cache, rating); - } + return StatusCode.LOG_POST_ERROR; + } - if (logResult.left == StatusCode.NO_ERROR && StringUtils.isNotBlank(imageUri.getPath())) { - result = GCParser.uploadLogImage(logResult.right, imageCaption, imageDescription, imageUri); + @Override + protected void onPostExecuteInternal(final StatusCode status) { + if (status == StatusCode.NO_ERROR) { + showToast(res.getString(R.string.info_log_posted)); + // No need to save the log when quitting if it has been posted. + text = currentLogText(); + finish(); + } else if (status == StatusCode.LOG_SAVED) { + showToast(res.getString(R.string.info_log_saved)); + finish(); + } else { + showToast(status.getErrorString(res)); } - - return result; - } catch (Exception e) { - Log.e("cgeovisit.postLogFn", e); } - - return StatusCode.LOG_POST_ERROR; } private void saveLog(final boolean force) { diff --git a/main/src/cgeo/geocaching/Waypoint.java b/main/src/cgeo/geocaching/Waypoint.java index 48c9bc5..6112986 100644 --- a/main/src/cgeo/geocaching/Waypoint.java +++ b/main/src/cgeo/geocaching/Waypoint.java @@ -275,7 +275,7 @@ public class Waypoint implements IWaypoint, Comparable<Waypoint> { if (coords != null) { hash = coords.hashCode(); } - hash = hash ^ waypointType.markerId; + hash ^= waypointType.markerId; return (int) hash; } } diff --git a/main/src/cgeo/geocaching/WaypointPopup.java b/main/src/cgeo/geocaching/WaypointPopup.java index 766d43d..43a758f 100644 --- a/main/src/cgeo/geocaching/WaypointPopup.java +++ b/main/src/cgeo/geocaching/WaypointPopup.java @@ -2,6 +2,7 @@ package cgeo.geocaching; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.geopoint.Units; import cgeo.geocaching.ui.CacheDetailsCreator; import cgeo.geocaching.utils.Log; @@ -19,6 +20,7 @@ import android.widget.TextView; public class WaypointPopup extends AbstractPopupActivity { private int waypointId = 0; private Waypoint waypoint = null; + private TextView waypointDistance = null; public WaypointPopup() { super("c:geo-waypoint-info", R.layout.waypoint_popup); @@ -35,6 +37,14 @@ public class WaypointPopup extends AbstractPopupActivity { } @Override + public void onUpdateGeoData(IGeoData geo) { + if (geo.getCoords() != null && waypoint != null && waypoint.getCoords() != null) { + waypointDistance.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(waypoint.getCoords()))); + waypointDistance.bringToFront(); + } + } + + @Override protected void init() { super.init(); waypoint = cgData.loadWaypoint(waypointId); @@ -53,6 +63,9 @@ public class WaypointPopup extends AbstractPopupActivity { //Waypoint geocode details.add(R.string.cache_geocode, waypoint.getPrefix() + waypoint.getGeocode().substring(2)); + details.addDistance(waypoint, waypointDistance); + waypointDistance = details.getValueView(); + details.add(R.string.waypoint_note, waypoint.getNote()); // Edit Button final Button buttonEdit = (Button) findViewById(R.id.edit); diff --git a/main/src/cgeo/geocaching/cgData.java b/main/src/cgeo/geocaching/cgData.java index 28485a5..86821fb 100644 --- a/main/src/cgeo/geocaching/cgData.java +++ b/main/src/cgeo/geocaching/cgData.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.EnumSet; @@ -1396,7 +1397,7 @@ public class cgData { * @param geocodes * @return Set of loaded caches. Never null. */ - public static Set<Geocache> loadCaches(final Set<String> geocodes, final EnumSet<LoadFlag> loadFlags) { + public static Set<Geocache> loadCaches(final Collection<String> geocodes, final EnumSet<LoadFlag> loadFlags) { if (CollectionUtils.isEmpty(geocodes)) { return new HashSet<Geocache>(); } diff --git a/main/src/cgeo/geocaching/cgeo.java b/main/src/cgeo/geocaching/cgeo.java index 5680ff3..0140c3a 100644 --- a/main/src/cgeo/geocaching/cgeo.java +++ b/main/src/cgeo/geocaching/cgeo.java @@ -311,6 +311,7 @@ public class cgeo extends AbstractActivity { @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == SCAN_REQUEST_CODE) { + // Only handle positive results, don't do anything if cancelled. if (resultCode == RESULT_OK) { String scan = intent.getStringExtra("SCAN_RESULT"); if (StringUtils.isBlank(scan)) { @@ -318,8 +319,6 @@ public class cgeo extends AbstractActivity { } SearchActivity.startActivityScan(scan, this); - } else if (resultCode == RESULT_CANCELED) { - // do nothing } } else if (requestCode == SEARCH_REQUEST_CODE) { // SearchActivity activity returned without making a search diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 8fc61d4..e5176d5 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -39,6 +39,7 @@ import cgeo.geocaching.sorting.VisitComparator; import cgeo.geocaching.ui.CacheListAdapter; import cgeo.geocaching.ui.LoggingUI; import cgeo.geocaching.ui.WeakReferenceHandler; +import cgeo.geocaching.utils.AsyncTaskWithProgress; import cgeo.geocaching.utils.DateUtils; import cgeo.geocaching.utils.GeoDirHandler; import cgeo.geocaching.utils.Log; @@ -74,6 +75,7 @@ import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -373,21 +375,6 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } } }; - private Handler dropDetailsHandler = new Handler() { - - @Override - public void handleMessage(Message msg) { - if (msg.what != MSG_CANCEL) { - adapter.setSelectMode(false); - - refreshCurrentList(); - - replaceCacheListFromSearch(); - - progress.dismiss(); - } - } - }; private Handler clearOfflineLogsHandler = new Handler() { @Override @@ -428,7 +415,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity if (extras != null) { Object typeObject = extras.get(Intents.EXTRA_LIST_TYPE); type = (typeObject instanceof CacheListType) ? (CacheListType) typeObject : CacheListType.OFFLINE; - coords = (Geopoint) extras.getParcelable(Intents.EXTRAS_COORDS); + coords = extras.getParcelable(Intents.EXTRA_COORDS); } else { extras = new Bundle(); @@ -794,7 +781,6 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } public void deletePastEvents() { - progress.show(this, null, res.getString(R.string.caches_drop_progress), true, dropDetailsHandler.obtainMessage(MSG_CANCEL)); final List<Geocache> deletion = new ArrayList<Geocache>(); for (Geocache cache : adapter.getCheckedOrAllCaches()) { if (cache.isEventCache()) { @@ -804,7 +790,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } } } - new DropDetailsThread(dropDetailsHandler, deletion).start(); + new DropDetailsTask(false).execute(deletion.toArray(new Geocache[deletion.size()])); } public void clearOfflineLogs() { @@ -1149,7 +1135,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity public void removeFromHistory() { final List<Geocache> caches = adapter.getCheckedOrAllCaches(); - final String geocodes[] = new String[caches.size()]; + final String[] geocodes = new String[caches.size()]; for (int i = 0; i < geocodes.length; i++) { geocodes[i] = caches.get(i).getGeocode(); } @@ -1182,10 +1168,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity @Override public void onClick(DialogInterface dialog, int id) { - dropSelected(); - if (removeListAfterwards) { - removeList(false); - } + dropSelected(removeListAfterwards); dialog.cancel(); } }); @@ -1201,9 +1184,9 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity alert.show(); } - public void dropSelected() { - progress.show(this, null, res.getString(R.string.caches_drop_progress), true, dropDetailsHandler.obtainMessage(MSG_CANCEL)); - new DropDetailsThread(dropDetailsHandler, adapter.getCheckedOrAllCaches()).start(); + public void dropSelected(boolean removeListAfterwards) { + final List<Geocache> selected = adapter.getCheckedOrAllCaches(); + new DropDetailsTask(removeListAfterwards).execute(selected.toArray(new Geocache[selected.size()])); } /** @@ -1388,24 +1371,35 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } } - private class DropDetailsThread extends Thread { + private class DropDetailsTask extends AsyncTaskWithProgress<Geocache, Void> { - final private Handler handler; - final private List<Geocache> selected; + private final boolean removeListAfterwards; - public DropDetailsThread(Handler handlerIn, List<Geocache> selectedIn) { - handler = handlerIn; - selected = selectedIn; + public DropDetailsTask(boolean removeListAfterwards) { + super(cgeocaches.this, null, res.getString(R.string.caches_drop_progress), true); + this.removeListAfterwards = removeListAfterwards; } @Override - public void run() { + protected Void doInBackgroundInternal(Geocache[] caches) { removeGeoAndDir(); - cgData.markDropped(selected); - handler.sendEmptyMessage(MSG_DONE); - + cgData.markDropped(Arrays.asList(caches)); startGeoAndDir(); + return null; } + + @Override + protected void onPostExecuteInternal(Void result) { + // remove list in UI because of toast + if (removeListAfterwards) { + removeList(false); + } + + adapter.setSelectMode(false); + refreshCurrentList(); + replaceCacheListFromSearch(); + } + } private class ClearOfflineLogsThread extends Thread { @@ -1450,7 +1444,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity * @param view * unused here but needed since this method is referenced from XML layout */ - public void selectList(View view) { + public void selectList(@SuppressWarnings("unused") View view) { if (type != CacheListType.OFFLINE) { return; } @@ -1549,7 +1543,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity * @param view * unused here but needed since this method is referenced from XML layout */ - public void goMap(View view) { + public void goMap(@SuppressWarnings("unused") View view) { if (search == null || CollectionUtils.isEmpty(cacheList)) { showToast(res.getString(R.string.warn_no_cache_coord)); @@ -1672,7 +1666,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } final Intent cachesIntent = new Intent(context, cgeocaches.class); cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.NEAREST); - cachesIntent.putExtra(Intents.EXTRAS_COORDS, coordsNow); + cachesIntent.putExtra(Intents.EXTRA_COORDS, coordsNow); context.startActivity(cachesIntent); } @@ -1685,7 +1679,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity public static void startActivityAddress(final Context context, final Geopoint coords, final String address) { final Intent addressIntent = new Intent(context, cgeocaches.class); addressIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.ADDRESS); - addressIntent.putExtra(Intents.EXTRAS_COORDS, coords); + addressIntent.putExtra(Intents.EXTRA_COORDS, coords); addressIntent.putExtra(Intents.EXTRA_ADDRESS, address); context.startActivity(addressIntent); } @@ -1696,7 +1690,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity } final Intent cachesIntent = new Intent(context, cgeocaches.class); cachesIntent.putExtra(Intents.EXTRA_LIST_TYPE, CacheListType.COORDINATE); - cachesIntent.putExtra(Intents.EXTRAS_COORDS, coords); + cachesIntent.putExtra(Intents.EXTRA_COORDS, coords); context.startActivity(cachesIntent); } @@ -1730,11 +1724,11 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity @Override public Loader<SearchResult> onCreateLoader(int type, Bundle extras) { - AbstractSearchLoader loader = null; if (type >= CacheListLoaderType.values().length) { throw new IllegalArgumentException("invalid loader type " + type); } CacheListLoaderType enumType = CacheListLoaderType.values()[type]; + AbstractSearchLoader loader = null; switch (enumType) { case OFFLINE: listId = Settings.getLastList(); diff --git a/main/src/cgeo/geocaching/cgeonavigate.java b/main/src/cgeo/geocaching/cgeonavigate.java index 17c2e20..929f0a3 100644 --- a/main/src/cgeo/geocaching/cgeonavigate.java +++ b/main/src/cgeo/geocaching/cgeonavigate.java @@ -63,7 +63,7 @@ public class cgeonavigate extends AbstractActivity { if (extras != null) { title = extras.getString(EXTRAS_GEOCODE); final String name = extras.getString(EXTRAS_NAME); - dstCoords = (Geopoint) extras.getParcelable(EXTRAS_COORDS); + dstCoords = extras.getParcelable(EXTRAS_COORDS); info = extras.getString(EXTRAS_CACHE_INFO); if (StringUtils.isNotBlank(name)) { diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java index 4d27617..d8711cf 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java @@ -149,7 +149,7 @@ public final class GCConstants { public final static Pattern PATTERN_MAINTENANCE = Pattern.compile("<span id=\"ctl00_ContentBody_LogBookPanel1_lbConfirm\"[^>]*>([^<]*<font[^>]*>)?([^<]+)(</font>[^<]*)?</span>", Pattern.CASE_INSENSITIVE); public final static Pattern PATTERN_OK1 = Pattern.compile("<h2[^>]*>[^<]*<span id=\"ctl00_ContentBody_lbHeading\"[^>]*>[^<]*</span>[^<]*</h2>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); public final static Pattern PATTERN_OK2 = Pattern.compile("<div id=[\"|']ctl00_ContentBody_LogBookPanel1_ViewLogPanel[\"|']>", Pattern.CASE_INSENSITIVE); - public final static Pattern PATTERN_OK_IMAGEUPLOAD = Pattern.compile("<div id=[\"|']ctl00_ContentBody_ImageUploadControl1_uxUploadDonePanel[\"|']>", Pattern.CASE_INSENSITIVE); + public final static Pattern PATTERN_IMAGE_UPLOAD_URL = Pattern.compile("title=\"Click for Larger Image\"\\s*src=\"(.*?)\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); public final static Pattern PATTERN_VIEWSTATEFIELDCOUNT = Pattern.compile("id=\"__VIEWSTATEFIELDCOUNT\"[^(value)]+value=\"(\\d+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); public final static Pattern PATTERN_VIEWSTATES = Pattern.compile("id=\"__VIEWSTATE(\\d*)\"[^(value)]+value=\"([^\"]+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); public final static Pattern PATTERN_USERTOKEN = Pattern.compile("userToken\\s*=\\s*'([^']+)'"); diff --git a/main/src/cgeo/geocaching/connector/gc/GCParser.java b/main/src/cgeo/geocaching/connector/gc/GCParser.java index 9af9953..d566b2f 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCParser.java +++ b/main/src/cgeo/geocaching/connector/gc/GCParser.java @@ -790,7 +790,7 @@ public abstract class GCParser { insertCacheType(params, cacheType); final String uri = "http://www.geocaching.com/seek/nearest.aspx"; - final String fullUri = uri + "?" + addFToParams(params, false, true); + final String fullUri = uri + "?" + addFToParams(params, my, true); final String page = Login.getRequestLogged(uri, addFToParams(params, my, true)); if (StringUtils.isBlank(page)) { @@ -1059,7 +1059,7 @@ public abstract class GCParser { * the URI for the image to be uploaded * @return status code to indicate success or failure */ - public static StatusCode uploadLogImage(final String logId, final String caption, final String description, final Uri imageUri) { + public static ImmutablePair<StatusCode, String> uploadLogImage(final String logId, final String caption, final String description, final Uri imageUri) { final String uri = new Uri.Builder().scheme("http").authority("www.geocaching.com").path("/seek/upload.aspx").encodedQuery("LID=" + logId).build().toString(); String page = Network.getResponseData(Network.getRequest(uri)); @@ -1071,7 +1071,7 @@ public abstract class GCParser { page = Network.getResponseData(Network.getRequest(uri)); } else { Log.e("Image upload: No login (error: " + loginState + ')'); - return StatusCode.NOT_LOGGED_IN; + return ImmutablePair.of(StatusCode.NOT_LOGGED_IN, null); } } @@ -1088,18 +1088,23 @@ public abstract class GCParser { final File image = new File(imageUri.getPath()); final String response = Network.getResponseData(Network.postRequest(uri, uploadParams, "ctl00$ContentBody$ImageUploadControl1$uxFileUpload", "image/jpeg", image)); - MatcherWrapper matcherOK = new MatcherWrapper(GCConstants.PATTERN_OK_IMAGEUPLOAD, response); + MatcherWrapper matcherUrl = new MatcherWrapper(GCConstants.PATTERN_IMAGE_UPLOAD_URL, response); - if (matcherOK.find()) { + if (matcherUrl.find()) { Log.i("Logimage successfully uploaded."); - - return StatusCode.NO_ERROR; + final String uploadedImageUrl = matcherUrl.group(1); + return ImmutablePair.of(StatusCode.NO_ERROR, uploadedImageUrl); } Log.e("GCParser.uploadLogIMage: Failed to upload image because of unknown error"); - return StatusCode.LOGIMAGE_POST_ERROR; + return ImmutablePair.of(StatusCode.LOGIMAGE_POST_ERROR, null); } + /** + * Post a log to GC.com. + * + * @return status code of the upload and ID of the log + */ public static StatusCode postLogTrackable(final String tbid, final String trackingCode, final String[] viewstates, final LogType logType, final int year, final int month, final int day, final String log) { if (Login.isEmpty(viewstates)) { diff --git a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java index 621032f..d03062f 100644 --- a/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java +++ b/main/src/cgeo/geocaching/connector/oc/OC11XMLParser.java @@ -48,6 +48,8 @@ public class OC11XMLParser { private static Pattern LOCAL_URL = Pattern.compile("href=\"(.*)\""); private static final int CACHE_PARSE_LIMIT = 250; private static final Resources res = cgeoapplication.getInstance().getResources(); + private static final Pattern WHITESPACE = Pattern.compile("<p>(\\s| )*</p>"); + private static ImageHolder imageHolder = null; @@ -513,7 +515,7 @@ public class OC11XMLParser { @Override public void end(String body) { final String content = body.trim(); - descHolder.shortDesc = linkify(stripMarkup(content)); + descHolder.shortDesc = linkify(stripEmptyText(content)); } }); @@ -523,7 +525,7 @@ public class OC11XMLParser { @Override public void end(String body) { final String content = body.trim(); - descHolder.desc = linkify(stripMarkup(content)); + descHolder.desc = linkify(stripEmptyText(content)); } }); @@ -626,7 +628,7 @@ public class OC11XMLParser { @Override public void end(String logText) { - logHolder.logEntry.log = stripMarkup(logText); + logHolder.logEntry.log = stripEmptyText(logText); } }); @@ -728,14 +730,20 @@ public class OC11XMLParser { } /** - * Removes unneeded markup. Log texts are typically encapsulated in paragraph tags which lead to more empty space on - * rendering. + * Removes some unneeded markup and whitespace. Log texts are typically encapsulated in paragraph tags which lead to + * more empty space on rendering. */ - protected static String stripMarkup(String input) { - if (!StringUtils.startsWith(input, "<")) { - return input; + protected static String stripEmptyText(String input) { + final Matcher matcher = WHITESPACE.matcher(input); + String result = matcher.replaceAll("").trim(); + if (!StringUtils.startsWith(result, "<")) { + return result; } - String result = input.trim(); + return stripMarkup(result); + } + + private static String stripMarkup(final String input) { + String result = input; for (String tagName : MARKUP) { final String startTag = "<" + tagName + ">"; if (StringUtils.startsWith(result, startTag)) { diff --git a/main/src/cgeo/geocaching/export/AbstractExport.java b/main/src/cgeo/geocaching/export/AbstractExport.java index 72ea544..e4ba5f0 100644 --- a/main/src/cgeo/geocaching/export/AbstractExport.java +++ b/main/src/cgeo/geocaching/export/AbstractExport.java @@ -1,5 +1,6 @@ package cgeo.geocaching.export; +import cgeo.geocaching.R; import cgeo.geocaching.cgeoapplication; abstract class AbstractExport implements Export { @@ -27,7 +28,7 @@ abstract class AbstractExport implements Export { /** * Generates a localized string from a resource id. - * + * * @param resourceId * the resource id of the string * @param params @@ -43,4 +44,8 @@ abstract class AbstractExport implements Export { // used in the array adapter of the dialog showing the exports return getName(); } + + protected String getProgressTitle() { + return getString(R.string.export) + ": " + getName(); + } } diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java index 5e1805a..2900781 100644 --- a/main/src/cgeo/geocaching/export/FieldnoteExport.java +++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java @@ -5,11 +5,11 @@ import cgeo.geocaching.LogEntry; import cgeo.geocaching.R; import cgeo.geocaching.cgData; import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.activity.Progress; import cgeo.geocaching.connector.gc.Login; import cgeo.geocaching.enumerations.StatusCode; import cgeo.geocaching.network.Network; import cgeo.geocaching.network.Parameters; +import cgeo.geocaching.utils.AsyncTaskWithProgress; import cgeo.geocaching.utils.IOUtils; import cgeo.geocaching.utils.Log; @@ -20,7 +20,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; -import android.os.AsyncTask; import android.os.Environment; import android.view.ContextThemeWrapper; import android.view.View; @@ -57,18 +56,19 @@ class FieldnoteExport extends AbstractExport { } @Override - public void export(final List<Geocache> caches, final Activity activity) { + public void export(final List<Geocache> cachesList, final Activity activity) { + final Geocache[] caches = cachesList.toArray(new Geocache[cachesList.size()]); if (null == activity) { // No activity given, so no user interaction possible. // Start export with default parameters. - new ExportTask(caches, null, false, false).execute((Void) null); + new ExportTask(null, false, false).execute(caches); } else { // Show configuration dialog getExportOptionsDialog(caches, activity).show(); } } - private Dialog getExportOptionsDialog(final List<Geocache> caches, final Activity activity) { + private Dialog getExportOptionsDialog(final Geocache[] caches, final Activity activity) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); // AlertDialog has always dark style, so we have to apply it as well always @@ -91,32 +91,27 @@ class FieldnoteExport extends AbstractExport { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); new ExportTask( - caches, activity, uploadOption.isChecked(), onlyNewOption.isChecked()) - .execute((Void) null); + .execute(caches); } }); return builder.create(); } - private class ExportTask extends AsyncTask<Void, Integer, Boolean> { - private final List<Geocache> caches; + private class ExportTask extends AsyncTaskWithProgress<Geocache, Boolean> { private final Activity activity; private final boolean upload; private final boolean onlyNew; - private final Progress progress = new Progress(); private File exportFile; private static final int STATUS_UPLOAD = -1; /** - * Instantiates and configurates the task for exporting field notes. + * Instantiates and configures the task for exporting field notes. * - * @param caches - * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported * @param activity * optional: Show a progress bar and toasts * @param upload @@ -124,22 +119,15 @@ class FieldnoteExport extends AbstractExport { * @param onlyNew * Upload/export only new logs since last export */ - public ExportTask(final List<Geocache> caches, final Activity activity, final boolean upload, final boolean onlyNew) { - this.caches = caches; + public ExportTask(final Activity activity, final boolean upload, final boolean onlyNew) { + super(activity, getProgressTitle(), getString(R.string.export_fieldnotes_creating)); this.activity = activity; this.upload = upload; this.onlyNew = onlyNew; } @Override - protected void onPreExecute() { - if (null != activity) { - progress.show(activity, getString(R.string.export) + ": " + getName(), getString(R.string.export_fieldnotes_creating), true, null); - } - } - - @Override - protected Boolean doInBackground(Void... params) { + protected Boolean doInBackgroundInternal(Geocache[] caches) { final StringBuilder fieldNoteBuffer = new StringBuilder(); try { int i = 0; @@ -227,10 +215,8 @@ class FieldnoteExport extends AbstractExport { } @Override - protected void onPostExecute(Boolean result) { + protected void onPostExecuteInternal(Boolean result) { if (null != activity) { - progress.dismiss(); - if (result) { // if (onlyNew) { // // update last export time in settings when doing it ourself (currently we use the date check from gc.com) @@ -248,12 +234,12 @@ class FieldnoteExport extends AbstractExport { } @Override - protected void onProgressUpdate(Integer... status) { + protected void onProgressUpdateInternal(int status) { if (null != activity) { - if (STATUS_UPLOAD == status[0]) { - progress.setMessage(getString(R.string.export_fieldnotes_uploading)); + if (STATUS_UPLOAD == status) { + setMessage(getString(R.string.export_fieldnotes_uploading)); } else { - progress.setMessage(getString(R.string.export_fieldnotes_creating) + " (" + status[0] + ')'); + setMessage(getString(R.string.export_fieldnotes_creating) + " (" + status + ')'); } } } diff --git a/main/src/cgeo/geocaching/export/GpxExport.java b/main/src/cgeo/geocaching/export/GpxExport.java index 28ca646..3e58276 100644 --- a/main/src/cgeo/geocaching/export/GpxExport.java +++ b/main/src/cgeo/geocaching/export/GpxExport.java @@ -6,14 +6,16 @@ import cgeo.geocaching.R; import cgeo.geocaching.Settings; import cgeo.geocaching.Waypoint; import cgeo.geocaching.cgData; +import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.activity.Progress; import cgeo.geocaching.enumerations.CacheAttribute; import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.utils.AsyncTaskWithProgress; import cgeo.geocaching.utils.BaseUtils; import cgeo.geocaching.utils.Log; import cgeo.geocaching.utils.XmlUtils; +import cgeo.org.kxml2.io.KXmlSerializer; import org.apache.commons.lang3.StringUtils; import org.xmlpull.v1.XmlSerializer; @@ -21,13 +23,10 @@ import org.xmlpull.v1.XmlSerializer; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; -import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; -import android.os.AsyncTask; import android.os.Environment; -import android.util.Xml; import android.view.ContextThemeWrapper; import android.view.View; import android.widget.CheckBox; @@ -38,9 +37,12 @@ import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.Set; class GpxExport extends AbstractExport { private static final SimpleDateFormat dateFormatZ = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); @@ -48,24 +50,30 @@ class GpxExport extends AbstractExport { public static final String PREFIX_GPX = "http://www.topografix.com/GPX/1/0"; public static final String PREFIX_GROUNDSPEAK = "http://www.groundspeak.com/cache/1/0"; + /** + * During the export, only this number of geocaches is fully loaded into memory. + */ + public static final int CACHES_PER_BATCH = 100; + protected GpxExport() { super(getString(R.string.export_gpx)); } @Override public void export(final List<Geocache> caches, final Activity activity) { + String[] geocodes = getGeocodes(caches); if (null == activity) { // No activity given, so no user interaction possible. // Start export with default parameters. - new ExportTask(caches, null).execute((Void) null); + new ExportTask(null).execute(geocodes); } else { // Show configuration dialog - getExportDialog(caches, activity).show(); + getExportDialog(geocodes, activity).show(); } } - private Dialog getExportDialog(final List<Geocache> caches, final Activity activity) { + private Dialog getExportDialog(final String[] geocodes, final Activity activity) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); // AlertDialog has always dark style, so we have to apply it as well always @@ -91,46 +99,47 @@ class GpxExport extends AbstractExport { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); - new ExportTask(caches, activity).execute((Void) null); + new ExportTask(activity).execute(geocodes); } }); return builder.create(); } - private class ExportTask extends AsyncTask<Void, Integer, File> { - private final List<Geocache> caches; + private static String[] getGeocodes(final List<Geocache> caches) { + ArrayList<String> allGeocodes = new ArrayList<String>(caches.size()); + for (final Geocache geocache : caches) { + allGeocodes.add(geocache.getGeocode()); + } + return allGeocodes.toArray(new String[allGeocodes.size()]); + } + + protected class ExportTask extends AsyncTaskWithProgress<String, File> { private final Activity activity; - private final Progress progress = new Progress(); + private int countExported = 0; /** * Instantiates and configures the task for exporting field notes. * - * @param caches - * The {@link List} of {@link cgeo.geocaching.Geocache} to be exported * @param activity * optional: Show a progress bar and toasts */ - public ExportTask(final List<Geocache> caches, final Activity activity) { - this.caches = caches; + public ExportTask(final Activity activity) { + super(activity, getProgressTitle()); this.activity = activity; } @Override - protected void onPreExecute() { - if (null != activity) { - progress.show(activity, null, getString(R.string.export) + ": " + getName(), ProgressDialog.STYLE_HORIZONTAL, null); - progress.setMaxProgressAndReset(caches.size()); - } - } - - @Override - protected File doInBackground(Void... params) { + protected File doInBackgroundInternal(String[] geocodes) { // quick check for being able to write the GPX file if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return null; } + List<String> allGeocodes = new ArrayList<String>(Arrays.asList(geocodes)); + + setMessage(cgeoapplication.getInstance().getResources().getQuantityString(R.plurals.cache_counts, allGeocodes.size(), allGeocodes.size())); + final SimpleDateFormat fileNameDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); final File exportFile = new File(Settings.getGpxExportDir() + File.separatorChar + "export_" + fileNameDateFormat.format(new Date()) + ".gpx"); FileWriter writer = null; @@ -138,7 +147,7 @@ class GpxExport extends AbstractExport { final File exportLocation = new File(Settings.getGpxExportDir()); exportLocation.mkdirs(); - final XmlSerializer gpx = Xml.newSerializer(); + final XmlSerializer gpx = new KXmlSerializer(); writer = new FileWriter(exportFile); gpx.setOutput(writer); @@ -153,68 +162,17 @@ class GpxExport extends AbstractExport { PREFIX_GPX + " http://www.topografix.com/GPX/1/0/gpx.xsd " + PREFIX_GROUNDSPEAK + " http://www.groundspeak.com/cache/1/0/1/cache.xsd"); - for (int i = 0; i < caches.size(); i++) { - final Geocache cache = cgData.loadCache(caches.get(i).getGeocode(), LoadFlags.LOAD_ALL_DB_ONLY); - - gpx.startTag(PREFIX_GPX, "wpt"); - gpx.attribute("", "lat", Double.toString(cache.getCoords().getLatitude())); - gpx.attribute("", "lon", Double.toString(cache.getCoords().getLongitude())); - - final Date hiddenDate = cache.getHiddenDate(); - if (hiddenDate != null) { - XmlUtils.simpleText(gpx, PREFIX_GPX, "time", dateFormatZ.format(hiddenDate)); - } - - XmlUtils.multipleTexts(gpx, PREFIX_GPX, - "name", cache.getGeocode(), - "desc", cache.getName(), - "url", cache.getUrl(), - "urlname", cache.getName(), - "sym", cache.isFound() ? "Geocache Found" : "Geocache", - "type", "Geocache|" + cache.getType().pattern); - - gpx.startTag(PREFIX_GROUNDSPEAK, "cache"); - gpx.attribute("", "id", cache.getCacheId()); - gpx.attribute("", "available", !cache.isDisabled() ? "True" : "False"); - gpx.attribute("", "archives", cache.isArchived() ? "True" : "False"); - - XmlUtils.multipleTexts(gpx, PREFIX_GROUNDSPEAK, - "name", cache.getName(), - "placed_by", cache.getOwnerDisplayName(), - "owner", cache.getOwnerUserId(), - "type", cache.getType().pattern, - "container", cache.getSize().id, - "difficulty", Float.toString(cache.getDifficulty()), - "terrain", Float.toString(cache.getTerrain()), - "country", cache.getLocation(), - "state", "", - "encoded_hints", cache.getHint()); - - writeAttributes(gpx, cache); - - gpx.startTag(PREFIX_GROUNDSPEAK, "short_description"); - gpx.attribute("", "html", BaseUtils.containsHtml(cache.getShortDescription()) ? "True" : "False"); - gpx.text(cache.getShortDescription()); - gpx.endTag(PREFIX_GROUNDSPEAK, "short_description"); - - gpx.startTag(PREFIX_GROUNDSPEAK, "long_description"); - gpx.attribute("", "html", BaseUtils.containsHtml(cache.getDescription()) ? "True" : "False"); - gpx.text(cache.getDescription()); - gpx.endTag(PREFIX_GROUNDSPEAK, "long_description"); - - writeLogs(gpx, cache); - - gpx.endTag(PREFIX_GROUNDSPEAK, "cache"); - gpx.endTag(PREFIX_GPX, "wpt"); - - writeWaypoints(gpx, cache); - - publishProgress(i + 1); + // Split the overall set of geocodes into small chunks. That is a compromise between memory efficiency (because + // we don't load all caches fully into memory) and speed (because we don't query each cache separately). + while (!allGeocodes.isEmpty()) { + final List<String> batch = allGeocodes.subList(0, Math.min(CACHES_PER_BATCH, allGeocodes.size())); + exportBatch(gpx, batch); + batch.clear(); } gpx.endTag(PREFIX_GPX, "gpx"); gpx.endDocument(); - } catch (final IOException e) { + } catch (final Exception e) { Log.e("GpxExport.ExportTask export", e); if (writer != null) { @@ -235,6 +193,67 @@ class GpxExport extends AbstractExport { return exportFile; } + private void exportBatch(final XmlSerializer gpx, Collection<String> geocodesOfBatch) throws IOException { + Set<Geocache> caches = cgData.loadCaches(geocodesOfBatch, LoadFlags.LOAD_ALL_DB_ONLY); + for (Geocache cache : caches) { + gpx.startTag(PREFIX_GPX, "wpt"); + gpx.attribute("", "lat", Double.toString(cache.getCoords().getLatitude())); + gpx.attribute("", "lon", Double.toString(cache.getCoords().getLongitude())); + + final Date hiddenDate = cache.getHiddenDate(); + if (hiddenDate != null) { + XmlUtils.simpleText(gpx, PREFIX_GPX, "time", dateFormatZ.format(hiddenDate)); + } + + XmlUtils.multipleTexts(gpx, PREFIX_GPX, + "name", cache.getGeocode(), + "desc", cache.getName(), + "url", cache.getUrl(), + "urlname", cache.getName(), + "sym", cache.isFound() ? "Geocache Found" : "Geocache", + "type", "Geocache|" + cache.getType().pattern); + + gpx.startTag(PREFIX_GROUNDSPEAK, "cache"); + gpx.attribute("", "id", cache.getCacheId()); + gpx.attribute("", "available", !cache.isDisabled() ? "True" : "False"); + gpx.attribute("", "archives", cache.isArchived() ? "True" : "False"); + + XmlUtils.multipleTexts(gpx, PREFIX_GROUNDSPEAK, + "name", cache.getName(), + "placed_by", cache.getOwnerDisplayName(), + "owner", cache.getOwnerUserId(), + "type", cache.getType().pattern, + "container", cache.getSize().id, + "difficulty", Float.toString(cache.getDifficulty()), + "terrain", Float.toString(cache.getTerrain()), + "country", cache.getLocation(), + "state", "", + "encoded_hints", cache.getHint()); + + writeAttributes(gpx, cache); + + gpx.startTag(PREFIX_GROUNDSPEAK, "short_description"); + gpx.attribute("", "html", BaseUtils.containsHtml(cache.getShortDescription()) ? "True" : "False"); + gpx.text(cache.getShortDescription()); + gpx.endTag(PREFIX_GROUNDSPEAK, "short_description"); + + gpx.startTag(PREFIX_GROUNDSPEAK, "long_description"); + gpx.attribute("", "html", BaseUtils.containsHtml(cache.getDescription()) ? "True" : "False"); + gpx.text(cache.getDescription()); + gpx.endTag(PREFIX_GROUNDSPEAK, "long_description"); + + writeLogs(gpx, cache); + + gpx.endTag(PREFIX_GROUNDSPEAK, "cache"); + gpx.endTag(PREFIX_GPX, "wpt"); + + writeWaypoints(gpx, cache); + + countExported++; + publishProgress(countExported); + } + } + private void writeWaypoints(final XmlSerializer gpx, final Geocache cache) throws IOException { List<Waypoint> waypoints = cache.getWaypoints(); List<Waypoint> ownWaypoints = new ArrayList<Waypoint>(waypoints.size()); @@ -345,9 +364,8 @@ class GpxExport extends AbstractExport { } @Override - protected void onPostExecute(final File exportFile) { + protected void onPostExecuteInternal(final File exportFile) { if (null != activity) { - progress.dismiss(); if (exportFile != null) { ActivityMixin.showToast(activity, getName() + ' ' + getString(R.string.export_exportedto) + ": " + exportFile.toString()); if (Settings.getShareAfterExport()) { @@ -363,11 +381,5 @@ class GpxExport extends AbstractExport { } } - @Override - protected void onProgressUpdate(Integer... status) { - if (null != activity) { - progress.setProgress(status[0]); - } - } } } diff --git a/main/src/cgeo/geocaching/files/GPXImporter.java b/main/src/cgeo/geocaching/files/GPXImporter.java index b8dcbb3..ff81fe1 100644 --- a/main/src/cgeo/geocaching/files/GPXImporter.java +++ b/main/src/cgeo/geocaching/files/GPXImporter.java @@ -1,458 +1,462 @@ -package cgeo.geocaching.files;
-
-import cgeo.geocaching.Geocache;
-import cgeo.geocaching.R;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.Settings;
-import cgeo.geocaching.StaticMapsProvider;
-import cgeo.geocaching.cgData;
-import cgeo.geocaching.activity.IAbstractActivity;
-import cgeo.geocaching.activity.Progress;
-import cgeo.geocaching.enumerations.LoadFlags;
-import cgeo.geocaching.utils.CancellableHandler;
-import cgeo.geocaching.utils.Log;
-
-import org.apache.commons.lang3.StringUtils;
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CancellationException;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-public class GPXImporter {
- static final int IMPORT_STEP_START = 0;
- static final int IMPORT_STEP_READ_FILE = 1;
- static final int IMPORT_STEP_READ_WPT_FILE = 2;
- static final int IMPORT_STEP_STORE_STATIC_MAPS = 4;
- static final int IMPORT_STEP_FINISHED = 5;
- static final int IMPORT_STEP_FINISHED_WITH_ERROR = 6;
- static final int IMPORT_STEP_CANCEL = 7;
- static final int IMPORT_STEP_CANCELED = 8;
- static final int IMPORT_STEP_STATIC_MAPS_SKIPPED = 9;
-
- public static final String GPX_FILE_EXTENSION = ".gpx";
- public static final String ZIP_FILE_EXTENSION = ".zip";
- public static final String WAYPOINTS_FILE_SUFFIX = "-wpts";
- public static final String WAYPOINTS_FILE_SUFFIX_AND_EXTENSION = WAYPOINTS_FILE_SUFFIX + GPX_FILE_EXTENSION;
-
- private static final List<String> GPX_MIME_TYPES = Arrays.asList("text/xml", "application/xml");
- private static final List<String> ZIP_MIME_TYPES = Arrays.asList("application/zip", "application/x-compressed", "application/x-zip-compressed", "application/x-zip", "application/octet-stream");
-
- private Progress progress = new Progress(true);
-
- private Resources res;
- private int listId;
- private IAbstractActivity fromActivity;
- private Handler importFinishedHandler;
-
- public GPXImporter(final IAbstractActivity fromActivity, final int listId, final Handler importFinishedHandler) {
- this.listId = listId;
- this.fromActivity = fromActivity;
- res = ((Activity) fromActivity).getResources();
- this.importFinishedHandler = importFinishedHandler;
- }
-
- /**
- * Import GPX file. Currently supports *.gpx, *.zip (containing gpx files, e.g. PQ queries) or *.loc files.
- *
- * @param file
- * the file to import
- */
- public void importGPX(final File file) {
- if (StringUtils.endsWithIgnoreCase(file.getName(), GPX_FILE_EXTENSION)) {
- new ImportGpxFileThread(file, listId, importStepHandler, progressHandler).start();
- } else if (StringUtils.endsWithIgnoreCase(file.getName(), ZIP_FILE_EXTENSION)) {
- new ImportGpxZipFileThread(file, listId, importStepHandler, progressHandler).start();
- } else {
- new ImportLocFileThread(file, listId, importStepHandler, progressHandler).start();
- }
- }
-
- /**
- * Import GPX provided via intent of activity that instantiated this GPXImporter.
- */
- public void importGPX() {
- final ContentResolver contentResolver = ((Activity) fromActivity).getContentResolver();
- final Intent intent = ((Activity) fromActivity).getIntent();
- final Uri uri = intent.getData();
-
- String mimeType = intent.getType();
- // if mimetype can't be determined (e.g. for emulators email app), derive it from uri file extension
- // contentResolver.getType(uri) doesn't help but throws exception for emulators email app
- // Permission Denial: reading com.android.email.provider.EmailProvider uri
- // Google search says: there is no solution for this problem
- // Gmail doesn't work at all, see #967
- if (mimeType == null) {
- if (StringUtils.endsWithIgnoreCase(uri.getPath(), GPX_FILE_EXTENSION)) {
- mimeType = "application/xml";
- } else {
- // if we can't determine a better type, default to zip import
- // emulator email sends e.g. content://com.android.email.attachmentprovider/1/1/RAW, mimetype=null
- mimeType = "application/zip";
- }
- }
-
- Log.i("importGPX: " + uri + ", mimetype=" + mimeType);
- if (GPX_MIME_TYPES.contains(mimeType)) {
- new ImportGpxAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start();
- } else if (ZIP_MIME_TYPES.contains(mimeType)) {
- new ImportGpxZipAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start();
- } else {
- importFinished();
- }
- }
-
- static abstract class ImportThread extends Thread {
- final int listId;
- final Handler importStepHandler;
- final CancellableHandler progressHandler;
-
- protected ImportThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- this.listId = listId;
- this.importStepHandler = importStepHandler;
- this.progressHandler = progressHandler;
- }
-
- @Override
- public void run() {
- try {
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_START));
- final Collection<Geocache> caches = doImport();
- Log.i("Imported successfully " + caches.size() + " caches.");
-
- final SearchResult search = new SearchResult();
- for (Geocache cache : caches) {
- search.addCache(cache);
- }
-
- if (Settings.isStoreOfflineMaps() || Settings.isStoreOfflineWpMaps()) {
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_STORE_STATIC_MAPS, R.string.gpx_import_store_static_maps, search.getCount()));
- boolean finishedWithoutCancel = importStaticMaps(search);
- // Skip last message if static maps where canceled
- if (!finishedWithoutCancel) {
- return;
- }
- }
-
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED, search.getCount(), 0, search));
- } catch (IOException e) {
- Log.i("Importing caches failed - error reading data: " + e.getMessage());
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_io, 0, e.getLocalizedMessage()));
- } catch (ParserException e) {
- Log.i("Importing caches failed - data format error" + e.getMessage());
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_parser, 0, e.getLocalizedMessage()));
- } catch (CancellationException e) {
- Log.i("Importing caches canceled");
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_CANCELED));
- } catch (Exception e) {
- Log.e("Importing caches failed - unknown error: ", e);
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_unexpected, 0, e.getLocalizedMessage()));
- }
- }
-
- protected abstract Collection<Geocache> doImport() throws IOException, ParserException;
-
- private boolean importStaticMaps(final SearchResult importedCaches) {
- int storedCacheMaps = 0;
- for (String geocode : importedCaches.getGeocodes()) {
- Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS);
- Log.d("GPXImporter.ImportThread.importStaticMaps start downloadMaps for cache " + geocode);
- StaticMapsProvider.downloadMaps(cache);
- storedCacheMaps++;
- if (progressHandler.isCancelled()) {
- return false;
- }
- progressHandler.sendMessage(progressHandler.obtainMessage(0, storedCacheMaps, 0));
- }
- return true;
- }
- }
-
- static class ImportLocFileThread extends ImportThread {
- private final File file;
-
- public ImportLocFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- this.file = file;
- }
-
- @Override
- protected Collection<Geocache> doImport() throws IOException, ParserException {
- Log.i("Import LOC file: " + file.getAbsolutePath());
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) file.length()));
- LocParser parser = new LocParser(listId);
- return parser.parse(file, progressHandler);
- }
- }
-
- static abstract class ImportGpxThread extends ImportThread {
-
- protected ImportGpxThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- }
-
- @Override
- protected Collection<Geocache> doImport() throws IOException, ParserException {
- try {
- // try to parse cache file as GPX 10
- return doImport(new GPX10Parser(listId));
- } catch (ParserException pe) {
- // didn't work -> lets try GPX11
- return doImport(new GPX11Parser(listId));
- }
- }
-
- protected abstract Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException;
- }
-
- static class ImportGpxFileThread extends ImportGpxThread {
- private final File cacheFile;
-
- public ImportGpxFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- this.cacheFile = file;
- }
-
- @Override
- protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
- Log.i("Import GPX file: " + cacheFile.getAbsolutePath());
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) cacheFile.length()));
- Collection<Geocache> caches = parser.parse(cacheFile, progressHandler);
-
- final String wptsFilename = getWaypointsFileNameForGpxFile(cacheFile);
- if (wptsFilename != null) {
- final File wptsFile = new File(cacheFile.getParentFile(), wptsFilename);
- if (wptsFile.canRead()) {
- Log.i("Import GPX waypoint file: " + wptsFile.getAbsolutePath());
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_WPT_FILE, R.string.gpx_import_loading_waypoints, (int) wptsFile.length()));
- caches = parser.parse(wptsFile, progressHandler);
- }
- }
- return caches;
- }
- }
-
- static class ImportGpxAttachmentThread extends ImportGpxThread {
- private final Uri uri;
- private ContentResolver contentResolver;
-
- public ImportGpxAttachmentThread(Uri uri, ContentResolver contentResolver, int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- this.uri = uri;
- this.contentResolver = contentResolver;
- }
-
- @Override
- protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
- Log.i("Import GPX from uri: " + uri);
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, -1));
- InputStream is = contentResolver.openInputStream(uri);
- try {
- return parser.parse(is, progressHandler);
- } finally {
- is.close();
- }
- }
- }
-
- static abstract class ImportGpxZipThread extends ImportGpxThread {
-
- protected ImportGpxZipThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- }
-
- @Override
- protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException {
- Collection<Geocache> caches = Collections.emptySet();
- // can't assume that GPX file comes before waypoint file in zip -> so we need two passes
- // 1. parse GPX files
- ZipInputStream zis = new ZipInputStream(getInputStream());
- try {
- for (ZipEntry zipEntry = zis.getNextEntry(); zipEntry != null; zipEntry = zis.getNextEntry()) {
- if (StringUtils.endsWithIgnoreCase(zipEntry.getName(), GPX_FILE_EXTENSION)) {
- if (!StringUtils.endsWithIgnoreCase(zipEntry.getName(), WAYPOINTS_FILE_SUFFIX_AND_EXTENSION)) {
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) zipEntry.getSize()));
- caches = parser.parse(new NoCloseInputStream(zis), progressHandler);
- }
- } else {
- throw new ParserException("Imported zip is not a GPX zip file.");
- }
- zis.closeEntry();
- }
- } finally {
- zis.close();
- }
-
- // 2. parse waypoint files
- zis = new ZipInputStream(getInputStream());
- try {
- for (ZipEntry zipEntry = zis.getNextEntry(); zipEntry != null; zipEntry = zis.getNextEntry()) {
- if (StringUtils.endsWithIgnoreCase(zipEntry.getName(), WAYPOINTS_FILE_SUFFIX_AND_EXTENSION)) {
- importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_WPT_FILE, R.string.gpx_import_loading_waypoints, (int) zipEntry.getSize()));
- caches = parser.parse(new NoCloseInputStream(zis), progressHandler);
- }
- zis.closeEntry();
- }
- } finally {
- zis.close();
- }
-
- return caches;
- }
-
- protected abstract InputStream getInputStream() throws IOException;
- }
-
- static class ImportGpxZipFileThread extends ImportGpxZipThread {
- private final File cacheFile;
-
- public ImportGpxZipFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- this.cacheFile = file;
- Log.i("Import zipped GPX: " + file);
- }
-
- @Override
- protected InputStream getInputStream() throws IOException {
- return new FileInputStream(cacheFile);
- }
- }
-
- static class ImportGpxZipAttachmentThread extends ImportGpxZipThread {
- private final Uri uri;
- private ContentResolver contentResolver;
-
- public ImportGpxZipAttachmentThread(Uri uri, ContentResolver contentResolver, int listId, Handler importStepHandler, CancellableHandler progressHandler) {
- super(listId, importStepHandler, progressHandler);
- this.uri = uri;
- this.contentResolver = contentResolver;
- Log.i("Import zipped GPX from uri: " + uri);
- }
-
- @Override
- protected InputStream getInputStream() throws IOException {
- return contentResolver.openInputStream(uri);
- }
- }
-
- final private CancellableHandler progressHandler = new CancellableHandler() {
- @Override
- public void handleRegularMessage(Message msg) {
- progress.setProgress(msg.arg1);
- }
- };
-
- final private Handler importStepHandler = new Handler() {
- private boolean showProgressAfterCancel = false;
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case IMPORT_STEP_START:
- Message cancelMessage = importStepHandler.obtainMessage(IMPORT_STEP_CANCEL);
- progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_reading_file), res.getString(R.string.gpx_import_loading_caches), ProgressDialog.STYLE_HORIZONTAL, cancelMessage);
- break;
-
- case IMPORT_STEP_READ_FILE:
- case IMPORT_STEP_READ_WPT_FILE:
- progress.setMessage(res.getString(msg.arg1));
- progress.setMaxProgressAndReset(msg.arg2);
- break;
-
- case IMPORT_STEP_STORE_STATIC_MAPS:
- progress.dismiss();
- Message skipMessage = importStepHandler.obtainMessage(IMPORT_STEP_STATIC_MAPS_SKIPPED, msg.arg2, 0);
- progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_static_maps), res.getString(R.string.gpx_import_store_static_maps), ProgressDialog.STYLE_HORIZONTAL, skipMessage);
- progress.setMaxProgressAndReset(msg.arg2);
- break;
-
- case IMPORT_STEP_STATIC_MAPS_SKIPPED:
- progress.dismiss();
- progressHandler.cancel();
- StringBuilder bufferSkipped = new StringBuilder(20);
- bufferSkipped.append(res.getString(R.string.gpx_import_static_maps_skipped)).append(", ").append(msg.arg1).append(' ').append(res.getString(R.string.gpx_import_caches_imported));
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), bufferSkipped.toString());
- importFinished();
- break;
-
- case IMPORT_STEP_FINISHED:
- progress.dismiss();
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported));
- importFinished();
- break;
-
- case IMPORT_STEP_FINISHED_WITH_ERROR:
- progress.dismiss();
- fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_import_failed), res.getString(msg.arg1) + "\n\n" + msg.obj);
- importFinished();
- break;
-
- case IMPORT_STEP_CANCEL:
- progress.dismiss();
- progressHandler.cancel();
- break;
-
- case IMPORT_STEP_CANCELED:
- StringBuilder bufferCanceled = new StringBuilder(20);
- bufferCanceled.append(res.getString(R.string.gpx_import_canceled));
- if (showProgressAfterCancel) {
- bufferCanceled.append(", ").append(progress.getProgress()).append(' ').append(res.getString(R.string.gpx_import_caches_imported));
- }
- fromActivity.showShortToast(bufferCanceled.toString());
- importFinished();
- break;
-
- default:
- break;
- }
- }
- };
-
- /**
- * @param gpxfile
- * the gpx file
- * @return the expected file name of the waypoints file
- */
- static String getWaypointsFileNameForGpxFile(final File gpxfile) {
- if (gpxfile == null || !gpxfile.canRead()) {
- return null;
- }
- final String gpxFileName = gpxfile.getName();
- File dir = gpxfile.getParentFile();
- String[] filenameList = dir.list();
- for (String filename : filenameList) {
- if (!StringUtils.containsIgnoreCase(filename, WAYPOINTS_FILE_SUFFIX)) {
- continue;
- }
- String expectedGpxFileName = StringUtils.substringBeforeLast(filename, WAYPOINTS_FILE_SUFFIX)
- + StringUtils.substringAfterLast(filename, WAYPOINTS_FILE_SUFFIX);
- if (gpxFileName.equals(expectedGpxFileName)) {
- return filename;
- }
- }
- return null;
- }
-
- protected void importFinished() {
- if (importFinishedHandler != null) {
- importFinishedHandler.sendEmptyMessage(0);
- }
- }
-}
+package cgeo.geocaching.files; + +import cgeo.geocaching.Geocache; +import cgeo.geocaching.R; +import cgeo.geocaching.SearchResult; +import cgeo.geocaching.Settings; +import cgeo.geocaching.StaticMapsProvider; +import cgeo.geocaching.cgData; +import cgeo.geocaching.activity.IAbstractActivity; +import cgeo.geocaching.activity.Progress; +import cgeo.geocaching.enumerations.LoadFlags; +import cgeo.geocaching.utils.CancellableHandler; +import cgeo.geocaching.utils.Log; + +import org.apache.commons.lang3.StringUtils; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.net.Uri; +import android.os.Handler; +import android.os.Message; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CancellationException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +public class GPXImporter { + static final int IMPORT_STEP_START = 0; + static final int IMPORT_STEP_READ_FILE = 1; + static final int IMPORT_STEP_READ_WPT_FILE = 2; + static final int IMPORT_STEP_STORE_STATIC_MAPS = 4; + static final int IMPORT_STEP_FINISHED = 5; + static final int IMPORT_STEP_FINISHED_WITH_ERROR = 6; + static final int IMPORT_STEP_CANCEL = 7; + static final int IMPORT_STEP_CANCELED = 8; + static final int IMPORT_STEP_STATIC_MAPS_SKIPPED = 9; + + public static final String GPX_FILE_EXTENSION = ".gpx"; + public static final String ZIP_FILE_EXTENSION = ".zip"; + public static final String WAYPOINTS_FILE_SUFFIX = "-wpts"; + public static final String WAYPOINTS_FILE_SUFFIX_AND_EXTENSION = WAYPOINTS_FILE_SUFFIX + GPX_FILE_EXTENSION; + + private static final List<String> GPX_MIME_TYPES = Arrays.asList("text/xml", "application/xml"); + private static final List<String> ZIP_MIME_TYPES = Arrays.asList("application/zip", "application/x-compressed", "application/x-zip-compressed", "application/x-zip", "application/octet-stream"); + + private Progress progress = new Progress(true); + + private Resources res; + private int listId; + private IAbstractActivity fromActivity; + private Handler importFinishedHandler; + + public GPXImporter(final IAbstractActivity fromActivity, final int listId, final Handler importFinishedHandler) { + this.listId = listId; + this.fromActivity = fromActivity; + res = ((Activity) fromActivity).getResources(); + this.importFinishedHandler = importFinishedHandler; + } + + /** + * Import GPX file. Currently supports *.gpx, *.zip (containing gpx files, e.g. PQ queries) or *.loc files. + * + * @param file + * the file to import + */ + public void importGPX(final File file) { + if (StringUtils.endsWithIgnoreCase(file.getName(), GPX_FILE_EXTENSION)) { + new ImportGpxFileThread(file, listId, importStepHandler, progressHandler).start(); + } else if (StringUtils.endsWithIgnoreCase(file.getName(), ZIP_FILE_EXTENSION)) { + new ImportGpxZipFileThread(file, listId, importStepHandler, progressHandler).start(); + } else { + new ImportLocFileThread(file, listId, importStepHandler, progressHandler).start(); + } + } + + /** + * Import GPX provided via intent of activity that instantiated this GPXImporter. + */ + public void importGPX() { + final ContentResolver contentResolver = ((Activity) fromActivity).getContentResolver(); + final Intent intent = ((Activity) fromActivity).getIntent(); + final Uri uri = intent.getData(); + + String mimeType = intent.getType(); + // if mimetype can't be determined (e.g. for emulators email app), derive it from uri file extension + // contentResolver.getType(uri) doesn't help but throws exception for emulators email app + // Permission Denial: reading com.android.email.provider.EmailProvider uri + // Google search says: there is no solution for this problem + // Gmail doesn't work at all, see #967 + if (mimeType == null) { + if (StringUtils.endsWithIgnoreCase(uri.getPath(), GPX_FILE_EXTENSION)) { + mimeType = "application/xml"; + } else { + // if we can't determine a better type, default to zip import + // emulator email sends e.g. content://com.android.email.attachmentprovider/1/1/RAW, mimetype=null + mimeType = "application/zip"; + } + } + + Log.i("importGPX: " + uri + ", mimetype=" + mimeType); + if (GPX_MIME_TYPES.contains(mimeType)) { + new ImportGpxAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start(); + } else if (ZIP_MIME_TYPES.contains(mimeType)) { + new ImportGpxZipAttachmentThread(uri, contentResolver, listId, importStepHandler, progressHandler).start(); + } else { + importFinished(); + } + } + + static abstract class ImportThread extends Thread { + final int listId; + final Handler importStepHandler; + final CancellableHandler progressHandler; + + protected ImportThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) { + this.listId = listId; + this.importStepHandler = importStepHandler; + this.progressHandler = progressHandler; + } + + @Override + public void run() { + try { + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_START)); + final Collection<Geocache> caches = doImport(); + Log.i("Imported successfully " + caches.size() + " caches."); + + final SearchResult search = new SearchResult(); + for (Geocache cache : caches) { + search.addCache(cache); + } + + if (Settings.isStoreOfflineMaps() || Settings.isStoreOfflineWpMaps()) { + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_STORE_STATIC_MAPS, R.string.gpx_import_store_static_maps, search.getCount())); + boolean finishedWithoutCancel = importStaticMaps(search); + // Skip last message if static maps where canceled + if (!finishedWithoutCancel) { + return; + } + } + + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED, search.getCount(), 0, search)); + } catch (IOException e) { + Log.i("Importing caches failed - error reading data: " + e.getMessage()); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_io, 0, e.getLocalizedMessage())); + } catch (ParserException e) { + Log.i("Importing caches failed - data format error" + e.getMessage()); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_parser, 0, e.getLocalizedMessage())); + } catch (CancellationException e) { + Log.i("Importing caches canceled"); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_CANCELED)); + } catch (Exception e) { + Log.e("Importing caches failed - unknown error: ", e); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_FINISHED_WITH_ERROR, R.string.gpx_import_error_unexpected, 0, e.getLocalizedMessage())); + } + } + + protected abstract Collection<Geocache> doImport() throws IOException, ParserException; + + private boolean importStaticMaps(final SearchResult importedCaches) { + int storedCacheMaps = 0; + for (final String geocode : importedCaches.getGeocodes()) { + final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_WAYPOINTS); + if (cache != null) { + Log.d("GPXImporter.ImportThread.importStaticMaps start downloadMaps for cache " + geocode); + StaticMapsProvider.downloadMaps(cache); + } else { + Log.d("GPXImporter.ImportThread.importStaticMaps: no data found for " + geocode); + } + storedCacheMaps++; + if (progressHandler.isCancelled()) { + return false; + } + progressHandler.sendMessage(progressHandler.obtainMessage(0, storedCacheMaps, 0)); + } + return true; + } + } + + static class ImportLocFileThread extends ImportThread { + private final File file; + + public ImportLocFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + this.file = file; + } + + @Override + protected Collection<Geocache> doImport() throws IOException, ParserException { + Log.i("Import LOC file: " + file.getAbsolutePath()); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) file.length())); + LocParser parser = new LocParser(listId); + return parser.parse(file, progressHandler); + } + } + + static abstract class ImportGpxThread extends ImportThread { + + protected ImportGpxThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + } + + @Override + protected Collection<Geocache> doImport() throws IOException, ParserException { + try { + // try to parse cache file as GPX 10 + return doImport(new GPX10Parser(listId)); + } catch (ParserException pe) { + // didn't work -> lets try GPX11 + return doImport(new GPX11Parser(listId)); + } + } + + protected abstract Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException; + } + + static class ImportGpxFileThread extends ImportGpxThread { + private final File cacheFile; + + public ImportGpxFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + this.cacheFile = file; + } + + @Override + protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException { + Log.i("Import GPX file: " + cacheFile.getAbsolutePath()); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) cacheFile.length())); + Collection<Geocache> caches = parser.parse(cacheFile, progressHandler); + + final String wptsFilename = getWaypointsFileNameForGpxFile(cacheFile); + if (wptsFilename != null) { + final File wptsFile = new File(cacheFile.getParentFile(), wptsFilename); + if (wptsFile.canRead()) { + Log.i("Import GPX waypoint file: " + wptsFile.getAbsolutePath()); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_WPT_FILE, R.string.gpx_import_loading_waypoints, (int) wptsFile.length())); + caches = parser.parse(wptsFile, progressHandler); + } + } + return caches; + } + } + + static class ImportGpxAttachmentThread extends ImportGpxThread { + private final Uri uri; + private ContentResolver contentResolver; + + public ImportGpxAttachmentThread(Uri uri, ContentResolver contentResolver, int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + this.uri = uri; + this.contentResolver = contentResolver; + } + + @Override + protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException { + Log.i("Import GPX from uri: " + uri); + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, -1)); + InputStream is = contentResolver.openInputStream(uri); + try { + return parser.parse(is, progressHandler); + } finally { + is.close(); + } + } + } + + static abstract class ImportGpxZipThread extends ImportGpxThread { + + protected ImportGpxZipThread(int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + } + + @Override + protected Collection<Geocache> doImport(GPXParser parser) throws IOException, ParserException { + Collection<Geocache> caches = Collections.emptySet(); + // can't assume that GPX file comes before waypoint file in zip -> so we need two passes + // 1. parse GPX files + ZipInputStream zis = new ZipInputStream(getInputStream()); + try { + for (ZipEntry zipEntry = zis.getNextEntry(); zipEntry != null; zipEntry = zis.getNextEntry()) { + if (StringUtils.endsWithIgnoreCase(zipEntry.getName(), GPX_FILE_EXTENSION)) { + if (!StringUtils.endsWithIgnoreCase(zipEntry.getName(), WAYPOINTS_FILE_SUFFIX_AND_EXTENSION)) { + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_FILE, R.string.gpx_import_loading_caches, (int) zipEntry.getSize())); + caches = parser.parse(new NoCloseInputStream(zis), progressHandler); + } + } else { + throw new ParserException("Imported zip is not a GPX zip file."); + } + zis.closeEntry(); + } + } finally { + zis.close(); + } + + // 2. parse waypoint files + zis = new ZipInputStream(getInputStream()); + try { + for (ZipEntry zipEntry = zis.getNextEntry(); zipEntry != null; zipEntry = zis.getNextEntry()) { + if (StringUtils.endsWithIgnoreCase(zipEntry.getName(), WAYPOINTS_FILE_SUFFIX_AND_EXTENSION)) { + importStepHandler.sendMessage(importStepHandler.obtainMessage(IMPORT_STEP_READ_WPT_FILE, R.string.gpx_import_loading_waypoints, (int) zipEntry.getSize())); + caches = parser.parse(new NoCloseInputStream(zis), progressHandler); + } + zis.closeEntry(); + } + } finally { + zis.close(); + } + + return caches; + } + + protected abstract InputStream getInputStream() throws IOException; + } + + static class ImportGpxZipFileThread extends ImportGpxZipThread { + private final File cacheFile; + + public ImportGpxZipFileThread(final File file, int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + this.cacheFile = file; + Log.i("Import zipped GPX: " + file); + } + + @Override + protected InputStream getInputStream() throws IOException { + return new FileInputStream(cacheFile); + } + } + + static class ImportGpxZipAttachmentThread extends ImportGpxZipThread { + private final Uri uri; + private ContentResolver contentResolver; + + public ImportGpxZipAttachmentThread(Uri uri, ContentResolver contentResolver, int listId, Handler importStepHandler, CancellableHandler progressHandler) { + super(listId, importStepHandler, progressHandler); + this.uri = uri; + this.contentResolver = contentResolver; + Log.i("Import zipped GPX from uri: " + uri); + } + + @Override + protected InputStream getInputStream() throws IOException { + return contentResolver.openInputStream(uri); + } + } + + final private CancellableHandler progressHandler = new CancellableHandler() { + @Override + public void handleRegularMessage(Message msg) { + progress.setProgress(msg.arg1); + } + }; + + final private Handler importStepHandler = new Handler() { + private boolean showProgressAfterCancel = false; + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case IMPORT_STEP_START: + Message cancelMessage = importStepHandler.obtainMessage(IMPORT_STEP_CANCEL); + progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_reading_file), res.getString(R.string.gpx_import_loading_caches), ProgressDialog.STYLE_HORIZONTAL, cancelMessage); + break; + + case IMPORT_STEP_READ_FILE: + case IMPORT_STEP_READ_WPT_FILE: + progress.setMessage(res.getString(msg.arg1)); + progress.setMaxProgressAndReset(msg.arg2); + break; + + case IMPORT_STEP_STORE_STATIC_MAPS: + progress.dismiss(); + Message skipMessage = importStepHandler.obtainMessage(IMPORT_STEP_STATIC_MAPS_SKIPPED, msg.arg2, 0); + progress.show((Context) fromActivity, res.getString(R.string.gpx_import_title_static_maps), res.getString(R.string.gpx_import_store_static_maps), ProgressDialog.STYLE_HORIZONTAL, skipMessage); + progress.setMaxProgressAndReset(msg.arg2); + break; + + case IMPORT_STEP_STATIC_MAPS_SKIPPED: + progress.dismiss(); + progressHandler.cancel(); + StringBuilder bufferSkipped = new StringBuilder(20); + bufferSkipped.append(res.getString(R.string.gpx_import_static_maps_skipped)).append(", ").append(msg.arg1).append(' ').append(res.getString(R.string.gpx_import_caches_imported)); + fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), bufferSkipped.toString()); + importFinished(); + break; + + case IMPORT_STEP_FINISHED: + progress.dismiss(); + fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_imported), msg.arg1 + " " + res.getString(R.string.gpx_import_caches_imported)); + importFinished(); + break; + + case IMPORT_STEP_FINISHED_WITH_ERROR: + progress.dismiss(); + fromActivity.helpDialog(res.getString(R.string.gpx_import_title_caches_import_failed), res.getString(msg.arg1) + "\n\n" + msg.obj); + importFinished(); + break; + + case IMPORT_STEP_CANCEL: + progress.dismiss(); + progressHandler.cancel(); + break; + + case IMPORT_STEP_CANCELED: + StringBuilder bufferCanceled = new StringBuilder(20); + bufferCanceled.append(res.getString(R.string.gpx_import_canceled)); + if (showProgressAfterCancel) { + bufferCanceled.append(", ").append(progress.getProgress()).append(' ').append(res.getString(R.string.gpx_import_caches_imported)); + } + fromActivity.showShortToast(bufferCanceled.toString()); + importFinished(); + break; + + default: + break; + } + } + }; + + /** + * @param gpxfile + * the gpx file + * @return the expected file name of the waypoints file + */ + static String getWaypointsFileNameForGpxFile(final File gpxfile) { + if (gpxfile == null || !gpxfile.canRead()) { + return null; + } + final String gpxFileName = gpxfile.getName(); + File dir = gpxfile.getParentFile(); + String[] filenameList = dir.list(); + for (String filename : filenameList) { + if (!StringUtils.containsIgnoreCase(filename, WAYPOINTS_FILE_SUFFIX)) { + continue; + } + String expectedGpxFileName = StringUtils.substringBeforeLast(filename, WAYPOINTS_FILE_SUFFIX) + + StringUtils.substringAfterLast(filename, WAYPOINTS_FILE_SUFFIX); + if (gpxFileName.equals(expectedGpxFileName)) { + return filename; + } + } + return null; + } + + protected void importFinished() { + if (importFinishedHandler != null) { + importFinishedHandler.sendEmptyMessage(0); + } + } +} diff --git a/main/src/cgeo/geocaching/files/GPXParser.java b/main/src/cgeo/geocaching/files/GPXParser.java index 5647d14..96c90cc 100644 --- a/main/src/cgeo/geocaching/files/GPXParser.java +++ b/main/src/cgeo/geocaching/files/GPXParser.java @@ -190,6 +190,9 @@ public abstract class GPXParser extends FileParser { // map GPX-Attribute-Id to baseName public static String getBaseName(final int id) { + if (id < 0) { + return null; + } // get String out of array if (CACHE_ATTRIBUTES.length <= id) { return null; diff --git a/main/src/cgeo/geocaching/files/SimpleDirChooser.java b/main/src/cgeo/geocaching/files/SimpleDirChooser.java index 7520e2e..844287c 100644 --- a/main/src/cgeo/geocaching/files/SimpleDirChooser.java +++ b/main/src/cgeo/geocaching/files/SimpleDirChooser.java @@ -238,7 +238,7 @@ public class SimpleDirChooser extends ListActivity { @Override public boolean accept(File dir, String filename) { File file = new File(dir, filename); - return file.isDirectory(); + return file.isDirectory() && file.canWrite(); } } diff --git a/main/src/cgeo/geocaching/filter/AttributeFilter.java b/main/src/cgeo/geocaching/filter/AttributeFilter.java index 4b6f382..cadcf49 100644 --- a/main/src/cgeo/geocaching/filter/AttributeFilter.java +++ b/main/src/cgeo/geocaching/filter/AttributeFilter.java @@ -1,16 +1,16 @@ package cgeo.geocaching.filter; -import cgeo.geocaching.R; import cgeo.geocaching.Geocache; +import cgeo.geocaching.R; import cgeo.geocaching.cgData; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.enumerations.LoadFlags.LoadFlag; -import org.apache.commons.lang3.StringUtils; - import android.content.res.Resources; import java.util.EnumSet; +import java.util.LinkedList; +import java.util.List; class AttributeFilter extends AbstractFilter { @@ -24,13 +24,7 @@ class AttributeFilter extends AbstractFilter { private static String getName(final String attribute, final Resources res, final String packageName) { // dynamically search for a translation of the attribute final int id = res.getIdentifier(attribute, "string", packageName); - if (id > 0) { - final String translated = res.getString(id); - if (StringUtils.isNotBlank(translated)) { - return translated; - } - } - return attribute; + return id > 0 ? res.getString(id) : attribute; } @Override @@ -45,14 +39,13 @@ class AttributeFilter extends AbstractFilter { public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<IFilter> getFilters() { final String packageName = cgeoapplication.getInstance().getBaseContext().getPackageName(); final Resources res = cgeoapplication.getInstance().getResources(); - final String[] ids = res.getStringArray(R.array.attribute_ids); - final IFilter[] filters = new IFilter[ids.length]; - for (int i = 0; i < ids.length; i++) { - filters[i] = new AttributeFilter(getName("attribute_" + ids[i], res, packageName), ids[i]); + final List<IFilter> filters = new LinkedList<IFilter>(); + for (final String id: res.getStringArray(R.array.attribute_ids)) { + filters.add(new AttributeFilter(getName("attribute_" + id, res, packageName), id)); } return filters; } diff --git a/main/src/cgeo/geocaching/filter/DifficultyFilter.java b/main/src/cgeo/geocaching/filter/DifficultyFilter.java index c0ec61a..8099a51 100644 --- a/main/src/cgeo/geocaching/filter/DifficultyFilter.java +++ b/main/src/cgeo/geocaching/filter/DifficultyFilter.java @@ -4,6 +4,7 @@ import cgeo.geocaching.Geocache; import cgeo.geocaching.R; import java.util.ArrayList; +import java.util.List; class DifficultyFilter extends AbstractRangeFilter { @@ -19,12 +20,12 @@ class DifficultyFilter extends AbstractRangeFilter { public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<IFilter> getFilters() { final ArrayList<IFilter> filters = new ArrayList<IFilter>(5); for (int difficulty = 1; difficulty <= 5; difficulty++) { filters.add(new DifficultyFilter(difficulty)); } - return filters.toArray(new IFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/filter/FilterUserInterface.java b/main/src/cgeo/geocaching/filter/FilterUserInterface.java index be63a08..a1d42cc 100644 --- a/main/src/cgeo/geocaching/filter/FilterUserInterface.java +++ b/main/src/cgeo/geocaching/filter/FilterUserInterface.java @@ -16,6 +16,7 @@ import android.widget.ArrayAdapter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.List; public final class FilterUserInterface { @@ -101,9 +102,9 @@ public final class FilterUserInterface { } private void selectFromFactory(final IFilterFactory factory, final String menuTitle, final RunnableWithArgument<IFilter> runAfterwards) { - final IFilter[] filters = factory.getFilters(); - if (filters.length == 1) { - runAfterwards.run(filters[0]); + final List<IFilter> filters = Collections.unmodifiableList(factory.getFilters()); + if (filters.size() == 1) { + runAfterwards.run(filters.get(0)); return; } @@ -114,7 +115,7 @@ public final class FilterUserInterface { builder.setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { - runAfterwards.run(filters[item]); + runAfterwards.run(filters.get(item)); } }); diff --git a/main/src/cgeo/geocaching/filter/IFilterFactory.java b/main/src/cgeo/geocaching/filter/IFilterFactory.java index 3491fd7..e750639 100644 --- a/main/src/cgeo/geocaching/filter/IFilterFactory.java +++ b/main/src/cgeo/geocaching/filter/IFilterFactory.java @@ -1,5 +1,7 @@ package cgeo.geocaching.filter; +import java.util.List; + interface IFilterFactory { - public IFilter[] getFilters(); + public List<? extends IFilter> getFilters(); } diff --git a/main/src/cgeo/geocaching/filter/ModifiedFilter.java b/main/src/cgeo/geocaching/filter/ModifiedFilter.java index f3e57de..74befda 100644 --- a/main/src/cgeo/geocaching/filter/ModifiedFilter.java +++ b/main/src/cgeo/geocaching/filter/ModifiedFilter.java @@ -4,6 +4,9 @@ import cgeo.geocaching.Geocache; import cgeo.geocaching.R; import cgeo.geocaching.cgeoapplication; +import java.util.Collections; +import java.util.List; + class ModifiedFilter extends AbstractFilter implements IFilterFactory { public ModifiedFilter() { @@ -17,7 +20,7 @@ class ModifiedFilter extends AbstractFilter implements IFilterFactory { } @Override - public IFilter[] getFilters() { - return new IFilter[] { this }; + public List<ModifiedFilter> getFilters() { + return Collections.singletonList(this); } } diff --git a/main/src/cgeo/geocaching/filter/OriginFilter.java b/main/src/cgeo/geocaching/filter/OriginFilter.java index a880092..bd4e41e 100644 --- a/main/src/cgeo/geocaching/filter/OriginFilter.java +++ b/main/src/cgeo/geocaching/filter/OriginFilter.java @@ -7,6 +7,7 @@ import cgeo.geocaching.connector.IConnector; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.List; public class OriginFilter extends AbstractFilter { @@ -25,7 +26,7 @@ public class OriginFilter extends AbstractFilter { public static final class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<OriginFilter> getFilters() { final ArrayList<OriginFilter> filters = new ArrayList<OriginFilter>(); for (IConnector connector : ConnectorFactory.getConnectors()) { filters.add(new OriginFilter(connector)); @@ -40,7 +41,7 @@ public class OriginFilter extends AbstractFilter { } }); - return filters.toArray(new OriginFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/filter/SizeFilter.java b/main/src/cgeo/geocaching/filter/SizeFilter.java index 7a34c83..8ddc475 100644 --- a/main/src/cgeo/geocaching/filter/SizeFilter.java +++ b/main/src/cgeo/geocaching/filter/SizeFilter.java @@ -3,7 +3,8 @@ package cgeo.geocaching.filter; import cgeo.geocaching.Geocache; import cgeo.geocaching.enumerations.CacheSize; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; class SizeFilter extends AbstractFilter { private final CacheSize cacheSize; @@ -26,15 +27,15 @@ class SizeFilter extends AbstractFilter { public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<IFilter> getFilters() { final CacheSize[] cacheSizes = CacheSize.values(); - final ArrayList<SizeFilter> filters = new ArrayList<SizeFilter>(); + final List<IFilter> filters = new LinkedList<IFilter>(); for (CacheSize cacheSize : cacheSizes) { if (cacheSize != CacheSize.UNKNOWN) { filters.add(new SizeFilter(cacheSize)); } } - return filters.toArray(new SizeFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/filter/StateFilter.java b/main/src/cgeo/geocaching/filter/StateFilter.java index 0df47c1..e18128d 100644 --- a/main/src/cgeo/geocaching/filter/StateFilter.java +++ b/main/src/cgeo/geocaching/filter/StateFilter.java @@ -9,6 +9,7 @@ import android.content.res.Resources; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.List; abstract class StateFilter extends AbstractFilter { @@ -86,17 +87,41 @@ abstract class StateFilter extends AbstractFilter { } } + static class StateStoredFilter extends StateFilter { + public StateStoredFilter() { + super(res.getString(R.string.cache_status_stored)); + } + + @Override + public boolean accepts(Geocache cache) { + return cache.isOffline(); + } + } + + static class StateNotStoredFilter extends StateFilter { + public StateNotStoredFilter() { + super(res.getString(R.string.cache_status_not_stored)); + } + + @Override + public boolean accepts(Geocache cache) { + return !cache.isOffline(); + } + } + public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { - final ArrayList<StateFilter> filters = new ArrayList<StateFilter>(); + public List<StateFilter> getFilters() { + final List<StateFilter> filters = new ArrayList<StateFilter>(6); filters.add(new StateFoundFilter()); filters.add(new StateArchivedFilter()); filters.add(new StateDisabledFilter()); filters.add(new StatePremiumFilter()); filters.add(new StateNonPremiumFilter()); filters.add(new StateOfflineLogFilter()); + filters.add(new StateStoredFilter()); + filters.add(new StateNotStoredFilter()); Collections.sort(filters, new Comparator<StateFilter>() { @@ -106,7 +131,7 @@ abstract class StateFilter extends AbstractFilter { } }); - return filters.toArray(new StateFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/filter/TerrainFilter.java b/main/src/cgeo/geocaching/filter/TerrainFilter.java index f7703d5..87372c6 100644 --- a/main/src/cgeo/geocaching/filter/TerrainFilter.java +++ b/main/src/cgeo/geocaching/filter/TerrainFilter.java @@ -1,10 +1,10 @@ package cgeo.geocaching.filter; - -import cgeo.geocaching.R; import cgeo.geocaching.Geocache; +import cgeo.geocaching.R; import java.util.ArrayList; +import java.util.List; class TerrainFilter extends AbstractRangeFilter { @@ -19,12 +19,12 @@ class TerrainFilter extends AbstractRangeFilter { public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<IFilter> getFilters() { final ArrayList<IFilter> filters = new ArrayList<IFilter>(5); for (int terrain = 1; terrain <= 5; terrain++) { filters.add(new TerrainFilter(terrain)); } - return filters.toArray(new IFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/filter/TrackablesFilter.java b/main/src/cgeo/geocaching/filter/TrackablesFilter.java index 3225daa..5eff8a7 100644 --- a/main/src/cgeo/geocaching/filter/TrackablesFilter.java +++ b/main/src/cgeo/geocaching/filter/TrackablesFilter.java @@ -1,9 +1,12 @@ package cgeo.geocaching.filter; -import cgeo.geocaching.R; import cgeo.geocaching.Geocache; +import cgeo.geocaching.R; import cgeo.geocaching.cgeoapplication; +import java.util.Collections; +import java.util.List; + class TrackablesFilter extends AbstractFilter implements IFilterFactory { public TrackablesFilter() { super(cgeoapplication.getInstance().getString(R.string.caches_filter_track)); @@ -15,8 +18,8 @@ class TrackablesFilter extends AbstractFilter implements IFilterFactory { } @Override - public IFilter[] getFilters() { - return new IFilter[] { this }; + public List<TrackablesFilter> getFilters() { + return Collections.singletonList(this); } } diff --git a/main/src/cgeo/geocaching/filter/TypeFilter.java b/main/src/cgeo/geocaching/filter/TypeFilter.java index eeab552..ea0ccff 100644 --- a/main/src/cgeo/geocaching/filter/TypeFilter.java +++ b/main/src/cgeo/geocaching/filter/TypeFilter.java @@ -3,7 +3,8 @@ package cgeo.geocaching.filter; import cgeo.geocaching.Geocache; import cgeo.geocaching.enumerations.CacheType; -import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; class TypeFilter extends AbstractFilter { private final CacheType cacheType; @@ -26,15 +27,15 @@ class TypeFilter extends AbstractFilter { public static class Factory implements IFilterFactory { @Override - public IFilter[] getFilters() { + public List<IFilter> getFilters() { final CacheType[] types = CacheType.values(); - final ArrayList<IFilter> filters = new ArrayList<IFilter>(types.length); + final List<IFilter> filters = new LinkedList<IFilter>(); for (CacheType cacheType : types) { if (cacheType != CacheType.ALL) { filters.add(new TypeFilter(cacheType)); } } - return filters.toArray(new IFilter[filters.size()]); + return filters; } } diff --git a/main/src/cgeo/geocaching/gcvote/GCVote.java b/main/src/cgeo/geocaching/gcvote/GCVote.java index a053f31..f6cfb84 100644 --- a/main/src/cgeo/geocaching/gcvote/GCVote.java +++ b/main/src/cgeo/geocaching/gcvote/GCVote.java @@ -173,12 +173,15 @@ public final class GCVote { /** * Transmit user vote to gcvote.com - * + * * @param cache * @param vote - * @return + * @return {@code true} if the rating was submitted successfully */ public static boolean setRating(Geocache cache, double vote) { + if (!Settings.isGCvoteLogin()) { + return false; + } if (!cache.supportsGCVote()) { return false; } diff --git a/main/src/cgeo/geocaching/geopoint/Geopoint.java b/main/src/cgeo/geocaching/geopoint/Geopoint.java index c03a2bc..dbe0aa4 100644 --- a/main/src/cgeo/geocaching/geopoint/Geopoint.java +++ b/main/src/cgeo/geocaching/geopoint/Geopoint.java @@ -173,6 +173,16 @@ public final class Geopoint implements ICoordinates, Parcelable { return longitude; } + /* + * Return a waypoint which is the copy of this one rounded to the given limit. + * For example, to get a waypoint adapter to a display with 3 digits after the + * seconds decimal point, a rounding factor of 3600*1000 would be appropriate. + */ + Geopoint roundedAt(final long factor) { + return new Geopoint(((double) Math.round(latitude * factor)) / factor, + ((double) Math.round(longitude * factor)) / factor); + } + /** * Get longitude in microdegree. * diff --git a/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java b/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java index ba0a4d5..67f5ebb 100644 --- a/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java +++ b/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java @@ -64,36 +64,51 @@ public class GeopointFormatter { case LAT_LON_DECDEGREE_COMMA: return String.format((Locale) null, "%.6f,%.6f", latSigned, lonSigned); - case LAT_LON_DECMINUTE: + case LAT_LON_DECMINUTE: { + final Geopoint rgp = gp.roundedAt(60 * 1000); return String.format(Locale.getDefault(), "%c %02d° %06.3f · %c %03d° %06.3f", - gp.getLatDir(), gp.getLatDeg(), gp.getLatMinRaw(), gp.getLonDir(), gp.getLonDeg(), gp.getLonMinRaw()); + rgp.getLatDir(), rgp.getLatDeg(), rgp.getLatMinRaw(), rgp.getLonDir(), rgp.getLonDeg(), rgp.getLonMinRaw()); + } - case LAT_LON_DECMINUTE_RAW: + case LAT_LON_DECMINUTE_RAW: { + final Geopoint rgp = gp.roundedAt(60 * 1000); return String.format((Locale) null, "%c %02d° %06.3f %c %03d° %06.3f", - gp.getLatDir(), gp.getLatDeg(), gp.getLatMinRaw(), gp.getLonDir(), gp.getLonDeg(), gp.getLonMinRaw()); + rgp.getLatDir(), rgp.getLatDeg(), rgp.getLatMinRaw(), rgp.getLonDir(), rgp.getLonDeg(), rgp.getLonMinRaw()); + } - case LAT_LON_DECSECOND: + case LAT_LON_DECSECOND: { + final Geopoint rgp = gp.roundedAt(3600 * 1000); return String.format(Locale.getDefault(), "%c %02d° %02d' %06.3f\" · %c %03d° %02d' %06.3f\"", - gp.getLatDir(), gp.getLatDeg(), gp.getLatMin(), gp.getLatSecRaw(), - gp.getLonDir(), gp.getLonDeg(), gp.getLonMin(), gp.getLonSecRaw()); + rgp.getLatDir(), rgp.getLatDeg(), rgp.getLatMin(), rgp.getLatSecRaw(), + rgp.getLonDir(), rgp.getLonDeg(), rgp.getLonMin(), rgp.getLonSecRaw()); + } case LAT_DECDEGREE_RAW: return String.format((Locale) null, "%.6f", latSigned); - case LAT_DECMINUTE: - return String.format(Locale.getDefault(), "%c %02d° %06.3f", gp.getLatDir(), gp.getLatDeg(), gp.getLatMinRaw()); + case LAT_DECMINUTE: { + final Geopoint rgp = gp.roundedAt(60 * 1000); + return String.format(Locale.getDefault(), "%c %02d° %06.3f", rgp.getLatDir(), rgp.getLatDeg(), rgp.getLatMinRaw()); + } - case LAT_DECMINUTE_RAW: - return String.format(Locale.getDefault(), "%c %02d %06.3f", gp.getLatDir(), gp.getLatDeg(), gp.getLatMinRaw()); + case LAT_DECMINUTE_RAW: { + final Geopoint rgp = gp.roundedAt(60 * 1000); + return String.format(Locale.getDefault(), "%c %02d %06.3f", rgp.getLatDir(), rgp.getLatDeg(), rgp.getLatMinRaw()); + } case LON_DECDEGREE_RAW: return String.format((Locale) null, "%.6f", lonSigned); - case LON_DECMINUTE: - return String.format(Locale.getDefault(), "%c %03d° %06.3f", gp.getLonDir(), gp.getLonDeg(), gp.getLonMinRaw()); + case LON_DECMINUTE: { + final Geopoint rgp = gp.roundedAt(60 * 1000); + return String.format(Locale.getDefault(), "%c %03d° %06.3f", rgp.getLonDir(), rgp.getLonDeg(), rgp.getLonMinRaw()); + } + + case LON_DECMINUTE_RAW: { + final Geopoint rgp = gp.roundedAt(60 * 1000); + return String.format(Locale.getDefault(), "%c %03d %06.3f", rgp.getLonDir(), rgp.getLonDeg(), rgp.getLonMinRaw()); + } - case LON_DECMINUTE_RAW: - return String.format(Locale.getDefault(), "%c %03d %06.3f", gp.getLonDir(), gp.getLonDeg(), gp.getLonMinRaw()); default: throw new IllegalArgumentException(); } diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java index f2e455c..21c4984 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -382,9 +382,9 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto if (extras != null) { mapMode = (MapMode) extras.get(EXTRAS_MAP_MODE); isLiveEnabled = extras.getBoolean(EXTRAS_LIVE_ENABLED, false); - searchIntent = (SearchResult) extras.getParcelable(EXTRAS_SEARCH); + searchIntent = extras.getParcelable(EXTRAS_SEARCH); geocodeIntent = extras.getString(EXTRAS_GEOCODE); - coordsIntent = (Geopoint) extras.getParcelable(EXTRAS_COORDS); + coordsIntent = extras.getParcelable(EXTRAS_COORDS); waypointTypeIntent = WaypointType.findById(extras.getString(EXTRAS_WPTTYPE)); mapStateIntent = extras.getIntArray(EXTRAS_MAPSTATE); mapTitle = extras.getString(EXTRAS_MAP_TITLE); @@ -750,9 +750,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto @Override public void onClick(DialogInterface dialog, int newItem) { - if (newItem == selectedItem) { - // no change - } else { + if (newItem != selectedItem) { // Adjust index because of <default> selection if (newItem > 0) { Settings.setCustomRenderThemeFile(themeFiles[newItem - 1].getPath()); diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java index a409750..b08d36d 100644 --- a/main/src/cgeo/geocaching/network/HtmlImage.java +++ b/main/src/cgeo/geocaching/network/HtmlImage.java @@ -193,7 +193,11 @@ public class HtmlImage implements Html.ImageGetter { if (file.exists()) { if (listId >= StoredList.STANDARD_LIST_ID || file.lastModified() > (new Date().getTime() - (24 * 60 * 60 * 1000)) || forceKeep) { setSampleSize(file); - return BitmapFactory.decodeFile(file.getPath(), bfOptions); + final Bitmap image = BitmapFactory.decodeFile(file.getPath(), bfOptions); + if (image == null) { + Log.e("Cannot decode bitmap from " + file.getPath()); + } + return image; } } return null; diff --git a/main/src/cgeo/geocaching/twitter/Twitter.java b/main/src/cgeo/geocaching/twitter/Twitter.java index f30830e..e3d3f77 100644 --- a/main/src/cgeo/geocaching/twitter/Twitter.java +++ b/main/src/cgeo/geocaching/twitter/Twitter.java @@ -15,7 +15,10 @@ import cgeo.geocaching.utils.Log; import ch.boye.httpclientandroidlib.HttpResponse; +import org.apache.commons.lang3.StringUtils; + public final class Twitter { + private static final String HASH_PREFIX_WITH_BLANK = " #"; public static final int MAX_TWEET_SIZE = 140; public static void postTweet(final cgeoapplication app, final String status, final Geopoint coords) { @@ -47,49 +50,56 @@ public final class Twitter { } } - public static String appendHashTag(final String status, final String tag) { - String result = status; - if (result.length() + 2 + tag.length() <= 140) { - result += " #" + tag; + public static void appendHashTag(final StringBuilder status, final String tag) { + if (status.length() + HASH_PREFIX_WITH_BLANK.length() + tag.length() <= MAX_TWEET_SIZE) { + final String tagWithPrefix = HASH_PREFIX_WITH_BLANK + tag; + if (status.indexOf(tagWithPrefix, 0) == -1) { + status.append(tagWithPrefix); + } } - return result; } public static void postTweetCache(String geocode) { - final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB); - String status; - final String url = cache.getUrl(); - if (url.length() >= 100) { - status = "I found " + url; + if (!Settings.isUseTwitter()) { + return; } - else { - String name = cache.getName(); - status = "I found " + name + " (" + url + ")"; - if (status.length() > MAX_TWEET_SIZE) { - name = name.substring(0, name.length() - (status.length() - MAX_TWEET_SIZE) - 1) + '…'; - } - status = "I found " + name + " (" + url + ")"; - status = appendHashTag(status, "cgeo"); - status = appendHashTag(status, "geocaching"); + if (!Settings.isTwitterLoginValid()) { + return; } + final Geocache cache = cgData.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB); + postTweet(cgeoapplication.getInstance(), getStatusMessage(cache), null); + } + + static String getStatusMessage(Geocache cache) { + String name = cache.getName(); + if (name.length() > 100) { + name = name.substring(0, 100) + '…'; + } + final String url = StringUtils.defaultString(cache.getUrl()); + return fillTemplate(Settings.getCacheTwitterMessage(), name, url); + } - postTweet(cgeoapplication.getInstance(), status, null); + private static String fillTemplate(String template, String name, final String url) { + String result = StringUtils.replace(template, "[NAME]", name); + result = StringUtils.replace(result, "[URL]", url); + StringBuilder builder = new StringBuilder(result); + appendHashTag(builder, "cgeo"); + appendHashTag(builder, "geocaching"); + return builder.toString(); } public static void postTweetTrackable(String geocode) { final Trackable trackable = cgData.loadTrackable(geocode); + postTweet(cgeoapplication.getInstance(), getStatusMessage(trackable), null); + } + + static String getStatusMessage(Trackable trackable) { String name = trackable.getName(); if (name.length() > 82) { name = name.substring(0, 81) + '…'; } - StringBuilder builder = new StringBuilder("I touched "); - builder.append(name); - if (trackable.getUrl() != null) { - builder.append(" (").append(trackable.getUrl()).append(')'); - } - builder.append('!'); - String status = appendHashTag(builder.toString(), "cgeo"); - status = appendHashTag(status, "geocaching"); - postTweet(cgeoapplication.getInstance(), status, null); + String url = StringUtils.defaultString(trackable.getUrl()); + String status = Settings.getTrackableTwitterMessage(); + return fillTemplate(status, name, url); } } diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java index e98bd77..80f01e2 100644 --- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java +++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java @@ -2,6 +2,7 @@ package cgeo.geocaching.ui; import cgeo.geocaching.Geocache; import cgeo.geocaching.R; +import cgeo.geocaching.Waypoint; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Units; @@ -154,4 +155,24 @@ public final class CacheDetailsCreator { } add(R.string.cache_distance, text); } + + public void addDistance(final Waypoint wpt, final TextView waypointDistanceView) { + Float distance = null; + if (wpt.getCoords() != null) { + final Geopoint currentCoords = cgeoapplication.getInstance().currentGeo().getCoords(); + if (currentCoords != null) { + distance = currentCoords.distanceTo(wpt); + } + } + String text = "--"; + if (distance != null) { + text = Units.getDistanceFromKilometers(distance); + } + else if (waypointDistanceView != null) { + // if there is already a distance in waypointDistance, use it instead of resetting to default. + // this prevents displaying "--" while waiting for a new position update (See bug #1468) + text = waypointDistanceView.getText().toString(); + } + add(R.string.cache_distance, text); + } } diff --git a/main/src/cgeo/geocaching/ui/CoordinatesFormatSwitcher.java b/main/src/cgeo/geocaching/ui/CoordinatesFormatSwitcher.java new file mode 100644 index 0000000..afadb33 --- /dev/null +++ b/main/src/cgeo/geocaching/ui/CoordinatesFormatSwitcher.java @@ -0,0 +1,38 @@ +package cgeo.geocaching.ui; + +import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.geopoint.GeopointFormatter; + +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.TextView; + +/** + * view click listener to automatically switch different coordinate formats + * + */ +public class CoordinatesFormatSwitcher implements OnClickListener { + + private static GeopointFormatter.Format[] availableFormats = new GeopointFormatter.Format[] { + GeopointFormatter.Format.LAT_LON_DECMINUTE, + GeopointFormatter.Format.LAT_LON_DECSECOND, + GeopointFormatter.Format.LAT_LON_DECDEGREE + }; + + private int position = 0; + + private final Geopoint coordinates; + + public CoordinatesFormatSwitcher(final Geopoint coordinates) { + this.coordinates = coordinates; + } + + @Override + public void onClick(View view) { + position = (position + 1) % availableFormats.length; + TextView textView = (TextView) view; + // rotate coordinate formats on click + textView.setText(coordinates.format(availableFormats[position])); + } + +}
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java index 4ba88ae..f10e13a 100644 --- a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java +++ b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java @@ -16,6 +16,12 @@ public class DecryptTextClickListener implements View.OnClickListener { try {
final TextView logView = (TextView) view;
+
+ // do not run the click listener if a link was clicked
+ if (logView.getSelectionStart() != -1 || logView.getSelectionEnd() != -1) {
+ return;
+ }
+
CharSequence text = logView.getText();
if (text instanceof Spannable) {
Spannable span = (Spannable) text;
diff --git a/main/src/cgeo/geocaching/ui/EditNoteDialog.java b/main/src/cgeo/geocaching/ui/EditNoteDialog.java new file mode 100644 index 0000000..23e57f2 --- /dev/null +++ b/main/src/cgeo/geocaching/ui/EditNoteDialog.java @@ -0,0 +1,65 @@ +package cgeo.geocaching.ui; + +import cgeo.geocaching.R; +import cgeo.geocaching.R.string; + +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager.LayoutParams; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; + +public class EditNoteDialog extends DialogFragment implements OnEditorActionListener { + + public interface EditNoteDialogListener { + void onFinishEditNoteDialog(final String inputText); + } + + private EditText mEditText; + private String initialNote; + + public EditNoteDialog() { + // Empty constructor required for DialogFragment + } + + public EditNoteDialog(final String initialNote) { + this.initialNote = initialNote; + } + + @Override + public View onCreateView(final LayoutInflater inflater, final ViewGroup container, + final Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_edit_note, container); + mEditText = (EditText) view.findViewById(R.id.note); + if (initialNote != null) { + mEditText.setText(initialNote); + initialNote = null; + } + getDialog().setTitle(string.cache_personal_note); + mEditText.requestFocus(); + getDialog().getWindow().setSoftInputMode( + LayoutParams.SOFT_INPUT_STATE_VISIBLE); + mEditText.setOnEditorActionListener(this); + + return view; + } + + @Override + public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) { + if (EditorInfo.IME_ACTION_DONE == actionId) { + final EditNoteDialogListener activity = (EditNoteDialogListener) getActivity(); + activity.onFinishEditNoteDialog(mEditText.getText().toString()); + dismiss(); + return true; + } + return false; + } + + +} diff --git a/main/src/cgeo/geocaching/ui/ImagesList.java b/main/src/cgeo/geocaching/ui/ImagesList.java index 9464114..b2c819c 100644 --- a/main/src/cgeo/geocaching/ui/ImagesList.java +++ b/main/src/cgeo/geocaching/ui/ImagesList.java @@ -11,7 +11,6 @@ import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; import android.app.Activity; -import android.app.ProgressDialog; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; @@ -46,16 +45,14 @@ public class ImagesList { private Image currentImage; public enum ImageType { - LogImages(R.string.cache_log_images_title, R.string.cache_log_images_loading), - SpoilerImages(R.string.cache_spoiler_images_title, R.string.cache_spoiler_images_loading), - AllImages(R.string.cache_images_title, R.string.cache_images_loading); + LogImages(R.string.cache_log_images_title), + SpoilerImages(R.string.cache_spoiler_images_title), + AllImages(R.string.cache_images_title); private final int titleResId; - private final int loadingResId; - ImageType(final int title, final int loading) { + ImageType(final int title) { this.titleResId = title; - this.loadingResId = loading; } public int getTitle() { @@ -64,9 +61,6 @@ public class ImagesList { } private LayoutInflater inflater = null; - private ProgressDialog progressDialog = null; - private int count = 0; - private int countDone = 0; private final Activity activity; // We could use a Set here, but we will insert no duplicates, so there is no need to check for uniqueness. private final Collection<Bitmap> bitmaps = new LinkedList<Bitmap>(); @@ -83,18 +77,10 @@ public class ImagesList { inflater = activity.getLayoutInflater(); } - public void loadImages(final View parentView, final List<Image> images, ImageType imageType, final boolean offline) { + public void loadImages(final View parentView, final List<Image> images, final boolean offline) { imagesView = (LinearLayout) parentView.findViewById(R.id.spoiler_list); - count = images.size(); - progressDialog = new ProgressDialog(activity); - progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); - progressDialog.setMessage(activity.getString(imageType.loadingResId)); - progressDialog.setCancelable(true); - progressDialog.setMax(count); - progressDialog.show(); - for (final Image img : images) { LinearLayout rowView = (LinearLayout) inflater.inflate(R.layout.cache_image_item, null); @@ -154,19 +140,12 @@ public class ImagesList { imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setLayoutParams(new LayoutParams(bounds.width(), bounds.height())); + view.findViewById(R.id.progress_bar).setVisibility(View.GONE); view.addView(imageView); imageView.setId(image.hashCode()); images.put(imageView.getId(), img); } - - synchronized (activity) { - countDone++; - progressDialog.setProgress(countDone); - if (progressDialog.getProgress() >= count) { - progressDialog.dismiss(); - } - } } } diff --git a/main/src/cgeo/geocaching/ui/dialog/EditorDialog.java b/main/src/cgeo/geocaching/ui/dialog/EditorDialog.java deleted file mode 100644 index 4db69e5..0000000 --- a/main/src/cgeo/geocaching/ui/dialog/EditorDialog.java +++ /dev/null @@ -1,60 +0,0 @@ -package cgeo.geocaching.ui.dialog; - -import cgeo.geocaching.CacheDetailActivity; -import cgeo.geocaching.R; -import cgeo.geocaching.activity.ActivityMixin; - -import android.app.Dialog; -import android.os.Bundle; -import android.view.View; -import android.view.ViewGroup.LayoutParams; -import android.view.Window; -import android.widget.Button; -import android.widget.EditText; - -public class EditorDialog extends Dialog { - - private CharSequence editorText; - private EditorUpdate editorUpdate; - - public EditorDialog(CacheDetailActivity cacheDetailActivity, CharSequence editable) { - super(cacheDetailActivity, ActivityMixin.getTheme()); - this.editorText = editable; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - requestWindowFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.editor); - - final EditText editText = (EditText) findViewById(R.id.editorEditText); - editText.setText(editorText); - - final Button buttonSave = (Button) findViewById(R.id.editorSave); - buttonSave.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - editorUpdate.update(editText.getEditableText()); - EditorDialog.this.hide(); - } - }); - } - - public interface EditorUpdate { - public void update(CharSequence editorText); - } - - public void setOnEditorUpdate(EditorUpdate editorUpdate) { - this.editorUpdate = editorUpdate; - - } - - @Override - public void show() { - super.show(); - getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - } - -} diff --git a/main/src/cgeo/geocaching/utils/AsyncTaskWithProgress.java b/main/src/cgeo/geocaching/utils/AsyncTaskWithProgress.java new file mode 100644 index 0000000..7526d92 --- /dev/null +++ b/main/src/cgeo/geocaching/utils/AsyncTaskWithProgress.java @@ -0,0 +1,139 @@ +package cgeo.geocaching.utils; + +import cgeo.geocaching.activity.Progress; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.os.AsyncTask; + +/** + * AsyncTask which automatically shows a progress dialog. Use it like the {@code AsyncTask} class, but leave away the + * middle template parameter. Override {@link #doInBackgroundInternal(Object[])} and related methods. + * <p> + * If no style is given, the progress dialog uses "determinate" style with known maximum. The progress maximum is + * automatically derived from the number of {@code Params} given to the task in {@link #execute(Object...)}. + * </p> + * + * @param <Params> + * @param <Result> + */ +public abstract class AsyncTaskWithProgress<Params, Result> extends AsyncTask<Params, Integer, Result> { + + private final Progress progress = new Progress(); + private final Activity activity; + private final String progressTitle; + private final String progressMessage; + private boolean indeterminate = false; + + /** + * Creates an AsyncTask with progress dialog. + * + * @param activity + * @param progressTitle + * @param progressMessage + */ + public AsyncTaskWithProgress(final Activity activity, final String progressTitle, final String progressMessage) { + this(activity, progressTitle, progressMessage, false); + } + + /** + * Creates an AsyncTask with progress dialog. + * + * @param activity + * @param progressTitle + */ + public AsyncTaskWithProgress(final Activity activity, final String progressTitle) { + this(activity, progressTitle, null); + } + + /** + * Creates an AsyncTask with progress dialog. + * + * @param activity + * @param progressTitle + * @param progressMessage + */ + public AsyncTaskWithProgress(final Activity activity, final String progressTitle, final String progressMessage, boolean indeterminate) { + this.activity = activity; + this.progressTitle = progressTitle; + this.progressMessage = progressMessage; + this.indeterminate = indeterminate; + } + + /** + * Creates an AsyncTask with progress dialog. + * + * @param activity + * @param progressTitle + */ + public AsyncTaskWithProgress(final Activity activity, final String progressTitle, boolean indeterminate) { + this(activity, progressTitle, null, indeterminate); + } + + @Override + protected final void onPreExecute() { + if (null != activity) { + if (indeterminate) { + progress.show(activity, progressTitle, progressMessage, true, null); + } + else { + progress.show(activity, progressTitle, progressMessage, ProgressDialog.STYLE_HORIZONTAL, null); + } + } + onPreExecuteInternal(); + } + + /** + * This method should typically be overridden by sub classes instead of {@link #onPreExecute()}. + */ + protected void onPreExecuteInternal() { + // empty by default + } + + @Override + protected final void onPostExecute(Result result) { + onPostExecuteInternal(result); + if (null != activity) { + progress.dismiss(); + } + } + + /** + * This method should typically be overridden by sub classes instead of {@link #onPostExecute(Object)}. + * + * @param result + */ + protected void onPostExecuteInternal(Result result) { + // empty by default + } + + @Override + protected final void onProgressUpdate(Integer... status) { + final int progressValue = status[0]; + if (null != activity && progressValue >= 0) { + progress.setProgress(progressValue); + } + onProgressUpdateInternal(progressValue); + } + + /** + * This method should by overridden by sub classes instead of {@link #onProgressUpdate(Integer...)}. + */ + protected void onProgressUpdateInternal(@SuppressWarnings("unused") int progress) { + // empty by default + } + + protected void setMessage(final String message) { + progress.setMessage(message); + } + + @Override + protected final Result doInBackground(Params... params) { + if (params != null) { + progress.setMaxProgressAndReset(params.length); + } + return doInBackgroundInternal(params); + } + + protected abstract Result doInBackgroundInternal(Params[] params); +} diff --git a/main/src/cgeo/org/kxml2/io/KXmlSerializer.java b/main/src/cgeo/org/kxml2/io/KXmlSerializer.java new file mode 100644 index 0000000..027ff53 --- /dev/null +++ b/main/src/cgeo/org/kxml2/io/KXmlSerializer.java @@ -0,0 +1,605 @@ +/* + * Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +package cgeo.org.kxml2.io; + +import org.apache.commons.lang3.StringUtils; +import org.xmlpull.v1.XmlSerializer; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.util.Locale; + +public class KXmlSerializer implements XmlSerializer { + + // static final String UNDEFINED = ":"; + + // BEGIN android-added + /** size (in characters) for the write buffer */ + private static final int WRITE_BUFFER_SIZE = 500; + // END android-added + + // BEGIN android-changed + // (Guarantee that the writer is always buffered.) + private BufferedWriter writer; + // END android-changed + + private boolean pending; + private int auto; + private int depth; + + private String[] elementStack = new String[12]; + //nsp/prefix/name + private int[] nspCounts = new int[4]; + private String[] nspStack = new String[8]; + //prefix/nsp; both empty are "" + private boolean[] indent = new boolean[4]; + private boolean unicode; + private String encoding; + + private final void check(boolean close) throws IOException { + if (!pending) { + return; + } + + depth++; + pending = false; + + if (indent.length <= depth) { + boolean[] hlp = new boolean[depth + 4]; + System.arraycopy(indent, 0, hlp, 0, depth); + indent = hlp; + } + indent[depth] = indent[depth - 1]; + + for (int i = nspCounts[depth - 1]; i < nspCounts[depth]; i++) { + writer.write(' '); + writer.write("xmlns"); + if (!StringUtils.isEmpty(nspStack[i * 2])) { + writer.write(':'); + writer.write(nspStack[i * 2]); + } + else if (StringUtils.isEmpty(getNamespace()) && !StringUtils.isEmpty(nspStack[i * 2 + 1])) { + throw new IllegalStateException("Cannot set default namespace for elements in no namespace"); + } + writer.write("=\""); + writeEscaped(nspStack[i * 2 + 1], '"'); + writer.write('"'); + } + + if (nspCounts.length <= depth + 1) { + int[] hlp = new int[depth + 8]; + System.arraycopy(nspCounts, 0, hlp, 0, depth + 1); + nspCounts = hlp; + } + + nspCounts[depth + 1] = nspCounts[depth]; + // nspCounts[depth + 2] = nspCounts[depth]; + + writer.write(close ? " />" : ">"); + } + + private final void writeEscaped(String s, int quot) throws IOException { + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + switch (c) { + case '\n': + case '\r': + case '\t': + if (quot == -1) { + writer.write(c); + } else { + writer.write("&#"+((int) c)+';'); + } + break; + case '&': + writer.write("&"); + break; + case '>': + writer.write(">"); + break; + case '<': + writer.write("<"); + break; + default: + if (c == quot) { + writer.write(c == '"' ? """ : "'"); + break; + } + // BEGIN android-changed: refuse to output invalid characters + // See http://www.w3.org/TR/REC-xml/#charsets for definition. + // Corrected for c:geo to handle utf-16 codepoint surrogates correctly + // See http://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B10000_to_U.2B10FFFF + // Note: tab, newline, and carriage return have already been + // handled above. + // Check for lead surrogate + if (c >= 0xd800 && c <= 0xdbff) { + + if (i + 1 < s.length()) { + writer.write(s.substring(i, i + 1)); + i++; + break; + } + // if the lead surrogate is at the string end, it's not valid utf-16 + reportInvalidCharacter(c); + } + boolean valid = (c >= 0x20 && c <= 0xd7ff) || (c >= 0xe000 && c <= 0xfffd); + if (!valid) { + reportInvalidCharacter(c); + } + if (unicode || c < 127) { + writer.write(c); + } else { + writer.write("&#" + ((int) c) + ";"); + } + // END android-changed + } + } + } + + // BEGIN android-added + private static void reportInvalidCharacter(char ch) { + throw new IllegalArgumentException("Illegal character (" + Integer.toHexString((int) ch) + ")"); + } + // END android-added + + /* + * private final void writeIndent() throws IOException { + * writer.write("\r\n"); + * for (int i = 0; i < depth; i++) + * writer.write(' '); + * } + */ + + public void docdecl(String dd) throws IOException { + writer.write("<!DOCTYPE"); + writer.write(dd); + writer.write(">"); + } + + public void endDocument() throws IOException { + while (depth > 0) { + endTag(elementStack[depth * 3 - 3], elementStack[depth * 3 - 1]); + } + flush(); + } + + public void entityRef(String name) throws IOException { + check(false); + writer.write('&'); + writer.write(name); + writer.write(';'); + } + + public boolean getFeature(String name) { + //return false; + return ("http://xmlpull.org/v1/doc/features.html#indent-output" + .equals( + name)) + ? indent[depth] + : false; + } + + public String getPrefix(String namespace, boolean create) { + try { + return getPrefix(namespace, false, create); + } catch (IOException e) { + throw new RuntimeException(e.toString()); + } + } + + private final String getPrefix( + String namespace, + boolean includeDefault, + boolean create) + throws IOException { + + for (int i = nspCounts[depth + 1] * 2 - 2; i >= 0; i -= 2) { + if (nspStack[i + 1].equals(namespace) + && (includeDefault || !StringUtils.isEmpty(nspStack[i]))) { + String cand = nspStack[i]; + for (int j = i + 2; j < nspCounts[depth + 1] * 2; j++) { + if (nspStack[j].equals(cand)) { + cand = null; + break; + } + } + if (cand != null) { + return cand; + } + } + } + + if (!create) { + return null; + } + + String prefix; + + if (StringUtils.isEmpty(namespace)) { + prefix = ""; + } else { + do { + prefix = "n" + (auto++); + for (int i = nspCounts[depth + 1] * 2 - 2; i >= 0; i -= 2) { + if (prefix.equals(nspStack[i])) { + prefix = null; + break; + } + } + } while (prefix == null); + } + + boolean p = pending; + pending = false; + setPrefix(prefix, namespace); + pending = p; + return prefix; + } + + public Object getProperty(String name) { + throw new RuntimeException("Unsupported property"); + } + + public void ignorableWhitespace(String s) + throws IOException { + text(s); + } + + public void setFeature(String name, boolean value) { + if ("http://xmlpull.org/v1/doc/features.html#indent-output" + .equals(name)) { + indent[depth] = value; + } else { + throw new RuntimeException("Unsupported Feature"); + } + } + + public void setProperty(String name, Object value) { + throw new RuntimeException( + "Unsupported Property:" + value); + } + + public void setPrefix(String prefix, String namespace) + throws IOException { + + check(false); + if (prefix == null) { + prefix = ""; + } + if (namespace == null) { + namespace = ""; + } + + String defined = getPrefix(namespace, true, false); + + // boil out if already defined + + if (prefix.equals(defined)) { + return; + } + + int pos = (nspCounts[depth + 1]++) << 1; + + if (nspStack.length < pos + 1) { + String[] hlp = new String[nspStack.length + 16]; + System.arraycopy(nspStack, 0, hlp, 0, pos); + nspStack = hlp; + } + + nspStack[pos++] = prefix; + nspStack[pos] = namespace; + } + + public void setOutput(Writer writer) { + // BEGIN android-changed + // Guarantee that the writer is always buffered. + if (writer instanceof BufferedWriter) { + this.writer = (BufferedWriter) writer; + } else { + this.writer = new BufferedWriter(writer, WRITE_BUFFER_SIZE); + } + // END android-changed + + // elementStack = new String[12]; //nsp/prefix/name + //nspCounts = new int[4]; + //nspStack = new String[8]; //prefix/nsp + //indent = new boolean[4]; + + nspCounts[0] = 2; + nspCounts[1] = 2; + nspStack[0] = ""; + nspStack[1] = ""; + nspStack[2] = "xml"; + nspStack[3] = "http://www.w3.org/XML/1998/namespace"; + pending = false; + auto = 0; + depth = 0; + + unicode = false; + } + + public void setOutput(OutputStream os, String encoding) + throws IOException { + if (os == null) { + throw new IllegalArgumentException("os == null"); + } + setOutput(encoding == null + ? new OutputStreamWriter(os) + : new OutputStreamWriter(os, encoding)); + this.encoding = encoding; + if (encoding != null && encoding.toLowerCase(Locale.US).startsWith("utf")) { + unicode = true; + } + } + + public void startDocument(String encoding, Boolean standalone) throws IOException { + writer.write("<?xml version='1.0' "); + + if (encoding != null) { + this.encoding = encoding; + if (encoding.toLowerCase(Locale.US).startsWith("utf")) { + unicode = true; + } + } + + if (this.encoding != null) { + writer.write("encoding='"); + writer.write(this.encoding); + writer.write("' "); + } + + if (standalone != null) { + writer.write("standalone='"); + writer.write( + standalone.booleanValue() ? "yes" : "no"); + writer.write("' "); + } + writer.write("?>"); + } + + public XmlSerializer startTag(String namespace, String name) + throws IOException { + check(false); + + // if (namespace == null) + // namespace = ""; + + if (indent[depth]) { + writer.write("\r\n"); + for (int i = 0; i < depth; i++) { + writer.write(" "); + } + } + + int esp = depth * 3; + + if (elementStack.length < esp + 3) { + String[] hlp = new String[elementStack.length + 12]; + System.arraycopy(elementStack, 0, hlp, 0, esp); + elementStack = hlp; + } + + String prefix = + namespace == null + ? "" + : getPrefix(namespace, true, true); + + if (namespace != null && StringUtils.isEmpty(namespace)) { + for (int i = nspCounts[depth]; i < nspCounts[depth + 1]; i++) { + if (StringUtils.isEmpty(nspStack[i * 2]) && !StringUtils.isEmpty(nspStack[i * 2 + 1])) { + throw new IllegalStateException("Cannot set default namespace for elements in no namespace"); + } + } + } + + elementStack[esp++] = namespace; + elementStack[esp++] = prefix; + elementStack[esp] = name; + + writer.write('<'); + if (!StringUtils.isEmpty(prefix)) { + writer.write(prefix); + writer.write(':'); + } + + writer.write(name); + + pending = true; + + return this; + } + + public XmlSerializer attribute( + String namespace, + String name, + String value) + throws IOException { + if (!pending) { + throw new IllegalStateException("illegal position for attribute"); + } + + // int cnt = nspCounts[depth]; + + if (namespace == null) { + namespace = ""; + } + + // depth--; + // pending = false; + + String prefix = + StringUtils.isEmpty(namespace) + ? "" + : getPrefix(namespace, false, true); + + // pending = true; + // depth++; + + /* + * if (cnt != nspCounts[depth]) { + * writer.write(' '); + * writer.write("xmlns"); + * if (nspStack[cnt * 2] != null) { + * writer.write(':'); + * writer.write(nspStack[cnt * 2]); + * } + * writer.write("=\""); + * writeEscaped(nspStack[cnt * 2 + 1], '"'); + * writer.write('"'); + * } + */ + + writer.write(' '); + if (!StringUtils.isEmpty(prefix)) { + writer.write(prefix); + writer.write(':'); + } + writer.write(name); + writer.write('='); + char q = value.indexOf('"') == -1 ? '"' : '\''; + writer.write(q); + writeEscaped(value, q); + writer.write(q); + + return this; + } + + public void flush() throws IOException { + check(false); + writer.flush(); + } + + /* + * public void close() throws IOException { + * check(); + * writer.close(); + * } + */ + public XmlSerializer endTag(String namespace, String name) + throws IOException { + + if (!pending) + { + depth--; + // if (namespace == null) + // namespace = ""; + } + + if ((namespace == null + && elementStack[depth * 3] != null) + || (namespace != null + && !namespace.equals(elementStack[depth * 3])) + || !elementStack[depth * 3 + 2].equals(name)) { + throw new IllegalArgumentException("</{"+namespace+"}"+name+"> does not match start"); + } + + if (pending) { + check(true); + depth--; + } + else { + if (indent[depth + 1]) { + writer.write("\r\n"); + for (int i = 0; i < depth; i++) { + writer.write(" "); + } + } + + writer.write("</"); + String prefix = elementStack[depth * 3 + 1]; + if (!StringUtils.isEmpty(prefix)) { + writer.write(prefix); + writer.write(':'); + } + writer.write(name); + writer.write('>'); + } + + nspCounts[depth + 1] = nspCounts[depth]; + return this; + } + + public String getNamespace() { + return getDepth() == 0 ? null : elementStack[getDepth() * 3 - 3]; + } + + public String getName() { + return getDepth() == 0 ? null : elementStack[getDepth() * 3 - 1]; + } + + public int getDepth() { + return pending ? depth + 1 : depth; + } + + public XmlSerializer text(String text) throws IOException { + check(false); + indent[depth] = false; + writeEscaped(text, -1); + return this; + } + + public XmlSerializer text(char[] text, int start, int len) + throws IOException { + text(new String(text, start, len)); + return this; + } + + public void cdsect(String data) throws IOException { + check(false); + // BEGIN android-changed: ]]> is not allowed within a CDATA, + // so break and start a new one when necessary. + data = data.replace("]]>", "]]]]><![CDATA[>"); + char[] chars = data.toCharArray(); + // We also aren't allowed any invalid characters. + for (char ch : chars) { + boolean valid = (ch >= 0x20 && ch <= 0xd7ff) || + (ch == '\t' || ch == '\n' || ch == '\r') || + (ch >= 0xe000 && ch <= 0xfffd); + if (!valid) { + reportInvalidCharacter(ch); + } + } + writer.write("<![CDATA["); + writer.write(chars, 0, chars.length); + writer.write("]]>"); + // END android-changed + } + + public void comment(String comment) throws IOException { + check(false); + writer.write("<!--"); + writer.write(comment); + writer.write("-->"); + } + + public void processingInstruction(String pi) + throws IOException { + check(false); + writer.write("<?"); + writer.write(pi); + writer.write("?>"); + } +}
\ No newline at end of file diff --git a/tests/.project b/tests/.project index 2da7b00..1e46e10 100644 --- a/tests/.project +++ b/tests/.project @@ -1,34 +1,34 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>cgeo-os-test</name>
- <comment></comment>
- <projects>
- <project>cgeo-os</project>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.android.ide.eclipse.adt.ApkBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>cgeo-test</name> + <comment></comment> + <projects> + <project>cgeo</project> + </projects> + <buildSpec> + <buildCommand> + <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>com.android.ide.eclipse.adt.ApkBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>com.android.ide.eclipse.adt.AndroidNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/tests/src/cgeo/geocaching/StaticMapsProviderTest.java b/tests/src/cgeo/geocaching/StaticMapsProviderTest.java index cbace10..abc15ae 100644 --- a/tests/src/cgeo/geocaching/StaticMapsProviderTest.java +++ b/tests/src/cgeo/geocaching/StaticMapsProviderTest.java @@ -4,10 +4,13 @@ import cgeo.geocaching.enumerations.WaypointType; import cgeo.geocaching.files.LocalStorage; import cgeo.geocaching.geopoint.Geopoint; -import java.io.File; - import junit.framework.TestCase; +import android.test.suitebuilder.annotation.Suppress; + +import java.io.File; + +@Suppress public class StaticMapsProviderTest extends TestCase { public static void testDownloadStaticMaps() { diff --git a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java index 8298ad7..4458789 100644 --- a/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java +++ b/tests/src/cgeo/geocaching/connector/gc/GCConstantsTest.java @@ -10,7 +10,7 @@ public class GCConstantsTest extends AndroidTestCase { // adapt the following after downloading new mock html files public static final String MOCK_LOGIN_NAME = "JoSaMaJa"; - public static final int MOCK_CACHES_FOUND = 419; + public static final int MOCK_CACHES_FOUND = 426; public static void testLocation() { // GC37GFJ diff --git a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java index cf1df46..ff7ddff 100644 --- a/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java +++ b/tests/src/cgeo/geocaching/connector/gc/GCParserTest.java @@ -7,6 +7,7 @@ import cgeo.geocaching.Settings; import cgeo.geocaching.Waypoint; import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.enumerations.StatusCode; +import cgeo.geocaching.enumerations.WaypointType; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.test.AbstractResourceInstrumentationTestCase; import cgeo.geocaching.test.R; @@ -22,6 +23,7 @@ import android.os.Handler; import android.test.suitebuilder.annotation.MediumTest; import java.util.ArrayList; +import java.util.List; public class GCParserTest extends AbstractResourceInstrumentationTestCase { @@ -187,6 +189,22 @@ public class GCParserTest extends AbstractResourceInstrumentationTestCase { assertEquals(13, cache.getWaypoints().size()); } + public static void testNoteParsingWaypointTypes() { + final Geocache cache = new Geocache(); + cache.setWaypoints(new ArrayList<Waypoint>(), false); + cache.setPersonalNote("\"Parking area at PARKING=N 50° 40.666E 006° 58.222\n" + + "My calculated final coordinates: FINAL=N 50° 40.777E 006° 58.111\n" + + "Get some ice cream at N 50° 40.555E 006° 58.000\""); + + cache.parseWaypointsFromNote(); + final List<Waypoint> waypoints = cache.getWaypoints(); + + assertEquals(3, waypoints.size()); + assertEquals(WaypointType.PARKING, waypoints.get(0).getWaypointType()); + assertEquals(WaypointType.FINAL, waypoints.get(1).getWaypointType()); + assertEquals(WaypointType.WAYPOINT, waypoints.get(2).getWaypointType()); + } + private Geocache parseCache(int resourceId) { final String page = getFileContent(resourceId); final SearchResult result = GCParser.parseCacheFromText(page, null); diff --git a/tests/src/cgeo/geocaching/connector/oc/OCXMLTest.java b/tests/src/cgeo/geocaching/connector/oc/OCXMLTest.java index b12823a..4709565 100644 --- a/tests/src/cgeo/geocaching/connector/oc/OCXMLTest.java +++ b/tests/src/cgeo/geocaching/connector/oc/OCXMLTest.java @@ -5,6 +5,10 @@ import cgeo.geocaching.Geocache; import cgeo.geocaching.Settings; import cgeo.geocaching.enumerations.CacheType; +import org.apache.commons.lang3.StringUtils; + +import android.text.Html; + import java.util.Collection; public class OCXMLTest extends CGeoTestCase { @@ -89,35 +93,31 @@ public class OCXMLTest extends CGeoTestCase { assertNotNull(cache); try { assertEquals(geoCode, cache.getGeocode()); - assertEquals(description, cache.getDescription()); + // ignore copyright as the date part will change all the time + assertEquals(description, removeCopyrightAndTags(cache.getDescription())); cache.store(null); // reload, make sure description is not duplicated cache = OCXMLClient.getCache(geoCode); assertNotNull(cache); - assertEquals(description, cache.getDescription()); + assertEquals(description, removeCopyrightAndTags(cache.getDescription())); } finally { deleteCacheFromDB(geoCode); } } - public static void testRemoveMarkupCache() { - final String geoCode = "OCEFBA"; - final String description = "Bei dem Cache kannst du einen kleinen Schatz bergen. Bitte lege aber einen ander Schatz in das Döschen. Achtung vor Automuggels."; - - Geocache cache = OCXMLClient.getCache(geoCode); - assertNotNull(cache); - assertEquals(description, cache.getDescription()); + private static String removeCopyrightAndTags(String input) { + return Html.fromHtml(StringUtils.substringBefore(input, "©")).toString().trim(); } public static void testRemoveMarkup() { - assertEquals("", OC11XMLParser.stripMarkup("")); - assertEquals("Test", OC11XMLParser.stripMarkup("Test")); - assertEquals("<b>bold and others not removed</b>", OC11XMLParser.stripMarkup("<b>bold and others not removed</b>")); - assertEquals("unnecessary paragraph", OC11XMLParser.stripMarkup("<p>unnecessary paragraph</p>")); - assertEquals("unnecessary span", OC11XMLParser.stripMarkup("<span>unnecessary span</span>")); - assertEquals("nested", OC11XMLParser.stripMarkup("<span><span>nested</span></span>")); - assertEquals("mixed", OC11XMLParser.stripMarkup("<span> <p> mixed </p> </span>")); - assertEquals("<p>not</p><p>removable</p>", OC11XMLParser.stripMarkup("<p>not</p><p>removable</p>")); + assertEquals("", OC11XMLParser.stripEmptyText("")); + assertEquals("Test", OC11XMLParser.stripEmptyText("Test")); + assertEquals("<b>bold and others not removed</b>", OC11XMLParser.stripEmptyText("<b>bold and others not removed</b>")); + assertEquals("unnecessary paragraph", OC11XMLParser.stripEmptyText("<p>unnecessary paragraph</p>")); + assertEquals("unnecessary span", OC11XMLParser.stripEmptyText("<span>unnecessary span</span>")); + assertEquals("nested", OC11XMLParser.stripEmptyText("<span><span>nested</span></span>")); + assertEquals("mixed", OC11XMLParser.stripEmptyText("<span> <p> mixed </p> </span>")); + assertEquals("<p>not</p><p>removable</p>", OC11XMLParser.stripEmptyText("<p>not</p><p>removable</p>")); } } diff --git a/tests/src/cgeo/geocaching/export/ExportTest.java b/tests/src/cgeo/geocaching/export/ExportTest.java index 22c6dd2..60d5716 100644 --- a/tests/src/cgeo/geocaching/export/ExportTest.java +++ b/tests/src/cgeo/geocaching/export/ExportTest.java @@ -3,7 +3,15 @@ package cgeo.geocaching.export; import cgeo.CGeoTestCase; import cgeo.geocaching.Geocache; import cgeo.geocaching.LogEntry; +import cgeo.geocaching.cgData; +import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.enumerations.LogType; +import cgeo.geocaching.geopoint.Geopoint; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; public class ExportTest extends CGeoTestCase { @@ -16,4 +24,48 @@ public class ExportTest extends CGeoTestCase { assertEquals("Non matching export " + logStr.toString(), "GCX1234,2012-11-18T13:20:20Z,Found it,\"Hidden in a tree\"\n", logStr.toString()); } + public static void testGpxExportSmilies() { + final Geocache cache = new Geocache(); + cache.setGeocode("GCX1234"); + cache.setCoords(new Geopoint("N 49 44.000 E 8 37.000")); + final LogEntry log = new LogEntry(1353244820000L, LogType.FOUND_IT, "Smile: \ud83d\ude0a"); + cache.getLogs().add(log); + cgData.saveCache(cache, LoadFlags.SAVE_ALL); + ArrayList<Geocache> exportList = new ArrayList<Geocache>(); + exportList.add(cache); + GpxExportTester gpxExport = new GpxExportTester(); + File result = null; + try { + result = gpxExport.testExportSync(exportList); + } catch (InterruptedException e) { + fail(e.getCause().toString()); + } catch (ExecutionException e) { + fail(e.getCause().toString()); + } finally { + cgData.removeCache(cache.getGeocode(), LoadFlags.REMOVE_ALL); + } + + assertNotNull(result); + + result.delete(); + } + + private static class GpxExportTester extends GpxExport { + + protected GpxExportTester() { + super(); + } + + public File testExportSync(List<Geocache> caches) throws InterruptedException, ExecutionException { + final ArrayList<String> geocodes = new ArrayList<String>(caches.size()); + for (final Geocache cache: caches) { + geocodes.add(cache.getGeocode()); + } + final ExportTask task = new ExportTask(null); + task.execute(geocodes.toArray(new String[geocodes.size()])); + return task.get(); + } + + } + } diff --git a/tests/src/cgeo/geocaching/filter/DifficultyFilterTest.java b/tests/src/cgeo/geocaching/filter/DifficultyFilterTest.java index b3ff056..ebe4cf6 100644 --- a/tests/src/cgeo/geocaching/filter/DifficultyFilterTest.java +++ b/tests/src/cgeo/geocaching/filter/DifficultyFilterTest.java @@ -19,6 +19,6 @@ public class DifficultyFilterTest extends CGeoTestCase { } public static void testAllFilters() { - assertTrue(new DifficultyFilter.Factory().getFilters().length == 5); // difficulty ranges from 1 to 5 + assertTrue(new DifficultyFilter.Factory().getFilters().size() == 5); // difficulty ranges from 1 to 5 } } diff --git a/tests/src/cgeo/geocaching/filter/SizeFilterTest.java b/tests/src/cgeo/geocaching/filter/SizeFilterTest.java index 2c6552b..8b909f3 100644 --- a/tests/src/cgeo/geocaching/filter/SizeFilterTest.java +++ b/tests/src/cgeo/geocaching/filter/SizeFilterTest.java @@ -33,7 +33,7 @@ public class SizeFilterTest extends CGeoTestCase { public static void testGetAllFilters() { final int expectedSizes = CacheSize.values().length - 1; // hide "UNKNOWN" - assertEquals(expectedSizes, new SizeFilter.Factory().getFilters().length); + assertEquals(expectedSizes, new SizeFilter.Factory().getFilters().size()); } public void testFilter() { diff --git a/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java b/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java new file mode 100644 index 0000000..2f65a6b --- /dev/null +++ b/tests/src/cgeo/geocaching/filter/StateStoredFilterTest.java @@ -0,0 +1,27 @@ +package cgeo.geocaching.filter; + +import cgeo.CGeoTestCase; +import cgeo.geocaching.Geocache; +import cgeo.geocaching.filter.StateFilter.StateNotStoredFilter; +import cgeo.geocaching.filter.StateFilter.StateStoredFilter; + +public class StateStoredFilterTest extends CGeoTestCase { + + private StateFilter.StateStoredFilter storedFilter; + private StateFilter.StateNotStoredFilter notStoredFilter; + private Geocache cache; + + @Override + protected void setUp() throws Exception { + super.setUp(); + storedFilter = new StateStoredFilter(); + notStoredFilter = new StateNotStoredFilter(); + cache = new Geocache(); + } + + public void testAccepts() { + assertFalse(storedFilter.accepts(cache)); + assertTrue(notStoredFilter.accepts(cache)); + } + +} diff --git a/tests/src/cgeo/geocaching/filter/TerrainFilterTest.java b/tests/src/cgeo/geocaching/filter/TerrainFilterTest.java index d64f4d9..234af7e 100644 --- a/tests/src/cgeo/geocaching/filter/TerrainFilterTest.java +++ b/tests/src/cgeo/geocaching/filter/TerrainFilterTest.java @@ -19,6 +19,6 @@ public class TerrainFilterTest extends CGeoTestCase { } public static void testAllFilters() { - assertTrue(new TerrainFilter.Factory().getFilters().length == 5); // terrain ranges from 1 to 5 + assertTrue(new TerrainFilter.Factory().getFilters().size() == 5); // terrain ranges from 1 to 5 } } diff --git a/tests/src/cgeo/geocaching/filter/TypeFilterTest.java b/tests/src/cgeo/geocaching/filter/TypeFilterTest.java index 3a43b33..e813052 100644 --- a/tests/src/cgeo/geocaching/filter/TypeFilterTest.java +++ b/tests/src/cgeo/geocaching/filter/TypeFilterTest.java @@ -46,7 +46,7 @@ public class TypeFilterTest extends CGeoTestCase { public static void testGetAllFilters() { final int expectedEntries = CacheType.values().length - 1; // hide "all" - assertEquals(expectedEntries, new TypeFilter.Factory().getFilters().length); + assertEquals(expectedEntries, new TypeFilter.Factory().getFilters().size()); } } diff --git a/tests/src/cgeo/geocaching/geopoint/GeoPointFormatterTest.java b/tests/src/cgeo/geocaching/geopoint/GeoPointFormatterTest.java index c0cea01..a1be25d 100644 --- a/tests/src/cgeo/geocaching/geopoint/GeoPointFormatterTest.java +++ b/tests/src/cgeo/geocaching/geopoint/GeoPointFormatterTest.java @@ -6,6 +6,17 @@ import android.test.AndroidTestCase; public class GeoPointFormatterTest extends AndroidTestCase { + public static void testConfluence() { + // From issue #2624: coordinate is wrong near to a confluence point + final Geopoint point = new Geopoint(49.9999999999999, 5.0); + final String format = GeopointFormatter.format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA, point); + assertEquals("50.000000,5.000000", format); + final String formatMinute = GeopointFormatter.format(GeopointFormatter.Format.LAT_LON_DECMINUTE_RAW, point); + assertEquals("N 50° 00.000 E 005° 00.000", formatMinute); + final String formatSecond = GeopointFormatter.format(GeopointFormatter.Format.LAT_LON_DECSECOND, point).replaceAll(",", "."); + assertEquals(formatSecond, "N 50° 00' 00.000\"" + Formatter.SEPARATOR + "E 005° 00' 00.000\"", formatSecond); + } + public static void testFormat() { // taken from GC30R6G final Geopoint point = new Geopoint("N 51° 21.104 E 010° 15.369"); diff --git a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html index 28e9814..3ed30b0 100644 --- a/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html +++ b/tests/src/cgeo/geocaching/test/mock/GC1ZXX2.html @@ -76,16 +76,16 @@ }
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC1ZXX2&Submit6=Go" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates. Look for a other hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 3 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/2.png" property="og:image" /><meta name="og:title" content="Hannopoly: Eislisenstrasse " property="og:title" /><meta name="description" content="Hannopoly: Eislisenstrasse (GC1ZXX2) was created by daniel354 on 10/16/2009. It's a Other size geocache, with difficulty of 3, terrain of 1.5. It's located in Niedersachsen, Germany. &nbsp; 1.Finde die Besitzrechtkarte im Cache&nbsp; 2. Notiere Dir die drei Grundstückspreise&nbsp; 3. Beachte die Informationen vor Ort&nbsp; 4. Finde die Bonus-Caches&nbsp; 5." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=36d45871-b99d-46d6-95fc-ff86ab564c98" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=36d45871-b99d-46d6-95fc-ff86ab564c98" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates. Look for a other hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 1.5 and difficulty is 3 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/2.png" property="og:image" /><meta name="og:title" content="Hannopoly: Eislisenstrasse " property="og:title" /><meta name="description" content="Hannopoly: Eislisenstrasse (GC1ZXX2) was created by daniel354 on 10/16/2009. It's a Other size geocache, with difficulty of 3, terrain of 1.5. It's located in Niedersachsen, Germany. &nbsp; 1.Finde die Besitzrechtkarte im Cache&nbsp; 2. Notiere Dir die drei Grundstückspreise&nbsp; 3. Beachte die Informationen vor Ort&nbsp; 4. Finde die Bonus-Caches&nbsp; 5." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=36d45871-b99d-46d6-95fc-ff86ab564c98" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
<body >
- <form name="aspnetForm" method="post" action="cache_details.aspx?wp=GC1ZXX2&Submit6=Go" id="aspnetForm">
+ <form name="aspnetForm" method="post" action="cache_details.aspx?guid=36d45871-b99d-46d6-95fc-ff86ab564c98" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE0MzM5MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFlQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZndwJTNkR0MxWlhYMiUyNlN1Ym1pdDYlM2RHb2RkAgsPFgIfAQUQNDE5IENhY2hlcyBGb3VuZGQCEQ8WAh8DZxYCAg0PDxYCHwUFQH4vdHJhY2svc2VhcmNo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bGluZTsWAgIBDxYCHwEFG1VUTTogMzJVIEUgNTQ4Mzg5IE4gNTgwMjc4N2QCDQ8PFgIfBQUzY2RwZi5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4ZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgmbGM9MTBkZAITDw8WBB8FBYMBaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj01Mi4yMTYyNSw5LjcxNDQ4MyAoSG9tZSBMb2NhdGlvbikmZGFkZHI9NTIuMzczMjE3LDkuNzEwOChIYW5ub3BvbHklM2ErRWlzbGlzZW5zdHJhc3NlKykeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHw0MHw4CBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCczNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOTgnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDMVpYWDInKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBRNObyBoaW50cyBhdmFpbGFibGUuFgIfDwUNcmV0dXJuIGZhbHNlO2QCGQ8WAh8DaGQCHA8WAh8DaGQCHg8WAh8DZ2QCHw8WAh8DaGQCIg9kFgICAw8WAh4JaW5uZXJodG1sBRNBZHZlcnRpc2luZyB3aXRoIFVzZAImD2QWBAIFDw8WAh8DZ2RkAgkPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OGRkAicPDxYCHwNnZBYCZg8WAh8GAgMWBgIBD2QWAmYPFQIA6gE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD00MWNkNTZiNi0wMGYxLTQ3MDItYjg2Ni0xYTI2OGM2NDlkMTMiPkFsbGUgSGFubm9wb2x5IENhY2hlczwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWRmMjE4NGFiLWE5ZWEtNGQzMC05OGVkLWVjNGU4NTFjMzcwNiI+R3VtbWlzZWVsZTwvYT5kAgIPZBYCZg8V" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="Ag5BbHRlcm5hdGluZ1Jvd+EBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9MGRjZjNmODYtOTM3Mi00OTljLThiNTctZWQ0MTliZDQ4ZTIxIj5NZWluZSBFbXBmZWhsdW5nPC9hPjxiciAvPiBieSA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9YzQ2NTQxZmMtNmFlOS00NDUyLTg4MzMtNDcwZGRmYmU5Y2VlIj5za3JlbGw8L2E+ZAIDD2QWAmYPFQIA2wE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD05YTI0OGRiOS0zMDYzLTQ0NTctOTIwNS04NTFmYmUwNmEwM2UiPkhhbm5vcG9seTwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTVjNGIwOTE1LTVjZWMtNGZhMS04YWZkLTRiM2NhNjdlMDA0ZSI+a2FpMjcwNzwvYT5kAikPZBYSAgEPDxYCHwNoZGQCAw9kFgICAQ8PFgIfBQVFL2hpZGUvd3B0bGlzdC5hc3B4P1JlZldwdElEPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZEUz0xZGQCBw8PFgYeBlJEUy5JRAspdkdyb3VuZHNwZWFrLldlYi5HUFguV3B0RGF0YVNvdXJjZXMsIFR1Y3Nvbi5Db21tb24uTGVnYWN5LCBWZXJzaW9uPTMuMC40ODEyLjE4MDc1LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwBHgdSV1BULklEKCsEBzE0MzM5MDkfA2hkZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSovbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgfA2dkZAIPDxYCHwEFhwEuLi5vdGhlciBjYWNoZXMgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3U9ZGFuaWVsMzU0Ij5oaWRkZW48L2E+IG9yIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91bD1kYW5pZWwzNTQiPmZvdW5kPC9hPiBieSB0aGlzIHVzZXJkAhEPZBYGAgEPFgIfAQX/AS4uLm5lYXJieSA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9MzJiYzkzMzMtNWU1Mi00OTU3LWIwZjYtNWEyYzhmYzdiMjU3JmxhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwIj5jYWNoZXMgb2YgdGhpcyB0eXBlPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTMyYmM5MzMzLTVlNTItNDk1Ny1iMGY2LTVhMmM4ZmM3YjI1NyZsYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMCZmPTEiPnRoYXQgSSBoYXZlbid0IGZvdW5kPC9hPmQCAw8WAh8BBaYBLi4uYWxsIG5lYXJieSA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUyLjM3MzIxNyZsbmc9OS43MTA4MDAiPmNhY2hlczwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMCZmPTEiPnRoYXQgSSBoYXZlbid0IGZvdW5kPC9hPmQCBQ8WAh8BBX4uLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD01Mi4zNzMyMTcmbG9uPTkuNzEwODAwIj53YXltYXJrcyBvbiBXYXltYXJraW5nLmNvbTwvYT5kAhMPFgIfA2hkAhcPZBYCAgEPDxYEHwEFrgc8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi4zNzMyMiZsbmc9OS43MTA4IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNTIlYzIlYjArMjIuMzkzK0UrMDA5JWMyJWIwKzQyLjY0OCsoR0MxWlhYMikrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NTIuMzczMjImbG9uZ2l0dWRlPTkuNzEwOCZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTIuMzczMjImbG9uPTkuNzEwOCZ6b29tPTE2JnE9NTIuMzczMjIsOS43MTA4JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNTIuMzczMjJfOS43MTA4X0dDMVpYWDIiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01Mi4zNzMyMiZsb249OS43MTA4IiB0YXJnZXQ9Il9ibGFuayI+T3BlbkN5Y2xlTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvP21sYXQ9NTIuMzczMjImbWxvbj05LjcxMDgmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+PC9saT4fA2dkZAIbD2QWBgIBDxYCHwEFETQwMCBMb2dnZWQgVmlzaXRzZAIHDw8WAh8FBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4ZGQCCQ8PFgQfBQU9fi9zZWVrL2dhbGxlcnkuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OB8BBSJWaWV3IHRoZSBJbWFnZSBHYWxsZXJ5IG9mIDIgaW1hZ2VzZGQCKg8WAh8BBQR0cnVlZAIrDxYCHwEFSWxhdD01Mi4zNzMyMTc7IGxuZz05LjcxMDg7IGd1aWQ9JzM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCc7DQpkAhUPFgIfA2gWAgIBDw9kFgIfCwUMd2lkdGg6MTIwcHg7ZAIXD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBgISFiRmD2QWAgIBDw8WCB8HBQVlbi1VUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCWhkZAIBD2QWAgIBDw8WCB8HBQVkZS1ERR8IBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCWhkZAICD2QWAgIBDw8WCB8HBQVmci1GUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8JaGRkAgMPZBYCAgEPDxYIHwcFBXB0LVBUHwgFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8JaGRkAgQPZBYCAgEPDxYIHwcFBWNzLUNaHwgFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwloZGQCBQ9kFgICAQ8PFggfBwUFc3YtU0UfCAUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwloZGQCBg9kFgICAQ8PFggfBwUFZXMtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8JaGRkAgcPZBYCAgEPDxYIHwcFBWV0LUVFHwgFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCWhkZAIID2QWAgIBDw8WCB8HBQVpdC1JVB8IBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwloZGQCCQ9kFgICAQ8PFggfBwUFZWwtR1IfCAUNU2V0VGVtcExvY2FsZR8BBRDOlc67zrvOt869zrnOus6sHwloZGQCCg9kFgICAQ8PFggfBwUFbHYtTFYfCAUNU2V0VGVtcExvY2FsZR8BBQlMYXR2aWXFoXUfCWhkZAILD2QWAgIBDw8WCB8HBQVubC1OTB8IBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCWhkZAIMD2QWAgIBDw8WCB8HBQVjYS1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCWhkZAIND2QWAgIBDw8WCB8HBQVwbC1QTB8IBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8JaGRkAg4PZBYCAgEPDxYIHwcFBW5iLU5PHwgFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfCWhkZAIPD2QWAgIBDw8WCB8HBQVrby1LUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8JaGRkAhAPZBYCAgEPDxYIHwcFBWh1LUhVHwgFDVNldFRlbXBMb2NhbGUfAQUGTWFn" />
-<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="eWFyHwloZGQCEQ9kFgICAQ8PFggfBwUFcm8tUk8fCAUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8JaGRkAksPFgIfAQUQJmNvcHk7IDIwMDAtMjAxM2QCAw8WAh8BBStTZXJ2ZXI6IFdFQjA4OyBCdWlsZDogV2ViLkhvdEZpeF8yMDEzMDMwNS4xZGR4Jntj36ku3tBrrQpihiWzMaplAA==" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE0MzM5MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFpQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZmd1aWQlM2QzNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOThkZAILDxYCHwEFEDQyNiBDYWNoZXMgRm91bmRkAhEPFgIfA2cWAgINDw8WAh8F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dHlsZQUPZGlzcGxheTppbmxpbmU7FgICAQ8WAh8BBRtVVE06IDMyVSBFIDU0ODM4OSBOIDU4MDI3ODdkAg0PDxYCHwUFM2NkcGYuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OGRkAg8PDxYCHwUFOGNkcGYuYXNweD9ndWlkPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZsYz01ZGQCEQ8PFgIfBQU5Y2RwZi5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4JmxjPTEwZGQCEw8PFgQfBQWDAWh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTIuMjE2MjUsOS43MTQ0ODMgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTUyLjM3MzIxNyw5LjcxMDgoSGFubm9wb2x5JTNhK0Vpc2xpc2Vuc3RyYXNzZSspHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8NDB8OAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnMzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8PBSBzMnBob25lKCdHQzFaWFgyJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZ2QCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUTTm8gaGludHMgYXZhaWxhYmxlLhYCHw8FDXJldHVybiBmYWxzZTtkAhkPFgIfA2hkAhwPFgIfA2hkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgQCBQ8PFgIfA2dkZAIJDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOThkZAInDw8WAh8DZ2QWAmYPFgIfBgIDFgYCAQ9kFgJmDxUCAOoBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9NDFjZDU2YjYtMDBmMS00NzAyLWI4NjYtMWEyNjhjNjQ5ZDEzIj5BbGxlIEhhbm5vcG9seSBDYWNoZXM8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD1kZjIxODRhYi1hOWVhLTRkMzAtOThlZC1lYzRlODUxYzM3MDYiPkd1bW1pc2Vl" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="bGU8L2E+ZAICD2QWAmYPFQIOQWx0ZXJuYXRpbmdSb3fhATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTBkY2YzZjg2LTkzNzItNDk5Yy04YjU3LWVkNDE5YmQ0OGUyMSI+TWVpbmUgRW1wZmVobHVuZzwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWM0NjU0MWZjLTZhZTktNDQ1Mi04ODMzLTQ3MGRkZmJlOWNlZSI+c2tyZWxsPC9hPmQCAw9kFgJmDxUCANsBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9OWEyNDhkYjktMzA2My00NDU3LTkyMDUtODUxZmJlMDZhMDNlIj5IYW5ub3BvbHk8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD01YzRiMDkxNS01Y2VjLTRmYTEtOGFmZC00YjNjYTY3ZTAwNGUiPmthaTI3MDc8L2E+ZAIoDw8WAh8DZ2QWAmYPFgIfBgIBFgICAQ9kFgJmDxUCAN0BPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9MTQ1NTE3MDgtMGMzYy00Zjk1LTkzNDItMWJiMzExOWU2ZWZlIj5jZ2VvIG1vY2tzPC9hPjxiciAvPiBieSA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9NGQ0MTY0NjEtZDFhNy00Y2M1LThlZTctMzM2YmI5MTBmZWI4Ij5Kb1NhTWFKYTwvYT5kAikPZBYSAgEPDxYCHwNoZGQCAw9kFgICAQ8PFgIfBQVFL2hpZGUvd3B0bGlzdC5hc3B4P1JlZldwdElEPTM2ZDQ1ODcxLWI5OWQtNDZkNi05NWZjLWZmODZhYjU2NGM5OCZEUz0xZGQCBw8PFgYeBlJEUy5JRAspdUdyb3VuZHNwZWFrLldlYi5HUFguV3B0RGF0YVNvdXJjZXMsIFR1Y3Nvbi5Db21tb24uTGVnYWN5LCBWZXJzaW9uPTMuMC40ODI2LjIwMzgsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAEeB1JXUFQuSUQoKwQHMTQzMzkwOR8DaGRkAgkPDxYCHwNnZBYCAgEPDxYEHwUFKi9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi4zNzMyMTcmbG5nPTkuNzEwOB8DZ2RkAg8PFgIfAQWHAS4uLm90aGVyIGNhY2hlcyA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dT1kYW5pZWwzNTQiPmhpZGRlbjwvYT4gb3IgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3VsPWRhbmllbDM1NCI+Zm91bmQ8L2E+IGJ5IHRoaXMgdXNlcmQCEQ9kFgYCAQ8WAh8BBf8BLi4ubmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD0zMmJjOTMzMy01ZTUyLTQ5NTctYjBmNi01YTJjOGZjN2IyNTcmbGF0PTUyLjM3MzIxNyZsbmc9OS43MTA4MDAiPmNhY2hlcyBvZiB0aGlzIHR5cGU8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9MzJiYzkzMzMtNWU1Mi00OTU3LWIwZjYtNWEyYzhmYzdiMjU3JmxhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwJmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIDDxYCHwEFpgEuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzczMjE3JmxuZz05LjcxMDgwMCI+Y2FjaGVzPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi4zNzMyMTcmbG5nPTkuNzEwODAwJmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIFDxYCHwEFfi4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTUyLjM3MzIxNyZsb249OS43MTA4MDAiPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw8WAh8DaGQCFw9kFgICAQ8PFgQfAQWuBzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MzIyJmxuZz05LjcxMDgiIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis1MiVjMiViMCsyMi4zOTMrRSswMDklYzIlYjArNDIuNjQ4KyhHQzFaWFgyKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNodHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT01Mi4zNzMyMiZsb25naXR1ZGU9OS43MTA4Jnpvb209MTAiIHRhcmdldD0iX2JsYW5rIj5NYXBRdWVzdDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy55YWhvby5jb20vI2xhdD01Mi4zNzMyMiZsb249OS43MTA4Jnpvb209MTYmcT01Mi4zNzMyMiw5LjcxMDgmY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC41Mi4zNzMyMl85LjcxMDhfR0MxWlhYMiIgdGFyZ2V0PSJfYmxhbmsiPkJpbmcgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5jeWNsZW1hcC5vcmcvP3pvb209MTImbGF0PTUyLjM3MzIyJmxvbj05LjcxMDgiIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD01Mi4zNzMyMiZtbG9uPTkuNzEwOCZ6b29tPTEyIiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcDwvYT48L2xpPh8DZ2RkAhsPZBYGAgEPFgIfAQURNDAwIExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD0zNmQ0NTg3MS1iOTlkLTQ2ZDYtOTVmYy1mZjg2YWI1NjRjOThkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9MzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4HwEFIlZpZXcgdGhlIEltYWdlIEdhbGxlcnkgb2YgMiBpbWFnZXNkZAIqDxYCHwEFBHRydWVkAisPFgIfAQVJbGF0PTUyLjM3MzIxNzsgbG5nPTkuNzEwODsgZ3VpZD0nMzZkNDU4NzEtYjk5ZC00NmQ2LTk1ZmMtZmY4NmFiNTY0Yzk4JzsNCmQCFQ8WAh8DaBYCAgEPD2QWAh8LBQx3aWR0aDoxNjBweDtkAhcPZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh8GAhIWJGYPZBYCAgEPDxYIHwcFBWVuLVVTHwgFDVNldFRlbXBMb2NhbGUfAQUHRW5nbGlzaB8JaGRkAgEPZBYCAgEPDxYIHwcFBWRlLURFHwgFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8JaGRkAgIPZBYCAgEPDxYIHwcFBWZyLUZSHwgFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHwloZGQCAw9kFgICAQ8PFggfBwUFcHQtUFQfCAUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHwloZGQCBA9kFgICAQ8PFggfBwUFY3MtQ1ofCAUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfCWhkZAIFD2QWAgIBDw8WCB8HBQVzdi1TRR8IBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfCWhkZAIGD2QWAgIBDw8WCB8HBQVlcy1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHwloZGQCBw9kFgICAQ8PFggfBwUFZXQtRUUfCAUNU2V0VGVtcExvY2FsZR8BBQVFZXN0aR8JaGRkAggPZBYCAgEPDxYIHwcFBWl0LUlUHwgFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCWhkZAIJD2QWAgIBDw8WCB8HBQVlbC1HUh8IBQ1TZXRUZW1wTG9jYWxlHwEFEM6VzrvOu863zr3Ouc66zqwfCWhkZAIKD2QWAgIBDw8WCB8HBQVsdi1MVh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUxhdHZpZcWhdR8JaGRkAgsPZBYCAgEPDxYIHwcFBW5sLU5MHwgFDVNldFRlbXBMb2NhbGUfAQUKTmVkZXJsYW5kcx8J" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="aGRkAgwPZBYCAgEPDxYIHwcFBWNhLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUHQ2F0YWzDoB8JaGRkAg0PZBYCAgEPDxYIHwcFBXBsLVBMHwgFDVNldFRlbXBMb2NhbGUfAQUGUG9sc2tpHwloZGQCDg9kFgICAQ8PFggfBwUFbmItTk8fCAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8JaGRkAg8PZBYCAgEPDxYIHwcFBWtvLUtSHwgFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HwloZGQCEA9kFgICAQ8PFggfBwUFaHUtSFUfCAUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfCWhkZAIRD2QWAgIBDw8WCB8HBQVyby1STx8IBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHwloZGQCSw8WAh8BBRAmY29weTsgMjAwMC0yMDEzZAIDDxYCHwEFLFNlcnZlcjogV0VCMDk7IEJ1aWxkOiBXZWIuUmVsZWFzZV8yMDEzMDMxOS4xZGRvH7LlKQnpBEwbxxKtYCWS+E7TsQ==" />
</div>
<script type="text/javascript">
@@ -105,13 +105,13 @@ function __doPostBack(eventTarget, eventArgument) { </script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981141913700679" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981142902716410" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&t=ffffffff940d030f" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&t=ffffffff940d030f" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=ta9FpyAxahVxAwIi4KH4fLrER4dhAHVZEHqfuwoMKeIFYco8rq2vTcJhj1C7m6CbnMvPzkWobIv3yy5Gw_S65pLlwJbbXfoezEw7VgaAOb0FZm5nUDhB0Kc7jUZu4axIWNPse9yi0WK2cMS3dxR0JscuXodah6lkVIrCxPN__ZGWWgILYh5DZwQF10JzlsBz09iE1PfC5MpOmaeQLW9DY5uWdcs1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=Q8f2pHCS_7Lt124xuCpizHJtNYaT4mbZFqNy2qcC6Ub-FCnqvMJxQaypmTD3brUHXWmtBGNHVnSKkvDF5AJ-CP-xOVM9XwSTxUaDZ5N8uJ-c1mBAK1vrCLRpx11ypBcBHMtRrct5b01BiNMMlFWbjmjbQvTiyjey12gGn_LgcyNaBXqXp5kIh1ebWJv8jKqiiaCR_YgCduigOjHY_dAHWwuj2iWmtt0urJh-hhtC8RFW3R1h9Xkl25eIIwqB7CbXBKUY5SuLoyRBLDkJa4gVrGsSwsASy8bUQdYWndXTtY5m1MWUyPWaQYv3lSIxofT6UHM0OBe4wK6DfiD-BBOpddbZQjUBUu0vW6IXJkOjBIKAZWocaqVwoDdV6ftQioxWyVbnjlEV-9jMvlubz4L_kjw1QQ5kaXJHkdIzyklcybxnnH7t53OfdqkS115kiSPR64IJaV9K7Nf6_8oXEN2w3GuOduAPWG4gOnw_1-foqce_XcZBMACUvahRnbYhUKx9a5YQSVv49lH1kd_gowbVhv9WfJ_VbpJz48ieYoDTJ0DShpngm4IcE4CauWTqZ-KJDy6dssNfPEs8mUCjSflV6EzKZWx7apbxU9Ttm3gM-P-re5W2yUh6wfArc6tbvw93gkK8TxtzUeQo8Noel60oatAoQn68Ly1KlCK_PA9A-pahiK0R0" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=yD98wvSb5VN7041hOgZOmkqQVzI1tnBUcR4JaroKEQeSLINMok8wJkEpv14P0ALxKQMdX9Uy6nsNaPxA7d2UqjQ2sYLbpExAJ83JTyN-pkZ2bqOzcSw5bU6coW4Fkg68lE7WA86GU2ExfrvgRWgp0IApCrKMjNJUB5J7XE2OSt6MaXp0qMKnx4NX9LIX7va1Q_FvwA9UawNSTmt_G4BjUQv6zL81" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=UF7CoL95c_vLaLGsauDTR16zTvN9HxO7Z7dSX0HBBpXtTepxYlkbh743-78oMOEuI_3aLte7xb0-e6V19L_Hk7z4f9QOasPcNlM1hxpFexvFPJfRJzWGp-8O59Hd76flTCJMMO1C2W78ywI_ed1zlZ4zwqVTjLxFOBXV5gyTf5x5ufra9ngZk7bLz7abwYQrLLX-Cwy5EAIGUeMTbqaOmXIafG3b4qS3W0c8k0aCp7DUV1IsvjP1wvdHhxfDrdI5YdAx0kv6nXRWt5mJxjtPKXH1Qjpx8bXIz9rhEfO0oNqnuy_SMtZ1XLyp3UE9tPyWhVRhf6ti2PBL-2-gEWzl_Q0XDmTyGyzoLoLGrClYwEDjYrcQKrAAPM50g9OvnEA6pYxEz4kO7osR0kth80l5KSoEAR2cQvoMCckCOi5Ojw-yK2p56OY-JdKsXMLNNNYIPRfEgVrO6cHT5BV5A4fIUA4Q_B9w2iZFPVzFYxFbliC2fMFv7LYa1_eyTiqxiz_vfMIGPVpEr01CBIulzwpEoWlIwMZIYLmB9VOOk9GSERemTJdhwwVHI3lYYuxUfRn28bvxPZMqsUqhHKDd4m6CDKQqOB1VIdtgk63rJfVtmigIFAFFaV6K36rPqVAthL1_KdD41_RBQqEOvv8BAYDbV6PtCdoX9nRlMYdrXS9niT8A1JaT0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -152,11 +152,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet </p>
<p class="SignedInText">
<strong>
- Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC1ZXX2%26Submit6%3dGo">Sign Out</a>)<br />
+ Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3d36d45871-b99d-46d6-95fc-ff86ab564c98">Sign Out</a>)<br />
<span id="ctl00_litPMLevel">Premium Member</span>
<strong style="display: block">
- 419 Caches Found</strong>
+ 426 Caches Found</strong>
</p>
</div>
@@ -732,14 +732,14 @@ Man weiß hier Bescheid. Dieser Cache ist rund um die Uhr zu finden, ohne ein Ge <script type='text/javascript'>
googletag.cmd.push(function() {{
-googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_38bcbf51-2a32-4a5c-814d-35c3a016a334').addService(googletag.pubads());
+googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_43624837-2087-4fc7-a1cb-2cbbb050d4dd').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
}});
</script>
-<div id='div_38bcbf51-2a32-4a5c-814d-35c3a016a334'>
+<div id='div_43624837-2087-4fc7-a1cb-2cbbb050d4dd'>
<script type='text/javascript'>
-googletag.cmd.push(function() { googletag.display('div_38bcbf51-2a32-4a5c-814d-35c3a016a334'); });
+googletag.cmd.push(function() { googletag.display('div_43624837-2087-4fc7-a1cb-2cbbb050d4dd'); });
</script>
</div>
@@ -818,6 +818,31 @@ googletag.cmd.push(function() { googletag.display('div_38bcbf51-2a32-4a5c-814d-3 +<div class="CacheDetailNavigationWidget">
+
+ <h3 class="WidgetHeader">My Bookmark Lists</h3>
+ <div class="WidgetBody">
+
+
+ <ul class="BookmarkList">
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14551708-0c3c-4f95-9342-1bb3119e6efe">cgeo mocks</a><br /> by <a href="http://www.geocaching.com/profile/?guid=4d416461-d1a7-4cc5-8ee7-336bb910feb8">JoSaMaJa</a>
+ </li>
+
+ </ul>
+
+ <p class="NoBottomSpacing">
+
+ </p>
+
+ </div>
+
+
+</div>
+
+
+
</div>
@@ -935,7 +960,7 @@ googletag.cmd.push(function() { googletag.display('div_38bcbf51-2a32-4a5c-814d-3 </div>
<p>
<small>
- Current Time: <time datetime="2013-03-08T10:23:49Z">03/08/2013 10:23:49 (UTC-08:00) Pacific Time (US & Canada) (18:23 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-10-13T22:07:50Z">2012-10-13T22:07:50Z</time> on 10/13/2012 15:07:50 Pacific Daylight Time (22:07 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-03-27T04:22:51Z">03/27/2013 04:22:51 Pacific Daylight Time (11:22 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2012-10-13T22:07:50Z">2012-10-13T22:07:50Z</time> on 10/13/2012 15:07:50 Pacific Daylight Time (22:07 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
<div id="topScroll" class="TopScroll" style="display:none;">
@@ -1876,9 +1901,9 @@ var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLn mapLatLng = {"lat":52.37322,"lng":9.7108,"type":2,"name":"Hannopoly: Eislisenstrasse "};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.373217, 009.710800"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 22' 23.581\" E 009° 42' 38.880\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 548389 N 5802787"}];
userInfo = {ID: 4793174};
-userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4NSVGNBXHR5C6PR3SY43LQLEMQAK6P6L3C22DSDANGH7U74UR4YVOXN4MXX6S6OPU5PXVWO75AFYO4Q';
+userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4NSVGNBXHR5C6PR3SY43LQLEMQAK6P6L3C22DSDA4D72N4M4LT4RTMAINHDIQZVFWBKCSVGKFR2GWHQ';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":196904781,"CacheID":1433909,"LogGuid":"26f89faf-aa71-406e-9ea3-cdfa18a846e6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"s. mein Log bei Seestr.","Created":"2011-11-05","Visited":"2011-11-05","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5221,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":196899232,"CacheID":1433909,"LogGuid":"f755b34d-0cc1-4740-827a-07311fe1a3b1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Äh, Logbuch ist nicht mehr vor Ort - wie kann man da \"Found\" loggen ? Ansonsten würde ich auch \"Found\" loggen da ich Dienstag vor Ort war und genau weiß vor sich der Cache befand....","Created":"2011-11-05","Visited":"2011-11-05","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":747,"GeocacheHideCount":8,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189731769,"CacheID":1433909,"LogGuid":"e674d2ed-7cac-4b49-96b1-3020e5c7f479","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Archive","LogTypeImage":"5.png","LogText":"Auch hier fehlt mir leider eine passende neue Idee. Wie alle archivierten Hannopolys wird auch diese Besitzrechtskarte ab sofort auf www.hannopoly.de zu finden sein. Danke für die sehr schönen Logs!","Created":"2011-10-01","Visited":"2011-10-01","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5221,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189390319,"CacheID":1433909,"LogGuid":"4510051e-2c87-4d09-b77d-d90f645bafe9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"wahrscheinlich nicht mehr so schön wie geplant, dennoch alles da, was der logger so braucht ... sogar´n herry ;-)<br /><br />dfdc","Created":"2011-09-29","Visited":"2011-09-29","UserName":"Sir5al","MembershipLevel":3,"AccountID":3229535,"AccountGuid":"66de7735-1888-479b-8dbd-ada710747374","Email":"","AvatarImage":"9da1d6ed-3a3f-47cb-aba3-f5550abe7d11.jpg","GeocacheFindCount":1065,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":186118551,"CacheID":1433909,"LogGuid":"acce0114-1712-4f32-b120-4b8bd4ef7200","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Leider habe ich erst gesehen das der Cache auf Eis liegt nach dem ich ihn gefunden habe.<br /><br />Ich konnte ihn denn noch gut finden und mich im großem Logbuch eintragen!<br /><br /><br />DFDC","Created":"2011-09-11","Visited":"2011-08-27","UserName":"Smootje1","MembershipLevel":3,"AccountID":4186572,"AccountGuid":"41b96bb9-ed81-473a-9032-1096d5c94423","Email":"","AvatarImage":"6052e05a-f2ce-45f1-86c4-c56fe8da6d2b.jpg","GeocacheFindCount":4389,"GeocacheHideCount":37,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171398380,"CacheID":1433909,"LogGuid":"845e6ead-bf44-4dd8-900e-81a78afc0887","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Daniel, du sprichst uns aus der Seele.. gestern Nacht dagewesen, um ihn ENDLICH zu heben, aber ohne Erfolg.. SCHNIEF","Created":"2011-07-08","Visited":"2011-07-08","UserName":"Steinbreit","MembershipLevel":3,"AccountID":4430835,"AccountGuid":"86281f53-49a2-4051-bc15-394d43724d65","Email":"","AvatarImage":"90f468a9-7059-43a7-a3c5-256879458a63.jpg","GeocacheFindCount":495,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171063566,"CacheID":1433909,"LogGuid":"fc463b7b-ce41-4d16-a7a4-2107b8454a91","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Temporarily Disable Listing","LogTypeImage":"22.png","LogText":"Mist...","Created":"2011-07-06","Visited":"2011-07-06","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5221,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":170116614,"CacheID":1433909,"LogGuid":"09c89c9c-ec9f-4387-a6ae-05fe6d11d9bf","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ging schneller als gedacht. :-)<br /><br />TFTC","Created":"2011-07-02","Visited":"2011-07-01","UserName":"urbannature","MembershipLevel":1,"AccountID":2510965,"AccountGuid":"1f223c0d-d9ee-44c4-b411-35eee724b868","Email":"","AvatarImage":"476ea58f-a917-46c4-8e5a-b99484b514f6.jpg","GeocacheFindCount":2213,"GeocacheHideCount":10,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":168683009,"CacheID":1433909,"LogGuid":"53e3436d-3bbc-4b46-aa34-ca28bbd0723a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Erster Hanopoly-Cach! Nach langem suchen und richtig lesen gefunden! ;)","Created":"2011-06-24","Visited":"2011-06-24","UserName":"anady","MembershipLevel":3,"AccountID":3551788,"AccountGuid":"c6d0f76b-df41-44d0-9d1f-e60b0ffa4f0a","Email":"","AvatarImage":"","GeocacheFindCount":148,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":168640932,"CacheID":1433909,"LogGuid":"fc364b9d-8ddb-4d0e-aa42-09b4dce93c94","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit anady hier gewesen und die bald Karte gefunden. Doch irgendwie war kein Logbuch auffindbar. Während wir noch etwas hin und her hantierten wurde es uns überraschend übergeben. Ob das so sein soll?<br /><br />Die Idee aber ist prima.<br /><br />TFTC! :-)","Created":"2011-06-24","Visited":"2011-06-24","UserName":"CriDi","MembershipLevel":3,"AccountID":3383487,"AccountGuid":"78aeaa8b-044d-40ac-8a80-656a1c7f85c1","Email":"","AvatarImage":"09f0aca7-6fcf-4d9a-bbf9-0f4b31c68f36.jpg","GeocacheFindCount":1087,"GeocacheHideCount":15,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167383966,"CacheID":1433909,"LogGuid":"6a4c21a6-c795-4d8e-8f0c-a4d7a357f837","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Interessantes Geschehen am Sonnabendvormittag; die Müllabfuhr kommt, die Post bringt Neuigkeiten ins Haus, Nachbarn treffen sich auf der Straße und klönen eine Runde, ein Auto aus SFA blockiert die Kreuzung, ein Radfahrer entsorgt den Müll aus dem Fahrradkorb direkt am Baum und unser Team vergisst fast die Suche ...<br /><br />DfdC!","Created":"2011-06-18","Visited":"2011-06-18","UserName":"2bupa","MembershipLevel":3,"AccountID":2675170,"AccountGuid":"e6a84779-ad63-4ba1-93fa-558a7190c8b4","Email":"","AvatarImage":"e30c21ec-8bce-4b90-9c6f-ee7e618da9fe.jpg","GeocacheFindCount":4991,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167163052,"CacheID":1433909,"LogGuid":"2d51d81f-1581-4ae6-9254-0a5ffa163585","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"War schon öfters hier, aber die Muggels saßen da nur so rum. Heute früh aufgestanden....<br /><br />DFDC grüße Putze","Created":"2011-06-16","Visited":"2011-06-15","UserName":"Weltallputze","MembershipLevel":1,"AccountID":4512106,"AccountGuid":"07449e94-85c8-4d2f-b387-cb0910b2d854","Email":"","AvatarImage":"0b9746f6-1fd4-47b9-8f07-5b2bb3b21cc0.jpg","GeocacheFindCount":226,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":166633564,"CacheID":1433909,"LogGuid":"f6c8b6f6-527b-4ea0-ba85-8637cf47bd73","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Voll geil. Juhu und danke","Created":"2011-06-13","Visited":"2011-06-13","UserName":"Lumisch","MembershipLevel":1,"AccountID":4464524,"AccountGuid":"fcc7da31-928a-418f-ae3e-9f015b41ead6","Email":"","AvatarImage":"","GeocacheFindCount":54,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":165707570,"CacheID":1433909,"LogGuid":"1adb0f76-9bfa-47a4-a7f2-4b3aab0ffcfb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"lecker eis :)","Created":"2011-06-09","Visited":"2011-06-09","UserName":"Nico Rohrssen","MembershipLevel":1,"AccountID":4523346,"AccountGuid":"3c66a437-1bbc-4cb1-bda0-8f609ac6efef","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":164530395,"CacheID":1433909,"LogGuid":"477f0186-9c2a-40f9-8696-98afb9868205","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach langer sorgfältiger Vorplanung (an welchem Tag lohnt sich das frühe Aufstehen?) bei Sonnenaufgang angeschlichen und... gefunden! Gotcha! DfdC!","Created":"2011-06-03","Visited":"2011-06-03","UserName":"Deistermonster","MembershipLevel":3,"AccountID":4165483,"AccountGuid":"116149cb-3e0f-4c50-b51e-95b756d64da4","Email":"","AvatarImage":"54fe057c-f79a-4d82-b587-53c5b2b9386f.jpg","GeocacheFindCount":1640,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":164413372,"CacheID":1433909,"LogGuid":"e2c9bdad-9282-49f2-aba4-7e2ac058afa5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Morgens um 6 Uhr muggelfrei geloggt.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />Endlich! Der war schon ewig geplant, aber um unserer Idee nachzugehen, fehlte zur \"normalen\" Tageszeit der Mut. Ist schon ein lustiges Versteck... TFTC sagt Soukousa","Created":"2011-06-03","Visited":"2011-06-03","UserName":"Soukousa","MembershipLevel":3,"AccountID":4154048,"AccountGuid":"399bef0c-1cdd-4024-a00e-3199484131af","Email":"","AvatarImage":"8480d5e4-f43e-48e5-a449-c01ce424ff05.jpg","GeocacheFindCount":1640,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163515249,"CacheID":1433909,"LogGuid":"cda47e99-cd5f-4fc1-aa40-cb3bccff4f46","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Bei einem leckerem Eis das Logbuch siegniert.<br /><br />TFTC<br />Don Canallie","Created":"2011-05-29","Visited":"2011-05-29","UserName":"Don Canallie","MembershipLevel":3,"AccountID":3891097,"AccountGuid":"80970931-2e97-4291-abfd-564635f5d86f","Email":"","AvatarImage":"e6944e25-df18-45fb-acca-93ee08e923da.jpg","GeocacheFindCount":795,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163307833,"CacheID":1433909,"LogGuid":"caad1abc-eb5c-4b99-ae92-232057825f41","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Während einer schönen Li-Li-Ahlem Fahrrad Cachingtour gesucht und geborgen, danach wieder korrekt versteckt, damit es nicht zu einfach wird. dfdc <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"2011-05-29","Visited":"2011-05-28","UserName":"rimini08","MembershipLevel":3,"AccountID":4088331,"AccountGuid":"2fe34526-d72d-478e-9b7f-9dc5c3e1d6c1","Email":"","AvatarImage":"","GeocacheFindCount":510,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163325464,"CacheID":1433909,"LogGuid":"c3475f2f-1e55-43aa-89a8-3a1ce8ddc525","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<i>gut gefunden, danke fürs verstecken!</i> <br /><br /><b> <font color=\"red\">TFTC<br /><br /><b> <font color=\"green\">...sprechenden Cachern kann geholfen werden <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br /><img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <b> <font size=\"3\"> <font color=\"green\">J<font color=\"black\">o<font color=\"green\">h<font color=\"black\">a<font color=\"green\">n<font color=\"black\">s<font color=\"green\">i<font color=\"black\">b<font color=\"green\">ä<font color=\"black\">r <font color=\"orange\">2011</font> <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /></font></font></font></font></font></font></font></font></font></font></font></b><font size=\"3\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"></font></font></font></font></font></font></font></font></font></font></font></font></b></font></b>","Created":"2011-05-29","Visited":"2011-05-22","UserName":"Johansibär","MembershipLevel":1,"AccountID":1858674,"AccountGuid":"05f9d911-9cdc-4224-84b3-8e4923228958","Email":"","AvatarImage":"4d235c2f-81b6-42c4-a28c-5df2182a289d.jpg","GeocacheFindCount":1199,"GeocacheHideCount":17,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":162246062,"CacheID":1433909,"LogGuid":"e9eec580-6831-40ba-8530-c9722017a142","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schon vor ein paar Tagen die Karte entdeckt aber das loggen war uns nicht so klar...nun haben wir uns heute auch im Logbuch verewigt. Nette Idee, DfdC.","Created":"2011-05-22","Visited":"2011-05-22","UserName":"Flunin","MembershipLevel":3,"AccountID":3435189,"AccountGuid":"4c851b2a-967c-427d-91eb-268b5ffb0f0a","Email":"","AvatarImage":"","GeocacheFindCount":625,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161705502,"CacheID":1433909,"LogGuid":"0b303d23-fb26-4b29-b5d2-2bb8828682ae","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach nem kleinen Tipp dann doch noch loggen können :-)<br />DFDC","Created":"2011-05-20","Visited":"2011-05-20","UserName":"Leafhoppers","MembershipLevel":1,"AccountID":3766111,"AccountGuid":"37bd64d5-a74f-4a12-b040-460f83652198","Email":"","AvatarImage":"","GeocacheFindCount":588,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161990811,"CacheID":1433909,"LogGuid":"1ac63b3e-075a-48b7-9a1f-222b19c71868","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit i-teg um 15:25 Uhr geloggt. <br />TFTC!<br />#488","Created":"2011-05-21","Visited":"2011-05-19","UserName":"justify-jay","MembershipLevel":1,"AccountID":3936481,"AccountGuid":"af49ff9e-5331-4565-97e8-5f5bf45e33b2","Email":"","AvatarImage":"198d173a-7efa-416c-b495-b15ed30f94a1.jpg","GeocacheFindCount":1105,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161988577,"CacheID":1433909,"LogGuid":"19a1ae8a-e3d7-492c-a866-002064968183","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf Spontantour zusammen mit justify-jay um 15:25 Uhr zum Logbuch durchgedrungen :-) ! <br />TFTC!<br />#488","Created":"2011-05-21","Visited":"2011-05-19","UserName":"i-teg","MembershipLevel":1,"AccountID":3936536,"AccountGuid":"a30caa8b-0ba4-4a20-875f-ac825eacbf41","Email":"","AvatarImage":"533a43c0-8416-452f-8011-f575dee42268.jpg","GeocacheFindCount":1105,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161489085,"CacheID":1433909,"LogGuid":"0686f7dd-e12b-4b99-b7c7-24df895f48fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schnell gefunden da unsere Vorlogger scheinbar den Cache nicht wieder ganz genau plaziert hatten. Weils so schnell ging ne leckeres Eis in der Sonne genossen.<br />Ein super Cache, vielen Dank dafür.<br />Kartoffelhunter","Created":"2011-05-18","Visited":"2011-05-18","UserName":"Kartoffelhunter","MembershipLevel":3,"AccountID":3579558,"AccountGuid":"344121a1-10f3-443a-9ff6-f90fc43ba8be","Email":"","AvatarImage":"61105259-e319-4793-9bc3-51aae0eb9e10.jpg","GeocacheFindCount":1027,"GeocacheHideCount":2,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":160254911,"CacheID":1433909,"LogGuid":"f315eb63-43e2-48ad-a3b9-fc775dfc9e27","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Unsere erste gefundene Hannopoly-Karte, bei bestem Wetter. Und zur Belohnung ein Lecker Eis für Leona, Tomke und mich.","Created":"2011-05-11","Visited":"2011-05-11","UserName":"janko74","MembershipLevel":1,"AccountID":4460156,"AccountGuid":"bc9f2cab-dad8-465f-8b73-0d7d420e043c","Email":"","AvatarImage":"","GeocacheFindCount":4,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 400, "rows": 400 } };
+initalLogs = {"status":"success", "data": [{"LogID":196904781,"CacheID":1433909,"LogGuid":"26f89faf-aa71-406e-9ea3-cdfa18a846e6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"s. mein Log bei Seestr.","Created":"2011-11-05","Visited":"2011-11-05","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5232,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":196899232,"CacheID":1433909,"LogGuid":"f755b34d-0cc1-4740-827a-07311fe1a3b1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Äh, Logbuch ist nicht mehr vor Ort - wie kann man da \"Found\" loggen ? Ansonsten würde ich auch \"Found\" loggen da ich Dienstag vor Ort war und genau weiß vor sich der Cache befand....","Created":"2011-11-05","Visited":"2011-11-05","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":747,"GeocacheHideCount":8,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189731769,"CacheID":1433909,"LogGuid":"e674d2ed-7cac-4b49-96b1-3020e5c7f479","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Archive","LogTypeImage":"5.png","LogText":"Auch hier fehlt mir leider eine passende neue Idee. Wie alle archivierten Hannopolys wird auch diese Besitzrechtskarte ab sofort auf www.hannopoly.de zu finden sein. Danke für die sehr schönen Logs!","Created":"2011-10-01","Visited":"2011-10-01","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5232,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":189390319,"CacheID":1433909,"LogGuid":"4510051e-2c87-4d09-b77d-d90f645bafe9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"wahrscheinlich nicht mehr so schön wie geplant, dennoch alles da, was der logger so braucht ... sogar´n herry ;-)<br /><br />dfdc","Created":"2011-09-29","Visited":"2011-09-29","UserName":"Sir5al","MembershipLevel":3,"AccountID":3229535,"AccountGuid":"66de7735-1888-479b-8dbd-ada710747374","Email":"","AvatarImage":"9da1d6ed-3a3f-47cb-aba3-f5550abe7d11.jpg","GeocacheFindCount":1070,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":186118551,"CacheID":1433909,"LogGuid":"acce0114-1712-4f32-b120-4b8bd4ef7200","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Leider habe ich erst gesehen das der Cache auf Eis liegt nach dem ich ihn gefunden habe.<br /><br />Ich konnte ihn denn noch gut finden und mich im großem Logbuch eintragen!<br /><br /><br />DFDC","Created":"2011-09-11","Visited":"2011-08-27","UserName":"Smootje1","MembershipLevel":3,"AccountID":4186572,"AccountGuid":"41b96bb9-ed81-473a-9032-1096d5c94423","Email":"","AvatarImage":"6052e05a-f2ce-45f1-86c4-c56fe8da6d2b.jpg","GeocacheFindCount":4498,"GeocacheHideCount":37,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171398380,"CacheID":1433909,"LogGuid":"845e6ead-bf44-4dd8-900e-81a78afc0887","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"Daniel, du sprichst uns aus der Seele.. gestern Nacht dagewesen, um ihn ENDLICH zu heben, aber ohne Erfolg.. SCHNIEF","Created":"2011-07-08","Visited":"2011-07-08","UserName":"Steinbreit","MembershipLevel":3,"AccountID":4430835,"AccountGuid":"86281f53-49a2-4051-bc15-394d43724d65","Email":"","AvatarImage":"90f468a9-7059-43a7-a3c5-256879458a63.jpg","GeocacheFindCount":495,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":171063566,"CacheID":1433909,"LogGuid":"fc463b7b-ce41-4d16-a7a4-2107b8454a91","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Temporarily Disable Listing","LogTypeImage":"22.png","LogText":"Mist...","Created":"2011-07-06","Visited":"2011-07-06","UserName":"daniel354","MembershipLevel":3,"AccountID":1477880,"AccountGuid":"8186d342-6f46-4d9e-8ba3-2e7b51426798","Email":"","AvatarImage":"b82a4dec-bd35-4cc8-b6dc-fe8bced5cbca.jpg","GeocacheFindCount":5232,"GeocacheHideCount":42,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":170116614,"CacheID":1433909,"LogGuid":"09c89c9c-ec9f-4387-a6ae-05fe6d11d9bf","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ging schneller als gedacht. :-)<br /><br />TFTC","Created":"2011-07-02","Visited":"2011-07-01","UserName":"urbannature","MembershipLevel":1,"AccountID":2510965,"AccountGuid":"1f223c0d-d9ee-44c4-b411-35eee724b868","Email":"","AvatarImage":"476ea58f-a917-46c4-8e5a-b99484b514f6.jpg","GeocacheFindCount":2228,"GeocacheHideCount":10,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":168683009,"CacheID":1433909,"LogGuid":"53e3436d-3bbc-4b46-aa34-ca28bbd0723a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Erster Hanopoly-Cach! Nach langem suchen und richtig lesen gefunden! ;)","Created":"2011-06-24","Visited":"2011-06-24","UserName":"anady","MembershipLevel":3,"AccountID":3551788,"AccountGuid":"c6d0f76b-df41-44d0-9d1f-e60b0ffa4f0a","Email":"","AvatarImage":"","GeocacheFindCount":148,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":168640932,"CacheID":1433909,"LogGuid":"fc364b9d-8ddb-4d0e-aa42-09b4dce93c94","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit anady hier gewesen und die bald Karte gefunden. Doch irgendwie war kein Logbuch auffindbar. Während wir noch etwas hin und her hantierten wurde es uns überraschend übergeben. Ob das so sein soll?<br /><br />Die Idee aber ist prima.<br /><br />TFTC! :-)","Created":"2011-06-24","Visited":"2011-06-24","UserName":"CriDi","MembershipLevel":3,"AccountID":3383487,"AccountGuid":"78aeaa8b-044d-40ac-8a80-656a1c7f85c1","Email":"","AvatarImage":"09f0aca7-6fcf-4d9a-bbf9-0f4b31c68f36.jpg","GeocacheFindCount":1147,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167383966,"CacheID":1433909,"LogGuid":"6a4c21a6-c795-4d8e-8f0c-a4d7a357f837","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Interessantes Geschehen am Sonnabendvormittag; die Müllabfuhr kommt, die Post bringt Neuigkeiten ins Haus, Nachbarn treffen sich auf der Straße und klönen eine Runde, ein Auto aus SFA blockiert die Kreuzung, ein Radfahrer entsorgt den Müll aus dem Fahrradkorb direkt am Baum und unser Team vergisst fast die Suche ...<br /><br />DfdC!","Created":"2011-06-18","Visited":"2011-06-18","UserName":"2bupa","MembershipLevel":3,"AccountID":2675170,"AccountGuid":"e6a84779-ad63-4ba1-93fa-558a7190c8b4","Email":"","AvatarImage":"e30c21ec-8bce-4b90-9c6f-ee7e618da9fe.jpg","GeocacheFindCount":5096,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":167163052,"CacheID":1433909,"LogGuid":"2d51d81f-1581-4ae6-9254-0a5ffa163585","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"War schon öfters hier, aber die Muggels saßen da nur so rum. Heute früh aufgestanden....<br /><br />DFDC grüße Putze","Created":"2011-06-16","Visited":"2011-06-15","UserName":"Weltallputze","MembershipLevel":1,"AccountID":4512106,"AccountGuid":"07449e94-85c8-4d2f-b387-cb0910b2d854","Email":"","AvatarImage":"0b9746f6-1fd4-47b9-8f07-5b2bb3b21cc0.jpg","GeocacheFindCount":226,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":166633564,"CacheID":1433909,"LogGuid":"f6c8b6f6-527b-4ea0-ba85-8637cf47bd73","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Voll geil. Juhu und danke","Created":"2011-06-13","Visited":"2011-06-13","UserName":"Lumisch","MembershipLevel":1,"AccountID":4464524,"AccountGuid":"fcc7da31-928a-418f-ae3e-9f015b41ead6","Email":"","AvatarImage":"","GeocacheFindCount":54,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":165707570,"CacheID":1433909,"LogGuid":"1adb0f76-9bfa-47a4-a7f2-4b3aab0ffcfb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"lecker eis :)","Created":"2011-06-09","Visited":"2011-06-09","UserName":"Nico Rohrssen","MembershipLevel":1,"AccountID":4523346,"AccountGuid":"3c66a437-1bbc-4cb1-bda0-8f609ac6efef","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":164530395,"CacheID":1433909,"LogGuid":"477f0186-9c2a-40f9-8696-98afb9868205","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach langer sorgfältiger Vorplanung (an welchem Tag lohnt sich das frühe Aufstehen?) bei Sonnenaufgang angeschlichen und... gefunden! Gotcha! DfdC!","Created":"2011-06-03","Visited":"2011-06-03","UserName":"Deistermonster","MembershipLevel":3,"AccountID":4165483,"AccountGuid":"116149cb-3e0f-4c50-b51e-95b756d64da4","Email":"","AvatarImage":"54fe057c-f79a-4d82-b587-53c5b2b9386f.jpg","GeocacheFindCount":1644,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":164413372,"CacheID":1433909,"LogGuid":"e2c9bdad-9282-49f2-aba4-7e2ac058afa5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Morgens um 6 Uhr muggelfrei geloggt.<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" />Endlich! Der war schon ewig geplant, aber um unserer Idee nachzugehen, fehlte zur \"normalen\" Tageszeit der Mut. Ist schon ein lustiges Versteck... TFTC sagt Soukousa","Created":"2011-06-03","Visited":"2011-06-03","UserName":"Soukousa","MembershipLevel":3,"AccountID":4154048,"AccountGuid":"399bef0c-1cdd-4024-a00e-3199484131af","Email":"","AvatarImage":"8480d5e4-f43e-48e5-a449-c01ce424ff05.jpg","GeocacheFindCount":1644,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163515249,"CacheID":1433909,"LogGuid":"cda47e99-cd5f-4fc1-aa40-cb3bccff4f46","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Bei einem leckerem Eis das Logbuch siegniert.<br /><br />TFTC<br />Don Canallie","Created":"2011-05-29","Visited":"2011-05-29","UserName":"Don Canallie","MembershipLevel":3,"AccountID":3891097,"AccountGuid":"80970931-2e97-4291-abfd-564635f5d86f","Email":"","AvatarImage":"e6944e25-df18-45fb-acca-93ee08e923da.jpg","GeocacheFindCount":825,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163307833,"CacheID":1433909,"LogGuid":"caad1abc-eb5c-4b99-ae92-232057825f41","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Während einer schönen Li-Li-Ahlem Fahrrad Cachingtour gesucht und geborgen, danach wieder korrekt versteckt, damit es nicht zu einfach wird. dfdc <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"2011-05-29","Visited":"2011-05-28","UserName":"rimini08","MembershipLevel":3,"AccountID":4088331,"AccountGuid":"2fe34526-d72d-478e-9b7f-9dc5c3e1d6c1","Email":"","AvatarImage":"","GeocacheFindCount":510,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":163325464,"CacheID":1433909,"LogGuid":"c3475f2f-1e55-43aa-89a8-3a1ce8ddc525","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<i>gut gefunden, danke fürs verstecken!</i> <br /><br /><b> <font color=\"red\">TFTC<br /><br /><b> <font color=\"green\">...sprechenden Cachern kann geholfen werden <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br /><br /><img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /> <b> <font size=\"3\"> <font color=\"green\">J<font color=\"black\">o<font color=\"green\">h<font color=\"black\">a<font color=\"green\">n<font color=\"black\">s<font color=\"green\">i<font color=\"black\">b<font color=\"green\">ä<font color=\"black\">r <font color=\"orange\">2011</font> <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /></font></font></font></font></font></font></font></font></font></font></font></b><font size=\"3\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"><font color=\"green\"><font color=\"black\"></font></font></font></font></font></font></font></font></font></font></font></font></b></font></b>","Created":"2011-05-29","Visited":"2011-05-22","UserName":"Johansibär","MembershipLevel":1,"AccountID":1858674,"AccountGuid":"05f9d911-9cdc-4224-84b3-8e4923228958","Email":"","AvatarImage":"4d235c2f-81b6-42c4-a28c-5df2182a289d.jpg","GeocacheFindCount":1199,"GeocacheHideCount":17,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":162246062,"CacheID":1433909,"LogGuid":"e9eec580-6831-40ba-8530-c9722017a142","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schon vor ein paar Tagen die Karte entdeckt aber das loggen war uns nicht so klar...nun haben wir uns heute auch im Logbuch verewigt. Nette Idee, DfdC.","Created":"2011-05-22","Visited":"2011-05-22","UserName":"Flunin","MembershipLevel":3,"AccountID":3435189,"AccountGuid":"4c851b2a-967c-427d-91eb-268b5ffb0f0a","Email":"","AvatarImage":"","GeocacheFindCount":625,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":161705502,"CacheID":1433909,"LogGuid":"0b303d23-fb26-4b29-b5d2-2bb8828682ae","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nach nem kleinen Tipp dann doch noch loggen können :-)<br />DFDC","Created":"2011-05-20","Visited":"2011-05-20","UserName":"Leafhoppers","MembershipLevel":1,"AccountID":3766111,"AccountGuid":"37bd64d5-a74f-4a12-b040-460f83652198","Email":"","AvatarImage":"","GeocacheFindCount":588,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161990811,"CacheID":1433909,"LogGuid":"1ac63b3e-075a-48b7-9a1f-222b19c71868","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit i-teg um 15:25 Uhr geloggt. <br />TFTC!<br />#488","Created":"2011-05-21","Visited":"2011-05-19","UserName":"justify-jay","MembershipLevel":1,"AccountID":3936481,"AccountGuid":"af49ff9e-5331-4565-97e8-5f5bf45e33b2","Email":"","AvatarImage":"198d173a-7efa-416c-b495-b15ed30f94a1.jpg","GeocacheFindCount":1105,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161988577,"CacheID":1433909,"LogGuid":"19a1ae8a-e3d7-492c-a866-002064968183","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf Spontantour zusammen mit justify-jay um 15:25 Uhr zum Logbuch durchgedrungen :-) ! <br />TFTC!<br />#488","Created":"2011-05-21","Visited":"2011-05-19","UserName":"i-teg","MembershipLevel":1,"AccountID":3936536,"AccountGuid":"a30caa8b-0ba4-4a20-875f-ac825eacbf41","Email":"","AvatarImage":"533a43c0-8416-452f-8011-f575dee42268.jpg","GeocacheFindCount":1107,"GeocacheHideCount":2,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":161489085,"CacheID":1433909,"LogGuid":"0686f7dd-e12b-4b99-b7c7-24df895f48fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schnell gefunden da unsere Vorlogger scheinbar den Cache nicht wieder ganz genau plaziert hatten. Weils so schnell ging ne leckeres Eis in der Sonne genossen.<br />Ein super Cache, vielen Dank dafür.<br />Kartoffelhunter","Created":"2011-05-18","Visited":"2011-05-18","UserName":"Kartoffelhunter","MembershipLevel":1,"AccountID":3579558,"AccountGuid":"344121a1-10f3-443a-9ff6-f90fc43ba8be","Email":"","AvatarImage":"61105259-e319-4793-9bc3-51aae0eb9e10.jpg","GeocacheFindCount":1027,"GeocacheHideCount":2,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":160254911,"CacheID":1433909,"LogGuid":"f315eb63-43e2-48ad-a3b9-fc775dfc9e27","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Unsere erste gefundene Hannopoly-Karte, bei bestem Wetter. Und zur Belohnung ein Lecker Eis für Leona, Tomke und mich.","Created":"2011-05-11","Visited":"2011-05-11","UserName":"janko74","MembershipLevel":1,"AccountID":4460156,"AccountGuid":"bc9f2cab-dad8-465f-8b73-0d7d420e043c","Email":"","AvatarImage":"","GeocacheFindCount":4,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 400, "rows": 400 } };
$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
@@ -2071,6 +2096,6 @@ $(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', </noscript>
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB08; Build: Web.HotFix_20130305.1 -->
+ <!-- Server: WEB09; Build: Web.Release_20130319.1 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html index 6321f1d..28fd6d7 100644 --- a/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html +++ b/tests/src/cgeo/geocaching/test/mock/GC2CJPF.html @@ -76,16 +76,16 @@ }
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC2CJPF&Submit6=Go" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates, which will then lead you to one or more locations. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 2.5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/3.png" property="og:image" /><meta name="og:title" content="Kinderwald KiC" property="og:title" /><meta name="description" content="Kinderwald KiC (GC2CJPF) was created by Tom03 on 07/31/2010. It's a Small size geocache, with difficulty of 2.5, terrain of 2. It's located in Niedersachsen, Germany. Von Nachwuchs-Cachern für Nachwuchs-Cacher. Kleiner Multi über 7 Stationen. Länge ca. 1 km + 1km für den Rückweg. Die ZS befinden sich alle am KLEINEN BACH innerhalb des Kinderwaldes." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates, which will then lead you to one or more locations. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 2.5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/3.png" property="og:image" /><meta name="og:title" content="Kinderwald KiC" property="og:title" /><meta name="description" content="Kinderwald KiC (GC2CJPF) was created by Tom03 on 07/31/2010. It's a Small size geocache, with difficulty of 2.5, terrain of 2. It's located in Niedersachsen, Germany. Von Nachwuchs-Cachern für Nachwuchs-Cacher. Kleiner Multi über 7 Stationen. Länge ca. 1 km + 1km für den Rückweg. Die ZS befinden sich alle am KLEINEN BACH innerhalb des Kinderwaldes." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
<body background="http://www.blafoo.de/images/Kinderwald.jpg" class="CacheDetailsPage">
- <form name="aspnetForm" method="post" action="cache_details.aspx?wp=GC2CJPF&Submit6=Go" id="aspnetForm">
+ <form name="aspnetForm" method="post" action="cache_details.aspx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE4MTE0MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFlQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZndwJTNkR0MyQ0pQRiUyNlN1Ym1pdDYlM2RHb2RkAgsPFgIfAQUQNDE5IENhY2hlcyBGb3VuZGQCEQ8WAh8DZxYCAg0PDxYCHwUFQH4vdHJhY2svc2VhcmNo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YXNweD9ndWlkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZsYz0xMGRkAhMPDxYEHwUFdGh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTIuMjE2MjUsOS43MTQ0ODMgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTUyLjQyNTA2Nyw5LjY2NDIoS2luZGVyd2FsZCtLaUMpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8NDB8OAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnNzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8PBSBzMnBob25lKCdHQzJDSlBGJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZ2QCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRGVjcnlwdGRkAhkPFgIfAQUbUW5mIFN2YW55IHZmZyBoYWdyZSBGZ3J2YXJhZAIcDxYCHwNoZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYEAgUPDxYCHwNnZGQCCQ8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2ZGQCJw8PFgIfA2dkFgJmDxYCHwYCARYCAgEPZBYCZg8VAgDjATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTNlZWVhMDU3LWY2MDUtNDg1YS1hNDVhLWY1ZmVhMTQyNjYxMiI+S2luZGVyY2FjaGVzIChLaUMpPC9hPjxiciAvPiBieSA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9MDU2NGE5NDAtODMxMS00MGVlLThlNzYtN2U5MWIyY2Y2Mjg0Ij5ibGFmb288L2E+ZAIpD2QWEAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JkRTPTFkZAIHDw8WBB4GUkRTLklECyl2R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ4MTIuMTgwNzUsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="bnVsbAEeB1JXUFQuSUQoKwQHMTgxMTQwOWQWAmYPFgIfBgIEFgpmD2QWAmYPDxYCHwNoZGQCAQ9kFg5mDxUCAAVmYWxzZWQCAg8VB3Q8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fbm9jb29yZHMuanBnIiBhbHQ9IkhpZGUgQ29vcmRpbmF0ZXMiIHRpdGxlPSJIaWRlIENvb3JkaW5hdGVzIiAvPoYBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vZmxhZy5qcGciIGFsdD0iRmluYWwgTG9jYXRpb24iIHRpdGxlPSJGaW5hbCBMb2NhdGlvbiIgLz4CRk4CRk4FRklOQUywATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9MzBmMWIzN2MtZDM5NS00YzdhLTk0ZTItMGM2NDlkNWYyMzFiJlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5HQzJDSlBGIEZpbmFsPC9hPiAoRmluYWwgTG9jYXRpb24pAz8/P2QCBQ8PFgIeB1Rvb2xUaXAFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh4NQWx0ZXJuYXRlVGV4dAUGUmVtb3ZlFgIfDwVAcmV0dXJuIGNvbmZpcm0oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyB3YXlwb2ludD8nKWQCDA8VAQBkAg4PFQEAZAICD2QWDmYPFQIOQWx0ZXJuYXRpbmdSb3cFZmFsc2VkAgIPFQdiPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz6BATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3BrZy5qcGciIGFsdD0iUGFya2luZyBBcmVhIiB0aXRsZT0iUGFya2luZyBBcmVhIiAvPgJQSwJQSwZQQVJLTkewATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9OThjYjEzODctNDljZS00Zjk0LTliMDUtNWNiMDc5ZDMzMmIxJlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5HQzJDSlBGIFBhcmtpbmc8L2E+IChQYXJraW5nIEFyZWEpHE4gNTLCsCAyNS4zODQgRSAwMDnCsCAzOS4wMjNkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUBN0tlaW4gIm9mZml6aWVsbGVyIiBQYXJrcGxhdHosIFBhcmtlbiB0cm90emRlbSBtw7ZnbGljaC5kAgMPZBYOZg8VAgAFZmFsc2VkAgIPFQdiPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iL2ltYWdlcy9pY29ucy9pY29uX3ZpZXdhYmxlLmpwZyIgYWx0PSJWaXNpYmxlIiB0aXRsZT0iVmlzaWJsZSIgLz6QATxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtL3B1enpsZS5qcGciIGFsdD0iUXVlc3Rpb24gdG8gQW5zd2VyIiB0aXRsZT0iUXVlc3Rpb24gdG8gQW5zd2VyIiAvPgJTVAJTVAVTVEFSVLQBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD0wNDExM2JhZC02NGNhLTQ5OWEtOTg0OC1iNTkzN2UxM2RhMWImUmVmSUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JlJlZkRTPTEiPkdDMkNKUEYgU3RhcnQ8L2E+IChRdWVzdGlvbiB0byBBbnN3ZXIpHE4gNTLCsCAyNS41MDQgRSAwMDnCsCAzOS44NTJkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAQBkAgQPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPowBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vd2F5cG9pbnQuanBnIiBhbHQ9IlJlZmVyZW5jZSBQb2ludCIgdGl0bGU9IlJlZmVyZW5jZSBQb2ludCIgLz4CV08CV08GU0NFTklDsgE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPWIyOGM1ODc5LTMxODEtNDUxMC05NGZhLTZlYzVlMzBmZDA1NiZSZWZJRD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmUmVmRFM9MSI+QXVzc2ljaHRzcHVua3Q8L2E+IChSZWZlcmVuY2UgUG9pbnQpHE4gNTLCsCAyNS40ODggRSAwMDnCsCAzOS40MzJkAgUPDxYCHxMFBEVkaXRkZAIHDw8WAh8TBQNNYXBkZAILDw8WAh8UBQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBDkFsdGVybmF0aW5nUm93ZAIODxUBT0VoZW1hbGlnZSBGaW5hbGxvY2F0aW9uIHdvIGVzIGdlYnJhbm50IGhhdC4gR2xlaWNoemVpdGlnIG5ldHRlciBBdXNzaWNodHNwdW5rdC5kAgkPDxYCHwNnZBYCAgEPDxYEHwUFKi9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0Mh8DZ2RkAg8PFgIfAQV/Li4ub3RoZXIgY2FjaGVzIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91PVRvbTAzIj5oaWRkZW48L2E+IG9yIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91bD1Ub20wMyI+Zm91bmQ8L2E+IGJ5IHRoaXMgdXNlcmQCEQ9kFgYCAQ8WAh8BBf8BLi4ubmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD1hNWY2ZDBhZC1kMmYyLTQwMTEtOGMxNC05NDBhOWViZjNjNzQmbGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyMDAiPmNhY2hlcyBvZiB0aGlzIHR5cGU8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9YTVmNmQwYWQtZDJmMi00MDExLThjMTQtOTQwYTllYmYzYzc0JmxhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwJmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIDDxYCHwEFpgEuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIwMCI+Y2FjaGVzPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwJmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIFDxYCHwEFfi4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTUyLjQyNTA2NyZsb249OS42NjQyMDAiPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw8WAh8DaGQCFw9kFgICAQ8PFgQfAQWuBzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjQyNTA3JmxuZz05LjY2NDIiIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis1MiVjMiViMCsyNS41MDQrRSswMDklYzIlYjArMzkuODUyKyhHQzJDSlBGKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNo" />
-<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="dHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT01Mi40MjUwNyZsb25naXR1ZGU9OS42NjQyJnpvb209MTAiIHRhcmdldD0iX2JsYW5rIj5NYXBRdWVzdDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy55YWhvby5jb20vI2xhdD01Mi40MjUwNyZsb249OS42NjQyJnpvb209MTYmcT01Mi40MjUwNyw5LjY2NDImY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC41Mi40MjUwN185LjY2NDJfR0MyQ0pQRiIgdGFyZ2V0PSJfYmxhbmsiPkJpbmcgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5jeWNsZW1hcC5vcmcvP3pvb209MTImbGF0PTUyLjQyNTA3Jmxvbj05LjY2NDIiIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD01Mi40MjUwNyZtbG9uPTkuNjY0MiZ6b29tPTEyIiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcDwvYT48L2xpPh8DZ2RkAhsPZBYGAgEPFgIfAQURMTUyIExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzZkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2HwEFI1ZpZXcgdGhlIEltYWdlIEdhbGxlcnkgb2YgMTcgaW1hZ2VzZGQCKg8WAh8BBQVmYWxzZWQCKw8WAh8BBUlsYXQ9NTIuNDI1MDY3OyBsbmc9OS42NjQyOyBndWlkPSc3MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYnOw0KZAIVDxYCHwNoFgICAQ8PZBYCHwsFDHdpZHRoOjEyMHB4O2QCFw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHwYCEhYkZg9kFgICAQ8PFggfBwUFZW4tVVMfCAUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHwloZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCCA9kFgICAQ8PFggfBwUFaXQtSVQfCAUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8JaGRkAgkPZBYCAgEPDxYIHwcFBWVsLUdSHwgFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8JaGRkAgoPZBYCAgEPDxYIHwcFBWx2LUxWHwgFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwloZGQCCw9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCDA9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCDQ9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAIOD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDw9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIQD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAhEPZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAJLDxYCHwEFECZjb3B5OyAyMDAwLTIwMTNkAgMPFgIfAQUrU2VydmVyOiBXRUIxNDsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMzAzMDUuMWRkHOsOttTiD2fNWBEugN9aNZb+n/s=" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE4MTE0MDkWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFpQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZmd1aWQlM2Q3MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzZkZAILDxYCHwEFEDQyNiBDYWNoZXMgRm91bmRkAhEPFgIfA2cWAgINDw8WAh8F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ZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmbGM9MTBkZAITDw8WBB8FBXRodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjIxNjI1LDkuNzE0NDgzIChIb21lIExvY2F0aW9uKSZkYWRkcj01Mi40MjUwNjcsOS42NjQyKEtpbmRlcndhbGQrS2lDKR4GVGFyZ2V0BQZfYmxhbmtkZAIbD2QWCAIBDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAw8PFgQfDQwfDgIEZGQCBQ8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NicpO3JldHVybiBmYWxzZTtkAgcPDxYCHwNnFgIfDwUgczJwaG9uZSgnR0MyQ0pQRicpO3JldHVybiBmYWxzZTtkAhQPFgIfA2dkAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFB0RlY3J5cHRkZAIZDxYCHwEFG1FuZiBTdmFueSB2ZmcgaGFncmUgRmdydmFyYWQCHA8WAh8DaGQCHg8WAh8DZ2QCHw8WAh8DaGQCIg9kFgICAw8WAh4JaW5uZXJodG1sBRNBZHZlcnRpc2luZyB3aXRoIFVzZAImD2QWBAIFDw8WAh8DZ2RkAgkPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NmRkAicPDxYCHwNnZBYCZg8WAh8GAgEWAgIBD2QWAmYPFQIA4wE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD0zZWVlYTA1Ny1mNjA1LTQ4NWEtYTQ1YS1mNWZlYTE0MjY2MTIiPktpbmRlcmNhY2hlcyAoS2lDKTwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTA1NjRhOTQwLTgzMTEtNDBlZS04ZTc2LTdlOTFiMmNmNjI4NCI+YmxhZm9vPC9hPmQCKA8PFgIfA2dkFgJmDxYCHwYCARYCAgEPZBYCZg8VAgDdATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTE0NTUxNzA4LTBjM2MtNGY5NS05MzQyLTFiYjMxMTllNmVmZSI+Y2dlbyBtb2NrczwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTRk" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="NDE2NDYxLWQxYTctNGNjNS04ZWU3LTMzNmJiOTEwZmViOCI+Sm9TYU1hSmE8L2E+ZAIpD2QWEAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JkRTPTFkZAIHDw8WBB4GUkRTLklECyl1R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ4MjYuMjAzOCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcxODExNDA5ZBYCZg8WAh8GAgQWCmYPZBYCZg8PFgIfA2hkZAIBD2QWDmYPFQIABWZhbHNlZAICDxUHdDxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl9ub2Nvb3Jkcy5qcGciIGFsdD0iSGlkZSBDb29yZGluYXRlcyIgdGl0bGU9IkhpZGUgQ29vcmRpbmF0ZXMiIC8+hgE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS9mbGFnLmpwZyIgYWx0PSJGaW5hbCBMb2NhdGlvbiIgdGl0bGU9IkZpbmFsIExvY2F0aW9uIiAvPgJGTgJGTgVGSU5BTLABPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD0zMGYxYjM3Yy1kMzk1LTRjN2EtOTRlMi0wYzY0OWQ1ZjIzMWImUmVmSUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JlJlZkRTPTEiPkdDMkNKUEYgRmluYWw8L2E+IChGaW5hbCBMb2NhdGlvbikDPz8/ZAIFDw8WAh4HVG9vbFRpcAUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHg1BbHRlcm5hdGVUZXh0BQZSZW1vdmUWAh8PBUByZXR1cm4gY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIHdheXBvaW50PycpZAIMDxUBAGQCDg8VAQBkAgIPZBYOZg8VAg5BbHRlcm5hdGluZ1JvdwVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPoEBPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcGtnLmpwZyIgYWx0PSJQYXJraW5nIEFyZWEiIHRpdGxlPSJQYXJraW5nIEFyZWEiIC8+AlBLAlBLBlBBUktOR7ABPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9zZWVrL3dwdC5hc3B4P1dJRD05OGNiMTM4Ny00OWNlLTRmOTQtOWIwNS01Y2IwNzlkMzMyYjEmUmVmSUQ9NzMyNDZhNWEtZWJiOS00ZDRmLThkYjktYTk1MTAzNmY1Mzc2JlJlZkRTPTEiPkdDMkNKUEYgUGFya2luZzwvYT4gKFBhcmtpbmcgQXJlYSkcTiA1MsKwIDI1LjM4NCBFIDAwOcKwIDM5LjAyM2QCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEOQWx0ZXJuYXRpbmdSb3dkAg4PFQE3S2VpbiAib2ZmaXppZWxsZXIiIFBhcmtwbGF0eiwgUGFya2VuIHRyb3R6ZGVtIG3DtmdsaWNoLmQCAw9kFg5mDxUCAAVmYWxzZWQCAg8VB2I8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSIvaW1hZ2VzL2ljb25zL2ljb25fdmlld2FibGUuanBnIiBhbHQ9IlZpc2libGUiIHRpdGxlPSJWaXNpYmxlIiAvPpABPGltZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNyYz0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vcHV6emxlLmpwZyIgYWx0PSJRdWVzdGlvbiB0byBBbnN3ZXIiIHRpdGxlPSJRdWVzdGlvbiB0byBBbnN3ZXIiIC8+AlNUAlNUBVNUQVJUtAE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3NlZWsvd3B0LmFzcHg/V0lEPTA0MTEzYmFkLTY0Y2EtNDk5YS05ODQ4LWI1OTM3ZTEzZGExYiZSZWZJRD03MzI0NmE1YS1lYmI5LTRkNGYtOGRiOS1hOTUxMDM2ZjUzNzYmUmVmRFM9MSI+R0MyQ0pQRiBTdGFydDwvYT4gKFF1ZXN0aW9uIHRvIEFuc3dlcikcTiA1MsKwIDI1LjUwNCBFIDAwOcKwIDM5Ljg1MmQCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEAZAIODxUBAGQCBA9kFg5mDxUCDkFsdGVybmF0aW5nUm93BWZhbHNlZAICDxUHYjxpbWcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzcmM9Ii9pbWFnZXMvaWNvbnMvaWNvbl92aWV3YWJsZS5qcGciIGFsdD0iVmlzaWJsZSIgdGl0bGU9IlZpc2libGUiIC8+jAE8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3JjPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2ltYWdlcy93cHR0eXBlcy9zbS93YXlwb2ludC5qcGciIGFsdD0iUmVmZXJlbmNlIFBvaW50IiB0aXRsZT0iUmVmZXJlbmNlIFBvaW50IiAvPgJXTwJXTwZTQ0VOSUOyATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vc2Vlay93cHQuYXNweD9XSUQ9YjI4YzU4NzktMzE4MS00NTEwLTk0ZmEtNmVjNWUzMGZkMDU2JlJlZklEPTczMjQ2YTVhLWViYjktNGQ0Zi04ZGI5LWE5NTEwMzZmNTM3NiZSZWZEUz0xIj5BdXNzaWNodHNwdW5rdDwvYT4gKFJlZmVyZW5jZSBQb2ludCkcTiA1MsKwIDI1LjQ4OCBFIDAwOcKwIDM5LjQzMmQCBQ8PFgIfEwUERWRpdGRkAgcPDxYCHxMFA01hcGRkAgsPDxYCHxQFBlJlbW92ZRYCHw8FQHJldHVybiBjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2F5cG9pbnQ/JylkAgwPFQEOQWx0ZXJuYXRpbmdSb3dkAg4PFQFPRWhlbWFsaWdlIEZpbmFsbG9jYXRpb24gd28gZXMgZ2VicmFubnQgaGF0LiBHbGVpY2h6ZWl0aWcgbmV0dGVyIEF1c3NpY2h0c3B1bmt0LmQCCQ8PFgIfA2dkFgICAQ8PFgQfBQUqL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyHwNnZGQCDw8WAh8BBX8uLi5vdGhlciBjYWNoZXMgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3U9VG9tMDMiPmhpZGRlbjwvYT4gb3IgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3VsPVRvbTAzIj5mb3VuZDwvYT4gYnkgdGhpcyB1c2VyZAIRD2QWBgIBDxYCHwEF/wEuLi5uZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PWE1ZjZkMGFkLWQyZjItNDAxMS04YzE0LTk0MGE5ZWJmM2M3NCZsYXQ9NTIuNDI1MDY3JmxuZz05LjY2NDIwMCI+Y2FjaGVzIG9mIHRoaXMgdHlwZTwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD1hNWY2ZDBhZC1kMmYyLTQwMTEtOGMxNC05NDBhOWViZjNjNzQmbGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyMDAmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgMPFgIfAQWmAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi40MjUwNjcmbG5nPTkuNjY0MjAwIj5jYWNoZXM8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUyLjQyNTA2NyZsbmc9OS42NjQyMDAmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgUPFgIfAQV+Li4uYWxsIG5lYXJieSA8YSBocmVmPSJodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NTIuNDI1MDY3Jmxvbj05LjY2NDIwMCI+d2F5bWFya3Mgb24gV2F5bWFya2luZy5jb208L2E+ZAITDxYCHwNoZAIXD2QWAgIBDw8WBB8BBa4HPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5j" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="b20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuNDI1MDcmbG5nPTkuNjY0MiIgdGFyZ2V0PSJfYmxhbmsiPkdlb2NhY2hpbmcuY29tIE1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT1OKzUyJWMyJWIwKzI1LjUwNCtFKzAwOSVjMiViMCszOS44NTIrKEdDMkNKUEYpKyIgdGFyZ2V0PSJfYmxhbmsiPkdvb2dsZSBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cubWFwcXVlc3QuY29tL21hcHMvbWFwLmFkcD9zZWFyY2h0eXBlPWFkZHJlc3MmZm9ybXR5cGU9bGF0bG9uZyZsYXRsb25ndHlwZT1kZWNpbWFsJmxhdGl0dWRlPTUyLjQyNTA3JmxvbmdpdHVkZT05LjY2NDImem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTUyLjQyNTA3Jmxvbj05LjY2NDImem9vbT0xNiZxPTUyLjQyNTA3LDkuNjY0MiZjb25mPTEmc3RhcnQ9MSZtdnQ9bSZ0cmY9MCIgdGFyZ2V0PSJfYmxhbmsiPllhaG9vIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5iaW5nLmNvbS9tYXBzL2RlZmF1bHQuYXNweD92PTImbHZsPTE0JnNwPXBvaW50LjUyLjQyNTA3XzkuNjY0Ml9HQzJDSlBGIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NTIuNDI1MDcmbG9uPTkuNjY0MiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5DeWNsZU1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUyLjQyNTA3Jm1sb249OS42NjQyJnpvb209MTIiIHRhcmdldD0iX2JsYW5rIj5PcGVuU3RyZWV0TWFwPC9h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" />
</div>
<script type="text/javascript">
@@ -105,13 +105,13 @@ function __doPostBack(eventTarget, eventArgument) { </script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981131264989663" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981149668642275" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&t=ffffffff940d030f" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&t=ffffffff940d030f" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=Uh_lOa1hKj-GEwMC8mK4Mv8GIgfYnVMts1uBtWWtSfWP9ra-LKOpaRuqVLvjYmMdLsk7f65Q6jxy1BUjZtmsPSNvG8-NJhXvUvOP2jTpjiJF191yJjbg5eBWmdsFWFW4ajIe-GbXr7vIi2DeH9CErdgdlkf-f2cp7FtGEJ7sl3tidpi7pPZumnHP0HO2yu_GIN2h8uN1Q6-df-zQBu0zb4hnxqo1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=838lRAslTnp-47XptApNagh_Uah2p52BYL-s1NNGNamd8V2w2Ky2y-qvXkjulQaOR_VLt0fkOoUQz2vo2Z8CX871dE4Ct-a7MylewJqtaQNwQglkQO1n6oSTN35sCFRQ7BXBPVoWxpehRPLX8sbeEAqBEHdYAcMHFjMXNlT9nze9HLuJQ15ocJVBJMlooE7lKvmObAIwFsFO9oMNMln41GfoOdjcCiPLIniUHBJavtIsfpZoHZ8IaaJ2mcqJncN2qtyp5jmDkuoZuDm5GuIm88GqPz0_pSJHgC9qf9O6DNr-mOaKWm2PxOwscK8hcP-TM7owfHLYw9rZkopbDljgiCl34QjGBJyaYBGV1VpLdEgR3hGToB-rM6c63T3SLN-7u0qtmvFBds8v5sZUeJLIdtTf9sQCJicp_lnWeZ0bB6SFFMA4I59lZp-wcxcp-MAvNwOsFbo_mUFDpDg-eM316f2OKs0FhopEcLk7jBG2aYLeOA3rVLZuidOCk3cFFBdvo8iogolMkemG1iSC_RSxXWQPLfa0ixp0WTyZPZYv0EQcHB2yShSl6FJxyxoifmdjO489-f3_nXuTeAo4L9mde7FqtE6t3Dj9oqxSDMJXEzU5OAocOzmor7yTRmzx40kgTPetF3I2yMBcbIPFCIfOHd8ua3EkwijkqG2CGEXLBCNr4vyi0" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=smO_g60huRlsbWz1fegS3GqJJP2TQaJZmOtbSzx_ALaWTu6YoRBQ7xbqknFxBjFgvfsh3d6K5K6x8elfekXkRnpMU4madSPoFfy1H3aNWawyjAdnnGc7IwJgxQdqOp6nLjRAnkT3LlqGl7j3RWuqZtOS_Q94Xt3GBIW4mwIlRJvVCUWxrvFldhQIjOAdAjg-pcbpuOo8TMzMZDtu62H4Agf744U1" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=E99XiNjK0biBGiFZgXwF93XUW_CgJvVjhSayq2p6PbMm0TLse1hdoGrLcso76MS5MRG0ieHaF_fOGnt9IIhDkPE62K0tTFHe6Meyvpu3682JqeImfgX_9iCDbXk31L800c6hYmZMNmw4ERVWvEuxaDZfMFTZrsfqHIXbRY_Rnw4Il4nVwePKahHfkDdjhaTVCSajUB26aD6_DaVQJwFhWCDPm68fZgUyRcn-6pCMOSdkHAgEh0RLzMzEXCbdBbMEdcuyaQ-GHljHxRQtY0s5-jZ8tPf73UgsrS1RX-Fzu_k-_31s-mUe0XBQD1hF5wEAQKtkQYTQL2XHikzB8tCTLxQthW5DiERyv0x5Fhpy1hf_tah8NbFIiZCM54BV0gBRUAaicWNZhs97gmXgYrwDX2FUWnGKFFcqSh1WWOw1rXjW7a4yv7bSgWqDZfA3ulJEHGeuBUsjY0BA0AtefLkkXvQRBLYoJKzCEjv51IDClsbakiRO4dePPsh6mL_E4Jq0hseSMIR97Sylr63OAy7zN0Eq4pxeJKN72I5YSyscfgT5Mt6AWJgOp5ilEPFlahapXOp1gt74_Ya_G_Na63aXBcg19iM1ba3lB2Zgj8As2G6BKBuk3O4vjKB2vmffoIRxiJwiw18E1KOPtoQz0SIuYeOMBDLvJ_BplG2HbvjWIApueXCB0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -152,11 +152,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet </p>
<p class="SignedInText">
<strong>
- Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC2CJPF%26Submit6%3dGo">Sign Out</a>)<br />
+ Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3d73246a5a-ebb9-4d4f-8db9-a951036f5376">Sign Out</a>)<br />
<span id="ctl00_litPMLevel">Premium Member</span>
<strong style="display: block">
- 419 Caches Found</strong>
+ 426 Caches Found</strong>
</p>
</div>
@@ -714,14 +714,14 @@ P.S. An warmen Tagen Badesachen und Handtuch mitnehmen.</span> <script type='text/javascript'>
googletag.cmd.push(function() {{
-googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_48899bdd-4eec-42e1-a899-39615fd9ac03').addService(googletag.pubads());
+googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_d8d58515-576c-41ab-8548-5d87206b758f').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
}});
</script>
-<div id='div_48899bdd-4eec-42e1-a899-39615fd9ac03'>
+<div id='div_d8d58515-576c-41ab-8548-5d87206b758f'>
<script type='text/javascript'>
-googletag.cmd.push(function() { googletag.display('div_48899bdd-4eec-42e1-a899-39615fd9ac03'); });
+googletag.cmd.push(function() { googletag.display('div_d8d58515-576c-41ab-8548-5d87206b758f'); });
</script>
</div>
@@ -792,6 +792,31 @@ googletag.cmd.push(function() { googletag.display('div_48899bdd-4eec-42e1-a899-3 +<div class="CacheDetailNavigationWidget">
+
+ <h3 class="WidgetHeader">My Bookmark Lists</h3>
+ <div class="WidgetBody">
+
+
+ <ul class="BookmarkList">
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14551708-0c3c-4f95-9342-1bb3119e6efe">cgeo mocks</a><br /> by <a href="http://www.geocaching.com/profile/?guid=4d416461-d1a7-4cc5-8ee7-336bb910feb8">JoSaMaJa</a>
+ </li>
+
+ </ul>
+
+ <p class="NoBottomSpacing">
+
+ </p>
+
+ </div>
+
+
+</div>
+
+
+
</div>
@@ -1186,13 +1211,13 @@ googletag.cmd.push(function() { googletag.display('div_48899bdd-4eec-42e1-a899-3 <div class="InformationWidget Clear">
<h3>
- 152 Logged Visits</h3>
+ 153 Logged Visits</h3>
<div class="EncryptDecrypt">
<a href="#" class="decrypt-link">
Decrypt
</a>
</div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 132 <img src="/images/logtypes/3.png" alt="Didn't find it" title="Didn't find it" /> 3 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 7 <img src="/images/logtypes/22.png" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 2 <img src="/images/logtypes/23.png" alt="Enable Listing" title="Enable Listing" /> 2 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1 <img src="/images/logtypes/45.png" alt="Needs Maintenance" title="Needs Maintenance" /> 2 <img src="/images/logtypes/46.png" alt="Owner Maintenance" title="Owner Maintenance" /> 3 </p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 133 <img src="/images/logtypes/3.png" alt="Didn't find it" title="Didn't find it" /> 3 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 7 <img src="/images/logtypes/22.png" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 2 <img src="/images/logtypes/23.png" alt="Enable Listing" title="Enable Listing" /> 2 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1 <img src="/images/logtypes/45.png" alt="Needs Maintenance" title="Needs Maintenance" /> 2 <img src="/images/logtypes/46.png" alt="Owner Maintenance" title="Owner Maintenance" /> 3 </p></span>
<p class="HalfLeft">
<a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="gallery.aspx?guid=73246a5a-ebb9-4d4f-8db9-a951036f5376">View the Image Gallery of 17 images</a>
</p>
@@ -1223,7 +1248,7 @@ googletag.cmd.push(function() { googletag.display('div_48899bdd-4eec-42e1-a899-3 </div>
<p>
<small>
- Current Time: <time datetime="2013-03-08T11:18:57Z">03/08/2013 11:18:57 (UTC-08:00) Pacific Time (US & Canada) (19:18 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-03-08T14:48:48Z">2013-03-08T14:48:48Z</time> on 03/08/2013 06:48:48 (UTC-08:00) Pacific Time (US & Canada) (14:48 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-03-27T04:36:03Z">03/27/2013 04:36:03 Pacific Daylight Time (11:36 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-03-26T14:44:26Z">2013-03-26T14:44:26Z</time> on 03/26/2013 07:44:26 Pacific Daylight Time (14:44 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
<div id="topScroll" class="TopScroll" style="display:none;">
@@ -2165,9 +2190,9 @@ cmapAdditionalWaypoints = [{"lat":52.42307,"lng":9.65038,"type":217,"name":"GC2C mapLatLng = {"lat":52.42507,"lng":9.6642,"type":3,"name":"Kinderwald KiC"};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.425067, 009.664200"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 25' 30.241\" E 009° 39' 51.120\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 545164 N 5808524"}];
userInfo = {ID: 4793174};
-userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4I6RAV2GHJDSEJCWVMDZN4MTGMAOEZUMRE4O275C47DFBAUAEYEXHIHL3BR5A4DYOXE55ALQR7XO4EA';
+userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4I6RAV2GHJDSEJCWVMDZN4MTGMAOEZUMRE4O275DCLT7PPQSTBRFVU4Z7CWFZEO4SX7NBZEL7LCNLAQ';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":297431085,"CacheID":1811409,"LogGuid":"2c80abd0-d7de-4eeb-aba2-5e3d2c58ecb0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auch wenn es zum Baden eindeutig noch zu kalt war, habe ich den Cache gut gefunden","Created":"2013-03-08","Visited":"2013-03-08","UserName":"loenni","MembershipLevel":3,"AccountID":4860261,"AccountGuid":"2df93c3f-982d-43fe-8b91-165bf2e3abf5","Email":"","AvatarImage":"","GeocacheFindCount":1943,"GeocacheHideCount":1,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297134777,"CacheID":1811409,"LogGuid":"0c6319f6-591d-42c6-b397-88e67447fe72","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf \"after-work-tour\" diesen Multi als NC absolviert. Alle Stationen konnten im Team mit Axel-Foley gut gefunden werden. Vielen Dank!","Created":"2013-03-06","Visited":"2013-03-05","UserName":"Nilleboy","MembershipLevel":3,"AccountID":1221755,"AccountGuid":"d038670b-5689-420e-950a-4d40967c9e64","Email":"","AvatarImage":"702eebc3-525e-46ae-ba95-a89b69b325fb.jpg","GeocacheFindCount":4068,"GeocacheHideCount":9,"ChallengesCompleted":47,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297117378,"CacheID":1811409,"LogGuid":"63b794b8-e4bd-410e-b1d1-5a7a46357f62","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf kleiner Cacherunde am Abend im Team mit Nilleboy auch diesen Multi durchlaufen. <br />TFTC","Created":"2013-03-05","Visited":"2013-03-05","UserName":"Axel-Foley","MembershipLevel":3,"AccountID":1836934,"AccountGuid":"342fa7de-405c-4d1c-b104-79c8d59ffb46","Email":"","AvatarImage":"83f5a949-9f61-4ac8-bc4f-f93630c0135c.jpg","GeocacheFindCount":5383,"GeocacheHideCount":35,"ChallengesCompleted":19,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":296501698,"CacheID":1811409,"LogGuid":"1e66c165-d70d-4783-ab65-c9db73a24882","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"#2283: Das war eine schöne Runde. Vom angegebenen Parkplatz aus sind wir die Stationen in umgekehrter Reihenfolge abgelaufen. So konnten wir auf dem Rückweg zum Cachemobil die anderen Stationen des Kinderwaldes erkunden. Für Cacher mit Kindern ist dieset Cache ein Muss.<br />Dafür gibt's einen FP.<br />DFDC <b><font color=\"blue\">mue-th</font></b><font color=\"blue\"></font>","Created":"2013-03-03","Visited":"2013-03-03","UserName":"mue-th","MembershipLevel":3,"AccountID":2601691,"AccountGuid":"473ce8cb-c95a-445c-805f-58e3c5442829","Email":"","AvatarImage":"a1a1d0fc-d54d-46f5-b2de-1b6149b7c234.jpg","GeocacheFindCount":2293,"GeocacheHideCount":9,"ChallengesCompleted":11,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":295044129,"CacheID":1811409,"LogGuid":"4cc3171f-1f0f-49c9-a0fd-30bb93a0945a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Es war sehr schon cach. <br />DFDC","Created":"2013-02-22","Visited":"2013-02-22","UserName":"nekolny","MembershipLevel":3,"AccountID":2018515,"AccountGuid":"ff452d34-4f18-4c2e-bce4-f11d2e65d056","Email":"","AvatarImage":"","GeocacheFindCount":163,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":294890152,"CacheID":1811409,"LogGuid":"3bb18a57-1986-4ee7-a4c4-83fbb6a9af01","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Bei der momentanen Kälte und den angedrohten Niederschlägen legten wir die heutige Runde ein wenig in den Wald. Das schützte ganz gut vor dem kalten Wind, und der zeitweise fallende Schneeregen wurde auch ein wenig gedämpft. So konnten wir diese schöne Runde ganz gut geniessen. Nur für die Badehose war heute definitiv nicht die geeignete Jahreszeit <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br />Schliesslich hatten wir alles beisammen, um die Dose gut finden zu können. <br />Vielen Dank für diese schöne Tour!","Created":"2013-02-20","Visited":"2013-01-27","UserName":"fafafafa","MembershipLevel":3,"AccountID":3536809,"AccountGuid":"8df66947-094c-42d9-a48c-cbb65732d7bd","Email":"","AvatarImage":"08b32861-980a-4e9d-ab58-8fe95549e1a5.jpg","GeocacheFindCount":1787,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":291273728,"CacheID":1811409,"LogGuid":"e0fade10-d897-4387-9f36-cc7da4a8c360","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Dieser Cache im Kinderwald hat uns sehr gut gefallen.Vielen Dank fürs Zeigen sagt Immergruen61","Created":"2013-01-28","Visited":"2013-01-27","UserName":"Immergruen61","MembershipLevel":1,"AccountID":3510044,"AccountGuid":"bb127b72-e5d0-408f-be49-550ed59e8270","Email":"","AvatarImage":"","GeocacheFindCount":392,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291118872,"CacheID":1811409,"LogGuid":"c667894e-9a88-41f4-8903-85d940199b0f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Vor einigen Jahren lernten wir den Kinderwald gemeinsam mit Immergrün61 bei einem Nachtcache (Nachts sind alle Katzen grau kennen) und schon damals nahmen wir uns vor, hier die Cachedogs mal bei Tag zu lüften.<br />Heute nahm das Projekt mit fafafafa und Immergrün61 Gestalt an und wir besuchten bei Tauwetter diesen Wald. Wir begannen im Osten mit dem Multi \"Schatzsuche\" und verlängerten die Tour nach Westen um diesen sehr schön gemachten Kindercache.<br />Auch für Erwachsene eine gute Tour, und die Cachedogs tobten hier um die Wette.<br />Vielen DAnk für diesen sympathischen Multi sagt GeoDachs<br />wir vergeben gerne einen FP","Created":"2013-01-27","Visited":"2013-01-27","UserName":"GeoDachs","MembershipLevel":3,"AccountID":1303409,"AccountGuid":"f6fe0c37-cdf4-485c-baa5-e5acf424ba5c","Email":"","AvatarImage":"eb2cc8ff-956a-49be-9066-fc4acfe712ed.jpg","GeocacheFindCount":1393,"GeocacheHideCount":28,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":290259183,"CacheID":1811409,"LogGuid":"bf90aca0-b7f1-4e66-b359-2f0133b6f085","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ein schöner Spaziergang verbunden mit gut lösbaren Rätseln lassen uns ein blaues Schleifchen hinterlegen. DfdC.","Created":"2013-01-20","Visited":"2013-01-20","UserName":"Hansabach","MembershipLevel":3,"AccountID":2609476,"AccountGuid":"3be322b5-d256-4976-b89a-5d9030743750","Email":"","AvatarImage":"92747f88-9167-452e-b3ba-84efe34d0a79.jpg","GeocacheFindCount":1733,"GeocacheHideCount":8,"ChallengesCompleted":13,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289228016,"CacheID":1811409,"LogGuid":"305bc4d9-e97d-4ddd-a297-f2560b428761","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit michaelhoeynck und den 35 anderen Familienmitgliedern, Freunden und den 97 Kindern einen schoenen Winterausflug gemacht und die Aufgaben schnell und stressfrei rausgekriegt und dann die Dose nach einer Weile Steine drehen gefunden.<br /><br />Gruss und dfdc,<br /><br />KdoDonut","Created":"2013-01-13","Visited":"2013-01-13","UserName":"kdodonut","MembershipLevel":3,"AccountID":2604456,"AccountGuid":"90476ff4-c809-469e-9199-481c4d0ffb68","Email":"","AvatarImage":"962a83ca-8fa8-45c7-826b-127c9393bdf9.jpg","GeocacheFindCount":1196,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289212768,"CacheID":1811409,"LogGuid":"a4c59e67-be4b-4d0d-94b8-6c961b0c1e06","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kalt und rutschig hier. Tftc!","Created":"2013-01-13","Visited":"2013-01-13","UserName":"MichaelHoeynck","MembershipLevel":1,"AccountID":6324182,"AccountGuid":"8c5d1f31-faa9-4e1b-a4a7-ad509c7dc249","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":289457694,"CacheID":1811409,"LogGuid":"076025fb-9392-4782-b79e-6e4f748152d5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Die Idee des Kinderwaldes finde ich klasse. Hier haben Kinder sicher ihren Spaß. Lotterliese410 und ich hatten ihn bei der Beantwortung der Fragen und beim Finden der Dose auf jeden Fall. Danke fürs Verstecken und fürs Zeigen dieses Waldes.","Created":"2013-01-13","Visited":"2013-01-12","UserName":"CeKa82","MembershipLevel":3,"AccountID":4940226,"AccountGuid":"3d26d0b9-e0e3-4c2f-b6d3-7197de753557","Email":"","AvatarImage":"cb08e168-e416-4c56-87cb-6b65b2d99577.jpg","GeocacheFindCount":1151,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289193118,"CacheID":1811409,"LogGuid":"2a6bc254-9ff1-4bd0-9238-825829a6b056","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Diesen Cache haben CeKa82 und ich mal in einen NC umgewandelt. Die Stationen waren alle schnell und gut gefunden und die Ort ist für Kinder sicher der Hit.<br />Hat mir wirklich gut gefallen die Runde.<br /><br />DfdC + FP","Created":"2013-01-13","Visited":"2013-01-12","UserName":"Lotterliese410","MembershipLevel":3,"AccountID":4585091,"AccountGuid":"01ca9a18-52a8-491d-872d-eff1a9491523","Email":"","AvatarImage":"7b1b273a-bb8d-48c0-8e11-afc48eaa43ce.jpg","GeocacheFindCount":1416,"GeocacheHideCount":0,"ChallengesCompleted":20,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":279154355,"CacheID":1811409,"LogGuid":"8b405a78-1653-4809-b6ee-38f905db205e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"mit olla66 gefunden.","Created":"2012-11-12","Visited":"2012-11-10","UserName":"hjansen67","MembershipLevel":1,"AccountID":5614762,"AccountGuid":"fcdfa621-d616-4496-8ff8-5a5cba25dd75","Email":"","AvatarImage":"","GeocacheFindCount":407,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":278602993,"CacheID":1811409,"LogGuid":"a793e95e-ae4f-4461-9a45-13529479bca6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Hallo,<br />das es das Kinderwäldchen geben soll, hatte ich schon oft gehört. Früher schon immer mal mit den Kids hier her gewollt. Aber wie es ist... nix geworden.<br />Aber nun mit dem Caching Hobby.... Alles Toll. Hier werden wir im Sommer mal herkommen.<br />Danke für die Runde.<br />Am Ziel angekommen trafen wir Zwei Mitstreiter. Nach kurzem Plausch dann gesucht..gefunden und zusammen geloggt.<br /><br />+ Schleifchen<br /><br /><br />DFDC sagen olla und kids<br /><br />This entry was edited by olla66 on Saturday, 10 November 2012 at 17:31:53 UTC.","Created":"2012-11-10","Visited":"2012-11-10","UserName":"olla66","MembershipLevel":3,"AccountID":5570656,"AccountGuid":"3f8fbb08-da63-42f3-bbf5-13839fed8be3","Email":"","AvatarImage":"de9bc470-63a4-4f2c-9519-d3fbc228f2e2.gif","GeocacheFindCount":585,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":278588958,"CacheID":1811409,"LogGuid":"c0614861-49a3-4741-b002-652c0958ef7f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auch den haben wir endlich gefunden, beim ersten Anlauf war es uns fuers Final zu dunkel und regnerisch . Schön gemacht. Danke","Created":"2012-11-10","Visited":"2012-11-10","UserName":"Der Dicke Hund aus Bangkok","MembershipLevel":3,"AccountID":1045929,"AccountGuid":"fc110a3f-f712-4d97-9ff6-4d12df9ac5a9","Email":"","AvatarImage":"","GeocacheFindCount":2410,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":277696513,"CacheID":1811409,"LogGuid":"b3b15708-9caa-4478-8ef7-3b22a6f5c50b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Diesen Cache für einen Geburtstagsnachmittag genutzt. Die Kinder waren sehr begeistert, vorallem auch von der tollen Gegend. Vielen Dank für das Zeigen dieser schönen Gegend. TFTC","Created":"2012-11-04","Visited":"2012-11-03","UserName":"DanSte","MembershipLevel":3,"AccountID":2752144,"AccountGuid":"579ea9ad-7907-4b50-8923-7ccebc0d8a5f","Email":"","AvatarImage":"","GeocacheFindCount":505,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":276634237,"CacheID":1811409,"LogGuid":"bc9c31d0-b30b-4d0d-b952-8e86976f0046","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf kleiner Urlaubstour gut gefunden. Danke für den tollen Cache!","Created":"2012-10-30","Visited":"2012-10-30","UserName":"pille-palle84","MembershipLevel":3,"AccountID":1918474,"AccountGuid":"e5655c6f-dd64-47d5-abc3-85d4ec2d00b6","Email":"","AvatarImage":"c4226573-600e-4e17-8935-460fd7fbe6a7.jpg","GeocacheFindCount":5212,"GeocacheHideCount":6,"ChallengesCompleted":102,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":275550323,"CacheID":1811409,"LogGuid":"55664edc-8ed4-4b72-9be4-02283d371068","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Trotz schlechten Wetter gefunden.<br />DFDC","Created":"2012-10-25","Visited":"2012-10-25","UserName":"Kuha25","MembershipLevel":1,"AccountID":5428575,"AccountGuid":"dfcedce1-8dff-405e-87fc-76833f28a372","Email":"","AvatarImage":"","GeocacheFindCount":9,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":275549638,"CacheID":1811409,"LogGuid":"2f46d961-6d88-4e3f-9540-54365f38310a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit kuha25 die Aufgaben schnell gelöst und die Finale nach einer kurzen Suche gefunden.<br />DFDC","Created":"2012-10-25","Visited":"2012-10-25","UserName":"KariMikael","MembershipLevel":3,"AccountID":2796742,"AccountGuid":"986c9e4b-6848-4713-a849-514b7b5f8b60","Email":"","AvatarImage":"","GeocacheFindCount":370,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":273990958,"CacheID":1811409,"LogGuid":"5539fc01-708e-4b34-8996-68d77ef4f6bd","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Heute, auf Besuch in Hannover, hat es mich und meinen Neffen bei der \"Schatzsuche\" in den Kinderwald verschlagen. Die Stationen waren alle gut zu finden und während der Kleine fleißig zählte, habe ich den Rechenpart übernommen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />. Die Dose war dann auch fix gefunden, nur leider war fast nix zum Tauschen darin <img src=\"/images/icons/icon_smile_sad.gif\" border=\"0\" align=\"middle\" />. Wir haben dann drei Wachskreiden reingelegt. <br />Von dem Wald waren wir beide begeistert, von den Tipis, dem Plumpsklo ..., nur die Seilfähre hat der Kleine arg vermisst, so dass ich ihm versprechen musste, im Sommer auf jeden Fall noch mal wiederzukommen <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />.<br />Danke für´s Zeigen dieses schönen Kinderortes und viele Grüße aus NRW","Created":"2012-10-19","Visited":"2012-10-16","UserName":"Jinglebee","MembershipLevel":3,"AccountID":5128650,"AccountGuid":"365fd29b-2fb9-48ee-9cdf-9e09a274c52b","Email":"","AvatarImage":"023553d6-9924-40b4-8432-62f47433c145.jpg","GeocacheFindCount":273,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":273976850,"CacheID":1811409,"LogGuid":"3b5adf41-dfc9-45c5-acec-8894625101fc","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Als Mitglied im kinderwald e.V. hatte ich diesen schon lange machen wollen. Aber irgendwas kam immer dazwischen. <br />Heute war ich Alleine auf dem Gelände und konnte in Ruhe suchen und loggen.<br />DfdC sagt Hawkhunter.","Created":"2012-10-18","Visited":"2012-10-16","UserName":"Hawkhunter","MembershipLevel":3,"AccountID":1286695,"AccountGuid":"a8c0f0e5-58db-4d16-885e-87446a79ffdc","Email":"","AvatarImage":"c7ddc254-5f33-40e4-b9f0-0abaf89c8697.jpg","GeocacheFindCount":1981,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269736455,"CacheID":1811409,"LogGuid":"8029670b-1e40-4828-947a-35b1bd384c08","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schöner, entspannender Multi, hat Spaß gemacht<br /> 30.09.12 18:34 Find #112<br />DfdC :)","Created":"2012-09-30","Visited":"2012-09-30","UserName":"Vincent-Shezar","MembershipLevel":3,"AccountID":5412756,"AccountGuid":"ff83a8a9-95a6-4a3a-bff8-37ef16522000","Email":"","AvatarImage":"","GeocacheFindCount":305,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269707464,"CacheID":1811409,"LogGuid":"5f3d71ed-a9f0-4c80-a18d-62853dc908b6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schöner Cache mit interessanter Umgebung :) dfdc","Created":"2012-09-30","Visited":"2012-09-30","UserName":"OdessaXxX","MembershipLevel":3,"AccountID":4149541,"AccountGuid":"f936faba-1a7e-4868-94ef-a009b8cc8a81","Email":"","AvatarImage":"afb33499-53bd-4ea0-8e88-6f6e9eec822e.jpg","GeocacheFindCount":306,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269588958,"CacheID":1811409,"LogGuid":"74492efd-6dd8-4a37-acb1-3ec4ec95501d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit Familie Spürnase einen schönen Nachmittag an diesem für Kinder herrlichen Ort verbracht. Wir Großen haben es uns gemütlich gemacht und die Mädels haben in der Zeit das Rätsel gelöst, die Großen anschließend die Koordinaten überprüft und die Jungs das Final gesucht.<br /><br /><b><font color=\"orange\">cebu </font></b><font color=\"orange\"></font> <b><font color=\"blue\">68 </font></b><font color=\"blue\"></font> <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br />- no owners - no caches - no fun !","Created":"2012-09-30","Visited":"2012-09-23","UserName":"Cebu68","MembershipLevel":3,"AccountID":3143046,"AccountGuid":"c55421d0-ebe4-4c3c-b792-2edc7740d2de","Email":"","AvatarImage":"845c5c2d-0c75-4320-9121-a239805920f1.jpg","GeocacheFindCount":419,"GeocacheHideCount":14,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 152, "rows": 152 } };
+initalLogs = {"status":"success", "data": [{"LogID":300774617,"CacheID":1811409,"LogGuid":"5ae17e51-fbfa-4049-b9b3-cb2dbcdc92a5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"sehr schöner Cache. Leider war die Fähre nicht da doch dank des Tipps haben wir das Ziel doch gefunden.","Created":"2013-03-26","Visited":"2013-03-26","UserName":"TeamLeo00","MembershipLevel":3,"AccountID":5502709,"AccountGuid":"372916b2-a76d-4393-a831-d398cba13b71","Email":"","AvatarImage":"b0c9e3af-1785-4430-bb88-c80134d02684.jpg","GeocacheFindCount":94,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297431085,"CacheID":1811409,"LogGuid":"2c80abd0-d7de-4eeb-aba2-5e3d2c58ecb0","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auch wenn es zum Baden eindeutig noch zu kalt war, habe ich den Cache gut gefunden","Created":"2013-03-08","Visited":"2013-03-08","UserName":"loenni","MembershipLevel":3,"AccountID":4860261,"AccountGuid":"2df93c3f-982d-43fe-8b91-165bf2e3abf5","Email":"","AvatarImage":"","GeocacheFindCount":1965,"GeocacheHideCount":1,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297134777,"CacheID":1811409,"LogGuid":"0c6319f6-591d-42c6-b397-88e67447fe72","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf \"after-work-tour\" diesen Multi als NC absolviert. Alle Stationen konnten im Team mit Axel-Foley gut gefunden werden. Vielen Dank!","Created":"2013-03-06","Visited":"2013-03-05","UserName":"Nilleboy","MembershipLevel":3,"AccountID":1221755,"AccountGuid":"d038670b-5689-420e-950a-4d40967c9e64","Email":"","AvatarImage":"702eebc3-525e-46ae-ba95-a89b69b325fb.jpg","GeocacheFindCount":4181,"GeocacheHideCount":9,"ChallengesCompleted":47,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297117378,"CacheID":1811409,"LogGuid":"63b794b8-e4bd-410e-b1d1-5a7a46357f62","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf kleiner Cacherunde am Abend im Team mit Nilleboy auch diesen Multi durchlaufen. <br />TFTC","Created":"2013-03-05","Visited":"2013-03-05","UserName":"Axel-Foley","MembershipLevel":3,"AccountID":1836934,"AccountGuid":"342fa7de-405c-4d1c-b104-79c8d59ffb46","Email":"","AvatarImage":"83f5a949-9f61-4ac8-bc4f-f93630c0135c.jpg","GeocacheFindCount":5512,"GeocacheHideCount":35,"ChallengesCompleted":19,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":296501698,"CacheID":1811409,"LogGuid":"1e66c165-d70d-4783-ab65-c9db73a24882","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"#2283: Das war eine schöne Runde. Vom angegebenen Parkplatz aus sind wir die Stationen in umgekehrter Reihenfolge abgelaufen. So konnten wir auf dem Rückweg zum Cachemobil die anderen Stationen des Kinderwaldes erkunden. Für Cacher mit Kindern ist dieset Cache ein Muss.<br />Dafür gibt's einen FP.<br />DFDC <b><font color=\"blue\">mue-th</font></b><font color=\"blue\"></font>","Created":"2013-03-03","Visited":"2013-03-03","UserName":"mue-th","MembershipLevel":3,"AccountID":2601691,"AccountGuid":"473ce8cb-c95a-445c-805f-58e3c5442829","Email":"","AvatarImage":"a1a1d0fc-d54d-46f5-b2de-1b6149b7c234.jpg","GeocacheFindCount":2348,"GeocacheHideCount":9,"ChallengesCompleted":11,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":295044129,"CacheID":1811409,"LogGuid":"4cc3171f-1f0f-49c9-a0fd-30bb93a0945a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Es war sehr schon cach. <br />DFDC","Created":"2013-02-22","Visited":"2013-02-22","UserName":"nekolny","MembershipLevel":3,"AccountID":2018515,"AccountGuid":"ff452d34-4f18-4c2e-bce4-f11d2e65d056","Email":"","AvatarImage":"","GeocacheFindCount":163,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":294890152,"CacheID":1811409,"LogGuid":"3bb18a57-1986-4ee7-a4c4-83fbb6a9af01","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Bei der momentanen Kälte und den angedrohten Niederschlägen legten wir die heutige Runde ein wenig in den Wald. Das schützte ganz gut vor dem kalten Wind, und der zeitweise fallende Schneeregen wurde auch ein wenig gedämpft. So konnten wir diese schöne Runde ganz gut geniessen. Nur für die Badehose war heute definitiv nicht die geeignete Jahreszeit <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" /><br />Schliesslich hatten wir alles beisammen, um die Dose gut finden zu können. <br />Vielen Dank für diese schöne Tour!","Created":"2013-02-20","Visited":"2013-01-27","UserName":"fafafafa","MembershipLevel":3,"AccountID":3536809,"AccountGuid":"8df66947-094c-42d9-a48c-cbb65732d7bd","Email":"","AvatarImage":"08b32861-980a-4e9d-ab58-8fe95549e1a5.jpg","GeocacheFindCount":1856,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":291273728,"CacheID":1811409,"LogGuid":"e0fade10-d897-4387-9f36-cc7da4a8c360","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Dieser Cache im Kinderwald hat uns sehr gut gefallen.Vielen Dank fürs Zeigen sagt Immergruen61","Created":"2013-01-28","Visited":"2013-01-27","UserName":"Immergruen61","MembershipLevel":1,"AccountID":3510044,"AccountGuid":"bb127b72-e5d0-408f-be49-550ed59e8270","Email":"","AvatarImage":"","GeocacheFindCount":394,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291118872,"CacheID":1811409,"LogGuid":"c667894e-9a88-41f4-8903-85d940199b0f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Vor einigen Jahren lernten wir den Kinderwald gemeinsam mit Immergrün61 bei einem Nachtcache (Nachts sind alle Katzen grau kennen) und schon damals nahmen wir uns vor, hier die Cachedogs mal bei Tag zu lüften.<br />Heute nahm das Projekt mit fafafafa und Immergrün61 Gestalt an und wir besuchten bei Tauwetter diesen Wald. Wir begannen im Osten mit dem Multi \"Schatzsuche\" und verlängerten die Tour nach Westen um diesen sehr schön gemachten Kindercache.<br />Auch für Erwachsene eine gute Tour, und die Cachedogs tobten hier um die Wette.<br />Vielen DAnk für diesen sympathischen Multi sagt GeoDachs<br />wir vergeben gerne einen FP","Created":"2013-01-27","Visited":"2013-01-27","UserName":"GeoDachs","MembershipLevel":3,"AccountID":1303409,"AccountGuid":"f6fe0c37-cdf4-485c-baa5-e5acf424ba5c","Email":"","AvatarImage":"eb2cc8ff-956a-49be-9066-fc4acfe712ed.jpg","GeocacheFindCount":1404,"GeocacheHideCount":28,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":290259183,"CacheID":1811409,"LogGuid":"bf90aca0-b7f1-4e66-b359-2f0133b6f085","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ein schöner Spaziergang verbunden mit gut lösbaren Rätseln lassen uns ein blaues Schleifchen hinterlegen. DfdC.","Created":"2013-01-20","Visited":"2013-01-20","UserName":"Hansabach","MembershipLevel":3,"AccountID":2609476,"AccountGuid":"3be322b5-d256-4976-b89a-5d9030743750","Email":"","AvatarImage":"92747f88-9167-452e-b3ba-84efe34d0a79.jpg","GeocacheFindCount":1759,"GeocacheHideCount":8,"ChallengesCompleted":13,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289228016,"CacheID":1811409,"LogGuid":"305bc4d9-e97d-4ddd-a297-f2560b428761","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zusammen mit michaelhoeynck und den 35 anderen Familienmitgliedern, Freunden und den 97 Kindern einen schoenen Winterausflug gemacht und die Aufgaben schnell und stressfrei rausgekriegt und dann die Dose nach einer Weile Steine drehen gefunden.<br /><br />Gruss und dfdc,<br /><br />KdoDonut","Created":"2013-01-13","Visited":"2013-01-13","UserName":"kdodonut","MembershipLevel":3,"AccountID":2604456,"AccountGuid":"90476ff4-c809-469e-9199-481c4d0ffb68","Email":"","AvatarImage":"962a83ca-8fa8-45c7-826b-127c9393bdf9.jpg","GeocacheFindCount":1203,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289212768,"CacheID":1811409,"LogGuid":"a4c59e67-be4b-4d0d-94b8-6c961b0c1e06","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kalt und rutschig hier. Tftc!","Created":"2013-01-13","Visited":"2013-01-13","UserName":"MichaelHoeynck","MembershipLevel":1,"AccountID":6324182,"AccountGuid":"8c5d1f31-faa9-4e1b-a4a7-ad509c7dc249","Email":"","AvatarImage":"","GeocacheFindCount":25,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":289457694,"CacheID":1811409,"LogGuid":"076025fb-9392-4782-b79e-6e4f748152d5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Die Idee des Kinderwaldes finde ich klasse. Hier haben Kinder sicher ihren Spaß. Lotterliese410 und ich hatten ihn bei der Beantwortung der Fragen und beim Finden der Dose auf jeden Fall. Danke fürs Verstecken und fürs Zeigen dieses Waldes.","Created":"2013-01-13","Visited":"2013-01-12","UserName":"CeKa82","MembershipLevel":3,"AccountID":4940226,"AccountGuid":"3d26d0b9-e0e3-4c2f-b6d3-7197de753557","Email":"","AvatarImage":"1565ca84-1552-4d67-ae70-ea5c488103b0.png","GeocacheFindCount":1266,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289193118,"CacheID":1811409,"LogGuid":"2a6bc254-9ff1-4bd0-9238-825829a6b056","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Diesen Cache haben CeKa82 und ich mal in einen NC umgewandelt. Die Stationen waren alle schnell und gut gefunden und die Ort ist für Kinder sicher der Hit.<br />Hat mir wirklich gut gefallen die Runde.<br /><br />DfdC + FP","Created":"2013-01-13","Visited":"2013-01-12","UserName":"Lotterliese410","MembershipLevel":3,"AccountID":4585091,"AccountGuid":"01ca9a18-52a8-491d-872d-eff1a9491523","Email":"","AvatarImage":"7b1b273a-bb8d-48c0-8e11-afc48eaa43ce.jpg","GeocacheFindCount":1532,"GeocacheHideCount":0,"ChallengesCompleted":20,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":279154355,"CacheID":1811409,"LogGuid":"8b405a78-1653-4809-b6ee-38f905db205e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"mit olla66 gefunden.","Created":"2012-11-12","Visited":"2012-11-10","UserName":"hjansen67","MembershipLevel":1,"AccountID":5614762,"AccountGuid":"fcdfa621-d616-4496-8ff8-5a5cba25dd75","Email":"","AvatarImage":"","GeocacheFindCount":407,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":278602993,"CacheID":1811409,"LogGuid":"a793e95e-ae4f-4461-9a45-13529479bca6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Hallo,<br />das es das Kinderwäldchen geben soll, hatte ich schon oft gehört. Früher schon immer mal mit den Kids hier her gewollt. Aber wie es ist... nix geworden.<br />Aber nun mit dem Caching Hobby.... Alles Toll. Hier werden wir im Sommer mal herkommen.<br />Danke für die Runde.<br />Am Ziel angekommen trafen wir Zwei Mitstreiter. Nach kurzem Plausch dann gesucht..gefunden und zusammen geloggt.<br /><br />+ Schleifchen<br /><br /><br />DFDC sagen olla und kids<br /><br />This entry was edited by olla66 on Saturday, 10 November 2012 at 17:31:53 UTC.","Created":"2012-11-10","Visited":"2012-11-10","UserName":"olla66","MembershipLevel":3,"AccountID":5570656,"AccountGuid":"3f8fbb08-da63-42f3-bbf5-13839fed8be3","Email":"","AvatarImage":"de9bc470-63a4-4f2c-9519-d3fbc228f2e2.gif","GeocacheFindCount":605,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":278588958,"CacheID":1811409,"LogGuid":"c0614861-49a3-4741-b002-652c0958ef7f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auch den haben wir endlich gefunden, beim ersten Anlauf war es uns fuers Final zu dunkel und regnerisch . Schön gemacht. Danke","Created":"2012-11-10","Visited":"2012-11-10","UserName":"Der Dicke Hund aus Bangkok","MembershipLevel":3,"AccountID":1045929,"AccountGuid":"fc110a3f-f712-4d97-9ff6-4d12df9ac5a9","Email":"","AvatarImage":"","GeocacheFindCount":2414,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":277696513,"CacheID":1811409,"LogGuid":"b3b15708-9caa-4478-8ef7-3b22a6f5c50b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Diesen Cache für einen Geburtstagsnachmittag genutzt. Die Kinder waren sehr begeistert, vorallem auch von der tollen Gegend. Vielen Dank für das Zeigen dieser schönen Gegend. TFTC","Created":"2012-11-04","Visited":"2012-11-03","UserName":"DanSte","MembershipLevel":3,"AccountID":2752144,"AccountGuid":"579ea9ad-7907-4b50-8923-7ccebc0d8a5f","Email":"","AvatarImage":"","GeocacheFindCount":505,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":276634237,"CacheID":1811409,"LogGuid":"bc9c31d0-b30b-4d0d-b952-8e86976f0046","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Auf kleiner Urlaubstour gut gefunden. Danke für den tollen Cache!","Created":"2012-10-30","Visited":"2012-10-30","UserName":"pille-palle84","MembershipLevel":3,"AccountID":1918474,"AccountGuid":"e5655c6f-dd64-47d5-abc3-85d4ec2d00b6","Email":"","AvatarImage":"c4226573-600e-4e17-8935-460fd7fbe6a7.jpg","GeocacheFindCount":5254,"GeocacheHideCount":6,"ChallengesCompleted":102,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":275550323,"CacheID":1811409,"LogGuid":"55664edc-8ed4-4b72-9be4-02283d371068","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Trotz schlechten Wetter gefunden.<br />DFDC","Created":"2012-10-25","Visited":"2012-10-25","UserName":"Kuha25","MembershipLevel":1,"AccountID":5428575,"AccountGuid":"dfcedce1-8dff-405e-87fc-76833f28a372","Email":"","AvatarImage":"","GeocacheFindCount":9,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":275549638,"CacheID":1811409,"LogGuid":"2f46d961-6d88-4e3f-9540-54365f38310a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit kuha25 die Aufgaben schnell gelöst und die Finale nach einer kurzen Suche gefunden.<br />DFDC","Created":"2012-10-25","Visited":"2012-10-25","UserName":"KariMikael","MembershipLevel":3,"AccountID":2796742,"AccountGuid":"986c9e4b-6848-4713-a849-514b7b5f8b60","Email":"","AvatarImage":"","GeocacheFindCount":370,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":273990958,"CacheID":1811409,"LogGuid":"5539fc01-708e-4b34-8996-68d77ef4f6bd","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Heute, auf Besuch in Hannover, hat es mich und meinen Neffen bei der \"Schatzsuche\" in den Kinderwald verschlagen. Die Stationen waren alle gut zu finden und während der Kleine fleißig zählte, habe ich den Rechenpart übernommen <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />. Die Dose war dann auch fix gefunden, nur leider war fast nix zum Tauschen darin <img src=\"/images/icons/icon_smile_sad.gif\" border=\"0\" align=\"middle\" />. Wir haben dann drei Wachskreiden reingelegt. <br />Von dem Wald waren wir beide begeistert, von den Tipis, dem Plumpsklo ..., nur die Seilfähre hat der Kleine arg vermisst, so dass ich ihm versprechen musste, im Sommer auf jeden Fall noch mal wiederzukommen <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />.<br />Danke für´s Zeigen dieses schönen Kinderortes und viele Grüße aus NRW","Created":"2012-10-19","Visited":"2012-10-16","UserName":"Jinglebee","MembershipLevel":3,"AccountID":5128650,"AccountGuid":"365fd29b-2fb9-48ee-9cdf-9e09a274c52b","Email":"","AvatarImage":"023553d6-9924-40b4-8432-62f47433c145.jpg","GeocacheFindCount":273,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":273976850,"CacheID":1811409,"LogGuid":"3b5adf41-dfc9-45c5-acec-8894625101fc","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Als Mitglied im kinderwald e.V. hatte ich diesen schon lange machen wollen. Aber irgendwas kam immer dazwischen. <br />Heute war ich Alleine auf dem Gelände und konnte in Ruhe suchen und loggen.<br />DfdC sagt Hawkhunter.","Created":"2012-10-18","Visited":"2012-10-16","UserName":"Hawkhunter","MembershipLevel":3,"AccountID":1286695,"AccountGuid":"a8c0f0e5-58db-4d16-885e-87446a79ffdc","Email":"","AvatarImage":"c7ddc254-5f33-40e4-b9f0-0abaf89c8697.jpg","GeocacheFindCount":1981,"GeocacheHideCount":0,"ChallengesCompleted":7,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269736455,"CacheID":1811409,"LogGuid":"8029670b-1e40-4828-947a-35b1bd384c08","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schöner, entspannender Multi, hat Spaß gemacht<br /> 30.09.12 18:34 Find #112<br />DfdC :)","Created":"2012-09-30","Visited":"2012-09-30","UserName":"Vincent-Shezar","MembershipLevel":3,"AccountID":5412756,"AccountGuid":"ff83a8a9-95a6-4a3a-bff8-37ef16522000","Email":"","AvatarImage":"","GeocacheFindCount":337,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":269707464,"CacheID":1811409,"LogGuid":"5f3d71ed-a9f0-4c80-a18d-62853dc908b6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Schöner Cache mit interessanter Umgebung :) dfdc","Created":"2012-09-30","Visited":"2012-09-30","UserName":"OdessaXxX","MembershipLevel":3,"AccountID":4149541,"AccountGuid":"f936faba-1a7e-4868-94ef-a009b8cc8a81","Email":"","AvatarImage":"afb33499-53bd-4ea0-8e88-6f6e9eec822e.jpg","GeocacheFindCount":348,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 153, "rows": 153 } };
$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
@@ -2360,6 +2385,6 @@ $(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', </noscript>
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB14; Build: Web.HotFix_20130305.1 -->
+ <!-- Server: WEB11; Build: Web.Release_20130319.1 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html index 807d50c..9db5038 100644 --- a/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html +++ b/tests/src/cgeo/geocaching/test/mock/GC2JVEH.html @@ -76,16 +76,16 @@ }
})();
</script>
-<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC2JVEH&Submit6=Go" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 3 and difficulty is 5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Auf den Spuren des Indianer Jones Teil 1" property="og:title" /><meta name="description" content="Auf den Spuren des Indianer Jones Teil 1 (GC2JVEH) was created by indianerjones on 11/28/2010. It's a Small size geocache, with difficulty of 5, terrain of 3. It's located in Niedersachsen, Germany. Aufgabe zum Start: Finde die Schattenlinie. !!!Die Skizze mit den Zahlen solltest du mitnehmen!!! Du solltest den cache so beginnen, das du station 2 in der Zeit von mo- fr von 11-19 Uhr und sa von 11-16 Uhr erledigt hast." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
+<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5" property="og:url" /><meta name="og:description" content="Solve the mystery and then use a smartphone or GPS device to navigate to the solution coordinates. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 3 and difficulty is 5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/8.png" property="og:image" /><meta name="og:title" content="Auf den Spuren des Indianer Jones Teil 1" property="og:title" /><meta name="description" content="Auf den Spuren des Indianer Jones Teil 1 (GC2JVEH) was created by indianerjones on 11/28/2010. It's a Small size geocache, with difficulty of 5, terrain of 3. It's located in Niedersachsen, Germany. Aufgabe zum Start: Finde die Schattenlinie. !!!Die Skizze mit den Zahlen solltest du mitnehmen!!! Du solltest den cache so beginnen, das du station 2 in der Zeit von mo- fr von 11-19 Uhr und sa von 11-16 Uhr erledigt hast." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head>
<body >
- <form name="aspnetForm" method="post" action="cache_details.aspx?wp=GC2JVEH&Submit6=Go" id="aspnetForm">
+ <form name="aspnetForm" method="post" action="cache_details.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5" id="aspnetForm">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="3" />
-<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE5OTc1OTcWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFlQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZndwJTNkR0MySlZFSCUyNlN1Ym1pdDYlM2RHb2RkAgsPFgIfAQUQNDE5IENhY2hlcyBGb3VuZGQCEQ8WAh8DZxYCAg0PDxYCHwUFQH4vdHJhY2svc2VhcmNo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cHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUmbGM9NWRkAhEPDxYCHwUFOWNkcGYuYXNweD9ndWlkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSZsYz0xMGRkAhMPDxYEHwUFjwFodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjIxNjI1LDkuNzE0NDgzIChIb21lIExvY2F0aW9uKSZkYWRkcj01Mi4zNzIyNSw5LjczNTM2NyhBdWYrZGVuK1NwdXJlbitkZXMrSW5kaWFuZXIrSm9uZXMrVGVpbCsxKR4GVGFyZ2V0BQZfYmxhbmtkZAIbD2QWCAIBDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAw8PFgQfDQwfDgIEZGQCBQ8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNScpO3JldHVybiBmYWxzZTtkAgcPDxYCHwNnFgIfDwUgczJwaG9uZSgnR0MySlZFSCcpO3JldHVybiBmYWxzZTtkAhQPFgIfA2dkAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFE05vIGhpbnRzIGF2YWlsYWJsZS4WAh8PBQ1yZXR1cm4gZmFsc2U7ZAIZDxYCHwNoZAIcD2QWBAICDw8WBB4IQ3NzQ2xhc3NkHw4CAmRkAgQPFgIfAQUCMjRkAh0PZBYCAgEPFgIfA2cWAgIBDw8WAh8FBTgvc2Vlay9sb2cuYXNweD9MVUlEPTA3Nzc1YzM1LTA0ZDAtNGFlYi1hMzU2LTdjZDk4ZWI0NThjMmRkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgYCAw8WAh8GAgEWAgIBD2QWAmYPFQNWaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS90cmFjay9kZXRhaWxzLmFzcHg/Z3VpZD1lMzI5MTlkMy1lYjk1LTRkMDMtYTZjNC1kMGFkZmZmOTc4NjUzaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9pbWFnZXMvd3B0dHlwZXMvc20vMjEuZ2lmFUljaHRoeW9zYXVydXMgSHVtZXJ1c2QCBw8PFgIfA2dkFgICAQ8PFgQfAQUTVmlldyBhbGwgVHJhY2thYmxlcx8FBUl+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUmY2NpZD0xOTk3NTk3ZGQCCQ8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThj" />
-<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="YjctYjAxNDgzZjk0Y2I1ZGQCJw8PFgIfA2dkFgJmDxYCHwYCAxYGAgEPZBYCZg8VAgDfATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTc2MGViMzE0LTgzOGQtNGFmYy1hYTViLTQ1YjIyMTJlZTQ5YyI+VDUgYWJzb2x2aWVydDwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTVjNGIwOTE1LTVjZWMtNGZhMS04YWZkLTRiM2NhNjdlMDA0ZSI+a2FpMjcwNzwvYT5kAgIPZBYCZg8VAg5BbHRlcm5hdGluZ1Jvd9UBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9MGEyZTRiMzItMTFjZC00ZTQ2LWI1MmItYWZhNmJmYzg0ZGQyIj5Ub0RvPC9hPjxiciAvPiBieSA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL3Byb2ZpbGUvP2d1aWQ9ODIyYzBmZWItNGRkMC00MzE4LTliZGYtZWExOTc2NDE5M2E4Ij5ILldhaWk8L2E+ZAIDD2QWAmYPFQIA7AE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD04MzAxNjJjMi03MmRlLTQ4NzYtYmYyMi0yNDRkNTlmOGJhMjciPkRpZXNlIHNpbmQgbm9jaCBmJiMyMjg7bGxpZzwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPWYzYjllNjA5LTYzM2ItNDNhZi05ZTM0LTFmOGY1NGI4NmE5ZSI+Y2Vld2VlPC9hPmQCKQ9kFhICAQ8PFgIfA2hkZAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JkRTPTFkZAIHDw8WBh4GUkRTLklECyl2R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ4MTIuMTgwNzUsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAEeB1JXUFQuSUQoKwQHMTk5NzU5Nx8DaGRkAgkPDxYCHwNnZBYCAgEPDxYEHwUFKy9tYXAvZGVmYXVsdC5hc3B4P2xhdD01Mi4zNzIyNSZsbmc9OS43MzUzNjcfA2dkZAIPDxYCHwEFjwEuLi5vdGhlciBjYWNoZXMgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3U9aW5kaWFuZXJqb25lcyI+aGlkZGVuPC9hPiBvciA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dWw9aW5kaWFuZXJqb25lcyI+Zm91bmQ8L2E+IGJ5IHRoaXMgdXNlcmQCEQ9kFgYCAQ8WAh8BBf8BLi4ubmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjciPmNhY2hlcyBvZiB0aGlzIHR5cGU8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9NDA4NjE4MjEtMTgzNS00ZTExLWI2NjYtOGQ0MTA2NGQwM2ZlJmxhdD01Mi4zNzIyNTAmbG5nPTkuNzM1MzY3JmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIDDxYCHwEFpgEuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NTIuMzcyMjUwJmxuZz05LjczNTM2NyI+Y2FjaGVzPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi4zNzIyNTAmbG5nPTkuNzM1MzY3JmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIFDxYCHwEFfi4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iaHR0cDovL3d3dy53YXltYXJraW5nLmNvbS9kaXJlY3RvcnkuYXNweD9mPTEmbGF0PTUyLjM3MjI1MCZsb249OS43MzUzNjciPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw8WAh8DaGQCFw9kFgICAQ8PFgQfAQW1BzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MjI1JmxuZz05LjczNTM3IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNTIlYzIlYjArMjIuMzM1K0UrMDA5JWMyJWIwKzQ0LjEyMisoR0MySlZFSCkrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NTIuMzcyMjUmbG9uZ2l0dWRlPTkuNzM1Mzcmem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTUyLjM3MjI1Jmxvbj05LjczNTM3Jnpvb209MTYmcT01Mi4zNzIyNSw5LjczNTM3JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNTIuMzcyMjVfOS43MzUzN19HQzJKVkVIIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NTIuMzcyMjUmbG9uPTkuNzM1MzciIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD01Mi4zNzIyNSZtbG9uPTkuNzM1Mzcmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+PC9saT4fA2dkZAIbD2QWBgIBDxYCHwEFETEyNCBMb2dnZWQgVmlzaXRzZAIHDw8WAh8FBUN+L3NlZWsvY2FjaGVfbG9nYm9vay5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1ZGQCCQ8PFgQfBQU9fi9zZWVrL2dhbGxlcnkuYXNweD9ndWlkPTA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNR8BBSJWaWV3IHRoZSBJbWFnZSBHYWxsZXJ5IG9mIDQgaW1hZ2VzZGQCKg8WAh8BBQR0cnVlZAIrDxYCHwEFSmxhdD01Mi4zNzIyNTsgbG5nPTkuNzM1MzY3OyBndWlkPScwNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUnOw0KZAIVDxYCHwNoFgICAQ8PZBYCHwsFDHdpZHRoOjEyMHB4O2QCFw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHwYCEhYkZg9kFgICAQ8PFggfBwUFZW4tVVMfCAUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHwloZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCCA9kFgICAQ8PFggfBwUFaXQtSVQfCAUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8JaGRkAgkPZBYCAgEPDxYIHwcFBWVsLUdSHwgFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8JaGRkAgoPZBYCAgEPDxYIHwcFBWx2LUxWHwgFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwloZGQCCw9kFgICAQ8PFggfBwUFbmwt" />
-<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="TkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCDA9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCDQ9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAIOD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDw9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIQD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAhEPZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAJLDxYCHwEFECZjb3B5OyAyMDAwLTIwMTNkAgMPFgIfAQUrU2VydmVyOiBXRUIxNDsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMzAzMDUuMWRk8QtTGapFF/8sYutMmBIWHXWScJk=" />
+<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzE5OTc1OTcWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFpQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZmd1aWQlM2QwNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAILDxYCHwEFEDQyNiBDYWNoZXMgRm91bmRkAhEPFgIfA2cWAgINDw8WAh8F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Dw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUmbGM9MTBkZAITDw8WBB8FBY8BaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP2Y9ZCZobD1lbiZzYWRkcj01Mi4yMTYyNSw5LjcxNDQ4MyAoSG9tZSBMb2NhdGlvbikmZGFkZHI9NTIuMzcyMjUsOS43MzUzNjcoQXVmK2RlbitTcHVyZW4rZGVzK0luZGlhbmVyK0pvbmVzK1RlaWwrMSkeBlRhcmdldAUGX2JsYW5rZGQCGw9kFggCAQ8PFgQeCUZvcmVDb2xvcgweBF8hU0ICBGRkAgMPDxYEHw0MHw4CBGRkAgUPDxYCHwNnFgIeB29uY2xpY2sFO3MyZ3BzKCcwNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjUnKTtyZXR1cm4gZmFsc2U7ZAIHDw8WAh8DZxYCHw8FIHMycGhvbmUoJ0dDMkpWRUgnKTtyZXR1cm4gZmFsc2U7ZAIUDxYCHwNnZAIXD2QWCGYPFgIfA2hkAgEPDxYCHwNoZGQCAg8PFgIfA2hkZAIDDxYCHwNoZAIYD2QWAgIDDw8WAh8BBRNObyBoaW50cyBhdmFpbGFibGUuFgIfDwUNcmV0dXJuIGZhbHNlO2QCGQ8WAh8DaGQCHA9kFgQCAg8PFgQeCENzc0NsYXNzZB8OAgJkZAIEDxYCHwEFAjIzZAIdD2QWAgIBDxYCHwNnFgICAQ8PFgIfBQU4L3NlZWsvbG9nLmFzcHg/TFVJRD0wNzc3NWMzNS0wNGQwLTRhZWItYTM1Ni03Y2Q5OGViNDU4YzJkZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYGAgMPFgIfBgIBFgICAQ9kFgJmDxUDVmh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vdHJhY2svZGV0YWlscy5hc3B4P2d1aWQ9ZTMyOTE5ZDMtZWI5NS00ZDAzLWE2YzQtZDBhZGZmZjk3ODY1M2h0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vaW1hZ2VzL3dwdHR5cGVzL3NtLzIxLmdpZhVJY2h0aHlvc2F1cnVzIEh1bWVydXNkAgcPDxYCHwNnZBYCAgEPDxYEHwEFE1ZpZXcgYWxsIFRyYWNrYWJsZXMfBQVJfi90cmFjay9zZWFyY2guYXNweD93aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JmNjaWQ9MTk5NzU5N2RkAgkPDxYCHwUFPH4vdHJhY2svc2VhcmNoLmFzcHg/d2lkPTA3Mjcw" />
+<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="ZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNWRkAicPDxYCHwNnZBYCZg8WAh8GAgMWBgIBD2QWAmYPFQIA3wE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD03NjBlYjMxNC04MzhkLTRhZmMtYWE1Yi00NWIyMjEyZWU0OWMiPlQ1IGFic29sdmllcnQ8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD01YzRiMDkxNS01Y2VjLTRmYTEtOGFmZC00YjNjYTY3ZTAwNGUiPmthaTI3MDc8L2E+ZAICD2QWAmYPFQIOQWx0ZXJuYXRpbmdSb3fVATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTBhMmU0YjMyLTExY2QtNGU0Ni1iNTJiLWFmYTZiZmM4NGRkMiI+VG9EbzwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTgyMmMwZmViLTRkZDAtNDMxOC05YmRmLWVhMTk3NjQxOTNhOCI+SC5XYWlpPC9hPmQCAw9kFgJmDxUCAOwBPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9ib29rbWFya3Mvdmlldy5hc3B4P2d1aWQ9ODMwMTYyYzItNzJkZS00ODc2LWJmMjItMjQ0ZDU5ZjhiYTI3Ij5EaWVzZSBzaW5kIG5vY2ggZiYjMjI4O2xsaWc8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD1mM2I5ZTYwOS02MzNiLTQzYWYtOWUzNC0xZjhmNTRiODZhOWUiPmNlZXdlZTwvYT5kAigPDxYCHwNnZBYCZg8WAh8GAgEWAgIBD2QWAmYPFQIA3QE8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL2Jvb2ttYXJrcy92aWV3LmFzcHg/Z3VpZD0xNDU1MTcwOC0wYzNjLTRmOTUtOTM0Mi0xYmIzMTE5ZTZlZmUiPmNnZW8gbW9ja3M8L2E+PGJyIC8+IGJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vcHJvZmlsZS8/Z3VpZD00ZDQxNjQ2MS1kMWE3LTRjYzUtOGVlNy0zMzZiYjkxMGZlYjgiPkpvU2FNYUphPC9hPmQCKQ9kFhICAQ8PFgIfA2hkZAIDD2QWAgIBDw8WAh8FBUUvaGlkZS93cHRsaXN0LmFzcHg/UmVmV3B0SUQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1JkRTPTFkZAIHDw8WBh4GUkRTLklECyl1R3JvdW5kc3BlYWsuV2ViLkdQWC5XcHREYXRhU291cmNlcywgVHVjc29uLkNvbW1vbi5MZWdhY3ksIFZlcnNpb249My4wLjQ4MjYuMjAzOCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAcxOTk3NTk3HwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBQUrL21hcC9kZWZhdWx0LmFzcHg/bGF0PTUyLjM3MjI1JmxuZz05LjczNTM2Nx8DZ2RkAg8PFgIfAQWPAS4uLm90aGVyIGNhY2hlcyA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dT1pbmRpYW5lcmpvbmVzIj5oaWRkZW48L2E+IG9yIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91bD1pbmRpYW5lcmpvbmVzIj5mb3VuZDwvYT4gYnkgdGhpcyB1c2VyZAIRD2QWBgIBDxYCHwEF/wEuLi5uZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTQwODYxODIxLTE4MzUtNGUxMS1iNjY2LThkNDEwNjRkMDNmZSZsYXQ9NTIuMzcyMjUwJmxuZz05LjczNTM2NyI+Y2FjaGVzIG9mIHRoaXMgdHlwZTwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD00MDg2MTgyMS0xODM1LTRlMTEtYjY2Ni04ZDQxMDY0ZDAzZmUmbGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjcmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgMPFgIfAQWmAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD01Mi4zNzIyNTAmbG5nPTkuNzM1MzY3Ij5jYWNoZXM8L2E+LCA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/bGF0PTUyLjM3MjI1MCZsbmc9OS43MzUzNjcmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgUPFgIfAQV+Li4uYWxsIG5lYXJieSA8YSBocmVmPSJodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NTIuMzcyMjUwJmxvbj05LjczNTM2NyI+d2F5bWFya3Mgb24gV2F5bWFya2luZy5jb208L2E+ZAITDxYCHwNoZAIXD2QWAgIBDw8WBB8BBbUHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NTIuMzcyMjUmbG5nPTkuNzM1MzciIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis1MiVjMiViMCsyMi4zMzUrRSswMDklYzIlYjArNDQuMTIyKyhHQzJKVkVIKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNodHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT01Mi4zNzIyNSZsb25naXR1ZGU9OS43MzUzNyZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NTIuMzcyMjUmbG9uPTkuNzM1Mzcmem9vbT0xNiZxPTUyLjM3MjI1LDkuNzM1MzcmY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC41Mi4zNzIyNV85LjczNTM3X0dDMkpWRUgiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD01Mi4zNzIyNSZsb249OS43MzUzNyIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5DeWNsZU1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9tbGF0PTUyLjM3MjI1Jm1sb249OS43MzUzNyZ6b29tPTEyIiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcDwvYT48L2xpPh8DZ2RkAhsPZBYGAgEPFgIfAQURMTI1IExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD0wNzI3MGU4Yy03MmVjLTQ4MjEtOGNiNy1iMDE0ODNmOTRjYjVkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9MDcyNzBlOGMtNzJlYy00ODIxLThjYjctYjAxNDgzZjk0Y2I1HwEFIlZpZXcgdGhlIEltYWdlIEdhbGxlcnkgb2YgNCBpbWFnZXNkZAIqDxYCHwEFBHRydWVkAisPFgIfAQVKbGF0PTUyLjM3MjI1OyBsbmc9OS43MzUzNjc7IGd1aWQ9JzA3MjcwZThjLTcyZWMtNDgyMS04Y2I3LWIwMTQ4M2Y5NGNiNSc7DQpkAhUPFgIfA2gWAgIBDw9kFgIfCwUMd2lkdGg6MTYwcHg7ZAIXD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIfBgISFiRmD2QWAgIBDw8WCB8HBQVlbi1VUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2gfCWhkZAIBD2QWAgIBDw8WCB8HBQVkZS1ERR8IBQ1TZXRUZW1wTG9jYWxlHwEFB0RldXRzY2gfCWhkZAICD2QWAgIBDw8WCB8HBQVmci1GUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUZyYW7Dp2Fpcx8JaGRkAgMPZBYCAgEPDxYIHwcFBXB0LVBUHwgFDVNldFRlbXBMb2NhbGUfAQUKUG9ydHVndcOqcx8JaGRkAgQPZBYCAgEPDxYIHwcFBWNzLUNaHwgFDVNldFRlbXBMb2NhbGUfAQUJxIxlxaF0aW5hHwloZGQCBQ9kFgICAQ8PFggfBwUFc3YtU0UfCAUNU2V0VGVtcExvY2FsZR8BBQdTdmVuc2thHwloZGQCBg9kFgICAQ8PFggfBwUFZXMtRVMfCAUNU2V0" />
+<input type="hidden" name="__VIEWSTATE2" id="__VIEWSTATE2" value="VGVtcExvY2FsZR8BBQhFc3Bhw7FvbB8JaGRkAgcPZBYCAgEPDxYIHwcFBWV0LUVFHwgFDVNldFRlbXBMb2NhbGUfAQUFRWVzdGkfCWhkZAIID2QWAgIBDw8WCB8HBQVpdC1JVB8IBQ1TZXRUZW1wTG9jYWxlHwEFCEl0YWxpYW5vHwloZGQCCQ9kFgICAQ8PFggfBwUFZWwtR1IfCAUNU2V0VGVtcExvY2FsZR8BBRDOlc67zrvOt869zrnOus6sHwloZGQCCg9kFgICAQ8PFggfBwUFbHYtTFYfCAUNU2V0VGVtcExvY2FsZR8BBQlMYXR2aWXFoXUfCWhkZAILD2QWAgIBDw8WCB8HBQVubC1OTB8IBQ1TZXRUZW1wTG9jYWxlHwEFCk5lZGVybGFuZHMfCWhkZAIMD2QWAgIBDw8WCB8HBQVjYS1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFB0NhdGFsw6AfCWhkZAIND2QWAgIBDw8WCB8HBQVwbC1QTB8IBQ1TZXRUZW1wTG9jYWxlHwEFBlBvbHNraR8JaGRkAg4PZBYCAgEPDxYIHwcFBW5iLU5PHwgFDVNldFRlbXBMb2NhbGUfAQUOTm9yc2ssIEJva23DpWwfCWhkZAIPD2QWAgIBDw8WCB8HBQVrby1LUh8IBQ1TZXRUZW1wTG9jYWxlHwEFCe2VnOq1reyWtB8JaGRkAhAPZBYCAgEPDxYIHwcFBWh1LUhVHwgFDVNldFRlbXBMb2NhbGUfAQUGTWFneWFyHwloZGQCEQ9kFgICAQ8PFggfBwUFcm8tUk8fCAUNU2V0VGVtcExvY2FsZR8BBQhSb23Dom7Egx8JaGRkAksPFgIfAQUQJmNvcHk7IDIwMDAtMjAxM2QCAw8WAh8BBSxTZXJ2ZXI6IFdFQjA5OyBCdWlsZDogV2ViLlJlbGVhc2VfMjAxMzAzMTkuMWRkOtJtgd+T04XrlGGojTAVYl961Wk=" />
</div>
<script type="text/javascript">
@@ -105,13 +105,13 @@ function __doPostBack(eventTarget, eventArgument) { </script>
-<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981131264989663" type="text/javascript"></script>
+<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981142902716410" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&t=ffffffff940d030f" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&t=ffffffff940d030f" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=Uh_lOa1hKj-GEwMC8mK4Mv8GIgfYnVMts1uBtWWtSfWP9ra-LKOpaRuqVLvjYmMdLsk7f65Q6jxy1BUjZtmsPSNvG8-NJhXvUvOP2jTpjiJF191yJjbg5eBWmdsFWFW4ajIe-GbXr7vIi2DeH9CErdgdlkf-f2cp7FtGEJ7sl3tidpi7pPZumnHP0HO2yu_GIN2h8uN1Q6-df-zQBu0zb4hnxqo1" type="text/javascript"></script>
-<script src="/ScriptResource.axd?d=838lRAslTnp-47XptApNagh_Uah2p52BYL-s1NNGNamd8V2w2Ky2y-qvXkjulQaOR_VLt0fkOoUQz2vo2Z8CX871dE4Ct-a7MylewJqtaQNwQglkQO1n6oSTN35sCFRQ7BXBPVoWxpehRPLX8sbeEAqBEHdYAcMHFjMXNlT9nze9HLuJQ15ocJVBJMlooE7lKvmObAIwFsFO9oMNMln41GfoOdjcCiPLIniUHBJavtIsfpZoHZ8IaaJ2mcqJncN2qtyp5jmDkuoZuDm5GuIm88GqPz0_pSJHgC9qf9O6DNr-mOaKWm2PxOwscK8hcP-TM7owfHLYw9rZkopbDljgiCl34QjGBJyaYBGV1VpLdEgR3hGToB-rM6c63T3SLN-7u0qtmvFBds8v5sZUeJLIdtTf9sQCJicp_lnWeZ0bB6SFFMA4I59lZp-wcxcp-MAvNwOsFbo_mUFDpDg-eM316f2OKs0FhopEcLk7jBG2aYLeOA3rVLZuidOCk3cFFBdvo8iogolMkemG1iSC_RSxXWQPLfa0ixp0WTyZPZYv0EQcHB2yShSl6FJxyxoifmdjO489-f3_nXuTeAo4L9mde7FqtE6t3Dj9oqxSDMJXEzU5OAocOzmor7yTRmzx40kgTPetF3I2yMBcbIPFCIfOHd8ua3EkwijkqG2CGEXLBCNr4vyi0" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=yD98wvSb5VN7041hOgZOmkqQVzI1tnBUcR4JaroKEQeSLINMok8wJkEpv14P0ALxKQMdX9Uy6nsNaPxA7d2UqjQ2sYLbpExAJ83JTyN-pkZ2bqOzcSw5bU6coW4Fkg68lE7WA86GU2ExfrvgRWgp0IApCrKMjNJUB5J7XE2OSt6MaXp0qMKnx4NX9LIX7va1Q_FvwA9UawNSTmt_G4BjUQv6zL81" type="text/javascript"></script>
+<script src="/ScriptResource.axd?d=UF7CoL95c_vLaLGsauDTR16zTvN9HxO7Z7dSX0HBBpXtTepxYlkbh743-78oMOEuI_3aLte7xb0-e6V19L_Hk7z4f9QOasPcNlM1hxpFexvFPJfRJzWGp-8O59Hd76flTCJMMO1C2W78ywI_ed1zlZ4zwqVTjLxFOBXV5gyTf5x5ufra9ngZk7bLz7abwYQrLLX-Cwy5EAIGUeMTbqaOmXIafG3b4qS3W0c8k0aCp7DUV1IsvjP1wvdHhxfDrdI5YdAx0kv6nXRWt5mJxjtPKXH1Qjpx8bXIz9rhEfO0oNqnuy_SMtZ1XLyp3UE9tPyWhVRhf6ti2PBL-2-gEWzl_Q0XDmTyGyzoLoLGrClYwEDjYrcQKrAAPM50g9OvnEA6pYxEz4kO7osR0kth80l5KSoEAR2cQvoMCckCOi5Ojw-yK2p56OY-JdKsXMLNNNYIPRfEgVrO6cHT5BV5A4fIUA4Q_B9w2iZFPVzFYxFbliC2fMFv7LYa1_eyTiqxiz_vfMIGPVpEr01CBIulzwpEoWlIwMZIYLmB9VOOk9GSERemTJdhwwVHI3lYYuxUfRn28bvxPZMqsUqhHKDd4m6CDKQqOB1VIdtgk63rJfVtmigIFAFFaV6K36rPqVAthL1_KdD41_RBQqEOvv8BAYDbV6PtCdoX9nRlMYdrXS9niT8A1JaT0" type="text/javascript"></script>
<script src="js/cachedetails.js" type="text/javascript"></script>
<script src="../js/latlng.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -152,11 +152,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet </p>
<p class="SignedInText">
<strong>
- Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC2JVEH%26Submit6%3dGo">Sign Out</a>)<br />
+ Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3d07270e8c-72ec-4821-8cb7-b01483f94cb5">Sign Out</a>)<br />
<span id="ctl00_litPMLevel">Premium Member</span>
<strong style="display: block">
- 419 Caches Found</strong>
+ 426 Caches Found</strong>
</p>
</div>
@@ -465,7 +465,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet <a id="uxFavContainerLink" href="javascript:void(0);">
<div class="favorite-container">
<span class="favorite-value">
- 59</span><br />
+ 60</span><br />
Favorites
<img id="imgFavoriteArrow" src="/images/arrow-down.png" alt="Expand" title="Expand" />
</div>
@@ -659,7 +659,7 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet </div>
<p>
<span class="favorite-rank Clear">
- 24
+ 23
</span>
<a id="ctl00_ContentBody_hlFavoritePointsRemaining" href="/my/favorites.aspx">Favorite points remaining</a>
</p>
@@ -705,14 +705,14 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet <script type='text/javascript'>
googletag.cmd.push(function() {{
-googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_47262cb6-7f2f-4cf1-9386-ead3bc7faa87').addService(googletag.pubads());
+googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_f619842c-1009-4d99-b538-92a9c286950d').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
}});
</script>
-<div id='div_47262cb6-7f2f-4cf1-9386-ead3bc7faa87'>
+<div id='div_f619842c-1009-4d99-b538-92a9c286950d'>
<script type='text/javascript'>
-googletag.cmd.push(function() { googletag.display('div_47262cb6-7f2f-4cf1-9386-ead3bc7faa87'); });
+googletag.cmd.push(function() { googletag.display('div_f619842c-1009-4d99-b538-92a9c286950d'); });
</script>
</div>
@@ -800,6 +800,31 @@ googletag.cmd.push(function() { googletag.display('div_47262cb6-7f2f-4cf1-9386-e +<div class="CacheDetailNavigationWidget">
+
+ <h3 class="WidgetHeader">My Bookmark Lists</h3>
+ <div class="WidgetBody">
+
+
+ <ul class="BookmarkList">
+
+ <li class=''>
+ <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14551708-0c3c-4f95-9342-1bb3119e6efe">cgeo mocks</a><br /> by <a href="http://www.geocaching.com/profile/?guid=4d416461-d1a7-4cc5-8ee7-336bb910feb8">JoSaMaJa</a>
+ </li>
+
+ </ul>
+
+ <p class="NoBottomSpacing">
+
+ </p>
+
+ </div>
+
+
+</div>
+
+
+
</div>
@@ -880,13 +905,13 @@ googletag.cmd.push(function() { googletag.display('div_47262cb6-7f2f-4cf1-9386-e <div class="InformationWidget Clear">
<h3>
- 124 Logged Visits</h3>
+ 125 Logged Visits</h3>
<div class="EncryptDecrypt">
<a href="#" class="decrypt-link">
Decrypt
</a>
</div>
- <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 113 <img src="/images/logtypes/3.png" alt="Didn't find it" title="Didn't find it" /> 1 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 7 <img src="/images/logtypes/22.png" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 1 <img src="/images/logtypes/23.png" alt="Enable Listing" title="Enable Listing" /> 1 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1 </p></span>
+ <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 114 <img src="/images/logtypes/3.png" alt="Didn't find it" title="Didn't find it" /> 1 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 7 <img src="/images/logtypes/22.png" alt="Temporarily Disable Listing" title="Temporarily Disable Listing" /> 1 <img src="/images/logtypes/23.png" alt="Enable Listing" title="Enable Listing" /> 1 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 1 </p></span>
<p class="HalfLeft">
<a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="gallery.aspx?guid=07270e8c-72ec-4821-8cb7-b01483f94cb5">View the Image Gallery of 4 images</a>
</p>
@@ -917,7 +942,7 @@ googletag.cmd.push(function() { googletag.display('div_47262cb6-7f2f-4cf1-9386-e </div>
<p>
<small>
- Current Time: <time datetime="2013-03-08T11:19:49Z">03/08/2013 11:19:49 (UTC-08:00) Pacific Time (US & Canada) (19:19 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-03-08T17:44:40Z">2013-03-08T17:44:40Z</time> on 03/08/2013 09:44:40 (UTC-08:00) Pacific Time (US & Canada) (17:44 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
+ Current Time: <time datetime="2013-03-27T04:22:49Z">03/27/2013 04:22:49 Pacific Daylight Time (11:22 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-03-09T19:57:33Z">2013-03-09T19:57:33Z</time> on 03/09/2013 11:57:33 (UTC-08:00) Pacific Time (US & Canada) (19:57 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum
</small>
</p>
<div id="topScroll" class="TopScroll" style="display:none;">
@@ -1858,9 +1883,9 @@ var userDefinedCoords = {"status":"success","data":{"isUserDefined":false,"oldLa mapLatLng = {"lat":52.37225,"lng":9.73537,"type":8,"name":"Auf den Spuren des Indianer Jones Teil 1"};
var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"52.372250, 009.735367"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 52° 22' 20.100\" E 009° 44' 07.321\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"32U E 550063 N 5802696"}];
userInfo = {ID: 4793174};
-userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4KGHNNCGHRXDAQ7IGVLP2WYPUSOZZMJF23ZKPTFAMCWZA6AHMOHYXI2PDWWRZLXEI7SA3O6S5N7ZDLA';
+userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4KGHNNCGHRXDAQ7IGVLP2WYPUSOZZMJF23ZKPTFASIZH7OFPQ6IVQZEJZJH3GF7IHEINTMDU2OCTIUQ';
includeAvatars = true;
-initalLogs = {"status":"success", "data": [{"LogID":297456097,"CacheID":1997597,"LogGuid":"fb6eec9b-5d30-4e65-8a5b-adffa3afb239","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Horido, ich hab ihn, Dank einer Teamleistung. <br />Den Einstieg habe ich glücklicherweise schnell gefunden. Am kommenden Tag bin ich mit dem falsch skalierten Zettel dort aufgerauscht. So direkt war nun nix zu machen. Also habe ich die Infos mit zur Koordinate home genommen. Dort bekam ich die nächste Station heraus. Sehr schöne Ecke dort, ich habe mich gefreut, hier wieder einmal einen Besuch machen zu können. Auch hier hatte ich schnell Erfolg, nur was mache ich mit den gefunden Informationen. Von nun an war der Cache dann deutlich schwieriger. Wir haben zu dritt einige Tage rumgedeutelt. Eine unserer Deutungen führte dann auch zum Ergebnis. Alleine hätte ich das nicht so schnell gelöst. Die Unschärfen verstecken hier die Lösung länger als nötig, fanden wir. Die ist aber auch die einzige Kritik (diese erlaube ich mir mal) am Cache. <br /><br />Am Final hat uns ein Vorlogger das Leben etwas erschwert. Wir haben die Dose wieder zum rechten Ort zurück geführt.<br />Von mir gibt es eine Schleife, denn das Konzept des Caches fand ich wirklich gut. Außerdem gab es einiges Sehenswertes dazu.","Created":"2013-03-08","Visited":"2013-03-08","UserName":"cosylight","MembershipLevel":3,"AccountID":2953880,"AccountGuid":"b4445988-f55b-498d-9140-a82020ac2be0","Email":"","AvatarImage":"","GeocacheFindCount":916,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297455097,"CacheID":1997597,"LogGuid":"573abf18-f05a-4aef-902c-98714689a0b9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"So, den verlorenen Schatz haben wir schon mal bergen können. Wobei ich ja anmerken muss, daß ich mir ob des Versteckortes recht sicher bin, daß die vorherigen Finder/Verstecker das letzte Teilrätsel nicht in Gänze gelöst oder doch zumindest nicht in Gänze verstanden haben. Somit mussten wir, das Rätselteam \"Reißverschluss\", leider etwas länger in der Kälte und an diesem Ort herumsuchen, als eigentlich nötig gewesen wären. <br /><br />Die Eingangsspur hab ich schon vor langer Zeit immerhin schon mal online ausgemacht. Aber erst, als der Herr Cosylight endlich Premium wurde, kam dieser Schatz wieder ins Radar. Wir teilten brüderlich die Aufgaben und die Verwirrung und hatten nun auch endlich mal herausgefunden, daß nicht jedes Kauderwelsch unverständlich bleiben muss. <br /><br />Danke für die Rätsel und die Stationen, die allesamt an sehr sehenswerten Orten waren. Vor allem der von Station 1 hat mich eine ganze Weile länger behalten, als für die Suche nötig gewesen wäre. <br /><br />Herr Dr. Henry Walton Jones, Jr., wir werden uns in Kürze sicherlich wiedersehen!","Created":"2013-03-08","Visited":"2013-03-08","UserName":"nike1972","MembershipLevel":3,"AccountID":2892759,"AccountGuid":"749fe082-37c5-4439-8855-431c6dba5e77","Email":"","AvatarImage":"d8114f24-3aec-4096-976c-77e4d59ae450.jpg","GeocacheFindCount":1653,"GeocacheHideCount":9,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":294035406,"CacheID":1997597,"LogGuid":"fc2eb4a2-5526-436c-81bf-6fa4e396cf72","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Hier brauchten wir allein für das Finale zwei Anläufe, beim ersten mal war das Finale von städtischen Angestelleten überfüllt. Die anderen tollen Stationen waren auch nicht an einem Tag gemacht.<br /><br />Danke für diesen aufregenden Cache<br /><br />hobatt","Created":"2013-02-16","Visited":"2013-02-14","UserName":"hobatt","MembershipLevel":3,"AccountID":940348,"AccountGuid":"36d0e6e3-91cc-4074-b157-74e7296bd174","Email":"","AvatarImage":"2918f53e-fe84-45aa-9f48-4a24c5f87060.jpg","GeocacheFindCount":3585,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":293767350,"CacheID":1997597,"LogGuid":"321726fe-0b63-46ff-b055-c398b64cf8c8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Das war nicht unser erster Besuch für diesen Cache...<br />...aber heute konnten wir das Logbuch finden und das ganze zum Abschluß bringen!<br />Gemeinsam mit hobatt machte ich mich mal wieder auf den Weg nach Hannover.<br /><br />Danke an den Owner für diesen Kracher, die komplette Serie ist der Wahnsinn!<br />Jack La Grotta","Created":"2013-02-14","Visited":"2013-02-14","UserName":"Jack La Grotta","MembershipLevel":3,"AccountID":2524398,"AccountGuid":"d4b82b2b-b444-4e3f-a08c-d69e9fc6d717","Email":"","AvatarImage":"a3580e63-cc2f-40bc-98eb-414397a4c5c4.jpg","GeocacheFindCount":3372,"GeocacheHideCount":24,"ChallengesCompleted":51,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":292031329,"CacheID":1997597,"LogGuid":"b5707ecc-f213-471a-91a3-63db0c14e008","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Nachdem wir schon den anderen Teil erleben durften<img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br />wurde Ende letzten Jahres auch dieser in \"Angriff \" genommen!<br />Auch Wir haben diesen in mehreren Etappen absolviert und jede ZS genossen!!!! <br />Heute Mittag konnten wir das Logbuch in den Händen halten<img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" /><br />(Das L-Buch ist recht voll)<br /><img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />Hammmer was Indi da wieder gezaubert hat<img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br /><br />Danke sagt Merliah1","Created":"2013-02-03","Visited":"2013-02-03","UserName":"Merliah1","MembershipLevel":3,"AccountID":5247226,"AccountGuid":"8c771c70-52a4-4d23-9681-4c1b657f98f8","Email":"","AvatarImage":"f541ae7f-f54a-41bd-a512-e1a82af63bb1.jpg","GeocacheFindCount":1898,"GeocacheHideCount":0,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289745310,"CacheID":1997597,"LogGuid":"2567672f-a760-4c51-92b6-cdfbcd2dc104","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Jo, der hat sich ganz schön gezogen......beim publish hatte ich noch so gar keine Ahnung, worum es geht und was der Indy von uns wollte. Deshalb wurde das ganze erst mal beiseite gelegt - und die Zeit verging. <br />Erst vor ein paar Wochen stieß ich wieder auf dieses Rätsel und ich begab mich abermals daran. Nach intensiver Recherche kam dann auch brauchbares zutage - der Start war gemacht. Die 1.ZS ergab sich über den schwierigeren Weg für mich jedoch erstaunlich flott. Danach war ich wieder schnell auf der richtigen Spur, nur interpretierte ich hier etwas zuuuviel rein, so daß ich mir schließlich einen Tipp holen musste. Da kam auch sofort die Bestätigung: viel zu kompliziert gedacht. Danach war die nächste ZS geknackt und heute endlich machte ich mich auf zum Final - wobei der Cachergott barmherzig mit mir war: lange suchen musste ich nicht......<br /><br />Insgesamt ist dies ein sehr schön ausgearbeiteter MysteryMulti mit stimmigen Stationen, der richtig Spaß machen und man sich auf die Fortsetzung dieser Reihe freut. Dies sind die Caches, die dieses Hobby ausmachen! Mehr davon!......ein Schleifchen ist Ehrensache.<br /><br />--- T4TC ---","Created":"2013-01-16","Visited":"2013-01-16","UserName":"DeLaTrick","MembershipLevel":3,"AccountID":3696982,"AccountGuid":"44cfcd2c-d3f9-49b8-828a-9f692939f7ab","Email":"","AvatarImage":"9aeb67b2-40e5-4532-8443-312222cd0e4f.jpg","GeocacheFindCount":3818,"GeocacheHideCount":1,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":287979054,"CacheID":1997597,"LogGuid":"aaa8676e-be1b-4f91-a1fb-7eb6e66b3ed7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Didn't find it","LogTypeImage":"3.png","LogText":"hier sind wir heute schon am start gescheitert.<br />zwar haben wir den ausgangsort, wie uns später bestätigt wurde, richtig gefunden, dort haben uns aber scheinbar diverse hinterlassenschaften anderer oder archivierter caches in die falsche richtung geführt.<br />dann schloss sich das zeitfenster und wir hatten heute keine möglichket mehr, hier noch weiter zu kommen.<br />vielleicht sollte der owner, um weitere verwirrung zu verhindern, die altlasten mal beseitigen.<br />mal schauen, wann wir es zu einem zweiten versuch nach hannover schaffen.","Created":"2013-01-05","Visited":"2013-01-05","UserName":"die schnucks","MembershipLevel":3,"AccountID":1478522,"AccountGuid":"fbb6d57b-aa25-4917-9090-d766e8516d20","Email":"","AvatarImage":"e70b7715-2beb-413f-ab91-8995bcc2f5a9.jpg","GeocacheFindCount":949,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":287615679,"CacheID":1997597,"LogGuid":"e3ac23a1-4af6-4319-9b47-0179a1fac335","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Beim Weihnachtsmarkt zufällig auf den Start gestossen, dann zwischen den Jahren etwas geforscht und auf einmal hatten wir überraschenderweise die Dose in der Hand.<br />Aber jetzt soll es ja erst losgehen....","Created":"2013-01-04","Visited":"2012-12-28","UserName":"Zab13","MembershipLevel":3,"AccountID":5041977,"AccountGuid":"091aaf9d-0c38-4f41-956b-51dbcb087d24","Email":"","AvatarImage":"bd5c3de5-c261-433d-8b80-2463b6e32a36.gif","GeocacheFindCount":551,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286019562,"CacheID":1997597,"LogGuid":"d7ae5c34-6902-49f6-bef7-c8fb0e4c9a77","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Im Dreierteam gesucht und gefunden. Tolle Raetsel, das Final ein wenig zu schwach, hat aber trotzdem Spass gemacht. Dauer mit 2 kleinen Autofahrten (a ca. ~6 km) lag bei 4 Stunden.<br />Im Frühjahr kommt dann Bonus und Teil 2 dran.<br />Alles in allem ein Fav.-Pkt. Wert.","Created":"2012-12-29","Visited":"2012-12-28","UserName":"noeckerli","MembershipLevel":3,"AccountID":2286299,"AccountGuid":"0400dbd1-dc84-4d7c-bf54-28ea45fe14bd","Email":"","AvatarImage":"c92a987d-2a1a-4ae5-bac5-ff9af4a447a7.jpg","GeocacheFindCount":353,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285190211,"CacheID":1997597,"LogGuid":"0df1be28-9fa5-4e3f-bb31-e62e2614992e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Den kann man wirklich nur im Team gut lösen. Driskos hatte sehr gut vorgearbeitet aber auch am Final mussten wir und Le Bock noch laaange suchen bis die entscheidende Information gefunden war. In mehreren Etappen heute erfolgreich gefunden. Eine nette vorweihnachtliche Überraschung. Der Bonus scheint auch geknackt zu sein. Das werden wir uns die Tage mal ansehen. Da freuen wir uns schon drauf. DFDC.<br />Natürlich ist das einen FAV wert.","Created":"2012-12-24","Visited":"2012-12-22","UserName":"geritors","MembershipLevel":3,"AccountID":1849979,"AccountGuid":"2feb648f-2f98-4f2a-a2d3-f88848cf334e","Email":"","AvatarImage":"","GeocacheFindCount":2288,"GeocacheHideCount":0,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285188952,"CacheID":1997597,"LogGuid":"5df4c99d-5c29-4b03-8f3c-5f83fab2338e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nachdem DRISKOS hier schon vorgearbeitet hatte, konnten er, GERITORS und ich heute die Restarbeiten erledigen. Am Finale zog sich die Suche wegen Dunkelheit erheblich in die Länge. Doch dann war das Glück uns hold und die Dose unser. Eine feine Sachel die richtig Spaß gemacht hat. DFDC","Created":"2012-12-24","Visited":"2012-12-22","UserName":"le Bock","MembershipLevel":3,"AccountID":1988166,"AccountGuid":"6905cd04-cdc9-4680-8db2-be5398cbaf64","Email":"","AvatarImage":"ffe95982-32c3-436d-8d81-007f00683217.jpg","GeocacheFindCount":3450,"GeocacheHideCount":4,"ChallengesCompleted":8,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284997331,"CacheID":1997597,"LogGuid":"971ccb0a-3e79-479c-b774-a94c40054500","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Joo, wie im Listing beschrieben hat der sich ganz schön in die Länge gezogen. Etwas Hilfe war auch noch erforderlich. <br />Nachdem der Start und die ZS zum Teil einzeln ausgearbeitet wurden, haben LeBock, geritors und ich uns heute an der Final-Location getroffen. Es war dunkel, kalt und nass. Nach ca. 1/2 h hatten wir es aber geschafft. Das Döschen war entdeckt.<br />Sehr schöne Ideen, die uns lange beschäftigt haben. <br /><br />Danke für das kleine Abenteuer. <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /> __o driskos<br />_`\\<,_<br />(*)/ (*)<br />---------------","Created":"2012-12-23","Visited":"2012-12-22","UserName":"driskos","MembershipLevel":3,"AccountID":1176435,"AccountGuid":"ead42c32-b7ad-4a38-93dc-7d1af5da94f2","Email":"","AvatarImage":"ce1a44ae-00f3-4eda-bfba-03e73fc7cda8.jpg","GeocacheFindCount":1567,"GeocacheHideCount":22,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":275052035,"CacheID":1997597,"LogGuid":"bfdce334-fc48-426a-8088-fb3d18e630fe","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wirklich schöne Ideen sind in diesem Cache integriert, wofür sich auch die etwas weiteren Wege zwischen den Stationen lohnen. Am mit einem mobilen Cachemobil ist auch das kein Problem. Nur irgendwie hatten wir uns auch auf mehr Stationen eingestellt und somit waren wir am Final ziemlich erstaunt, als wir plötzlich eine Dose mit Logbuch in der Hand hielten ;-) Somit heisst es jetzt also: Auf zu den nächsten Teilen!<br /><br />Dnake sagt,<br />Team mcruiser","Created":"2012-10-22","Visited":"2012-10-19","UserName":"mcruiser","MembershipLevel":3,"AccountID":2871577,"AccountGuid":"b9304189-bc78-46ad-8030-de65273ab51f","Email":"","AvatarImage":"db316631-c9a7-445d-abaf-a8f279395c3e.jpg","GeocacheFindCount":751,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":274038781,"CacheID":1997597,"LogGuid":"34c782af-80bb-4cf8-b24a-f3f95dd17392","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Sehr sehr schön gemacht, nur warum war er so schnell vorbei? Da standen wir nun und hatten die Barmherzigkeit gefunden ... Schöne Statíonen, Klasse umsetzung. TFTC und Gruß Team Zaboe","Created":"2012-10-19","Visited":"2012-10-19","UserName":"Zaboe","MembershipLevel":1,"AccountID":1317590,"AccountGuid":"f0e14fc7-7199-425c-8d27-7d7b9713bf40","Email":"","AvatarImage":"1bdd7883-33ef-40fe-b422-59b07b196be3.jpg","GeocacheFindCount":3312,"GeocacheHideCount":73,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":269970920,"CacheID":1997597,"LogGuid":"deae18a7-b101-486e-ad07-8026343d765d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Endlich geschafft...Hat lange gedauert und war jede Minute Einsatz wert.<br />Vielen Dank für die Herausforderung...<br />DFDC und Fav. Punkt","Created":"2012-09-30","Visited":"2012-09-26","UserName":"leonberger307","MembershipLevel":3,"AccountID":1179496,"AccountGuid":"d017e12b-83b3-4ec9-bd05-54cbb0d9c150","Email":"","AvatarImage":"112aa46e-fe0a-464c-990e-6bff1c61bda7.jpg","GeocacheFindCount":2525,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":256692614,"CacheID":1997597,"LogGuid":"0b464bea-2c26-4f71-a750-4503a55e901f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Was soll ich nur schreiben, was noch nicht geschrieben wurde?<br />Obwohl ich ja schon einige von Indi gemacht habe, wird man jedesmal wieder positiv überrascht.<br />Da ich nicht oft nach Hannover komme, musst ich diesen mysteriösen Multi stückeln um zum gewünschten Erfolg zu kommen. <br />Vielen Dank für diese tolle Tour, die natürlich (wie schon so oft bei den Indi-Dosen) eine blaue Schleife bekommt.<br /><br />Schöne Grüße,<br />Majoti","Created":"2012-08-11","Visited":"2012-08-11","UserName":"Majoti","MembershipLevel":3,"AccountID":3432542,"AccountGuid":"1ec93712-382c-4859-aa64-1eca126b5914","Email":"","AvatarImage":"22a4b94a-a38b-4db1-8ac3-0582a6281759.jpg","GeocacheFindCount":1662,"GeocacheHideCount":15,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":255282680,"CacheID":1997597,"LogGuid":"f7cb6941-dcea-4c31-ba43-f3d9d3cf3862","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Irgendwie fehlte immer die Zeit mit dieser tollen Serie endlich einmal anzufangen.<br />Dies wurde dann in den letzten Tagen in kleinen Mittagspausenetappen peu a peu nachgeholt.<br /><br />Schnell waren wir gefangen von den tollen Rätseln, die - ohne viel übertriebenem Pomp - die Stimmung der Filme gut eingefangen haben.<br /><br />Wie bei guten Filmen schwang dann heute mit dem Fund des Finals auch ein wenig Wehmut - wie schon vorbei? - mit.<br />Glücklicherweise haben wir ja noch 3 Teile dieser tollen Serie vor uns, auf die wir uns freuen können <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Die Wurms bedanken sich für diesen tollen ersten Teil und steigen ein in die Planung von Bonus, Teil 2 und Megabonus","Created":"2012-08-06","Visited":"2012-08-06","UserName":"Wurms","MembershipLevel":3,"AccountID":1807277,"AccountGuid":"77ee9fa9-15ae-49f6-9fea-1a9617fd69e2","Email":"","AvatarImage":"4dcfbc24-ff19-439d-bc08-78eea619a9ad.jpg","GeocacheFindCount":1167,"GeocacheHideCount":3,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":248418841,"CacheID":1997597,"LogGuid":"fa0a5d50-393b-42cf-be22-04e92fcc406c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Geschafft! Aus Zeitgründen in mehreren Etappen die Angaben für den Bonus erarbeitet (auch dieser wird wieder eine separate Etappe). SEHR schöne Rätsel, wie von Indy nicht anders erwartet.<br />Freuen uns schon auf den Bonus und vor allem auf Teil 2!<br /><br />TFTC!<br /><br />Und natürlich gibt es hier einen FAV-Punkt!","Created":"2012-07-12","Visited":"2012-07-11","UserName":"Bergwerksdirektor","MembershipLevel":3,"AccountID":1953807,"AccountGuid":"a48e7098-1972-4401-8dda-92e242fda777","Email":"","AvatarImage":"2f8cb388-7ef0-4b76-8e4b-2de047e69d8e.jpg","GeocacheFindCount":2593,"GeocacheHideCount":11,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":248535464,"CacheID":1997597,"LogGuid":"73524950-f7ab-4f42-9152-7867210357ca","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Puh, das war eine harte Nuss. Es bedurfte mehrerer Anläufe und der tatkräftigen Hilfe eines größeren Herrns, bis wir endlich vor dem Final standen. Tolle Locations, knackige Rätsel, abwechslungsreiche Stationen,so macht Geocaching richtig Spaß. Und das Beste: Mit diesem Fund ist unsere Matrix voll. Ich freue mich schon auf Teil 2.<br />Danke für für diesen Supercache, das ist einen FP wert.","Created":"2012-07-12","Visited":"2012-07-08","UserName":"I Carbonari","MembershipLevel":3,"AccountID":2941642,"AccountGuid":"3b9ac9a6-3d82-48aa-ab00-caf78d1de23a","Email":"","AvatarImage":"","GeocacheFindCount":1396,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":247532751,"CacheID":1997597,"LogGuid":"57ea561d-40ad-4dee-bfe7-a2cef652ebc6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit den ausgezeichnet ausgewählten Stationen und den zugehörigen tollen Rätseln konnte ich sehr gut in die Rolle des Indiana Jones schlüpfen. Das war eine klasse Runde!<br /><br />An der schönen Finallokation zelebrierten die manchmal hier anzutreffenden Bacchus-Muggel aufgrund des vorangegangen Regens wahrscheinlich anderorts, so dass sich das Final relativ ungestört finden lies.<br /><br />DfdC, der von mir einen FP bekommt.","Created":"2012-07-08","Visited":"2012-07-08","UserName":"CaptnSharky","MembershipLevel":3,"AccountID":3673438,"AccountGuid":"357368ce-02f6-4419-8ba7-279afe889345","Email":"","AvatarImage":"c4a9b686-1602-4ee2-a252-2ba59921867d.jpg","GeocacheFindCount":773,"GeocacheHideCount":1,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":245388909,"CacheID":1997597,"LogGuid":"b8a06f0a-05e6-4dea-ab27-53a5f0026e51","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Vor einem halben Jahr hatte ich endlich die richtige Idee wo die Schattenlinie zu finden ist. Aber wieso steht in den Attributen das Kletterausrüstung benötigt wird ? Sicherheitshalber noch mal den Owner kontaktiert, Entwarnung ! Passenderweise bin ich den Tag drauf in der Nähe des Starts, wo ich schon zwei Wochen zuvor nichtsahnend gewesen bin...<br /><br />Der Start: Es ist dunkel. Es ist ein LP mitten in der City !. Niemand da. Das was ich suche, finde ich nicht. Dafür etwas anderes Brauchbares. Also auf gut Glück versucht. Und siehe da: Erfolg ! Aber was ist das: wo zeigen die KOs hin ? Doch klettern ? Kurz die Gegend abgecheckt, Spoiler rausgekramt... Erneut Entwarnung. Kleinen Umweg für den nächsten Tag eingeplant.<br /><br />ZS1: Ich bin ganz allein auf dem großen Gelände. Da es schon dunkel wird kommt richtig Grusel-Stimmung auf. Die ZS kann ich schnell finden. Zum Enträtseln vor Ort ist es mir aber zu kalt.<br /><br />ZS2: Die Location kann zügig ermittelt werden. Da ich nur sehr selten in dieser Gegend bin übernimmt ein befreundeter Cacher die \"Besorgung\".<br /><br />Finale: Zusammen mit JoSaMaJa suche ich erneut das Finale auf nach dem ich unter der Woche keinen Erfolg hatte (starker Regen & nichtseßhafte Person direkt vor Ort). Heute haben wir bei diesem LP Erfolg !<br /><br />Fazit: Großes Kino - ein Cache der bei mir das richtige Indianer Jones Feeling aufkommen ließ. Tolle LPs in der Stadt, Archäologen-Tätigkeiten, was will man mehr !","Created":"2012-06-30","Visited":"2012-06-30","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":747,"GeocacheHideCount":8,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":245426156,"CacheID":1997597,"LogGuid":"07775c35-04d0-4aeb-a356-7cd98eb458c2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ohne Blafoo hätte ich den nie geschafft. Durch Zufall und mit viel Hilfe konnte ich dann auch hier zugreifen. Vielen Dank an den Owner vom Nachbarort!","Created":"2012-06-30","Visited":"2012-06-29","UserName":"JoSaMaJa","MembershipLevel":3,"AccountID":4793174,"AccountGuid":"4d416461-d1a7-4cc5-8ee7-336bb910feb8","Email":"","AvatarImage":"e8a97a05-a051-4da9-bc93-6a830b866aff.jpg","GeocacheFindCount":419,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241251492,"CacheID":1997597,"LogGuid":"87247535-a79a-468e-985e-5d99abd07729","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Nr. 2.000 <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Schon vor einiger Zeit haben wir überlegt, was wohl ein würdiger Cache für unser Jubiläum sein könnte. Schnell einigten wir uns darauf, dafür den Spuren des Indianer Jones zu folgen.<br />Also den Schlapphut aufgesetzt und die Peitsche aus der SM-Schublade geschnappt und los ging's! Von Station zu Station hangelten wir uns Prof-Jones-like vorwärts und wurden heute mit dem Fund der Dose punktgenau nach dem 1999. gestern belohnt! <br />Die Wahl war die richtige: Ein ganz toller Cache, der uns sehr viel Spaß gemacht hat und an den wir uns jetzt immer, wenn wir unsere Statistik ansehen, erinnern können. Natürlich gibt's dafür einen Favoritenpunkt von uns. Dann noch ein herzliches Dankeschön und viele Grüße an Indi, den Merlyn und Reflektordetektor!<br /><br />P.S. Wir freuen uns schon auf Teil 2. Hoffen aber, dass wir ihn vor dem 3000. finden werden!<br />P.P.S. Vielen Dank an die Baumfee und den Schnatzfänger für die Begleitung, die Glückwünsche und das Erinnerungsfoto!","Created":"2012-06-10","Visited":"2012-06-10","UserName":"4Engel","MembershipLevel":3,"AccountID":2473723,"AccountGuid":"e5356bcb-f3b4-4b90-89a7-e01fb70d5ebb","Email":"","AvatarImage":"1eafbd7c-d6e2-4f57-86bf-05f316ec9026.jpg","GeocacheFindCount":2375,"GeocacheHideCount":20,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241063085,"CacheID":1997597,"LogGuid":"0b32b7a8-2a91-465a-8917-00f15371cbc7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"# 1691 - als uns die 4Engel vor einigen Tagen ansprachen, ob wir gemeinsam diesen Indiana Jones Cache angehen wollen, war ich sofort \"Feuer und Flamme\". Schließlich hat man diese Filme schon mehrfach im Kino bzw. im Fernsehen mit Begeisterung angeschaut.<br />In mehreren Etappen haben wir uns dem Final genähert. Bei der Sucherei und Recherche konnte man<br />gut in die Rolle des Dr. Jones schlüpfen. Besonders gut gefallen hat mir dabei die Station 1.<br />Für diesen etwas anderen Cache bedanke ich mich beim Owner und natürlich bei dem Team - Schnatzfänger<br /><br />Werden weitere Abenteuer folgen??? Auf jeden Fall erst einmal einen Fav.-Punkt.<br />Die 4Engel hatten heute ein weiteren Grund zum Feiern - dieser besondere Cache war die Nr. 2000","Created":"2012-06-10","Visited":"2012-06-10","UserName":"Schnatzfänger","MembershipLevel":3,"AccountID":3963266,"AccountGuid":"deef3a33-242e-44a3-9520-30105d838d7b","Email":"","AvatarImage":"bc17b3a6-29ee-427d-b819-755b1e6986e3.jpg","GeocacheFindCount":2427,"GeocacheHideCount":4,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[{"ImageID":14387354,"ImageGuid":"7f0e3db3-8969-4c35-a14d-f0af69f0b652","Name":"die glücklichen 4Engel","Descr":"Glückwunsch zum 2000. Cache am 10.06.2012","FileName":"7f0e3db3-8969-4c35-a14d-f0af69f0b652.jpg","Created":"2012-06-10","LogID":241063085,"CacheID":1997597,"ImageUrl":null}]},{"LogID":240175314,"CacheID":1997597,"LogGuid":"5021a2d1-63be-4e67-ab1b-4c45ecf2e3eb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Das ist doch mal ein schönes Beispiel eines urbanen Caches, der intelligent gemacht ist. <br /><br />Schöne Tour, die viel Spass gemacht hat. Leider ist das Gebiet rund ums Final ziemlich verdreckt und teilweise echt mit Vorsicht zu geniessen. Trotzdem: Fav-Punkt von mir...<br /><br />Gruß<br />Alex","Created":"2012-06-07","Visited":"2012-06-07","UserName":"GrafEssinghausen","MembershipLevel":3,"AccountID":1724814,"AccountGuid":"637708df-0b93-4ff8-a20b-48ed5d1ab2eb","Email":"","AvatarImage":"691d0302-1e78-4fa5-9570-1b5aaf899f5c.jpg","GeocacheFindCount":967,"GeocacheHideCount":13,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 124, "rows": 124 } };
+initalLogs = {"status":"success", "data": [{"LogID":297676999,"CacheID":1997597,"LogGuid":"c542ac7f-4c1e-4ffc-8c30-cceec0ce44db","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wow, doch noch geschafft... <br />Manche Teile und das Konzept selbst fand ich sehr schön, das Finalversteck allerdings nicht so. An der letzten Hürde konnte man etwas länger knabbern und interpretieren. Eine vage Andeutung entpuppte sich aber dann doch noch als heiße Spur, so daß wir diese Aufgabe noch abschließen konnten. <br />Zum Glück waren uns keine Banditen und wilde Tiere auf den Fersen, unter Zeitdruck oder mit Schußwunden mag ich nicht rätseln ;)<br />dfdc","Created":"2013-03-09","Visited":"2013-03-08","UserName":"Geoklops","MembershipLevel":3,"AccountID":2867564,"AccountGuid":"9f5facb2-17b6-4214-a1e9-18c04605dc2c","Email":"","AvatarImage":"535acff7-d181-45e2-9488-cf0683bb3e19.jpg","GeocacheFindCount":1526,"GeocacheHideCount":3,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297456097,"CacheID":1997597,"LogGuid":"fb6eec9b-5d30-4e65-8a5b-adffa3afb239","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Horido, ich hab ihn, Dank einer Teamleistung. <br />Den Einstieg habe ich glücklicherweise schnell gefunden. Am kommenden Tag bin ich mit dem falsch skalierten Zettel dort aufgerauscht. So direkt war nun nix zu machen. Also habe ich die Infos mit zur Koordinate home genommen. Dort bekam ich die nächste Station heraus. Sehr schöne Ecke dort, ich habe mich gefreut, hier wieder einmal einen Besuch machen zu können. Auch hier hatte ich schnell Erfolg, nur was mache ich mit den gefunden Informationen. Von nun an war der Cache dann deutlich schwieriger. Wir haben zu dritt einige Tage rumgedeutelt. Eine unserer Deutungen führte dann auch zum Ergebnis. Alleine hätte ich das nicht so schnell gelöst. Die Unschärfen verstecken hier die Lösung länger als nötig, fanden wir. Die ist aber auch die einzige Kritik (diese erlaube ich mir mal) am Cache. <br /><br />Am Final hat uns ein Vorlogger das Leben etwas erschwert. Wir haben die Dose wieder zum rechten Ort zurück geführt.<br />Von mir gibt es eine Schleife, denn das Konzept des Caches fand ich wirklich gut. Außerdem gab es einiges Sehenswertes dazu.","Created":"2013-03-08","Visited":"2013-03-08","UserName":"cosylight","MembershipLevel":3,"AccountID":2953880,"AccountGuid":"b4445988-f55b-498d-9140-a82020ac2be0","Email":"","AvatarImage":"","GeocacheFindCount":926,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":297455097,"CacheID":1997597,"LogGuid":"573abf18-f05a-4aef-902c-98714689a0b9","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"So, den verlorenen Schatz haben wir schon mal bergen können. Wobei ich ja anmerken muss, daß ich mir ob des Versteckortes recht sicher bin, daß die vorherigen Finder/Verstecker das letzte Teilrätsel nicht in Gänze gelöst oder doch zumindest nicht in Gänze verstanden haben. Somit mussten wir, das Rätselteam \"Reißverschluss\", leider etwas länger in der Kälte und an diesem Ort herumsuchen, als eigentlich nötig gewesen wären. <br /><br />Die Eingangsspur hab ich schon vor langer Zeit immerhin schon mal online ausgemacht. Aber erst, als der Herr Cosylight endlich Premium wurde, kam dieser Schatz wieder ins Radar. Wir teilten brüderlich die Aufgaben und die Verwirrung und hatten nun auch endlich mal herausgefunden, daß nicht jedes Kauderwelsch unverständlich bleiben muss. <br /><br />Danke für die Rätsel und die Stationen, die allesamt an sehr sehenswerten Orten waren. Vor allem der von Station 1 hat mich eine ganze Weile länger behalten, als für die Suche nötig gewesen wäre. <br /><br />Herr Dr. Henry Walton Jones, Jr., wir werden uns in Kürze sicherlich wiedersehen!","Created":"2013-03-08","Visited":"2013-03-08","UserName":"nike1972","MembershipLevel":3,"AccountID":2892759,"AccountGuid":"749fe082-37c5-4439-8855-431c6dba5e77","Email":"","AvatarImage":"d8114f24-3aec-4096-976c-77e4d59ae450.jpg","GeocacheFindCount":1675,"GeocacheHideCount":9,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":294035406,"CacheID":1997597,"LogGuid":"fc2eb4a2-5526-436c-81bf-6fa4e396cf72","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Hier brauchten wir allein für das Finale zwei Anläufe, beim ersten mal war das Finale von städtischen Angestelleten überfüllt. Die anderen tollen Stationen waren auch nicht an einem Tag gemacht.<br /><br />Danke für diesen aufregenden Cache<br /><br />hobatt","Created":"2013-02-16","Visited":"2013-02-14","UserName":"hobatt","MembershipLevel":3,"AccountID":940348,"AccountGuid":"36d0e6e3-91cc-4074-b157-74e7296bd174","Email":"","AvatarImage":"2918f53e-fe84-45aa-9f48-4a24c5f87060.jpg","GeocacheFindCount":3625,"GeocacheHideCount":8,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":293767350,"CacheID":1997597,"LogGuid":"321726fe-0b63-46ff-b055-c398b64cf8c8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Das war nicht unser erster Besuch für diesen Cache...<br />...aber heute konnten wir das Logbuch finden und das ganze zum Abschluß bringen!<br />Gemeinsam mit hobatt machte ich mich mal wieder auf den Weg nach Hannover.<br /><br />Danke an den Owner für diesen Kracher, die komplette Serie ist der Wahnsinn!<br />Jack La Grotta","Created":"2013-02-14","Visited":"2013-02-14","UserName":"Jack La Grotta","MembershipLevel":3,"AccountID":2524398,"AccountGuid":"d4b82b2b-b444-4e3f-a08c-d69e9fc6d717","Email":"","AvatarImage":"a3580e63-cc2f-40bc-98eb-414397a4c5c4.jpg","GeocacheFindCount":3333,"GeocacheHideCount":24,"ChallengesCompleted":51,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":292031329,"CacheID":1997597,"LogGuid":"b5707ecc-f213-471a-91a3-63db0c14e008","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Nachdem wir schon den anderen Teil erleben durften<img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br />wurde Ende letzten Jahres auch dieser in \"Angriff \" genommen!<br />Auch Wir haben diesen in mehreren Etappen absolviert und jede ZS genossen!!!! <br />Heute Mittag konnten wir das Logbuch in den Händen halten<img src=\"/images/icons/icon_smile_tongue.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_approve.gif\" border=\"0\" align=\"middle\" /><br />(Das L-Buch ist recht voll)<br /><img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />Hammmer was Indi da wieder gezaubert hat<img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" /><br /><br /><br />Danke sagt Merliah1","Created":"2013-02-03","Visited":"2013-02-03","UserName":"Merliah1","MembershipLevel":3,"AccountID":5247226,"AccountGuid":"8c771c70-52a4-4d23-9681-4c1b657f98f8","Email":"","AvatarImage":"f541ae7f-f54a-41bd-a512-e1a82af63bb1.jpg","GeocacheFindCount":1950,"GeocacheHideCount":0,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":289745310,"CacheID":1997597,"LogGuid":"2567672f-a760-4c51-92b6-cdfbcd2dc104","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Jo, der hat sich ganz schön gezogen......beim publish hatte ich noch so gar keine Ahnung, worum es geht und was der Indy von uns wollte. Deshalb wurde das ganze erst mal beiseite gelegt - und die Zeit verging. <br />Erst vor ein paar Wochen stieß ich wieder auf dieses Rätsel und ich begab mich abermals daran. Nach intensiver Recherche kam dann auch brauchbares zutage - der Start war gemacht. Die 1.ZS ergab sich über den schwierigeren Weg für mich jedoch erstaunlich flott. Danach war ich wieder schnell auf der richtigen Spur, nur interpretierte ich hier etwas zuuuviel rein, so daß ich mir schließlich einen Tipp holen musste. Da kam auch sofort die Bestätigung: viel zu kompliziert gedacht. Danach war die nächste ZS geknackt und heute endlich machte ich mich auf zum Final - wobei der Cachergott barmherzig mit mir war: lange suchen musste ich nicht......<br /><br />Insgesamt ist dies ein sehr schön ausgearbeiteter MysteryMulti mit stimmigen Stationen, der richtig Spaß machen und man sich auf die Fortsetzung dieser Reihe freut. Dies sind die Caches, die dieses Hobby ausmachen! Mehr davon!......ein Schleifchen ist Ehrensache.<br /><br />--- T4TC ---","Created":"2013-01-16","Visited":"2013-01-16","UserName":"DeLaTrick","MembershipLevel":3,"AccountID":3696982,"AccountGuid":"44cfcd2c-d3f9-49b8-828a-9f692939f7ab","Email":"","AvatarImage":"9aeb67b2-40e5-4532-8443-312222cd0e4f.jpg","GeocacheFindCount":3963,"GeocacheHideCount":1,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":287979054,"CacheID":1997597,"LogGuid":"aaa8676e-be1b-4f91-a1fb-7eb6e66b3ed7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Didn't find it","LogTypeImage":"3.png","LogText":"hier sind wir heute schon am start gescheitert.<br />zwar haben wir den ausgangsort, wie uns später bestätigt wurde, richtig gefunden, dort haben uns aber scheinbar diverse hinterlassenschaften anderer oder archivierter caches in die falsche richtung geführt.<br />dann schloss sich das zeitfenster und wir hatten heute keine möglichket mehr, hier noch weiter zu kommen.<br />vielleicht sollte der owner, um weitere verwirrung zu verhindern, die altlasten mal beseitigen.<br />mal schauen, wann wir es zu einem zweiten versuch nach hannover schaffen.","Created":"2013-01-05","Visited":"2013-01-05","UserName":"die schnucks","MembershipLevel":3,"AccountID":1478522,"AccountGuid":"fbb6d57b-aa25-4917-9090-d766e8516d20","Email":"","AvatarImage":"e70b7715-2beb-413f-ab91-8995bcc2f5a9.jpg","GeocacheFindCount":949,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":287615679,"CacheID":1997597,"LogGuid":"e3ac23a1-4af6-4319-9b47-0179a1fac335","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Beim Weihnachtsmarkt zufällig auf den Start gestossen, dann zwischen den Jahren etwas geforscht und auf einmal hatten wir überraschenderweise die Dose in der Hand.<br />Aber jetzt soll es ja erst losgehen....","Created":"2013-01-04","Visited":"2012-12-28","UserName":"Zab13","MembershipLevel":3,"AccountID":5041977,"AccountGuid":"091aaf9d-0c38-4f41-956b-51dbcb087d24","Email":"","AvatarImage":"bd5c3de5-c261-433d-8b80-2463b6e32a36.gif","GeocacheFindCount":562,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":286019562,"CacheID":1997597,"LogGuid":"d7ae5c34-6902-49f6-bef7-c8fb0e4c9a77","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Im Dreierteam gesucht und gefunden. Tolle Raetsel, das Final ein wenig zu schwach, hat aber trotzdem Spass gemacht. Dauer mit 2 kleinen Autofahrten (a ca. ~6 km) lag bei 4 Stunden.<br />Im Frühjahr kommt dann Bonus und Teil 2 dran.<br />Alles in allem ein Fav.-Pkt. Wert.","Created":"2012-12-29","Visited":"2012-12-28","UserName":"noeckerli","MembershipLevel":3,"AccountID":2286299,"AccountGuid":"0400dbd1-dc84-4d7c-bf54-28ea45fe14bd","Email":"","AvatarImage":"c92a987d-2a1a-4ae5-bac5-ff9af4a447a7.jpg","GeocacheFindCount":355,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285190211,"CacheID":1997597,"LogGuid":"0df1be28-9fa5-4e3f-bb31-e62e2614992e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Den kann man wirklich nur im Team gut lösen. Driskos hatte sehr gut vorgearbeitet aber auch am Final mussten wir und Le Bock noch laaange suchen bis die entscheidende Information gefunden war. In mehreren Etappen heute erfolgreich gefunden. Eine nette vorweihnachtliche Überraschung. Der Bonus scheint auch geknackt zu sein. Das werden wir uns die Tage mal ansehen. Da freuen wir uns schon drauf. DFDC.<br />Natürlich ist das einen FAV wert.","Created":"2012-12-24","Visited":"2012-12-22","UserName":"geritors","MembershipLevel":3,"AccountID":1849979,"AccountGuid":"2feb648f-2f98-4f2a-a2d3-f88848cf334e","Email":"","AvatarImage":"","GeocacheFindCount":2297,"GeocacheHideCount":0,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285188952,"CacheID":1997597,"LogGuid":"5df4c99d-5c29-4b03-8f3c-5f83fab2338e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nachdem DRISKOS hier schon vorgearbeitet hatte, konnten er, GERITORS und ich heute die Restarbeiten erledigen. Am Finale zog sich die Suche wegen Dunkelheit erheblich in die Länge. Doch dann war das Glück uns hold und die Dose unser. Eine feine Sachel die richtig Spaß gemacht hat. DFDC","Created":"2012-12-24","Visited":"2012-12-22","UserName":"le Bock","MembershipLevel":3,"AccountID":1988166,"AccountGuid":"6905cd04-cdc9-4680-8db2-be5398cbaf64","Email":"","AvatarImage":"ffe95982-32c3-436d-8d81-007f00683217.jpg","GeocacheFindCount":3479,"GeocacheHideCount":4,"ChallengesCompleted":8,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284997331,"CacheID":1997597,"LogGuid":"971ccb0a-3e79-479c-b774-a94c40054500","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Joo, wie im Listing beschrieben hat der sich ganz schön in die Länge gezogen. Etwas Hilfe war auch noch erforderlich. <br />Nachdem der Start und die ZS zum Teil einzeln ausgearbeitet wurden, haben LeBock, geritors und ich uns heute an der Final-Location getroffen. Es war dunkel, kalt und nass. Nach ca. 1/2 h hatten wir es aber geschafft. Das Döschen war entdeckt.<br />Sehr schöne Ideen, die uns lange beschäftigt haben. <br /><br />Danke für das kleine Abenteuer. <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br /> __o driskos<br />_`\\<,_<br />(*)/ (*)<br />---------------","Created":"2012-12-23","Visited":"2012-12-22","UserName":"driskos","MembershipLevel":3,"AccountID":1176435,"AccountGuid":"ead42c32-b7ad-4a38-93dc-7d1af5da94f2","Email":"","AvatarImage":"ce1a44ae-00f3-4eda-bfba-03e73fc7cda8.jpg","GeocacheFindCount":1582,"GeocacheHideCount":22,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":275052035,"CacheID":1997597,"LogGuid":"bfdce334-fc48-426a-8088-fb3d18e630fe","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wirklich schöne Ideen sind in diesem Cache integriert, wofür sich auch die etwas weiteren Wege zwischen den Stationen lohnen. Am mit einem mobilen Cachemobil ist auch das kein Problem. Nur irgendwie hatten wir uns auch auf mehr Stationen eingestellt und somit waren wir am Final ziemlich erstaunt, als wir plötzlich eine Dose mit Logbuch in der Hand hielten ;-) Somit heisst es jetzt also: Auf zu den nächsten Teilen!<br /><br />Dnake sagt,<br />Team mcruiser","Created":"2012-10-22","Visited":"2012-10-19","UserName":"mcruiser","MembershipLevel":3,"AccountID":2871577,"AccountGuid":"b9304189-bc78-46ad-8030-de65273ab51f","Email":"","AvatarImage":"db316631-c9a7-445d-abaf-a8f279395c3e.jpg","GeocacheFindCount":751,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":274038781,"CacheID":1997597,"LogGuid":"34c782af-80bb-4cf8-b24a-f3f95dd17392","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Sehr sehr schön gemacht, nur warum war er so schnell vorbei? Da standen wir nun und hatten die Barmherzigkeit gefunden ... Schöne Statíonen, Klasse umsetzung. TFTC und Gruß Team Zaboe","Created":"2012-10-19","Visited":"2012-10-19","UserName":"Zaboe","MembershipLevel":1,"AccountID":1317590,"AccountGuid":"f0e14fc7-7199-425c-8d27-7d7b9713bf40","Email":"","AvatarImage":"1bdd7883-33ef-40fe-b422-59b07b196be3.jpg","GeocacheFindCount":3317,"GeocacheHideCount":73,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":269970920,"CacheID":1997597,"LogGuid":"deae18a7-b101-486e-ad07-8026343d765d","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Endlich geschafft...Hat lange gedauert und war jede Minute Einsatz wert.<br />Vielen Dank für die Herausforderung...<br />DFDC und Fav. Punkt","Created":"2012-09-30","Visited":"2012-09-26","UserName":"leonberger307","MembershipLevel":3,"AccountID":1179496,"AccountGuid":"d017e12b-83b3-4ec9-bd05-54cbb0d9c150","Email":"","AvatarImage":"112aa46e-fe0a-464c-990e-6bff1c61bda7.jpg","GeocacheFindCount":2528,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":256692614,"CacheID":1997597,"LogGuid":"0b464bea-2c26-4f71-a750-4503a55e901f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Was soll ich nur schreiben, was noch nicht geschrieben wurde?<br />Obwohl ich ja schon einige von Indi gemacht habe, wird man jedesmal wieder positiv überrascht.<br />Da ich nicht oft nach Hannover komme, musst ich diesen mysteriösen Multi stückeln um zum gewünschten Erfolg zu kommen. <br />Vielen Dank für diese tolle Tour, die natürlich (wie schon so oft bei den Indi-Dosen) eine blaue Schleife bekommt.<br /><br />Schöne Grüße,<br />Majoti","Created":"2012-08-11","Visited":"2012-08-11","UserName":"Majoti","MembershipLevel":3,"AccountID":3432542,"AccountGuid":"1ec93712-382c-4859-aa64-1eca126b5914","Email":"","AvatarImage":"22a4b94a-a38b-4db1-8ac3-0582a6281759.jpg","GeocacheFindCount":1665,"GeocacheHideCount":16,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":255282680,"CacheID":1997597,"LogGuid":"f7cb6941-dcea-4c31-ba43-f3d9d3cf3862","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Irgendwie fehlte immer die Zeit mit dieser tollen Serie endlich einmal anzufangen.<br />Dies wurde dann in den letzten Tagen in kleinen Mittagspausenetappen peu a peu nachgeholt.<br /><br />Schnell waren wir gefangen von den tollen Rätseln, die - ohne viel übertriebenem Pomp - die Stimmung der Filme gut eingefangen haben.<br /><br />Wie bei guten Filmen schwang dann heute mit dem Fund des Finals auch ein wenig Wehmut - wie schon vorbei? - mit.<br />Glücklicherweise haben wir ja noch 3 Teile dieser tollen Serie vor uns, auf die wir uns freuen können <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Die Wurms bedanken sich für diesen tollen ersten Teil und steigen ein in die Planung von Bonus, Teil 2 und Megabonus","Created":"2012-08-06","Visited":"2012-08-06","UserName":"Wurms","MembershipLevel":3,"AccountID":1807277,"AccountGuid":"77ee9fa9-15ae-49f6-9fea-1a9617fd69e2","Email":"","AvatarImage":"4dcfbc24-ff19-439d-bc08-78eea619a9ad.jpg","GeocacheFindCount":1180,"GeocacheHideCount":3,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":248418841,"CacheID":1997597,"LogGuid":"fa0a5d50-393b-42cf-be22-04e92fcc406c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Geschafft! Aus Zeitgründen in mehreren Etappen die Angaben für den Bonus erarbeitet (auch dieser wird wieder eine separate Etappe). SEHR schöne Rätsel, wie von Indy nicht anders erwartet.<br />Freuen uns schon auf den Bonus und vor allem auf Teil 2!<br /><br />TFTC!<br /><br />Und natürlich gibt es hier einen FAV-Punkt!","Created":"2012-07-12","Visited":"2012-07-11","UserName":"Bergwerksdirektor","MembershipLevel":3,"AccountID":1953807,"AccountGuid":"a48e7098-1972-4401-8dda-92e242fda777","Email":"","AvatarImage":"2f8cb388-7ef0-4b76-8e4b-2de047e69d8e.jpg","GeocacheFindCount":2599,"GeocacheHideCount":11,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":248535464,"CacheID":1997597,"LogGuid":"73524950-f7ab-4f42-9152-7867210357ca","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Puh, das war eine harte Nuss. Es bedurfte mehrerer Anläufe und der tatkräftigen Hilfe eines größeren Herrns, bis wir endlich vor dem Final standen. Tolle Locations, knackige Rätsel, abwechslungsreiche Stationen,so macht Geocaching richtig Spaß. Und das Beste: Mit diesem Fund ist unsere Matrix voll. Ich freue mich schon auf Teil 2.<br />Danke für für diesen Supercache, das ist einen FP wert.","Created":"2012-07-12","Visited":"2012-07-08","UserName":"I Carbonari","MembershipLevel":3,"AccountID":2941642,"AccountGuid":"3b9ac9a6-3d82-48aa-ab00-caf78d1de23a","Email":"","AvatarImage":"","GeocacheFindCount":1397,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":247532751,"CacheID":1997597,"LogGuid":"57ea561d-40ad-4dee-bfe7-a2cef652ebc6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Mit den ausgezeichnet ausgewählten Stationen und den zugehörigen tollen Rätseln konnte ich sehr gut in die Rolle des Indiana Jones schlüpfen. Das war eine klasse Runde!<br /><br />An der schönen Finallokation zelebrierten die manchmal hier anzutreffenden Bacchus-Muggel aufgrund des vorangegangen Regens wahrscheinlich anderorts, so dass sich das Final relativ ungestört finden lies.<br /><br />DfdC, der von mir einen FP bekommt.","Created":"2012-07-08","Visited":"2012-07-08","UserName":"CaptnSharky","MembershipLevel":3,"AccountID":3673438,"AccountGuid":"357368ce-02f6-4419-8ba7-279afe889345","Email":"","AvatarImage":"c4a9b686-1602-4ee2-a252-2ba59921867d.jpg","GeocacheFindCount":776,"GeocacheHideCount":1,"ChallengesCompleted":2,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":245388909,"CacheID":1997597,"LogGuid":"b8a06f0a-05e6-4dea-ab27-53a5f0026e51","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Vor einem halben Jahr hatte ich endlich die richtige Idee wo die Schattenlinie zu finden ist. Aber wieso steht in den Attributen das Kletterausrüstung benötigt wird ? Sicherheitshalber noch mal den Owner kontaktiert, Entwarnung ! Passenderweise bin ich den Tag drauf in der Nähe des Starts, wo ich schon zwei Wochen zuvor nichtsahnend gewesen bin...<br /><br />Der Start: Es ist dunkel. Es ist ein LP mitten in der City !. Niemand da. Das was ich suche, finde ich nicht. Dafür etwas anderes Brauchbares. Also auf gut Glück versucht. Und siehe da: Erfolg ! Aber was ist das: wo zeigen die KOs hin ? Doch klettern ? Kurz die Gegend abgecheckt, Spoiler rausgekramt... Erneut Entwarnung. Kleinen Umweg für den nächsten Tag eingeplant.<br /><br />ZS1: Ich bin ganz allein auf dem großen Gelände. Da es schon dunkel wird kommt richtig Grusel-Stimmung auf. Die ZS kann ich schnell finden. Zum Enträtseln vor Ort ist es mir aber zu kalt.<br /><br />ZS2: Die Location kann zügig ermittelt werden. Da ich nur sehr selten in dieser Gegend bin übernimmt ein befreundeter Cacher die \"Besorgung\".<br /><br />Finale: Zusammen mit JoSaMaJa suche ich erneut das Finale auf nach dem ich unter der Woche keinen Erfolg hatte (starker Regen & nichtseßhafte Person direkt vor Ort). Heute haben wir bei diesem LP Erfolg !<br /><br />Fazit: Großes Kino - ein Cache der bei mir das richtige Indianer Jones Feeling aufkommen ließ. Tolle LPs in der Stadt, Archäologen-Tätigkeiten, was will man mehr !","Created":"2012-06-30","Visited":"2012-06-30","UserName":"blafoo","MembershipLevel":3,"AccountID":1912314,"AccountGuid":"0564a940-8311-40ee-8e76-7e91b2cf6284","Email":"","AvatarImage":"50f83123-27d8-4dcf-9fde-2af006efaf2b.jpg","GeocacheFindCount":747,"GeocacheHideCount":8,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":245426156,"CacheID":1997597,"LogGuid":"07775c35-04d0-4aeb-a356-7cd98eb458c2","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ohne Blafoo hätte ich den nie geschafft. Durch Zufall und mit viel Hilfe konnte ich dann auch hier zugreifen. Vielen Dank an den Owner vom Nachbarort!","Created":"2012-06-30","Visited":"2012-06-29","UserName":"JoSaMaJa","MembershipLevel":3,"AccountID":4793174,"AccountGuid":"4d416461-d1a7-4cc5-8ee7-336bb910feb8","Email":"","AvatarImage":"e8a97a05-a051-4da9-bc93-6a830b866aff.jpg","GeocacheFindCount":426,"GeocacheHideCount":4,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241251492,"CacheID":1997597,"LogGuid":"87247535-a79a-468e-985e-5d99abd07729","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"<img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /> Nr. 2.000 <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Schon vor einiger Zeit haben wir überlegt, was wohl ein würdiger Cache für unser Jubiläum sein könnte. Schnell einigten wir uns darauf, dafür den Spuren des Indianer Jones zu folgen.<br />Also den Schlapphut aufgesetzt und die Peitsche aus der SM-Schublade geschnappt und los ging's! Von Station zu Station hangelten wir uns Prof-Jones-like vorwärts und wurden heute mit dem Fund der Dose punktgenau nach dem 1999. gestern belohnt! <br />Die Wahl war die richtige: Ein ganz toller Cache, der uns sehr viel Spaß gemacht hat und an den wir uns jetzt immer, wenn wir unsere Statistik ansehen, erinnern können. Natürlich gibt's dafür einen Favoritenpunkt von uns. Dann noch ein herzliches Dankeschön und viele Grüße an Indi, den Merlyn und Reflektordetektor!<br /><br />P.S. Wir freuen uns schon auf Teil 2. Hoffen aber, dass wir ihn vor dem 3000. finden werden!<br />P.P.S. Vielen Dank an die Baumfee und den Schnatzfänger für die Begleitung, die Glückwünsche und das Erinnerungsfoto!","Created":"2012-06-10","Visited":"2012-06-10","UserName":"4Engel","MembershipLevel":3,"AccountID":2473723,"AccountGuid":"e5356bcb-f3b4-4b90-89a7-e01fb70d5ebb","Email":"","AvatarImage":"1eafbd7c-d6e2-4f57-86bf-05f316ec9026.jpg","GeocacheFindCount":2398,"GeocacheHideCount":20,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":241063085,"CacheID":1997597,"LogGuid":"0b32b7a8-2a91-465a-8917-00f15371cbc7","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"# 1691 - als uns die 4Engel vor einigen Tagen ansprachen, ob wir gemeinsam diesen Indiana Jones Cache angehen wollen, war ich sofort \"Feuer und Flamme\". Schließlich hat man diese Filme schon mehrfach im Kino bzw. im Fernsehen mit Begeisterung angeschaut.<br />In mehreren Etappen haben wir uns dem Final genähert. Bei der Sucherei und Recherche konnte man<br />gut in die Rolle des Dr. Jones schlüpfen. Besonders gut gefallen hat mir dabei die Station 1.<br />Für diesen etwas anderen Cache bedanke ich mich beim Owner und natürlich bei dem Team - Schnatzfänger<br /><br />Werden weitere Abenteuer folgen??? Auf jeden Fall erst einmal einen Fav.-Punkt.<br />Die 4Engel hatten heute ein weiteren Grund zum Feiern - dieser besondere Cache war die Nr. 2000","Created":"2012-06-10","Visited":"2012-06-10","UserName":"Schnatzfänger","MembershipLevel":3,"AccountID":3963266,"AccountGuid":"deef3a33-242e-44a3-9520-30105d838d7b","Email":"","AvatarImage":"bc17b3a6-29ee-427d-b819-755b1e6986e3.jpg","GeocacheFindCount":2472,"GeocacheHideCount":4,"ChallengesCompleted":3,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[{"ImageID":14387354,"ImageGuid":"7f0e3db3-8969-4c35-a14d-f0af69f0b652","Name":"die glücklichen 4Engel","Descr":"Glückwunsch zum 2000. Cache am 10.06.2012","FileName":"7f0e3db3-8969-4c35-a14d-f0af69f0b652.jpg","Created":"2012-06-10","LogID":241063085,"CacheID":1997597,"ImageUrl":null}]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 125, "rows": 125 } };
$(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var gaToken = 'UA-2020240-1';//]]>
</script>
</form>
@@ -2053,6 +2078,6 @@ $(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', </noscript>
</div>
<!-- End Quantcast tag -->
- <!-- Server: WEB14; Build: Web.HotFix_20130305.1 -->
+ <!-- Server: WEB09; Build: Web.Release_20130319.1 -->
</body>
</html>
diff --git a/tests/src/cgeo/geocaching/test/mock/GC3XX5J.html b/tests/src/cgeo/geocaching/test/mock/GC3XX5J.html index db89925..6cd1881 100644 --- a/tests/src/cgeo/geocaching/test/mock/GC3XX5J.html +++ b/tests/src/cgeo/geocaching/test/mock/GC3XX5J.html @@ -76,15 +76,15 @@ } })(); </script> -<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?wp=GC3XX5J&Submit6=Go" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 1.5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/2.png" property="og:image" /><meta name="og:title" content="Zaraščen Tir" property="og:title" /><meta name="description" content="Zaraščen Tir (GC3XX5J) was created by David & Ajda on 10/01/2012. It's a Small size geocache, with difficulty of 1.5, terrain of 2. It's located in Slovenia. Kadar zbolimo nam pomaga...When we get sick, they are helpful... SLO:tir je danes zapuščen, včasih pa so ga uporabljala različna podjetja, da so po njem dostavljali material in odvažali končne izdelke." /></head> +<meta name="og:site_name" content="Geocaching.com" property="og:site_name" /><meta name="og:type" content="article" property="og:type" /><meta name="fb:app_id" content="251051881589204" property="fb:app_id" /><meta name="og:url" content="http://www.geocaching.com/seek/cache_details.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265" property="og:url" /><meta name="og:description" content="Use a smartphone or GPS device to navigate to the provided coordinates. Look for a small hidden container. When you find it, write your name and date in the logbook. If you take something from the container, leave something in exchange. The terrain is 2 and difficulty is 1.5 (out of 5)." property="og:description" /><meta name="og:image" content="http://www.geocaching.com/images/facebook/wpttypes/2.png" property="og:image" /><meta name="og:title" content="Zaraščen Tir" property="og:title" /><meta name="description" content="Zaraščen Tir (GC3XX5J) was created by David & Ajda on 10/01/2012. It's a Small size geocache, with difficulty of 1.5, terrain of 2. It's located in Slovenia. Kadar zbolimo nam pomaga...When we get sick, they are helpful... SLO:tir je danes zapuščen, včasih pa so ga uporabljala različna podjetja, da so po njem dostavljali material in odvažali končne izdelke." /><link rel="alternate" href="../datastore/rss_galleryimages.ashx?guid=51e40dec-6272-4dad-934b-e175daaac265" type="application/rss+xml" title="[Gallery Images]" id="GalleryImages" /></head> <body background="https://lh6.googleusercontent.com/-PoDn9PmtYmg/UGnOZLEQboI/AAAAAAAAAHM/hBXxerWnSdA/s254/lek-verovskova.jpg" class="CacheDetailsPage"> - <form name="aspnetForm" method="post" action="cache_details.aspx?wp=GC3XX5J&Submit6=Go" id="aspnetForm"> + <form name="aspnetForm" method="post" action="cache_details.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265" id="aspnetForm"> <div> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATEFIELDCOUNT" id="__VIEWSTATEFIELDCOUNT" value="2" /> -<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzMyMjA2NzIWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFlQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZndwJTNkR0MzWFg1SiUyNlN1Ym1pdDYlM2RHb2RkAgsPFgIfAQUQNDE5IENhY2hlcyBGb3VuZGQCEQ8WAh8DZxYCAg0PDxYCHwUFQH4vdHJhY2svc2VhcmNoLmFzcHg/bz0xJnVpZD00ZDQxNjQ2MS1kMWE3LTRjYzUtOGVlNy0zMzZiYjkxMGZlYjhkZAIXDw8WAh8DZ2RkAiEPFgIfA2dkAk8PZBYEAgMPFgIfAQUHRW5nbGlzaGQCBQ8WAh4LXyFJdGVtQ291bnQCEhYkZg9kFgICAQ8PFggeD0NvbW1hbmRBcmd1bWVudAUFZW4tVVMeC0NvbW1hbmROYW1lBQ1TZXRUZW1wTG9jYWxlHwEFB0VuZ2xpc2geEENhdXNlc1ZhbGlkYXRpb25oZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCCA9kFgICAQ8PFggfBwUFaXQtSVQfCAUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8JaGRkAgkPZBYCAgEPDxYIHwcFBWVsLUdSHwgFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8JaGRkAgoPZBYCAgEPDxYIHwcFBWx2LUxWHwgFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwloZGQCCw9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCDA9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCDQ9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAIOD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDw9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIQD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAhEPZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAIRD2QWAgIDDxYCHwNoZAITDxYCHgVjbGFzcwUMc3Bhbi0yNCBsYXN0FgICAQ9kFioCAQ9kFgJmD2QWAgIBDw8WAh8BBQdHQzNYWDVKZGQCAg8WAh8BBaYBPGEgaHJlZj0iL2Fib3V0L2NhY2hlX3R5cGVzLmFzcHgiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iQWJvdXQgQ2FjaGUgVHlwZXMiPjxpbWcgc3JjPSIvaW1hZ2VzL1dwdFR5cGVzLzIuZ2lmIiBhbHQ9IlRyYWRpdGlvbmFsIENhY2hlIiB0aXRsZT0iVHJhZGl0aW9uYWwgQ2FjaGUiIC8+PC9hPmQCBg9kFgQCAQ8WAh8DZ2QCBg8WAh8DaGQCCw9kFgQCAQ8WAh8BBQExZAIFDw8WAh8FBUQvc2Vlay9jYWNoZV9mYXZvcml0ZWQuYXNweD9ndWlkPTUxZTQwZGVjLTYyNzItNGRhZC05MzRiLWUxNzVkYWFhYzI2NWRkAg0PDxYCHwNoZGQCEA8WAh8DaGQCEQ8WAh8DaGQCEg9kFgwCAw8WAh4Fc3R5bGUFD2Rpc3BsYXk6aW5saW5lOxYCAgEPFgIfAQUbVVRNOiAzM1QgRSA0NjEzNDAgTiA1MTAzMTA5ZAINDw8WAh8FBTNjZHBmLmFzcHg/Z3VpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjVkZAIPDw8WAh8FBThjZHBmLmFzcHg/Z3VpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjUmbGM9NWRkAhEPDxYCHwUFOWNkcGYuYXNweD9ndWlkPTUxZTQwZGVjLTYyNzItNGRhZC05MzRiLWUxNzVkYWFhYzI2NSZsYz0xMGRkAhMPDxYEHwUFemh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9mPWQmaGw9ZW4mc2FkZHI9NTIuMjE2MjUsOS43MTQ0ODMgKEhvbWUgTG9jYXRpb24pJmRhZGRyPTQ2LjA4MDQ2NywxNC41KFphcmElYzUlYTElYzQlOGRlbitUaXIpHgZUYXJnZXQFBl9ibGFua2RkAhsPZBYIAgEPDxYEHglGb3JlQ29sb3IMHgRfIVNCAgRkZAIDDw8WBB8NDB8OAgRkZAIFDw8WAh8DZxYCHgdvbmNsaWNrBTtzMmdwcygnNTFlNDBkZWMtNjI3Mi00ZGFkLTkzNGItZTE3NWRhYWFjMjY1Jyk7cmV0dXJuIGZhbHNlO2QCBw8PFgIfA2cWAh8PBSBzMnBob25lKCdHQzNYWDVKJyk7cmV0dXJuIGZhbHNlO2QCFA8WAh8DZ2QCFw9kFghmDxYCHwNoZAIBDw8WAh8DaGRkAgIPDxYCHwNoZGQCAw8WAh8DaGQCGA9kFgICAw8PFgIfAQUHRGVjcnlwdGRkAhkPFgIfAQVCQnF6bnhhdiB4bnpyYSBibyBndmVoIC8gRXJ6YmlyIGd1ciBmZ2JhciBqdnB1IHl2cmYgb3JmdnFyIGd1ciBlbnZ5ZAIcDxYCHwNoZAIdDw8WAh8DaGQWAgIDDw8WAh8DaGRkAh4PFgIfA2dkAh8PFgIfA2hkAiIPZBYCAgMPFgIeCWlubmVyaHRtbAUTQWR2ZXJ0aXNpbmcgd2l0aCBVc2QCJg9kFgQCBQ8PFgIfA2dkZAIJDw8WAh8FBTx+L3RyYWNrL3NlYXJjaC5hc3B4P3dpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjVkZAIpD2QWEgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwUFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjUmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXZHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNzb24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDgxMi4xODA3NSwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsAR4HUldQVC5JRCgrBAczMjIwNjcyHwNoZGQCCQ8PFgIfA2dkFgICAQ8PFgQfBQUoL21hcC9kZWZhdWx0LmFzcHg/bGF0PTQ2LjA4MDQ2NyZsbmc9MTQuNR8DZ2RkAg8PFgIfAQWRAS4uLm90aGVyIGNhY2hlcyA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dT1EYXZpZCslMjYrQWpkYSI+aGlkZGVuPC9hPiBvciA8YSBocmVmPSIvc2Vlay9u" /> -<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="ZWFyZXN0LmFzcHg/dWw9RGF2aWQrJTI2K0FqZGEiPmZvdW5kPC9hPiBieSB0aGlzIHVzZXJkAhEPZBYGAgEPFgIfAQWBAi4uLm5lYXJieSA8YSBocmVmPSIvc2Vlay9uZWFyZXN0LmFzcHg/dHg9MzJiYzkzMzMtNWU1Mi00OTU3LWIwZjYtNWEyYzhmYzdiMjU3JmxhdD00Ni4wODA0NjcmbG5nPTE0LjUwMDAwMCI+Y2FjaGVzIG9mIHRoaXMgdHlwZTwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD0zMmJjOTMzMy01ZTUyLTQ5NTctYjBmNi01YTJjOGZjN2IyNTcmbGF0PTQ2LjA4MDQ2NyZsbmc9MTQuNTAwMDAwJmY9MSI+dGhhdCBJIGhhdmVuJ3QgZm91bmQ8L2E+ZAIDDxYCHwEFqAEuLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NDYuMDgwNDY3JmxuZz0xNC41MDAwMDAiPmNhY2hlczwvYT4sIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD9sYXQ9NDYuMDgwNDY3JmxuZz0xNC41MDAwMDAmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgUPFgIfAQV/Li4uYWxsIG5lYXJieSA8YSBocmVmPSJodHRwOi8vd3d3LndheW1hcmtpbmcuY29tL2RpcmVjdG9yeS5hc3B4P2Y9MSZsYXQ9NDYuMDgwNDY3Jmxvbj0xNC41MDAwMDAiPndheW1hcmtzIG9uIFdheW1hcmtpbmcuY29tPC9hPmQCEw8WAh8DaGQCFw9kFgICAQ8PFgQfAQWgBzxsaT48YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NhY2hpbmcuY29tL21hcC9kZWZhdWx0LmFzcHg/bGF0PTQ2LjA4MDQ3JmxuZz0xNC41IiB0YXJnZXQ9Il9ibGFuayI+R2VvY2FjaGluZy5jb20gTWFwPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLmdvb2dsZS5jb20vbWFwcz9xPU4rNDYlYzIlYjArMDQuODI4K0UrMDE0JWMyJWIwKzMwLjAwMCsoR0MzWFg1SikrIiB0YXJnZXQ9Il9ibGFuayI+R29vZ2xlIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5tYXBxdWVzdC5jb20vbWFwcy9tYXAuYWRwP3NlYXJjaHR5cGU9YWRkcmVzcyZmb3JtdHlwZT1sYXRsb25nJmxhdGxvbmd0eXBlPWRlY2ltYWwmbGF0aXR1ZGU9NDYuMDgwNDcmbG9uZ2l0dWRlPTE0LjUmem9vbT0xMCIgdGFyZ2V0PSJfYmxhbmsiPk1hcFF1ZXN0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYXBzLnlhaG9vLmNvbS8jbGF0PTQ2LjA4MDQ3Jmxvbj0xNC41Jnpvb209MTYmcT00Ni4wODA0NywxNC41JmNvbmY9MSZzdGFydD0xJm12dD1tJnRyZj0wIiB0YXJnZXQ9Il9ibGFuayI+WWFob28gTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJpbmcuY29tL21hcHMvZGVmYXVsdC5hc3B4P3Y9MiZsdmw9MTQmc3A9cG9pbnQuNDYuMDgwNDdfMTQuNV9HQzNYWDVKIiB0YXJnZXQ9Il9ibGFuayI+QmluZyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmN5Y2xlbWFwLm9yZy8/em9vbT0xMiZsYXQ9NDYuMDgwNDcmbG9uPTE0LjUiIHRhcmdldD0iX2JsYW5rIj5PcGVuQ3ljbGVNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy8/bWxhdD00Ni4wODA0NyZtbG9uPTE0LjUmem9vbT0xMiIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+PC9saT4fA2dkZAIbD2QWBgIBDxYCHwEFEDc5IExvZ2dlZCBWaXNpdHNkAgcPDxYCHwUFQ34vc2Vlay9jYWNoZV9sb2dib29rLmFzcHg/Z3VpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjVkZAIJDw8WBB8FBT1+L3NlZWsvZ2FsbGVyeS5hc3B4P2d1aWQ9NTFlNDBkZWMtNjI3Mi00ZGFkLTkzNGItZTE3NWRhYWFjMjY1HwEFFlZpZXcgdGhlIEltYWdlIEdhbGxlcnlkZAIqDxYCHwEFBWZhbHNlZAIrDxYCHwEFR2xhdD00Ni4wODA0Njc7IGxuZz0xNC41OyBndWlkPSc1MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjUnOw0KZAIVDxYCHwNoFgICAQ8PZBYCHwsFDHdpZHRoOjEyMHB4O2QCFw9kFgQCAw8WAh8BBQdFbmdsaXNoZAIFDxYCHwYCEhYkZg9kFgICAQ8PFggfBwUFZW4tVVMfCAUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHwloZGQCAQ9kFgICAQ8PFggfBwUFZGUtREUfCAUNU2V0VGVtcExvY2FsZR8BBQdEZXV0c2NoHwloZGQCAg9kFgICAQ8PFggfBwUFZnItRlIfCAUNU2V0VGVtcExvY2FsZR8BBQlGcmFuw6dhaXMfCWhkZAIDD2QWAgIBDw8WCB8HBQVwdC1QVB8IBQ1TZXRUZW1wTG9jYWxlHwEFClBvcnR1Z3XDqnMfCWhkZAIED2QWAgIBDw8WCB8HBQVjcy1DWh8IBQ1TZXRUZW1wTG9jYWxlHwEFCcSMZcWhdGluYR8JaGRkAgUPZBYCAgEPDxYIHwcFBXN2LVNFHwgFDVNldFRlbXBMb2NhbGUfAQUHU3ZlbnNrYR8JaGRkAgYPZBYCAgEPDxYIHwcFBWVzLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUIRXNwYcOxb2wfCWhkZAIHD2QWAgIBDw8WCB8HBQVldC1FRR8IBQ1TZXRUZW1wTG9jYWxlHwEFBUVlc3RpHwloZGQCCA9kFgICAQ8PFggfBwUFaXQtSVQfCAUNU2V0VGVtcExvY2FsZR8BBQhJdGFsaWFubx8JaGRkAgkPZBYCAgEPDxYIHwcFBWVsLUdSHwgFDVNldFRlbXBMb2NhbGUfAQUQzpXOu867zrfOvc65zrrOrB8JaGRkAgoPZBYCAgEPDxYIHwcFBWx2LUxWHwgFDVNldFRlbXBMb2NhbGUfAQUJTGF0dmllxaF1HwloZGQCCw9kFgICAQ8PFggfBwUFbmwtTkwfCAUNU2V0VGVtcExvY2FsZR8BBQpOZWRlcmxhbmRzHwloZGQCDA9kFgICAQ8PFggfBwUFY2EtRVMfCAUNU2V0VGVtcExvY2FsZR8BBQdDYXRhbMOgHwloZGQCDQ9kFgICAQ8PFggfBwUFcGwtUEwfCAUNU2V0VGVtcExvY2FsZR8BBQZQb2xza2kfCWhkZAIOD2QWAgIBDw8WCB8HBQVuYi1OTx8IBQ1TZXRUZW1wTG9jYWxlHwEFDk5vcnNrLCBCb2ttw6VsHwloZGQCDw9kFgICAQ8PFggfBwUFa28tS1IfCAUNU2V0VGVtcExvY2FsZR8BBQntlZzqta3slrQfCWhkZAIQD2QWAgIBDw8WCB8HBQVodS1IVR8IBQ1TZXRUZW1wTG9jYWxlHwEFBk1hZ3lhch8JaGRkAhEPZBYCAgEPDxYIHwcFBXJvLVJPHwgFDVNldFRlbXBMb2NhbGUfAQUIUm9tw6JuxIMfCWhkZAJLDxYCHwEFECZjb3B5OyAyMDAwLTIwMTNkAgMPFgIfAQUrU2VydmVyOiBXRUIxNDsgQnVpbGQ6IFdlYi5Ib3RGaXhfMjAxMzAzMDUuMWRkt3d9B0qvuX8L1Hd6xudtLXs61Aw=" /> +<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc2NzEwMTEyNw8WAh4EQy5JRCgpWVN5c3RlbS5JbnQ2NCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BzMyMjA2NzIWAmYPZBYGZg9kFgoCBg8WAh4EVGV4dAViPG1ldGEgbmFtZT0iQ29weXJpZ2h0IiBjb250ZW50PSJDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIgLz5kAgcPFgIfAQVHPCEtLSBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMyBHcm91bmRzcGVhaywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAtLT5kAhkPFgIeBGhyZWYFHX4vY3NzL3Rsbk1hc3RlclNjcmVlbi5jc3M/cj0xZAIaDxYCHwIFFX4vY3NzL3Rsbk1haW4uY3NzP3I9MWQCHw8WAh4HVmlzaWJsZWhkAgEPZBYOAgsPFgIfAWRkAg0PZBYKAgcPFgIfA2cWCAIBDw8WAh4ISW1hZ2VVcmwFTmh0dHA6Ly9pbWcuZ2VvY2FjaGluZy5jb20vdXNlci9hdmF0YXIvZThhOTdhMDUtYTA1MS00ZGE5LWJjOTMtNmE4MzBiODY2YWZmLmpwZ2RkAgMPFgIfAQVsSGVsbG8sIDxhIGhyZWY9Ii9teS9kZWZhdWx0LmFzcHgiIHRpdGxlPSJWaWV3IFByb2ZpbGUgZm9yIEpvU2FNYUphIiBjbGFzcz0iU2lnbmVkSW5Qcm9maWxlTGluayI+Sm9TYU1hSmE8L2E+ZAIFDw8WAh4LTmF2aWdhdGVVcmwFpQFodHRwczovL3d3dy5nZW9jYWNoaW5nLmNvbS9sb2dpbi9kZWZhdWx0LmFzcHg/UkVTRVQ9WSZyZWRpcj1odHRwJTNhJTJmJTJmd3d3Lmdlb2NhY2hpbmcuY29tJTJmc2VlayUyZmNhY2hlX2RldGFpbHMuYXNweCUzZmd1aWQlM2Q1MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjVkZAILDxYCHwEFEDQyNiBDYWNoZXMgRm91bmRkAhEPFgIfA2cWAgINDw8WAh8FBUB+L3RyYWNrL3NlYXJjaC5hc3B4P289MSZ1aWQ9NGQ0MTY0NjEtZDFhNy00Y2M1LThlZTctMzM2YmI5MTBmZWI4ZGQCFw8PFgIfA2dkZAIhDxYCHwNnZAJPD2QWBAIDDxYCHwEFB0VuZ2xpc2hkAgUPFgIeC18hSXRlbUNvdW50AhIWJGYPZBYCAgEPDxYIHg9Db21tYW5kQXJndW1lbnQFBWVuLVVTHgtDb21tYW5kTmFtZQUNU2V0VGVtcExvY2FsZR8BBQdFbmdsaXNoHhBDYXVzZXNWYWxpZGF0aW9uaGRkAgEPZBYCAgEPDxYIHwcFBWRlLURFHwgFDVNldFRlbXBMb2NhbGUfAQUHRGV1dHNjaB8JaGRkAgIPZBYCAgEPDxYIHwcFBWZyLUZSHwgFDVNldFRlbXBMb2NhbGUfAQUJRnJhbsOnYWlzHwloZGQCAw9kFgICAQ8PFggfBwUFcHQtUFQfCAUNU2V0VGVtcExvY2FsZR8BBQpQb3J0dWd1w6pzHwloZGQCBA9kFgICAQ8PFggfBwUFY3MtQ1ofCAUNU2V0VGVtcExvY2FsZR8BBQnEjGXFoXRpbmEfCWhkZAIFD2QWAgIBDw8WCB8HBQVzdi1TRR8IBQ1TZXRUZW1wTG9jYWxlHwEFB1N2ZW5za2EfCWhkZAIGD2QWAgIBDw8WCB8HBQVlcy1FUx8IBQ1TZXRUZW1wTG9jYWxlHwEFCEVzcGHDsW9sHwloZGQCBw9kFgICAQ8PFggfBwUFZXQtRUUfCAUNU2V0VGVtcExvY2FsZR8BBQVFZXN0aR8JaGRkAggPZBYCAgEPDxYIHwcFBWl0LUlUHwgFDVNldFRlbXBMb2NhbGUfAQUISXRhbGlhbm8fCWhkZAIJD2QWAgIBDw8WCB8HBQVlbC1HUh8IBQ1TZXRUZW1wTG9jYWxlHwEFEM6VzrvOu863zr3Ouc66zqwfCWhkZAIKD2QWAgIBDw8WCB8HBQVsdi1MVh8IBQ1TZXRUZW1wTG9jYWxlHwEFCUxhdHZpZcWhdR8JaGRkAgsPZBYCAgEPDxYIHwcFBW5sLU5MHwgFDVNldFRlbXBMb2NhbGUfAQUKTmVkZXJsYW5kcx8JaGRkAgwPZBYCAgEPDxYIHwcFBWNhLUVTHwgFDVNldFRlbXBMb2NhbGUfAQUHQ2F0YWzDoB8JaGRkAg0PZBYCAgEPDxYIHwcFBXBsLVBMHwgFDVNldFRlbXBMb2NhbGUfAQUGUG9sc2tpHwloZGQCDg9kFgICAQ8PFggfBwUFbmItTk8fCAUNU2V0VGVtcExvY2FsZR8BBQ5Ob3JzaywgQm9rbcOlbB8JaGRkAg8PZBYCAgEPDxYIHwcFBWtvLUtSHwgFDVNldFRlbXBMb2NhbGUfAQUJ7ZWc6rWt7Ja0HwloZGQCEA9kFgICAQ8PFggfBwUFaHUtSFUfCAUNU2V0VGVtcExvY2FsZR8BBQZNYWd5YXIfCWhkZAIRD2QWAgIBDw8WCB8HBQVyby1STx8IBQ1TZXRUZW1wTG9jYWxlHwEFCFJvbcOibsSDHwloZGQCEQ9kFgICAw8WAh8DaGQCEw8WAh4FY2xhc3MFDHNwYW4tMjQgbGFzdBYCAgEPZBYsAgEPZBYCZg9kFgICAQ8PFgIfAQUHR0MzWFg1SmRkAgIPFgIfAQWmATxhIGhyZWY9Ii9hYm91dC9jYWNoZV90eXBlcy5hc3B4IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IkFib3V0IENhY2hlIFR5cGVzIj48aW1nIHNyYz0iL2ltYWdlcy9XcHRUeXBlcy8yLmdpZiIgYWx0PSJUcmFkaXRpb25hbCBDYWNoZSIgdGl0bGU9IlRyYWRpdGlvbmFsIENhY2hlIiAvPjwvYT5kAgYPZBYEAgEPFgIfA2dkAgYPFgIfA2hkAgsPZBYEAgEPFgIfAQUBMWQCBQ8PFgIfBQVEL3NlZWsvY2FjaGVfZmF2b3JpdGVkLmFzcHg/Z3VpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjVkZAINDw8WAh8DaGRkAhAPFgIfA2hkAhEPFgIfA2hkAhIPZBYMAgMPFgIeBXN0eWxlBQ9kaXNwbGF5OmlubGluZTsWAgIBDxYCHwEFG1VUTTogMzNUIEUgNDYxMzQwIE4gNTEwMzEwOWQCDQ8PFgIfBQUzY2RwZi5hc3B4P2d1aWQ9NTFlNDBkZWMtNjI3Mi00ZGFkLTkzNGItZTE3NWRhYWFjMjY1ZGQCDw8PFgIfBQU4Y2RwZi5hc3B4P2d1aWQ9NTFlNDBkZWMtNjI3Mi00ZGFkLTkzNGItZTE3NWRhYWFjMjY1JmxjPTVkZAIRDw8WAh8FBTljZHBmLmFzcHg/Z3VpZD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjUmbGM9MTBkZAITDw8WBB8FBXpodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/Zj1kJmhsPWVuJnNhZGRyPTUyLjIxNjI1LDkuNzE0NDgzIChIb21lIExvY2F0aW9uKSZkYWRkcj00Ni4wODA0NjcsMTQuNShaYXJhJWM1JWExJWM0JThkZW4rVGlyKR4GVGFyZ2V0BQZfYmxhbmtkZAIbD2QWCAIBDw8WBB4JRm9yZUNvbG9yDB4EXyFTQgIEZGQCAw8PFgQfDQwfDgIEZGQCBQ8PFgIfA2cWAh4Hb25jbGljawU7czJncHMoJzUxZTQwZGVjLTYyNzItNGRhZC05MzRiLWUxNzVkYWFhYzI2NScpO3JldHVybiBmYWxzZTtkAgcPDxYCHwNnFgIfDwUgczJwaG9uZSgnR0MzWFg1SicpO3JldHVybiBmYWxzZTtkAhQPFgIfA2dkAhcPZBYIZg8WAh8DaGQCAQ8PFgIfA2hkZAICDw8WAh8DaGRkAgMPFgIfA2hkAhgPZBYCAgMPDxYCHwEFB0RlY3J5cHRkZAIZDxYCHwEFQkJxem54YXYgeG56cmEgYm8gZ3ZlaCAvIEVyemJpciBndXIgZmdiYXIganZwdSB5dnJmIG9yZnZxciBndXIgZW52eWQCHA8WAh8DaGQCHQ8PFgIfA2hkFgICAw8PFgIfA2hkZAIeDxYCHwNnZAIfDxYCHwNoZAIiD2QWAgIDDxYCHglpbm5lcmh0bWwFE0FkdmVydGlzaW5nIHdpdGggVXNkAiYPZBYEAgUPDxYCHwNnZGQCCQ8PFgIfBQU8fi90cmFjay9zZWFyY2guYXNweD93aWQ9NTFlNDBkZWMtNjI3Mi00ZGFkLTkzNGItZTE3NWRhYWFjMjY1ZGQCKA8PFgIfA2dkFgJmDxYCHwYCARYCAgEPZBYCZg8VAgDdATxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vYm9va21hcmtzL3ZpZXcuYXNweD9ndWlkPTE0NTUxNzA4LTBjM2MtNGY5NS05MzQyLTFiYjMxMTllNmVmZSI+Y2dlbyBtb2NrczwvYT48YnIgLz4gYnkgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jYWNoaW5nLmNvbS9wcm9maWxlLz9ndWlkPTRkNDE2NDYxLWQxYTctNGNjNS04ZWU3LTMzNmJiOTEwZmViOCI+Sm9TYU1hSmE8L2E+ZAIpD2QWEgIBDw8WAh8DaGRkAgMPZBYCAgEPDxYCHwUFRS9oaWRlL3dwdGxpc3QuYXNweD9SZWZXcHRJRD01MWU0MGRlYy02MjcyLTRkYWQtOTM0Yi1lMTc1ZGFhYWMyNjUmRFM9MWRkAgcPDxYGHgZSRFMuSUQLKXVHcm91bmRzcGVhay5XZWIuR1BYLldwdERhdGFTb3VyY2VzLCBUdWNz" /> +<input type="hidden" name="__VIEWSTATE1" id="__VIEWSTATE1" value="b24uQ29tbW9uLkxlZ2FjeSwgVmVyc2lvbj0zLjAuNDgyNi4yMDM4LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwBHgdSV1BULklEKCsEBzMyMjA2NzIfA2hkZAIJDw8WAh8DZ2QWAgIBDw8WBB8FBSgvbWFwL2RlZmF1bHQuYXNweD9sYXQ9NDYuMDgwNDY3JmxuZz0xNC41HwNnZGQCDw8WAh8BBZEBLi4ub3RoZXIgY2FjaGVzIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91PURhdmlkKyUyNitBamRhIj5oaWRkZW48L2E+IG9yIDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD91bD1EYXZpZCslMjYrQWpkYSI+Zm91bmQ8L2E+IGJ5IHRoaXMgdXNlcmQCEQ9kFgYCAQ8WAh8BBYECLi4ubmVhcmJ5IDxhIGhyZWY9Ii9zZWVrL25lYXJlc3QuYXNweD90eD0zMmJjOTMzMy01ZTUyLTQ5NTctYjBmNi01YTJjOGZjN2IyNTcmbGF0PTQ2LjA4MDQ2NyZsbmc9MTQuNTAwMDAwIj5jYWNoZXMgb2YgdGhpcyB0eXBlPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P3R4PTMyYmM5MzMzLTVlNTItNDk1Ny1iMGY2LTVhMmM4ZmM3YjI1NyZsYXQ9NDYuMDgwNDY3JmxuZz0xNC41MDAwMDAmZj0xIj50aGF0IEkgaGF2ZW4ndCBmb3VuZDwvYT5kAgMPFgIfAQWoAS4uLmFsbCBuZWFyYnkgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD00Ni4wODA0NjcmbG5nPTE0LjUwMDAwMCI+Y2FjaGVzPC9hPiwgPGEgaHJlZj0iL3NlZWsvbmVhcmVzdC5hc3B4P2xhdD00Ni4wODA0NjcmbG5nPTE0LjUwMDAwMCZmPTEiPnRoYXQgSSBoYXZlbid0IGZvdW5kPC9hPmQCBQ8WAh8BBX8uLi5hbGwgbmVhcmJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cud2F5bWFya2luZy5jb20vZGlyZWN0b3J5LmFzcHg/Zj0xJmxhdD00Ni4wODA0NjcmbG9uPTE0LjUwMDAwMCI+d2F5bWFya3Mgb24gV2F5bWFya2luZy5jb208L2E+ZAITDxYCHwNoZAIXD2QWAgIBDw8WBB8BBaAHPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2FjaGluZy5jb20vbWFwL2RlZmF1bHQuYXNweD9sYXQ9NDYuMDgwNDcmbG5nPTE0LjUiIHRhcmdldD0iX2JsYW5rIj5HZW9jYWNoaW5nLmNvbSBNYXA8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9Tis0NiVjMiViMCswNC44MjgrRSswMTQlYzIlYjArMzAuMDAwKyhHQzNYWDVKKSsiIHRhcmdldD0iX2JsYW5rIj5Hb29nbGUgTWFwczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm1hcHF1ZXN0LmNvbS9tYXBzL21hcC5hZHA/c2VhcmNodHlwZT1hZGRyZXNzJmZvcm10eXBlPWxhdGxvbmcmbGF0bG9uZ3R5cGU9ZGVjaW1hbCZsYXRpdHVkZT00Ni4wODA0NyZsb25naXR1ZGU9MTQuNSZ6b29tPTEwIiB0YXJnZXQ9Il9ibGFuayI+TWFwUXVlc3Q8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL21hcHMueWFob28uY29tLyNsYXQ9NDYuMDgwNDcmbG9uPTE0LjUmem9vbT0xNiZxPTQ2LjA4MDQ3LDE0LjUmY29uZj0xJnN0YXJ0PTEmbXZ0PW0mdHJmPTAiIHRhcmdldD0iX2JsYW5rIj5ZYWhvbyBNYXBzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmluZy5jb20vbWFwcy9kZWZhdWx0LmFzcHg/dj0yJmx2bD0xNCZzcD1wb2ludC40Ni4wODA0N18xNC41X0dDM1hYNUoiIHRhcmdldD0iX2JsYW5rIj5CaW5nIE1hcHM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuY3ljbGVtYXAub3JnLz96b29tPTEyJmxhdD00Ni4wODA0NyZsb249MTQuNSIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5DeWNsZU1hcDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnLz9t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" /> </div> <script type="text/javascript"> @@ -104,13 +104,13 @@ function __doPostBack(eventTarget, eventArgument) { </script> -<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981131264989663" type="text/javascript"></script> +<script src="/WebResource.axd?d=Dh2VENdI9XyWNN0f7DnYfR8WWRCRIzdVqal2y0yjiQ5nC_eHhLchYgnQDHIk0d3RCcSUMVZ36ciRD0qmhXKmeu3S_RE1&t=634981149668642275" type="text/javascript"></script> <script src="/ScriptResource.axd?d=I9_m2Hb1Tv_B0qTMDG8bMbnkNSHUkv5oUaG9-V5NZ8qQ2VFlu60I8y8gfr3vPmZjbiPnu43MOQdFVDeYF-nDAEKBLmyxD3DCTGmes9NNbbvaDEHyEuuRWgccIkK3ik5TI48YGDxjHjqdn-gTK4Fkgd17LGw1&t=ffffffff940d030f" type="text/javascript"></script> <script src="/ScriptResource.axd?d=8vNbe34dAujgZMPnfnacfjeoweX1vHgyns8KlAV4vpGpsZC9Cf3pro__lv8ekBa0NiCgXGMMolzOUNH__lrnEI_qjlNBIAuuLeemtAXV_i6E0QIMZa8nGSYmWGF5nQOJK3rmZzvTxsr2Mh4Ebdba_1ywGLUSH_U_XIe-jzecfRQwwvjZ0&t=ffffffff940d030f" type="text/javascript"></script> -<script src="/ScriptResource.axd?d=Uh_lOa1hKj-GEwMC8mK4Mv8GIgfYnVMts1uBtWWtSfWP9ra-LKOpaRuqVLvjYmMdLsk7f65Q6jxy1BUjZtmsPSNvG8-NJhXvUvOP2jTpjiJF191yJjbg5eBWmdsFWFW4ajIe-GbXr7vIi2DeH9CErdgdlkf-f2cp7FtGEJ7sl3tidpi7pPZumnHP0HO2yu_GIN2h8uN1Q6-df-zQBu0zb4hnxqo1" type="text/javascript"></script> -<script src="/ScriptResource.axd?d=838lRAslTnp-47XptApNagh_Uah2p52BYL-s1NNGNamd8V2w2Ky2y-qvXkjulQaOR_VLt0fkOoUQz2vo2Z8CX871dE4Ct-a7MylewJqtaQNwQglkQO1n6oSTN35sCFRQ7BXBPVoWxpehRPLX8sbeEAqBEHdYAcMHFjMXNlT9nze9HLuJQ15ocJVBJMlooE7lKvmObAIwFsFO9oMNMln41GfoOdjcCiPLIniUHBJavtIsfpZoHZ8IaaJ2mcqJncN2qtyp5jmDkuoZuDm5GuIm88GqPz0_pSJHgC9qf9O6DNr-mOaKWm2PxOwscK8hcP-TM7owfHLYw9rZkopbDljgiCl34QjGBJyaYBGV1VpLdEgR3hGToB-rM6c63T3SLN-7u0qtmvFBds8v5sZUeJLIdtTf9sQCJicp_lnWeZ0bB6SFFMA4I59lZp-wcxcp-MAvNwOsFbo_mUFDpDg-eM316f2OKs0FhopEcLk7jBG2aYLeOA3rVLZuidOCk3cFFBdvo8iogolMkemG1iSC_RSxXWQPLfa0ixp0WTyZPZYv0EQcHB2yShSl6FJxyxoifmdjO489-f3_nXuTeAo4L9mde7FqtE6t3Dj9oqxSDMJXEzU5OAocOzmor7yTRmzx40kgTPetF3I2yMBcbIPFCIfOHd8ua3EkwijkqG2CGEXLBCNr4vyi0" type="text/javascript"></script> +<script src="/ScriptResource.axd?d=smO_g60huRlsbWz1fegS3GqJJP2TQaJZmOtbSzx_ALaWTu6YoRBQ7xbqknFxBjFgvfsh3d6K5K6x8elfekXkRnpMU4madSPoFfy1H3aNWawyjAdnnGc7IwJgxQdqOp6nLjRAnkT3LlqGl7j3RWuqZtOS_Q94Xt3GBIW4mwIlRJvVCUWxrvFldhQIjOAdAjg-pcbpuOo8TMzMZDtu62H4Agf744U1" type="text/javascript"></script> +<script src="/ScriptResource.axd?d=E99XiNjK0biBGiFZgXwF93XUW_CgJvVjhSayq2p6PbMm0TLse1hdoGrLcso76MS5MRG0ieHaF_fOGnt9IIhDkPE62K0tTFHe6Meyvpu3682JqeImfgX_9iCDbXk31L800c6hYmZMNmw4ERVWvEuxaDZfMFTZrsfqHIXbRY_Rnw4Il4nVwePKahHfkDdjhaTVCSajUB26aD6_DaVQJwFhWCDPm68fZgUyRcn-6pCMOSdkHAgEh0RLzMzEXCbdBbMEdcuyaQ-GHljHxRQtY0s5-jZ8tPf73UgsrS1RX-Fzu_k-_31s-mUe0XBQD1hF5wEAQKtkQYTQL2XHikzB8tCTLxQthW5DiERyv0x5Fhpy1hf_tah8NbFIiZCM54BV0gBRUAaicWNZhs97gmXgYrwDX2FUWnGKFFcqSh1WWOw1rXjW7a4yv7bSgWqDZfA3ulJEHGeuBUsjY0BA0AtefLkkXvQRBLYoJKzCEjv51IDClsbakiRO4dePPsh6mL_E4Jq0hseSMIR97Sylr63OAy7zN0Eq4pxeJKN72I5YSyscfgT5Mt6AWJgOp5ilEPFlahapXOp1gt74_Ya_G_Na63aXBcg19iM1ba3lB2Zgj8As2G6BKBuk3O4vjKB2vmffoIRxiJwiw18E1KOPtoQz0SIuYeOMBDLvJ_BplG2HbvjWIApueXCB0" type="text/javascript"></script> <script src="js/cachedetails.js" type="text/javascript"></script> <script src="../js/latlng.js" type="text/javascript"></script> <script type="text/javascript"> @@ -151,11 +151,11 @@ Sys.WebForms.PageRequestManager._initialize('ctl00$uxMainScriptManager', 'aspnet </p> <p class="SignedInText"> <strong> - Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fwp%3dGC3XX5J%26Submit6%3dGo">Sign Out</a>)<br /> + Hello, <a href="/my/default.aspx" title="View Profile for JoSaMaJa" class="SignedInProfileLink">JoSaMaJa</a></strong> (<a id="ctl00_hlSignOut" accesskey="s" title="Sign Out" href="https://www.geocaching.com/login/default.aspx?RESET=Y&redir=http%3a%2f%2fwww.geocaching.com%2fseek%2fcache_details.aspx%3fguid%3d51e40dec-6272-4dad-934b-e175daaac265">Sign Out</a>)<br /> <span id="ctl00_litPMLevel">Premium Member</span> <strong style="display: block"> - 419 Caches Found</strong> + 426 Caches Found</strong> </p> </div> @@ -673,14 +673,14 @@ PRINESI SVOJE PISALO / BRING YOUR OWN PEN<br /></span> <script type='text/javascript'> googletag.cmd.push(function() {{ -googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_32925fc2-f8e5-433a-aaef-7caee5114f34').addService(googletag.pubads()); +googletag.defineSlot('/1011121/cache_details_120x240', [120, 240], 'div_35364ae2-05f1-4494-9913-f8f938f51a56').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }}); </script> -<div id='div_32925fc2-f8e5-433a-aaef-7caee5114f34'> +<div id='div_35364ae2-05f1-4494-9913-f8f938f51a56'> <script type='text/javascript'> -googletag.cmd.push(function() { googletag.display('div_32925fc2-f8e5-433a-aaef-7caee5114f34'); }); +googletag.cmd.push(function() { googletag.display('div_35364ae2-05f1-4494-9913-f8f938f51a56'); }); </script> </div> @@ -726,6 +726,31 @@ googletag.cmd.push(function() { googletag.display('div_32925fc2-f8e5-433a-aaef-7 +<div class="CacheDetailNavigationWidget"> + + <h3 class="WidgetHeader">My Bookmark Lists</h3> + <div class="WidgetBody"> + + + <ul class="BookmarkList"> + + <li class=''> + <a href="http://www.geocaching.com/bookmarks/view.aspx?guid=14551708-0c3c-4f95-9342-1bb3119e6efe">cgeo mocks</a><br /> by <a href="http://www.geocaching.com/profile/?guid=4d416461-d1a7-4cc5-8ee7-336bb910feb8">JoSaMaJa</a> + </li> + + </ul> + + <p class="NoBottomSpacing"> + + </p> + + </div> + + +</div> + + + </div> @@ -806,15 +831,15 @@ googletag.cmd.push(function() { googletag.display('div_32925fc2-f8e5-433a-aaef-7 <div class="InformationWidget Clear"> <h3> - 79 Logged Visits</h3> + 82 Logged Visits</h3> <div class="EncryptDecrypt"> <a href="#" class="decrypt-link"> Decrypt </a> </div> - <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 74 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 1 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 2 <img src="/images/logtypes/25.png" alt="Retract Listing" title="Retract Listing" /> 1 <img src="/images/logtypes/45.png" alt="Needs Maintenance" title="Needs Maintenance" /> 1 </p></span> + <span id="ctl00_ContentBody_lblFindCounts"><p class="LogTotals"><img src="/images/logtypes/2.png" alt="Found it" title="Found it" /> 77 <img src="/images/logtypes/4.png" alt="Write note" title="Write note" /> 1 <img src="/images/logtypes/24.png" alt="Publish Listing" title="Publish Listing" /> 2 <img src="/images/logtypes/25.png" alt="Retract Listing" title="Retract Listing" /> 1 <img src="/images/logtypes/45.png" alt="Needs Maintenance" title="Needs Maintenance" /> 1 </p></span> <p class="HalfLeft"> - <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="gallery.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265">View the Image Gallery</a> + <a id="ctl00_ContentBody_uxLogbookLink" href="cache_logbook.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265">View Logbook</a> | <a id="ctl00_ContentBody_uxGalleryImagesLink" DisplayFormatPlural="View the Image Gallery of {0:#,###} images" DisplayFormatSingular="View the Image Gallery" href="gallery.aspx?guid=51e40dec-6272-4dad-934b-e175daaac265">View the Image Gallery of 3 images</a> </p> <p class="NoBottomSpacing AlignRight"> <span class="Warning">**Warning!</span> <a href="/about/glossary.aspx#spoiler" title="Spoilers">Spoilers</a> may be included in the descriptions or links. @@ -843,7 +868,7 @@ googletag.cmd.push(function() { googletag.display('div_32925fc2-f8e5-433a-aaef-7 </div> <p> <small> - Current Time: <time datetime="2013-03-08T11:20:52Z">03/08/2013 11:20:52 (UTC-08:00) Pacific Time (US & Canada) (19:20 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-02-02T12:26:38Z">2013-02-02T12:26:38Z</time> on 02/02/2013 04:26:38 (UTC-08:00) Pacific Time (US & Canada) (12:26 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum + Current Time: <time datetime="2013-03-27T04:36:03Z">03/27/2013 04:36:03 Pacific Daylight Time (11:36 GMT)</time><br/>Last Updated: <time class="timeago" datetime="2013-03-16T18:38:54Z">2013-03-16T18:38:54Z</time> on 03/16/2013 11:38:54 Pacific Daylight Time (18:38 GMT) <br/>Rendered From:Unknown<br />Coordinates are in the WGS84 datum </small> </p> <div id="topScroll" class="TopScroll" style="display:none;"> @@ -1784,9 +1809,9 @@ var userDefinedCoords = {"status":"fail","data":{"isUserDefined":false,"oldLatLn mapLatLng = {"lat":46.08047,"lng":14.5,"type":2,"name":"Zaraščen Tir"}; var ccConversions = [{"t":"Decimal","k":"DD","d":"WGS84","v":"46.080467, 014.500000"},{"t":"DDD MM SS.SSS","k":"DMS","d":"WGS84","v":"N 46° 04' 49.681\" E 014° 30' 00.000\""},{"t":"UTM","k":"UTM","d":"WGS84","v":"33T E 461340 N 5103109"}]; userInfo = {ID: 4793174}; -userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4PZHXTIASIYWFYVKCUOKL22KFA6QAHSYC5LPKUTBIZSQGHR7TKGQNSHYUVIO2QXLWNJMJ7YUVJZ3X5A'; +userToken = '4OB3GFHLRR3CGMZFUAPD6CWPE24ZHP6Q7KCBEDNYY5CUNWNQIA32GZPVPFMH6IGAEYKVNNSFLMQ7BBGFDKQBT3BZGZBYKVQ4H5BWKD6MVBKYBTM627XPOUSUP6U4JF7NKKEOYJ4A6LEG2T5B6MG5AMMFOS27KNE4U2BAU4PZHXTIASIYWFYVKCUOKL22KFA6QAHSYC5LPKUTBGNPWYZGNG62UST5ZUKNLJN57H3YYHQOKWQGEDPA'; includeAvatars = true; -initalLogs = {"status":"success", "data": [{"LogID":291786242,"CacheID":3220672,"LogGuid":"17a2f63c-5e61-433a-96a0-10f257502719","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"it will be repaired a.s.a.p.","Created":"2013-02-02","Visited":"2013-02-02","UserName":"David & Ajda","MembershipLevel":3,"AccountID":5991956,"AccountGuid":"7b1ed479-e378-4cfd-a5b4-3bd47bab619f","Email":"","AvatarImage":"0bafa82b-6510-4903-bb6a-68dd455eb971.jpg","GeocacheFindCount":157,"GeocacheHideCount":14,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":290898328,"CacheID":3220672,"LogGuid":"1f560d5b-84fb-4e55-95e2-11b9b191a88a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Needs Maintenance","LogTypeImage":"45.png","LogText":"Danes smo želeli odložiti TB-ja, pa smo našli zakladek popolnoma premocen. Pokrov škatlice je pocen in zakladek je potreben skrbnikovega servisa.","Created":"2013-01-26","Visited":"2013-01-26","UserName":"Speluzek","MembershipLevel":1,"AccountID":6288657,"AccountGuid":"4fab190c-2dfe-451c-8e3f-124925d4fc17","Email":"","AvatarImage":"64a0b2d9-c112-476d-9ecc-f6798e0ab3db.jpg","GeocacheFindCount":126,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":287805685,"CacheID":3220672,"LogGuid":"0dcb5b57-e9be-4d07-83b8-99b310e4ea51","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kul skrito. Edin cist je premocen... :/","Created":"2013-01-05","Visited":"2013-01-05","UserName":"kukimonster","MembershipLevel":1,"AccountID":6153796,"AccountGuid":"c1c7b6c4-7780-49f7-bdce-177624cebc41","Email":"","AvatarImage":"8cc5a445-6e3c-4f49-b5a1-24c4a402523c.jpg","GeocacheFindCount":28,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":285180390,"CacheID":3220672,"LogGuid":"00877bdf-2318-4def-9cb1-a87e81ab2d87","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC! #180","Created":"2012-12-24","Visited":"2012-12-24","UserName":"Marsovci","MembershipLevel":1,"AccountID":5274309,"AccountGuid":"8690463c-93b7-4861-bf73-e66ac9bd8fdc","Email":"","AvatarImage":"2cd6c202-efd6-449f-bdbe-005f51bcad4b.jpg","GeocacheFindCount":208,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":285038477,"CacheID":3220672,"LogGuid":"97729bf6-e94f-484e-a2bf-79e8b2b11f7f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"tftc tnln","Created":"2012-12-23","Visited":"2012-12-23","UserName":"misica","MembershipLevel":1,"AccountID":5838221,"AccountGuid":"c06519b0-4416-482f-ae5a-9095d99ce3d0","Email":"","AvatarImage":"","GeocacheFindCount":214,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291060633,"CacheID":3220672,"LogGuid":"9d56bebd-9eaa-4078-9b8e-302ea5bd3a0f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"as it turns out, the parking can get difficult in ljubljana :D we parked a bit away, walked back towards it (luckily maki didn't go after my idea or we woould be walking for some time :D:D)<br />it was freezing cold so we tried to rush it... once we were close we started looking at all the usual suspects but couldn't find it... then we turned to the most usual one it was a hit :D<br />nice one, i like the idea of an abandoned railway :D<br /><br />tftc","Created":"2013-01-27","Visited":"2012-12-22","UserName":"heroj_ulice","MembershipLevel":3,"AccountID":3633527,"AccountGuid":"cc0277a5-d83f-4046-9d46-f74c71cce655","Email":"","AvatarImage":"76551c2f-e9eb-4502-b49d-8e2b8e5da7d0.jpg","GeocacheFindCount":819,"GeocacheHideCount":28,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285660405,"CacheID":3220672,"LogGuid":"6fc86bfd-b85c-40de-8d67-ce08485bf4ad","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Our cache pick up on the north continues :) we had to kill time until the parking in the center becomes free so we picked an area and went for it. <br />As we were approaching the site, there were gates and we were confused should have we come from a different side but than the lonely track appeared :D<br />I looked at the hiding spot but thought it couldn't fit there...I was wrong :)<br />TFTC","Created":"2012-12-27","Visited":"2012-12-22","UserName":"maki433","MembershipLevel":3,"AccountID":3854944,"AccountGuid":"b543d9c6-b02c-4f6d-8a49-32cf5c01509e","Email":"","AvatarImage":"7d3543ee-c029-4dc3-bb1f-0bd4527a53c8.jpg","GeocacheFindCount":755,"GeocacheHideCount":18,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284924916,"CacheID":3220672,"LogGuid":"0e8f0317-bb4b-4bf4-a005-338860773b5b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na pot sem se podal skupaj z mojimi prijatelji. Na jutranjem srecanju smo bili prikrajšani za spektakularen konec sveta, zato smo se morali potolažiti s številnimi novimi najdbami.<br /><br />TFTC!","Created":"2012-12-22","Visited":"2012-12-21","UserName":"Vanja&Valdi","MembershipLevel":3,"AccountID":126472,"AccountGuid":"2338a519-1454-43ce-b31c-a29b7994888e","Email":"","AvatarImage":"a2501c6b-7c4b-4749-9f7c-db97e3aea6c9.jpg","GeocacheFindCount":1929,"GeocacheHideCount":8,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284825582,"CacheID":3220672,"LogGuid":"7279e0d8-c908-456e-8f62-db5e8012cfad","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na dan,ko naj bi bil konec sveta,sem se v prijetni druzbi 5r,lagosi in Vanja&Valdi odpravili v prestolnico kjer naj bi docakali skupen konec sveta z nasimi somisljeniki.Ko je prisel cas ki smo ga cakali smo videli da smo se vsi na kupu in da bomo se naprej lahko uzivali v nasem hobiju ,smo se kar podvizali in zaceli turnejo po se neodkritih skatlicah .Hvala za prijetno druzbo in se kdaj.HZZ?<br /><br />This entry was edited by AADT on Saturday, 22 December 2012 at 15:33:00 UTC.","Created":"2012-12-21","Visited":"2012-12-21","UserName":"AADT","MembershipLevel":3,"AccountID":3214400,"AccountGuid":"cede632d-87a9-47d0-a6a2-68a5100faa30","Email":"","AvatarImage":"7f7d67eb-0bfe-4e34-83db-31c9d0767979.png","GeocacheFindCount":1269,"GeocacheHideCount":13,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284813482,"CacheID":3220672,"LogGuid":"5f8a97b1-3007-43f5-83e8-32b3642434f8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na dan, ko naj bi bilo konec sveta, smo se v družbi predstavnikov ekip lagosi, AADT ter Vanja&Valdi, odpravili na geocachersko ekspedicijo v te kraje: da doživimo konec sveta pri svojem najljubšem hobiju <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Prav zanimiv koticek Ljubljane <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br />Po kratkem sprehodu od ceste, smo škatlico našli v trenutku, v njej pa - BLJAK: vsebina razmocena do te mere, da smo opustili poskus vpisovanja v tisto, kar je nekoc bilo logbook.<br />Donirali smo \"emergency\" mikro container s suhim logbookom, tako da bo za nekaj casa verjetno možen normalen vpis.<br />Lastniku vsekakor toplo priporocamo obisk zakladka in malo popravila!<br /><br />TFTC<br />5r & family<br /><br /><br />","Created":"2012-12-21","Visited":"2012-12-21","UserName":"5r","MembershipLevel":3,"AccountID":1876775,"AccountGuid":"5122b2fe-bc8f-4049-a5bc-1c2bf730857c","Email":"","AvatarImage":"98edc335-f8ce-4ec9-818b-9ee7bc4a14dc.jpg","GeocacheFindCount":3374,"GeocacheHideCount":21,"ChallengesCompleted":6,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284264670,"CacheID":3220672,"LogGuid":"5374daff-1731-4690-b124-522d5764b469","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nedeljski sprehod po tirih nas je pripeljal do tega zakladka. Vsebina je že mokra, tako da bi svetoval vsaj še vrecko za okoli škatlice. <br /><br />Mnogo mirnejše kot pa prek delovnih dni. Hvala zaklad.","Created":"2012-12-16","Visited":"2012-12-16","UserName":"Cvickovi","MembershipLevel":1,"AccountID":6415308,"AccountGuid":"42007102-c603-4415-8f6a-af4885d93c0e","Email":"","AvatarImage":"0b864934-3b76-4f4e-860e-72b48774fc38.jpg","GeocacheFindCount":90,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":282928300,"CacheID":3220672,"LogGuid":"04183b59-fd84-4880-9195-edac89ffecd6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zakladek nas je pripeljal v zanimiv industrijski del Ljubljane. V okolici smo bili že velikokrat, a tale košcek \"zemljišca\" nam je bil neznan. Sprehod je bil zanimiv in v bližini je dišalo - po plinu. Tu si verjetno res ni najbolje vzeti pavzo za cigareto <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />. Se pa seveda lahko poišce zakladek. <br /><br />Bunkeljni na okoliških delovišcih so usmerjeni v izvedbo svojih del in nalog, tako da geosledcem pristop ne bi smel biti problematicen - No, vsaj nam ni povzrocal težav. V bližini je sicer varnostna kamera a mislimo, da je zakladek dovolj dalec, da se varnostnikom na drugi strani ne prižigajo rdece lucke.<br /><br />Škatlico smo našli brez vecjih težav a zapis naše najdbe v knjižico obiskov je bil nekoliko težaven. Listki so namrec popolnoma premoceni! Bilo bi dobro, da bi lastniki opravili vzdrževalna dela!!!<br /><br />Hvala za zakladek!<br />---------------------------<br />This cache will take you to a lost place in the industrial part of Ljubljana. It si an interesting experience<br /><br />The box is wet and log book is soaked. Needs maintenance.<br /><br />TFTC!","Created":"2012-12-05","Visited":"2012-12-02","UserName":"sonček","MembershipLevel":3,"AccountID":312137,"AccountGuid":"658a025e-b36f-417c-b929-6ed7bf85b790","Email":"","AvatarImage":"11e42460-b659-47b2-a22f-79d6798b92c7.jpg","GeocacheFindCount":1724,"GeocacheHideCount":12,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":282298908,"CacheID":3220672,"LogGuid":"9cefe38c-acfe-4512-a394-dd9d08bfb32c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Našli po hitrem postopku.","Created":"2012-12-01","Visited":"2012-12-01","UserName":"tomsetki","MembershipLevel":1,"AccountID":5435784,"AccountGuid":"653835a9-cb32-4792-b226-fd2667163c8e","Email":"","AvatarImage":"4c5d43fd-cbfd-4d8e-adad-6de55fc43e47.jpg","GeocacheFindCount":523,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":281522369,"CacheID":3220672,"LogGuid":"c290e3ef-7354-49d7-b885-f596519a08fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zanimiva, kolesarska, \"blatna\" jesenska sobota je minila v duhu geolova, 17 najdenih zakladov in spoznavanje kotickov Ljubljane. Hitro najden tir, zakladek pa me je malo begal, najprej sem morala odstraniti tone listja, ker so koordinate nekoliko mimo, nato sem iskala kamen...a je bilo nato ocitno, saj sem že prej gledala kupcek, he, he. HZZ<br />YakominiYi","Created":"2012-11-25","Visited":"2012-11-24","UserName":"YakominiYi","MembershipLevel":3,"AccountID":4304234,"AccountGuid":"e785ce97-a1b3-4aae-8bc0-28b43186be31","Email":"","AvatarImage":"c13b9ef5-0c39-4dfa-a94a-a1335ca0ff19.jpg","GeocacheFindCount":853,"GeocacheHideCount":56,"ChallengesCompleted":16,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":280713139,"CacheID":3220672,"LogGuid":"b22275bb-798b-4010-9293-8f8eca9ff941","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Uspelo mi je izbrati pravi dostop in do kecka sem pristopil brez težav. Na sreco v dopoldanskem casu ni bilo zaposlenih na dvorišcih levo ali desno, verjetno je bilo premraz za cikanje in kafetkanje. tako sem lahko v miru opravil svoje...<br />Na lov sem šel brez pisala, pa tudi v zakladku ni nobenega. Na sreco je telefon ovekovecil mojo najdbo <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />","Created":"2012-11-20","Visited":"2012-11-20","UserName":"ATA ORU","MembershipLevel":1,"AccountID":4495291,"AccountGuid":"5e4c6b0d-c81f-4519-a5cb-0b6fb02f764b","Email":"","AvatarImage":"f24d91bd-2c43-4e50-aa29-b263ed988be2.jpg","GeocacheFindCount":865,"GeocacheHideCount":0,"ChallengesCompleted":14,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":16223026,"ImageGuid":"bfaea6a8-502d-4095-9e84-6888e33c920a","Name":"2012-11-20 09.13.39","Descr":"","FileName":"bfaea6a8-502d-4095-9e84-6888e33c920a.jpg","Created":"2012-11-20","LogID":280713139,"CacheID":3220672,"ImageUrl":null}]},{"LogID":280243063,"CacheID":3220672,"LogGuid":"6ddcafde-f5e6-4e79-9915-341f154bb2aa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC","Created":"2012-11-18","Visited":"2012-11-18","UserName":"AndyDee","MembershipLevel":1,"AccountID":5069819,"AccountGuid":"ff6c96c4-8972-46f9-849f-89766e2fc2eb","Email":"","AvatarImage":"a79d055f-6449-498d-8441-3bf81650209e.jpg","GeocacheFindCount":125,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":280233178,"CacheID":3220672,"LogGuid":"71462f9c-73cd-4290-a540-25ce5ccb9ac1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Logbook je bil kar precej namocen, ampak je vpis vseeno vspel, HZZ.","Created":"2012-11-18","Visited":"2012-11-18","UserName":"rain.si","MembershipLevel":3,"AccountID":4209103,"AccountGuid":"85668cec-e8af-4a66-882a-1cea1639ac02","Email":"","AvatarImage":"d07ac7bb-d91d-4217-b630-d63c09c247cd.jpg","GeocacheFindCount":125,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":280210122,"CacheID":3220672,"LogGuid":"523b8ff9-d3f2-440e-8624-e207df957028","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC :) T & J <br />in: TB<br />out: smrkec","Created":"2012-11-18","Visited":"2012-11-18","UserName":"GeoCachingSLO","MembershipLevel":1,"AccountID":6088292,"AccountGuid":"3f88e53f-3b03-4a88-b054-c8cd91fb0afd","Email":"","AvatarImage":"7f6b598c-7514-48f1-8f01-8e600710bd2d.jpg","GeocacheFindCount":28,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":279931139,"CacheID":3220672,"LogGuid":"9604d087-268d-46f0-b52f-6fadfaadfc1e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Malce sem se vozil naokoli, da sem našel pravi pristop...<br />Vmes mi je še skoraj nov mobitel padel na tla iz kolesa in staknil lepo odgrnino...vsaj zakladek sem našel <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"2012-11-17","Visited":"2012-11-17","UserName":"Vrhobir","MembershipLevel":1,"AccountID":5222683,"AccountGuid":"062b9547-7973-4438-9ff6-ddecdd117c3f","Email":"","AvatarImage":"","GeocacheFindCount":222,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":281037984,"CacheID":3220672,"LogGuid":"064708a3-2727-44a4-a250-c5c44ed74c12","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Pr' tolk kamna je blo težko najdt pravega :)","Created":"2012-11-23","Visited":"2012-11-14","UserName":"alenka12","MembershipLevel":1,"AccountID":6546465,"AccountGuid":"dfa1727c-ab02-4529-9cf3-04781671e0d2","Email":"","AvatarImage":"","GeocacheFindCount":62,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":279501752,"CacheID":3220672,"LogGuid":"4fcd61ba-0090-46d9-b7cf-0682d7f21b49","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ce sem pred tem našel 3 zaklade takoj, pa mi tukaj ni šlo najhitreje, pa vseeno v 10ih minutah. HZZ","Created":"2012-11-14","Visited":"2012-11-14","UserName":"Simon07","MembershipLevel":3,"AccountID":4074208,"AccountGuid":"88adea12-ae5a-471b-97b2-413e6c4e5433","Email":"","AvatarImage":"178d4ebe-bb91-4c26-a4ab-0a81e7ea7cdc.jpg","GeocacheFindCount":744,"GeocacheHideCount":13,"ChallengesCompleted":22,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":278635825,"CacheID":3220672,"LogGuid":"e4134282-8ea2-4324-b5d6-afdcf662acc8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kar s kolesom po slepem tiru do zakladka! :)<br />HZZ","Created":"2012-11-10","Visited":"2012-11-10","UserName":"strgacom","MembershipLevel":1,"AccountID":5106851,"AccountGuid":"7aa5ff75-478e-441a-9c2c-146ba7445777","Email":"","AvatarImage":"731d212e-0986-4081-a3e9-166bd77a7215.jpg","GeocacheFindCount":422,"GeocacheHideCount":4,"ChallengesCompleted":24,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":278635402,"CacheID":3220672,"LogGuid":"9624533c-5edc-445e-ac9d-0698cc937816","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Sploh nisem vedla, da je tukaj se en tir, poleg ocitnega :-).<br />HZZ","Created":"2012-11-10","Visited":"2012-11-10","UserName":"str82barby","MembershipLevel":1,"AccountID":6023888,"AccountGuid":"c60d7b09-831a-42a1-b965-df2d004ce0b0","Email":"","AvatarImage":"7767e510-ff52-4a4b-a104-73bb3bf33d9b.jpg","GeocacheFindCount":298,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":278619491,"CacheID":3220672,"LogGuid":"264118b6-aaf9-42fe-975f-6df477442b07","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Danes smo se sprehodili in našli....","Created":"2012-11-10","Visited":"2012-11-10","UserName":"AfnGuncarji","MembershipLevel":1,"AccountID":6325823,"AccountGuid":"dc951c8c-94da-4db3-af7b-9b3ff8d0f96d","Email":"","AvatarImage":"7349fbca-0f34-4a9c-b187-24e6366cd130.jpg","GeocacheFindCount":20,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":278382644,"CacheID":3220672,"LogGuid":"45d0864d-6514-4554-97a1-c20b3077a289","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Wasn't to hard, nice walk on the railroad. ;-)","Created":"2012-11-08","Visited":"2012-11-08","UserName":"Heybobby5","MembershipLevel":1,"AccountID":5595016,"AccountGuid":"2ea83205-4232-4a17-aff6-38e1adeb29e0","Email":"","AvatarImage":"","GeocacheFindCount":242,"GeocacheHideCount":2,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 79, "rows": 79 } }; +initalLogs = {"status":"success", "data": [{"LogID":298864285,"CacheID":3220672,"LogGuid":"c519c9ae-99e5-42f2-af60-273b4b3ad8a5","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Interesting location. The box could be found quickly. TFTC.","Created":"2013-03-16","Visited":"2013-03-16","UserName":"Lear61","MembershipLevel":3,"AccountID":4121426,"AccountGuid":"ecff7e04-2437-4b2b-ad6f-b76fc6ae96d2","Email":"","AvatarImage":"d6ebfb07-b3df-41d5-9d44-2d92c919002a.jpg","GeocacheFindCount":2285,"GeocacheHideCount":23,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":298673669,"CacheID":3220672,"LogGuid":"4c28851e-2d6d-41e6-875a-1516ffa06b9f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"easy to find, but cache need new box, because many water was inside box,","Created":"2013-03-15","Visited":"2013-03-15","UserName":"macor2008a","MembershipLevel":1,"AccountID":2505786,"AccountGuid":"cfcdedbb-bdce-449c-aaa2-23b76c86794b","Email":"","AvatarImage":"2571f9f9-6d78-4151-a4a3-95a3875e1c11.jpg","GeocacheFindCount":65,"GeocacheHideCount":0,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":17052072,"ImageGuid":"7f521565-33ec-46a7-bb96-c3edf82c8bd5","Name":"2013-03-15 18.03.52","Descr":"","FileName":"7f521565-33ec-46a7-bb96-c3edf82c8bd5.jpg","Created":"2013-03-15","LogID":298673669,"CacheID":3220672,"ImageUrl":null},{"ImageID":17052082,"ImageGuid":"1928471f-6d9a-48f0-9bc4-fc594d795a3e","Name":"2013-03-15 18.04.53","Descr":"","FileName":"1928471f-6d9a-48f0-9bc4-fc594d795a3e.jpg","Created":"2013-03-15","LogID":298673669,"CacheID":3220672,"ImageUrl":null}]},{"LogID":297698994,"CacheID":3220672,"LogGuid":"0c91866b-0bd3-4cf5-aa80-a7d2e5159994","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"#32<br /><br />Hitra nočna najdba. Kot so napisali predhodniki - vsebina je premočena, logbook je pa nekdo očitno zamenjal, tako da je suh...<br /><br />HZZ","Created":"2013-03-09","Visited":"2013-03-09","UserName":"Ridler & Cmokica","MembershipLevel":1,"AccountID":5103702,"AccountGuid":"01676f06-5a97-41dc-b496-adf36ab69e93","Email":"","AvatarImage":"5a209b32-da06-447d-a523-5295d2c61b6e.png","GeocacheFindCount":70,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291786242,"CacheID":3220672,"LogGuid":"17a2f63c-5e61-433a-96a0-10f257502719","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Write note","LogTypeImage":"4.png","LogText":"it will be repaired a.s.a.p.","Created":"2013-02-02","Visited":"2013-02-02","UserName":"David & Ajda","MembershipLevel":3,"AccountID":5991956,"AccountGuid":"7b1ed479-e378-4cfd-a5b4-3bd47bab619f","Email":"","AvatarImage":"0bafa82b-6510-4903-bb6a-68dd455eb971.jpg","GeocacheFindCount":157,"GeocacheHideCount":14,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":290898328,"CacheID":3220672,"LogGuid":"1f560d5b-84fb-4e55-95e2-11b9b191a88a","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Needs Maintenance","LogTypeImage":"45.png","LogText":"Danes smo želeli odložiti TB-ja, pa smo našli zakladek popolnoma premocen. Pokrov škatlice je pocen in zakladek je potreben skrbnikovega servisa.","Created":"2013-01-26","Visited":"2013-01-26","UserName":"Speluzek","MembershipLevel":3,"AccountID":6288657,"AccountGuid":"4fab190c-2dfe-451c-8e3f-124925d4fc17","Email":"","AvatarImage":"64a0b2d9-c112-476d-9ecc-f6798e0ab3db.jpg","GeocacheFindCount":127,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":287805685,"CacheID":3220672,"LogGuid":"0dcb5b57-e9be-4d07-83b8-99b310e4ea51","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kul skrito. Edin cist je premocen... :/","Created":"2013-01-05","Visited":"2013-01-05","UserName":"kukimonster","MembershipLevel":1,"AccountID":6153796,"AccountGuid":"c1c7b6c4-7780-49f7-bdce-177624cebc41","Email":"","AvatarImage":"8cc5a445-6e3c-4f49-b5a1-24c4a402523c.jpg","GeocacheFindCount":28,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":285180390,"CacheID":3220672,"LogGuid":"00877bdf-2318-4def-9cb1-a87e81ab2d87","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC! #180","Created":"2012-12-24","Visited":"2012-12-24","UserName":"Marsovci","MembershipLevel":3,"AccountID":5274309,"AccountGuid":"8690463c-93b7-4861-bf73-e66ac9bd8fdc","Email":"","AvatarImage":"2cd6c202-efd6-449f-bdbe-005f51bcad4b.jpg","GeocacheFindCount":210,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285038477,"CacheID":3220672,"LogGuid":"97729bf6-e94f-484e-a2bf-79e8b2b11f7f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"tftc tnln","Created":"2012-12-23","Visited":"2012-12-23","UserName":"misica","MembershipLevel":1,"AccountID":5838221,"AccountGuid":"c06519b0-4416-482f-ae5a-9095d99ce3d0","Email":"","AvatarImage":"","GeocacheFindCount":220,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":291060633,"CacheID":3220672,"LogGuid":"9d56bebd-9eaa-4078-9b8e-302ea5bd3a0f","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"as it turns out, the parking can get difficult in ljubljana :D we parked a bit away, walked back towards it (luckily maki didn't go after my idea or we woould be walking for some time :D:D)<br />it was freezing cold so we tried to rush it... once we were close we started looking at all the usual suspects but couldn't find it... then we turned to the most usual one it was a hit :D<br />nice one, i like the idea of an abandoned railway :D<br /><br />tftc","Created":"2013-01-27","Visited":"2012-12-22","UserName":"heroj_ulice","MembershipLevel":3,"AccountID":3633527,"AccountGuid":"cc0277a5-d83f-4046-9d46-f74c71cce655","Email":"","AvatarImage":"76551c2f-e9eb-4502-b49d-8e2b8e5da7d0.jpg","GeocacheFindCount":822,"GeocacheHideCount":29,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":285660405,"CacheID":3220672,"LogGuid":"6fc86bfd-b85c-40de-8d67-ce08485bf4ad","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Our cache pick up on the north continues :) we had to kill time until the parking in the center becomes free so we picked an area and went for it. <br />As we were approaching the site, there were gates and we were confused should have we come from a different side but than the lonely track appeared :D<br />I looked at the hiding spot but thought it couldn't fit there...I was wrong :)<br />TFTC","Created":"2012-12-27","Visited":"2012-12-22","UserName":"maki433","MembershipLevel":3,"AccountID":3854944,"AccountGuid":"b543d9c6-b02c-4f6d-8a49-32cf5c01509e","Email":"","AvatarImage":"7d3543ee-c029-4dc3-bb1f-0bd4527a53c8.jpg","GeocacheFindCount":816,"GeocacheHideCount":18,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284924916,"CacheID":3220672,"LogGuid":"0e8f0317-bb4b-4bf4-a005-338860773b5b","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na pot sem se podal skupaj z mojimi prijatelji. Na jutranjem srecanju smo bili prikrajšani za spektakularen konec sveta, zato smo se morali potolažiti s številnimi novimi najdbami.<br /><br />TFTC!","Created":"2012-12-22","Visited":"2012-12-21","UserName":"Vanja&Valdi","MembershipLevel":3,"AccountID":126472,"AccountGuid":"2338a519-1454-43ce-b31c-a29b7994888e","Email":"","AvatarImage":"a2501c6b-7c4b-4749-9f7c-db97e3aea6c9.jpg","GeocacheFindCount":1948,"GeocacheHideCount":8,"ChallengesCompleted":1,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284825582,"CacheID":3220672,"LogGuid":"7279e0d8-c908-456e-8f62-db5e8012cfad","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na dan,ko naj bi bil konec sveta,sem se v prijetni druzbi 5r,lagosi in Vanja&Valdi odpravili v prestolnico kjer naj bi docakali skupen konec sveta z nasimi somisljeniki.Ko je prisel cas ki smo ga cakali smo videli da smo se vsi na kupu in da bomo se naprej lahko uzivali v nasem hobiju ,smo se kar podvizali in zaceli turnejo po se neodkritih skatlicah .Hvala za prijetno druzbo in se kdaj.HZZ?<br /><br />This entry was edited by AADT on Saturday, 22 December 2012 at 15:33:00 UTC.","Created":"2012-12-21","Visited":"2012-12-21","UserName":"AADT","MembershipLevel":3,"AccountID":3214400,"AccountGuid":"cede632d-87a9-47d0-a6a2-68a5100faa30","Email":"","AvatarImage":"7f7d67eb-0bfe-4e34-83db-31c9d0767979.png","GeocacheFindCount":1474,"GeocacheHideCount":13,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284813482,"CacheID":3220672,"LogGuid":"5f8a97b1-3007-43f5-83e8-32b3642434f8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Na dan, ko naj bi bilo konec sveta, smo se v družbi predstavnikov ekip lagosi, AADT ter Vanja&Valdi, odpravili na geocachersko ekspedicijo v te kraje: da doživimo konec sveta pri svojem najljubšem hobiju <img src=\"/images/icons/icon_smile_big.gif\" border=\"0\" align=\"middle\" /><br /><br />Prav zanimiv koticek Ljubljane <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" /><br />Po kratkem sprehodu od ceste, smo škatlico našli v trenutku, v njej pa - BLJAK: vsebina razmocena do te mere, da smo opustili poskus vpisovanja v tisto, kar je nekoc bilo logbook.<br />Donirali smo \"emergency\" mikro container s suhim logbookom, tako da bo za nekaj casa verjetno možen normalen vpis.<br />Lastniku vsekakor toplo priporocamo obisk zakladka in malo popravila!<br /><br />TFTC<br />5r & family<br /><br /><br />","Created":"2012-12-21","Visited":"2012-12-21","UserName":"5r","MembershipLevel":3,"AccountID":1876775,"AccountGuid":"5122b2fe-bc8f-4049-a5bc-1c2bf730857c","Email":"","AvatarImage":"98edc335-f8ce-4ec9-818b-9ee7bc4a14dc.jpg","GeocacheFindCount":3591,"GeocacheHideCount":21,"ChallengesCompleted":6,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":284264670,"CacheID":3220672,"LogGuid":"5374daff-1731-4690-b124-522d5764b469","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Nedeljski sprehod po tirih nas je pripeljal do tega zakladka. Vsebina je že mokra, tako da bi svetoval vsaj še vrecko za okoli škatlice. <br /><br />Mnogo mirnejše kot pa prek delovnih dni. Hvala zaklad.","Created":"2012-12-16","Visited":"2012-12-16","UserName":"Cvickovi","MembershipLevel":1,"AccountID":6415308,"AccountGuid":"42007102-c603-4415-8f6a-af4885d93c0e","Email":"","AvatarImage":"0b864934-3b76-4f4e-860e-72b48774fc38.jpg","GeocacheFindCount":90,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":282928300,"CacheID":3220672,"LogGuid":"04183b59-fd84-4880-9195-edac89ffecd6","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zakladek nas je pripeljal v zanimiv industrijski del Ljubljane. V okolici smo bili že velikokrat, a tale košcek \"zemljišca\" nam je bil neznan. Sprehod je bil zanimiv in v bližini je dišalo - po plinu. Tu si verjetno res ni najbolje vzeti pavzo za cigareto <img src=\"/images/icons/icon_smile_wink.gif\" border=\"0\" align=\"middle\" />. Se pa seveda lahko poišce zakladek. <br /><br />Bunkeljni na okoliških delovišcih so usmerjeni v izvedbo svojih del in nalog, tako da geosledcem pristop ne bi smel biti problematicen - No, vsaj nam ni povzrocal težav. V bližini je sicer varnostna kamera a mislimo, da je zakladek dovolj dalec, da se varnostnikom na drugi strani ne prižigajo rdece lucke.<br /><br />Škatlico smo našli brez vecjih težav a zapis naše najdbe v knjižico obiskov je bil nekoliko težaven. Listki so namrec popolnoma premoceni! Bilo bi dobro, da bi lastniki opravili vzdrževalna dela!!!<br /><br />Hvala za zakladek!<br />---------------------------<br />This cache will take you to a lost place in the industrial part of Ljubljana. It si an interesting experience<br /><br />The box is wet and log book is soaked. Needs maintenance.<br /><br />TFTC!","Created":"2012-12-05","Visited":"2012-12-02","UserName":"sonček","MembershipLevel":3,"AccountID":312137,"AccountGuid":"658a025e-b36f-417c-b929-6ed7bf85b790","Email":"","AvatarImage":"11e42460-b659-47b2-a22f-79d6798b92c7.jpg","GeocacheFindCount":1724,"GeocacheHideCount":12,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":282298908,"CacheID":3220672,"LogGuid":"9cefe38c-acfe-4512-a394-dd9d08bfb32c","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Našli po hitrem postopku.","Created":"2012-12-01","Visited":"2012-12-01","UserName":"tomsetki","MembershipLevel":1,"AccountID":5435784,"AccountGuid":"653835a9-cb32-4792-b226-fd2667163c8e","Email":"","AvatarImage":"4c5d43fd-cbfd-4d8e-adad-6de55fc43e47.jpg","GeocacheFindCount":568,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":281522369,"CacheID":3220672,"LogGuid":"c290e3ef-7354-49d7-b885-f596519a08fb","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Zanimiva, kolesarska, \"blatna\" jesenska sobota je minila v duhu geolova, 17 najdenih zakladov in spoznavanje kotickov Ljubljane. Hitro najden tir, zakladek pa me je malo begal, najprej sem morala odstraniti tone listja, ker so koordinate nekoliko mimo, nato sem iskala kamen...a je bilo nato ocitno, saj sem že prej gledala kupcek, he, he. HZZ<br />YakominiYi","Created":"2012-11-25","Visited":"2012-11-24","UserName":"YakominiYi","MembershipLevel":3,"AccountID":4304234,"AccountGuid":"e785ce97-a1b3-4aae-8bc0-28b43186be31","Email":"","AvatarImage":"c13b9ef5-0c39-4dfa-a94a-a1335ca0ff19.jpg","GeocacheFindCount":875,"GeocacheHideCount":56,"ChallengesCompleted":16,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":280713139,"CacheID":3220672,"LogGuid":"b22275bb-798b-4010-9293-8f8eca9ff941","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Uspelo mi je izbrati pravi dostop in do kecka sem pristopil brez težav. Na sreco v dopoldanskem casu ni bilo zaposlenih na dvorišcih levo ali desno, verjetno je bilo premraz za cikanje in kafetkanje. tako sem lahko v miru opravil svoje...<br />Na lov sem šel brez pisala, pa tudi v zakladku ni nobenega. Na sreco je telefon ovekovecil mojo najdbo <img src=\"/images/icons/icon_smile_cool.gif\" border=\"0\" align=\"middle\" />","Created":"2012-11-20","Visited":"2012-11-20","UserName":"ATA ORU","MembershipLevel":1,"AccountID":4495291,"AccountGuid":"5e4c6b0d-c81f-4519-a5cb-0b6fb02f764b","Email":"","AvatarImage":"f24d91bd-2c43-4e50-aa29-b263ed988be2.jpg","GeocacheFindCount":915,"GeocacheHideCount":0,"ChallengesCompleted":14,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[{"ImageID":16223026,"ImageGuid":"bfaea6a8-502d-4095-9e84-6888e33c920a","Name":"2012-11-20 09.13.39","Descr":"","FileName":"bfaea6a8-502d-4095-9e84-6888e33c920a.jpg","Created":"2012-11-20","LogID":280713139,"CacheID":3220672,"ImageUrl":null}]},{"LogID":280243063,"CacheID":3220672,"LogGuid":"6ddcafde-f5e6-4e79-9915-341f154bb2aa","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC","Created":"2012-11-18","Visited":"2012-11-18","UserName":"AndyDee","MembershipLevel":1,"AccountID":5069819,"AccountGuid":"ff6c96c4-8972-46f9-849f-89766e2fc2eb","Email":"","AvatarImage":"a79d055f-6449-498d-8441-3bf81650209e.jpg","GeocacheFindCount":125,"GeocacheHideCount":3,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":280233178,"CacheID":3220672,"LogGuid":"71462f9c-73cd-4290-a540-25ce5ccb9ac1","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Logbook je bil kar precej namocen, ampak je vpis vseeno vspel, HZZ.","Created":"2012-11-18","Visited":"2012-11-18","UserName":"rain.si","MembershipLevel":1,"AccountID":4209103,"AccountGuid":"85668cec-e8af-4a66-882a-1cea1639ac02","Email":"","AvatarImage":"d07ac7bb-d91d-4217-b630-d63c09c247cd.jpg","GeocacheFindCount":125,"GeocacheHideCount":5,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":280210122,"CacheID":3220672,"LogGuid":"523b8ff9-d3f2-440e-8624-e207df957028","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"TFTC :) T & J <br />in: TB<br />out: smrkec","Created":"2012-11-18","Visited":"2012-11-18","UserName":"GeoCachingSLO","MembershipLevel":1,"AccountID":6088292,"AccountGuid":"3f88e53f-3b03-4a88-b054-c8cd91fb0afd","Email":"","AvatarImage":"7f6b598c-7514-48f1-8f01-8e600710bd2d.jpg","GeocacheFindCount":28,"GeocacheHideCount":1,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":279931139,"CacheID":3220672,"LogGuid":"9604d087-268d-46f0-b52f-6fadfaadfc1e","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Malce sem se vozil naokoli, da sem našel pravi pristop...<br />Vmes mi je še skoraj nov mobitel padel na tla iz kolesa in staknil lepo odgrnino...vsaj zakladek sem našel <img src=\"/images/icons/icon_smile.gif\" border=\"0\" align=\"middle\" />","Created":"2012-11-17","Visited":"2012-11-17","UserName":"Vrhobir","MembershipLevel":1,"AccountID":5222683,"AccountGuid":"062b9547-7973-4438-9ff6-ddecdd117c3f","Email":"","AvatarImage":"","GeocacheFindCount":222,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":281037984,"CacheID":3220672,"LogGuid":"064708a3-2727-44a4-a250-c5c44ed74c12","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Pr' tolk kamna je blo težko najdt pravega :)","Created":"2012-11-23","Visited":"2012-11-14","UserName":"alenka12","MembershipLevel":1,"AccountID":6546465,"AccountGuid":"dfa1727c-ab02-4529-9cf3-04781671e0d2","Email":"","AvatarImage":"","GeocacheFindCount":62,"GeocacheHideCount":0,"ChallengesCompleted":0,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]},{"LogID":279501752,"CacheID":3220672,"LogGuid":"4fcd61ba-0090-46d9-b7cf-0682d7f21b49","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Ce sem pred tem našel 3 zaklade takoj, pa mi tukaj ni šlo najhitreje, pa vseeno v 10ih minutah. HZZ","Created":"2012-11-14","Visited":"2012-11-14","UserName":"Simon07","MembershipLevel":3,"AccountID":4074208,"AccountGuid":"88adea12-ae5a-471b-97b2-413e6c4e5433","Email":"","AvatarImage":"178d4ebe-bb91-4c26-a4ab-0a81e7ea7cdc.jpg","GeocacheFindCount":746,"GeocacheHideCount":13,"ChallengesCompleted":22,"IsEncoded":false,"creator":{"GroupTitle":"Premium Member","GroupImageUrl":"/images/icons/prem_user.gif"},"Images":[]},{"LogID":278635825,"CacheID":3220672,"LogGuid":"e4134282-8ea2-4324-b5d6-afdcf662acc8","Latitude":null,"Longitude":null,"LatLonString":"","LogType":"Found it","LogTypeImage":"2.png","LogText":"Kar s kolesom po slepem tiru do zakladka! :)<br />HZZ","Created":"2012-11-10","Visited":"2012-11-10","UserName":"strgacom","MembershipLevel":1,"AccountID":5106851,"AccountGuid":"7aa5ff75-478e-441a-9c2c-146ba7445777","Email":"","AvatarImage":"731d212e-0986-4081-a3e9-166bd77a7215.jpg","GeocacheFindCount":422,"GeocacheHideCount":4,"ChallengesCompleted":24,"IsEncoded":false,"creator":{"GroupTitle":"Member","GroupImageUrl":"/images/icons/reg_user.gif"},"Images":[]}], "pageInfo": { "idx":1, "size": 25, "totalRows": 82, "rows": 82 } }; $(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', 'Premium', null, true]); });var gaToken = 'UA-2020240-1';//]]> </script> </form> @@ -1979,6 +2004,6 @@ $(function() { _gaq.push(['_trackEvent', 'Geocaching', 'CacheDetailsMemberType', </noscript> </div> <!-- End Quantcast tag --> - <!-- Server: WEB14; Build: Web.HotFix_20130305.1 --> + <!-- Server: WEB11; Build: Web.Release_20130319.1 --> </body> </html> diff --git a/tests/src/cgeo/geocaching/twitter/TwitterTest.java b/tests/src/cgeo/geocaching/twitter/TwitterTest.java new file mode 100644 index 0000000..a27e57a --- /dev/null +++ b/tests/src/cgeo/geocaching/twitter/TwitterTest.java @@ -0,0 +1,37 @@ +package cgeo.geocaching.twitter; + +import cgeo.geocaching.Geocache; +import cgeo.geocaching.Settings; +import cgeo.geocaching.Trackable; + +import junit.framework.TestCase; + +public class TwitterTest extends TestCase { + + public static void testTrackableMessage() { + Trackable tb = new Trackable(); + tb.setName("Travel bug"); + tb.setGeocode("TB1234"); + assertEquals("I touched Travel bug (http://www.geocaching.com//track/details.aspx?tracker=TB1234)! #cgeo #geocaching", Twitter.getStatusMessage(tb)); + } + + public static void testCacheMessage() { + Geocache cache = new Geocache(); + cache.setGeocode("GC1234"); + cache.setName("TwitterTest"); + assertEquals("I found TwitterTest (http://coord.info/GC1234) #cgeo #geocaching", Twitter.getStatusMessage(cache)); + } + + public static void testAvoidDuplicateTags() { + String oldMessage = Settings.getCacheTwitterMessage(); + try { + Geocache cache = new Geocache(); + cache.setGeocode("GC1234"); + cache.setName("TwitterTest"); + Settings.setCacheTwitterMessage("[NAME] #cgeo"); + assertEquals("TwitterTest #cgeo #geocaching", Twitter.getStatusMessage(cache)); + } finally { + Settings.setCacheTwitterMessage(oldMessage); + } + } +} |
