From 4d29097c0eb24697fd12adea4efce16e3a8de4d6 Mon Sep 17 00:00:00 2001 From: Daniel Munn Date: Thu, 7 Jun 2012 11:18:49 +0100 Subject: [PATCH] Update plupload; correct incorrect setTimeout call --- app/views/dmsf/_multi_upload.html.erb | 2 +- assets/javascripts/plupload/i18n/el.js | 14 + assets/javascripts/plupload/i18n/et.js | 33 + assets/javascripts/plupload/i18n/fa.js | 37 + assets/javascripts/plupload/i18n/fr-ca.js | 35 + assets/javascripts/plupload/i18n/ko.js | 36 + assets/javascripts/plupload/i18n/pl.js | 24 + .../jquery.ui.plupload/jquery.ui.plupload.js | 753 +------ .../plupload/plupload.browserplus.js | 1 + assets/javascripts/plupload/plupload.flash.js | 427 +--- .../javascripts/plupload/plupload.flash.swf | Bin 18823 -> 18873 bytes assets/javascripts/plupload/plupload.full.js | 2 + assets/javascripts/plupload/plupload.gears.js | 1 + assets/javascripts/plupload/plupload.html4.js | 423 +--- assets/javascripts/plupload/plupload.html5.js | 1415 +------------ assets/javascripts/plupload/plupload.js | 1773 +---------------- .../plupload/plupload.silverlight.js | 1 + .../plupload/plupload.silverlight.xap | Bin 0 -> 44013 bytes 18 files changed, 191 insertions(+), 4786 deletions(-) create mode 100644 assets/javascripts/plupload/i18n/el.js create mode 100644 assets/javascripts/plupload/i18n/et.js create mode 100644 assets/javascripts/plupload/i18n/fa.js create mode 100644 assets/javascripts/plupload/i18n/fr-ca.js create mode 100644 assets/javascripts/plupload/i18n/ko.js create mode 100644 assets/javascripts/plupload/i18n/pl.js create mode 100644 assets/javascripts/plupload/plupload.browserplus.js create mode 100644 assets/javascripts/plupload/plupload.full.js create mode 100644 assets/javascripts/plupload/plupload.gears.js create mode 100644 assets/javascripts/plupload/plupload.silverlight.js create mode 100644 assets/javascripts/plupload/plupload.silverlight.xap diff --git a/app/views/dmsf/_multi_upload.html.erb b/app/views/dmsf/_multi_upload.html.erb index 5ca6dc97..9a645ca1 100644 --- a/app/views/dmsf/_multi_upload.html.erb +++ b/app/views/dmsf/_multi_upload.html.erb @@ -118,7 +118,7 @@ } if(pluploader.total.uploaded == pluploader.files.length) jQuery('#uploadform').submit(); - else if(pluploader.total.uploaded + pluploader.total.failed == pluploader.files.length) setTimeout(2000, function() {jQuery('#uploadform').submit();}) + else if(pluploader.total.uploaded + pluploader.total.failed == pluploader.files.length) setTimeout(function() {jQuery('#uploadform').submit();}, 2000) else dmsfFileFieldCount++; }); } diff --git a/assets/javascripts/plupload/i18n/el.js b/assets/javascripts/plupload/i18n/el.js new file mode 100644 index 00000000..b6f8cd5b --- /dev/null +++ b/assets/javascripts/plupload/i18n/el.js @@ -0,0 +1,14 @@ +// Greek +plupload.addI18n({ + 'Select files' : 'Επιλέξτε Αρχεία', + 'Add files to the upload queue and click the start button.' : 'Προσθήκη αρχείων στην ουρά μεταφόρτωσης', + 'Filename' : 'Όνομα αρχείου', + 'Status' : 'Κατάσταση', + 'Size' : 'Μέγεθος', + 'Add Files' : 'Προσθέστε αρχεία', + 'Stop current upload' : 'Διακοπή τρέχουσας μεταφόρτωσης', + 'Start uploading queue' : 'Εκκίνηση μεταφόρτωσης ουράς αρχείων', + 'Drag files here.' : 'Σύρετε αρχεία εδώ', + 'Start Upload': 'Εκκίνηση μεταφόρτωσης', + 'Uploaded %d/%d files': 'Ανέβηκαν %d/%d αρχεία' +}); \ No newline at end of file diff --git a/assets/javascripts/plupload/i18n/et.js b/assets/javascripts/plupload/i18n/et.js new file mode 100644 index 00000000..486db263 --- /dev/null +++ b/assets/javascripts/plupload/i18n/et.js @@ -0,0 +1,33 @@ +// Estonian translation, et.js +plupload.addI18n({ + 'Select files' : 'Vali faile', + 'Add files to the upload queue and click the start button.' : 'Lisa failid üleslaadimise järjekorda ja klõpsa alustamise nupule.', + 'Filename' : 'Failinimi', + 'Status' : 'Olek', + 'Size' : 'Suurus', + 'Add files' : 'Lisa faile', + 'Stop current upload' : 'Praeguse üleslaadimise peatamine', + 'Start uploading queue' : 'Järjekorras ootavate failide üleslaadimise alustamine', + 'Drag files here.' : 'Lohista failid siia.', + 'Start upload' : 'Alusta üleslaadimist', + 'Uploaded %d/%d files': 'Üles laaditud %d/%d', + 'Stop upload': 'Peata üleslaadimine', + 'Start upload': 'Alusta üleslaadimist', + '%d files queued': 'Järjekorras on %d faili', + 'File: %s': 'Fail: %s', + 'Close': 'Sulge', + 'Using runtime: ': 'Kasutatakse varianti: ', + 'File: %f, size: %s, max file size: %m': 'Fail: %f, suurus: %s, suurim failisuurus: %m', + 'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'Üleslaadimise element saab vastu võtta ainult %d faili ühe korraga. Ülejäänud failid jäetakse laadimata.', + 'Upload URL might be wrong or doesn\'t exist': 'Üleslaadimise URL võib olla vale või seda pole', + 'Error: File too large: ': 'Viga: fail on liiga suur: ', + 'Error: Invalid file extension: ': 'Viga: sobimatu faililaiend: ', + 'File extension error.': 'Faililaiendi viga.', + 'File size error.': 'Failisuuruse viga.', + 'File count error.': 'Failide arvu viga.', + 'Init error.': 'Lähtestamise viga.', + 'HTTP Error.': 'HTTP ühenduse viga.', + 'Security error.': 'Turvaviga.', + 'Generic error.': 'Üldine viga.', + 'IO error.': 'S/V (I/O) viga.' +}); \ No newline at end of file diff --git a/assets/javascripts/plupload/i18n/fa.js b/assets/javascripts/plupload/i18n/fa.js new file mode 100644 index 00000000..af36e228 --- /dev/null +++ b/assets/javascripts/plupload/i18n/fa.js @@ -0,0 +1,37 @@ +// Persian +plupload.addI18n({ + 'Select files' : 'انتخاب فایل', + 'Add files to the upload queue and click the start button.' : 'اضافه کنید فایل ها را به صف آپلود و دکمه شروع را کلیک کنید.', + 'Filename' : 'نام فایل', + 'Status' : 'وضعیت', + 'Size' : 'سایز', + 'Add Files' : 'افزودن فایل', + 'Stop Upload' : 'توقف انتقال', + 'Start Upload' : 'شروع انتقال', + 'Add files' : 'افزودن فایل', + 'Add files.' : 'افزودن فایل', + 'Stop current upload' : 'توقف انتقال جاری', + 'Start uploading queue' : 'شروع صف انتقال', + 'Stop upload' : 'توقف انتقال', + 'Start upload' : 'شروع انتقال', + 'Uploaded %d/%d files': 'منتقل شد %d/%d از فایلها', + 'N/A' : 'N/A', + 'Drag files here.' : 'بکشید فایل ها رو به اینجا', + 'File extension error.': 'خطا پیشوند فایل', + 'File size error.': 'خطای سایز فایل', + 'File count error.': 'خطای تعداد فایل', + 'Init error.': 'خطا در استارت اسکریپت', + 'HTTP Error.': 'HTTP خطای', + 'Security error.': 'خطای امنیتی', + 'Generic error.': 'خطای عمومی', + 'IO error.': 'IO خطای', + 'File: %s': ' فایل ها : %s', + 'Close': 'بستن', + '%d files queued': '%d فایل در صف', + 'Using runtime: ': 'استفاده میکنید از : ', + 'File: %f, size: %s, max file size: %m': فایل: %f, سایز: %s, بزرگترین سایز فایل: %m', + 'Upload element accepts only %d file(s) at a time. Extra files were stripped.': 'عنصر بارگذار فقط %d فایل رو در یک زمان می پذیرد. سایر فایل ها مجرد از این موضوع هستند.', + 'Upload URL might be wrong or doesn\'t exist': 'آدرس آپلود اشتباه می باشد یا وجود ندارد', + 'Error: File too large: ': 'خطا: فایل حجیم است :: ', + 'Error: Invalid file extension: ': 'خطا پسوند فایل معتبر نمی باشد : ' +}); diff --git a/assets/javascripts/plupload/i18n/fr-ca.js b/assets/javascripts/plupload/i18n/fr-ca.js new file mode 100644 index 00000000..6dd51a48 --- /dev/null +++ b/assets/javascripts/plupload/i18n/fr-ca.js @@ -0,0 +1,35 @@ +// French-Canadian +plupload.addI18n({ + 'Select files' : 'Sélectionnez les fichiers', + 'Add files to the upload queue and click the start button.' : 'Ajoutez des fichiers à la file d\'attente et appuyez sur le bouton démarrer.', + 'Filename' : 'Nom du fichier', + 'Status' : 'Statut', + 'Size' : 'Taille', + 'Add files' : 'Ajouter Fichiers', + 'Stop current upload' : 'Arrêter le téléversement actuel', + 'Start uploading queue' : 'Démarrer le téléversement', + 'Uploaded %d/%d files': '%d/%d fichiers envoyés', + 'N/A' : 'Non applicable', + 'Drag files here.' : 'Glisser-déposer les fichiers ici', + 'File extension error.': 'Erreur d\'extension de fichier', + 'File size error.': 'Erreur de taille de fichier', + 'Init error.': 'Erreur d\'initialisation', + 'HTTP Error.': 'Erreur HTTP', + 'Security error.': 'Erreur de sécurité', + 'Generic error.': 'Erreur commune', + 'IO error.': 'Erreur E/S', + 'Stop Upload': 'Arrêter le téléversement', + 'Add Files': 'Ajouter des fichiers', + 'Start upload': 'Démarrer le téléversement', + '%d files queued': '%d fichiers en attente', + 'File: %s':'Fichier: %s', + 'Close':'Fermer', + 'Using runtime:':'Moteur logiciel:', + 'File: %f, size: %s, max file size: %m':'Fichier: %f, poids: %s, poids maximal: %m', + 'Upload element accepts only %d file(s) at a time. Extra files were stripped.':'La file accepte %d fichier(s) à la fois. Les fichiers en trop sont ignorés', + 'Upload URL might be wrong or doesn\'t exist':'L\'URL de téléversement est erroné ou inexistant', + 'Error: File to large: ':'Fichier trop volumineux: ', + 'Error: Invalid file extension: ':'Extension de fichier invalide: ', + 'File size error.':'Erreur de taile de fichier', + 'File count error.':'Erreur de décompte des fichiers' +}); \ No newline at end of file diff --git a/assets/javascripts/plupload/i18n/ko.js b/assets/javascripts/plupload/i18n/ko.js new file mode 100644 index 00000000..6eab4203 --- /dev/null +++ b/assets/javascripts/plupload/i18n/ko.js @@ -0,0 +1,36 @@ +// Republic of Korea +plupload.addI18n({ + 'Select files' : '파일 선택', + 'Add files to the upload queue and click the start button.' : '파일을 업로드 큐에 추가하여 시작 버튼을 클릭하십시오.', + 'Filename' : '파일 이름', + 'Status' : '상태', + 'Size' : '크기', + 'Add Files' : '파일 추가', + 'Stop Upload': '업로드 중지', + 'Start Upload': '업로드', + 'Add files': '파일 추가', + 'Stop current upload': '현재 업로드를 정지', + 'Start uploading queue': '업로드', + 'Stop upload': '업로드 중지', + 'Start upload': '업로드', + 'Uploaded % d / % d files': '업로드 중 % d / % d 파일', + 'N / A': 'N / A', + 'Drag files here': '여기에 파일을 드래그', + 'File extension error': '파일 확장자 오류', + 'File size error': '파일 크기 오류', + 'File count error': '이미지 : 오류', + 'Init error': '초기화 오류', + 'HTTP Error': 'HTTP 오류', + 'Security error': '보안 오류', + 'Generic error': '오류', + 'IO error': 'IO 오류', + 'File : % s': '파일 % s', + 'Close': '닫기', + '% d files queued': '% d 파일이 추가되었습니다', + 'Using runtime :': '모드', + 'File : % f, size : % s, max file size : % m': '파일 : % f, 크기 : % s, 최대 파일 크기 : % m', + 'Upload element accepts only % d file (s) at a time. Extra files were stripped': '업로드 가능한 파일의 수는 % d입니다. 불필요한 파일은 삭제되었습니다 ', + 'Upload URL might be wrong or doesn \'t exist ':'업로드할 URL이 존재하지 않습니다 ', + 'Error : File too large :': '오류 : 크기가 너무 큽니다', + 'Error : Invalid file extension :': '오류 : 확장자가 허용되지 않습니다 :' +}); \ No newline at end of file diff --git a/assets/javascripts/plupload/i18n/pl.js b/assets/javascripts/plupload/i18n/pl.js new file mode 100644 index 00000000..3d1b9bea --- /dev/null +++ b/assets/javascripts/plupload/i18n/pl.js @@ -0,0 +1,24 @@ +plupload.addI18n({ +'Select files' : 'Wybierz pliki:', +'Add files to the upload queue and click the start button.' : 'Dodaj pliki i kliknij \'Rozpocznij transfer\'.', +'Filename' : 'Nazwa pliku', +'Status' : 'Status', +'Size' : 'Rozmiar', +'Add files' : 'Dodaj pliki', +'Stop current upload' : 'Przerwij aktualny transfer', +'Start uploading queue' : 'Rozpocznij wysyłanie', +'Uploaded %d/%d files': 'Wysłano %d/%d plików', +'N/A' : 'Nie dostępne', +'Drag files here.' : 'Przeciągnij tu pliki', +'File extension error.': 'Nieobsługiwany format pliku.', +'File size error.': 'Plik jest zbyt duży.', +'Init error.': 'Błąd inicjalizacji.', +'HTTP Error.': 'Błąd HTTP.', +'Security error.': 'Błąd bezpieczeństwa.', +'Generic error.': 'Błąd ogólny.', +'IO error.': 'Błąd IO.', +'Stop Upload': 'Przerwij transfer.', +'Add Files': 'Dodaj pliki', +'Start upload': 'Rozpocznij transfer.', +'%d files queued': '%d plików w kolejce.' +}); diff --git a/assets/javascripts/plupload/jquery.ui.plupload/jquery.ui.plupload.js b/assets/javascripts/plupload/jquery.ui.plupload/jquery.ui.plupload.js index 5ed1a499..a836bb62 100644 --- a/assets/javascripts/plupload/jquery.ui.plupload/jquery.ui.plupload.js +++ b/assets/javascripts/plupload/jquery.ui.plupload/jquery.ui.plupload.js @@ -1,752 +1 @@ -/** - * jquery.ui.plupload.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * - * Optionally: - * jquery.ui.button.js - * jquery.ui.progressbar.js - * jquery.ui.sortable.js - */ - -// JSLint defined globals -/*global window:false, document:false, plupload:false, jQuery:false */ - -(function(window, document, plupload, $, undef) { - -var uploaders = {}; - -function _(str) { - return plupload.translate(str) || str; -} - -function renderUI(obj) { - obj.html( - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - '
' + - - '
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
' + _('Filename') + '' + _('Status') + '' + _('Size') + ' 
' + - - '
' + - '
' + - '
' + - - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
' + - '
' + - '
' + - '
' + - '' + - '
' - ); -} - - -$.widget("ui.plupload", { - - contents_bak: '', - - runtime: null, - - options: { - browse_button_hover: 'ui-state-hover', - browse_button_active: 'ui-state-active', - - // widget specific - dragdrop : true, - multiple_queues: true, // re-use widget by default - - buttons: { - browse: true, - start: true, - stop: true - }, - autostart: false, - sortable: false, - rename: false, - max_file_count: 0 // unlimited - }, - - FILE_COUNT_ERROR: -9001, - - _create: function() { - var self = this, id, uploader; - - id = this.element.attr('id'); - if (!id) { - id = plupload.guid(); - this.element.attr('id', id); - } - this.id = id; - - // backup the elements initial state - this.contents_bak = this.element.html(); - renderUI(this.element); - - // container, just in case - this.container = $('.plupload_container', this.element).attr('id', id + '_container'); - - // list of files, may become sortable - this.filelist = $('.plupload_filelist_content', this.container) - .attr({ - id: id + '_filelist', - unselectable: 'on' - }); - - // buttons - this.browse_button = $('.plupload_add', this.container).attr('id', id + '_browse'); - this.start_button = $('.plupload_start', this.container).attr('id', id + '_start'); - this.stop_button = $('.plupload_stop', this.container).attr('id', id + '_stop'); - - if ($.ui.button) { - this.browse_button.button({ - icons: { primary: 'ui-icon-circle-plus' } - }); - - this.start_button.button({ - icons: { primary: 'ui-icon-circle-arrow-e' }, - disabled: true - }); - - this.stop_button.button({ - icons: { primary: 'ui-icon-circle-close' } - }); - } - - // progressbar - this.progressbar = $('.plupload_progress_container', this.container); - - if ($.ui.progressbar) { - this.progressbar.progressbar(); - } - - // counter - this.counter = $('.plupload_count', this.element) - .attr({ - id: id + '_count', - name: id + '_count' - }); - - // initialize uploader instance - uploader = this.uploader = uploaders[id] = new plupload.Uploader($.extend({ - container: id , - browse_button: id + '_browse' - }, this.options)); - - // do not show UI if no runtime can be initialized - uploader.bind('Error', function(up, err) { - if (err.code === plupload.INIT_ERROR) { - self.destroy(); - } - }); - - uploader.bind('Init', function(up, res) { - // all buttons are optional, so they can be disabled and hidden - if (!self.options.buttons.browse) { - self.browse_button.button('disable').hide(); - up.disableBrowse(true); - } - - if (!self.options.buttons.start) { - self.start_button.button('disable').hide(); - } - - if (!self.options.buttons.stop) { - self.stop_button.button('disable').hide(); - } - - if (!self.options.unique_names && self.options.rename) { - self._enableRenaming(); - } - - if (uploader.features.dragdrop && self.options.dragdrop) { - self._enableDragAndDrop(); - } - - self.container.attr('title', _('Using runtime: ') + (self.runtime = res.runtime)); - - self.start_button.click(function(e) { - if (!$(this).button('option', 'disabled')) { - self.start(); - } - e.preventDefault(); - }); - - self.stop_button.click(function(e) { - self.stop(); - e.preventDefault(); - }); - }); - - - // check if file count doesn't exceed the limit - if (self.options.max_file_count) { - uploader.bind('FilesAdded', function(up, selectedFiles) { - var removed = [], selectedCount = selectedFiles.length; - var extraCount = up.files.length + selectedCount - self.options.max_file_count; - - if (extraCount > 0) { - removed = selectedFiles.splice(selectedCount - extraCount, extraCount); - - up.trigger('Error', { - code : self.FILE_COUNT_ERROR, - message : _('File count error.'), - file : removed - }); - } - }); - } - - // uploader internal events must run first - uploader.init(); - - uploader.bind('FilesAdded', function(up, files) { - self._trigger('selected', null, { up: up, files: files } ); - - if (self.options.autostart) { - // set a little delay to make sure that QueueChanged triggered by the core has time to complete - setTimeout(function() { - self.start(); - }, 10); - } - }); - - uploader.bind('FilesRemoved', function(up, files) { - self._trigger('removed', null, { up: up, files: files } ); - }); - - uploader.bind('QueueChanged', function() { - self._updateFileList(); - }); - - uploader.bind('StateChanged', function() { - self._handleState(); - }); - - uploader.bind('UploadFile', function(up, file) { - self._handleFileStatus(file); - }); - - uploader.bind('FileUploaded', function(up, file) { - self._handleFileStatus(file); - - self._trigger('uploaded', null, { up: up, file: file } ); - }); - - uploader.bind('UploadProgress', function(up, file) { - // Set file specific progress - $('#' + file.id) - .find('.plupload_file_status') - .html(file.percent + '%') - .end() - .find('.plupload_file_size') - .html(plupload.formatSize(file.size)); - - self._handleFileStatus(file); - self._updateTotalProgress(); - - self._trigger('progress', null, { up: up, file: file } ); - }); - - uploader.bind('UploadComplete', function(up, files) { - self._trigger('complete', null, { up: up, files: files } ); - }); - - uploader.bind('Error', function(up, err) { - var file = err.file, message, details; - - if (file) { - message = '' + err.message + ''; - details = err.details; - - if (details) { - message += "
" + err.details + ""; - } else { - - switch (err.code) { - case plupload.FILE_EXTENSION_ERROR: - details = _("File: %s").replace('%s', file.name); - break; - - case plupload.FILE_SIZE_ERROR: - details = _("File: %f, size: %s, max file size: %m").replace(/%([fsm])/g, function($0, $1) { - switch ($1) { - case 'f': return file.name; - case 's': return file.size; - case 'm': return plupload.parseSize(self.options.max_file_size); - } - }); - break; - - case self.FILE_COUNT_ERROR: - details = _("Upload element accepts only %d file(s) at a time. Extra files were stripped.") - .replace('%d', self.options.max_file_count); - break; - - case plupload.IMAGE_FORMAT_ERROR : - details = plupload.translate('Image format either wrong or not supported.'); - break; - - case plupload.IMAGE_MEMORY_ERROR : - details = plupload.translate('Runtime ran out of available memory.'); - break; - - case plupload.IMAGE_DIMENSIONS_ERROR : - details = plupload.translate('Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.').replace(/%([swh])/g, function($0, $1) { - switch ($1) { - case 's': return up.runtime; - case 'w': return up.features.maxWidth; - case 'h': return up.features.maxHeight; - } - }); - break; - - case plupload.HTTP_ERROR: - details = _("Upload URL might be wrong or doesn't exist"); - break; - } - message += "
" + details + ""; - } - - self.notify('error', message); - self._trigger('error', null, { up: up, file: file, error: message } ); - } - }); - }, - - _setOption: function(key, value) { - var self = this; - - if (key == 'buttons' && typeof(value) == 'object') { - value = $.extend(self.options.buttons, value); - - if (!value.browse) { - self.browse_button.button('disable').hide(); - up.disableBrowse(true); - } else { - self.browse_button.button('enable').show(); - up.disableBrowse(false); - } - - if (!value.start) { - self.start_button.button('disable').hide(); - } else { - self.start_button.button('enable').show(); - } - - if (!value.stop) { - self.stop_button.button('disable').hide(); - } else { - self.start_button.button('enable').show(); - } - } - - self.uploader.settings[key] = value; - }, - - - start: function() { - this.uploader.start(); - this._trigger('start', null); - }, - - stop: function() { - this.uploader.stop(); - this._trigger('stop', null); - }, - - getFile: function(id) { - var file; - - if (typeof id === 'number') { - file = this.uploader.files[id]; - } else { - file = this.uploader.getFile(id); - } - return file; - }, - - removeFile: function(id) { - var file = this.getFile(id); - if (file) { - this.uploader.removeFile(file); - } - }, - - clearQueue: function() { - this.uploader.splice(); - }, - - getUploader: function() { - return this.uploader; - }, - - refresh: function() { - this.uploader.refresh(); - }, - - - _handleState: function() { - var self = this, up = this.uploader; - - if (up.state === plupload.STARTED) { - - $(self.start_button).button('disable'); - - $([]) - .add(self.stop_button) - .add('.plupload_started') - .removeClass('plupload_hidden'); - - $('.plupload_upload_status', self.element).text( - _('Uploaded %d/%d files').replace('%d/%d', up.total.uploaded+'/'+up.files.length) - ); - - $('.plupload_header_content', self.element).addClass('plupload_header_content_bw'); - - } else { - - $([]) - .add(self.stop_button) - .add('.plupload_started') - .addClass('plupload_hidden'); - - if (self.options.multiple_queues) { - $(self.start_button).button('enable'); - - $('.plupload_header_content', self.element).removeClass('plupload_header_content_bw'); - } - - self._updateFileList(); - } - }, - - - _handleFileStatus: function(file) { - var actionClass, iconClass; - - // since this method might be called asynchronously, file row might not yet be rendered - if (!$('#' + file.id).length) { - return; - } - - switch (file.status) { - case plupload.DONE: - actionClass = 'plupload_done'; - iconClass = 'ui-icon ui-icon-circle-check'; - break; - - case plupload.FAILED: - actionClass = 'ui-state-error plupload_failed'; - iconClass = 'ui-icon ui-icon-alert'; - break; - - case plupload.QUEUED: - actionClass = 'plupload_delete'; - iconClass = 'ui-icon ui-icon-circle-minus'; - break; - - case plupload.UPLOADING: - actionClass = 'ui-state-highlight plupload_uploading'; - iconClass = 'ui-icon ui-icon-circle-arrow-w'; - - // scroll uploading file into the view if its bottom boundary is out of it - var scroller = $('.plupload_scroll', this.container), - scrollTop = scroller.scrollTop(), - scrollerHeight = scroller.height(), - rowOffset = $('#' + file.id).position().top + $('#' + file.id).height(); - - if (scrollerHeight < rowOffset) { - scroller.scrollTop(scrollTop + rowOffset - scrollerHeight); - } - break; - } - actionClass += ' ui-state-default plupload_file'; - - $('#' + file.id) - .attr('class', actionClass) - .find('.ui-icon') - .attr('class', iconClass); - }, - - - _updateTotalProgress: function() { - var up = this.uploader; - - this.progressbar.progressbar('value', up.total.percent); - - this.element - .find('.plupload_total_status') - .html(up.total.percent + '%') - .end() - .find('.plupload_total_file_size') - .html(plupload.formatSize(up.total.size)) - .end() - .find('.plupload_upload_status') - .text(_('Uploaded %d/%d files').replace('%d/%d', up.total.uploaded+'/'+up.files.length)); - }, - - - _updateFileList: function() { - var self = this, up = this.uploader, filelist = this.filelist, - count = 0, - id, prefix = this.id + '_', - fields; - - // destroy sortable if enabled - if ($.ui.sortable && this.options.sortable) { - $('tbody', filelist).sortable('destroy'); - } - - filelist.empty(); - - $.each(up.files, function(i, file) { - fields = ''; - id = prefix + count; - - if (file.status === plupload.DONE) { - if (file.target_name) { - fields += ''; - } - fields += ''; - fields += ''; - - count++; - self.counter.val(count); - } - - filelist.append( - '' + - '' + file.name + '' + - '' + file.percent + '%' + - '' + plupload.formatSize(file.size) + '' + - '
' + fields + '' + - '' - ); - - self._handleFileStatus(file); - - $('#' + file.id + '.plupload_delete .ui-icon, #' + file.id + '.plupload_done .ui-icon') - .click(function(e) { - $('#' + file.id).remove(); - up.removeFile(file); - - e.preventDefault(); - }); - - self._trigger('updatelist', null, filelist); - }); - - if (up.total.queued === 0) { - $('.ui-button-text', self.browse_button).text(_('Add Files')); - } else { - $('.ui-button-text', self.browse_button).text(_('%d files queued').replace('%d', up.total.queued)); - } - - - if (up.files.length === (up.total.uploaded + up.total.failed)) { - self.start_button.button('disable'); - } else { - self.start_button.button('enable'); - } - - - // Scroll to end of file list - filelist[0].scrollTop = filelist[0].scrollHeight; - - self._updateTotalProgress(); - - if (!up.files.length && up.features.dragdrop && up.settings.dragdrop) { - // Re-add drag message if there are no files - $('#' + id + '_filelist').append('' + _("Drag files here.") + ''); - } else { - // Otherwise re-initialize sortable - if (self.options.sortable && $.ui.sortable) { - self._enableSortingList(); - } - } - }, - - - _enableRenaming: function() { - var self = this; - - $('.plupload_delete .plupload_file_name span', this.filelist).live('click', function(e) { - var targetSpan = $(e.target), file, parts, name, ext = ""; - - // Get file name and split out name and extension - file = self.uploader.getFile(targetSpan.parents('tr')[0].id); - name = file.name; - parts = /^(.+)(\.[^.]+)$/.exec(name); - if (parts) { - name = parts[1]; - ext = parts[2]; - } - - // Display input element - targetSpan.hide().after(''); - targetSpan.next().val(name).focus().blur(function() { - targetSpan.show().next().remove(); - }).keydown(function(e) { - var targetInput = $(this); - - if ($.inArray(e.keyCode, [13, 27]) !== -1) { - e.preventDefault(); - - // Rename file and glue extension back on - if (e.keyCode === 13) { - file.name = targetInput.val() + ext; - targetSpan.text(file.name); - } - targetInput.blur(); - } - }); - }); - }, - - - _enableDragAndDrop: function() { - this.filelist.append('' + _("Drag files here.") + ''); - - this.filelist.parent().attr('id', this.id + '_dropbox'); - - this.uploader.settings.drop_element = this.options.drop_element = this.id + '_dropbox'; - }, - - - _enableSortingList: function() { - var idxStart, self = this; - - if ($('tbody tr', this.filelist).length < 2) { - return; - } - - $('tbody', this.filelist).sortable({ - containment: 'parent', - items: '.plupload_delete', - - helper: function(e, el) { - return el.clone(true).find('td:not(.plupload_file_name)').remove().end().css('width', '100%'); - }, - - stop: function(e, ui) { - var i, length, idx, files = []; - - $.each($(this).sortable('toArray'), function(i, id) { - files[files.length] = self.uploader.getFile(id); - }); - - files.unshift(files.length); - files.unshift(0); - - // re-populate files array - Array.prototype.splice.apply(self.uploader.files, files); - } - }); - }, - - notify: function(type, message) { - var popup = $( - '
' + - '' + - '

' + message + '

' + - '
' - ); - - popup - .addClass('ui-state-' + (type === 'error' ? 'error' : 'highlight')) - .find('p .ui-icon') - .addClass('ui-icon-' + (type === 'error' ? 'alert' : 'info')) - .end() - .find('.plupload_message_close') - .click(function() { - popup.remove(); - }) - .end(); - - $('.plupload_header_content', this.container).append(popup); - }, - - - - destroy: function() { - // unbind all button events - $('.plupload_button', this.element).unbind(); - - // destroy buttons - if ($.ui.button) { - $('.plupload_add, .plupload_start, .plupload_stop', this.container) - .button('destroy'); - } - - // destroy progressbar - if ($.ui.progressbar) { - this.progressbar.progressbar('destroy'); - } - - // destroy sortable behavior - if ($.ui.sortable && this.options.sortable) { - $('tbody', this.filelist).sortable('destroy'); - } - - // destroy uploader instance - this.uploader.destroy(); - - // restore the elements initial state - this.element - .empty() - .html(this.contents_bak); - this.contents_bak = ''; - - $.Widget.prototype.destroy.apply(this); - } -}); - - -} (window, document, plupload, jQuery)); +(function(f,a,c,g,e){var h={};function b(i){return c.translate(i)||i}function d(i){i.html('
'+b("Select files")+'
'+b("Add files to the upload queue and click the start button.")+'
'+b("Filename")+''+b("Status")+''+b("Size")+' 
')}g.widget("ui.plupload",{contents_bak:"",runtime:null,options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",dragdrop:true,multiple_queues:true,buttons:{browse:true,start:true,stop:true},autostart:false,sortable:false,rename:false,max_file_count:0},FILE_COUNT_ERROR:-9001,_create:function(){var i=this,k,j;k=this.element.attr("id");if(!k){k=c.guid();this.element.attr("id",k)}this.id=k;this.contents_bak=this.element.html();d(this.element);this.container=g(".plupload_container",this.element).attr("id",k+"_container");this.filelist=g(".plupload_filelist_content",this.container).attr({id:k+"_filelist",unselectable:"on"});this.browse_button=g(".plupload_add",this.container).attr("id",k+"_browse");this.start_button=g(".plupload_start",this.container).attr("id",k+"_start");this.stop_button=g(".plupload_stop",this.container).attr("id",k+"_stop");if(g.ui.button){this.browse_button.button({icons:{primary:"ui-icon-circle-plus"}});this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:true});this.stop_button.button({icons:{primary:"ui-icon-circle-close"}})}this.progressbar=g(".plupload_progress_container",this.container);if(g.ui.progressbar){this.progressbar.progressbar()}this.counter=g(".plupload_count",this.element).attr({id:k+"_count",name:k+"_count"});j=this.uploader=h[k]=new c.Uploader(g.extend({container:k,browse_button:k+"_browse"},this.options));j.bind("Error",function(l,m){if(m.code===c.INIT_ERROR){i.destroy()}});j.bind("Init",function(l,m){if(!i.options.buttons.browse){i.browse_button.button("disable").hide();l.disableBrowse(true)}if(!i.options.buttons.start){i.start_button.button("disable").hide()}if(!i.options.buttons.stop){i.stop_button.button("disable").hide()}if(!i.options.unique_names&&i.options.rename){i._enableRenaming()}if(j.features.dragdrop&&i.options.dragdrop){i._enableDragAndDrop()}i.container.attr("title",b("Using runtime: ")+(i.runtime=m.runtime));i.start_button.click(function(n){if(!g(this).button("option","disabled")){i.start()}n.preventDefault()});i.stop_button.click(function(n){i.stop();n.preventDefault()})});if(i.options.max_file_count){j.bind("FilesAdded",function(l,n){var o=[],m=n.length;var p=l.files.length+m-i.options.max_file_count;if(p>0){o=n.splice(m-p,p);l.trigger("Error",{code:i.FILE_COUNT_ERROR,message:b("File count error."),file:o})}})}j.init();j.bind("FilesAdded",function(l,m){i._trigger("selected",null,{up:l,files:m});if(i.options.autostart){setTimeout(function(){i.start()},10)}});j.bind("FilesRemoved",function(l,m){i._trigger("removed",null,{up:l,files:m})});j.bind("QueueChanged",function(){i._updateFileList()});j.bind("StateChanged",function(){i._handleState()});j.bind("UploadFile",function(l,m){i._handleFileStatus(m)});j.bind("FileUploaded",function(l,m){i._handleFileStatus(m);i._trigger("uploaded",null,{up:l,file:m})});j.bind("UploadProgress",function(l,m){g("#"+m.id).find(".plupload_file_status").html(m.percent+"%").end().find(".plupload_file_size").html(c.formatSize(m.size));i._handleFileStatus(m);i._updateTotalProgress();i._trigger("progress",null,{up:l,file:m})});j.bind("UploadComplete",function(l,m){i._trigger("complete",null,{up:l,files:m})});j.bind("Error",function(l,p){var n=p.file,o,m;if(n){o=""+p.message+"";m=p.details;if(m){o+="
"+p.details+""}else{switch(p.code){case c.FILE_EXTENSION_ERROR:m=b("File: %s").replace("%s",n.name);break;case c.FILE_SIZE_ERROR:m=b("File: %f, size: %s, max file size: %m").replace(/%([fsm])/g,function(r,q){switch(q){case"f":return n.name;case"s":return n.size;case"m":return c.parseSize(i.options.max_file_size)}});break;case i.FILE_COUNT_ERROR:m=b("Upload element accepts only %d file(s) at a time. Extra files were stripped.").replace("%d",i.options.max_file_count);break;case c.IMAGE_FORMAT_ERROR:m=c.translate("Image format either wrong or not supported.");break;case c.IMAGE_MEMORY_ERROR:m=c.translate("Runtime ran out of available memory.");break;case c.IMAGE_DIMENSIONS_ERROR:m=c.translate("Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.").replace(/%([swh])/g,function(r,q){switch(q){case"s":return l.runtime;case"w":return l.features.maxWidth;case"h":return l.features.maxHeight}});break;case c.HTTP_ERROR:m=b("Upload URL might be wrong or doesn't exist");break}o+="
"+m+""}i.notify("error",o);i._trigger("error",null,{up:l,file:n,error:o})}})},_setOption:function(j,k){var i=this;if(j=="buttons"&&typeof(k)=="object"){k=g.extend(i.options.buttons,k);if(!k.browse){i.browse_button.button("disable").hide();up.disableBrowse(true)}else{i.browse_button.button("enable").show();up.disableBrowse(false)}if(!k.start){i.start_button.button("disable").hide()}else{i.start_button.button("enable").show()}if(!k.stop){i.stop_button.button("disable").hide()}else{i.start_button.button("enable").show()}}i.uploader.settings[j]=k},start:function(){this.uploader.start();this._trigger("start",null)},stop:function(){this.uploader.stop();this._trigger("stop",null)},getFile:function(j){var i;if(typeof j==="number"){i=this.uploader.files[j]}else{i=this.uploader.getFile(j)}return i},removeFile:function(j){var i=this.getFile(j);if(i){this.uploader.removeFile(i)}},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},_handleState:function(){var j=this,i=this.uploader;if(i.state===c.STARTED){g(j.start_button).button("disable");g([]).add(j.stop_button).add(".plupload_started").removeClass("plupload_hidden");g(".plupload_upload_status",j.element).text(b("Uploaded %d/%d files").replace("%d/%d",i.total.uploaded+"/"+i.files.length));g(".plupload_header_content",j.element).addClass("plupload_header_content_bw")}else{g([]).add(j.stop_button).add(".plupload_started").addClass("plupload_hidden");if(j.options.multiple_queues){g(j.start_button).button("enable");g(".plupload_header_content",j.element).removeClass("plupload_header_content_bw")}j._updateFileList()}},_handleFileStatus:function(l){var n,j;if(!g("#"+l.id).length){return}switch(l.status){case c.DONE:n="plupload_done";j="ui-icon ui-icon-circle-check";break;case c.FAILED:n="ui-state-error plupload_failed";j="ui-icon ui-icon-alert";break;case c.QUEUED:n="plupload_delete";j="ui-icon ui-icon-circle-minus";break;case c.UPLOADING:n="ui-state-highlight plupload_uploading";j="ui-icon ui-icon-circle-arrow-w";var i=g(".plupload_scroll",this.container),m=i.scrollTop(),o=i.height(),k=g("#"+l.id).position().top+g("#"+l.id).height();if(o'}i+='';i+='';l++;k.counter.val(l)}m.append(''+p.name+''+p.percent+'%'+c.formatSize(p.size)+'
'+i+"");k._handleFileStatus(p);g("#"+p.id+".plupload_delete .ui-icon, #"+p.id+".plupload_done .ui-icon").click(function(r){g("#"+p.id).remove();j.removeFile(p);r.preventDefault()});k._trigger("updatelist",null,m)});if(j.total.queued===0){g(".ui-button-text",k.browse_button).text(b("Add Files"))}else{g(".ui-button-text",k.browse_button).text(b("%d files queued").replace("%d",j.total.queued))}if(j.files.length===(j.total.uploaded+j.total.failed)){k.start_button.button("disable")}else{k.start_button.button("enable")}m[0].scrollTop=m[0].scrollHeight;k._updateTotalProgress();if(!j.files.length&&j.features.dragdrop&&j.settings.dragdrop){g("#"+o+"_filelist").append(''+b("Drag files here.")+"")}else{if(k.options.sortable&&g.ui.sortable){k._enableSortingList()}}},_enableRenaming:function(){var i=this;g(".plupload_delete .plupload_file_name span",this.filelist).live("click",function(o){var m=g(o.target),k,n,j,l="";k=i.uploader.getFile(m.parents("tr")[0].id);j=k.name;n=/^(.+)(\.[^.]+)$/.exec(j);if(n){j=n[1];l=n[2]}m.hide().after('');m.next().val(j).focus().blur(function(){m.show().next().remove()}).keydown(function(q){var p=g(this);if(g.inArray(q.keyCode,[13,27])!==-1){q.preventDefault();if(q.keyCode===13){k.name=p.val()+l;m.text(k.name)}p.blur()}})})},_enableDragAndDrop:function(){this.filelist.append(''+b("Drag files here.")+"");this.filelist.parent().attr("id",this.id+"_dropbox");this.uploader.settings.drop_element=this.options.drop_element=this.id+"_dropbox"},_enableSortingList:function(){var j,i=this;if(g("tbody tr",this.filelist).length<2){return}g("tbody",this.filelist).sortable({containment:"parent",items:".plupload_delete",helper:function(l,k){return k.clone(true).find("td:not(.plupload_file_name)").remove().end().css("width","100%")},stop:function(p,o){var l,n,k,m=[];g.each(g(this).sortable("toArray"),function(q,r){m[m.length]=i.uploader.getFile(r)});m.unshift(m.length);m.unshift(0);Array.prototype.splice.apply(i.uploader.files,m)}})},notify:function(j,k){var i=g('

'+k+"

");i.addClass("ui-state-"+(j==="error"?"error":"highlight")).find("p .ui-icon").addClass("ui-icon-"+(j==="error"?"alert":"info")).end().find(".plupload_message_close").click(function(){i.remove()}).end();g(".plupload_header_content",this.container).append(i)},destroy:function(){g(".plupload_button",this.element).unbind();if(g.ui.button){g(".plupload_add, .plupload_start, .plupload_stop",this.container).button("destroy")}if(g.ui.progressbar){this.progressbar.progressbar("destroy")}if(g.ui.sortable&&this.options.sortable){g("tbody",this.filelist).sortable("destroy")}this.uploader.destroy();this.element.empty().html(this.contents_bak);this.contents_bak="";g.Widget.prototype.destroy.apply(this)}})}(window,document,plupload,jQuery)); \ No newline at end of file diff --git a/assets/javascripts/plupload/plupload.browserplus.js b/assets/javascripts/plupload/plupload.browserplus.js new file mode 100644 index 00000000..e66404bd --- /dev/null +++ b/assets/javascripts/plupload/plupload.browserplus.js @@ -0,0 +1 @@ +(function(a){a.runtimes.BrowserPlus=a.addRuntime("browserplus",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,i){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(n){var m,l,j=[],k,o;for(l=0;l0){r(++t,v)}else{k.status=a.DONE;n.trigger("FileUploaded",k,{response:x.value.body,status:w});if(w>=400){n.trigger("Error",{code:a.HTTP_ERROR,message:a.translate("HTTP Error."),file:k,status:w})}}}else{n.trigger("Error",{code:a.GENERIC_ERROR,message:a.translate("Generic Error."),file:k,details:x.error})}})}function q(t){k.size=t.size;if(l){e.FileAccess.chunk({file:t,chunkSize:l},function(w){if(w.success){var x=w.value,u=x.length;o=Array(u);for(var v=0;v' + - '' + - '' + - '' + - ''; - - if (plupload.ua.ie) { - el = document.createElement('div'); - flashContainer.appendChild(el); - el.outerHTML = html; - el = null; // just in case - } else { - flashContainer.innerHTML = html; - } - }()); - - function getFlashObj() { - return document.getElementById(uploader.id + '_flash'); - } - - function waitLoad() { - - // Wait for 5 sec - if (waitCount++ > 5000) { - callback({success : false}); - return; - } - - if (!initialized[uploader.id]) { - setTimeout(waitLoad, 1); - } - } - - waitLoad(); - - // Fix IE memory leaks - browseButton = flashContainer = null; - - // Wait for Flash to send init event - uploader.bind("Flash:Init", function() { - var lookup = {}, i; - - getFlashObj().setFileFilters(uploader.settings.filters, uploader.settings.multi_selection); - - // Prevent eventual reinitialization of the instance - if (initialized[uploader.id]) { - return; - } - initialized[uploader.id] = true; - - uploader.bind("UploadFile", function(up, file) { - var settings = up.settings, resize = uploader.settings.resize || {}; - - getFlashObj().uploadFile(lookup[file.id], settings.url, { - name : file.target_name || file.name, - mime : plupload.mimeTypes[file.name.replace(/^.+\.([^.]+)/, '$1').toLowerCase()] || 'application/octet-stream', - chunk_size : settings.chunk_size, - width : resize.width, - height : resize.height, - quality : resize.quality, - multipart : settings.multipart, - multipart_params : settings.multipart_params || {}, - file_data_name : settings.file_data_name, - format : /\.(jpg|jpeg)$/i.test(file.name) ? 'jpg' : 'png', - headers : settings.headers, - urlstream_upload : settings.urlstream_upload - }); - }); - - uploader.bind("CancelUpload", function() { - getFlashObj().cancelUpload(); - }); - - - uploader.bind("Flash:UploadProcess", function(up, flash_file) { - var file = up.getFile(lookup[flash_file.id]); - - if (file.status != plupload.FAILED) { - file.loaded = flash_file.loaded; - file.size = flash_file.size; - - up.trigger('UploadProgress', file); - } - }); - - uploader.bind("Flash:UploadChunkComplete", function(up, info) { - var chunkArgs, file = up.getFile(lookup[info.id]); - - chunkArgs = { - chunk : info.chunk, - chunks : info.chunks, - response : info.text - }; - - up.trigger('ChunkUploaded', file, chunkArgs); - - // Stop upload if file is maked as failed - if (file.status !== plupload.FAILED && up.state !== plupload.STOPPED) { - getFlashObj().uploadNextChunk(); - } - - // Last chunk then dispatch FileUploaded event - if (info.chunk == info.chunks - 1) { - file.status = plupload.DONE; - - up.trigger('FileUploaded', file, { - response : info.text - }); - } - }); - - uploader.bind("Flash:SelectFiles", function(up, selected_files) { - var file, i, files = [], id; - - // Add the selected files to the file queue - for (i = 0; i < selected_files.length; i++) { - file = selected_files[i]; - - // Store away flash ref internally - id = plupload.guid(); - lookup[id] = file.id; - lookup[file.id] = id; - - files.push(new plupload.File(id, file.name, file.size)); - } - - // Trigger FilesAdded event if we added any - if (files.length) { - uploader.trigger("FilesAdded", files); - } - }); - - uploader.bind("Flash:SecurityError", function(up, err) { - uploader.trigger('Error', { - code : plupload.SECURITY_ERROR, - message : plupload.translate('Security error.'), - details : err.message, - file : uploader.getFile(lookup[err.id]) - }); - }); - - uploader.bind("Flash:GenericError", function(up, err) { - uploader.trigger('Error', { - code : plupload.GENERIC_ERROR, - message : plupload.translate('Generic error.'), - details : err.message, - file : uploader.getFile(lookup[err.id]) - }); - }); - - uploader.bind("Flash:IOError", function(up, err) { - uploader.trigger('Error', { - code : plupload.IO_ERROR, - message : plupload.translate('IO error.'), - details : err.message, - file : uploader.getFile(lookup[err.id]) - }); - }); - - uploader.bind("Flash:ImageError", function(up, err) { - uploader.trigger('Error', { - code : parseInt(err.code, 10), - message : plupload.translate('Image error.'), - file : uploader.getFile(lookup[err.id]) - }); - }); - - uploader.bind('Flash:StageEvent:rollOver', function(up) { - var browseButton, hoverClass; - - browseButton = document.getElementById(uploader.settings.browse_button); - hoverClass = up.settings.browse_button_hover; - - if (browseButton && hoverClass) { - plupload.addClass(browseButton, hoverClass); - } - }); - - uploader.bind('Flash:StageEvent:rollOut', function(up) { - var browseButton, hoverClass; - - browseButton = document.getElementById(uploader.settings.browse_button); - hoverClass = up.settings.browse_button_hover; - - if (browseButton && hoverClass) { - plupload.removeClass(browseButton, hoverClass); - } - }); - - uploader.bind('Flash:StageEvent:mouseDown', function(up) { - var browseButton, activeClass; - - browseButton = document.getElementById(uploader.settings.browse_button); - activeClass = up.settings.browse_button_active; - - if (browseButton && activeClass) { - plupload.addClass(browseButton, activeClass); - - // Make sure that browse_button has active state removed from it - plupload.addEvent(document.body, 'mouseup', function() { - plupload.removeClass(browseButton, activeClass); - }, up.id); - } - }); - - uploader.bind('Flash:StageEvent:mouseUp', function(up) { - var browseButton, activeClass; - - browseButton = document.getElementById(uploader.settings.browse_button); - activeClass = up.settings.browse_button_active; - - if (browseButton && activeClass) { - plupload.removeClass(browseButton, activeClass); - } - }); - - - uploader.bind('Flash:ExifData', function(up, obj) { - uploader.trigger('ExifData', uploader.getFile(lookup[obj.id]), obj.data); - }); - - - uploader.bind('Flash:GpsData', function(up, obj) { - uploader.trigger('GpsData', uploader.getFile(lookup[obj.id]), obj.data); - }); - - - uploader.bind("QueueChanged", function(up) { - uploader.refresh(); - }); - - uploader.bind("FilesRemoved", function(up, files) { - var i; - - for (i = 0; i < files.length; i++) { - getFlashObj().removeFile(lookup[files[i].id]); - } - }); - - uploader.bind("StateChanged", function(up) { - uploader.refresh(); - }); - - uploader.bind("Refresh", function(up) { - var browseButton, browsePos, browseSize; - - // Set file filters incase it has been changed dynamically - getFlashObj().setFileFilters(uploader.settings.filters, uploader.settings.multi_selection); - - browseButton = document.getElementById(up.settings.browse_button); - if (browseButton) { - browsePos = plupload.getPos(browseButton, document.getElementById(up.settings.container)); - browseSize = plupload.getSize(browseButton); - - plupload.extend(document.getElementById(up.id + '_flash_container').style, { - top : browsePos.y + 'px', - left : browsePos.x + 'px', - width : browseSize.w + 'px', - height : browseSize.h + 'px' - }); - } - }); - - uploader.bind("DisableBrowse", function(up, disabled) { - getFlashObj().disableBrowse(disabled); - }); - - - uploader.bind("Destroy", function(up) { - var flashContainer; - - plupload.removeAllEvents(document.body, up.id); - - delete initialized[up.id]; - delete uploadInstances[up.id]; - - flashContainer = document.getElementById(up.id + '_flash_container'); - if (flashContainer) { - container.removeChild(flashContainer); - } - }); - - callback({success : true}); - }); - } - }); -})(window, document, plupload); +(function(f,b,d,e){var a={},g={};function c(){var h;try{h=navigator.plugins["Shockwave Flash"];h=h.description}catch(j){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){h="0.0"}}h=h.match(/\d+/g);return parseFloat(h[0]+"."+h[1])}d.flash={trigger:function(j,h,i){setTimeout(function(){var m=a[j],l,k;if(m){m.trigger("Flash:"+h,i)}},0)}};d.runtimes.Flash=d.addRuntime("flash",{getFeatures:function(){return{jpgresize:true,pngresize:true,maxWidth:8091,maxHeight:8091,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(m,o){var k,l,h=0,i=b.body;if(c()<10){o({success:false});return}g[m.id]=false;a[m.id]=m;k=b.getElementById(m.settings.browse_button);l=b.createElement("div");l.id=m.id+"_flash_container";d.extend(l.style,{position:"absolute",top:"0px",background:m.settings.shim_bgcolor||"transparent",zIndex:99999,width:"100%",height:"100%"});l.className="plupload flash";if(m.settings.container){i=b.getElementById(m.settings.container);if(d.getStyle(i,"position")==="static"){i.style.position="relative"}}i.appendChild(l);(function(){var p,q;p='';if(d.ua.ie){q=b.createElement("div");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+"_flash")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind("Destroy",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+"_flash_container");if(q){i.removeChild(q)}});m.bind("Flash:Init",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind("UploadFile",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\.(jpg|jpeg)$/i.test(u.name)?"jpg":"png",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind("CancelUpload",function(){n().cancelUpload()});m.bind("Flash:UploadProcess",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger("UploadProgress",u)}});m.bind("Flash:UploadChunkComplete",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger("ChunkUploaded",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger("FileUploaded",t,{response:u.text})}});m.bind("Flash:SelectFiles",function(s,v){var u,t,w=[],x;for(t=0;tvz?f6sj{X$$E5 z=KuNqKc9c?xy!ld-h1x3=bn4cO^PcdH6=--)o)V6Amd3kdtvzAzq+=-2d3YBZBHk0~ zXir2V-N*KHo!k{$ZcH(RC7N(|B$$kiq{!f?y(8Gw))Q=t99unKv}Nmp$6ylciFX%G zE%O&mE1NpaV1uwnm+mHQ6N3#rR;u#6FCQ&c^1;Eu6CE;k*a}eCbH_^J=iJBCs}9GG z4>+*S=6FX>ydxHDZC+p&q(??=I!%&5AnDz~&d5~BBTd177)@0NXZG&@=AiuIp!~s~ z`1Kd?RlWSwNBQbU`Dys=pFfm%G>#A+xZ#W`RUvF zS=;&9+xa=$`L03vqe1!6LHY4PIW;Kn9F$)klwTT@-x!q7x$CBA-&yOQQC?WR_8H}g zt1f;<861>f8I+$Gl%+yr8MWn-^ahyvqym*z&%GZZe`CA7_{|E*{P`p}=k^6tzn=L_ zY~I>i-}`dr&EAerLaEPZ9`(qLkG5+c%zU8eso$P*{F^hIHg~_)cvE`j*%dACqz>qx z8S*SS@~-W>WBiel|!ge*sm#_E83^DcS1$XfpV)?wCf9k-HC`n zY3STPou~xqfkoGs?@Z1MATWaSVtt-WetQ*iiDGvitg^y50?TL6taHV62OzFW?xwR&uJGeX;>WDZD>b6L% z(>gB*8Lx0x#yVo%4c)=61kGt*h?U?(bwupwY3zb6qvzK8IK&$%7%rL_nMQjUcH`s< zoK*X~*s}IWWk-A5sT*sb+nz{zN63LN7HUm6s@jDxg54|a?X8uuo~~r1+lh??U6T6n z_Es?t%4kXCboO*4+vB1hNw~}zgydASVsC~xXt}LQdslmMG$r-zw5Sn0IKx4t9YT!G z1T1PeY3M^DnbC(_QLLnu8PYZfp4A;&o`^V%mD8ZPMsa>*MN(*qqdU?WTPEgn8Pgal zE=zNw{gjBKS)3M9B1f|! z?O=B@M^F)xDDBN*S|)^QHAi&B( z2Q!9_zY>nMMl9iuSXX5H2%+zO{w-pWR%6N9UPs-{$SAmkf~rY5s*>!+Zri-C**Ifw zjaFk+Pq5WE_8GB^&Pr?qI*~JiCyQ8O{s^40Y_&NN>*)?-=i9sVn6-I%duuYPV!PVg zqDfoxZ+e0qFsN!XEgxLWH8Mj%>{&IjB*MXtNKSKGBq>I%#aP~0*N`zI z*2uFL)T?MCVmn4P=CZaY>K0Vb&LNg-sscuDCysA-Fq~|_AXXrdm+Z|N&-htuJc2rZ zFJu!&Q0#3WrMazLmuI)*a6{!ggnf23C&@zN9FnbS4rO~ehKg3hng5lTfzi&S3Y+&>*)di#f*0bwE&=Vj^42Y43vYGc^l5)V7GX zbH$Xl?qEFH9!^Z50~OAxHI7&p)w=iJqkYDRc4s(-E1)Y$=E)inxLhO4UXc#yjY+-l zo}&#l+QQx82C~u@DP8!g9f{-}cja+X{hB}&0uo-#dA~l4KMbsnmuE=tc?m7dyQ-vrcHJw$#rFENoEb2IkMU)KhA$Z&+AsTFD_J0bAf~4huhx7Lhxw zO!usJxN)fMYK^RLz(UZh=x8BXCLBZh?-U#wCw5;^o*QdJ#Me;|`w{8N1W2*&T;oJ! zrZ7slq@^_y>S?o8 z2Iei8TisBdBdkx@G)$K2g$n}<9Re32N8Yt~AtcjW6IeK}qCqK{URIV9Xl!T>)HKhl zo)=hn0->gQO;lAagj-)5m|sumX=57~%nejjHCN7QoPS(%X2RyGiiQfOakYyp+)np| zz}h0XCFrWQ;nolswJn|?gneGclIF#=RSk0-RGL#=J9|!p0@)_>hHP-gy5o)nL?sjx=jSa-zPxuQ8UlG_ZVRv1-pwOOd8c0EYGaI7nV zXl6=BtWAM3bXbJv>#nG(s;+8o2sGC>RLrinjXR%ONf%Idk+`s%sWl?{%1l0ZdAds~;SA+Vr%ZgowAB}i4bXsIWkXCBO(Z9c?P zSuwZTp2(sy*MU70X>0F-&)#99dzqpuwt}s+2tUhexLInXi(-flN2n*6jCE1}oSsBv zPOz)BvZp%{>$bt`tBkgHv^wU+&|pNW3j=fKHV2>~Hlx(oV5yv2TX~#gUZAlaDjrxo z-)0mW7dUES;T|Jmw$%hG8|#~E=i7|}`Z;NMYZpue7;X`Aj2JK?0=k6KMX^S_ClOUB@({slvj{>+^Q~|L+LBSH zAsEqtMV#iPLRHr8tj~s#Gn6Ep8OKnxXA#e8ym*QulChu(=9iBuo?`FB#Y@x)Ye)o{ z<`iP-nfDMXCkkp2;k5-j0&%E6MbLsoj;xrPQ_>3_O%O^)xVxd{h&4ks;Jc`q^v9uD7w0GDt@w7!)d#bjJcO=;A z?xZ0gg(7=}O1ZlU#w|`|#WLK+v{V-)-rCquLtc&%ToX&ij3TBJmOuvccA^wyY^K^y z{zX7%6D_pJWAY5o97l^*fVjCUsZJDQ9Ah)`#4&DD0A`dhOppd~oVQ2k_yp~4g!5y$Xm9flgyCfhQ6 z*;;Yx2$XPlhn|yN1Kg#My#cnsu+d@D8q4s$y=FKxH+#+6Nlt=|0?6lhI%0Zzq_q+! zIw4+hmQE?2F(b!tK`M=>b1N8vv#hoXaYSa3VvoxXH1ln^vvV&Z$~x5gIBZ_HrcKb=}x^XEN3phw-Wm zCL$_zMXxoZ$L6t|tL9QU*4372a}BR63B*yZ#x5vH zdkBL@TGdA5^BT2c8Saj@NI_+Uq`O#nIFVKptJKG1N&7rfdn&05f+UtMO=kz%w% z4h~UB&K*S-T@D<*LIDldBE~Oa~lRmJh`$N?-@t zV?{|*Ao)T^idx%Si@IW1b9;AWip#)Jxpm5fdW34BNKtnL3eaT^O{A^RI=Z%}jNcnY zw)KEvgZYa@)ZGEEbY+q7A&NSol*jyM693Q7f8>ANJJa)^J=gv-1B~ArWw0k16Rm|K zILM->?j8LLODXvu^~g|r=f_MIb@L;k14r~nQW9B7`$8YA(kH|;*s=cunqOdX#(&>^ z?_Ga(qxLppZ4W}W; z(xP|7Aj3#kYkRQES}iiitlHVl)$^-rE9U3St!-$STW!_~hJA`XBl|?}9X_Ub^-~E0 z4y?0lYmPWF*igs{l|p-APT{D+F@<9b_bn{4NMj}essW)f5v0+=lg4xu#>aG{yowj@z8~NDl_}J_DSa0FyXdH_PL2}aA4y5t1m~1RfHuelQdL5&tvFnkIzKM<9%EsPj zV0N*wKPkvRWO;0Y+Xc6?w9Gkm+98J?cKCFMn;nU2&WyvSGsSV#s4{kR{xQd*lJ6YN z3TGCSmsL=$z`hTgh02)9>5g%%tg4`VZ1v&O?X%e&Ad70J+cj1<;kdE`=T5gX$0U>{ z&YR90j`=K*e@xlr1;G_uS_)KFsIt+jbstq7r`pD=Y(LeuziOYL+7D3e2dWNDReY*#qUxHg z+741(#j53C)#X>MC8}$R>MB)TWvXkc>YApy4pCi)s;C zRM*j}>loE_tm>Mny2@2oh3cB6x++y(rMhcW_iWWNM|Ib#?mE?doa&ydy636x`Kmjh zx)-SK<5l-U)m^W;8&r3r>RzO}7pv|is`~`heWL3AmCDLg_G^_jsjOUOOI6mavKEyE zRd%e(!YXT3y$!0jQDwTy+EmuA=AW#N>Qq^m%3^B4Z`9EVb#zi4-J_0PrjA~&j$WbK zR;r^bNtJodq}>O^2)O z9AxJL&I6ne^q&BK23!DG%hd4~F?IhH>i(CYcqxjP0WJqz0rD#WR{^d@{Tjfvn537f zMH>K1)FRB!HUh2#To1Sba3fPEY+~vGn*mz@x1fG2vu|Qd)ow#O@CD0-gi> z4e&hR?|>8_4d?^(16}~^01N=Y%cPxv7XdE;UIx4Z_y^!sz-xfl0dD}_1ixz_olF(i;Fba@BSd@=bu7QQnMv3*Z*Ot$?k7+W@x%?f~2gxC?MM;2yxefcv=0 z|APE}zyp8>0S^Hl2L2J`j{+V8Yy>LwI#M!p%0--7%$z@1?1F68$BcQ5jX0guV5 z^>NTX0eBMdSHM$%?SNOgJy)^26_r0NkF(g{=N9`jvc-O~)eZ*iU_fQh%0MH34nzG- zw!_@0*5~DMs#^Yxtd^$$AT0-Jc^VXbsP_Y20PK+MFc5Ya2s;df9R>os3>s`>IgCsB z>7aR8w!b0+{|}T2|2z9{Y~$>h(QbcDw%h+`Q_J3z$2sf+xHHP$mhEp*{*G+l#U1wd zWQYBIz=wc00RIAf1o)U}K9%ijm`!CVMP+F~pQ6_E16}~^01N=P6YwJ7CBVyoR{;M2 zyb5?tQSGlIe?w7iZ&I7A*6c#Rx0G>C`@4!0960T7BY#tN+FwQa6O?;t#?O>-E|qU307KdquVW0HS{bepJTc zdK^S)mBqfAS;u+omoo1o^o34|F)oSkb}}YQHs*3=%19JSER z9^C9EN-hlMbjpnL9E|T8HW2}5ZWpC!6mw>NxB&)jE|s|_(}M zVRC63$$5s$AzG8^%t)fUOE6+`#JRzvEDim54X{ew<>FqiG;9H4y~AiNjOV$$5Qpq= zFo2j~*bkHPK`)Rt*(H7?S}7Z4CNj&-%_Fu8i0#~5qi9GxJBTaa97*)eDI7Mw%fu3J zm*|pjYzYC+@d7WqxU}1kOly;D+<~7FYcHU$4tu?>Ldn6MPA*&7=rQ~7v7oiM%pa^& zaJTzXM{p^*QE?l>__`Gxs=^aD{Y znz8XeGXi(J-5GuIju_C&3P4GFZ^?DLbBW9##*s9sMKYxF-eI-u{LElVfm9S$NS#Ci z?Shc8jhq)2?#6RIk&6wW-Qm{kn0o<(h0IUhzT@pUto!UIN&8Dhk~Bd&K#~rWG$=EZ zeUjvqCXy^C(cVlZ^*D%1#ggQa4o21C@H0s+VUjY1NtRN`u8c{ZsbF>*lkyJ1&K}C7 zQHL?9;BY1tPG{2SBbYSiNG9#$oMF$AiuON>Mmk!Oj**U~(Pz?R<&;!VGK-Q*N~-Aa zSJO&sh;BCF=1{4Yj$Iuk$5Aqu6loqM^C<~nh0+2_j_1<83%N9Yp)BoJ&!znvm^7i0 zNe3)q(t(SabkGteO*?@}N7!V0u5=VXktX=n1nFpp-R_YplwZ@}O_VI<(#&Qssmk^| zsfxGIG$5=F&ajV?>f{i~CpO z$ysazBepgoJqJ+%16$W4Jr9uqlg_8>&L>^K_>D{`?M+6u2}4c9P#3b2n{k-k(q@rv z5$P==y;Y=JMS7b^Zx`tuBE3^EaF?x#|v+YQ)U{52xl0Ad; zD)ubWtJ!l%uVH^fdM$e%X)pUb()BEbbOTEx-N^coUdQ^8UeA*G_Q_bV4JvaJdjY6T zYzNYt*#OebY$wt!>_w!vu$PeD%3emgm7N8N9t44SU!es_{}Ab`Vx_McOMG1@%^SwD z-xPYZOSHd*HQtG!hC!0=AiW2H4TB`#LwX;A8wN>!fb@R$A<_rfKaoO`>|e|)!*T?!n zv!%KGE8q$h`D>t%En(kaf)kcXCvh>sdEA)be9pQMD1p=>FB3G&S25`f#=j$~wVZuV zRO>kVGn3X1VSga(MI6B@R7lDj%l1{6bR=^s5<7<36vk&Uha$-}OjVe291ALvWig8= zlC_C-E0WsImMfC2lZ{fCy@#z~3UmCCt%V!oT*KHE$Xz&o*C5Zif$>eqbH^!?`*y~X zisX5SVSjK3Jj~d?$!R&*27QFDW0zB9FqTZ_HoH4j*776sU(VBkpBN_-Dl@xdQmQPq zNQxems+C#>SsuKjRKPEJa2+>=TV#C|PwDz%IfK8|JY|E*fr&9VL(^qr- zH103cPv^mjsip~a6Qp2KN-qN88W2vw5Jv3`-Lv|`=#{#^z*qU6$k!=2{RSnDjR+Sf948MniRZ%8~Iww(Gt8c zQ&?wq3S7h`lqLo*<|4a%}8Bq6IvK=N_ zIIW+UA#?4??|@16xBtLzjssnf8PRp;f9UGh)A~|>TUu{!RE$B~nBR3fTUR+&O`%vvmR_@5uZ2HHn+?lD__07E8 zm8m)O&slj6De)G8(2u7ycsg&n1xqk6{#T8rh5jay*F#q{35?%LR+w!?7~qt0Rg1&* zGE0?-6|kaJ?oLkGft_-MP42Wr7%hsGyI19PDiO9wG6+)o0YsA0C+EQ@i!e><>9ly@ zLE0m%LuqYt`rqKG;+?uy{AgI|4=F*-rr6|O*dF~hbnmdhK-D>U1v`i;YkMN>V4ADL zVo>O}^MX4E2R(<<*uOYlu`xO-1S|6FJ^)avc3+KJV+VAIe_i&k3LzqWNI5L$$ zLXx?1aF7H)NeG8zrAcnYeR^B@mA#QAue?AhNWVLwYUn_mVG;v@Dje?*in;E(dhxNPjeHn9Vcy6lzm z$i%6TdOCP8q@6EY?2ZG-RvwUs0K|DL4l8+xgHzaSUr6ce4>Zzw8^vH%^N7-yC%E_3 zoFL7agdn7Vh8&$8qbQ&5P?S$Pogajbh1AhwbhL_&fd&d-Mswhuz?+vKP-D1kpwhuf zslMQ3p!TuIVp=lw-(o8#ru%SvD`**ufZsMTg)`TZQ`R!0tmScD*75}4Nx*pgE|JEI zpXk1z9>s)NvK-zyNm6sKJ?UHm*+JD!G+A5i9%XX&yr&39iwuTitCaY!tyErBgOwF^L zT~h3oLEe8!aUSJ;%f#h+P)Gs7O5^Cy@oe#L{1V7ZlbO|8-LjSIM+wW^@;oPh$v}`< zZTb5!1X=5r)G!1Y?3T1ZU}-+pYPFu+)W_%cap|BYMT|IU5|LJkq)xG{QU;p(d0(KP zvnGcy)st{{w@`B}C3STU>ng`i6rtmK?W18!NC{bjwKj`QLC1d4u^;|nKN)IiBIj1C zH#_A}!=#^Um`n}!VTgkitJQXgOxA3tu<}kaC`GGY;AGT`R_)+qeT&v~TB(-TsT!Hh z$m~Yu5EL%c4EBj@z!<1pL$fmlv*HW}$WW1i@t;rI7@SLWID@q!XTiD%YudrmRX}H}%3tHb*_6M@ zgL5c> z_#w~Wa3uz-n*Pb>{u9Rs1C-DJx#j>{vxjF2q3y#ErMn}_EV63bWjcXHt0FiP2WlRY+?uYYSoqO&kb7@IY8lz?@J)G1OIb(!z5A7Sv~lHqmN5p0s<`vcWJVJu`scjn3y5bRd%N}R^=`A!-DZW|w&HHH+AP_- zEqiNz$@LHU(6t$+>o24bjhKjBkEXBq+^?WmEnoA%HzX_RFhk)?{4j+({O1~`bF4nc zSirX&A}8b#R;XvcO6s}8R8K}(z7YWBkGLV%i2D&+xaS4A#=IDvnd=d0jxmB;RB{as zr6}qUx-3Wq?ZE{py*8!S<&F`KnBJ0SHw&~%_*>PJ=0G9y>+&UHC8bvv<>%0ihZ3>q zaT*nLFgWhu#ziYM{X?kMalNM7zcp`EHUuzR*C##nB%vRd41CAwwq|hfC~G>V?ih)R z<%b%Jg?E2+Mw6|ECLdN_DfmRc`tLYnpF(2sJ-&*4ryaoRhatw!`fZQ*E#R4vGuwM7y~C zsSO?g+tUL`>GSf+;UG!_D6QVAf{eAn1J?&8RfAgjv#l4Mo%E&JK$T>x3(`4>V z!N-to7^WugLUZE5I`(#oI|6gR%ip++(hlcmxFZ&;$J#hAB z#!d;3D7##EG_+9Rvd{JFSfs$r^|xW2!dn9WbHRVj5dXPkc}(BPNt%$;>wi$DLT<1B zA=$u)BqcnjT+CzC1FK}QxI2x-?R}h-KD*cd2<4SS!}%X2M8&YNX)JR9Lp5dSVBl0) zHjz0ra&Km6*N9HERqkMm=K$jkU`SZo3i}A3=`-OoeI3PuS8=nST|Je#(}9#{8>!^fNL=M=6M_awx8fo|sBcnp6wNPdZvg4Clr~wwAlG z+b7o9ID(mDX!`t2xGCdz3CHX3O>0St$EM0OX$Od)Xo&$7J^SHMG@Xj+LTUXxSwCOS zl>Q{s1-Ff*`wIRsI7qMWA&gQ-p|jI?jSnHj2I{!Xmj8KZ%PrtAh_<;zP9pe<`37f3 zzhXQsx_W-8{E|y710Skn5I)g~oVBgxrTe;pg zr)4dO^_p)O%ku)$B&v058H;v$aA&r3XIklPqls#D-Dpecoq5xML0)r-EJfRB$O&Rd zs7=$QGBsQ(Gx4@7&tiT?@4CUuWSUcw7I1E}L>raX$`Ae!z8m2m(VEk))yE)IMv{-A8*#^ zxt4tHiGlMOOo4KxEU{eaDp}&W(&e%w=Sf${l7i9dRmEnTH+i6F)tH?Wa9t_4TrKMt z@{KK5iPAc5Y~VoCn7T0%i2D2b0x_OOTYphe(Zs-?m=)!~HL|qyYB?RenhZ~aqS)*c zgwvi~MANl$hN<%Ux!1}vq{4@@)d)_U@AFIuM32PCmYb0f1{d$sR})t)y>d}za?dzA zo$F1uH83u?Mq%!HnIANSj*cD}93;YMOS{q3W+>mN=MhbIHEm)oC)I6Y3_WT#KuNk< zIs+SIL@q6z{sFmWqs$DRgcp=|iHM<=*DaR}7CQ)VkLs7nHNRtd%SFf|`*&ixz#m1B z$ix z$(7z%^TcYdVRhFqDZ7?Ej~3g&Z{>IJ8{`{h`6g^bfwW1c*VUV$9m}Ofh)3<)hdt_# zHhkIw<56ERU-l=HgNNPO?R>&03Wtj68@Rq%ZW(>1(H|#->$k~$l;m?snlz{X zv7P;zH0GVbLAV^!iJXhOkX~h*l66Tbnn>x1bl`VnAbw?46icnJ`a3i!Igrw9HOm+( zY5jKD|EfF+o@ZLWLrxAL5=Xbbnim;EEKWsD=`G%w9O$>nglyz!oR<$8!YIYWV9i~!In_%xgxy5~F z-XRnSU<24r5AIZZe+#FUKJ>2ni_Ci0?Ce{c9OxsQe!pDs>fm6yKX{*<26I7Ldb`0J zP5JI_Oue@UQ}1S&dSHmD_eV1IpkOK&dO>CX2Xf6rG7CN^CJd3M<4cvLVWGBMQcNF& z9F&HI+L947Y)-nb=5!{5I7}ZNkQ1V>sM*2j>sqbkv*Zelxee-Opd(hu_z{*}hyJik zTC@VceMIGZ`a-rj@B*Xl>(h8vE77DC?_=)oO8-A)qwj81(68Pg7HyE2%YP)Zd}F8l zAIa&v@;r1~(+FuD0mW($iETA?6@v4Byc^A9!)fRw>T0gV`lc!lhj}WB)`YE8P${ud zVyDD0VRhI^I!S9t?xaul!mdX6W8oap*K>i4W3RbF%7$KAO4yB#A-4^gqYwQ;4(f=t ztigdIN6K@8ED3yu+CkJ}^su^@265(S`rw?Bhqy zuJH}Mw8)VRyaEP3V`4P+UyTN76WN}lZNz9lJ4)H!M;TUylnJwOzMh|;UK?=s)v#M*A@^7-*(*;MQq`<6PYY6R*0^UOefDM6 zWKR`R#jGjxF`#BKYZlLBq;|7rCEd~-W=*9B8TxQfv(X{bY&Q3}p20y|_{Tx~-umO< zn?DYg{xtaep9Tkh8r*kq5N)*Io9Uz5kP9Bw-STRWOy$+$to=4*HO(A->KAfe?EggG zd`TWWdP5n}jxHf564FMyfe$%JC<=t4gp~e*_J0qCa&XeyG0UGdEjEF%G(5!tN=hVHFq;yD%Q$i)gGw(>IEwW7TZH zs^kQQ>}$!g*h7|rry)Sqn;lc_54_0eO+$(v3akBsg+8ek?!}6sn>OYDm+ZTc$Nitn zCAK)MXo)=zJJ~4X9w>3dao?3VKc zv2p(@rDR;(f2vZlZ`{9HDH$L4pQbd9!o8TtiUuj(qG*uWt%|mP+`m=PisJs;6s;oezg^L)Or)bS_|6i2GLTnE)a=&2Y0U?YB6==dw0{xIc zKTJX%6o^Lz;!#2Om=M}FrBT6NQsd*I@d?rRBn`5982YaQ{S={3+dK8?ihsM}e_HWB zqxhetDbG;+&nf=DDgNgb|KEXVbVYw_yo(3qdSbD`SznH}lQOSNA2I)V+|?-Mr-qx#dZ@ZWQ@JoqIkr*)hW?^y#7*=;iEN z=Ih-*`YjC{Be#jZf}x+w&^vBbtI#(T zxhxg9fJvV7>Dx0Q3x#`OtBCiAT9a-q_L9d(-B2O3NZ+ZEJtxAwK1X~3D0&WCdbW7% zjGoPwp2?cdVtY(<7E_{UvZZG*=Mb5rIi%(dFezlA zZv6OOofyjOra36T@bQg5J<~Bd*K}ft+k9gk zV*6+TXES2hGjX>ss?lf1;#p>tctookC0%*q;~TsHK~ zup9;Duv8f?4Bv}v5#RG|;U#)ocxkV13oBe)u|zRr39h`i6@0Zd_d3zljdaS_S=oc~bxniZ&qF63r#`6Mz z-WPUwmPzE^f=I+LN^(a?u^BGUKwnAGZN((ggZfG)+?rQ{6Ruf$lRLx{26_;cc-h!X z??ygn@1yQa_iKDTMoCjUgjM*5!9jZbI3*WG{|AG;9a$DRSbQPFVuq~)vTPlAD_I4a z1$0{^sjo!aQtUO_d|T+%nY`-^CnBf?>CTjXA?w4oz+s&v!g*>}dNXMKWm$hkrr2p1 zW=q~|8fhK#f2{Oj2eM87kZWFr^Z4oz@oNU=H976y#ryrAC}M(s1nRueN}q0|`-cml zh`#x`j_#x1%81sx$uPSIC~n+IczW7&7*nrui!XQ9T+Gl2nl!nTeRD)uONvJ!2^M7U z3n>O?X?l1W3tzO~M7=J)fSPf-;hClf2m3Me?_^c6Tny=pY5Q98@1!~V`-qx8Rqg|J z_|nOjy$mvj0=1?gp93M4lI- z`7|yFCT^xT2n1AcF$vLY7*(D$XYDf=JyApfILm#;N+8u8Oz!W?tP3iZ4fd=BeQ^F2 z^Ofcg^tMJHL}BmEZ$A8yp5e&1dBc2$bB>R$r31T)!E}jFQ`RuhaQHG!*RrA|uILqn zJOfBsAs6a9=3mRB-?63NGyggs{hnISWSN;@4FcCOn&~WogOO|bp0w?3W-(tk(`nqY zXgtJIlWAnk_Iw)2A00#ZST|AO?mr5 z;)P9xrE*OnYbpflMig!aBnRl*4p~%kpnq)==FwL0BprudmhKDglGAH(PJF9)!F56p z&SRDw#qu$y>B&<`hF#>3;5xFTTk_9bl@BM3wjWU#eI?BNT)sH0mMVd_WEN6OCQ+Wn z+xh};18wU!GR+ovN90yBm-d#YFwEqTEpP*q&4CQ($+L;H!fp~P-g$H#hn=1ogtpM< zUC;(Zr#0`&P$HLzf~__0$+U`)y{RzdD&aS2w(D`3Y=S_D(QVF+so3@NnZ>SH zZe-@`TR+LTUz`Oc9TK8V>mQQ!N%v8upM08hf8f*%-kJ_sFjgswYRHld+dR|A(<-EW z4yoyy4`u1*ra~+njNYX0lEJ^K*|M5~PPVo5q-Miu`s?5zHAAKNPYwJJ${8QMhFbp2hOX}mGUvg#^w;irpnhQfi+J=0>UbgBh*rxsdUVyKVvT7Q zjTILQkTS5y8@-vK8LeECHAIY>Rl`y=yXMfGi(JvoOmvpBU5C1(@0MTedyCPRgFvPX zft_Y4)|6s{o!?`CTR~!UhZWPj7$Q%bpiR{(FjT&FycWcO2WY?1MrqT0r!wDK=3CD& z!-3i?-|fuz7}E;0g}yZNeabXVJ46d<-M-aKFi@zC*2ZZ2Xk#^>Hc^|TP1X+5inT+v z!?eS->Dm$6k=hKcQmfLcwHj@a=>TL2J|&X^XWb+6mf;T3BnCCr=`OaXzGnwx!<~y7D&SAa_nQtBQUBrABGv6i5 zcPaB-#(bAE-xbWaf%!Hv-*wD)J@ehbd^a-RP0Y86`EF*uJDBfI=DUme?q z^S#V`Z!+I5=6j3z-e$gcnD1TYdyo0vXTA@Z??dMMjQKuizAu>XOXmBE`MzepZpwx~bUO z10Q`Ltxa>mVQTXF&YG0oSmR}h0Z*=|ZzqR)!+L>A1)gB=LH>%QFYpv2W4bQuiTpsG z$VETniEI}>$HlvOA_n#nreKKK^ye@s9Y$B*%xa!wJbEW11T3k3i-EXHAYd8wtp?(5 zfxt=AZ#NM45KEUb*``=l3fBTx-%k2#1@YMp%sgDadR$m2sPx8;8<^bbf5}bb>c&aI zf619Te*1$T4X@%}`dHqkY?HUCA-bi2Dts6&0dxtA_BVu+*tyLLN5xZkJ?>!(R&*JY zvCf_1mffMT0gdm(jEd(0@}&|xJhO$XjRP<^$kM$b1rw+A`^;*Fl_3nxu3+{Nm^9ei zhWLa25U+pT1sJvNe__=Ab?IJX;JynAw+;@%r@MZjAIZ*bXgMqw#`jgwQZ%?E88jMEAjt~tOp!!pKU#@e*-qH=67!h-?v zElYYgLL3DtZP2FmYONb6%lZ93!#OLpma3&T zcK2d76dZJixHm!-XJpKBOYsfZRs8X4|k)=+J`(@%{e; z;%$7JjU4iV%i*o6_A#~^prXmD*zzhM3R*l;|1PEJG!Yz+JMCLmBFj6)82uqcy zf#(@Z1^!O9C`GoYKafU*ALt`QKZAeWLkGWy^s*;xAKqEG_kS=}?)2!ia*FK80mmp$ zGb`)~>?foVQd2rCkbXC-d4^dqAX;EfvGkBFrNb2I_n0j4$>)^bVMA+^*M%Gpqw6LN3pEp>--H}v{evGqdFwoz*?wR+IHzSK*tqUCXF z@ls2kXvs$l_1UIUNCYLD3UxCS&o0#MDyHTtmV0F(DO=`k9N-S&@IhgrfYy)&4wq3@ zaYxlW%Q%jVaZJXFWAdm_d7S`R&d#m+4zs}pv69OA5~ zG~hOO$Q?r4#=?Ihgu^Cixi^u25YC~)goX{7C1vO6HDSckMzo57DKK;vE)q+anXe98 zf+StdtYZ|*&EktA;=8$%!`8`Rb#mA?Ic%RCc1#XCClAy5$zjjruy=AeZ*n+)a(L9_ zaKYqo;pFgW(;@Jj&*)iKlf+%xuc?B=9@w7UaO-;z^uqj_IIBsg?v4YUjb21eoW-QG z?~VhV17+F7DJGqBcO2+k^fG|99LiC5ht!ZA^<2tP_Xu7?IiXxS6QUzk=oo}>UV2MM zZRiPm1q0YHuSsMT6+z^Ja?$V(*aR9DQ8{w@ti!Xuv;dv+N*y?2p*&#oOVyCaD2@u{ zilGZ&I15lOq#XQ=7HbTR4&|Fu$)d8}sIcBpVQ7@uqKXQ&^pi<6ybD{w$v+Kd_UG)8 z`*Xxz_UDLU`(rb4WyAJo1kT(akBOT+Y=1`J%>5Z-;);gt&j{TA&Hfbq%>H7y&FMOX-iIHCEn%bR($`!MoWK3;UW7>{#%-iDUk5tu@N8OPBJDN zMs)w4M3`qI%JpDeyqA=~6}TLuT^(!s&H!NHRU2T|#Rh21Qq?oE{uTQuK?GCjhh zWy|g@-^exJh?ZLz{X-#>vMuys7=6j5={=eJ_&H5)$$esl<{SL2yN~p(T=T6MX)B|@ zBFh_U`2wN97n~xK+t`TD;csV|uMmAFR45<6OFZMpN0Vs0W7t#vokFF=H+y!`ICn9Q z-7U)edn&KM5JmsNQvK1_5fLfTHxUTFEj|;wTO5gE`U0Ma8h4@P9f}CwrQ|(I-lyaP zN1N1szAL2s%`P@gsWc&rYu2>Srn-u*?DrhETc=mnAvg|8H>2>kX$7pPa z#s`EVif(-xzuxF8^^pwHh5#^|DV>!52HQgt_X|N!Hw3Nuhj%fvy-GUU{{hiI$LxQU ziG5I9j70|4xS!35vp2Uv_)zvkq#sQC M+N$(_02cX}Gs;*UVE_OC literal 18823 zcmV)IK)k<0S5pcOg#Z9}+Rc3ld{b5S|GW3Shl& zR(5rEC#Iuz^rUDq8J}KWzGB6SDJu?|660OFRo%(p%Chdn z{*z`12Gx;7xThnY?1*)jP(2um^(K#=G|A-J7S1w__x5xOmTlqkNN1!g(w$6{Pn|Lq zjM~D}^;l0=FgYU_k9T&2gT$_UWmzH`3!k_mxI9v(cLo#DqsoT~sZX*a*%_Hp*%k{$ zN@_bJD@zV8sT}Svs0|V#ZW|VKM$R;Y)O$)e)>R(wiM92HA(IYPqH}H+ViE5Rb#^48 zk)9d7-6wX(Rv1GJV~Hl*6A30`BPlXCYVQnoxAz9yBQt6ih_-B9$QVpUX4D6}OAhsy zOskkW&5(kSN0slQY!id^n;}(uK9G-+s`${*(D4o#3v2}_?710|_?htJA$J~(1s`-^ znl16p-gsv$*w(VpEJ%-xdU%Z_fk4uGf?biRl1G|?|G-UEhi3Ne`{t1R(vbY&dHlKy z`074>%A|TIr-Q(XEtx?d9CTj^vp9WTi;FXH!w5g zS$f2sPro(undJ{(Gq(JpnXcuJ-(7S0laKtf`f9EDpdB*}?r+T0LiJkuFR#puuNdrp zAa&==8J9)$tNY%Yc|>{h4R8JKrI~9jlCnJ3(PnK(_H=Z&yTqoQ5?M|=-BLqY-ol<( zdru^h5H(j_pr)rM)*~tf4UuqfPe*dqFlrRmYf9J3jwu~o*dZpP{F;>=`odsOB4Q9Z z>Znl^?bX3#(BMoxGb`qDOin-QkGb(Veu__I8J92RaR+-egB-!ajRdG9ow#nT<2r8B3Tl zkD1+(>m6C9|{h#ftRRj_6DxwRn<^+t+vRWm))Xb;0|oLGs2 zYM&ol-Vv$l?1(#cWA5`h5=rj}JrKr1tqDhUhfqeaXO+F9tt!^ros9H2v5=rkQXk&Y zCitL?mPB4xZ)dV2F6xnl%N#*yPBkm`7N~=!+op7McO*ws($GPZ8X!1hG7-GBlJyOY%S(Y9WA&Luu73&m%VAxJfq}j zF-FAv(Jp#5^>jMT;=*7uYH#W4=!!J1ibv#@jyAjCwg869(vs*nIpSy$r-e3=qs7p6 zuqT-(s0c}v_LeYB6H2ujCDq6h4kK>>AA3tYmPjtgL9?|)Bf&PBWD6#pM6ZM`Gp0gA zS`FC>Ab3+E($LX`^)(dcO5{}B!M5czwKk)=@19Qg^x@O2gkxoIG~ijKBqRE73C+M`KZ%SpY#PS{7ag{BWF z<{6o>-uCROTN2@5XC$wsJ(3h$>%hw!>mIf(i?EujoKWzsRM$}uCm4>zbWUB^yIC^&uz8xp#=6H3j}x>|Y8!Uh#>L~I9FV=QY& zqJCk`oIDb_wmM++cH%Vl1jETjFtGxGylhX#b^6a5*Adi(dmx)If?`jMl$Q1mU7pi{ zvx+U>Da@^_B}oPs$BIl(ODNmRFry-ksZUqb=MMZY1+tKo-3N zd->!@)uJkaa(B?Z(H-nGXdNr)rV=}DZ_DjwY?u>NH%Y&WH9HQ~N z%aGGLCXsAwX$!Y>_I6?C!5Fo4_fSJ(^llB{+Z#!YHSytSPi&Vid+njg=p;r7{@f_R zpBW|i^P>d!G>Y~3j`rh&?bhR}t6JtZs!fYUZauEjtcu)*U?9>S>sh5@a}q=AaYEy0 zH*&o#8R~2~&SvCIi`5Vo7BP&-yCW+^j;nxIH_68VngENdo7}XBb9;5YE7;u_>LgPV z?@dOAF=Cag%)t$}DxXlt_6D(?Xy}BxXwK|u$2BdsBlHNvDXea?>(y0_g2FDg09HC- zmLP>uS`zDNGfI^U7gpFrsruMP1Jw|y&7d%M6V;G$B&X+^HeOe!Hq^|SU$dZ5nSESi zjiq63U{RwoFR);arGZjwL*t@4(@G8-3D^Q>OIWyFG>QD2GF_YAT;ovJ-4OgM)3zf(wPoY=iZd0wm?@mpsD>_?P3}HTISWwuWKybVTrf}lO zft_G#Vpt264F?&T2=&6p?dTpgB37AhL=)ObWVMkSAr);)jE75RB$1dWF0+p15rc5t zFEH6VH;A0Rt0PubxuB|Mp0%N7UQJb_qk*(k+1b(FZEFlHY?)V6+h_?=)h${Y$S;}? z6KGoi6;@TwtFb4tsLYjN4@KHLy5XjG+UV}4fQqeTt1QA7vl_0L8tJC6q0V>9i45C`7tyY!ReyFym>7F>>`^{YHGAp&8w?A#xXz8 z)PQ3UShB!o6q^=0YGdJEBS^N@2CAAGTIv?qjRN{Pi9J>{6bzqege1rIMtUPk9qfv$ zN<D+>FW9E|5ZLI8-Z>)>tC~WwI_nr2}klq#OpS4=;(y0bK(i%3mIMnwYg1)-8_zkIsSVFXIr=^FlSLs zLxZg@&?0P(yP>A4X;EF{aYl7i#&+adjXWdli-;I5p>$I`67Nk!6^c$oeA*%c6*?VO zxC-sbsMAo4=)fXQ^Wvc@>u@$?Bgg4V5)O}JIKZ=rhcsR~#SzI^*#z^;N0v^pcj0m- z>V!2U;!1M}G4;$72$d5>bqMO(gPnmmwm${Uf<%t2oSIkJ)80!Df*H&-3Wn)e7H6WK zDF!FFJ?-t0p1cuf#Jk&xD&F%!v>KtM9rmSLD2~FbM8uvA6IC-ZyK-Y^`NYU7OfPts6O;chd>R;B=75sx-x{v#2$IG~lwae33MT~K~oQ)4YTMMf-6(iww` z5KtHeJ5dP|HdE~&S0tdbi58mc(FKMRj}t}{L5SU*R40o5N85}%akSgigBeid=+nTA zD#K4^e}-bc-EHu46pSBHVRRZX1zuLh^Bk@!BZerWAYz~FdXL|KX>kc(@Pv#2Qo1x_kBHv6Ob%3cCw7Q zI*e^hi)_mXWNX8zBT&LUoqAqYc(_y{dn0UtVWY#QHJ0I_d(Dt(UiO-`lY+$fMNrJK zbj0+INLv+7bV5AbESpj~eR`hZrc@b^7iLGb#tp1S;P*N5uZ7d9lCBT zxHB1Rio-)ohA#Lad`(L0g4FL%C}V#tUP@U-E*ObU2K$#)MIWF!N$73}IvvB+%1=If$io z2uHagj%&(8`;qn{nsKoQJ6*WQVu{`!fmCbF$fOQYLOc>_TND%~z}pbT)gI{)xWyE0 z;Y) zl>}lfS5r4ONk<4wBW-Gv@d=Guxg2*#d!(o;LfTy-Je)|IiB%fnv7~)IZF?%I3xlMV zZsa`_!dL=HxM8;H;HpmQ=B(}PfU}zj)0t@Og(9)7T(!7*N>*T3gVbHs8S8CZm8n`V zv9^dW)4xRT?9KEqnOt3R2;z&9vXaB5R#Y5w08y2!AYG0mTTpWFp+t7b!9+EwDi-V9 z6WNlIgN_i~4nBnF_Fu9G63|Q&GzT3WiHOWQ;gzl`5k5po7dGY5|Cz-9^Wz`!U-!=RJYe^^{|tli zd!h{XCS#(tc!UI5^wd40e_<+R|DzrmYVU%WDWYzE3bg--{z%Fqt7u*5qg47#n3&D@ zAJF`Qh|~Z3?tAX~vkSE+j!pmfU4LON$NsNz&F=P}U%)+asr#>Y$j@=A`LA})&vD7C zq>d5uzQ~^+?1p=gt-C}k40ia$NU}gw4AT}eu9HzF{RpHjW0dUkkR!y6Bfg6D;8N*G zIu{73$lyh+3+Pd+Q)!6lNo6kR-MCOo64_fPe=cZq>TH1fL4Q||exriEf z4Q{TI&djyLmbjNhauI5%H$-l`!-z!4nYD=M$SMNt7S)KbTUXf2NH(|e2318s^A z4#-tWSbB)s8j2wf?_xpLW*7Y+PlVj!P72>G!f$YdWARnO5lUDMC(0t;6nN}J8BU>6 zxp3iBd!nPgo2DC4$O)0_s;US-&51$_BGlTtc{NJi!p15KQ6H4IFd9q7646+^UR`73yc)Asl=H#$^z1Xf zHR6v77nWYx&sg_}J_D*cR2((bVsZY+iyyOxb!&!}bW zHONL^&&J-u#@=mU-e6-_TabUi3fKgYA>)j#OPosjj0{*9_G)Q+3T!U6rb9w(6=TXosO{#mb>RzI{m#XgLR92y~<5l)6mCaJw zuT|EpvSli3QP~WY1yvSOy^X53No8#+i>Rz!E$mQ7ov5--m365_F?IAw>gXPIbV41S zR7dx!qnE3;73%1fDqE$plhxwisKviki+-n$`GZ=xnyKs*rtYqrP?ep5>`cH}fU|)<2XHRnJiz%(9e*KH_g${;dl8Bkqj(A6Qov;(zZ`G{;E$+Z z3AhS_T+P&yKEP77rEvRp0_8S;ewOi2+JOiEq zuWbX|2DlydI{J{0;DTz-xfl zA@7@jw*YSg-T}M|cn|PCQ%e(SX;Lly5T%a*&}Zq#0O+>#6Ht7L{4>DkfG+@F0=@!# z4fqD|EolA$_zv&`;9r0r0YkLdI7Fuc)&WijoB=qKtNWhA)dSDts&)ZaCjtByakcCc zv|R?c9B>8Tk6fK{74mBUeSnR89MT&BH*wW=Gx9Bfttj7u{8qp=z-@rr0e=GA0k{)z z7vOHdJ%D=w_W|zbDt`d^gMfzs4+9iBg zRlwf>f9Gn2U#)lzO>dz1CQxq!-a+|2!25s?Q2&UlmXEpp6VC0Q0R{kHa^SxLJkRY_ zTs`7j6#oJE4)8s?{eT(%3-E8ikHEbS_z5rsSS^o})v0H4`#M>+pC-#{#p!@E0A~Wu z0-Oy?c8;uC&IOzYSdaRJfDM3)&`xj(;8MV4fXe|_0R9NL5`Ytb6|$>AehuWQTbowaTfbW++u%Dw%9wYc8qMt z$SV7*3^elR!RiIs4zr_LQ}Q@ft$a>aEBgT;tpsW104QEWeFtC=uv50fQrKZB?64Ge zSPCpNXt0izFfx^=f#z?r{qHjHuc1u%lkG9vI6FqP+uxAw_TSmmsc*~U9QK!RX-s`j zw!cgH`?CEV?y!F-JM13;J^{Q1_zdtl;0vPpO17WMY%1$lR5k#3QBmjY01N_l0$u{{ zWxy+dR{?(m{2lNb;B~+oifVro`CE!=dz;#1b+l8PW$U9 ze~I$dG~(CFIG4)4L7#7F3_8`wzXN;^_yO=w#lDrXae4MTS)Tn4mWQ*h*zaP@uDMnA zZ$-8K2%?_=L&`YZkEd8vw#H&#&8*`*_KTVKA^H}l#2A;v7djb}B^z_OGG!zRB^FAo zl&IOnMv0vg2PIC4Qx9%-6D1dzIh``&JP-U`IRg=J=5|qvMlojQhZ|tf=2Mw_GChb9 zbLC~EwT~1|F-dr42vbViNXau&8njeo#Dx(T1~K`tB%B+v$igWn8Oe_I+i7ti4QV{SwFYvO9OS}BYG&jk{9rzhB_age9u-EGWE*6>>7P_;0FLy7nLK?KN(Cam})2_1ak%mz< zFH@CSVR7MZ{XmqDW-R*8aNusYJF}0xBN$p)5h!WxE%|PDK9L#3IEp5Z{z zpBX|a(2Bx}sgp>syP#w&Bj?4%yU1KfZo{Ni`k%8k%V>(aj;;Tq@Pkv8$)#7)s{RMw(B_0!jj0+Iu0F#xInmeU9bQ zzKfVNp@B*JH8N@cCMF%Qm`T%?FzHa6Y|odD;7f_^aTBEJ4!hkW%~XyjmcOFp*IYWf znM*TN*$-!9Or5w3;y~d8Mk=`rP`$T%bNFQLd zln)w`&;{z1<%dPfBO-lNq>p8%xL!>0LNUb+Y&+76*yBhqW=|l!gguG$Qub%0m$9di zUe2CIdIft1=^xp%NUvmnL3$N?4(ZkGuSl<9&m-+)FCg8>Qb;$kG}6tir_eqb6SiT$ zT+jM}x`7QKy^+0$^d`0g>CJ2q=@zyV=~ng<(p%VR(C7hBi1%fhko1a3UllX`n=!?| zi#_w2G40pIHhM#}zlk~CjzES%lW!xv6Tu9FCf`MRHv$?4O}>xxUiJaf``Cv_p-J`; z^U5%nhg&{oR>r?)>=S0?{GSZbjaBCVX6!R&RrpVgea@^FzM8Y6*cU{(hO*DKQ#ebd^dFhNhU=$te}%r52PdYQC)7`nf+Z=v1YOqgls*N_jM{0)%c&M9lTyw5 z*Y7U{_ag?ar*r)b9z2ta%2`}Ln+MO~spfs__mzVCr1X9CbGas!2F~L=Tk);7;WuzT zSAf!_;04^s*Hey`;DwpO2D4M(A}*mcF?cZ-*(JRBQYr;5#XR(VS})`J<)~K(aYglt zk<~w0KC?>eaa2m57TCx|`RJ5>P^LUHr5}u{i_|0$D~)h0WglhXPo-s(JkwR5of2>&x!<$gWjf0n29&D{U1w0$yM8{r!A4<+V3(-o%Zrw%xnF_&@Awx1#I5Bf9P|ySAtG zWf?NZ?qq{|Aam|cw$mgFruC&6GS}|%zGRZU@E_#ObD-)x7~gd}TT(h$5s}heEFyKXRz<&&&$41MMa`n$#Am6QnpMA<&$4A|s{SRLWgo76 z#b!A&HJknko8`>Z?D`fy%ay4)^e@<~Jle!t1ws!{8eGd;Z^0A{jQ@3`X`%mDB0m;; zMUx=-tsHxbZ9@p)l=4-J!}SVFRfrj|lGW}mPTBrla)eFpvP2k7ip_GbF6dGsY_Vhz zr1brWB&AO-__ZWOm?rghSv>F_?Ge_gv^6{ZZ}C*=PF*W~G^`ASl%Qr)Y;qrLkA54v zcUoYe>Ycoj9YB@!y%BaGjn!!}DD>NT(H%oWo`Z?^FY+rjxTJLameS0GLG!;$gBa^< z`4c88OSd5UgV(_&d4K5+E-3}logC4DnG{!er3_lm9cxw*Bz;I;R0 z-j~yUKd--=%QPFpJW9%usRR*OQkzYD-P^pDgW0z!m({0g{3uTMlu^-vW{nAi?IFF@ar2sK-3XAOv zDg6V120Cw}7_4dmQThsm^uF39(%eZ1K#GXv=q!(tLb^>+K4C3C03C~|qsQoI6&(YM zD0msofp-FLUV=c4;j)2B2PdWagOh>U%OZAu;{)^)HK&91cn z6j^_k*SpyA!L0ag(fqrwWf6&*N+rNxAl20oFaiB zi`n`@4uTAEYbpmpwzxGd5SW@zwOXwwHuv*+{aiYrSrHs3O(N22k<=@e)yiP=0PhbB zaMtV)R(KMw`dM@fCX!@AnB6Gd!az3$PlC8UHb!8)78rl8}1=r{l;aDZ&EG?8O^x z8JXS49D>4STDX2;;SEN!G&DQO_>j@?pHJ%-oJVyycy%IY!TJbm-ofj4aLF7FW^5i^ zKh))Q+6qBh^{`^JtO;8@Q-q-mK|TA3fjeFP3*^Ev!d4LjmqAJ;qx&?A;{D6e5GfL) zy~yid#AwDOJC)W!uJ7c*muNν9y?q9wQt^oA%Gi~Y)(P{u5up#}_N>=hKnz077! zG&CbxXw#r*H(Dkc$`UQKdr)*3Et3u1iWb^9D2h8@U`$!8lL8I$9Le>-z474MO_ zhGnPpH{3{=(BE+-L5r_($;zeYxuh0IFL23LAf>ouFObq)aui6|5zYeXbuPKMR7wY6 ze`7bx`p2yGjXm#oY?K2Prm9<6>zllwL6Vle#arLz#@>F1Z?1ipvmj7!aZS0Uv;YCf z0iq2~yH>JkTfunrcqiLKQ;ZJp@MY8i9X*8x0kxWF!EYOHeUArgDSwRz=TQD856-3h zeIBGEgCT?Ul)uA+$58$O_80QN5;9AE&QzR6%)_S8%vv^@t=zAK`_BCEEyOvkQdbr^?%{JZ8)_`FZR zIwH+F5G&4e%oqtH3>gg9fuz7!dDbdA&HCND)D6p65XZikn!{q*^kwy7W{lS2~-$43#VMWi@dljtN&5;kTX9VB2KB6W(?MP2i{@(kPK zHnRLZ8J|)#cv9j(&rD4U&PWMQ=C3?B-za^?gOxblE^)fEw-JrL+lhx50wZpq1j#_Q z1y>P?Ic(buxeS44Rgico^Jsy_Z5;KfByMWhHsp&S?#RIBbd!2^Kips7aC@aMakjnE zS2)^U={+26m-Hr%wu=tColEcIXnUo%aJ0SBJ2={2=>sn1Y4w6=kI>N)1^FP5 zp;m0Ob5+`AJ1We(j8R@_#3qH}hFfRcZ_b?SZJoH?)(vkwqBZU|r?IIJU(}`a`us7% zA<~x>*v$e>03mwKq`BBTh4qCJjgr!9N(%GnPC|)B_c)CTIvB!qa^or#yYVCJf@Atj zXM0=0sI22{wr)&%=pjHqCK>pF(|u}bKDz#BDR`6!h>XRYb&zpsSWFGhI(WD)LdQcy zJ*CgY{8M_Z_e3K^^4}`g{*yCpXq1N#CaSMX@wl?}+o*1qZZ z9OoA7mF;i`G*H*)zmo#3deJVfUTVYj%gl8_IGVYBQ~LaZS#ZmwL6p|)^c)~=`GNj@ z#QGpo_&0C>J#hh zzh9;W_CFxg3TM{JG0fiopzME$)T{Poc&CIrlASKx37TjzEyg^58zw0*^ZXIaQ@ARS ze;(wo9hRSbAR5Fb7?VfP=YLqHg0s*6h-_d)k`iu<6XO{5z-n1c?ha#ed*+kU=k)m> zqr7UEoqszaDsy-fFOz|>>tt-Nz$vn9BFSs9^<`MwMsyM#gUdYoi5-)ptS97*o=hs4 zd?wm*REJq(6X#0KHL}FuqWlAftx)<7hOJP7sZ%%^Ig3*|RVJThtt_crS|>|3E}bTm zVLM%x9EH*uvgG8_VThHKQHUMRl+9pi`cj6-$caOLI7ehuk*ZksG4p@Vq93zmpCHs? z(NEa2PnrMUEcz*1_8Ig4#G;?EWuG(uY99TZjKvWO0+&1rT%t=;=}D97;9yD9WyC*j z3}kD)3k$on-o_Cv97)3$WIVzpSulI*Sik9gYuoZR1JoQrh-0`cTHhqO2&RiQ~cK!iP&7(~&t5B7ia5ROl4 zT0ckD&y_Q!^JKEw+gZB5=x;+q^oHFEE^{gDbQ*8ktq4zns>>|-`NKc!ph{ZB~{xktUD{5QeRJqZ`ihiUAujr?UqXSmU>l#`~tZ* zs;Byg5$l0yPYnP;@u_xvZ!`+eIHl`?cymf`7et$DFO+$2Y1pFC*u~Tr#Vw^2jT4&< zvj1wf^^$^uVJSX_0L&1e`Gootq-aM<@6a!j#nq6~W5Uq@t}Sq}OiG$>fs)oD8ZTLg zb&H61W<4^u^?VSw)qcxZ0fqa`qFR4GW6={mxcOS+nO1riXr@|y9BnE6#DZzSAg{ed zmZA}2IYF?*wrRdpriM#pCf-Hm+04)AO*D9!Ok+yY0?uu={N~H$)+=QFEH>|QnUMz` zP=FpiLeHON^(;vX6^qTjbO}~b_}Qm2Tr$Q(DtUs^0Qteqr?UD}nPfI1+#5wV*6;WGf^9`&uT7Ls$ z=uz8;P14zVVqlYu2%+^v|4VZ1W|316n*ViBwK*7r(=h@AwuGWE;k+LKwqauHg{ z{+BUa;CCVz@xLOswxdjYKowC7VQYUQ!G@U+A_D)Ff&Xm=FNPPW-%EjOWxfo8wRYBC zCqqP!Tat2KE9rT%KuqRJR(~avvQydpWU-C>7JfUwUcNz=Z^SATNjJ&#FnKdJN3Ya~ zu+RQ<&U^T1!{;nA-oq91QG7D_GgzEmjwfuQaGjXGiR)YB*3qXM{c%9Zj8Jzf!hjGH z!)TBsj)pTXAdWOV`Ns(y&pcmxd-7Y|9uJ>}?r?-GbkxR=T&s z*x`#AlNIAySz=RUWmc-fcP7&oY74YETAt?6#%hkmw$<*zer%QviJcy}!S?ikew*A+ zNg5a^q|??Q{N*+PfF=0r2{9EeK^jlD3&^5^mk}d zaxkUYYLg6=w0^tne_b90A2Y50Nlp&>>0Ugkzjlx@|J|afDSf3olY;{`nUGC@~gBV@H%HKq0?#@Fo}fkZc=>+chN!WREK zydP$A!2gCEQv7eqAxo2j;eJJ52J=9lcL;svEmg-ymnOm%j=_81@WX;jU zqASvulzNSK&fEDV1wv&heK~0anI_flV64o#wX~oRG=xz~Nx<4WWyyaA+bZ6-YgaSl zU3?kzXT69GYY>x8=_~y2$ogIKCB~(gt(R=2(Msl~vY3>A>4D(A zavH+5(A0lr$VNkcu!~S1?k3a+8KE8+7V0A*R6#y=LRyDI`>|a6kj#P)iXmFbweh7Y z(lAL|FDa#G?*q~>Nn10Dg^@}3*REkQh=cUfPF{z;ymo-m_nJcFq~r^Xsd#k@&|xdI z`UuNPu0Jf(zFCgnexmX{b0OOj=x4NG{Tk2iLo{indzmY`!vCpk^xcIDJE|{;X&NNv zgdfRF*jO9?=W_ba0uNo!#38LeD)+7NkfPR5SD`BZ7rW3rmPjv==V znWG>5LJsPPxvawxBG1WloGb}^hT1{Yf_qrqLxVVGHei)Lpp5Z7hL% z%$O}vi3xeeVpE1(A&VdgS^8>UWDN5US=OU9WC_`dUK<+n^!zfbP+rJtFtBZ)(*_2f zON}o47e^mIa&(Pv>Z3`H6yQ||@Ff%6*nh2jI zjO%}i@t(xnxhL_I|5m)6yNS1RkK%1XU(Zk2UYl@u)v#M*A@^7-Stw68Qq`<6Pb*Sx z*0^U8eVSy}WKT6x#jGiwLy=m{n#D62soktuX>Vx`v!>Ex3w>Os+31jIHk*4~FQWeN zk3;yq^~a$%e;g|RY3O%94GsP@wD-^u+GxGE(C3^X7hI^j3XF$c7!SxrG*+VN zA4S@+YBpe1a{EH|^<-J>AxqISP@w9~@>B-`gN&0|(+`H#e$hf7>k5Zr`S9JE@_#1# zF643lH*%RR4l7z_kHbzj$+!o~9C6%mWzM+&Te-{?$Bj{z7sp*u=8pUSA(!RH{ol!D zp1A*exy&2){~(tY#Qp!2%L?QEf5~N|;{JcjWkqrSk8)XY-2anYHahMflFP=#{i~I- zz2g2;l(MmL{~D!iT-<-EQnq*8zg8(5ANQ|QnnvNK)1)|VGL6OkrzslbJ6+M_xc>}A zQ{w(Jl_pD*99@}$U_^12Leys~O&nuV@f?NF=ZcQ!iH_%sju$AJCGKCZXx6y@Ld7=( zq76!u4Kfn_MS}ifL4S#$|4G)Mj!P8{nz&5Spoz<|EOGx8iUv*mQPH4@D-{izxJuEW zgR2z{I=DvBpo2a|gAO(-8g#Hp(V&CPiUu8At7y={b=lEJ(I}AldLi=-Lc$vrO^y3+ zQfTy>#aLU!C|eZ``o2YQxK+`h#chfPo!zEr`^NpZD_Tk1|0hMOjQj6Uw3@j8PDPs& z_ur*xb#edQiZ(y)zemvmasR!Fc3j+lpQ1I#{r4+cOWgl}(o~G)AweD#f;=RY@vwrO zuv)115rKY`lzfUnJSGs^1>NI9X-_Ck3f7VupA?OM7L894leIbMrv>^MLa*C1^=XR# zS;hYs#s8e*|0@l7hT?x-@xP$>Q;I(gM3XDJ%6JHA&%CKTKK!O)gL~eKwrJ*A>0{qn6vbmH#sN_LDe3Vk|h z1bQm_2lMsq8~q0{?jpB|zOSI4$bCLPj$juLz zmHHwjdL~N+&SR42T>7d>$U*^L*eW7CqSmBaOTFZHQa4n{EYcTHWY6*NbI%Y@m(erW zveU)$b@X($Y#nPpjqNtjX-tW(W6Rbu^bFyv;g? z?LB?Qqx{dZ@)Y7JukD1>YmgzOgt(lQTuaK+d*w*G_VLnLIqbg2qlZ}38D&I{Rh zYbIQ8a0ADcDs3^oClZ4Cw;1pIXR>t2JrGjR*(zR7n$acS>onR(?^u!${=+Jy^fQ=O zd@^)8OVWjmODfP0x$;Nypq^%z<^efm3)$-jWKPdBFUr=C9g_7W#7&h~^y5#s>J5b0 z79e&Ny$xhOJ;H_Z=^07v3Y@06tXQ2FW#1sg>6zHYQ_VXd8FuO*!U&n^XOYx&Vo2IT zV;*ApXac7*64*0wmv42^$FkxbW|Vj}s~;uaM8?|;#@Uw)oPi<6QzbYWbZ`nR^u=VH z%Q?(bHHVG?-zlCIUZOull1`$hX|hKq-;XnVF_)gqSC@q4N|=@_`(>%=OC2yPrxImy z_+gKU0kt5F=836y!R9Y#QxX0|9!>(f#UxV zmbPpkf&NG#^v44I38D8D=uZXuGlBjbXk5A%FnZ5k&xW5TE`*9MWab0K3adr2T*8b8 z1pvJ$?C>m?$h`%Th+&lEj*wzAT%N)HvXa|MNu>w$mrb~}pbRHmv-Bl*h(`NLxh#Vrmm=Q4})_z&B_P>>^ z0*wN?t&-GVrfn_t8g0I<^vq1&bw&~q)Pi(pO22^hV_D#^P7(n;wJUuYwEl{$zbaGg zl!Mt?Fo!s;XZ|mgeyl*Y>2GrF-{CyIK1}?Yfq6qt``_UM{x20VzyJbu-ejeZGtvXO z3MiqkNv@~+XqAj;y@w35dywMBorI^iOouV_YPa|%WbFoqM$n|mrR<+8!dlvR6p~;< z_WqD!NS3Cjma*_f2TauK;@g@TryHJWdT3|>BcCj*isfQxUkuydT6hPIInYnk^kHy6 zu(>Z#LM(W{;)|qI9XVo|A+JCVz-YfL2Va+W!9c~qSF=IU0Qlw8dXeLt5zkt*acBr? z|BVIGJ!b5Uox>r4*yO8wFn9AAs$V=qsTpMrh7{WS@Yl@;k-cETny;7rUn%w1%Sv{BhYF)=N1Hl*sHZdCLG=YPSYyF-!+v&_=K4+%W zxMb6~P1E|Da_weD&w*z!3(Q4c=95DcdnU8sl=cqW5VAN|Ghs;@$>JGU`aZP1Ut>2G z>ba#WIG7r7(2jV$Tb!qZn5!Uv<(M-WC|wK6|)FAb~ZO5kmoh19Z1 zlxOj_{=hpx+XjqGvjyH2xz)_2J>@B|nH;hOu4S^x$nc#!H_@iBo5YHDKHbJ)r)N5$ zE%f;oHUomw+V^DaA(se(t+nsVG>eeExj5u1<2P!y>u{Ic1ci{G+nph2f6*gDL!M(y zW=HMH?1NushG2cn4I|k-G&Ho`5poO^EyT982R@V~nh`t@nh_OCOQ;l5g$_e1R{d;d zu`8AvnECiNKsp`}M?p!4glg0JM`V1`{ZttsmnJ`p-^+j@FYv*9rPd1#25v8DKMdpcwV|8z*D z;jvN9VVN`av3aKQ#z(KDmUG$g?R{S6JQ#QW`MV#eADI6_9{qtjUcfe^)v}%5Ts5gw zW12-{rKJL-3@r9WZ)9jjE7xQV0i$NsFcrC6={onY3BQaX_|JB7SeirYnTwASR1X4(e~2DYCdhEHc6YT9iWwJ z2Wy9DhiZpuhigY@)3qwCTC34&wK>{ctxl`g8ni~ONn5Nf(Uxk*X~%0}txbz)y4J2m zwGQnBEukf~UTwLyLR+b=(oXiB%6w~?ZyocU#(bwU-x1m`2Ijkn`7UO@ zOPKFc=DUpfE@!?gm~RvFZDzh}neRI0yPo-OV7?of?O^^WDvS z_b}hR%y%F2-Oqg6neTDtdxH6%WWGN$-&4%@H1j>fe9tmpKl2SR-;2z*gZT!TZzuV6 zzL%Nr73O=B`QBo_x0&x9=6jd<-ebP^nePMU`;hrQV!kh#?q;@wo#W>N8;;o`l+#ruYf_YW5z9xgsITzqu6_!tEf>2h4V^b*~>BdxW$ zso2&F7kx0TO>@CtYWDihn3UdJ>t%^SPrj%>P5$<#jRKVlY-jL6oSG{U>WsW z48$D*fs>|hGZ1%@NEb8NrdU=9*8*4HPWmeV@zD*;JUqSzTv#Zm^u&%En7rvvof#9dPRoqLT$=j9f@^&>uw-ivt55wbzauPeYTj8j9im$^xY{85!VKU~q zQ{1vUG&ZR5ofuK^JV3rwVuxpr@U(FZhK2z|3A^@Kx-X<);FNy1SoS5+-U7{_- zi6}tL2Yj{G1(P%%l>4LCEZE8@Eak6pa%O1@K-&)Ev=WAEE^sZdjB%K;b}hVk78V%M z!Jzm8B|RG=gAfg1YSUZA4m}*&EQ}6(!uYgec2nf=XMtE{qK#LJ3TthoB}&? zz`^AyW`#Y0{e(6`YD$L%((hokPcsV`q6Ov@QxDlvI!uv%r`cjd%VS21ePoM0T#uEm%y>U;B^cRKQn9BZ3teEXvGzH7V|Fi ziRtSPkiET}Sv-oR&ro8{!!Lq|$>F@oVfW;4zF`Kj(4UJ~Hv|z%A(}OxUNEg25@yiz z6n%{%Tq(PzSlsf}nAj43d57B3c4 zm|3XiOhJ(U2q$F5%j|RnmDUTr|yaaosAwu zO`OG~v+s%nodadr#3?47b5|VbT=X)4wmiyFcZbxF9rb+5QTGU0LwTWmIuoKJRp=Om za9;Y#M{Vj2dxZd4Ft15u6%|3`!sa6O4%h@@i>MqqebnLESYCwA1?3JLu}}f9h2?6< zV-!b)@&)T67|tTpiz$aZqs1IUqeF$}P_n3OG%BnwR2&**wy2^)Edyi{4e!EMbmC7# zne{nyu8%EueGbpA4;)@&ZDO=GSQz>`MmnUxQArEm*zl0W_d|)Ch-cB) zZRm?|S2By$c#KZ#*CT*P>(?>*NabX5gqw>sHgFw16crSSuYfFS{XzA}JJY=8Ae@l}w1rk0y7UDzP zNycC~MECAagmE@9E-RK3XjUZ#bFY!vggpJCk~UECh*@|?Ooop@nk4e>NDR4&DVW+e zZqBXDnA;|Km$?-hV&4d1h0V=K?kRc?UheR`ZW=K!XR(;PXBRG8{}Y#6a=G|6vf>X$ z=+I#VfMHp@}3rL=EyyFt$23b zCson>h5787KR$W`YyQ%#xyMJxf$Taq{FUPC8T|_q)a85ex0%bnl3Tx)^>5_pS90?y za+)5IL3RV9@88ywMYx@N$4OGFLHDh^g`ALy;=7`g*39*260u0bTl$AQaSMH9ZIG>_ z56%qE>%bZ;Z)AwJtzXf<5Meyy4|*WImq(oeZ3VlaTQ$#8GIoeS2-&=<#Vr`Lc1^ZS7l=|iaj z^Xq|o(H8*+%x?!~zSk#l<4aS1m6;$iQOTN1pNynM%4HQTHdCJ@EuCtrQ|(I z-lyaP(dACj#chn`Kh;8iwFvZGOa^+U__s`6W`Pfd%le8@03o6iEq;?G-IUV*#%>ZH zBmrxFq?9dz&)rOcL8ZTyGDUh7?XRLerN7S1Fe&&?S>Tw!*+$?v;j)M~vYlUL=3ija z>yqqS%{Q62jfp{e9k35eA^u$MQ(-dh!Ky2kgz+Xte{Bky2^pDvKd`L$ic$Kz`1e>e zwnO8CVk3%f{Tjc{=qvS;4$_7KFq)~Il>QpqO%wMDMIUA;TJz_2F|$2tI@|v~(Lc}Z zf24`MUtEkO2G+Qr&4IHww?X(o_Cut9nfA*&K6)CpJc!+fJuG(K*h2b8Qgi<|=~EV( O1^QP>rT+skQe1n":"gt","&":"amp",'"':"quot","'":"#39"},m=/[<>&\"\']/g,b,c=window.setTimeout,d={},e;function h(){this.returnValue=false}function k(){this.cancelBubble=true}(function(o){var p=o.split(/,/),q,s,r;for(q=0;q0){g.each(p,function(s,r){o[r]=s})}});return o},cleanName:function(o){var p,q;q=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(p=0;p0?"&":"?")+q}return p},each:function(r,s){var q,p,o;if(r){q=r.length;if(q===b){for(p in r){if(r.hasOwnProperty(p)){if(s(r[p],p)===false){return}}}}else{for(o=0;o1073741824){return Math.round(o/1073741824,1)+" GB"}if(o>1048576){return Math.round(o/1048576,1)+" MB"}if(o>1024){return Math.round(o/1024,1)+" KB"}return o+" b"},getPos:function(p,t){var u=0,s=0,w,v=document,q,r;p=p;t=t||v.body;function o(C){var A,B,z=0,D=0;if(C){B=C.getBoundingClientRect();A=v.compatMode==="CSS1Compat"?v.documentElement:v.body;z=B.left+A.scrollLeft;D=B.top+A.scrollTop}return{x:z,y:D}}if(p&&p.getBoundingClientRect&&((navigator.userAgent.indexOf("MSIE")>0)&&(v.documentMode<8))){q=o(p);r=o(t);return{x:q.x-r.x,y:q.y-r.y}}w=p;while(w&&w!=t&&w.nodeType){u+=w.offsetLeft||0;s+=w.offsetTop||0;w=w.offsetParent}w=p.parentNode;while(w&&w!=t&&w.nodeType){u-=w.scrollLeft||0;s-=w.scrollTop||0;w=w.parentNode}return{x:u,y:s}},getSize:function(o){return{w:o.offsetWidth||o.clientWidth,h:o.offsetHeight||o.clientHeight}},parseSize:function(o){var p;if(typeof(o)=="string"){o=/^([0-9]+)([mgk]?)$/.exec(o.toLowerCase().replace(/[^0-9mkg]/g,""));p=o[2];o=+o[1];if(p=="g"){o*=1073741824}if(p=="m"){o*=1048576}if(p=="k"){o*=1024}}return o},xmlEncode:function(o){return o?(""+o).replace(m,function(p){return a[p]?"&"+a[p]+";":p}):o},toArray:function(q){var p,o=[];for(p=0;p=0;p--){if(r[p].key===q||r[p].orig===u){if(t.removeEventListener){t.removeEventListener(o,r[p].func,false)}else{if(t.detachEvent){t.detachEvent("on"+o,r[p].func)}}r[p].orig=null;r[p].func=null;r.splice(p,1);if(u!==b){break}}}if(!r.length){delete d[t[e]][o]}if(g.isEmptyObj(d[t[e]])){delete d[t[e]];try{delete t[e]}catch(s){t[e]=b}}},removeAllEvents:function(p){var o=arguments[1];if(p[e]===b||!p[e]){return}g.each(d[p[e]],function(r,q){g.removeEvent(p,q,o)})}};g.Uploader=function(s){var p={},v,u=[],r,q=false;v=new g.QueueProgress();s=g.extend({chunk_size:0,multipart:true,multi_selection:true,file_data_name:"file",filters:[]},s);function t(){var x,y=0,w;if(this.state==g.STARTED){for(w=0;w0?Math.ceil(v.uploaded/u.length*100):0}else{v.bytesPerSec=Math.ceil(v.loaded/((+new Date()-r||1)/1000));v.percent=v.size>0?Math.ceil(v.loaded/v.size*100):0}}g.extend(this,{state:g.STOPPED,runtime:"",features:{},files:u,settings:s,total:v,id:g.guid(),init:function(){var B=this,C,y,x,A=0,z;if(typeof(s.preinit)=="function"){s.preinit(B)}else{g.each(s.preinit,function(E,D){B.bind(D,E)})}s.page_url=s.page_url||document.location.pathname.replace(/\/[^\/]+$/g,"/");if(!/^(\w+:\/\/|\/)/.test(s.url)){s.url=s.page_url+s.url}s.chunk_size=g.parseSize(s.chunk_size);s.max_file_size=g.parseSize(s.max_file_size);B.bind("FilesAdded",function(D,G){var F,E,I=0,J,H=s.filters;if(H&&H.length){J=[];g.each(H,function(K){g.each(K.extensions.split(/,/),function(L){if(/^\s*\*\s*$/.test(L)){J.push("\\.*")}else{J.push("\\."+L.replace(new RegExp("["+("/^$.*+?|()[]{}\\".replace(/./g,"\\$&"))+"]","g"),"\\$&"))}})});J=new RegExp(J.join("|")+"$","i")}for(F=0;Fs.max_file_size){D.trigger("Error",{code:g.FILE_SIZE_ERROR,message:g.translate("File size error."),file:E});continue}u.push(E);I++}if(I){c(function(){B.trigger("QueueChanged");B.refresh()},1)}else{return false}});if(s.unique_names){B.bind("UploadFile",function(D,E){var G=E.name.match(/\.([^.]+)$/),F="tmp";if(G){F=G[1]}E.target_name=E.id+"."+F})}B.bind("UploadProgress",function(D,E){E.percent=E.size>0?Math.ceil(E.loaded/E.size*100):100;o()});B.bind("StateChanged",function(D){if(D.state==g.STARTED){r=(+new Date())}else{if(D.state==g.STOPPED){for(C=D.files.length-1;C>=0;C--){if(D.files[C].status==g.UPLOADING){D.files[C].status=g.QUEUED;o()}}}}});B.bind("QueueChanged",o);B.bind("Error",function(D,E){if(E.file){E.file.status=g.FAILED;o();if(D.state==g.STARTED){c(function(){t.call(B)},1)}}});B.bind("FileUploaded",function(D,E){E.status=g.DONE;E.loaded=E.size;D.trigger("UploadProgress",E);c(function(){t.call(B)},1)});if(s.runtimes){y=[];z=s.runtimes.split(/\s?,\s?/);for(C=0;C=0;w--){if(u[w].id===x){return u[w]}}},removeFile:function(x){var w;for(w=u.length-1;w>=0;w--){if(u[w].id===x.id){return this.splice(w,1)[0]}}},splice:function(y,w){var x;x=u.splice(y===b?0:y,w===b?u.length:w);this.trigger("FilesRemoved",x);this.trigger("QueueChanged");return x},trigger:function(x){var z=p[x.toLowerCase()],y,w;if(z){w=Array.prototype.slice.call(arguments);w[0]=this;for(y=0;y=0;x--){if(z[x].func===y){z.splice(x,1);break}}}else{z=[]}if(!z.length){delete p[w]}}},unbindAll:function(){var w=this;g.each(p,function(y,x){w.unbind(x)})},destroy:function(){this.stop();this.trigger("Destroy");this.unbindAll()}})};g.File=function(r,p,q){var o=this;o.id=r;o.name=p;o.size=q;o.loaded=0;o.percent=0;o.status=0};g.Runtime=function(){this.getFeatures=function(){};this.init=function(o,p){}};g.QueueProgress=function(){var o=this;o.size=0;o.loaded=0;o.uploaded=0;o.failed=0;o.queued=0;o.percent=0;o.bytesPerSec=0;o.reset=function(){o.size=o.loaded=o.uploaded=o.failed=o.queued=o.percent=o.bytesPerSec=0}};g.runtimes={};window.plupload=g})();(function(){if(window.google&&google.gears){return}var a=null;if(typeof GearsFactory!="undefined"){a=new GearsFactory()}else{try{a=new ActiveXObject("Gears.Factory");if(a.getBuildInfo().indexOf("ie_mobile")!=-1){a.privateSetGlobalObject(this)}}catch(b){if((typeof navigator.mimeTypes!="undefined")&&navigator.mimeTypes["application/x-googlegears"]){a=document.createElement("object");a.style.display="none";a.width=0;a.height=0;a.type="application/x-googlegears";document.documentElement.appendChild(a)}}}if(!a){return}if(!window.google){window.google={}}if(!google.gears){google.gears={factory:a}}})();(function(e,b,c,d){var f={};function a(h,k,m){var g,j,l,o;j=google.gears.factory.create("beta.canvas");try{j.decode(h);if(!k.width){k.width=j.width}if(!k.height){k.height=j.height}o=Math.min(width/j.width,height/j.height);if(o<1||(o===1&&m==="image/jpeg")){j.resize(Math.round(j.width*o),Math.round(j.height*o));if(k.quality){return j.encode(m,{quality:k.quality/100})}return j.encode(m)}}catch(n){}return h}c.runtimes.Gears=c.addRuntime("gears",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(l,n){var m,h,g=false;if(!e.google||!google.gears){return n({success:false})}try{m=google.gears.factory.create("beta.desktop")}catch(k){return n({success:false})}function j(q){var p,o,r=[],s;for(o=0;o0;v=Math.ceil(r.size/s);if(!o){s=r.size;v=1}function p(){var C,y=u.settings.multipart,x=0,B={name:r.target_name||r.name},z=u.settings.url;function A(E){var D,J="----pluploadboundary"+c.guid(),G="--",I="\r\n",F,H;if(y){h.setRequestHeader("Content-Type","multipart/form-data; boundary="+J);D=google.gears.factory.create("beta.blobbuilder");c.each(c.extend(B,u.settings.multipart_params),function(L,K){D.append(G+J+I+'Content-Disposition: form-data; name="'+K+'"'+I+I);D.append(L+I)});H=c.mimeTypes[r.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream";D.append(G+J+I+'Content-Disposition: form-data; name="'+u.settings.file_data_name+'"; filename="'+r.name+'"'+I+"Content-Type: "+H+I+I);D.append(E);D.append(I+G+J+G+I);F=D.getAsBlob();x=F.length-E.length;E=F}h.send(E)}if(r.status==c.DONE||r.status==c.FAILED||u.state==c.STOPPED){return}if(o){B.chunk=w;B.chunks=v}C=Math.min(s,r.size-(w*s));if(!y){z=c.buildUrl(u.settings.url,B)}h=google.gears.factory.create("beta.httprequest");h.open("POST",z);if(!y){h.setRequestHeader("Content-Disposition",'attachment; filename="'+r.name+'"');h.setRequestHeader("Content-Type","application/octet-stream")}c.each(u.settings.headers,function(E,D){h.setRequestHeader(D,E)});h.upload.onprogress=function(D){r.loaded=t+D.loaded-x;u.trigger("UploadProgress",r)};h.onreadystatechange=function(){var D;if(h.readyState==4&&u.state!==c.STOPPED){if(h.status==200){D={chunk:w,chunks:v,response:h.responseText,status:h.status};u.trigger("ChunkUploaded",r,D);if(D.cancelled){r.status=c.FAILED;return}t+=C;if(++w>=v){r.status=c.DONE;u.trigger("FileUploaded",r,{response:h.responseText,status:h.status})}else{p()}}else{u.trigger("Error",{code:c.HTTP_ERROR,message:c.translate("HTTP Error."),file:r,chunk:w,chunks:v,status:h.status})}}};if(w3){l.pop()}while(l.length<4){l.push(0)}m=s.split(".");while(m.length>4){m.pop()}do{u=parseInt(m[q],10);n=parseInt(l[q],10);q++}while(q8?"":0.01});o.className="plupload silverlight";if(p.settings.container){k=b.getElementById(p.settings.container);if(d.getStyle(k,"position")==="static"){k.style.position="relative"}}k.appendChild(o);for(l=0;l';function j(){return b.getElementById(p.id+"_silverlight").content.Upload}p.bind("Silverlight:Init",function(){var r,s={};if(h[p.id]){return}h[p.id]=true;p.bind("Silverlight:StartSelectFiles",function(t){r=[]});p.bind("Silverlight:SelectFile",function(t,w,u,v){var x;x=d.guid();s[x]=w;s[w]=x;r.push(new d.File(x,u,v))});p.bind("Silverlight:SelectSuccessful",function(){if(r.length){p.trigger("FilesAdded",r)}});p.bind("Silverlight:UploadChunkError",function(t,w,u,x,v){p.trigger("Error",{code:d.IO_ERROR,message:"IO Error.",details:v,file:t.getFile(s[w])})});p.bind("Silverlight:UploadFileProgress",function(t,x,u,w){var v=t.getFile(s[x]);if(v.status!=d.FAILED){v.size=w;v.loaded=u;t.trigger("UploadProgress",v)}});p.bind("Refresh",function(t){var u,v,w;u=b.getElementById(t.settings.browse_button);if(u){v=d.getPos(u,b.getElementById(t.settings.container));w=d.getSize(u);d.extend(b.getElementById(t.id+"_silverlight_container").style,{top:v.y+"px",left:v.x+"px",width:w.w+"px",height:w.h+"px"})}});p.bind("Silverlight:UploadChunkSuccessful",function(t,w,u,z,y){var x,v=t.getFile(s[w]);x={chunk:u,chunks:z,response:y};t.trigger("ChunkUploaded",v,x);if(v.status!=d.FAILED&&t.state!==d.STOPPED){j().UploadNextChunk()}if(u==z-1){v.status=d.DONE;t.trigger("FileUploaded",v,{response:y})}});p.bind("Silverlight:UploadSuccessful",function(t,w,u){var v=t.getFile(s[w]);v.status=d.DONE;t.trigger("FileUploaded",v,{response:u})});p.bind("FilesRemoved",function(t,v){var u;for(u=0;u';if(d.ua.ie){r=b.createElement("div");m.appendChild(r);r.outerHTML=q;r=null}else{m.innerHTML=q}}());function o(){return b.getElementById(n.id+"_flash")}function k(){if(h++>5000){p({success:false});return}if(g[n.id]===false){setTimeout(k,1)}}k();l=m=null;n.bind("Destroy",function(q){var r;d.removeAllEvents(b.body,q.id);delete g[q.id];delete a[q.id];r=b.getElementById(q.id+"_flash_container");if(r){j.removeChild(r)}});n.bind("Flash:Init",function(){var s={},r;try{o().setFileFilters(n.settings.filters,n.settings.multi_selection)}catch(q){p({success:false});return}if(g[n.id]){return}g[n.id]=true;n.bind("UploadFile",function(t,v){var w=t.settings,u=n.settings.resize||{};o().uploadFile(s[v.id],w.url,{name:v.target_name||v.name,mime:d.mimeTypes[v.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:w.chunk_size,width:u.width,height:u.height,quality:u.quality,multipart:w.multipart,multipart_params:w.multipart_params||{},file_data_name:w.file_data_name,format:/\.(jpg|jpeg)$/i.test(v.name)?"jpg":"png",headers:w.headers,urlstream_upload:w.urlstream_upload})});n.bind("CancelUpload",function(){o().cancelUpload()});n.bind("Flash:UploadProcess",function(u,t){var v=u.getFile(s[t.id]);if(v.status!=d.FAILED){v.loaded=t.loaded;v.size=t.size;u.trigger("UploadProgress",v)}});n.bind("Flash:UploadChunkComplete",function(t,v){var w,u=t.getFile(s[v.id]);w={chunk:v.chunk,chunks:v.chunks,response:v.text};t.trigger("ChunkUploaded",u,w);if(u.status!==d.FAILED&&t.state!==d.STOPPED){o().uploadNextChunk()}if(v.chunk==v.chunks-1){u.status=d.DONE;t.trigger("FileUploaded",u,{response:v.text})}});n.bind("Flash:SelectFiles",function(t,w){var v,u,x=[],y;for(u=0;u0){s(++u,w)}else{l.status=a.DONE;o.trigger("FileUploaded",l,{response:y.value.body,status:x});if(x>=400){o.trigger("Error",{code:a.HTTP_ERROR,message:a.translate("HTTP Error."),file:l,status:x})}}}else{o.trigger("Error",{code:a.GENERIC_ERROR,message:a.translate("Generic Error."),file:l,details:y.error})}})}function r(u){l.size=u.size;if(m){e.FileAccess.chunk({file:u,chunkSize:m},function(x){if(x.success){var y=x.value,v=y.length;p=Array(v);for(var w=0;w";G.scrollTop=100;E=k.getElementById(p.id+"_html5");if(w.features.triggerDialog){j.extend(E.style,{position:"absolute",width:"100%",height:"100%"})}else{j.extend(E.style,{cssFloat:"right",styleFloat:"right"})}E.onchange=function(){o(this.files);this.value=""};F=k.getElementById(w.settings.browse_button);if(F){var z=w.settings.browse_button_hover,A=w.settings.browse_button_active,x=w.features.triggerDialog?F:G;if(z){j.addEvent(x,"mouseover",function(){j.addClass(F,z)},w.id);j.addEvent(x,"mouseout",function(){j.removeClass(F,z)},w.id)}if(A){j.addEvent(x,"mousedown",function(){j.addClass(F,A)},w.id);j.addEvent(k.body,"mouseup",function(){j.removeClass(F,A)},w.id)}if(w.features.triggerDialog){j.addEvent(F,"click",function(H){var y=k.getElementById(w.id+"_html5");if(y&&!y.disabled){y.click()}H.preventDefault()},w.id)}}});p.bind("PostInit",function(){var s=k.getElementById(p.settings.drop_element);if(s){if(g){j.addEvent(s,"dragenter",function(w){var v,t,u;v=k.getElementById(p.id+"_drop");if(!v){v=k.createElement("input");v.setAttribute("type","file");v.setAttribute("id",p.id+"_drop");v.setAttribute("multiple","multiple");j.addEvent(v,"change",function(){o(this.files);j.removeEvent(v,"change",p.id);v.parentNode.removeChild(v)},p.id);s.appendChild(v)}t=j.getPos(s,k.getElementById(p.settings.container));u=j.getSize(s);if(j.getStyle(s,"position")==="static"){j.extend(s.style,{position:"relative"})}j.extend(v.style,{position:"absolute",display:"block",top:0,left:0,width:u.w+"px",height:u.h+"px",opacity:0})},p.id);return}j.addEvent(s,"dragover",function(t){t.preventDefault()},p.id);j.addEvent(s,"drop",function(u){var t=u.dataTransfer;if(t&&t.files){o(t.files)}u.preventDefault()},p.id)}});p.bind("Refresh",function(s){var t,u,v,x,w;t=k.getElementById(p.settings.browse_button);if(t){u=j.getPos(t,k.getElementById(s.settings.container));v=j.getSize(t);x=k.getElementById(p.id+"_html5_container");j.extend(x.style,{top:u.y+"px",left:u.x+"px",width:v.w+"px",height:v.h+"px"});if(p.features.triggerDialog){if(j.getStyle(t,"position")==="static"){j.extend(t.style,{position:"relative"})}w=parseInt(j.getStyle(t,"z-index"),10);if(isNaN(w)){w=0}j.extend(t.style,{zIndex:w});j.extend(x.style,{zIndex:w-1})}}});p.bind("DisableBrowse",function(s,u){var t=k.getElementById(s.id+"_html5");if(t){t.disabled=u}});p.bind("CancelUpload",function(){if(q&&q.abort){q.abort()}});p.bind("UploadFile",function(s,u){var v=s.settings,y,t;function x(A,D,z){var B;if(File.prototype.slice){try{A.slice();return A.slice(D,z)}catch(C){return A.slice(D,z-D)}}else{if(B=File.prototype.webkitSlice||File.prototype.mozSlice){return B.call(A,D,z)}else{return null}}}function w(A){var D=0,C=0,z=("FileReader" in h)?new FileReader:null;function B(){var I,M,K,L,H,J,F,E=s.settings.url;function G(V){var T=0,N="----pluploadboundary"+j.guid(),O,P="--",U="\r\n",R="";q=new XMLHttpRequest;if(q.upload){q.upload.onprogress=function(W){u.loaded=Math.min(u.size,C+W.loaded-T);s.trigger("UploadProgress",u)}}q.onreadystatechange=function(){var W,Y;if(q.readyState==4&&s.state!==j.STOPPED){try{W=q.status}catch(X){W=0}if(W>=400){s.trigger("Error",{code:j.HTTP_ERROR,message:j.translate("HTTP Error."),file:u,status:W})}else{if(K){Y={chunk:D,chunks:K,response:q.responseText,status:W};s.trigger("ChunkUploaded",u,Y);C+=J;if(Y.cancelled){u.status=j.FAILED;return}u.loaded=Math.min(u.size,(D+1)*H)}else{u.loaded=u.size}s.trigger("UploadProgress",u);V=I=O=R=null;if(!K||++D>=K){u.status=j.DONE;s.trigger("FileUploaded",u,{response:q.responseText,status:W})}else{B()}}}};if(s.settings.multipart&&n.multipart){L.name=u.target_name||u.name;q.open("post",E,true);j.each(s.settings.headers,function(X,W){q.setRequestHeader(W,X)});if(typeof(V)!=="string"&&!!h.FormData){O=new FormData();j.each(j.extend(L,s.settings.multipart_params),function(X,W){O.append(W,X)});O.append(s.settings.file_data_name,V);q.send(O);return}if(typeof(V)==="string"){q.setRequestHeader("Content-Type","multipart/form-data; boundary="+N);j.each(j.extend(L,s.settings.multipart_params),function(X,W){R+=P+N+U+'Content-Disposition: form-data; name="'+W+'"'+U+U;R+=unescape(encodeURIComponent(X))+U});F=j.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream";R+=P+N+U+'Content-Disposition: form-data; name="'+s.settings.file_data_name+'"; filename="'+unescape(encodeURIComponent(u.name))+'"'+U+"Content-Type: "+F+U+U+V+U+P+N+P+U;T=R.length-V.length;V=R;if(q.sendAsBinary){q.sendAsBinary(V)}else{if(n.canSendBinary){var S=new Uint8Array(V.length);for(var Q=0;Qv.chunk_size&&(n.chunks||typeof(A)=="string")){H=v.chunk_size;K=Math.ceil(u.size/H);J=Math.min(H,u.size-(D*H));if(typeof(A)=="string"){I=A.substring(D*H,D*H+J)}else{I=x(A,D*H,D*H+J)}L.chunk=D;L.chunks=K}else{J=u.size;I=A}if(s.settings.multipart&&n.multipart&&typeof(I)!=="string"&&z&&n.cantSendBlobInFormData&&n.chunks&&s.settings.chunk_size){z.onload=function(){G(z.result)};z.readAsBinaryString(I)}else{G(I)}}B()}y=c[u.id];if(n.jpgresize&&s.settings.resize&&/\.(png|jpg|jpeg)$/i.test(u.name)){d.call(s,u,s.settings.resize,/\.png$/i.test(u.name)?"image/png":"image/jpeg",function(z){if(z.success){u.size=z.data.length;w(z.data)}else{if(n.chunks){w(y)}else{l(y,w)}}})}else{if(!n.chunks&&n.jpgresize){l(y,w)}else{w(y)}}});p.bind("Destroy",function(s){var u,v,t=k.body,w={inputContainer:s.id+"_html5_container",inputFile:s.id+"_html5",browseButton:s.settings.browse_button,dropElm:s.settings.drop_element};for(u in w){v=k.getElementById(w[u]);if(v){j.removeAllEvents(v,s.id)}}j.removeAllEvents(k.body,s.id);if(s.settings.container){t=k.getElementById(s.settings.container)}t.removeChild(k.getElementById(w.inputContainer))});r({success:true})}});function b(){var q=false,o;function r(t,v){var s=q?0:-8*(v-1),w=0,u;for(u=0;u>Math.abs(s+v*8))&255)}n(x,t,w)}return{II:function(s){if(s===e){return q}else{q=s}},init:function(s){q=false;o=s},SEGMENT:function(s,u,t){switch(arguments.length){case 1:return o.substr(s,o.length-s-1);case 2:return o.substr(s,u);case 3:n(t,s,u);break;default:return o}},BYTE:function(s){return r(s,1)},SHORT:function(s){return r(s,2)},LONG:function(s,t){if(t===e){return r(s,4)}else{p(s,t,4)}},SLONG:function(s){var t=r(s,4);return(t>2147483647?t-4294967296:t)},STRING:function(s,t){var u="";for(t+=s;s=65488&&p<=65495){n+=2;continue}if(p===65498||p===65497){break}q=r.SHORT(n+2)+2;if(u[p]&&r.STRING(n+4,u[p].signature.length)===u[p].signature){t.push({hex:p,app:u[p].app.toUpperCase(),name:u[p].name.toUpperCase(),start:n,length:q,segment:r.SEGMENT(n,q)})}n+=q}r.init(null);return{headers:t,restore:function(y){r.init(y);var w=new f(y);if(!w.headers){return false}for(var x=w.headers.length;x>0;x--){var z=w.headers[x-1];r.SEGMENT(z.start,z.length,"")}w.purge();n=r.SHORT(2)==65504?4+r.SHORT(4):2;for(var x=0,v=t.length;x=z.length){break}}},purge:function(){t=[];r.init(null)}}}function a(){var q,n,o={},t;q=new b();n={tiff:{274:"Orientation",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}};t={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}};function p(u,C){var w=q.SHORT(u),z,F,G,B,A,v,x,D,E=[],y={};for(z=0;z4){x=q.LONG(x)+o.tiffHeader}for(F=0;F4){x=q.LONG(x)+o.tiffHeader}y[G]=q.STRING(x,A-1);continue;case 3:if(A>2){x=q.LONG(x)+o.tiffHeader}for(F=0;F1){x=q.LONG(x)+o.tiffHeader}for(F=0;F