diff --git a/build/svg/ox.ui.modern/symbolAdd.svg b/build/svg/ox.ui.modern/symbolAdd.svg deleted file mode 100644 index fd710b6e..00000000 --- a/build/svg/ox.ui.modern/symbolAdd.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolArrowDown.svg b/build/svg/ox.ui.modern/symbolArrowDown.svg deleted file mode 100644 index a5e028a9..00000000 --- a/build/svg/ox.ui.modern/symbolArrowDown.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolArrowLeft.svg b/build/svg/ox.ui.modern/symbolArrowLeft.svg deleted file mode 100644 index d9781ecd..00000000 --- a/build/svg/ox.ui.modern/symbolArrowLeft.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolArrowRight.svg b/build/svg/ox.ui.modern/symbolArrowRight.svg deleted file mode 100644 index 0b754777..00000000 --- a/build/svg/ox.ui.modern/symbolArrowRight.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolArrowUp.svg b/build/svg/ox.ui.modern/symbolArrowUp.svg deleted file mode 100644 index cfde4c13..00000000 --- a/build/svg/ox.ui.modern/symbolArrowUp.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolBracket.svg b/build/svg/ox.ui.modern/symbolBracket.svg deleted file mode 100644 index dae97089..00000000 --- a/build/svg/ox.ui.modern/symbolBracket.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolCenter.svg b/build/svg/ox.ui.modern/symbolCenter.svg deleted file mode 100644 index d9a069ab..00000000 --- a/build/svg/ox.ui.modern/symbolCenter.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/build/svg/ox.ui.modern/symbolCheck.svg b/build/svg/ox.ui.modern/symbolCheck.svg deleted file mode 100644 index 9a33e8da..00000000 --- a/build/svg/ox.ui.modern/symbolCheck.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolClose.svg b/build/svg/ox.ui.modern/symbolClose.svg deleted file mode 100644 index e67755ba..00000000 --- a/build/svg/ox.ui.modern/symbolClose.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/build/svg/ox.ui.modern/symbolDelete.svg b/build/svg/ox.ui.modern/symbolDelete.svg deleted file mode 100644 index 22c19ff4..00000000 --- a/build/svg/ox.ui.modern/symbolDelete.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolDown.svg b/build/svg/ox.ui.modern/symbolDown.svg deleted file mode 100644 index 49a98902..00000000 --- a/build/svg/ox.ui.modern/symbolDown.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolDownload.svg b/build/svg/ox.ui.modern/symbolDownload.svg deleted file mode 100644 index fa7bced8..00000000 --- a/build/svg/ox.ui.modern/symbolDownload.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolEdit.svg b/build/svg/ox.ui.modern/symbolEdit.svg deleted file mode 100644 index 604c6487..00000000 --- a/build/svg/ox.ui.modern/symbolEdit.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/build/svg/ox.ui.modern/symbolFill.svg b/build/svg/ox.ui.modern/symbolFill.svg deleted file mode 100644 index 66f75353..00000000 --- a/build/svg/ox.ui.modern/symbolFill.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/build/svg/ox.ui.modern/symbolFind.svg b/build/svg/ox.ui.modern/symbolFind.svg deleted file mode 100644 index ccf5676e..00000000 --- a/build/svg/ox.ui.modern/symbolFind.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/build/svg/ox.ui.modern/symbolFit.svg b/build/svg/ox.ui.modern/symbolFit.svg deleted file mode 100644 index a99bb57a..00000000 --- a/build/svg/ox.ui.modern/symbolFit.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/build/svg/ox.ui.modern/symbolFlag.svg b/build/svg/ox.ui.modern/symbolFlag.svg deleted file mode 100644 index 2b672d76..00000000 --- a/build/svg/ox.ui.modern/symbolFlag.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolGoToIn.svg b/build/svg/ox.ui.modern/symbolGoToIn.svg deleted file mode 100644 index a6c98ca4..00000000 --- a/build/svg/ox.ui.modern/symbolGoToIn.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolGoToOut.svg b/build/svg/ox.ui.modern/symbolGoToOut.svg deleted file mode 100644 index 0d2311f6..00000000 --- a/build/svg/ox.ui.modern/symbolGoToOut.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolGrow.svg b/build/svg/ox.ui.modern/symbolGrow.svg deleted file mode 100644 index f156820c..00000000 --- a/build/svg/ox.ui.modern/symbolGrow.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/build/svg/ox.ui.modern/symbolHelp.svg b/build/svg/ox.ui.modern/symbolHelp.svg deleted file mode 100644 index e586433d..00000000 --- a/build/svg/ox.ui.modern/symbolHelp.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolInfo.svg b/build/svg/ox.ui.modern/symbolInfo.svg deleted file mode 100644 index 7cd2e173..00000000 --- a/build/svg/ox.ui.modern/symbolInfo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolLeft.svg b/build/svg/ox.ui.modern/symbolLeft.svg deleted file mode 100644 index 7f91e8aa..00000000 --- a/build/svg/ox.ui.modern/symbolLeft.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolLike.svg b/build/svg/ox.ui.modern/symbolLike.svg deleted file mode 100644 index 9a7a445b..00000000 --- a/build/svg/ox.ui.modern/symbolLike.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolLoading.svg b/build/svg/ox.ui.modern/symbolLoading.svg deleted file mode 100644 index 05e721ca..00000000 --- a/build/svg/ox.ui.modern/symbolLoading.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolLock.svg b/build/svg/ox.ui.modern/symbolLock.svg deleted file mode 100644 index 6f977e55..00000000 --- a/build/svg/ox.ui.modern/symbolLock.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolMount.svg b/build/svg/ox.ui.modern/symbolMount.svg deleted file mode 100644 index 8dd00041..00000000 --- a/build/svg/ox.ui.modern/symbolMount.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolMute.svg b/build/svg/ox.ui.modern/symbolMute.svg deleted file mode 100644 index 5ed13097..00000000 --- a/build/svg/ox.ui.modern/symbolMute.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolNone.svg b/build/svg/ox.ui.modern/symbolNone.svg deleted file mode 100644 index b24ffbc9..00000000 --- a/build/svg/ox.ui.modern/symbolNone.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolPause.svg b/build/svg/ox.ui.modern/symbolPause.svg deleted file mode 100644 index e63dd751..00000000 --- a/build/svg/ox.ui.modern/symbolPause.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolPlayInToOut.svg b/build/svg/ox.ui.modern/symbolPlayInToOut.svg deleted file mode 100644 index f7034b31..00000000 --- a/build/svg/ox.ui.modern/symbolPlayInToOut.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolPublish.svg b/build/svg/ox.ui.modern/symbolPublish.svg deleted file mode 100644 index fd3ef265..00000000 --- a/build/svg/ox.ui.modern/symbolPublish.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolRedo.svg b/build/svg/ox.ui.modern/symbolRedo.svg deleted file mode 100644 index 3ddfa702..00000000 --- a/build/svg/ox.ui.modern/symbolRedo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolRemove.svg b/build/svg/ox.ui.modern/symbolRemove.svg deleted file mode 100644 index 8f2f256a..00000000 --- a/build/svg/ox.ui.modern/symbolRemove.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolRight.svg b/build/svg/ox.ui.modern/symbolRight.svg deleted file mode 100644 index a2556c4f..00000000 --- a/build/svg/ox.ui.modern/symbolRight.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/svg/ox.ui.modern/symbolSelect.svg b/build/svg/ox.ui.modern/symbolSelect.svg deleted file mode 100644 index 3161447f..00000000 --- a/build/svg/ox.ui.modern/symbolSelect.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/build/svg/ox.ui.modern/symbolSet.svg b/build/svg/ox.ui.modern/symbolSet.svg deleted file mode 100644 index a2bbe2e5..00000000 --- a/build/svg/ox.ui.modern/symbolSet.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolSetIn.svg b/build/svg/ox.ui.modern/symbolSetIn.svg deleted file mode 100644 index 018ec7e7..00000000 --- a/build/svg/ox.ui.modern/symbolSetIn.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolSetOut.svg b/build/svg/ox.ui.modern/symbolSetOut.svg deleted file mode 100644 index 96a00b63..00000000 --- a/build/svg/ox.ui.modern/symbolSetOut.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolShrink.svg b/build/svg/ox.ui.modern/symbolShrink.svg deleted file mode 100644 index 9448d5e5..00000000 --- a/build/svg/ox.ui.modern/symbolShrink.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/build/svg/ox.ui.modern/symbolStar.svg b/build/svg/ox.ui.modern/symbolStar.svg deleted file mode 100644 index 089b0202..00000000 --- a/build/svg/ox.ui.modern/symbolStar.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/build/svg/ox.ui.modern/symbolSync.svg b/build/svg/ox.ui.modern/symbolSync.svg deleted file mode 100644 index 001b1df7..00000000 --- a/build/svg/ox.ui.modern/symbolSync.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUndo.svg b/build/svg/ox.ui.modern/symbolUndo.svg deleted file mode 100644 index 8152905e..00000000 --- a/build/svg/ox.ui.modern/symbolUndo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUnlock.svg b/build/svg/ox.ui.modern/symbolUnlock.svg deleted file mode 100644 index 978338cd..00000000 --- a/build/svg/ox.ui.modern/symbolUnlock.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUnmount.svg b/build/svg/ox.ui.modern/symbolUnmount.svg deleted file mode 100644 index ac0a0cc9..00000000 --- a/build/svg/ox.ui.modern/symbolUnmount.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUnmute.svg b/build/svg/ox.ui.modern/symbolUnmute.svg deleted file mode 100644 index 34b4ec63..00000000 --- a/build/svg/ox.ui.modern/symbolUnmute.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUp.svg b/build/svg/ox.ui.modern/symbolUp.svg deleted file mode 100644 index c8e6603b..00000000 --- a/build/svg/ox.ui.modern/symbolUp.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolUser.svg b/build/svg/ox.ui.modern/symbolUser.svg deleted file mode 100644 index 1289aeb1..00000000 --- a/build/svg/ox.ui.modern/symbolUser.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/build/svg/ox.ui.modern/symbolView.svg b/build/svg/ox.ui.modern/symbolView.svg deleted file mode 100644 index f6ec0af7..00000000 --- a/build/svg/ox.ui.modern/symbolView.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolVolumeDown.svg b/build/svg/ox.ui.modern/symbolVolumeDown.svg deleted file mode 100644 index f1bc3f33..00000000 --- a/build/svg/ox.ui.modern/symbolVolumeDown.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolVolumeUp.svg b/build/svg/ox.ui.modern/symbolVolumeUp.svg deleted file mode 100644 index 4e685a52..00000000 --- a/build/svg/ox.ui.modern/symbolVolumeUp.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolWarning.svg b/build/svg/ox.ui.modern/symbolWarning.svg deleted file mode 100644 index 085285dd..00000000 --- a/build/svg/ox.ui.modern/symbolWarning.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build/svg/ox.ui.modern/symbolZoom.svg b/build/svg/ox.ui.modern/symbolZoom.svg deleted file mode 100644 index 60314085..00000000 --- a/build/svg/ox.ui.modern/symbolZoom.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/source/css/OxUI.classic.css b/source/css/Ox.UI.classic.css similarity index 100% rename from source/css/OxUI.classic.css rename to source/css/Ox.UI.classic.css diff --git a/source/css/OxUI.css b/source/css/Ox.UI.css similarity index 99% rename from source/css/OxUI.css rename to source/css/Ox.UI.css index f725dd7d..ecf7cf06 100644 --- a/source/css/OxUI.css +++ b/source/css/Ox.UI.css @@ -1,6 +1,6 @@ -@import url("OxUI.classic.css"); -@import url("OxUI.modern.css"); -@import url("OxUI.future.css"); +@import url("Ox.UI.classic.css"); +@import url("Ox.UI.modern.css"); +@import url("Ox.UI.future.css"); /* ================================================================================ diff --git a/source/css/OxUI.future.css b/source/css/Ox.UI.future.css similarity index 100% rename from source/css/OxUI.future.css rename to source/css/Ox.UI.future.css diff --git a/source/css/OxUI.modern.css b/source/css/Ox.UI.modern.css similarity index 100% rename from source/css/OxUI.modern.css rename to source/css/Ox.UI.modern.css diff --git a/source/js/Ox.Bar.js b/source/js/Ox.UI/Bar/Ox.Bar.js similarity index 100% rename from source/js/Ox.Bar.js rename to source/js/Ox.UI/Bar/Ox.Bar.js diff --git a/source/js/Ox.Resizebar.js b/source/js/Ox.UI/Bar/Ox.Resizebar.js similarity index 100% rename from source/js/Ox.Resizebar.js rename to source/js/Ox.UI/Bar/Ox.Resizebar.js diff --git a/source/js/Ox.Tabbar.js b/source/js/Ox.UI/Bar/Ox.Tabbar.js similarity index 100% rename from source/js/Ox.Tabbar.js rename to source/js/Ox.UI/Bar/Ox.Tabbar.js diff --git a/source/js/Ox.Toolbar.js b/source/js/Ox.UI/Bar/Ox.Toolbar.js similarity index 100% rename from source/js/Ox.Toolbar.js rename to source/js/Ox.UI/Bar/Ox.Toolbar.js diff --git a/source/js/Ox.Calendar.js b/source/js/Ox.UI/Calendar/Ox.Calendar.js similarity index 94% rename from source/js/Ox.Calendar.js rename to source/js/Ox.UI/Calendar/Ox.Calendar.js index 7ca56d67..ded98a2b 100644 --- a/source/js/Ox.Calendar.js +++ b/source/js/Ox.UI/Calendar/Ox.Calendar.js @@ -31,65 +31,65 @@ Ox.Calendar = function(options, self) { id: 'millennium', seconds: 365242.5 * 86400, date: function(i) { - return new Date((i + 1) + '000'); + return '01/01/' + (i + 1) + '000 UTC'; }, name: function(i) { return Ox.formatOrdinal(i + 2) + ' millennium'; }, value: function(date) { - return Math.floor(date.getFullYear() / 1000) - 1; + return Math.floor(date.getUTCFullYear() / 1000) - 1; } }, { id: 'century', seconds: 36524.25 * 86400, date: function(i) { - return new Date((i + 19) + '00'); + return '01/01/' + (i + 19) + '00 UTC'; }, name: function(i) { return Ox.formatOrdinal(i + 20) + ' century'; }, value: function(date) { - return Math.floor(date.getFullYear() / 100) - 19; + return Math.floor(date.getUTCFullYear() / 100) - 19; } }, { id: 'decade', seconds: 3652.425 * 86400, date: function(i) { - return (i + 197) + '0' + return '01/01/' + (i + 197) + '0 UTC' }, name: function(i) { return (i + 197) + '0s' }, value: function(date) { - return Math.floor(date.getFullYear() / 10) - 197; + return Math.floor(date.getUTCFullYear() / 10) - 197; } }, { id: 'year', seconds: 365.2425 * 86400, date: function(i) { - return (i + 1970) + ''; + return '01/01/' + (i + 1970) + ' UTC'; }, name: function(i) { return (i + 1970) + ''; }, value: function(date) { - return date.getFullYear() - 1970; + return date.getUTCFullYear() - 1970; } }, { id: 'month', seconds: 365.2425 / 12 * 86400, date: function(i) { - return (Math.floor(i / 12) + 1970) + '-' + (Ox.mod(i, 12) + 1); + return (Ox.mod(i, 12) + 1) + '/01/' + (Math.floor(i / 12) + 1970) + ' UTC'; }, name: function(i) { return Ox.SHORT_MONTHS[Ox.mod(i, 12)] + ' ' + Math.floor(i / 12 + 1970) }, value: function(date) { - return (date.getFullYear() - 1970) * 12 + date.getMonth(); + return (date.getUTCFullYear() - 1970) * 12 + date.getUTCMonth(); } }, { @@ -102,19 +102,17 @@ Ox.Calendar = function(options, self) { return Ox.formatDate(new Date((i * 7 - 3) * 86400000), '%a, %b %e'); }, value: function(date) { - return Math.floor((+date / 86400000 + 4) / 7); + return Math.floor((date / 86400000 + 4) / 7); } }, { id: 'day', seconds: 86400, date: function(i) { - // adjust for timezone difference - // fixme: may still be off - return i * 86400000 + Ox.TIMEZONE_OFFSET; + return i * 86400000; }, name: function(i) { - return Ox.formatDate(new Date(i * 86400000), '%b %e, %Y'); + return Ox.formatDate(new Date(i * 86400000), '%b %e, %Y', true); }, value: function(date) { return Math.floor(date / 86400000); @@ -124,13 +122,13 @@ Ox.Calendar = function(options, self) { id: 'six_hours', seconds: 21600, date: function(i) { - return i * 21600000 + Ox.TIMEZONE_OFFSET; + return i * 21600000; }, name: function(i) { - return Ox.formatDate(new Date(i * 21600000 + Ox.TIMEZONE_OFFSET), '%b %e, %H:00'); + return Ox.formatDate(new Date(i * 21600000), '%b %e, %H:00', true); }, value: function(date) { - return Math.floor((date - Ox.TIMEZONE_OFFSET) / 21600000); + return Math.floor(date / 21600000); } }, { @@ -140,7 +138,7 @@ Ox.Calendar = function(options, self) { return i * 3600000; }, name: function(i) { - return Ox.formatDate(new Date(i * 3600000), '%b %e, %H:00'); + return Ox.formatDate(new Date(i * 3600000), '%b %e, %H:00', true); }, value: function(date) { return Math.floor(date / 3600000); @@ -153,7 +151,7 @@ Ox.Calendar = function(options, self) { return i * 300000; }, name: function(i) { - return Ox.formatDate(new Date(i * 300000), '%b %e, %H:%M'); + return Ox.formatDate(new Date(i * 300000), '%b %e, %H:%M', true); }, value: function(date) { return Math.floor(date / 300000); @@ -166,7 +164,7 @@ Ox.Calendar = function(options, self) { return i * 60000; }, name: function(i) { - return Ox.formatDate(new Date(i * 60000), '%b %e, %H:%M'); + return Ox.formatDate(new Date(i * 60000), '%b %e, %H:%M', true); }, value: function(date) { return Math.floor(date / 60000); @@ -179,7 +177,7 @@ Ox.Calendar = function(options, self) { return i * 5000; }, name: function(i) { - return Ox.formatDate(new Date(i * 5000), '%H:%M:%S'); + return Ox.formatDate(new Date(i * 5000), '%H:%M:%S', true); }, value: function(date) { return Math.floor(date / 5000); @@ -192,7 +190,7 @@ Ox.Calendar = function(options, self) { return i * 1000; }, name: function(i) { - return Ox.formatDate(new Date(i * 1000), '%H:%M:%S'); + return Ox.formatDate(new Date(i * 1000), '%H:%M:%S', true); }, value: function(date) { return Math.floor(date / 1000); @@ -623,7 +621,7 @@ Ox.Calendar = function(options, self) { renderTimelines(); renderDates(); self.$statusbar.html( - Ox.formatDate(self.options.date, '%Y-%m-%d %H:%M:%S %s') + Ox.formatDate(self.options.date, '%a, %b %e, %Y, %H:%M:%S (%s)', true) ); } diff --git a/source/js/Ox.CalendarDate.js b/source/js/Ox.UI/Calendar/Ox.CalendarDate.js similarity index 100% rename from source/js/Ox.CalendarDate.js rename to source/js/Ox.UI/Calendar/Ox.CalendarDate.js diff --git a/source/js/Ox.App.js b/source/js/Ox.UI/Core/Ox.App.js similarity index 100% rename from source/js/Ox.App.js rename to source/js/Ox.UI/Core/Ox.App.js diff --git a/source/js/Ox.Clipboard.js b/source/js/Ox.UI/Core/Ox.Clipboard.js similarity index 100% rename from source/js/Ox.Clipboard.js rename to source/js/Ox.UI/Core/Ox.Clipboard.js diff --git a/source/js/Ox.Container.js b/source/js/Ox.UI/Core/Ox.Container.js similarity index 100% rename from source/js/Ox.Container.js rename to source/js/Ox.UI/Core/Ox.Container.js diff --git a/source/js/Ox.Element.js b/source/js/Ox.UI/Core/Ox.Element.js similarity index 100% rename from source/js/Ox.Element.js rename to source/js/Ox.UI/Core/Ox.Element.js diff --git a/source/js/Ox.Focus.js b/source/js/Ox.UI/Core/Ox.Focus.js similarity index 100% rename from source/js/Ox.Focus.js rename to source/js/Ox.UI/Core/Ox.Focus.js diff --git a/source/js/Ox.History.js b/source/js/Ox.UI/Core/Ox.History.js similarity index 100% rename from source/js/Ox.History.js rename to source/js/Ox.UI/Core/Ox.History.js diff --git a/source/js/Ox.JQueryElement.js b/source/js/Ox.UI/Core/Ox.JQueryElement.js similarity index 96% rename from source/js/Ox.JQueryElement.js rename to source/js/Ox.UI/Core/Ox.JQueryElement.js index 74fabeeb..cb2884b1 100644 --- a/source/js/Ox.JQueryElement.js +++ b/source/js/Ox.UI/Core/Ox.JQueryElement.js @@ -1,5 +1,9 @@ // vim: et:ts=4:sw=4:sts=4:ft=js -// Basic jQuery element + +/*** +Basic jQuery element +***/ + Ox.JQueryElement = function($element) { var that = this; that.id = Ox.uid(); @@ -10,6 +14,7 @@ Ox.JQueryElement = function($element) { Ox.UI.elements[that.id] = that; return that; }; + Ox.forEach($('
'), function(val, key) { if (Ox.isFunction(val)) { Ox.JQueryElement.prototype[key] = function() { @@ -30,4 +35,4 @@ Ox.forEach($('
'), function(val, key) { Ox.UI.elements[id] : ret; }; } -}); +}); \ No newline at end of file diff --git a/source/js/Ox.Keyboard.js b/source/js/Ox.UI/Core/Ox.Keyboard.js similarity index 98% rename from source/js/Ox.Keyboard.js rename to source/js/Ox.UI/Core/Ox.Keyboard.js index dfed8b2f..b2569d4e 100644 --- a/source/js/Ox.Keyboard.js +++ b/source/js/Ox.UI/Core/Ox.Keyboard.js @@ -181,6 +181,7 @@ bufferTime = time; } focused !== null && Ox.UI.elements[focused].triggerEvent('key_' + key); + // fixme: oxdb context browser suggests we should add left and right keys here if (['down', 'space', 'up'].indexOf(key) > -1 && !Ox.UI.elements[focused].hasClass('OxInput')) { // prevent chrome from scrolling return false; diff --git a/source/js/Ox.LoadingIcon.js b/source/js/Ox.UI/Core/Ox.LoadingIcon.js similarity index 100% rename from source/js/Ox.LoadingIcon.js rename to source/js/Ox.UI/Core/Ox.LoadingIcon.js diff --git a/source/js/Ox.Progressbar.js b/source/js/Ox.UI/Core/Ox.Progressbar.js similarity index 100% rename from source/js/Ox.Progressbar.js rename to source/js/Ox.UI/Core/Ox.Progressbar.js diff --git a/source/js/Ox.Request.js b/source/js/Ox.UI/Core/Ox.Request.js similarity index 100% rename from source/js/Ox.Request.js rename to source/js/Ox.UI/Core/Ox.Request.js diff --git a/source/js/Ox.Theme.js b/source/js/Ox.UI/Core/Ox.Theme.js similarity index 100% rename from source/js/Ox.Theme.js rename to source/js/Ox.UI/Core/Ox.Theme.js diff --git a/source/js/Ox.URL.js b/source/js/Ox.UI/Core/Ox.URL.js similarity index 100% rename from source/js/Ox.URL.js rename to source/js/Ox.UI/Core/Ox.URL.js diff --git a/source/js/Ox.Button.js b/source/js/Ox.UI/Form/Ox.Button.js similarity index 100% rename from source/js/Ox.Button.js rename to source/js/Ox.UI/Form/Ox.Button.js diff --git a/source/js/Ox.ButtonGroup.js b/source/js/Ox.UI/Form/Ox.ButtonGroup.js similarity index 100% rename from source/js/Ox.ButtonGroup.js rename to source/js/Ox.UI/Form/Ox.ButtonGroup.js diff --git a/source/js/Ox.Checkbox.js b/source/js/Ox.UI/Form/Ox.Checkbox.js similarity index 100% rename from source/js/Ox.Checkbox.js rename to source/js/Ox.UI/Form/Ox.Checkbox.js diff --git a/source/js/Ox.CheckboxGroup.js b/source/js/Ox.UI/Form/Ox.CheckboxGroup.js similarity index 100% rename from source/js/Ox.CheckboxGroup.js rename to source/js/Ox.UI/Form/Ox.CheckboxGroup.js diff --git a/source/js/Ox.ColorInput.js b/source/js/Ox.UI/Form/Ox.ColorInput.js similarity index 100% rename from source/js/Ox.ColorInput.js rename to source/js/Ox.UI/Form/Ox.ColorInput.js diff --git a/source/js/Ox.ColorPicker.js b/source/js/Ox.UI/Form/Ox.ColorPicker.js similarity index 100% rename from source/js/Ox.ColorPicker.js rename to source/js/Ox.UI/Form/Ox.ColorPicker.js diff --git a/source/js/Ox.DateInput.js b/source/js/Ox.UI/Form/Ox.DateInput.js similarity index 100% rename from source/js/Ox.DateInput.js rename to source/js/Ox.UI/Form/Ox.DateInput.js diff --git a/source/js/Ox.DateTimeInput.js b/source/js/Ox.UI/Form/Ox.DateTimeInput.js similarity index 100% rename from source/js/Ox.DateTimeInput.js rename to source/js/Ox.UI/Form/Ox.DateTimeInput.js diff --git a/source/js/Ox.Filter.js b/source/js/Ox.UI/Form/Ox.Filter.js similarity index 100% rename from source/js/Ox.Filter.js rename to source/js/Ox.UI/Form/Ox.Filter.js diff --git a/source/js/Ox.Form.js b/source/js/Ox.UI/Form/Ox.Form.js similarity index 100% rename from source/js/Ox.Form.js rename to source/js/Ox.UI/Form/Ox.Form.js diff --git a/source/js/Ox.FormElementGroup.js b/source/js/Ox.UI/Form/Ox.FormElementGroup.js similarity index 100% rename from source/js/Ox.FormElementGroup.js rename to source/js/Ox.UI/Form/Ox.FormElementGroup.js diff --git a/source/js/Ox.FormItem.js b/source/js/Ox.UI/Form/Ox.FormItem.js similarity index 100% rename from source/js/Ox.FormItem.js rename to source/js/Ox.UI/Form/Ox.FormItem.js diff --git a/source/js/Ox.Input.js b/source/js/Ox.UI/Form/Ox.Input.js similarity index 100% rename from source/js/Ox.Input.js rename to source/js/Ox.UI/Form/Ox.Input.js diff --git a/source/js/Ox.InputGroup.js b/source/js/Ox.UI/Form/Ox.InputGroup.js similarity index 100% rename from source/js/Ox.InputGroup.js rename to source/js/Ox.UI/Form/Ox.InputGroup.js diff --git a/source/js/Ox.Label.js b/source/js/Ox.UI/Form/Ox.Label.js similarity index 100% rename from source/js/Ox.Label.js rename to source/js/Ox.UI/Form/Ox.Label.js diff --git a/source/js/Ox.OptionGroup.js b/source/js/Ox.UI/Form/Ox.OptionGroup.js similarity index 100% rename from source/js/Ox.OptionGroup.js rename to source/js/Ox.UI/Form/Ox.OptionGroup.js diff --git a/source/js/Ox.Picker.js b/source/js/Ox.UI/Form/Ox.Picker.js similarity index 100% rename from source/js/Ox.Picker.js rename to source/js/Ox.UI/Form/Ox.Picker.js diff --git a/source/js/Ox.PlaceInput.js b/source/js/Ox.UI/Form/Ox.PlaceInput.js similarity index 100% rename from source/js/Ox.PlaceInput.js rename to source/js/Ox.UI/Form/Ox.PlaceInput.js diff --git a/source/js/Ox.PlacePicker.js b/source/js/Ox.UI/Form/Ox.PlacePicker.js similarity index 100% rename from source/js/Ox.PlacePicker.js rename to source/js/Ox.UI/Form/Ox.PlacePicker.js diff --git a/source/js/Ox.Range.js b/source/js/Ox.UI/Form/Ox.Range.js similarity index 100% rename from source/js/Ox.Range.js rename to source/js/Ox.UI/Form/Ox.Range.js diff --git a/source/js/Ox.Select.js b/source/js/Ox.UI/Form/Ox.Select.js similarity index 100% rename from source/js/Ox.Select.js rename to source/js/Ox.UI/Form/Ox.Select.js diff --git a/source/js/Ox.TimeInput.js b/source/js/Ox.UI/Form/Ox.TimeInput.js similarity index 100% rename from source/js/Ox.TimeInput.js rename to source/js/Ox.UI/Form/Ox.TimeInput.js diff --git a/source/js/Ox.IconItem.js b/source/js/Ox.UI/List/Ox.IconItem.js similarity index 100% rename from source/js/Ox.IconItem.js rename to source/js/Ox.UI/List/Ox.IconItem.js diff --git a/source/js/Ox.IconList.js b/source/js/Ox.UI/List/Ox.IconList.js similarity index 100% rename from source/js/Ox.IconList.js rename to source/js/Ox.UI/List/Ox.IconList.js diff --git a/source/js/Ox.ItemInput.js b/source/js/Ox.UI/List/Ox.ItemInput.js similarity index 100% rename from source/js/Ox.ItemInput.js rename to source/js/Ox.UI/List/Ox.ItemInput.js diff --git a/source/js/Ox.List.js b/source/js/Ox.UI/List/Ox.List.js similarity index 100% rename from source/js/Ox.List.js rename to source/js/Ox.UI/List/Ox.List.js diff --git a/source/js/Ox.ListItem.js b/source/js/Ox.UI/List/Ox.ListItem.js similarity index 100% rename from source/js/Ox.ListItem.js rename to source/js/Ox.UI/List/Ox.ListItem.js diff --git a/source/js/Ox.ListMap.js b/source/js/Ox.UI/List/Ox.ListMap.js similarity index 100% rename from source/js/Ox.ListMap.js rename to source/js/Ox.UI/List/Ox.ListMap.js diff --git a/source/js/Ox.ListPage.js b/source/js/Ox.UI/List/Ox.ListPage.js similarity index 100% rename from source/js/Ox.ListPage.js rename to source/js/Ox.UI/List/Ox.ListPage.js diff --git a/source/js/Ox.TextList.js b/source/js/Ox.UI/List/Ox.TextList.js similarity index 100% rename from source/js/Ox.TextList.js rename to source/js/Ox.UI/List/Ox.TextList.js diff --git a/source/js/Ox.TreeList.js b/source/js/Ox.UI/List/Ox.TreeList.js similarity index 100% rename from source/js/Ox.TreeList.js rename to source/js/Ox.UI/List/Ox.TreeList.js diff --git a/source/js/Ox.Map.js b/source/js/Ox.UI/Map/Ox.Map.js similarity index 100% rename from source/js/Ox.Map.js rename to source/js/Ox.UI/Map/Ox.Map.js diff --git a/source/js/Ox.MapImage.js b/source/js/Ox.UI/Map/Ox.MapImage.js similarity index 100% rename from source/js/Ox.MapImage.js rename to source/js/Ox.UI/Map/Ox.MapImage.js diff --git a/source/js/Ox.MapMarker.js b/source/js/Ox.UI/Map/Ox.MapMarker.js similarity index 100% rename from source/js/Ox.MapMarker.js rename to source/js/Ox.UI/Map/Ox.MapMarker.js diff --git a/source/js/Ox.MapPlace.js b/source/js/Ox.UI/Map/Ox.MapPlace.js similarity index 100% rename from source/js/Ox.MapPlace.js rename to source/js/Ox.UI/Map/Ox.MapPlace.js diff --git a/source/js/Ox.MapRectangle.js b/source/js/Ox.UI/Map/Ox.MapRectangle.js similarity index 100% rename from source/js/Ox.MapRectangle.js rename to source/js/Ox.UI/Map/Ox.MapRectangle.js diff --git a/source/js/Ox.MapRectangleMarker.js b/source/js/Ox.UI/Map/Ox.MapRectangleMarker.js similarity index 100% rename from source/js/Ox.MapRectangleMarker.js rename to source/js/Ox.UI/Map/Ox.MapRectangleMarker.js diff --git a/source/js/Ox.MainMenu.js b/source/js/Ox.UI/Menu/Ox.MainMenu.js similarity index 100% rename from source/js/Ox.MainMenu.js rename to source/js/Ox.UI/Menu/Ox.MainMenu.js diff --git a/source/js/Ox.Menu.js b/source/js/Ox.UI/Menu/Ox.Menu.js similarity index 100% rename from source/js/Ox.Menu.js rename to source/js/Ox.UI/Menu/Ox.Menu.js diff --git a/source/js/Ox.MenuItem.js b/source/js/Ox.UI/Menu/Ox.MenuItem.js similarity index 100% rename from source/js/Ox.MenuItem.js rename to source/js/Ox.UI/Menu/Ox.MenuItem.js diff --git a/source/js/Ox.UI/Ox.UI.js b/source/js/Ox.UI/Ox.UI.js new file mode 100644 index 00000000..03824fd8 --- /dev/null +++ b/source/js/Ox.UI/Ox.UI.js @@ -0,0 +1,299 @@ +Ox.load.UI = function(options, callback) { + + options = Ox.extend({ + hideScreen: true, + showScreen: false, + theme: 'classic' + }, options); + + var browsers = [ + { + name: 'Chrome', + regexp: /Chrome\/(\d+)\./, + url: 'http://www.google.com/chrome/', + version: 10 + }, + { + name: 'Firefox', + regexp: /Firefox\/(\d+)\./, + url: 'http://www.mozilla.org/firefox/', + version: 4 + }, + { + name: 'Safari', + regexp: /Version\/(\d+).*? Safari/, + url: 'http://www.apple.com/safari/', + version: 5 + } + ], + browserSupported = false; + + browsers.forEach(function(browser) { + var match = browser.regexp(navigator.userAgent); + if (match && match[1] >= browser.version) { + browserSupported = true; + } + }); + + Ox.documentReady(function() { + options.showScreen && showScreen(); + }); + + loadFiles(); + + function showScreen() { + + Ox.print('showScreen') + + var body = Ox.element('body') + .addClass('OxTheme' + Ox.toTitleCase(options.theme)), + css = { + position: 'absolute', + left: 0, + top: 0, + right: 0, + bottom: 0, + margin: 'auto', + MozUserSelect: 'none', + WebkitUserSelect: 'none' + }, + div = Ox.element('
') + .addClass('OxLoadingScreen') + .css({ + position: 'absolute', + left: 0, + top: 0, + right: 0, + bottom: 0, + padding: '4px', + background: 'rgb(' + ( + options.theme == 'classic' ? '240, 240, 240' : '16, 16, 16') + + ')', + opacity: 1, + zIndex: 1000 + }) + .appendTo(body); + + browserSupported ? showIcon() : showWarning(); + + function showIcon() { + // fixme: directory should be 'Ox.UI. ...' + var src = Ox.PATH + 'svg/ox.ui.' + options.theme + '/symbolLoading.svg' + Ox.loadFile(src, function() { + Ox.element('') + .attr({ + src: src + }) + .css(Ox.extend({ + width: '32px', + height: '32px', + }, css)) + .mousedown(function(e) { + e.preventDefault() + }) + .appendTo(div); + }); + } + + function showWarning() { + Ox.print('showWarning') + var counter = 0, + message = 'Browser not supported, use ' + browsers.map(function(browser, i) { + return browser.name + ( + i == browsers.length - 1 ? '.' : + i == browsers.length - 2 ? ' or' : ',' + ); + }).join(' '); + div.addClass('OxError'); + browsers.forEach(function(browser) { + browser.src = Ox.PATH + 'png/ox.ui/browser' + browser.name + '128.png'; + Ox.loadFile(browser.src, function() { + Ox.print(counter) + ++counter == browsers.length && showIcons(); + }); + }); + function showIcons() { + var box = Ox.element('
') + .css(Ox.extend({ + width: (browsers.length * 72) + 'px', + height: '72px' + }, css)) + .appendTo(div); + browsers.forEach(function(browser, i) { + var link = Ox.element('') + .attr({ + href: browser.url, + title: browser.name + ' ' + browser.version + }) + .css({ + position: 'absolute', + left: (i * 72) + 'px', + width: '72px', + height: '72px', + }) + .appendTo(box); + Ox.element('') + .attr({ + src: browser.src + }) + .css(Ox.extend({ + width: '64px', + height: '64px', + border: 0, + cursor: 'pointer' + }, css)) + .mousedown(function(e) { + e.preventDefault(); + }) + .appendTo(link); + }); + } + + } + + } + + function loadFiles() { + + Ox.loadFile(Ox.PATH + 'js/jquery/jquery.js', function() { + initUI(); + $.getJSON(Ox.PATH + 'json/Ox.UI.json', function(files) { + var counter = 0; + files.forEach(function(file) { + Ox.loadFile(Ox.PATH + file, function() { + ++counter == files.length && Ox.documentReady(function() { + var $div; + if (browserSupported && options.hideScreen) { + $div = $('.OxLoadingScreen'); + //$div.find('img').remove(); + $div.animate({ + opacity: 0 + }, 1000, function() { + $div.remove(); + }); + } + callback(browserSupported); + }); + }); + }); + }); + }); + + } + + function initUI() { + + Ox.UI = {}; + + Ox.UI.ready = (function() { + var callbacks = []; + $(function() { + Ox.UI.$body = $('body'); + Ox.UI.$document = $(document); + Ox.UI.$head = $('head'); + Ox.UI.$window = $(window); + callbacks.forEach(function(callback) { + callback(); + }); + delete callbacks; + }); + return function(callback) { + if (Ox.UI.$window) { + callback(); + } else { + callbacks.push(callback); + } + } + }()); + + Ox.UI.elements = {}; + Ox.UI.DEFAULT_THEME = 'classic'; // fixme: needed? + Ox.UI.DIMENSIONS = { + horizontal: ['width', 'height'], + vertical: ['height', 'width'] + }; + Ox.UI.EDGES = { + horizontal: ['left', 'right', 'top', 'bottom'], + vertical: ['top', 'bottom', 'left', 'right'] + }; + Ox.UI.getImagePath = function(filename) { + // fixme: not the best idea to do this here + if (filename == 'symbolPlay.svg') { + filename = 'symbolRight.svg'; + } + return Ox.UI.PATH + filename.split('.').pop() + + '/Ox.UI.' + Ox.Theme() + '/' + filename; + }; + Ox.UI.IMAGE_CACHE = []; + + Ox.UI.ready = function(callback) { + + } + Ox.UI.SCROLLBAR_SIZE = $.browser.mozilla ? 16 : 12; + // fixme: the follwing should be deprecated + Ox.UI.getBarSize = function(size) { + var sizes = { + small: 20, + medium: 24, + large: 28 + }; + return sizes[size]; + }; + Ox.UI.symbols = { + alt: '\u2325', + apple: '\uF8FF', + arrow_down: '\u2193', + arrow_left: '\u2190', + arrow_right: '\u2192', + arrow_up: '\u2191', + backspace: '\u232B', + backup: '\u2707', + ballot: '\u2717', + black_star: '\u2605', + burn: '\u2622', + caps_lock: '\u21EA', + check: '\u2713', + //clear: '\u2327', + clear: '\u00D7', + click: '\uF803', + close: '\u2715', + command: '\u2318', + control: '\u2303', + cut: '\u2702', + 'delete': '\u2326', + diamond: '\u25C6', + edit: '\uF802', + eject: '\u23CF', + escape: '\u238B', + end: '\u2198', + enter: '\u2324', + fly: '\u2708', + gear: '\u2699', + home: '\u2196', + info: '\u24D8', + navigate: '\u2388', + option: '\u2387', + page_up: '\u21DE', + page_down: '\u21DF', + redo: '\u21BA', + 'return': '\u21A9', + //select: '\u21D5', + select: '\u25BE', + shift: '\u21E7', + sound: '\u266B', + space: '\u2423', + tab: '\u21E5', + trash: '\u267A', + triangle_down: '\u25BC', + triangle_left: '\u25C0', + triangle_right: '\u25BA', + triangle_up: '\u25B2', + undo: '\u21BB', + voltage: '\u26A1', + warning: '\u26A0', + white_star: '\u2606' + }; + + } + +}; \ No newline at end of file diff --git a/source/js/Ox.CollapsePanel.js b/source/js/Ox.UI/Panel/Ox.CollapsePanel.js similarity index 100% rename from source/js/Ox.CollapsePanel.js rename to source/js/Ox.UI/Panel/Ox.CollapsePanel.js diff --git a/source/js/Ox.Panel.js b/source/js/Ox.UI/Panel/Ox.Panel.js similarity index 100% rename from source/js/Ox.Panel.js rename to source/js/Ox.UI/Panel/Ox.Panel.js diff --git a/source/js/Ox.SplitPanel.js b/source/js/Ox.UI/Panel/Ox.SplitPanel.js similarity index 100% rename from source/js/Ox.SplitPanel.js rename to source/js/Ox.UI/Panel/Ox.SplitPanel.js diff --git a/source/js/Ox.TabPanel.js b/source/js/Ox.UI/Panel/Ox.TabPanel.js similarity index 100% rename from source/js/Ox.TabPanel.js rename to source/js/Ox.UI/Panel/Ox.TabPanel.js diff --git a/source/js/Ox.AnnotationPanel.js b/source/js/Ox.UI/Video/Ox.AnnotationPanel.js similarity index 100% rename from source/js/Ox.AnnotationPanel.js rename to source/js/Ox.UI/Video/Ox.AnnotationPanel.js diff --git a/source/js/Ox.BlockTimeline.js b/source/js/Ox.UI/Video/Ox.BlockTimeline.js similarity index 100% rename from source/js/Ox.BlockTimeline.js rename to source/js/Ox.UI/Video/Ox.BlockTimeline.js diff --git a/source/js/Ox.FilesView.js b/source/js/Ox.UI/Video/Ox.FilesView.js similarity index 100% rename from source/js/Ox.FilesView.js rename to source/js/Ox.UI/Video/Ox.FilesView.js diff --git a/source/js/Ox.Flipbook.js b/source/js/Ox.UI/Video/Ox.Flipbook.js similarity index 100% rename from source/js/Ox.Flipbook.js rename to source/js/Ox.UI/Video/Ox.Flipbook.js diff --git a/source/js/Ox.LargeTimeline.js b/source/js/Ox.UI/Video/Ox.LargeTimeline.js similarity index 100% rename from source/js/Ox.LargeTimeline.js rename to source/js/Ox.UI/Video/Ox.LargeTimeline.js diff --git a/source/js/Ox.SmallTimeline.js b/source/js/Ox.UI/Video/Ox.SmallTimeline.js similarity index 100% rename from source/js/Ox.SmallTimeline.js rename to source/js/Ox.UI/Video/Ox.SmallTimeline.js diff --git a/source/js/Ox.VideoEditorPlayer.js b/source/js/Ox.UI/Video/Ox.VideoEditorPlayer.js similarity index 100% rename from source/js/Ox.VideoEditorPlayer.js rename to source/js/Ox.UI/Video/Ox.VideoEditorPlayer.js diff --git a/source/js/Ox.VideoElement.js b/source/js/Ox.UI/Video/Ox.VideoElement.js similarity index 100% rename from source/js/Ox.VideoElement.js rename to source/js/Ox.UI/Video/Ox.VideoElement.js diff --git a/source/js/Ox.VideoPanelPlayer.js b/source/js/Ox.UI/Video/Ox.VideoPanelPlayer.js similarity index 100% rename from source/js/Ox.VideoPanelPlayer.js rename to source/js/Ox.UI/Video/Ox.VideoPanelPlayer.js diff --git a/source/js/Ox.VideoPlayer.js b/source/js/Ox.UI/Video/Ox.VideoPlayer.js similarity index 100% rename from source/js/Ox.VideoPlayer.js rename to source/js/Ox.UI/Video/Ox.VideoPlayer.js diff --git a/source/js/Ox.Dialog.js b/source/js/Ox.UI/Window/Ox.Dialog.js similarity index 100% rename from source/js/Ox.Dialog.js rename to source/js/Ox.UI/Window/Ox.Dialog.js diff --git a/source/js/Ox.Tooltip.js b/source/js/Ox.UI/Window/Ox.Tooltip.js similarity index 100% rename from source/js/Ox.Tooltip.js rename to source/js/Ox.UI/Window/Ox.Tooltip.js diff --git a/source/js/Ox.Window.js b/source/js/Ox.UI/Window/Ox.Window.js similarity index 100% rename from source/js/Ox.Window.js rename to source/js/Ox.UI/Window/Ox.Window.js diff --git a/source/js/Ox.js b/source/js/Ox.js index c202322e..a108687f 100644 --- a/source/js/Ox.js +++ b/source/js/Ox.js @@ -74,7 +74,6 @@ Ox.SYMBOLS = { EDIT: '\uF802', CLICK: '\uF803', APPLE: '\uF8FF' }; // local timezone offset in milliseconds -Ox.TIMEZONE_OFFSET = +new Date().getTimezoneOffset() * 60000; Ox.TYPES = [ 'Arguments', 'Array', 'Boolean', 'Date', 'Element', 'Function', 'Infinity', 'NaN', 'Null', 'Number', 'Object', 'RegExp', 'String', 'Undefined' @@ -144,6 +143,109 @@ Ox.getset = function(obj, args, callback, context) { return ret; } +Ox.PATH = Array.prototype.slice.apply( + document.getElementsByTagName('script') +).filter(function(element) { + return /Ox\.js$/.test(element.src); +})[0].src.replace('js/Ox.js', ''); + +Ox.load = (function() { + /*** + loads Ox modules + ***/ + var cache = {}; + return function(module, options, callback) { + callback = arguments[arguments.length - 1]; + options = arguments.length == 3 ? arguments[1] : {}; + Ox.loadFile(Ox.PATH + 'js/Ox.' + module + '/Ox.' + module + '.js', function() { + Ox.load[module](options, callback); + }); + }; +}()); + +Ox.loadFile = (function() { + /*** + loads stylesheets, scripts and images + ***/ + var cache = {}; + return function (file, callback) { + var element, request, + type = file.split('.').pop(); + if (!cache[file]) { + if (type == 'css' || type == 'js') { + if (!findFileInHead()) { + element = document.createElement(type == 'css' ? 'link' : 'script'); + element[type == 'css' ? 'href' : 'src'] = file; + element.type = type == 'css' ? 'text/css' : 'text/javascript'; + if (type == 'css') { + element.rel = 'stylesheet'; + waitForCSS(); + } else { + element.onload = addFileToCache; + } + document.head.appendChild(element); + } else { + addFileToCache(); + } + } else { + element = new Image(); + element.onload = addFileToCache; + element.src = file; + } + } else { + callback(); + } + function addFileToCache() { + if (type == 'css' || type == 'js') { + cache['file'] = true; + callback(); + } else { + cache['file'] = element; + callback({ + width: element.width, + height: element.heigth + }); + } + } + function findFileInHead() { + return Array.prototype.slice.apply( + document.getElementsByTagName(type == 'css' ? 'link' : 'script') + ).map(function(element) { + return element[type == 'css' ? 'href' : 'src'] == file; + }).reduce(function(prev, curr) { + return prev || curr; + }, false); + } + function waitForCSS() { + var error = false; + try { + element.sheet.cssRule; + } catch(e) { + error = true; + setTimeout(function() { + waitForCSS(); + }, 25); + } + !error && addFileToCache(); + } + }; +}()); + +Ox.loadJSON = function(url, callback) { + var req = new XMLHttpRequest(); + req.open('GET', url, true); + req.onreadystatechange = function() { + if (req.readyState == 4) { + if (req.status == 200) { + callback(JSON.parse(req.responseText)); + } else { + throw new Error('URL ' + url + ', status ' + req.status); + } + } + }; + req.send(); +}; + Ox.print = function() { /* */ @@ -1041,6 +1143,10 @@ Ox.getTime = function() { return +new Date(); } +Ox.getTimezoneOffset = function() { + return new Date().getTimezoneOffset() * 60000; +} + Ox.getTimezoneOffsetString = function(date) { /* Time zone offset string ('-1200' - '+1200') @@ -1091,7 +1197,8 @@ Ox.makeYear = function(date, utc) { }; [ - 'FullYear', 'Month', 'Date', 'Day', 'Hours', 'Minutes', 'Seconds' + 'FullYear', 'Month', 'Date', 'Day', + 'Hours', 'Minutes', 'Seconds', 'Milliseconds' ].forEach(function(noun) { Ox['get' + noun] = function(date, utc) { return Ox.makeDate(date)['get' + (utc ? 'UTC' : '') + noun]() @@ -1102,9 +1209,9 @@ Ox.makeYear = function(date, utc) { return new Date( Ox.makeDate(date) )['set' + (utc ? 'UTC' : '') + noun](num); + // fixme: maybe we _want_ set to have side effects? } }); - /* ================================================================================ @@ -1118,7 +1225,7 @@ Ox.canvas = function() { image = isImage ? arguments[0] : { width: arguments[0], height: arguments[1] }; - c.context = (c.canvas = Ox.element('canvas').attr({ + c.context = (c.canvas = Ox.element('').attr({ width: image.width, height: image.height })[0]).getContext('2d'); isImage && c.context.drawImage(image, 0, 0); @@ -1128,28 +1235,74 @@ Ox.canvas = function() { return c; }; +Ox.documentReady = (function() { + var callbacks = []; + document.addEventListener('DOMContentLoaded', ready, false); + function ready() { + document.removeEventListener('DOMContentLoaded', ready, false); + callbacks.forEach(function(callback) { + callback(); + }); + delete callbacks; + } + return function(callback) { + if (document.readyState == 'complete') { + callback(); + } else { + callbacks.push(callback); + } + } +}()); + Ox.element = function(str) { /* + Generic HTML element, mimics jQuery >>> Ox.element('div').attr({id: 'foo'}).attr('id') 'foo' >>> Ox.element('div').html('foo').html() 'foo' */ return { - 0: str[0] == '#' ? document.getElementById(str.substr(1)) : - document.createElement(str), + 0: str[0] == '<' ? document.createElement(str.substr(1, str.length - 2)) : + str[0] == '.' ? document.getElementsByClassName(str.substr(1))[0] : + str[0] == '#' ? document.getElementById(str.substr(1)) : + document.getElementsByTagName(str)[0], + addClass: function(str) { + this[0].className += (this[0].className ? ' ' : '') + str; + return this; + }, + append: function(element) { + this[0].appendChild(element[0]); + return this; + }, + appendTo: function(element) { + element[0].appendChild(this[0]); + return this; + }, attr: function() { - var args, ret, that = this; + var ret, that = this; if (arguments.length == 1 && Ox.isString(arguments[0])) { ret = this[0].getAttribute(arguments[0]); } else { - Ox.forEach(Ox.makeObject.apply(this, arguments), function(v, k) { + Ox.forEach(Ox.makeObject.apply(null, arguments), function(v, k) { that[0].setAttribute(k, v); }); ret = this; } return ret; }, + css: function() { + var ret, that = this; + if (arguments.length == 1 && Ox.isString(arguments[0])) { + ret = this[0].style[arguments[0]]; + } else { + Ox.forEach(Ox.makeObject.apply(null, arguments), function(v, k) { + that[0].style[k] = v; + }); + ret = this; + } + return ret; + }, html: function(str) { var ret; if (Ox.isUndefined(str)) { @@ -1159,6 +1312,10 @@ Ox.element = function(str) { ret = this; } return ret; + }, + mousedown: function(fn) { + this[0].onmousedown = fn; + return this; } } }; @@ -1370,7 +1527,7 @@ Encoding functions */ // relies on dom, but shorter than using this: // http://www.w3.org/TR/html5/named-character-references.html - return Ox.element('div').html(str)[0].childNodes[0].nodeValue; + return Ox.element('
').html(str)[0].childNodes[0].nodeValue; //return $('
').html(str)[0].childNodes[0].nodeValue; }; @@ -2203,7 +2360,7 @@ Ox.parseHTML = (function() { // close extra opening (and remove extra closing) tags // return $('
').html(html).html(); // fixme: this converts '"' to '"' - return Ox.element('div').html(html).html(); + return Ox.element('
').html(html).html(); } }()); @@ -2461,6 +2618,7 @@ Ox.pad = function(str, len, pad, pos) { Ox.repeat = function(str, num) { /* + fixme: make this work for arrays, like in python >>> Ox.repeat(1, 3) "111" >>> Ox.repeat("foo", 3) diff --git a/source/js/OxUI.js b/source/js/OxUI.js deleted file mode 100644 index c6f1f1fc..00000000 --- a/source/js/OxUI.js +++ /dev/null @@ -1,534 +0,0 @@ -// vim: et:ts=4:sw=4:sts=4:ft=js - -/* -OxUI Loader - -Provides function Ox.UI([options], callback) that fires when - OxUI.css, Ox.js und jquery.js have loaded - all images have loaded - the document is ready -*/ - -(function() { - - var files = ['css/OxUI.css', 'js/Ox.js', 'js/jquery.js'], - path = Array.prototype.slice.apply( - document.getElementsByTagName('script') - ).filter(function(element) { - return /OxUI\.js$/.test(element.src); - })[0].src.replace('js/OxUI.js', ''), - documentReady = false, - documentReadyCallbacks = [], - head = document.getElementsByTagName('head')[0], - logs = [], - oxUICallback = function() {}, - oxUIFunction = function(options, callback) { - var key; - oxUICallback = arguments.length == 2 ? callback : options; - if (arguments.length == 2) { - for (key in oxUIOptions) { - oxUIOptions[key] = options[key] || oxUIOptions[key]; - } - } - }, - oxUIOptions = { - app: false, - display: 'none', // 'icon', 'console' or 'none' - theme: 'classic' // 'classic' or 'modern - }; - - files.forEach(function(file, i) { - files[i] = { - ready: isIncluded(file), - src: file - }; - }); - - Ox = typeof Ox != 'undefined' ? Ox : function() {}; - Ox.UI = oxUIFunction; - - log('Loading essential scripts and stylesheets...') - waitForDocument(); - waitForFiles(); - - files.forEach(function(file) { - var element, - isCSS = isFileType(file.src, 'css'); - if (!file.ready) { - element = document.createElement(isCSS ? 'link' : 'script'); - element[isCSS ? 'href' : 'src'] = path + file.src; - element.type = isCSS ? 'text/css' : 'text/javascript'; - if (isCSS) { - element.rel = 'stylesheet'; - waitForCSS(); - } else { - element.onload = onload; - } - head.appendChild(element); - } - function onload() { - file.ready = true; - log(file.src.split('/').pop() + ' loaded.') - if (file.src == 'js/Ox.js') { - Ox.UI = oxUIFunction; - } - waitForFiles(); - } - function waitForCSS() { - try { - element.sheet.cssRule; - onload(); - } catch(e) { - setTimeout(waitForCSS, 25); - } - } - }); - - function getElement(str) { - // Generic HTML Element Object (mimics jQuery) - return { - 0: str[0] == '<' ? document.createElement(str.substr(1, str.length - 2)) : - str[0] == '.' ? document.getElementsByClassName(str.substr(1))[0] : - str[0] == '#' ? document.getElementById(str.substr(1)) : - document.getElementsByTagName(str)[0], - addClass: function(str) { - this[0].className += (this[0].className ? ' ' : '') + str; - return this; - }, - append: function(element) { - this[0].appendChild(element[0]); - return this; - }, - appendTo: function(element) { - element[0].appendChild(this[0]); - return this; - }, - attr: function(obj) { - for (var key in obj) { - this[0].setAttribute(key, obj[key]); - } - return this; - }, - css: function(obj) { - for (var key in obj) { - this[0].style[key] = obj[key]; - } - return this; - }, - html: function(str) { - this[0].innerHTML = str; - return this; - }, - mousedown: function(fn) { - this[0].onmousedown = fn; - return this; - } - }; - } - - function isFileType(src, type) { - return new RegExp('\.' + type + '$').test(src); - } - - function isIncluded(src) { - var isCSS = isFileType(src); - return Array.prototype.slice.apply( - document.getElementsByTagName(isCSS ? 'link' : 'script') - ).map(function(element) { - return element[isCSS ? 'href' : 'src'] == path + src; - }).reduce(function(prev, curr) { - return prev || curr; - }, false); - } - - function log(str) { - var date = new Date(), - element = getElement('.console'), - str = [ - date.getHours(), date.getMinutes(), date.getSeconds() - ].map(function(num) { - return pad(num, 2) - }).join(':') + '.' + pad(date.getTime() % 1000, 3) + ' ' + str; - logs.push(str); - if (element[0]) { - logs.forEach(function(str) { - getElement('
') - .css({ - height: '16px', - fontFamily: [ - 'Menlo', 'Monaco', - 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', - 'Consolas', 'Lucida Console' - ].join(', '), - fontSize: '12px', - color: 'rgb(' + ( - oxUIOptions.theme == 'classic' ? '16, 16, 16' : '240, 240 240' - ) + ')' - }) - .html(str) - .appendTo(element); - element[0].scrollTop = 1000000; - }); - logs = []; - } - function pad(num, len) { - var str = num.toString(); - while (str.length < len) { - str = '0' + str; - } - return str; - } - console.log(str); - } - - function waitForDocument() { - document.addEventListener('DOMContentLoaded', onload, false); - function onload() { - log('Document ready.') - document.removeEventListener('DOMContentLoaded', onload, false); - documentReady = true; - bootOxUI(); - } - } - - function waitForFiles() { - files.map(function(file) { - return file.ready; - }).reduce(function(pre, cur) { - return pre && cur; - }) && loadOxUI(); - } - - function bootOxUI() { - - // runs when the document is ready - - var body, css, div, - browsers = [ - {name: 'Chrome', url: 'http://www.google.com/chrome/', version: 10}, - {name: 'Firefox', url: 'http://www.mozilla.org/firefox/', version: 4}, - {name: 'Safari', url: 'http://www.apple.com/safari/', version: 5} - ] - - if (oxUIOptions.display != 'none') { - body = getElement('body'); - css = { - position: 'absolute', - left: 0, - top: 0, - right: 0, - bottom: 0, - margin: 'auto', - MozUserSelect: 'none', - WebkitUserSelect: 'none' - }; - div = getElement('
') - .addClass(oxUIOptions.display == 'console' ? 'console' : '') - .css({ - position: 'absolute', - left: 0, - top: 0, - right: 0, - bottom: 0, - padding: '4px', - background: 'rgb(' + ( - oxUIOptions.theme == 'classic' ? '240, 240, 240' : '16, 16, 16') - + ')', - opacity: 1, - overflow: oxUIOptions.display == 'console' ? 'auto' : 'hidden', - zIndex: 1000 - }) - .appendTo(body); - } - - checkBrowser() ? start() : stop(); - - function checkBrowser() { - var i, isSupported = false; - for (i in browsers) { - var browser = browsers[i], - version; - if (navigator.userAgent.indexOf(browser.name) > -1) { - if (new RegExp(( - browser.name == 'Safari' ? 'Version' : browser.name - ) + '\\/(\\d+)\\.')(navigator.userAgent)[1] >= browser.version) { - isSupported = true; - break; - } - } - } - return isSupported; - } - - function start() { - var image, src; - if (oxUIOptions.display == 'console') { - log('Loading additional scripts and images...') - } else if (oxUIOptions.display == 'icon') { - image = new Image(), - src = path + 'svg/ox.ui.' + oxUIOptions.theme + '/symbolLoading.svg'; - image.onload = function() { - getElement('') - .attr({ - src: src, - }) - .css(css) - .css({ - width: '32px', - height: '32px' - }) - .mousedown(function(e) { - e.preventDefault() - }) - .appendTo(div); - }; - image.src = src; - } - } - - function stop() { - var counter = 0, - message = 'Browser not supported, use ' + browsers.map(function(browser, i) { - return browser.name + ( - i == browsers.length - 1 ? '.' : - i == browsers.length - 2 ? ' or' : ',' - ); - }).join(' '); - if (oxUIOptions.display == 'none') { - throw new Error(message); - } else { - div.addClass('error'); - if (oxUIOptions.display == 'console') { - log(message); - log = function() {}; - } else { - userAgents.forEach(function(userAgent) { - var image = new Image(); - userAgent.src = path + 'png/ox.ui/browser' + userAgent.name + '128.png'; - image.onload = function() { - ++counter == userAgents.length && showImages(); - } - image.src = userAgent.src; - }); - } - } - function showImages() { - var box = getElement('
') - .css(css) - .css({ - width: (userAgents.length * 72) + 'px', - height: '72px' - }) - .appendTo(div); - userAgents.forEach(function(userAgent, i) { - var link = getElement('') - .attr({ - href: userAgent.url, - title: userAgent.name - }) - .css({ - position: 'absolute', - left: (i * 72) + 'px', - width: '72px', - height: '72px', - }) - .appendTo(box); - getElement('') - .attr({ - src: userAgent.src - }) - .css(css) - .css({ - width: '64px', - height: '64px', - border: 0, - cursor: 'pointer' - }) - .mousedown(function(e) { - e.preventDefault(); - }) - .appendTo(link); - }); - } - } - - } - - function loadOxUI() { - - // runs when css and js files have loaded - - documentReady && initDocument(); - - $.getJSON(path + 'json/OxUI.json', function(data) { - - var $head = $('head'), - promises = Ox.UI.$window ? [] : [waitForDocument()]; - - log('OxUI.json loaded.') - - // fixme: find a better way to not wait for flags - data = data.filter(function(image) { - return !Ox.startsWith(image, 'svg/ox.map/'); - }); - data.forEach(function(src) { - promises.push(loadFile(src)); - }); - - $.when.apply(null, promises) - .done(function() { - var $div, error = $('.error').length; - if (!error && !oxUIOptions.app) { - $div = $('div'); - $('img').remove(); - $div.animate({ - opacity: 0 - }, 1000, function() { - $div.remove(); - }); - } - oxUICallback(); - }) - .fail(function() { - throw new Error('File not found.'); - }); - - function loadFile(src) { - var dfd = new $.Deferred(), - isJS = isFileType(src, 'js'), - element = isJS ? document.createElement('script') : new Image(); - element.onload = function() { - log(src.split('/').pop() + ' loaded.'); - dfd.resolve(); - } - element.src = path + src; - if (isJS) { - element.type = 'text/javascript'; - head.appendChild(element) - } else { - // need to keep a reference to keep image in cache - Ox.UI.IMAGE_CACHE.push(src); - } - return dfd.promise(); - } - - function waitForDocument() { - var dfd = new $.Deferred(); - $(function() { - initDocument(); - dfd.resolve(); - }); - return dfd.promise(); - } - - }); - - function initDocument() { - Ox.UI.$body = $('body'); - Ox.UI.$document = $(document); - Ox.UI.$head = $('head'); - Ox.UI.$window = $(window); - Ox.UI.$body.addClass('OxTheme' + Ox.toTitleCase(oxUIOptions.theme)); - documentReadyCallbacks.forEach(function(callback) { - callback(); - }); - } - - Ox.UI.ready = function(callback) { - if (!Ox.UI.$window) { - documentReadyCallbacks.push(callback); - } else { - callback(); - } - }; - - Ox.UI.elements = {}; - Ox.UI.DEFAULT_THEME = 'classic'; // fixme: needed? - Ox.UI.DIMENSIONS = { - horizontal: ['width', 'height'], - vertical: ['height', 'width'] - }; - Ox.UI.EDGES = { - horizontal: ['left', 'right', 'top', 'bottom'], - vertical: ['top', 'bottom', 'left', 'right'] - }; - Ox.UI.getImagePath = function(filename) { - // fixme: not the best idea to do this here - if (filename == 'symbolPlay.svg') { - filename = 'symbolRight.svg'; - } - return Ox.UI.PATH + filename.split('.').pop() + - '/ox.ui.' + Ox.Theme() + '/' + filename; - }; - Ox.UI.IMAGE_CACHE = []; - Ox.UI.PATH = $('script[src*="OxUI.js"]') - .attr('src').replace('js/OxUI.js', ''); - Ox.UI.SCROLLBAR_SIZE = $.browser.mozilla ? 16 : 12; - // fixme: the follwing should be deprecated - Ox.UI.getBarSize = function(size) { - var sizes = { - small: 20, - medium: 24, - large: 28 - }; - return sizes[size]; - }; - Ox.UI.symbols = { - alt: '\u2325', - apple: '\uF8FF', - arrow_down: '\u2193', - arrow_left: '\u2190', - arrow_right: '\u2192', - arrow_up: '\u2191', - backspace: '\u232B', - backup: '\u2707', - ballot: '\u2717', - black_star: '\u2605', - burn: '\u2622', - caps_lock: '\u21EA', - check: '\u2713', - //clear: '\u2327', - clear: '\u00D7', - click: '\uF803', - close: '\u2715', - command: '\u2318', - control: '\u2303', - cut: '\u2702', - 'delete': '\u2326', - diamond: '\u25C6', - edit: '\uF802', - eject: '\u23CF', - escape: '\u238B', - end: '\u2198', - enter: '\u2324', - fly: '\u2708', - gear: '\u2699', - home: '\u2196', - info: '\u24D8', - navigate: '\u2388', - option: '\u2387', - page_up: '\u21DE', - page_down: '\u21DF', - redo: '\u21BA', - 'return': '\u21A9', - //select: '\u21D5', - select: '\u25BE', - shift: '\u21E7', - sound: '\u266B', - space: '\u2423', - tab: '\u21E5', - trash: '\u267A', - triangle_down: '\u25BC', - triangle_left: '\u25C0', - triangle_right: '\u25BA', - triangle_up: '\u25B2', - undo: '\u21BB', - voltage: '\u26A1', - warning: '\u26A0', - white_star: '\u2606' - }; - - } - -}()); - diff --git a/source/js/jquery-1.5.min.js b/source/js/jquery-1.5.min.js deleted file mode 100644 index 9144b8ae..00000000 --- a/source/js/jquery-1.5.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Jan 31 08:31:29 2011 -0500 - */ -(function(a,b){function b$(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function bX(a){if(!bR[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bR[a]=c}return bR[a]}function bW(a,b){var c={};d.each(bV.concat.apply([],bV.slice(0,b)),function(){c[this]=a});return c}function bJ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f=a.converters,g,h=e.length,i,j=e[0],k,l,m,n,o;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(q,"`").replace(r,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,p,q=[],r=[],s=d._data(this,u);typeof s==="function"&&(s=s.events);if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,p=f.handleObj.origHandler.apply(f.elem,arguments);if(p===!1||a.isPropagationStopped()){c=f.level,p===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,b,c){c[0].type=a;return d.event.handle.apply(b,c)}function w(){return!0}function v(){return!1}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");e.type="text/javascript",d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?(g=Array(c),d.each(b,function(a,b){d.when(b).then(function(b){g[a]=arguments.length>1?E.call(arguments,0):b,--c||e.resolveWith(f,g)},e.reject)})):e!==a&&e.resolve(a);return f},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return a.jQuery=a.$=d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option"));if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:b.getElementsByTagName("input")[0].value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,_scriptEval:null,noCloneEvent:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},g.disabled=!0,d.support.optDisabled=!h.disabled,d.support.scriptEval=function(){if(d.support._scriptEval===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();e.type="text/javascript";try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(d.support._scriptEval=!0,delete a[f]):d.support._scriptEval=!1,b.removeChild(e),b=e=f=null}return d.support._scriptEval};try{delete b.test}catch(i){d.support.deleteExpando=!1}b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function j(){d.support.noCloneEvent=!1,b.detachEvent("onclick",j)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var k=c.createDocumentFragment();k.appendChild(b.firstChild),d.support.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var l=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=l("submit"),d.support.changeBubbles=l("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!d.isEmptyObject(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={}),typeof c==="object"&&(f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c)),i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,i=g?b[d.expando]:d.expando;if(!h[i])return;if(c){var j=e?h[i][f]:h[i];if(j){delete j[c];if(!d.isEmptyObject(j))return}}if(e){delete h[i][f];if(!d.isEmptyObject(h[i]))return}var k=h[i][f];d.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},h[i][f]=k):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,j=c.type==="select-one";if(f<0)return null;for(var k=j?f:0,l=j?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=j.test(c);if(c==="selected"&&!d.support.optSelected){var n=a.parentNode;n&&(n.selectedIndex,n.parentNode&&n.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&k.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:l.test(a.nodeName)||m.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var o=/\.(.*)$/,p=/^(?:textarea|input|select)$/i,q=/\./g,r=/ /g,s=/[^\w\s.|`]/g,t=function(a){return a.replace(s,"\\$&")},u="events";d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a);if(f===!1)f=v;else if(!f)return;var h,i;f.handler&&(h=f,f=h.handler),f.guid||(f.guid=d.guid++);var j=d._data(c);if(!j)return;var k=j[u],l=j.handle;typeof k==="function"?(l=k.handle,k=k.events):k||(c.nodeType||(j[u]=j=function(){}),j.events=k={}),l||(j.handle=l=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(l.elem,arguments):b}),l.elem=c,e=e.split(" ");var m,n=0,o;while(m=e[n++]){i=h?d.extend({},h):{handler:f,data:g},m.indexOf(".")>-1?(o=m.split("."),m=o.shift(),i.namespace=o.slice(0).sort().join(".")):(o=[],i.namespace=""),i.type=m,i.guid||(i.guid=f.guid);var p=k[m],q=d.event.special[m]||{};if(!p){p=k[m]=[];if(!q.setup||q.setup.call(c,g,o,l)===!1)c.addEventListener?c.addEventListener(m,l,!1):c.attachEvent&&c.attachEvent("on"+m,l)}q.add&&(q.add.call(c,i),i.handler.guid||(i.handler.guid=f.guid)),p.push(i),d.event.global[m]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),w=s&&s[u];if(!s||!w)return;typeof w==="function"&&(s=w,w=w.events),c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in w)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),t).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=w[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=e.nodeType?d._data(e,"handle"):(d._data(e,u)||{}).handle;h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(o,""),n=d.nodeName(l,"a")&&m==="click",p=d.event.special[m]||{};if((!p._default||p._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,u),typeof i==="function"&&(i=i.events),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(p.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f){a.type="change",a.liveFired=b;return d.event.trigger(a,arguments[1],c)}}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;if(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")return B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")return B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return p.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return p.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function s(a,b,c,d,e,f){for(var g=0,h=d.length;g0){k=j;break}}j=j[a]}d[g]=k}}}function r(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0;[0,0].sort(function(){h=!1;return 0});var i=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var l,m,o,p,q,r,s,u,v=!0,w=i.isXML(d),x=[],y=b;do{a.exec(""),l=a.exec(y);if(l){y=l[3],x.push(l[1]);if(l[2]){p=l[3];break}}}while(l);if(x.length>1&&k.exec(b))if(x.length===2&&j.relative[x[0]])m=t(x[0]+x[1],d);else{m=j.relative[x[0]]?[d]:i(x.shift(),d);while(x.length)b=x.shift(),j.relative[b]&&(b+=x.shift()),m=t(b,m)}else{!g&&x.length>1&&d.nodeType===9&&!w&&j.match.ID.test(x[0])&&!j.match.ID.test(x[x.length-1])&&(q=i.find(x.shift(),d,w),d=q.expr?i.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:n(g)}:i.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),m=q.expr?i.filter(q.expr,q.set):q.set,x.length>0?o=n(m):v=!1;while(x.length)r=x.pop(),s=r,j.relative[r]?s=x.pop():r="",s==null&&(s=d),j.relative[r](o,s,w)}else o=x=[]}o||(o=m),o||i.error(r||b);if(f.call(o)==="[object Array]")if(v)if(d&&d.nodeType===1)for(u=0;o[u]!=null;u++)o[u]&&(o[u]===!0||o[u].nodeType===1&&i.contains(d,o[u]))&&e.push(m[u]);else for(u=0;o[u]!=null;u++)o[u]&&o[u].nodeType===1&&e.push(m[u]);else e.push.apply(e,o);else n(o,e);p&&(i(p,h,e,g),i.uniqueSort(e));return e};i.uniqueSort=function(a){if(p){g=h,a.sort(p);if(g)for(var b=1;b0},i.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=j.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!/\W/.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a,b){return a[1].toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||i.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&i.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(/\\/g,"");!f&&j.attrMap[g]&&(a[1]=j.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(/\\/g,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=i(b[3],null,null,c);else{var g=i.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(j.match.POS.test(b[0])||j.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!i(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=j.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||i.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,k=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=j.attrHandle[c]?j.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=j.setFilters[e];if(f)return f(a,c,b,d)}}},k=j.match.POS,l=function(a,b){return"\\"+(b-0+1)};for(var m in j.match)j.match[m]=new RegExp(j.match[m].source+/(?![^\[]*\])(?![^\(]*\))/.source),j.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+j.match[m].source.replace(/\\(\d+)/g,l));var n=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(o){n=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(j.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},j.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(j.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(j.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=i,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){i=function(b,e,f,g){e=e||c;if(!g&&!i.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return n(e.getElementsByTagName(b),f);if(h[2]&&j.find.CLASS&&e.getElementsByClassName)return n(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return n([e.body],f);if(h&&h[3]){var k=e.getElementById(h[3]);if(!k||!k.parentNode)return n([],f);if(k.id===h[3])return n([k],f)}try{return n(e.querySelectorAll(b),f)}catch(l){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e.getAttribute("id"),o=m||d,p=e.parentNode,q=/^\s*[+~]/.test(b);m?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),q&&p&&(e=e.parentNode);try{if(!q||p)return n(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(r){}finally{m||e.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)i[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(i.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!i.isXML(a))try{if(d||!j.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return i(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;j.order.splice(1,0,"CLASS"),j.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?i.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?i.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains=function(){return!1},i.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var t=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=j.match.PSEUDO.exec(a))e+=c[0],a=a.replace(j.match.PSEUDO,"");a=j.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!0:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if(!d.support.noCloneEvent&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");for(h=0;f[h];++h)$(f[h],g[h]);$(a,e)}if(b){Z(a,e);if(c&&"getElementsByTagName"in a){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");if(f.length)for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var ba=/alpha\([^)]*\)/i,bb=/opacity=([^)]*)/,bc=/-([a-z])/ig,bd=/([A-Z])/g,be=/^-?\d+(?:px)?$/i,bf=/^-?\d/,bg={position:"absolute",visibility:"hidden",display:"block"},bh=["Left","Right"],bi=["Top","Bottom"],bj,bk,bl,bm=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bj(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bj)return bj(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bc,bm)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bn(a,b,e):d.swap(a,bg,function(){f=bn(a,b,e)});if(f<=0){f=bj(a,b,b),f==="0px"&&bl&&(f=bl(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!be.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=ba.test(f)?f.replace(ba,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bk=function(a,c,e){var f,g,h;e=e.replace(bd,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bl=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!be.test(d)&&bf.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bj=bk||bl,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bo=/%20/g,bp=/\[\]$/,bq=/\r?\n/g,br=/#.*$/,bs=/^(.*?):\s*(.*?)\r?$/mg,bt=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bu=/^(?:GET|HEAD)$/,bv=/^\/\//,bw=/\?/,bx=/)<[^<]*)*<\/script>/gi,by=/^(?:select|textarea)/i,bz=/\s+/,bA=/([?&])_=[^&]*/,bB=/^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/,bC=d.fn.load,bD={},bE={};d.fn.extend({load:function(a,b,c){if(typeof a!=="string"&&bC)return bC.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}var g="GET";b&&(d.isFunction(b)?(c=b,b=null):typeof b==="object"&&(b=d.param(b,d.ajaxSettings.traditional),g="POST"));var h=this;d.ajax({url:a,type:g,dataType:"html",data:b,complete:function(a,b,e){e=a.responseText,a.isResolved()&&(a.done(function(a){e=a}),h.html(f?d("
").append(e.replace(bx,"")).find(f):e)),c&&h.each(c,[e,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||by.test(this.nodeName)||bt.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bq,"\r\n")}}):{name:b.name,value:c.replace(bq,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,b){d[b]=function(a,c,e,f){d.isFunction(c)&&(f=f||e,e=c,c=null);return d.ajax({type:b,url:a,data:c,success:e,dataType:f})}}),d.extend({getScript:function(a,b){return d.get(a,null,b,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a){d.extend(!0,d.ajaxSettings,a),a.context&&(d.ajaxSettings.context=a.context)},ajaxSettings:{url:location.href,global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bF(bD),ajaxTransport:bF(bE),ajax:function(a,e){function w(a,c,e,l){if(t!==2){t=2,p&&clearTimeout(p),o=b,m=l||"",v.readyState=a?4:0;var n,q,r,s=e?bI(f,v,e):b,u,w;if(a>=200&&a<300||a===304){if(f.ifModified){if(u=v.getResponseHeader("Last-Modified"))d.lastModified[f.url]=u;if(w=v.getResponseHeader("Etag"))d.etag[f.url]=w}if(a===304)c="notmodified",n=!0;else try{q=bJ(f,s),c="success",n=!0}catch(x){c="parsererror",r=x}}else r=c,a&&(c="error",a<0&&(a=0));v.status=a,v.statusText=c,n?i.resolveWith(g,[q,c,v]):i.rejectWith(g,[v,c,r]),v.statusCode(k),k=b,f.global&&h.trigger("ajax"+(n?"Success":"Error"),[v,f,n?q:r]),j.resolveWith(g,[v,c]),f.global&&(h.trigger("ajaxComplete",[v,f]),--d.active||d.event.trigger("ajaxStop"))}}typeof e!=="object"&&(e=a,a=b),e=e||{};var f=d.extend(!0,{},d.ajaxSettings,e),g=(f.context=("context"in e?e:d.ajaxSettings).context)||f,h=g===f?d.event:d(g),i=d.Deferred(),j=d._Deferred(),k=f.statusCode||{},l={},m,n,o,p,q=c.location,r=q.protocol||"http:",s,t=0,u,v={readyState:0,setRequestHeader:function(a,b){t===0&&(l[a.toLowerCase()]=b);return this},getAllResponseHeaders:function(){return t===2?m:null},getResponseHeader:function(a){var b;if(t===2){if(!n){n={};while(b=bs.exec(m))n[b[1].toLowerCase()]=b[2]}b=n[a.toLowerCase()]}return b||null},abort:function(a){a=a||"abort",o&&o.abort(a),w(0,a);return this}};i.promise(v),v.success=v.done,v.error=v.fail,v.complete=j.done,v.statusCode=function(a){if(a){var b;if(t<2)for(b in a)k[b]=[k[b],a[b]];else b=a[v.status],v.then(b,b)}return this},f.url=(""+(a||f.url)).replace(br,"").replace(bv,r+"//"),f.dataTypes=d.trim(f.dataType||"*").toLowerCase().split(bz),f.crossDomain||(s=bB.exec(f.url.toLowerCase()),f.crossDomain=s&&(s[1]!=r||s[2]!=q.hostname||(s[3]||(s[1]==="http:"?80:443))!=(q.port||(r==="http:"?80:443)))),f.data&&f.processData&&typeof f.data!=="string"&&(f.data=d.param(f.data,f.traditional)),bG(bD,f,e,v),f.type=f.type.toUpperCase(),f.hasContent=!bu.test(f.type),f.global&&d.active++===0&&d.event.trigger("ajaxStart");if(!f.hasContent){f.data&&(f.url+=(bw.test(f.url)?"&":"?")+f.data);if(f.cache===!1){var x=d.now(),y=f.url.replace(bA,"$1_="+x);f.url=y+(y===f.url?(bw.test(f.url)?"&":"?")+"_="+x:"")}}if(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)l["content-type"]=f.contentType;f.ifModified&&(d.lastModified[f.url]&&(l["if-modified-since"]=d.lastModified[f.url]),d.etag[f.url]&&(l["if-none-match"]=d.etag[f.url])),l.accept=f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(f.dataTypes[0]!=="*"?", */*; q=0.01":""):f.accepts["*"];for(u in f.headers)l[u.toLowerCase()]=f.headers[u];if(!f.beforeSend||f.beforeSend.call(g,v,f)!==!1&&t!==2){for(u in {success:1,error:1,complete:1})v[u](f[u]);o=bG(bE,f,e,v);if(o){t=v.readyState=1,f.global&&h.trigger("ajaxSend",[v,f]),f.async&&f.timeout>0&&(p=setTimeout(function(){v.abort("timeout")},f.timeout));try{o.send(l,w)}catch(z){status<2?w(-1,z):d.error(z)}}else w(-1,"No Transport")}else w(0,"abort"),v=!1;return v},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery)d.each(a,function(){f(this.name,this.value)});else for(var g in a)bH(g,a[g],c,f);return e.join("&").replace(bo,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bK=d.now(),bL=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bK++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){e=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bL.test(b.url)||e&&bL.test(b.data))){var f,g=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h=a[g],i=b.url,j=b.data,k="$1"+g+"$2";b.jsonp!==!1&&(i=i.replace(bL,k),b.url===i&&(e&&(j=j.replace(bL,k)),b.data===j&&(i+=(/\?/.test(i)?"&":"?")+b.jsonp+"="+g))),b.url=i,b.data=j,a[g]=function(a){f=[a]},b.complete=[function(){a[g]=h;if(h)f&&d.isFunction(h)&&a[g](f[0]);else try{delete a[g]}catch(b){}},b.complete],b.converters["script json"]=function(){f||d.error(g+" was not called");return f[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript"},contents:{script:/javascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bM=d.now(),bN={},bO,bP;d.ajaxSettings.xhr=a.ActiveXObject?function(){if(a.location.protocol!=="file:")try{return new a.XMLHttpRequest}catch(b){}try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(c){}}:function(){return new a.XMLHttpRequest};try{bP=d.ajaxSettings.xhr()}catch(bQ){}d.support.ajax=!!bP,d.support.cors=bP&&"withCredentials"in bP,bP=b,d.support.ajax&&d.ajaxTransport(function(b){if(!b.crossDomain||d.support.cors){var c;return{send:function(e,f){bO||(bO=1,d(a).bind("unload",function(){d.each(bN,function(a,b){b.onreadystatechange&&b.onreadystatechange(1)})}));var g=b.xhr(),h;b.username?g.open(b.type,b.url,b.async,b.username,b.password):g.open(b.type,b.url,b.async),(!b.crossDomain||b.hasContent)&&!e["x-requested-with"]&&(e["x-requested-with"]="XMLHttpRequest");try{d.each(e,function(a,b){g.setRequestHeader(a,b)})}catch(i){}g.send(b.hasContent&&b.data||null),c=function(a,e){if(c&&(e||g.readyState===4)){c=0,h&&(g.onreadystatechange=d.noop,delete bN[h]);if(e)g.readyState!==4&&g.abort();else{var i=g.status,j,k=g.getAllResponseHeaders(),l={},m=g.responseXML;m&&m.documentElement&&(l.xml=m),l.text=g.responseText;try{j=g.statusText}catch(n){j=""}i=i===0?!b.crossDomain||j?k?304:0:302:i==1223?204:i,f(i,j,l,k)}}},b.async&&g.readyState!==4?(h=bM++,bN[h]=g,g.onreadystatechange=c):c()},abort:function(){c&&c(0,1)}}}});var bR={},bS=/^(?:toggle|show|hide)$/,bT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,bU,bV=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(bW("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:bW("show",1),slideUp:bW("hide",1),slideToggle:bW("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(d.css(this.elem,this.prop));return a||0},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||"px",this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!bU&&(bU=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=bZ.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!bZ.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=b$(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=b$(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}})})(window); diff --git a/source/js/jquery-1.5.js b/source/js/jquery/jquery-1.5.2.js old mode 100644 new mode 100755 similarity index 89% rename from source/js/jquery-1.5.js rename to source/js/jquery/jquery-1.5.2.js index 5c99a8d4..af9b7dab --- a/source/js/jquery-1.5.js +++ b/source/js/jquery/jquery-1.5.2.js @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.5 + * jQuery JavaScript Library v1.5.2 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,7 +11,7 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Mon Jan 31 08:31:29 2011 -0500 + * Date: Thu Mar 31 15:28:23 2011 -0400 */ (function( window, undefined ) { @@ -69,15 +69,9 @@ var jQuery = function( selector, context ) { // For matching the engine and version of the browser browserMatch, - // Has the ready events already been bound? - readyBound = false, - // The deferred used on DOM ready readyList, - // Promise methods - promiseMethods = "then done fail isResolved isRejected promise".split( " " ), - // The ready event handler DOMContentLoaded, @@ -202,7 +196,7 @@ jQuery.fn = jQuery.prototype = { selector: "", // The current version of jQuery being used - jquery: "1.5", + jquery: "1.5.2", // The default length of a jQuery object is 0 length: 0, @@ -313,7 +307,7 @@ jQuery.fn = jQuery.prototype = { jQuery.fn.init.prototype = jQuery.fn; jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, + var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, @@ -427,11 +421,11 @@ jQuery.extend({ }, bindReady: function() { - if ( readyBound ) { + if ( readyList ) { return; } - readyBound = true; + readyList = jQuery._Deferred(); // Catch cases where $(document).ready() is called after the // browser event has already occurred. @@ -585,10 +579,8 @@ jQuery.extend({ if ( data && rnotwhite.test(data) ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; + var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement, + script = document.createElement( "script" ); if ( jQuery.support.scriptEval() ) { script.appendChild( document.createTextNode( data ) ); @@ -813,155 +805,6 @@ jQuery.extend({ return (new Date()).getTime(); }, - // Create a simple deferred (one callbacks list) - _Deferred: function() { - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( jQuery.isFunction( this.promise ) ? this.promise() : this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }, - - // Full fledged deferred (two callbacks list) - Deferred: function( func ) { - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj , i /* internal */ ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[ i ] ] = deferred[ promiseMethods[ i ] ]; - } - return obj; - } - } ); - // Make sure only one callback list will be used - deferred.then( failDeferred.cancel, deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }, - - // Deferred helper - when: function( object ) { - var args = arguments, - length = args.length, - deferred = length <= 1 && object && jQuery.isFunction( object.promise ) ? - object : - jQuery.Deferred(), - promise = deferred.promise(), - resolveArray; - - if ( length > 1 ) { - resolveArray = new Array( length ); - jQuery.each( args, function( index, element ) { - jQuery.when( element ).then( function( value ) { - resolveArray[ index ] = arguments.length > 1 ? slice.call( arguments, 0 ) : value; - if( ! --length ) { - deferred.resolveWith( promise, resolveArray ); - } - }, deferred.reject ); - } ); - } else if ( deferred !== object ) { - deferred.resolve( object ); - } - return promise; - }, - // Use of jQuery.browser is frowned upon. // More details: http://docs.jquery.com/Utilities/jQuery.browser uaMatch: function( ua ) { @@ -1000,9 +843,6 @@ jQuery.extend({ browser: {} }); -// Create readyList deferred -readyList = jQuery._Deferred(); - // Populate the class2type map jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); @@ -1071,11 +911,183 @@ function doScrollCheck() { } // Expose jQuery to the global object -return (window.jQuery = window.$ = jQuery); +return jQuery; })(); +var // Promise methods + promiseMethods = "then done fail isResolved isRejected promise".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + // Create a simple deferred (one callbacks list) + _Deferred: function() { + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }, + + // Full fledged deferred (two callbacks list) + Deferred: function( func ) { + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + } ); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + } +}); + + + + (function() { jQuery.support = {}; @@ -1088,7 +1100,8 @@ return (window.jQuery = window.$ = jQuery); var all = div.getElementsByTagName("*"), a = div.getElementsByTagName("a")[0], select = document.createElement("select"), - opt = select.appendChild( document.createElement("option") ); + opt = select.appendChild( document.createElement("option") ), + input = div.getElementsByTagName("input")[0]; // Can't get basic test support if ( !all || !all.length || !a ) { @@ -1127,7 +1140,7 @@ return (window.jQuery = window.$ = jQuery); // Make sure that if no value is specified for a checkbox // that it defaults to "on". // (WebKit defaults to "" instead) - checkOn: div.getElementsByTagName("input")[0].value === "on", + checkOn: input.value === "on", // Make sure that a selected-by-default option has a working selected property. // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) @@ -1137,48 +1150,50 @@ return (window.jQuery = window.$ = jQuery); deleteExpando: true, optDisabled: false, checkClone: false, - _scriptEval: null, noCloneEvent: true, + noCloneChecked: true, boxModel: null, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, - reliableHiddenOffsets: true + reliableHiddenOffsets: true, + reliableMarginRight: true }; + input.checked = true; + jQuery.support.noCloneChecked = input.cloneNode( true ).checked; + // Make sure that the options inside disabled selects aren't marked as disabled // (WebKit marks them as diabled) select.disabled = true; jQuery.support.optDisabled = !opt.disabled; + var _scriptEval = null; jQuery.support.scriptEval = function() { - if ( jQuery.support._scriptEval === null ) { + if ( _scriptEval === null ) { var root = document.documentElement, script = document.createElement("script"), id = "script" + jQuery.now(); - script.type = "text/javascript"; + // Make sure that the execution of code works by injecting a script + // tag with appendChild/createTextNode + // (IE doesn't support this, fails, and uses .text instead) try { script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); } catch(e) {} root.insertBefore( script, root.firstChild ); - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) if ( window[ id ] ) { - jQuery.support._scriptEval = true; + _scriptEval = true; delete window[ id ]; } else { - jQuery.support._scriptEval = false; + _scriptEval = false; } root.removeChild( script ); - // release memory in IE - root = script = id = null; } - return jQuery.support._scriptEval; + return _scriptEval; }; // Test to see if it's possible to delete an expando from an element @@ -1190,7 +1205,7 @@ return (window.jQuery = window.$ = jQuery); jQuery.support.deleteExpando = false; } - if ( div.attachEvent && div.fireEvent ) { + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { div.attachEvent("onclick", function click() { // Cloning a node shouldn't copy over any // bound event handlers (IE does this) @@ -1260,6 +1275,17 @@ return (window.jQuery = window.$ = jQuery); jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0; div.innerHTML = ""; + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + div.style.width = "1px"; + div.style.marginRight = "0"; + jQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0; + } + body.removeChild( div ).style.display = "none"; div = tds = null; }); @@ -1283,8 +1309,6 @@ return (window.jQuery = window.$ = jQuery); el.setAttribute(eventName, "return;"); isSupported = typeof el[eventName] === "function"; } - el = null; - return isSupported; }; @@ -1321,7 +1345,7 @@ jQuery.extend({ hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !jQuery.isEmptyObject(elem); + return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data, pvt /* Internal Use Only */ ) { @@ -1361,11 +1385,18 @@ jQuery.extend({ if ( !cache[ id ] ) { cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache - if ( typeof name === "object" ) { + if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); } else { @@ -1427,7 +1458,7 @@ jQuery.extend({ // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed - if ( !jQuery.isEmptyObject(thisCache) ) { + if ( !isEmptyDataObject(thisCache) ) { return; } } @@ -1439,7 +1470,7 @@ jQuery.extend({ // Don't destroy the parent cache unless the internal data object // had been the only thing left in it - if ( !jQuery.isEmptyObject(cache[ id ]) ) { + if ( !isEmptyDataObject(cache[ id ]) ) { return; } } @@ -1460,6 +1491,13 @@ jQuery.extend({ // data if it existed if ( internalCache ) { cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + cache[ id ][ internalKey ] = internalCache; // Otherwise, we need to eliminate the expando on the node to avoid @@ -1588,6 +1626,19 @@ function dataAttr( elem, key, data ) { return data; } +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + @@ -1888,6 +1939,11 @@ jQuery.fn.extend({ } } + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + return values; } @@ -2081,8 +2137,7 @@ var rnamespaces = /\.(.*)$/, rescape = /[^\w\s.|`]/g, fcleanup = function( nm ) { return nm.replace(rescape, "\\$&"); - }, - eventKey = "events"; + }; /* * A number of helper functions used for managing events. @@ -2098,17 +2153,22 @@ jQuery.event = { return; } - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) { - elem = window; + // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6) + // Minor release fix for bug #8018 + try { + // For whatever reason, IE has trouble passing the window object + // around, causing it to be cloned in the process + if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) { + elem = window; + } } + catch ( e ) {} if ( handler === false ) { handler = returnFalse; } else if ( !handler ) { // Fixes bug #7229. Fix recommended by jdalton - return; + return; } var handleObjIn, handleObj; @@ -2132,31 +2192,18 @@ jQuery.event = { return; } - var events = elemData[ eventKey ], + var events = elemData.events, eventHandle = elemData.handle; - if ( typeof events === "function" ) { - // On plain objects events is a fn that holds the the data - // which prevents this data from being JSON serialized - // the function does not need to be called, it just contains the data - eventHandle = events.handle; - events = events.events; - - } else if ( !events ) { - if ( !elem.nodeType ) { - // On plain objects, create a fn that acts as the holder - // of the values to avoid JSON serialization of event data - elemData[ eventKey ] = elemData = function(){}; - } - + if ( !events ) { elemData.events = events = {}; } if ( !eventHandle ) { - elemData.handle = eventHandle = function() { + elemData.handle = eventHandle = function( e ) { // Handle the second event of a trigger and when // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && !jQuery.event.triggered ? + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined; }; @@ -2249,17 +2296,12 @@ jQuery.event = { var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData[ eventKey ]; + events = elemData && elemData.events; if ( !elemData || !events ) { return; } - if ( typeof events === "function" ) { - elemData = events; - events = events.events; - } - // types is actually an event object here if ( types && types.type ) { handler = types.handler; @@ -2359,10 +2401,7 @@ jQuery.event = { delete elemData.events; delete elemData.handle; - if ( typeof elemData === "function" ) { - jQuery.removeData( elem, eventKey, true ); - - } else if ( jQuery.isEmptyObject( elemData ) ) { + if ( jQuery.isEmptyObject( elemData ) ) { jQuery.removeData( elem, undefined, true ); } } @@ -2403,7 +2442,7 @@ jQuery.event = { // points to jQuery.expando var internalKey = jQuery.expando, internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[type] ) { + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { jQuery.event.trigger( event, data, internalCache.handle.elem ); } }); @@ -2429,9 +2468,7 @@ jQuery.event = { event.currentTarget = elem; // Trigger the event, it is assumed that "handle" is a function - var handle = elem.nodeType ? - jQuery._data( elem, "handle" ) : - (jQuery._data( elem, eventKey ) || {}).handle; + var handle = jQuery._data( elem, "handle" ); if ( handle ) { handle.apply( elem, data ); @@ -2473,7 +2510,7 @@ jQuery.event = { target[ "on" + targetType ] = null; } - jQuery.event.triggered = true; + jQuery.event.triggered = event.type; target[ targetType ](); } @@ -2484,7 +2521,7 @@ jQuery.event = { target[ "on" + targetType ] = old; } - jQuery.event.triggered = false; + jQuery.event.triggered = undefined; } } }, @@ -2509,11 +2546,7 @@ jQuery.event = { event.namespace = event.namespace || namespace_sort.join("."); - events = jQuery._data(this, eventKey); - - if ( typeof events === "function" ) { - events = events.events; - } + events = jQuery._data(this, "events"); handlers = (events || {})[ event.type ]; @@ -2680,7 +2713,7 @@ jQuery.Event = function( src ) { // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; // Event type @@ -2755,6 +2788,12 @@ var withinElement = function( event ) { // Firefox sometimes assigns relatedTarget a XUL element // which we cannot access the parentNode property of try { + + // Chrome does something similar, the parentNode property + // can be accessed but is null. + if ( parent && parent !== document && !parent.parentNode ) { + return; + } // Traverse up the tree while ( parent && parent !== this ) { parent = parent.parentNode; @@ -2805,8 +2844,7 @@ if ( !jQuery.support.submitBubbles ) { type = elem.type; if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - e.liveFired = undefined; - return trigger( "submit", this, arguments ); + trigger( "submit", this, arguments ); } }); @@ -2815,8 +2853,7 @@ if ( !jQuery.support.submitBubbles ) { type = elem.type; if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - e.liveFired = undefined; - return trigger( "submit", this, arguments ); + trigger( "submit", this, arguments ); } }); @@ -2879,7 +2916,7 @@ if ( !jQuery.support.changeBubbles ) { if ( data != null || val ) { e.type = "change"; e.liveFired = undefined; - return jQuery.event.trigger( e, arguments[1], elem ); + jQuery.event.trigger( e, arguments[1], elem ); } }; @@ -2893,7 +2930,7 @@ if ( !jQuery.support.changeBubbles ) { var elem = e.target, type = elem.type; if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { - return testChange.call( this, e ); + testChange.call( this, e ); } }, @@ -2905,7 +2942,7 @@ if ( !jQuery.support.changeBubbles ) { if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || type === "select-multiple" ) { - return testChange.call( this, e ); + testChange.call( this, e ); } }, @@ -2944,26 +2981,50 @@ if ( !jQuery.support.changeBubbles ) { } function trigger( type, elem, args ) { - args[0].type = type; - return jQuery.event.handle.apply( elem, args ); + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } } // Create "bubbling" focus and blur events if ( document.addEventListener ) { jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + jQuery.event.special[ fix ] = { setup: function() { - this.addEventListener( orig, handler, true ); - }, - teardown: function() { - this.removeEventListener( orig, handler, true ); + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } } }; - function handler( e ) { - e = jQuery.event.fix( e ); + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); e.type = fix; - return jQuery.event.handle.call( this, e ); + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } } }); } @@ -3148,11 +3209,7 @@ function liveHandler( event ) { var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, elems = [], selectors = [], - events = jQuery._data( this, eventKey ); - - if ( typeof events === "function" ) { - events = events.events; - } + events = jQuery._data( this, "events" ); // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { @@ -3186,7 +3243,7 @@ function liveHandler( event ) { for ( j = 0; j < live.length; j++ ) { handleObj = live[j]; - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) { + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { elem = close.elem; related = null; @@ -3269,7 +3326,9 @@ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[ done = 0, toString = Object.prototype.toString, hasDuplicate = false, - baseHasDuplicate = true; + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; // Here we check if the JavaScript engine is using some sort of // optimization where it does not always call our comparision @@ -3468,7 +3527,7 @@ Sizzle.find = function( expr, context, isXML ) { match.splice( 1, 1 ); if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); + match[1] = (match[1] || "").replace( rBackslash, "" ); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { @@ -3607,13 +3666,16 @@ var Expr = Sizzle.selectors = { attrHandle: { href: function( elem ) { return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); } }, relative: { "+": function(checkSet, part){ var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test( part ), + isTag = isPartStr && !rNonWord.test( part ), isPartStrNotTag = isPartStr && !isTag; if ( isTag ) { @@ -3641,7 +3703,7 @@ var Expr = Sizzle.selectors = { i = 0, l = checkSet.length; - if ( isPartStr && !/\W/.test( part ) ) { + if ( isPartStr && !rNonWord.test( part ) ) { part = part.toLowerCase(); for ( ; i < l; i++ ) { @@ -3675,7 +3737,7 @@ var Expr = Sizzle.selectors = { doneName = done++, checkFn = dirCheck; - if ( typeof part === "string" && !/\W/.test(part) ) { + if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; @@ -3689,7 +3751,7 @@ var Expr = Sizzle.selectors = { doneName = done++, checkFn = dirCheck; - if ( typeof part === "string" && !/\W/.test( part ) ) { + if ( typeof part === "string" && !rNonWord.test( part ) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; @@ -3732,7 +3794,7 @@ var Expr = Sizzle.selectors = { }, preFilter: { CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace(/\\/g, "") + " "; + match = " " + match[1].replace( rBackslash, "" ) + " "; if ( isXML ) { return match; @@ -3755,11 +3817,11 @@ var Expr = Sizzle.selectors = { }, ID: function( match ) { - return match[1].replace(/\\/g, ""); + return match[1].replace( rBackslash, "" ); }, TAG: function( match, curLoop ) { - return match[1].toLowerCase(); + return match[1].replace( rBackslash, "" ).toLowerCase(); }, CHILD: function( match ) { @@ -3790,14 +3852,14 @@ var Expr = Sizzle.selectors = { }, ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace(/\\/g, ""); + var name = match[1] = match[1].replace( rBackslash, "" ); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace(/\\/g, ""); + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; @@ -3852,7 +3914,9 @@ var Expr = Sizzle.selectors = { selected: function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly - elem.parentNode.selectedIndex; + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } return elem.selected === true; }, @@ -3874,8 +3938,12 @@ var Expr = Sizzle.selectors = { }, text: function( elem ) { - return "text" === elem.type; + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return "text" === type && ( attr === type || attr === null ); }, + radio: function( elem ) { return "radio" === elem.type; }, @@ -4407,7 +4475,8 @@ if ( document.querySelectorAll ) { // and working up from there (Thanks to Andrew Dupont for the technique) // IE 8 doesn't work on object elements } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var old = context.getAttribute( "id" ), + var oldContext = context, + old = context.getAttribute( "id" ), nid = old || id, hasParent = context.parentNode, relativeHierarchySelector = /^\s*[+~]/.test( query ); @@ -4429,7 +4498,7 @@ if ( document.querySelectorAll ) { } catch(pseudoError) { } finally { if ( !old ) { - context.removeAttribute( "id" ); + oldContext.removeAttribute( "id" ); } } } @@ -4449,19 +4518,23 @@ if ( document.querySelectorAll ) { (function(){ var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector, - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + Sizzle.matchesSelector = function( node, expr ) { // Make sure that attribute selectors are quoted expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); @@ -4469,7 +4542,15 @@ if ( document.querySelectorAll ) { if ( !Sizzle.isXML( node ) ) { try { if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - return matches.call( node, expr ); + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } } } catch(e) {} } @@ -4845,11 +4926,11 @@ jQuery.each({ }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); if ( !runtil.test( name ) ) { selector = until; @@ -4959,7 +5040,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rtbody = /", "" ], @@ -5111,7 +5192,7 @@ jQuery.fn.extend({ } if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); + elem.parentNode.removeChild( elem ); } } } @@ -5136,7 +5217,7 @@ jQuery.fn.extend({ }, clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? true : dataAndEvents; + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function () { @@ -5213,7 +5294,9 @@ jQuery.fn.extend({ } }); } else { - return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ); + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; } }, @@ -5305,8 +5388,8 @@ function cloneCopyEvent( src, dest ) { } var internalKey = jQuery.expando, - oldData = jQuery.data( src ), - curData = jQuery.data( dest, oldData ); + oldData = jQuery.data( src ), + curData = jQuery.data( dest, oldData ); // Switch to use the internal data object, if it exists, for the next // stage of data copying @@ -5320,7 +5403,7 @@ function cloneCopyEvent( src, dest ) { for ( var type in events ) { for ( var i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ], events[ type ][ i ].data ); + jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data ); } } } @@ -5441,6 +5524,18 @@ jQuery.each({ }; }); +function getAll( elem ) { + if ( "getElementsByTagName" in elem ) { + return elem.getElementsByTagName( "*" ); + + } else if ( "querySelectorAll" in elem ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + jQuery.extend({ clone: function( elem, dataAndEvents, deepDataAndEvents ) { var clone = elem.cloneNode(true), @@ -5448,17 +5543,20 @@ jQuery.extend({ destElements, i; - if ( !jQuery.support.noCloneEvent && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { // IE copies events bound via attachEvent when using cloneNode. // Calling detachEvent on the clone will also remove the events // from the original. In order to get around this, we use some // proprietary methods to clear the events. Thanks to MooTools // guys for this hotness. + cloneFixAttributes( elem, clone ); + // Using Sizzle here is crazy slow, so we use getElementsByTagName // instead - srcElements = elem.getElementsByTagName("*"); - destElements = clone.getElementsByTagName("*"); + srcElements = getAll( elem ); + destElements = getAll( clone ); // Weird iteration because IE will replace the length property // with an element if you are cloning the body and one of the @@ -5466,30 +5564,25 @@ jQuery.extend({ for ( i = 0; srcElements[i]; ++i ) { cloneFixAttributes( srcElements[i], destElements[i] ); } - - cloneFixAttributes( elem, clone ); } // Copy the events from the original to the clone if ( dataAndEvents ) { - cloneCopyEvent( elem, clone ); - if ( deepDataAndEvents && "getElementsByTagName" in elem ) { + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); - srcElements = elem.getElementsByTagName("*"); - destElements = clone.getElementsByTagName("*"); - - if ( srcElements.length ) { - for ( i = 0; srcElements[i]; ++i ) { - cloneCopyEvent( srcElements[i], destElements[i] ); - } + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); } } } + // Return the cloned set return clone; - }, +}, clean: function( elems, context, fragment, scripts ) { context = context || document; @@ -5650,7 +5743,8 @@ function evalScript( i, elem ) { var ralpha = /alpha\([^)]*\)/i, ropacity = /opacity=([^)]*)/, rdashAlpha = /-([a-z])/ig, - rupper = /([A-Z])/g, + // fixed for IE9, see #8346 + rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, rnum = /^-?\d/, @@ -5887,6 +5981,28 @@ if ( !jQuery.support.opacity ) { }; } +jQuery(function() { + // This hook cannot be added until DOM ready because the support test + // for it is not run until after DOM ready + if ( !jQuery.support.reliableMarginRight ) { + jQuery.cssHooks.marginRight = { + get: function( elem, computed ) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + var ret; + jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + ret = curCSS( elem, "margin-right", "marginRight" ); + } else { + ret = elem.style.marginRight; + } + }); + return ret; + } + }; + } +}); + if ( document.defaultView && document.defaultView.getComputedStyle ) { getComputedStyle = function( elem, newName, name ) { var ret, defaultView, computedStyle; @@ -5910,7 +6026,7 @@ if ( document.defaultView && document.defaultView.getComputedStyle ) { if ( document.documentElement.currentStyle ) { currentStyle = function( elem, name ) { - var left, + var left, ret = elem.currentStyle && elem.currentStyle[ name ], rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ], style = elem.style; @@ -5988,8 +6104,10 @@ var r20 = /%20/g, rbracket = /\[\]$/, rCRLF = /\r?\n/g, rhash = /#.*$/, - rheaders = /^(.*?):\s*(.*?)\r?$/mg, // IE leaves an \r character at EOL + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, rquery = /\?/, @@ -5997,7 +6115,11 @@ var r20 = /%20/g, rselectTextarea = /^(?:select|textarea)/i, rspacesAjax = /\s+/, rts = /([?&])_=[^&]*/, - rurl = /^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/, + rucHeaders = /(^|\-)([a-z])/g, + rucHeadersFunc = function( _, $1, $2 ) { + return $1 + $2.toUpperCase(); + }, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, // Keep a copy of the old load method _load = jQuery.fn.load, @@ -6018,7 +6140,28 @@ var r20 = /%20/g, * 2) the catchall symbol "*" can be used * 3) selection will start with transport dataType and THEN go to "*" if needed */ - transports = {}; + transports = {}, + + // Document location + ajaxLocation, + + // Document location segments + ajaxLocParts; + +// #8138, IE may throw an exception when accessing +// a field from document.location if document.domain has been set +try { + ajaxLocation = document.location.href; +} catch( e ) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement( "a" ); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; +} + +// Segment location into parts +ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -6057,7 +6200,7 @@ function addToPrefiltersOrTransports( structure ) { } //Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jXHR, +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, dataType /* internal */, inspected /* internal */ ) { dataType = dataType || options.dataTypes[ 0 ]; @@ -6072,16 +6215,16 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jXH selection; for(; i < length && ( executeOnly || !selection ); i++ ) { - selection = list[ i ]( options, originalOptions, jXHR ); + selection = list[ i ]( options, originalOptions, jqXHR ); // If we got redirected to another dataType - // we try there if not done already + // we try there if executing only and not done already if ( typeof selection === "string" ) { - if ( inspected[ selection ] ) { + if ( !executeOnly || inspected[ selection ] ) { selection = undefined; } else { options.dataTypes.unshift( selection ); selection = inspectPrefiltersOrTransports( - structure, options, originalOptions, jXHR, selection, inspected ); + structure, options, originalOptions, jqXHR, selection, inspected ); } } } @@ -6089,7 +6232,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jXH // we try the catchall dataType if not done already if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { selection = inspectPrefiltersOrTransports( - structure, options, originalOptions, jXHR, "*", inspected ); + structure, options, originalOptions, jqXHR, "*", inspected ); } // unnecessary when only executing (prefilters) // but it'll be ignored by the caller in that case @@ -6121,7 +6264,7 @@ jQuery.fn.extend({ if ( jQuery.isFunction( params ) ) { // We assume that it's the callback callback = params; - params = null; + params = undefined; // Otherwise, build a param string } else if ( typeof params === "object" ) { @@ -6139,14 +6282,14 @@ jQuery.fn.extend({ dataType: "html", data: params, // Complete callback (responseText is used internally) - complete: function( jXHR, status, responseText ) { - // Store the response as specified by the jXHR object - responseText = jXHR.responseText; + complete: function( jqXHR, status, responseText ) { + // Store the response as specified by the jqXHR object + responseText = jqXHR.responseText; // If successful, inject the HTML into all the matched elements - if ( jXHR.isResolved() ) { + if ( jqXHR.isResolved() ) { // #4825: Get the actual response in case // a dataFilter is present in ajaxSettings - jXHR.done(function( r ) { + jqXHR.done(function( r ) { responseText = r; }); // See if a selector was specified @@ -6165,7 +6308,7 @@ jQuery.fn.extend({ } if ( callback ) { - self.each( callback, [ responseText, status, jXHR ] ); + self.each( callback, [ responseText, status, jqXHR ] ); } } }); @@ -6213,7 +6356,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { if ( jQuery.isFunction( data ) ) { type = type || callback; callback = data; - data = null; + data = undefined; } return jQuery.ajax({ @@ -6229,22 +6372,39 @@ jQuery.each( [ "get", "post" ], function( i, method ) { jQuery.extend({ getScript: function( url, callback ) { - return jQuery.get( url, null, callback, "script" ); + return jQuery.get( url, undefined, callback, "script" ); }, getJSON: function( url, data, callback ) { return jQuery.get( url, data, callback, "json" ); }, - ajaxSetup: function( settings ) { - jQuery.extend( true, jQuery.ajaxSettings, settings ); - if ( settings.context ) { - jQuery.ajaxSettings.context = settings.context; + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function ( target, settings ) { + if ( !settings ) { + // Only one parameter, we extend ajaxSettings + settings = target; + target = jQuery.extend( true, jQuery.ajaxSettings, settings ); + } else { + // target was provided, we extend into it + jQuery.extend( true, target, jQuery.ajaxSettings, settings ); } + // Flatten fields we don't want deep extended + for( var field in { context: 1, url: 1 } ) { + if ( field in settings ) { + target[ field ] = settings[ field ]; + } else if( field in jQuery.ajaxSettings ) { + target[ field ] = jQuery.ajaxSettings[ field ]; + } + } + return target; }, ajaxSettings: { - url: location.href, + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), global: true, type: "GET", contentType: "application/x-www-form-urlencoded", @@ -6259,7 +6419,6 @@ jQuery.extend({ cache: null, traditional: false, headers: {}, - crossDomain: null, */ accepts: { @@ -6306,9 +6465,8 @@ jQuery.extend({ // Main method ajax: function( url, options ) { - // If options is not an object, - // we simulate pre-1.5 signature - if ( typeof options !== "object" ) { + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { options = url; url = undefined; } @@ -6317,19 +6475,22 @@ jQuery.extend({ options = options || {}; var // Create the final options object - s = jQuery.extend( true, {}, jQuery.ajaxSettings, options ), - // Callbacks contexts - // We force the original context if it exists - // or take it from jQuery.ajaxSettings otherwise - // (plain objects used as context get extended) - callbackContext = - ( s.context = ( "context" in options ? options : jQuery.ajaxSettings ).context ) || s, - globalEventContext = callbackContext === s ? jQuery.event : jQuery( callbackContext ), + s = jQuery.ajaxSetup( {}, options ), + // Callbacks context + callbackContext = s.context || s, + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? + jQuery( callbackContext ) : jQuery.event, // Deferreds deferred = jQuery.Deferred(), completeDeferred = jQuery._Deferred(), // Status-dependent callbacks statusCode = s.statusCode || {}, + // ifModified key + ifModifiedKey, // Headers (they are sent all at once) requestHeaders = {}, // Response headers @@ -6340,22 +6501,22 @@ jQuery.extend({ // timeout handle timeoutTimer, // Cross-domain detection vars - loc = document.location, - protocol = loc.protocol || "http:", parts, - // The jXHR state + // The jqXHR state state = 0, + // To know if global events are to be dispatched + fireGlobals, // Loop variable i, // Fake xhr - jXHR = { + jqXHR = { readyState: 0, // Caches the header setRequestHeader: function( name, value ) { - if ( state === 0 ) { - requestHeaders[ name.toLowerCase() ] = value; + if ( !state ) { + requestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value; } return this; }, @@ -6377,7 +6538,15 @@ jQuery.extend({ } match = responseHeaders[ key.toLowerCase() ]; } - return match || null; + return match === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; }, // Cancel the request @@ -6394,7 +6563,7 @@ jQuery.extend({ // Callback for when everything is done // It is defined here because jslint complains if it is declared // at the end of the function (which would be more logical and readable) - function done( status, statusText, responses, headers) { + function done( status, statusText, responses, headers ) { // Called once if ( state === 2 ) { @@ -6410,19 +6579,19 @@ jQuery.extend({ } // Dereference transport for early garbage collection - // (no matter how long the jXHR object will be used) + // (no matter how long the jqXHR object will be used) transport = undefined; // Cache response headers responseHeadersString = headers || ""; // Set readyState - jXHR.readyState = status ? 4 : 0; + jqXHR.readyState = status ? 4 : 0; var isSuccess, success, error, - response = responses ? ajaxHandleResponses( s, jXHR, responses ) : undefined, + response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, lastModified, etag; @@ -6432,11 +6601,11 @@ jQuery.extend({ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { - if ( ( lastModified = jXHR.getResponseHeader( "Last-Modified" ) ) ) { - jQuery.lastModified[ s.url ] = lastModified; + if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) { + jQuery.lastModified[ ifModifiedKey ] = lastModified; } - if ( ( etag = jXHR.getResponseHeader( "Etag" ) ) ) { - jQuery.etag[ s.url ] = etag; + if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) { + jQuery.etag[ ifModifiedKey ] = etag; } } @@ -6463,7 +6632,7 @@ jQuery.extend({ // We extract error from statusText // then normalize statusText and status for non-aborts error = statusText; - if( status ) { + if( !statusText || status ) { statusText = "error"; if ( status < 0 ) { status = 0; @@ -6472,30 +6641,30 @@ jQuery.extend({ } // Set data for the fake xhr object - jXHR.status = status; - jXHR.statusText = statusText; + jqXHR.status = status; + jqXHR.statusText = statusText; // Success/Error if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jXHR ] ); + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); } else { - deferred.rejectWith( callbackContext, [ jXHR, statusText, error ] ); + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); } // Status-dependent callbacks - jXHR.statusCode( statusCode ); + jqXHR.statusCode( statusCode ); statusCode = undefined; - if ( s.global ) { + if ( fireGlobals ) { globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), - [ jXHR, s, isSuccess ? success : error ] ); + [ jqXHR, s, isSuccess ? success : error ] ); } // Complete - completeDeferred.resolveWith( callbackContext, [ jXHR, statusText ] ); + completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); - if ( s.global ) { - globalEventContext.trigger( "ajaxComplete", [ jXHR, s] ); + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] ); // Handle the global AJAX counter if ( !( --jQuery.active ) ) { jQuery.event.trigger( "ajaxStop" ); @@ -6504,13 +6673,13 @@ jQuery.extend({ } // Attach deferreds - deferred.promise( jXHR ); - jXHR.success = jXHR.done; - jXHR.error = jXHR.fail; - jXHR.complete = completeDeferred.done; + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.done; // Status-dependent callbacks - jXHR.statusCode = function( map ) { + jqXHR.statusCode = function( map ) { if ( map ) { var tmp; if ( state < 2 ) { @@ -6518,8 +6687,8 @@ jQuery.extend({ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; } } else { - tmp = map[ jXHR.status ]; - jXHR.then( tmp, tmp ); + tmp = map[ jqXHR.status ]; + jqXHR.then( tmp, tmp ); } } return this; @@ -6528,18 +6697,18 @@ jQuery.extend({ // Remove hash character (#7531: and string promotion) // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) // We also use the url parameter if available - s.url = ( "" + ( url || s.url ) ).replace( rhash, "" ).replace( rprotocol, protocol + "//" ); + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); // Extract dataTypes list s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); // Determine if a cross-domain request is in order - if ( !s.crossDomain ) { + if ( s.crossDomain == null ) { parts = rurl.exec( s.url.toLowerCase() ); s.crossDomain = !!( parts && - ( parts[ 1 ] != protocol || parts[ 2 ] != loc.hostname || + ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != - ( loc.port || ( protocol === "http:" ? 80 : 443 ) ) ) + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) ); } @@ -6549,7 +6718,15 @@ jQuery.extend({ } // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jXHR ); + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefiler, stop there + if ( state === 2 ) { + return false; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; // Uppercase the type s.type = s.type.toUpperCase(); @@ -6558,7 +6735,7 @@ jQuery.extend({ s.hasContent = !rnoContent.test( s.type ); // Watch for a new set of requests - if ( s.global && jQuery.active++ === 0 ) { + if ( fireGlobals && jQuery.active++ === 0 ) { jQuery.event.trigger( "ajaxStart" ); } @@ -6570,6 +6747,9 @@ jQuery.extend({ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; } + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + // Add anti-cache in url if needed if ( s.cache === false ) { @@ -6584,77 +6764,77 @@ jQuery.extend({ // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - requestHeaders[ "content-type" ] = s.contentType; + requestHeaders[ "Content-Type" ] = s.contentType; } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { - if ( jQuery.lastModified[ s.url ] ) { - requestHeaders[ "if-modified-since" ] = jQuery.lastModified[ s.url ]; + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ]; } - if ( jQuery.etag[ s.url ] ) { - requestHeaders[ "if-none-match" ] = jQuery.etag[ s.url ]; + if ( jQuery.etag[ ifModifiedKey ] ) { + requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ]; } } // Set the Accepts header for the server, depending on the dataType - requestHeaders.accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : s.accepts[ "*" ]; // Check for headers option for ( i in s.headers ) { - requestHeaders[ i.toLowerCase() ] = s.headers[ i ]; + jqXHR.setRequestHeader( i, s.headers[ i ] ); } // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jXHR, s ) === false || state === 2 ) ) { + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { // Abort if not done already - done( 0, "abort" ); - // Return false - jXHR = false; + jqXHR.abort(); + return false; + } + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); } else { - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jXHR[ i ]( s[ i ] ); + jqXHR.readyState = 1; + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = setTimeout( function(){ + jqXHR.abort( "timeout" ); + }, s.timeout ); } - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - // Set state as sending - state = jXHR.readyState = 1; - // Send global event - if ( s.global ) { - globalEventContext.trigger( "ajaxSend", [ jXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout( function(){ - jXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - transport.send( requestHeaders, done ); - } catch (e) { - // Propagate exception as error if not done - if ( status < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - jQuery.error( e ); - } + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( status < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + jQuery.error( e ); } } } - return jXHR; + + return jqXHR; }, // Serialize an array of form elements or a set of @@ -6673,7 +6853,7 @@ jQuery.extend({ } // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || a.jquery ) { + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); @@ -6720,9 +6900,9 @@ function buildParams( prefix, obj, traditional, add ) { // Serialize object item. } else { - jQuery.each( obj, function( k, v ) { - buildParams( prefix + "[" + k + "]", v, traditional, add ); - }); + for ( var name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } } } else { @@ -6749,7 +6929,7 @@ jQuery.extend({ * - finds the right dataType (mediates between content-type and expected dataType) * - returns the corresponding response */ -function ajaxHandleResponses( s, jXHR, responses ) { +function ajaxHandleResponses( s, jqXHR, responses ) { var contents = s.contents, dataTypes = s.dataTypes, @@ -6762,7 +6942,7 @@ function ajaxHandleResponses( s, jXHR, responses ) { // Fill responseXXX fields for( type in responseFields ) { if ( type in responses ) { - jXHR[ responseFields[type] ] = responses[ type ]; + jqXHR[ responseFields[type] ] = responses[ type ]; } } @@ -6770,7 +6950,7 @@ function ajaxHandleResponses( s, jXHR, responses ) { while( dataTypes[ 0 ] === "*" ) { dataTypes.shift(); if ( ct === undefined ) { - ct = jXHR.getResponseHeader( "content-type" ); + ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); } } @@ -6822,8 +7002,9 @@ function ajaxConvert( s, response ) { } var dataTypes = s.dataTypes, - converters = s.converters, + converters = {}, i, + key, length = dataTypes.length, tmp, // Current and previous dataTypes @@ -6840,6 +7021,16 @@ function ajaxConvert( s, response ) { // For each dataType in the chain for( i = 1; i < length; i++ ) { + // Create converters map + // with lowercased keys + if ( i === 1 ) { + for( key in s.converters ) { + if( typeof key === "string" ) { + converters[ key.toLowerCase() ] = s.converters[ key ]; + } + } + } + // Get the dataTypes prev = current; current = dataTypes[ i ]; @@ -6891,7 +7082,7 @@ function ajaxConvert( s, response ) { var jsc = jQuery.now(), - jsre = /(\=)\?(&|$)|()\?\?()/i; + jsre = /(\=)\?(&|$)|\?\?/i; // Default jsonp settings jQuery.ajaxSetup({ @@ -6902,9 +7093,9 @@ jQuery.ajaxSetup({ }); // Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, dataIsString /* internal */ ) { +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - dataIsString = ( typeof s.data === "string" ); + var dataIsString = ( typeof s.data === "string" ); if ( s.dataTypes[ 0 ] === "jsonp" || originalSettings.jsonpCallback || @@ -6918,7 +7109,15 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, dataIsString previous = window[ jsonpCallback ], url = s.url, data = s.data, - replace = "$1" + jsonpCallback + "$2"; + replace = "$1" + jsonpCallback + "$2", + cleanUp = function() { + // Set callback back to previous value + window[ jsonpCallback ] = previous; + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( previous ) ) { + window[ jsonpCallback ]( responseContainer[ 0 ] ); + } + }; if ( s.jsonp !== false ) { url = url.replace( jsre, replace ); @@ -6936,32 +7135,17 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, dataIsString s.url = url; s.data = data; + // Install callback window[ jsonpCallback ] = function( response ) { responseContainer = [ response ]; }; - s.complete = [ function() { - - // Set callback back to previous value - window[ jsonpCallback ] = previous; - - // Call if it was a function and we have a response - if ( previous) { - if ( responseContainer && jQuery.isFunction( previous ) ) { - window[ jsonpCallback ] ( responseContainer[ 0 ] ); - } - } else { - // else, more memory leak avoidance - try{ - delete window[ jsonpCallback ]; - } catch( e ) {} - } - - }, s.complete ]; + // Install cleanUp function + jqXHR.then( cleanUp, cleanUp ); // Use data converter to retrieve json after script execution s.converters["script json"] = function() { - if ( ! responseContainer ) { + if ( !responseContainer ) { jQuery.error( jsonpCallback + " was not called" ); } return responseContainer[ 0 ]; @@ -6981,10 +7165,10 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, dataIsString // Install script dataType jQuery.ajaxSetup({ accepts: { - script: "text/javascript, application/javascript" + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { - script: /javascript/ + script: /javascript|ecmascript/ }, converters: { "text script": function( text ) { @@ -7012,7 +7196,7 @@ jQuery.ajaxTransport( "script", function(s) { if ( s.crossDomain ) { var script, - head = document.getElementsByTagName( "head" )[ 0 ] || document.documentElement; + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; return { @@ -7067,18 +7251,36 @@ jQuery.ajaxTransport( "script", function(s) { -var // Next active xhr id +var // #5280: next active xhr id and list of active xhrs' callbacks xhrId = jQuery.now(), - - // active xhrs - xhrs = {}, - - // #5280: see below - xhrUnloadAbortInstalled, + xhrCallbacks, // XHR used to determine supports properties testXHR; +// #5280: Internet Explorer will keep connections alive if we don't abort on unload +function xhrOnUnloadAbort() { + jQuery( window ).unload(function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + }); +} + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch( e ) {} +} + // Create the request object // (This is still attached to ajaxSettings for backward compatibility) jQuery.ajaxSettings.xhr = window.ActiveXObject ? @@ -7089,27 +7291,13 @@ jQuery.ajaxSettings.xhr = window.ActiveXObject ? * we need a fallback. */ function() { - if ( window.location.protocol !== "file:" ) { - try { - return new window.XMLHttpRequest(); - } catch( xhrError ) {} - } - - try { - return new window.ActiveXObject("Microsoft.XMLHTTP"); - } catch( activeError ) {} + return !this.isLocal && createStandardXHR() || createActiveXHR(); } : // For all other browsers, use the standard XMLHttpRequest object - function() { - return new window.XMLHttpRequest(); - }; + createStandardXHR; // Test if we can create an xhr object -try { - testXHR = jQuery.ajaxSettings.xhr(); -} catch( xhrCreationException ) {} - -//Does this browser support XHR requests? +testXHR = jQuery.ajaxSettings.xhr(); jQuery.support.ajax = !!testXHR; // Does this browser support crossDomain XHR requests @@ -7130,26 +7318,10 @@ if ( jQuery.support.ajax ) { return { send: function( headers, complete ) { - // #5280: we need to abort on unload or IE will keep connections alive - if ( !xhrUnloadAbortInstalled ) { - - xhrUnloadAbortInstalled = 1; - - jQuery(window).bind( "unload", function() { - - // Abort all pending requests - jQuery.each( xhrs, function( _, xhr ) { - if ( xhr.onreadystatechange ) { - xhr.onreadystatechange( 1 ); - } - } ); - - } ); - } - // Get a new xhr var xhr = s.xhr(), - handle; + handle, + i; // Open the socket // Passing null username, generates a login popup on Opera (#2865) @@ -7159,19 +7331,32 @@ if ( jQuery.support.ajax ) { xhr.open( s.type, s.url, s.async ); } - // Requested-With header - // Not set for crossDomain requests with no content - // (see why at http://trac.dojotoolkit.org/ticket/9486) - // Won't change header if already provided - if ( !( s.crossDomain && !s.hasContent ) && !headers["x-requested-with"] ) { - headers[ "x-requested-with" ] = "XMLHttpRequest"; + // Apply custom fields if provided + if ( s.xhrFields ) { + for ( i in s.xhrFields ) { + xhr[ i ] = s.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( s.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( s.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !s.crossDomain && !headers["X-Requested-With"] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; } // Need an extra try/catch for cross domain requests in Firefox 3 try { - jQuery.each( headers, function( key, value ) { - xhr.setRequestHeader( key, value ); - } ); + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } } catch( _ ) {} // Do send the request @@ -7182,74 +7367,78 @@ if ( jQuery.support.ajax ) { // Listener callback = function( _, isAbort ) { - // Was never called and is aborted or complete - if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + var status, + statusText, + responseHeaders, + responses, + xml; - // Only called once - callback = 0; + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occured + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { - // Do not keep as active anymore - if ( handle ) { - xhr.onreadystatechange = jQuery.noop; - delete xhrs[ handle ]; - } + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { - // If it's an abort - if ( isAbort ) { - // Abort it manually if needed - if ( xhr.readyState !== 4 ) { - xhr.abort(); + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + delete xhrCallbacks[ handle ]; } - } else { - // Get info - var status = xhr.status, - statusText, - responseHeaders = xhr.getAllResponseHeaders(), - responses = {}, + + // If it's an abort + if ( isAbort ) { + // Abort it manually if needed + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; xml = xhr.responseXML; - // Construct response list - if ( xml && xml.documentElement /* #4958 */ ) { - responses.xml = xml; + // Construct response list + if ( xml && xml.documentElement /* #4958 */ ) { + responses.xml = xml; + } + responses.text = xhr.responseText; + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch( e ) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && s.isLocal && !s.crossDomain ) { + status = responses.text ? 200 : 404; + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } } - responses.text = xhr.responseText; - - // Firefox throws an exception when accessing - // statusText for faulty cross-domain requests - try { - statusText = xhr.statusText; - } catch( e ) { - // We normalize with Webkit giving an empty statusText - statusText = ""; - } - - // Filter status for non standard behaviours - status = - // Opera returns 0 when it should be 304 - // Webkit returns 0 for failing cross-domain no matter the real status - status === 0 ? - ( - // Webkit, Firefox: filter out faulty cross-domain requests - !s.crossDomain || statusText ? - ( - // Opera: filter out real aborts #6060 - responseHeaders ? - 304 : - 0 - ) : - // We assume 302 but could be anything cross-domain related - 302 - ) : - ( - // IE sometimes returns 1223 when it should be 204 (see #1450) - status == 1223 ? - 204 : - status - ); - - // Call complete - complete( status, statusText, responses, responseHeaders ); } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); } }; @@ -7259,10 +7448,15 @@ if ( jQuery.support.ajax ) { if ( !s.async || xhr.readyState === 4 ) { callback(); } else { - // Add to list of active xhrs + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + xhrOnUnloadAbort(); + } + // Add to list of active xhrs callbacks handle = xhrId++; - xhrs[ handle ] = xhr; - xhr.onreadystatechange = callback; + xhr.onreadystatechange = xhrCallbacks[ handle ] = callback; } }, @@ -7464,11 +7658,11 @@ jQuery.fn.extend({ } else { var parts = rfxnum.exec(val), - start = e.cur() || 0; + start = e.cur(); if ( parts ) { var end = parseFloat( parts[2] ), - unit = parts[3] || "px"; + unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" ) { @@ -7615,8 +7809,12 @@ jQuery.fx.prototype = { return this.elem[ this.prop ]; } - var r = parseFloat( jQuery.css( this.elem, this.prop ) ); - return r || 0; + var parsed, + r = jQuery.css( this.elem, this.prop ); + // Empty strings, null, undefined and "auto" are converted to 0, + // complex values such as "rotate(1rad)" are returned as is, + // simple values such as "10px" are parsed to Float. + return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed; }, // Start an animation from one number to another @@ -7627,7 +7825,7 @@ jQuery.fx.prototype = { this.startTime = jQuery.now(); this.start = from; this.end = to; - this.unit = unit || this.unit || "px"; + this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" ); this.now = this.start; this.pos = this.state = 0; @@ -7840,8 +8038,8 @@ if ( "getBoundingClientRect" in document.documentElement ) { win = getWindow(doc), clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, - scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ), - scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft), + scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, + scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, top = box.top + scrollTop - clientTop, left = box.left + scrollLeft - clientLeft; @@ -7954,7 +8152,6 @@ jQuery.offset = { this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop); body.removeChild( container ); - body = container = innerDiv = checkDiv = table = td = null; jQuery.offset.initialize = jQuery.noop; }, @@ -7984,10 +8181,10 @@ jQuery.offset = { curOffset = curElem.offset(), curCSSTop = jQuery.css( elem, "top" ), curCSSLeft = jQuery.css( elem, "left" ), - calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1), + calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1, props = {}, curPosition = {}, curTop, curLeft; - // need to be able to calculate position if either top or left is auto and position is absolute + // need to be able to calculate position if either top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); } @@ -8078,7 +8275,7 @@ jQuery.each( ["Left", "Top"], function( i, name ) { if ( win ) { win.scrollTo( !i ? val : jQuery(win).scrollLeft(), - i ? val : jQuery(win).scrollTop() + i ? val : jQuery(win).scrollTop() ); } else { @@ -8173,4 +8370,5 @@ jQuery.each([ "Height", "Width" ], function( i, name ) { }); -})(window); +window.jQuery = window.$ = jQuery; +})(window); \ No newline at end of file diff --git a/source/js/jquery/jquery-1.5.2.min.js b/source/js/jquery/jquery-1.5.2.min.js new file mode 100755 index 00000000..d5636d70 --- /dev/null +++ b/source/js/jquery/jquery-1.5.2.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.5.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Mar 31 15:28:23 2011 -0400 + */ +(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/source/js/jquery.mousewheel.js b/source/js/jquery/jquery.mousewheel.js similarity index 100% rename from source/js/jquery.mousewheel.js rename to source/js/jquery/jquery.mousewheel.js diff --git a/build/png/ox.ui.classic/scrollbarHorizontalDecrement.png b/source/png/Ox.UI.classic/scrollbarHorizontalDecrement.png similarity index 100% rename from build/png/ox.ui.classic/scrollbarHorizontalDecrement.png rename to source/png/Ox.UI.classic/scrollbarHorizontalDecrement.png diff --git a/build/png/ox.ui.classic/scrollbarHorizontalIncrement.png b/source/png/Ox.UI.classic/scrollbarHorizontalIncrement.png similarity index 100% rename from build/png/ox.ui.classic/scrollbarHorizontalIncrement.png rename to source/png/Ox.UI.classic/scrollbarHorizontalIncrement.png diff --git a/build/png/ox.ui.classic/scrollbarVerticalDecrement.png b/source/png/Ox.UI.classic/scrollbarVerticalDecrement.png similarity index 100% rename from build/png/ox.ui.classic/scrollbarVerticalDecrement.png rename to source/png/Ox.UI.classic/scrollbarVerticalDecrement.png diff --git a/build/png/ox.ui.classic/scrollbarVerticalIncrement.png b/source/png/Ox.UI.classic/scrollbarVerticalIncrement.png similarity index 100% rename from build/png/ox.ui.classic/scrollbarVerticalIncrement.png rename to source/png/Ox.UI.classic/scrollbarVerticalIncrement.png diff --git a/build/png/ox.ui.modern/scrollbarHorizontalDecrement.png b/source/png/Ox.UI.modern/scrollbarHorizontalDecrement.png similarity index 100% rename from build/png/ox.ui.modern/scrollbarHorizontalDecrement.png rename to source/png/Ox.UI.modern/scrollbarHorizontalDecrement.png diff --git a/build/png/ox.ui.modern/scrollbarHorizontalIncrement.png b/source/png/Ox.UI.modern/scrollbarHorizontalIncrement.png similarity index 100% rename from build/png/ox.ui.modern/scrollbarHorizontalIncrement.png rename to source/png/Ox.UI.modern/scrollbarHorizontalIncrement.png diff --git a/build/png/ox.ui.modern/scrollbarVerticalDecrement.png b/source/png/Ox.UI.modern/scrollbarVerticalDecrement.png similarity index 100% rename from build/png/ox.ui.modern/scrollbarVerticalDecrement.png rename to source/png/Ox.UI.modern/scrollbarVerticalDecrement.png diff --git a/build/png/ox.ui.modern/scrollbarVerticalIncrement.png b/source/png/Ox.UI.modern/scrollbarVerticalIncrement.png similarity index 100% rename from build/png/ox.ui.modern/scrollbarVerticalIncrement.png rename to source/png/Ox.UI.modern/scrollbarVerticalIncrement.png diff --git a/build/png/ox.ui/browserChrome128.png b/source/png/Ox.UI/browserChrome128.png similarity index 100% rename from build/png/ox.ui/browserChrome128.png rename to source/png/Ox.UI/browserChrome128.png diff --git a/build/png/ox.ui/browserFirefox128.png b/source/png/Ox.UI/browserFirefox128.png similarity index 100% rename from build/png/ox.ui/browserFirefox128.png rename to source/png/Ox.UI/browserFirefox128.png diff --git a/build/png/ox.ui/browserInternetExplorer128.png b/source/png/Ox.UI/browserInternetExplorer128.png similarity index 100% rename from build/png/ox.ui/browserInternetExplorer128.png rename to source/png/Ox.UI/browserInternetExplorer128.png diff --git a/build/png/ox.ui/browserOpera128.png b/source/png/Ox.UI/browserOpera128.png similarity index 100% rename from build/png/ox.ui/browserOpera128.png rename to source/png/Ox.UI/browserOpera128.png diff --git a/build/png/ox.ui/browserSafari128.png b/source/png/Ox.UI/browserSafari128.png similarity index 100% rename from build/png/ox.ui/browserSafari128.png rename to source/png/Ox.UI/browserSafari128.png diff --git a/build/png/ox.ui/icon16.png b/source/png/Ox.UI/icon16.png similarity index 100% rename from build/png/ox.ui/icon16.png rename to source/png/Ox.UI/icon16.png diff --git a/build/png/ox.map/marker.png b/source/png/Ox.UI/marker.png similarity index 100% rename from build/png/ox.map/marker.png rename to source/png/Ox.UI/marker.png diff --git a/build/png/ox.map/markerEditing.png b/source/png/Ox.UI/markerEditing.png similarity index 100% rename from build/png/ox.map/markerEditing.png rename to source/png/Ox.UI/markerEditing.png diff --git a/build/png/ox.map/markerResize.png b/source/png/Ox.UI/markerResize.png similarity index 100% rename from build/png/ox.map/markerResize.png rename to source/png/Ox.UI/markerResize.png diff --git a/build/png/ox.map/markerResult.png b/source/png/Ox.UI/markerResult.png similarity index 100% rename from build/png/ox.map/markerResult.png rename to source/png/Ox.UI/markerResult.png diff --git a/build/png/ox.map/markerResultEditing.png b/source/png/Ox.UI/markerResultEditing.png similarity index 100% rename from build/png/ox.map/markerResultEditing.png rename to source/png/Ox.UI/markerResultEditing.png diff --git a/build/png/ox.map/markerResultSelected.png b/source/png/Ox.UI/markerResultSelected.png similarity index 100% rename from build/png/ox.map/markerResultSelected.png rename to source/png/Ox.UI/markerResultSelected.png diff --git a/build/png/ox.map/markerSelected.png b/source/png/Ox.UI/markerSelected.png similarity index 100% rename from build/png/ox.map/markerSelected.png rename to source/png/Ox.UI/markerSelected.png diff --git a/build/png/ox.ui/transparent.png b/source/png/Ox.UI/transparent.png similarity index 100% rename from build/png/ox.ui/transparent.png rename to source/png/Ox.UI/transparent.png diff --git a/build/png/ox.ui/videoMarkerCut.png b/source/png/Ox.UI/videoMarkerCut.png similarity index 100% rename from build/png/ox.ui/videoMarkerCut.png rename to source/png/Ox.UI/videoMarkerCut.png diff --git a/build/png/ox.ui/videoMarkerIn.png b/source/png/Ox.UI/videoMarkerIn.png similarity index 100% rename from build/png/ox.ui/videoMarkerIn.png rename to source/png/Ox.UI/videoMarkerIn.png diff --git a/build/png/ox.ui/videoMarkerInBottom.png b/source/png/Ox.UI/videoMarkerInBottom.png similarity index 100% rename from build/png/ox.ui/videoMarkerInBottom.png rename to source/png/Ox.UI/videoMarkerInBottom.png diff --git a/build/png/ox.ui/videoMarkerInTop.png b/source/png/Ox.UI/videoMarkerInTop.png similarity index 100% rename from build/png/ox.ui/videoMarkerInTop.png rename to source/png/Ox.UI/videoMarkerInTop.png diff --git a/build/png/ox.ui/videoMarkerOut.png b/source/png/Ox.UI/videoMarkerOut.png similarity index 100% rename from build/png/ox.ui/videoMarkerOut.png rename to source/png/Ox.UI/videoMarkerOut.png diff --git a/build/png/ox.ui/videoMarkerOutBottom.png b/source/png/Ox.UI/videoMarkerOutBottom.png similarity index 100% rename from build/png/ox.ui/videoMarkerOutBottom.png rename to source/png/Ox.UI/videoMarkerOutBottom.png diff --git a/build/png/ox.ui/videoMarkerOutTop.png b/source/png/Ox.UI/videoMarkerOutTop.png similarity index 100% rename from build/png/ox.ui/videoMarkerOutTop.png rename to source/png/Ox.UI/videoMarkerOutTop.png diff --git a/build/png/ox.ui/videoMarkerPlay.png b/source/png/Ox.UI/videoMarkerPlay.png similarity index 100% rename from build/png/ox.ui/videoMarkerPlay.png rename to source/png/Ox.UI/videoMarkerPlay.png diff --git a/build/svg/ox.map/AC.svg b/source/svg/Ox.Geo/AC.svg similarity index 100% rename from build/svg/ox.map/AC.svg rename to source/svg/Ox.Geo/AC.svg diff --git a/build/svg/ox.map/AD.svg b/source/svg/Ox.Geo/AD.svg similarity index 100% rename from build/svg/ox.map/AD.svg rename to source/svg/Ox.Geo/AD.svg diff --git a/build/svg/ox.map/AE.svg b/source/svg/Ox.Geo/AE.svg similarity index 100% rename from build/svg/ox.map/AE.svg rename to source/svg/Ox.Geo/AE.svg diff --git a/build/svg/ox.map/AF.svg b/source/svg/Ox.Geo/AF.svg similarity index 100% rename from build/svg/ox.map/AF.svg rename to source/svg/Ox.Geo/AF.svg diff --git a/build/svg/ox.map/AG.svg b/source/svg/Ox.Geo/AG.svg similarity index 100% rename from build/svg/ox.map/AG.svg rename to source/svg/Ox.Geo/AG.svg diff --git a/build/svg/ox.map/AI.svg b/source/svg/Ox.Geo/AI.svg similarity index 100% rename from build/svg/ox.map/AI.svg rename to source/svg/Ox.Geo/AI.svg diff --git a/build/svg/ox.map/AIDJ.svg b/source/svg/Ox.Geo/AIDJ.svg similarity index 100% rename from build/svg/ox.map/AIDJ.svg rename to source/svg/Ox.Geo/AIDJ.svg diff --git a/build/svg/ox.map/AL.svg b/source/svg/Ox.Geo/AL.svg similarity index 100% rename from build/svg/ox.map/AL.svg rename to source/svg/Ox.Geo/AL.svg diff --git a/build/svg/ox.map/AM.svg b/source/svg/Ox.Geo/AM.svg similarity index 100% rename from build/svg/ox.map/AM.svg rename to source/svg/Ox.Geo/AM.svg diff --git a/build/svg/ox.map/ANHH.svg b/source/svg/Ox.Geo/ANHH.svg similarity index 100% rename from build/svg/ox.map/ANHH.svg rename to source/svg/Ox.Geo/ANHH.svg diff --git a/build/svg/ox.map/AO.svg b/source/svg/Ox.Geo/AO.svg similarity index 100% rename from build/svg/ox.map/AO.svg rename to source/svg/Ox.Geo/AO.svg diff --git a/build/svg/ox.map/AQ.svg b/source/svg/Ox.Geo/AQ.svg similarity index 100% rename from build/svg/ox.map/AQ.svg rename to source/svg/Ox.Geo/AQ.svg diff --git a/build/svg/ox.map/AR.svg b/source/svg/Ox.Geo/AR.svg similarity index 100% rename from build/svg/ox.map/AR.svg rename to source/svg/Ox.Geo/AR.svg diff --git a/build/svg/ox.map/AS.svg b/source/svg/Ox.Geo/AS.svg similarity index 100% rename from build/svg/ox.map/AS.svg rename to source/svg/Ox.Geo/AS.svg diff --git a/build/svg/ox.map/AT.svg b/source/svg/Ox.Geo/AT.svg similarity index 100% rename from build/svg/ox.map/AT.svg rename to source/svg/Ox.Geo/AT.svg diff --git a/build/svg/ox.map/AU-AC.svg b/source/svg/Ox.Geo/AU-AC.svg similarity index 100% rename from build/svg/ox.map/AU-AC.svg rename to source/svg/Ox.Geo/AU-AC.svg diff --git a/build/svg/ox.map/AU-CS.svg b/source/svg/Ox.Geo/AU-CS.svg similarity index 100% rename from build/svg/ox.map/AU-CS.svg rename to source/svg/Ox.Geo/AU-CS.svg diff --git a/build/svg/ox.map/AU.svg b/source/svg/Ox.Geo/AU.svg similarity index 100% rename from build/svg/ox.map/AU.svg rename to source/svg/Ox.Geo/AU.svg diff --git a/build/svg/ox.map/AW.svg b/source/svg/Ox.Geo/AW.svg similarity index 100% rename from build/svg/ox.map/AW.svg rename to source/svg/Ox.Geo/AW.svg diff --git a/build/svg/ox.map/AX.svg b/source/svg/Ox.Geo/AX.svg similarity index 100% rename from build/svg/ox.map/AX.svg rename to source/svg/Ox.Geo/AX.svg diff --git a/build/svg/ox.map/AZ-NK.svg b/source/svg/Ox.Geo/AZ-NK.svg similarity index 100% rename from build/svg/ox.map/AZ-NK.svg rename to source/svg/Ox.Geo/AZ-NK.svg diff --git a/build/svg/ox.map/AZ.svg b/source/svg/Ox.Geo/AZ.svg similarity index 100% rename from build/svg/ox.map/AZ.svg rename to source/svg/Ox.Geo/AZ.svg diff --git a/build/svg/ox.map/BA.svg b/source/svg/Ox.Geo/BA.svg similarity index 100% rename from build/svg/ox.map/BA.svg rename to source/svg/Ox.Geo/BA.svg diff --git a/build/svg/ox.map/BB.svg b/source/svg/Ox.Geo/BB.svg similarity index 100% rename from build/svg/ox.map/BB.svg rename to source/svg/Ox.Geo/BB.svg diff --git a/build/svg/ox.map/BD.svg b/source/svg/Ox.Geo/BD.svg similarity index 100% rename from build/svg/ox.map/BD.svg rename to source/svg/Ox.Geo/BD.svg diff --git a/build/svg/ox.map/BE.svg b/source/svg/Ox.Geo/BE.svg similarity index 100% rename from build/svg/ox.map/BE.svg rename to source/svg/Ox.Geo/BE.svg diff --git a/build/svg/ox.map/BF.svg b/source/svg/Ox.Geo/BF.svg similarity index 100% rename from build/svg/ox.map/BF.svg rename to source/svg/Ox.Geo/BF.svg diff --git a/build/svg/ox.map/BG.svg b/source/svg/Ox.Geo/BG.svg similarity index 100% rename from build/svg/ox.map/BG.svg rename to source/svg/Ox.Geo/BG.svg diff --git a/build/svg/ox.map/BH.svg b/source/svg/Ox.Geo/BH.svg similarity index 100% rename from build/svg/ox.map/BH.svg rename to source/svg/Ox.Geo/BH.svg diff --git a/build/svg/ox.map/BI.svg b/source/svg/Ox.Geo/BI.svg similarity index 100% rename from build/svg/ox.map/BI.svg rename to source/svg/Ox.Geo/BI.svg diff --git a/build/svg/ox.map/BJ.svg b/source/svg/Ox.Geo/BJ.svg similarity index 100% rename from build/svg/ox.map/BJ.svg rename to source/svg/Ox.Geo/BJ.svg diff --git a/build/svg/ox.map/BL.svg b/source/svg/Ox.Geo/BL.svg similarity index 100% rename from build/svg/ox.map/BL.svg rename to source/svg/Ox.Geo/BL.svg diff --git a/build/svg/ox.map/BM.svg b/source/svg/Ox.Geo/BM.svg similarity index 100% rename from build/svg/ox.map/BM.svg rename to source/svg/Ox.Geo/BM.svg diff --git a/build/svg/ox.map/BN.svg b/source/svg/Ox.Geo/BN.svg similarity index 100% rename from build/svg/ox.map/BN.svg rename to source/svg/Ox.Geo/BN.svg diff --git a/build/svg/ox.map/BO.svg b/source/svg/Ox.Geo/BO.svg similarity index 100% rename from build/svg/ox.map/BO.svg rename to source/svg/Ox.Geo/BO.svg diff --git a/build/svg/ox.map/BQ.svg b/source/svg/Ox.Geo/BQ.svg similarity index 100% rename from build/svg/ox.map/BQ.svg rename to source/svg/Ox.Geo/BQ.svg diff --git a/build/svg/ox.map/BQAQ.svg b/source/svg/Ox.Geo/BQAQ.svg similarity index 100% rename from build/svg/ox.map/BQAQ.svg rename to source/svg/Ox.Geo/BQAQ.svg diff --git a/build/svg/ox.map/BR.svg b/source/svg/Ox.Geo/BR.svg similarity index 100% rename from build/svg/ox.map/BR.svg rename to source/svg/Ox.Geo/BR.svg diff --git a/build/svg/ox.map/BS.svg b/source/svg/Ox.Geo/BS.svg similarity index 100% rename from build/svg/ox.map/BS.svg rename to source/svg/Ox.Geo/BS.svg diff --git a/build/svg/ox.map/BT.svg b/source/svg/Ox.Geo/BT.svg similarity index 100% rename from build/svg/ox.map/BT.svg rename to source/svg/Ox.Geo/BT.svg diff --git a/build/svg/ox.map/BUMM.svg b/source/svg/Ox.Geo/BUMM.svg similarity index 100% rename from build/svg/ox.map/BUMM.svg rename to source/svg/Ox.Geo/BUMM.svg diff --git a/build/svg/ox.map/BV.svg b/source/svg/Ox.Geo/BV.svg similarity index 100% rename from build/svg/ox.map/BV.svg rename to source/svg/Ox.Geo/BV.svg diff --git a/build/svg/ox.map/BW.svg b/source/svg/Ox.Geo/BW.svg similarity index 100% rename from build/svg/ox.map/BW.svg rename to source/svg/Ox.Geo/BW.svg diff --git a/build/svg/ox.map/BY.svg b/source/svg/Ox.Geo/BY.svg similarity index 100% rename from build/svg/ox.map/BY.svg rename to source/svg/Ox.Geo/BY.svg diff --git a/build/svg/ox.map/BYAA.svg b/source/svg/Ox.Geo/BYAA.svg similarity index 100% rename from build/svg/ox.map/BYAA.svg rename to source/svg/Ox.Geo/BYAA.svg diff --git a/build/svg/ox.map/BZ.svg b/source/svg/Ox.Geo/BZ.svg similarity index 100% rename from build/svg/ox.map/BZ.svg rename to source/svg/Ox.Geo/BZ.svg diff --git a/build/svg/ox.map/CA.svg b/source/svg/Ox.Geo/CA.svg similarity index 100% rename from build/svg/ox.map/CA.svg rename to source/svg/Ox.Geo/CA.svg diff --git a/build/svg/ox.map/CC.svg b/source/svg/Ox.Geo/CC.svg similarity index 100% rename from build/svg/ox.map/CC.svg rename to source/svg/Ox.Geo/CC.svg diff --git a/build/svg/ox.map/CD.svg b/source/svg/Ox.Geo/CD.svg similarity index 100% rename from build/svg/ox.map/CD.svg rename to source/svg/Ox.Geo/CD.svg diff --git a/build/svg/ox.map/CF.svg b/source/svg/Ox.Geo/CF.svg similarity index 100% rename from build/svg/ox.map/CF.svg rename to source/svg/Ox.Geo/CF.svg diff --git a/build/svg/ox.map/CG.svg b/source/svg/Ox.Geo/CG.svg similarity index 100% rename from build/svg/ox.map/CG.svg rename to source/svg/Ox.Geo/CG.svg diff --git a/build/svg/ox.map/CH.svg b/source/svg/Ox.Geo/CH.svg similarity index 100% rename from build/svg/ox.map/CH.svg rename to source/svg/Ox.Geo/CH.svg diff --git a/build/svg/ox.map/CI.svg b/source/svg/Ox.Geo/CI.svg similarity index 100% rename from build/svg/ox.map/CI.svg rename to source/svg/Ox.Geo/CI.svg diff --git a/build/svg/ox.map/CK.svg b/source/svg/Ox.Geo/CK.svg similarity index 100% rename from build/svg/ox.map/CK.svg rename to source/svg/Ox.Geo/CK.svg diff --git a/build/svg/ox.map/CL.svg b/source/svg/Ox.Geo/CL.svg similarity index 100% rename from build/svg/ox.map/CL.svg rename to source/svg/Ox.Geo/CL.svg diff --git a/build/svg/ox.map/CM.svg b/source/svg/Ox.Geo/CM.svg similarity index 100% rename from build/svg/ox.map/CM.svg rename to source/svg/Ox.Geo/CM.svg diff --git a/build/svg/ox.map/CN.svg b/source/svg/Ox.Geo/CN.svg similarity index 100% rename from build/svg/ox.map/CN.svg rename to source/svg/Ox.Geo/CN.svg diff --git a/build/svg/ox.map/CO.svg b/source/svg/Ox.Geo/CO.svg similarity index 100% rename from build/svg/ox.map/CO.svg rename to source/svg/Ox.Geo/CO.svg diff --git a/build/svg/ox.map/CP.svg b/source/svg/Ox.Geo/CP.svg similarity index 100% rename from build/svg/ox.map/CP.svg rename to source/svg/Ox.Geo/CP.svg diff --git a/build/svg/ox.map/CR.svg b/source/svg/Ox.Geo/CR.svg similarity index 100% rename from build/svg/ox.map/CR.svg rename to source/svg/Ox.Geo/CR.svg diff --git a/build/svg/ox.map/CSHH.svg b/source/svg/Ox.Geo/CSHH.svg similarity index 100% rename from build/svg/ox.map/CSHH.svg rename to source/svg/Ox.Geo/CSHH.svg diff --git a/build/svg/ox.map/CSXX.svg b/source/svg/Ox.Geo/CSXX.svg similarity index 100% rename from build/svg/ox.map/CSXX.svg rename to source/svg/Ox.Geo/CSXX.svg diff --git a/build/svg/ox.map/CTKI.svg b/source/svg/Ox.Geo/CTKI.svg similarity index 100% rename from build/svg/ox.map/CTKI.svg rename to source/svg/Ox.Geo/CTKI.svg diff --git a/build/svg/ox.map/CU.svg b/source/svg/Ox.Geo/CU.svg similarity index 100% rename from build/svg/ox.map/CU.svg rename to source/svg/Ox.Geo/CU.svg diff --git a/build/svg/ox.map/CV.svg b/source/svg/Ox.Geo/CV.svg similarity index 100% rename from build/svg/ox.map/CV.svg rename to source/svg/Ox.Geo/CV.svg diff --git a/build/svg/ox.map/CW.svg b/source/svg/Ox.Geo/CW.svg similarity index 100% rename from build/svg/ox.map/CW.svg rename to source/svg/Ox.Geo/CW.svg diff --git a/build/svg/ox.map/CX.svg b/source/svg/Ox.Geo/CX.svg similarity index 100% rename from build/svg/ox.map/CX.svg rename to source/svg/Ox.Geo/CX.svg diff --git a/build/svg/ox.map/CY-NC.svg b/source/svg/Ox.Geo/CY-NC.svg similarity index 100% rename from build/svg/ox.map/CY-NC.svg rename to source/svg/Ox.Geo/CY-NC.svg diff --git a/build/svg/ox.map/CY.svg b/source/svg/Ox.Geo/CY.svg similarity index 100% rename from build/svg/ox.map/CY.svg rename to source/svg/Ox.Geo/CY.svg diff --git a/build/svg/ox.map/CZ.svg b/source/svg/Ox.Geo/CZ.svg similarity index 100% rename from build/svg/ox.map/CZ.svg rename to source/svg/Ox.Geo/CZ.svg diff --git a/build/svg/ox.map/DDDE.svg b/source/svg/Ox.Geo/DDDE.svg similarity index 100% rename from build/svg/ox.map/DDDE.svg rename to source/svg/Ox.Geo/DDDE.svg diff --git a/build/svg/ox.map/DE.svg b/source/svg/Ox.Geo/DE.svg similarity index 100% rename from build/svg/ox.map/DE.svg rename to source/svg/Ox.Geo/DE.svg diff --git a/build/svg/ox.map/DEDE.svg b/source/svg/Ox.Geo/DEDE.svg similarity index 100% rename from build/svg/ox.map/DEDE.svg rename to source/svg/Ox.Geo/DEDE.svg diff --git a/build/svg/ox.map/DG.svg b/source/svg/Ox.Geo/DG.svg similarity index 100% rename from build/svg/ox.map/DG.svg rename to source/svg/Ox.Geo/DG.svg diff --git a/build/svg/ox.map/DJ.svg b/source/svg/Ox.Geo/DJ.svg similarity index 100% rename from build/svg/ox.map/DJ.svg rename to source/svg/Ox.Geo/DJ.svg diff --git a/build/svg/ox.map/DK.svg b/source/svg/Ox.Geo/DK.svg similarity index 100% rename from build/svg/ox.map/DK.svg rename to source/svg/Ox.Geo/DK.svg diff --git a/build/svg/ox.map/DM.svg b/source/svg/Ox.Geo/DM.svg similarity index 100% rename from build/svg/ox.map/DM.svg rename to source/svg/Ox.Geo/DM.svg diff --git a/build/svg/ox.map/DO.svg b/source/svg/Ox.Geo/DO.svg similarity index 100% rename from build/svg/ox.map/DO.svg rename to source/svg/Ox.Geo/DO.svg diff --git a/build/svg/ox.map/DYBJ.svg b/source/svg/Ox.Geo/DYBJ.svg similarity index 100% rename from build/svg/ox.map/DYBJ.svg rename to source/svg/Ox.Geo/DYBJ.svg diff --git a/build/svg/ox.map/DZ.svg b/source/svg/Ox.Geo/DZ.svg similarity index 100% rename from build/svg/ox.map/DZ.svg rename to source/svg/Ox.Geo/DZ.svg diff --git a/build/svg/ox.map/EA.svg b/source/svg/Ox.Geo/EA.svg similarity index 100% rename from build/svg/ox.map/EA.svg rename to source/svg/Ox.Geo/EA.svg diff --git a/build/svg/ox.map/EC.svg b/source/svg/Ox.Geo/EC.svg similarity index 100% rename from build/svg/ox.map/EC.svg rename to source/svg/Ox.Geo/EC.svg diff --git a/build/svg/ox.map/EE.svg b/source/svg/Ox.Geo/EE.svg similarity index 100% rename from build/svg/ox.map/EE.svg rename to source/svg/Ox.Geo/EE.svg diff --git a/build/svg/ox.map/EG.svg b/source/svg/Ox.Geo/EG.svg similarity index 100% rename from build/svg/ox.map/EG.svg rename to source/svg/Ox.Geo/EG.svg diff --git a/build/svg/ox.map/EH.svg b/source/svg/Ox.Geo/EH.svg similarity index 100% rename from build/svg/ox.map/EH.svg rename to source/svg/Ox.Geo/EH.svg diff --git a/build/svg/ox.map/ER.svg b/source/svg/Ox.Geo/ER.svg similarity index 100% rename from build/svg/ox.map/ER.svg rename to source/svg/Ox.Geo/ER.svg diff --git a/build/svg/ox.map/ES.svg b/source/svg/Ox.Geo/ES.svg similarity index 100% rename from build/svg/ox.map/ES.svg rename to source/svg/Ox.Geo/ES.svg diff --git a/build/svg/ox.map/ET.svg b/source/svg/Ox.Geo/ET.svg similarity index 100% rename from build/svg/ox.map/ET.svg rename to source/svg/Ox.Geo/ET.svg diff --git a/build/svg/ox.map/EU.svg b/source/svg/Ox.Geo/EU.svg similarity index 100% rename from build/svg/ox.map/EU.svg rename to source/svg/Ox.Geo/EU.svg diff --git a/build/svg/ox.map/FI.svg b/source/svg/Ox.Geo/FI.svg similarity index 100% rename from build/svg/ox.map/FI.svg rename to source/svg/Ox.Geo/FI.svg diff --git a/build/svg/ox.map/FJ.svg b/source/svg/Ox.Geo/FJ.svg similarity index 100% rename from build/svg/ox.map/FJ.svg rename to source/svg/Ox.Geo/FJ.svg diff --git a/build/svg/ox.map/FK.svg b/source/svg/Ox.Geo/FK.svg similarity index 100% rename from build/svg/ox.map/FK.svg rename to source/svg/Ox.Geo/FK.svg diff --git a/build/svg/ox.map/FM.svg b/source/svg/Ox.Geo/FM.svg similarity index 100% rename from build/svg/ox.map/FM.svg rename to source/svg/Ox.Geo/FM.svg diff --git a/build/svg/ox.map/FO.svg b/source/svg/Ox.Geo/FO.svg similarity index 100% rename from build/svg/ox.map/FO.svg rename to source/svg/Ox.Geo/FO.svg diff --git a/build/svg/ox.map/FQHH.svg b/source/svg/Ox.Geo/FQHH.svg similarity index 100% rename from build/svg/ox.map/FQHH.svg rename to source/svg/Ox.Geo/FQHH.svg diff --git a/build/svg/ox.map/FR.svg b/source/svg/Ox.Geo/FR.svg similarity index 100% rename from build/svg/ox.map/FR.svg rename to source/svg/Ox.Geo/FR.svg diff --git a/build/svg/ox.map/FXFR.svg b/source/svg/Ox.Geo/FXFR.svg similarity index 100% rename from build/svg/ox.map/FXFR.svg rename to source/svg/Ox.Geo/FXFR.svg diff --git a/build/svg/ox.map/GA.svg b/source/svg/Ox.Geo/GA.svg similarity index 100% rename from build/svg/ox.map/GA.svg rename to source/svg/Ox.Geo/GA.svg diff --git a/build/svg/ox.map/GB-ENG.svg b/source/svg/Ox.Geo/GB-ENG.svg similarity index 100% rename from build/svg/ox.map/GB-ENG.svg rename to source/svg/Ox.Geo/GB-ENG.svg diff --git a/build/svg/ox.map/GB-NIR.svg b/source/svg/Ox.Geo/GB-NIR.svg similarity index 100% rename from build/svg/ox.map/GB-NIR.svg rename to source/svg/Ox.Geo/GB-NIR.svg diff --git a/build/svg/ox.map/GB-SCT.svg b/source/svg/Ox.Geo/GB-SCT.svg similarity index 100% rename from build/svg/ox.map/GB-SCT.svg rename to source/svg/Ox.Geo/GB-SCT.svg diff --git a/build/svg/ox.map/GB-WLS.svg b/source/svg/Ox.Geo/GB-WLS.svg similarity index 100% rename from build/svg/ox.map/GB-WLS.svg rename to source/svg/Ox.Geo/GB-WLS.svg diff --git a/build/svg/ox.map/GB.svg b/source/svg/Ox.Geo/GB.svg similarity index 100% rename from build/svg/ox.map/GB.svg rename to source/svg/Ox.Geo/GB.svg diff --git a/build/svg/ox.map/GD.svg b/source/svg/Ox.Geo/GD.svg similarity index 100% rename from build/svg/ox.map/GD.svg rename to source/svg/Ox.Geo/GD.svg diff --git a/build/svg/ox.map/GE-AB.svg b/source/svg/Ox.Geo/GE-AB.svg similarity index 100% rename from build/svg/ox.map/GE-AB.svg rename to source/svg/Ox.Geo/GE-AB.svg diff --git a/build/svg/ox.map/GE-SO.svg b/source/svg/Ox.Geo/GE-SO.svg similarity index 100% rename from build/svg/ox.map/GE-SO.svg rename to source/svg/Ox.Geo/GE-SO.svg diff --git a/build/svg/ox.map/GE.svg b/source/svg/Ox.Geo/GE.svg similarity index 100% rename from build/svg/ox.map/GE.svg rename to source/svg/Ox.Geo/GE.svg diff --git a/build/svg/ox.map/GEHH.svg b/source/svg/Ox.Geo/GEHH.svg similarity index 100% rename from build/svg/ox.map/GEHH.svg rename to source/svg/Ox.Geo/GEHH.svg diff --git a/build/svg/ox.map/GF.svg b/source/svg/Ox.Geo/GF.svg similarity index 100% rename from build/svg/ox.map/GF.svg rename to source/svg/Ox.Geo/GF.svg diff --git a/build/svg/ox.map/GG.svg b/source/svg/Ox.Geo/GG.svg similarity index 100% rename from build/svg/ox.map/GG.svg rename to source/svg/Ox.Geo/GG.svg diff --git a/build/svg/ox.map/GH.svg b/source/svg/Ox.Geo/GH.svg similarity index 100% rename from build/svg/ox.map/GH.svg rename to source/svg/Ox.Geo/GH.svg diff --git a/build/svg/ox.map/GI.svg b/source/svg/Ox.Geo/GI.svg similarity index 100% rename from build/svg/ox.map/GI.svg rename to source/svg/Ox.Geo/GI.svg diff --git a/build/svg/ox.map/GL.svg b/source/svg/Ox.Geo/GL.svg similarity index 100% rename from build/svg/ox.map/GL.svg rename to source/svg/Ox.Geo/GL.svg diff --git a/build/svg/ox.map/GM.svg b/source/svg/Ox.Geo/GM.svg similarity index 100% rename from build/svg/ox.map/GM.svg rename to source/svg/Ox.Geo/GM.svg diff --git a/build/svg/ox.map/GN.svg b/source/svg/Ox.Geo/GN.svg similarity index 100% rename from build/svg/ox.map/GN.svg rename to source/svg/Ox.Geo/GN.svg diff --git a/build/svg/ox.map/GP.svg b/source/svg/Ox.Geo/GP.svg similarity index 100% rename from build/svg/ox.map/GP.svg rename to source/svg/Ox.Geo/GP.svg diff --git a/build/svg/ox.map/GQ.svg b/source/svg/Ox.Geo/GQ.svg similarity index 100% rename from build/svg/ox.map/GQ.svg rename to source/svg/Ox.Geo/GQ.svg diff --git a/build/svg/ox.map/GR.svg b/source/svg/Ox.Geo/GR.svg similarity index 100% rename from build/svg/ox.map/GR.svg rename to source/svg/Ox.Geo/GR.svg diff --git a/build/svg/ox.map/GS.svg b/source/svg/Ox.Geo/GS.svg similarity index 100% rename from build/svg/ox.map/GS.svg rename to source/svg/Ox.Geo/GS.svg diff --git a/build/svg/ox.map/GT.svg b/source/svg/Ox.Geo/GT.svg similarity index 100% rename from build/svg/ox.map/GT.svg rename to source/svg/Ox.Geo/GT.svg diff --git a/build/svg/ox.map/GU.svg b/source/svg/Ox.Geo/GU.svg similarity index 100% rename from build/svg/ox.map/GU.svg rename to source/svg/Ox.Geo/GU.svg diff --git a/build/svg/ox.map/GW.svg b/source/svg/Ox.Geo/GW.svg similarity index 100% rename from build/svg/ox.map/GW.svg rename to source/svg/Ox.Geo/GW.svg diff --git a/build/svg/ox.map/GY.svg b/source/svg/Ox.Geo/GY.svg similarity index 100% rename from build/svg/ox.map/GY.svg rename to source/svg/Ox.Geo/GY.svg diff --git a/build/svg/ox.map/HK.svg b/source/svg/Ox.Geo/HK.svg similarity index 100% rename from build/svg/ox.map/HK.svg rename to source/svg/Ox.Geo/HK.svg diff --git a/build/svg/ox.map/HM.svg b/source/svg/Ox.Geo/HM.svg similarity index 100% rename from build/svg/ox.map/HM.svg rename to source/svg/Ox.Geo/HM.svg diff --git a/build/svg/ox.map/HN.svg b/source/svg/Ox.Geo/HN.svg similarity index 100% rename from build/svg/ox.map/HN.svg rename to source/svg/Ox.Geo/HN.svg diff --git a/build/svg/ox.map/HR.svg b/source/svg/Ox.Geo/HR.svg similarity index 100% rename from build/svg/ox.map/HR.svg rename to source/svg/Ox.Geo/HR.svg diff --git a/build/svg/ox.map/HT.svg b/source/svg/Ox.Geo/HT.svg similarity index 100% rename from build/svg/ox.map/HT.svg rename to source/svg/Ox.Geo/HT.svg diff --git a/build/svg/ox.map/HU.svg b/source/svg/Ox.Geo/HU.svg similarity index 100% rename from build/svg/ox.map/HU.svg rename to source/svg/Ox.Geo/HU.svg diff --git a/build/svg/ox.map/HVBF.svg b/source/svg/Ox.Geo/HVBF.svg similarity index 100% rename from build/svg/ox.map/HVBF.svg rename to source/svg/Ox.Geo/HVBF.svg diff --git a/build/svg/ox.map/IC.svg b/source/svg/Ox.Geo/IC.svg similarity index 100% rename from build/svg/ox.map/IC.svg rename to source/svg/Ox.Geo/IC.svg diff --git a/build/svg/ox.map/ID.svg b/source/svg/Ox.Geo/ID.svg similarity index 100% rename from build/svg/ox.map/ID.svg rename to source/svg/Ox.Geo/ID.svg diff --git a/build/svg/ox.map/IE.svg b/source/svg/Ox.Geo/IE.svg similarity index 100% rename from build/svg/ox.map/IE.svg rename to source/svg/Ox.Geo/IE.svg diff --git a/build/svg/ox.map/IL.svg b/source/svg/Ox.Geo/IL.svg similarity index 100% rename from build/svg/ox.map/IL.svg rename to source/svg/Ox.Geo/IL.svg diff --git a/build/svg/ox.map/IM.svg b/source/svg/Ox.Geo/IM.svg similarity index 100% rename from build/svg/ox.map/IM.svg rename to source/svg/Ox.Geo/IM.svg diff --git a/build/svg/ox.map/IN.svg b/source/svg/Ox.Geo/IN.svg similarity index 100% rename from build/svg/ox.map/IN.svg rename to source/svg/Ox.Geo/IN.svg diff --git a/build/svg/ox.map/IO.svg b/source/svg/Ox.Geo/IO.svg similarity index 100% rename from build/svg/ox.map/IO.svg rename to source/svg/Ox.Geo/IO.svg diff --git a/build/svg/ox.map/IQ.svg b/source/svg/Ox.Geo/IQ.svg similarity index 100% rename from build/svg/ox.map/IQ.svg rename to source/svg/Ox.Geo/IQ.svg diff --git a/build/svg/ox.map/IR.svg b/source/svg/Ox.Geo/IR.svg similarity index 100% rename from build/svg/ox.map/IR.svg rename to source/svg/Ox.Geo/IR.svg diff --git a/build/svg/ox.map/IS.svg b/source/svg/Ox.Geo/IS.svg similarity index 100% rename from build/svg/ox.map/IS.svg rename to source/svg/Ox.Geo/IS.svg diff --git a/build/svg/ox.map/IT.svg b/source/svg/Ox.Geo/IT.svg similarity index 100% rename from build/svg/ox.map/IT.svg rename to source/svg/Ox.Geo/IT.svg diff --git a/build/svg/ox.map/JE.svg b/source/svg/Ox.Geo/JE.svg similarity index 100% rename from build/svg/ox.map/JE.svg rename to source/svg/Ox.Geo/JE.svg diff --git a/build/svg/ox.map/JM.svg b/source/svg/Ox.Geo/JM.svg similarity index 100% rename from build/svg/ox.map/JM.svg rename to source/svg/Ox.Geo/JM.svg diff --git a/build/svg/ox.map/JO.svg b/source/svg/Ox.Geo/JO.svg similarity index 100% rename from build/svg/ox.map/JO.svg rename to source/svg/Ox.Geo/JO.svg diff --git a/build/svg/ox.map/JP.svg b/source/svg/Ox.Geo/JP.svg similarity index 100% rename from build/svg/ox.map/JP.svg rename to source/svg/Ox.Geo/JP.svg diff --git a/build/svg/ox.map/JTUM.svg b/source/svg/Ox.Geo/JTUM.svg similarity index 100% rename from build/svg/ox.map/JTUM.svg rename to source/svg/Ox.Geo/JTUM.svg diff --git a/build/svg/ox.map/KE.svg b/source/svg/Ox.Geo/KE.svg similarity index 100% rename from build/svg/ox.map/KE.svg rename to source/svg/Ox.Geo/KE.svg diff --git a/build/svg/ox.map/KG.svg b/source/svg/Ox.Geo/KG.svg similarity index 100% rename from build/svg/ox.map/KG.svg rename to source/svg/Ox.Geo/KG.svg diff --git a/build/svg/ox.map/KH.svg b/source/svg/Ox.Geo/KH.svg similarity index 100% rename from build/svg/ox.map/KH.svg rename to source/svg/Ox.Geo/KH.svg diff --git a/build/svg/ox.map/KI.svg b/source/svg/Ox.Geo/KI.svg similarity index 100% rename from build/svg/ox.map/KI.svg rename to source/svg/Ox.Geo/KI.svg diff --git a/build/svg/ox.map/KM.svg b/source/svg/Ox.Geo/KM.svg similarity index 100% rename from build/svg/ox.map/KM.svg rename to source/svg/Ox.Geo/KM.svg diff --git a/build/svg/ox.map/KN.svg b/source/svg/Ox.Geo/KN.svg similarity index 100% rename from build/svg/ox.map/KN.svg rename to source/svg/Ox.Geo/KN.svg diff --git a/build/svg/ox.map/KOHH.svg b/source/svg/Ox.Geo/KOHH.svg similarity index 100% rename from build/svg/ox.map/KOHH.svg rename to source/svg/Ox.Geo/KOHH.svg diff --git a/build/svg/ox.map/KP.svg b/source/svg/Ox.Geo/KP.svg similarity index 100% rename from build/svg/ox.map/KP.svg rename to source/svg/Ox.Geo/KP.svg diff --git a/build/svg/ox.map/KR.svg b/source/svg/Ox.Geo/KR.svg similarity index 100% rename from build/svg/ox.map/KR.svg rename to source/svg/Ox.Geo/KR.svg diff --git a/build/svg/ox.map/KW.svg b/source/svg/Ox.Geo/KW.svg similarity index 100% rename from build/svg/ox.map/KW.svg rename to source/svg/Ox.Geo/KW.svg diff --git a/build/svg/ox.map/KY.svg b/source/svg/Ox.Geo/KY.svg similarity index 100% rename from build/svg/ox.map/KY.svg rename to source/svg/Ox.Geo/KY.svg diff --git a/build/svg/ox.map/KZ.svg b/source/svg/Ox.Geo/KZ.svg similarity index 100% rename from build/svg/ox.map/KZ.svg rename to source/svg/Ox.Geo/KZ.svg diff --git a/build/svg/ox.map/LA.svg b/source/svg/Ox.Geo/LA.svg similarity index 100% rename from build/svg/ox.map/LA.svg rename to source/svg/Ox.Geo/LA.svg diff --git a/build/svg/ox.map/LB.svg b/source/svg/Ox.Geo/LB.svg similarity index 100% rename from build/svg/ox.map/LB.svg rename to source/svg/Ox.Geo/LB.svg diff --git a/build/svg/ox.map/LC.svg b/source/svg/Ox.Geo/LC.svg similarity index 100% rename from build/svg/ox.map/LC.svg rename to source/svg/Ox.Geo/LC.svg diff --git a/build/svg/ox.map/LI.svg b/source/svg/Ox.Geo/LI.svg similarity index 100% rename from build/svg/ox.map/LI.svg rename to source/svg/Ox.Geo/LI.svg diff --git a/build/svg/ox.map/LK.svg b/source/svg/Ox.Geo/LK.svg similarity index 100% rename from build/svg/ox.map/LK.svg rename to source/svg/Ox.Geo/LK.svg diff --git a/build/svg/ox.map/LR.svg b/source/svg/Ox.Geo/LR.svg similarity index 100% rename from build/svg/ox.map/LR.svg rename to source/svg/Ox.Geo/LR.svg diff --git a/build/svg/ox.map/LS.svg b/source/svg/Ox.Geo/LS.svg similarity index 100% rename from build/svg/ox.map/LS.svg rename to source/svg/Ox.Geo/LS.svg diff --git a/build/svg/ox.map/LT.svg b/source/svg/Ox.Geo/LT.svg similarity index 100% rename from build/svg/ox.map/LT.svg rename to source/svg/Ox.Geo/LT.svg diff --git a/build/svg/ox.map/LU.svg b/source/svg/Ox.Geo/LU.svg similarity index 100% rename from build/svg/ox.map/LU.svg rename to source/svg/Ox.Geo/LU.svg diff --git a/build/svg/ox.map/LV.svg b/source/svg/Ox.Geo/LV.svg similarity index 100% rename from build/svg/ox.map/LV.svg rename to source/svg/Ox.Geo/LV.svg diff --git a/build/svg/ox.map/LY.svg b/source/svg/Ox.Geo/LY.svg similarity index 100% rename from build/svg/ox.map/LY.svg rename to source/svg/Ox.Geo/LY.svg diff --git a/build/svg/ox.map/MA.svg b/source/svg/Ox.Geo/MA.svg similarity index 100% rename from build/svg/ox.map/MA.svg rename to source/svg/Ox.Geo/MA.svg diff --git a/build/svg/ox.map/MC.svg b/source/svg/Ox.Geo/MC.svg similarity index 100% rename from build/svg/ox.map/MC.svg rename to source/svg/Ox.Geo/MC.svg diff --git a/build/svg/ox.map/MD-TR.svg b/source/svg/Ox.Geo/MD-TR.svg similarity index 100% rename from build/svg/ox.map/MD-TR.svg rename to source/svg/Ox.Geo/MD-TR.svg diff --git a/build/svg/ox.map/MD.svg b/source/svg/Ox.Geo/MD.svg similarity index 100% rename from build/svg/ox.map/MD.svg rename to source/svg/Ox.Geo/MD.svg diff --git a/build/svg/ox.map/ME.svg b/source/svg/Ox.Geo/ME.svg similarity index 100% rename from build/svg/ox.map/ME.svg rename to source/svg/Ox.Geo/ME.svg diff --git a/build/svg/ox.map/MF.svg b/source/svg/Ox.Geo/MF.svg similarity index 100% rename from build/svg/ox.map/MF.svg rename to source/svg/Ox.Geo/MF.svg diff --git a/build/svg/ox.map/MG.svg b/source/svg/Ox.Geo/MG.svg similarity index 100% rename from build/svg/ox.map/MG.svg rename to source/svg/Ox.Geo/MG.svg diff --git a/build/svg/ox.map/MH.svg b/source/svg/Ox.Geo/MH.svg similarity index 100% rename from build/svg/ox.map/MH.svg rename to source/svg/Ox.Geo/MH.svg diff --git a/build/svg/ox.map/MIUM.svg b/source/svg/Ox.Geo/MIUM.svg similarity index 100% rename from build/svg/ox.map/MIUM.svg rename to source/svg/Ox.Geo/MIUM.svg diff --git a/build/svg/ox.map/MK.svg b/source/svg/Ox.Geo/MK.svg similarity index 100% rename from build/svg/ox.map/MK.svg rename to source/svg/Ox.Geo/MK.svg diff --git a/build/svg/ox.map/ML.svg b/source/svg/Ox.Geo/ML.svg similarity index 100% rename from build/svg/ox.map/ML.svg rename to source/svg/Ox.Geo/ML.svg diff --git a/build/svg/ox.map/MM.svg b/source/svg/Ox.Geo/MM.svg similarity index 100% rename from build/svg/ox.map/MM.svg rename to source/svg/Ox.Geo/MM.svg diff --git a/build/svg/ox.map/MN.svg b/source/svg/Ox.Geo/MN.svg similarity index 100% rename from build/svg/ox.map/MN.svg rename to source/svg/Ox.Geo/MN.svg diff --git a/build/svg/ox.map/MO.svg b/source/svg/Ox.Geo/MO.svg similarity index 100% rename from build/svg/ox.map/MO.svg rename to source/svg/Ox.Geo/MO.svg diff --git a/build/svg/ox.map/MP.svg b/source/svg/Ox.Geo/MP.svg similarity index 100% rename from build/svg/ox.map/MP.svg rename to source/svg/Ox.Geo/MP.svg diff --git a/build/svg/ox.map/MQ.svg b/source/svg/Ox.Geo/MQ.svg similarity index 100% rename from build/svg/ox.map/MQ.svg rename to source/svg/Ox.Geo/MQ.svg diff --git a/build/svg/ox.map/MR.svg b/source/svg/Ox.Geo/MR.svg similarity index 100% rename from build/svg/ox.map/MR.svg rename to source/svg/Ox.Geo/MR.svg diff --git a/build/svg/ox.map/MS.svg b/source/svg/Ox.Geo/MS.svg similarity index 100% rename from build/svg/ox.map/MS.svg rename to source/svg/Ox.Geo/MS.svg diff --git a/build/svg/ox.map/MT.svg b/source/svg/Ox.Geo/MT.svg similarity index 100% rename from build/svg/ox.map/MT.svg rename to source/svg/Ox.Geo/MT.svg diff --git a/build/svg/ox.map/MU.svg b/source/svg/Ox.Geo/MU.svg similarity index 100% rename from build/svg/ox.map/MU.svg rename to source/svg/Ox.Geo/MU.svg diff --git a/build/svg/ox.map/MV.svg b/source/svg/Ox.Geo/MV.svg similarity index 100% rename from build/svg/ox.map/MV.svg rename to source/svg/Ox.Geo/MV.svg diff --git a/build/svg/ox.map/MW.svg b/source/svg/Ox.Geo/MW.svg similarity index 100% rename from build/svg/ox.map/MW.svg rename to source/svg/Ox.Geo/MW.svg diff --git a/build/svg/ox.map/MX.svg b/source/svg/Ox.Geo/MX.svg similarity index 100% rename from build/svg/ox.map/MX.svg rename to source/svg/Ox.Geo/MX.svg diff --git a/build/svg/ox.map/MY.svg b/source/svg/Ox.Geo/MY.svg similarity index 100% rename from build/svg/ox.map/MY.svg rename to source/svg/Ox.Geo/MY.svg diff --git a/build/svg/ox.map/MZ.svg b/source/svg/Ox.Geo/MZ.svg similarity index 100% rename from build/svg/ox.map/MZ.svg rename to source/svg/Ox.Geo/MZ.svg diff --git a/build/svg/ox.map/NA.svg b/source/svg/Ox.Geo/NA.svg similarity index 100% rename from build/svg/ox.map/NA.svg rename to source/svg/Ox.Geo/NA.svg diff --git a/build/svg/ox.map/NC.svg b/source/svg/Ox.Geo/NC.svg similarity index 100% rename from build/svg/ox.map/NC.svg rename to source/svg/Ox.Geo/NC.svg diff --git a/build/svg/ox.map/NE.svg b/source/svg/Ox.Geo/NE.svg similarity index 100% rename from build/svg/ox.map/NE.svg rename to source/svg/Ox.Geo/NE.svg diff --git a/build/svg/ox.map/NF.svg b/source/svg/Ox.Geo/NF.svg similarity index 100% rename from build/svg/ox.map/NF.svg rename to source/svg/Ox.Geo/NF.svg diff --git a/build/svg/ox.map/NG.svg b/source/svg/Ox.Geo/NG.svg similarity index 100% rename from build/svg/ox.map/NG.svg rename to source/svg/Ox.Geo/NG.svg diff --git a/build/svg/ox.map/NHVU.svg b/source/svg/Ox.Geo/NHVU.svg similarity index 100% rename from build/svg/ox.map/NHVU.svg rename to source/svg/Ox.Geo/NHVU.svg diff --git a/build/svg/ox.map/NI.svg b/source/svg/Ox.Geo/NI.svg similarity index 100% rename from build/svg/ox.map/NI.svg rename to source/svg/Ox.Geo/NI.svg diff --git a/build/svg/ox.map/NL.svg b/source/svg/Ox.Geo/NL.svg similarity index 100% rename from build/svg/ox.map/NL.svg rename to source/svg/Ox.Geo/NL.svg diff --git a/build/svg/ox.map/NO.svg b/source/svg/Ox.Geo/NO.svg similarity index 100% rename from build/svg/ox.map/NO.svg rename to source/svg/Ox.Geo/NO.svg diff --git a/build/svg/ox.map/NP.svg b/source/svg/Ox.Geo/NP.svg similarity index 100% rename from build/svg/ox.map/NP.svg rename to source/svg/Ox.Geo/NP.svg diff --git a/build/svg/ox.map/NQAQ.svg b/source/svg/Ox.Geo/NQAQ.svg similarity index 100% rename from build/svg/ox.map/NQAQ.svg rename to source/svg/Ox.Geo/NQAQ.svg diff --git a/build/svg/ox.map/NR.svg b/source/svg/Ox.Geo/NR.svg similarity index 100% rename from build/svg/ox.map/NR.svg rename to source/svg/Ox.Geo/NR.svg diff --git a/build/svg/ox.map/NTHH.svg b/source/svg/Ox.Geo/NTHH.svg similarity index 100% rename from build/svg/ox.map/NTHH.svg rename to source/svg/Ox.Geo/NTHH.svg diff --git a/build/svg/ox.map/NU.svg b/source/svg/Ox.Geo/NU.svg similarity index 100% rename from build/svg/ox.map/NU.svg rename to source/svg/Ox.Geo/NU.svg diff --git a/build/svg/ox.map/NZ.svg b/source/svg/Ox.Geo/NZ.svg similarity index 100% rename from build/svg/ox.map/NZ.svg rename to source/svg/Ox.Geo/NZ.svg diff --git a/build/svg/ox.map/OM.svg b/source/svg/Ox.Geo/OM.svg similarity index 100% rename from build/svg/ox.map/OM.svg rename to source/svg/Ox.Geo/OM.svg diff --git a/build/svg/ox.map/PA.svg b/source/svg/Ox.Geo/PA.svg similarity index 100% rename from build/svg/ox.map/PA.svg rename to source/svg/Ox.Geo/PA.svg diff --git a/build/svg/ox.map/PCHH.svg b/source/svg/Ox.Geo/PCHH.svg similarity index 100% rename from build/svg/ox.map/PCHH.svg rename to source/svg/Ox.Geo/PCHH.svg diff --git a/build/svg/ox.map/PE.svg b/source/svg/Ox.Geo/PE.svg similarity index 100% rename from build/svg/ox.map/PE.svg rename to source/svg/Ox.Geo/PE.svg diff --git a/build/svg/ox.map/PF.svg b/source/svg/Ox.Geo/PF.svg similarity index 100% rename from build/svg/ox.map/PF.svg rename to source/svg/Ox.Geo/PF.svg diff --git a/build/svg/ox.map/PG.svg b/source/svg/Ox.Geo/PG.svg similarity index 100% rename from build/svg/ox.map/PG.svg rename to source/svg/Ox.Geo/PG.svg diff --git a/build/svg/ox.map/PH.svg b/source/svg/Ox.Geo/PH.svg similarity index 100% rename from build/svg/ox.map/PH.svg rename to source/svg/Ox.Geo/PH.svg diff --git a/build/svg/ox.map/PK.svg b/source/svg/Ox.Geo/PK.svg similarity index 100% rename from build/svg/ox.map/PK.svg rename to source/svg/Ox.Geo/PK.svg diff --git a/build/svg/ox.map/PL.svg b/source/svg/Ox.Geo/PL.svg similarity index 100% rename from build/svg/ox.map/PL.svg rename to source/svg/Ox.Geo/PL.svg diff --git a/build/svg/ox.map/PM.svg b/source/svg/Ox.Geo/PM.svg similarity index 100% rename from build/svg/ox.map/PM.svg rename to source/svg/Ox.Geo/PM.svg diff --git a/build/svg/ox.map/PN.svg b/source/svg/Ox.Geo/PN.svg similarity index 100% rename from build/svg/ox.map/PN.svg rename to source/svg/Ox.Geo/PN.svg diff --git a/build/svg/ox.map/PR.svg b/source/svg/Ox.Geo/PR.svg similarity index 100% rename from build/svg/ox.map/PR.svg rename to source/svg/Ox.Geo/PR.svg diff --git a/build/svg/ox.map/PS.svg b/source/svg/Ox.Geo/PS.svg similarity index 100% rename from build/svg/ox.map/PS.svg rename to source/svg/Ox.Geo/PS.svg diff --git a/build/svg/ox.map/PT.svg b/source/svg/Ox.Geo/PT.svg similarity index 100% rename from build/svg/ox.map/PT.svg rename to source/svg/Ox.Geo/PT.svg diff --git a/build/svg/ox.map/PUUM.svg b/source/svg/Ox.Geo/PUUM.svg similarity index 100% rename from build/svg/ox.map/PUUM.svg rename to source/svg/Ox.Geo/PUUM.svg diff --git a/build/svg/ox.map/PW.svg b/source/svg/Ox.Geo/PW.svg similarity index 100% rename from build/svg/ox.map/PW.svg rename to source/svg/Ox.Geo/PW.svg diff --git a/build/svg/ox.map/PY.svg b/source/svg/Ox.Geo/PY.svg similarity index 100% rename from build/svg/ox.map/PY.svg rename to source/svg/Ox.Geo/PY.svg diff --git a/build/svg/ox.map/PZPA.png b/source/svg/Ox.Geo/PZPA.png similarity index 100% rename from build/svg/ox.map/PZPA.png rename to source/svg/Ox.Geo/PZPA.png diff --git a/build/svg/ox.map/QA.svg b/source/svg/Ox.Geo/QA.svg similarity index 100% rename from build/svg/ox.map/QA.svg rename to source/svg/Ox.Geo/QA.svg diff --git a/build/svg/ox.map/RE.png b/source/svg/Ox.Geo/RE.png similarity index 100% rename from build/svg/ox.map/RE.png rename to source/svg/Ox.Geo/RE.png diff --git a/build/svg/ox.map/RHZW.svg b/source/svg/Ox.Geo/RHZW.svg similarity index 100% rename from build/svg/ox.map/RHZW.svg rename to source/svg/Ox.Geo/RHZW.svg diff --git a/build/svg/ox.map/RO.svg b/source/svg/Ox.Geo/RO.svg similarity index 100% rename from build/svg/ox.map/RO.svg rename to source/svg/Ox.Geo/RO.svg diff --git a/build/svg/ox.map/RS-KO.svg b/source/svg/Ox.Geo/RS-KO.svg similarity index 100% rename from build/svg/ox.map/RS-KO.svg rename to source/svg/Ox.Geo/RS-KO.svg diff --git a/build/svg/ox.map/RS.svg b/source/svg/Ox.Geo/RS.svg similarity index 100% rename from build/svg/ox.map/RS.svg rename to source/svg/Ox.Geo/RS.svg diff --git a/build/svg/ox.map/RU.svg b/source/svg/Ox.Geo/RU.svg similarity index 100% rename from build/svg/ox.map/RU.svg rename to source/svg/Ox.Geo/RU.svg diff --git a/build/svg/ox.map/RW.svg b/source/svg/Ox.Geo/RW.svg similarity index 100% rename from build/svg/ox.map/RW.svg rename to source/svg/Ox.Geo/RW.svg diff --git a/build/svg/ox.map/SA.svg b/source/svg/Ox.Geo/SA.svg similarity index 100% rename from build/svg/ox.map/SA.svg rename to source/svg/Ox.Geo/SA.svg diff --git a/build/svg/ox.map/SB.svg b/source/svg/Ox.Geo/SB.svg similarity index 100% rename from build/svg/ox.map/SB.svg rename to source/svg/Ox.Geo/SB.svg diff --git a/build/svg/ox.map/SC.svg b/source/svg/Ox.Geo/SC.svg similarity index 100% rename from build/svg/ox.map/SC.svg rename to source/svg/Ox.Geo/SC.svg diff --git a/build/svg/ox.map/SD-SS.svg b/source/svg/Ox.Geo/SD-SS.svg similarity index 100% rename from build/svg/ox.map/SD-SS.svg rename to source/svg/Ox.Geo/SD-SS.svg diff --git a/build/svg/ox.map/SD.svg b/source/svg/Ox.Geo/SD.svg similarity index 100% rename from build/svg/ox.map/SD.svg rename to source/svg/Ox.Geo/SD.svg diff --git a/build/svg/ox.map/SE.svg b/source/svg/Ox.Geo/SE.svg similarity index 100% rename from build/svg/ox.map/SE.svg rename to source/svg/Ox.Geo/SE.svg diff --git a/build/svg/ox.map/SG.svg b/source/svg/Ox.Geo/SG.svg similarity index 100% rename from build/svg/ox.map/SG.svg rename to source/svg/Ox.Geo/SG.svg diff --git a/build/svg/ox.map/SH.svg b/source/svg/Ox.Geo/SH.svg similarity index 100% rename from build/svg/ox.map/SH.svg rename to source/svg/Ox.Geo/SH.svg diff --git a/build/svg/ox.map/SI.svg b/source/svg/Ox.Geo/SI.svg similarity index 100% rename from build/svg/ox.map/SI.svg rename to source/svg/Ox.Geo/SI.svg diff --git a/build/svg/ox.map/SITH.svg b/source/svg/Ox.Geo/SITH.svg similarity index 100% rename from build/svg/ox.map/SITH.svg rename to source/svg/Ox.Geo/SITH.svg diff --git a/build/svg/ox.map/SJ.svg b/source/svg/Ox.Geo/SJ.svg similarity index 100% rename from build/svg/ox.map/SJ.svg rename to source/svg/Ox.Geo/SJ.svg diff --git a/build/svg/ox.map/SK.svg b/source/svg/Ox.Geo/SK.svg similarity index 100% rename from build/svg/ox.map/SK.svg rename to source/svg/Ox.Geo/SK.svg diff --git a/build/svg/ox.map/SKIN.svg b/source/svg/Ox.Geo/SKIN.svg similarity index 100% rename from build/svg/ox.map/SKIN.svg rename to source/svg/Ox.Geo/SKIN.svg diff --git a/build/svg/ox.map/SL.svg b/source/svg/Ox.Geo/SL.svg similarity index 100% rename from build/svg/ox.map/SL.svg rename to source/svg/Ox.Geo/SL.svg diff --git a/build/svg/ox.map/SM.svg b/source/svg/Ox.Geo/SM.svg similarity index 100% rename from build/svg/ox.map/SM.svg rename to source/svg/Ox.Geo/SM.svg diff --git a/build/svg/ox.map/SN.svg b/source/svg/Ox.Geo/SN.svg similarity index 100% rename from build/svg/ox.map/SN.svg rename to source/svg/Ox.Geo/SN.svg diff --git a/build/svg/ox.map/SO-SO.svg b/source/svg/Ox.Geo/SO-SO.svg similarity index 100% rename from build/svg/ox.map/SO-SO.svg rename to source/svg/Ox.Geo/SO-SO.svg diff --git a/build/svg/ox.map/SO.svg b/source/svg/Ox.Geo/SO.svg similarity index 100% rename from build/svg/ox.map/SO.svg rename to source/svg/Ox.Geo/SO.svg diff --git a/build/svg/ox.map/SR.svg b/source/svg/Ox.Geo/SR.svg similarity index 100% rename from build/svg/ox.map/SR.svg rename to source/svg/Ox.Geo/SR.svg diff --git a/build/svg/ox.map/ST.svg b/source/svg/Ox.Geo/ST.svg similarity index 100% rename from build/svg/ox.map/ST.svg rename to source/svg/Ox.Geo/ST.svg diff --git a/build/svg/ox.map/SUHH.svg b/source/svg/Ox.Geo/SUHH.svg similarity index 100% rename from build/svg/ox.map/SUHH.svg rename to source/svg/Ox.Geo/SUHH.svg diff --git a/build/svg/ox.map/SV.svg b/source/svg/Ox.Geo/SV.svg similarity index 100% rename from build/svg/ox.map/SV.svg rename to source/svg/Ox.Geo/SV.svg diff --git a/build/svg/ox.map/SX.svg b/source/svg/Ox.Geo/SX.svg similarity index 100% rename from build/svg/ox.map/SX.svg rename to source/svg/Ox.Geo/SX.svg diff --git a/build/svg/ox.map/SY.svg b/source/svg/Ox.Geo/SY.svg similarity index 100% rename from build/svg/ox.map/SY.svg rename to source/svg/Ox.Geo/SY.svg diff --git a/build/svg/ox.map/SZ.svg b/source/svg/Ox.Geo/SZ.svg similarity index 100% rename from build/svg/ox.map/SZ.svg rename to source/svg/Ox.Geo/SZ.svg diff --git a/build/svg/ox.map/TA.svg b/source/svg/Ox.Geo/TA.svg similarity index 100% rename from build/svg/ox.map/TA.svg rename to source/svg/Ox.Geo/TA.svg diff --git a/build/svg/ox.map/TC.svg b/source/svg/Ox.Geo/TC.svg similarity index 100% rename from build/svg/ox.map/TC.svg rename to source/svg/Ox.Geo/TC.svg diff --git a/build/svg/ox.map/TD.svg b/source/svg/Ox.Geo/TD.svg similarity index 100% rename from build/svg/ox.map/TD.svg rename to source/svg/Ox.Geo/TD.svg diff --git a/build/svg/ox.map/TF.svg b/source/svg/Ox.Geo/TF.svg similarity index 100% rename from build/svg/ox.map/TF.svg rename to source/svg/Ox.Geo/TF.svg diff --git a/build/svg/ox.map/TG.svg b/source/svg/Ox.Geo/TG.svg similarity index 100% rename from build/svg/ox.map/TG.svg rename to source/svg/Ox.Geo/TG.svg diff --git a/build/svg/ox.map/TH.svg b/source/svg/Ox.Geo/TH.svg similarity index 100% rename from build/svg/ox.map/TH.svg rename to source/svg/Ox.Geo/TH.svg diff --git a/build/svg/ox.map/TJ.svg b/source/svg/Ox.Geo/TJ.svg similarity index 100% rename from build/svg/ox.map/TJ.svg rename to source/svg/Ox.Geo/TJ.svg diff --git a/build/svg/ox.map/TK.svg b/source/svg/Ox.Geo/TK.svg similarity index 100% rename from build/svg/ox.map/TK.svg rename to source/svg/Ox.Geo/TK.svg diff --git a/build/svg/ox.map/TL.svg b/source/svg/Ox.Geo/TL.svg similarity index 100% rename from build/svg/ox.map/TL.svg rename to source/svg/Ox.Geo/TL.svg diff --git a/build/svg/ox.map/TM.svg b/source/svg/Ox.Geo/TM.svg similarity index 100% rename from build/svg/ox.map/TM.svg rename to source/svg/Ox.Geo/TM.svg diff --git a/build/svg/ox.map/TN.svg b/source/svg/Ox.Geo/TN.svg similarity index 100% rename from build/svg/ox.map/TN.svg rename to source/svg/Ox.Geo/TN.svg diff --git a/build/svg/ox.map/TO.svg b/source/svg/Ox.Geo/TO.svg similarity index 100% rename from build/svg/ox.map/TO.svg rename to source/svg/Ox.Geo/TO.svg diff --git a/build/svg/ox.map/TPTL.svg b/source/svg/Ox.Geo/TPTL.svg similarity index 100% rename from build/svg/ox.map/TPTL.svg rename to source/svg/Ox.Geo/TPTL.svg diff --git a/build/svg/ox.map/TR.svg b/source/svg/Ox.Geo/TR.svg similarity index 100% rename from build/svg/ox.map/TR.svg rename to source/svg/Ox.Geo/TR.svg diff --git a/build/svg/ox.map/TT.svg b/source/svg/Ox.Geo/TT.svg similarity index 100% rename from build/svg/ox.map/TT.svg rename to source/svg/Ox.Geo/TT.svg diff --git a/build/svg/ox.map/TV.svg b/source/svg/Ox.Geo/TV.svg similarity index 100% rename from build/svg/ox.map/TV.svg rename to source/svg/Ox.Geo/TV.svg diff --git a/build/svg/ox.map/TW.svg b/source/svg/Ox.Geo/TW.svg similarity index 100% rename from build/svg/ox.map/TW.svg rename to source/svg/Ox.Geo/TW.svg diff --git a/build/svg/ox.map/TZ.svg b/source/svg/Ox.Geo/TZ.svg similarity index 100% rename from build/svg/ox.map/TZ.svg rename to source/svg/Ox.Geo/TZ.svg diff --git a/build/svg/ox.map/UA.svg b/source/svg/Ox.Geo/UA.svg similarity index 100% rename from build/svg/ox.map/UA.svg rename to source/svg/Ox.Geo/UA.svg diff --git a/build/svg/ox.map/UG.svg b/source/svg/Ox.Geo/UG.svg similarity index 100% rename from build/svg/ox.map/UG.svg rename to source/svg/Ox.Geo/UG.svg diff --git a/build/svg/ox.map/UK.svg b/source/svg/Ox.Geo/UK.svg similarity index 100% rename from build/svg/ox.map/UK.svg rename to source/svg/Ox.Geo/UK.svg diff --git a/build/svg/ox.map/UM.svg b/source/svg/Ox.Geo/UM.svg similarity index 100% rename from build/svg/ox.map/UM.svg rename to source/svg/Ox.Geo/UM.svg diff --git a/build/svg/ox.map/US.svg b/source/svg/Ox.Geo/US.svg similarity index 100% rename from build/svg/ox.map/US.svg rename to source/svg/Ox.Geo/US.svg diff --git a/build/svg/ox.map/UY.svg b/source/svg/Ox.Geo/UY.svg similarity index 100% rename from build/svg/ox.map/UY.svg rename to source/svg/Ox.Geo/UY.svg diff --git a/build/svg/ox.map/UZ.svg b/source/svg/Ox.Geo/UZ.svg similarity index 100% rename from build/svg/ox.map/UZ.svg rename to source/svg/Ox.Geo/UZ.svg diff --git a/build/svg/ox.map/VA.svg b/source/svg/Ox.Geo/VA.svg similarity index 100% rename from build/svg/ox.map/VA.svg rename to source/svg/Ox.Geo/VA.svg diff --git a/build/svg/ox.map/VC.svg b/source/svg/Ox.Geo/VC.svg similarity index 100% rename from build/svg/ox.map/VC.svg rename to source/svg/Ox.Geo/VC.svg diff --git a/build/svg/ox.map/VDVN.svg b/source/svg/Ox.Geo/VDVN.svg similarity index 100% rename from build/svg/ox.map/VDVN.svg rename to source/svg/Ox.Geo/VDVN.svg diff --git a/build/svg/ox.map/VE.svg b/source/svg/Ox.Geo/VE.svg similarity index 100% rename from build/svg/ox.map/VE.svg rename to source/svg/Ox.Geo/VE.svg diff --git a/build/svg/ox.map/VG.svg b/source/svg/Ox.Geo/VG.svg similarity index 100% rename from build/svg/ox.map/VG.svg rename to source/svg/Ox.Geo/VG.svg diff --git a/build/svg/ox.map/VI.svg b/source/svg/Ox.Geo/VI.svg similarity index 100% rename from build/svg/ox.map/VI.svg rename to source/svg/Ox.Geo/VI.svg diff --git a/build/svg/ox.map/VN.svg b/source/svg/Ox.Geo/VN.svg similarity index 100% rename from build/svg/ox.map/VN.svg rename to source/svg/Ox.Geo/VN.svg diff --git a/build/svg/ox.map/VU.svg b/source/svg/Ox.Geo/VU.svg similarity index 100% rename from build/svg/ox.map/VU.svg rename to source/svg/Ox.Geo/VU.svg diff --git a/build/svg/ox.map/WF.svg b/source/svg/Ox.Geo/WF.svg similarity index 100% rename from build/svg/ox.map/WF.svg rename to source/svg/Ox.Geo/WF.svg diff --git a/build/svg/ox.map/WKUM.svg b/source/svg/Ox.Geo/WKUM.svg similarity index 100% rename from build/svg/ox.map/WKUM.svg rename to source/svg/Ox.Geo/WKUM.svg diff --git a/build/svg/ox.map/WS.svg b/source/svg/Ox.Geo/WS.svg similarity index 100% rename from build/svg/ox.map/WS.svg rename to source/svg/Ox.Geo/WS.svg diff --git a/build/svg/ox.map/YDYE.svg b/source/svg/Ox.Geo/YDYE.svg similarity index 100% rename from build/svg/ox.map/YDYE.svg rename to source/svg/Ox.Geo/YDYE.svg diff --git a/build/svg/ox.map/YE.svg b/source/svg/Ox.Geo/YE.svg similarity index 100% rename from build/svg/ox.map/YE.svg rename to source/svg/Ox.Geo/YE.svg diff --git a/build/svg/ox.map/YT.svg b/source/svg/Ox.Geo/YT.svg similarity index 100% rename from build/svg/ox.map/YT.svg rename to source/svg/Ox.Geo/YT.svg diff --git a/build/svg/ox.map/YUCS.svg b/source/svg/Ox.Geo/YUCS.svg similarity index 100% rename from build/svg/ox.map/YUCS.svg rename to source/svg/Ox.Geo/YUCS.svg diff --git a/build/svg/ox.map/ZA.svg b/source/svg/Ox.Geo/ZA.svg similarity index 100% rename from build/svg/ox.map/ZA.svg rename to source/svg/Ox.Geo/ZA.svg diff --git a/build/svg/ox.map/ZM.svg b/source/svg/Ox.Geo/ZM.svg similarity index 100% rename from build/svg/ox.map/ZM.svg rename to source/svg/Ox.Geo/ZM.svg diff --git a/build/svg/ox.map/ZRCD.svg b/source/svg/Ox.Geo/ZRCD.svg similarity index 100% rename from build/svg/ox.map/ZRCD.svg rename to source/svg/Ox.Geo/ZRCD.svg diff --git a/build/svg/ox.map/ZW.svg b/source/svg/Ox.Geo/ZW.svg similarity index 100% rename from build/svg/ox.map/ZW.svg rename to source/svg/Ox.Geo/ZW.svg diff --git a/source/svg/symbols/__check.svg b/source/svg/Ox.UI.classic/__check.svg similarity index 100% rename from source/svg/symbols/__check.svg rename to source/svg/Ox.UI.classic/__check.svg diff --git a/source/svg/symbols/_check.svg b/source/svg/Ox.UI.classic/_check.svg similarity index 100% rename from source/svg/symbols/_check.svg rename to source/svg/Ox.UI.classic/_check.svg diff --git a/source/svg/symbols/_mute.svg b/source/svg/Ox.UI.classic/_mute.svg similarity index 100% rename from source/svg/symbols/_mute.svg rename to source/svg/Ox.UI.classic/_mute.svg diff --git a/source/svg/symbols/_viewColumns.svg b/source/svg/Ox.UI.classic/_viewColumns.svg similarity index 100% rename from source/svg/symbols/_viewColumns.svg rename to source/svg/Ox.UI.classic/_viewColumns.svg diff --git a/source/svg/symbols/_viewIconList.svg b/source/svg/Ox.UI.classic/_viewIconList.svg similarity index 100% rename from source/svg/symbols/_viewIconList.svg rename to source/svg/Ox.UI.classic/_viewIconList.svg diff --git a/source/svg/symbols/_viewIcons.svg b/source/svg/Ox.UI.classic/_viewIcons.svg similarity index 100% rename from source/svg/symbols/_viewIcons.svg rename to source/svg/Ox.UI.classic/_viewIcons.svg diff --git a/source/svg/symbols/_viewList.svg b/source/svg/Ox.UI.classic/_viewList.svg similarity index 100% rename from source/svg/symbols/_viewList.svg rename to source/svg/Ox.UI.classic/_viewList.svg diff --git a/build/svg/ox.ui.classic/symbolAdd.svg b/source/svg/Ox.UI.classic/symbolAdd.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolAdd.svg rename to source/svg/Ox.UI.classic/symbolAdd.svg diff --git a/build/svg/ox.ui.classic/symbolArrowDown.svg b/source/svg/Ox.UI.classic/symbolArrowDown.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolArrowDown.svg rename to source/svg/Ox.UI.classic/symbolArrowDown.svg diff --git a/build/svg/ox.ui.classic/symbolArrowLeft.svg b/source/svg/Ox.UI.classic/symbolArrowLeft.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolArrowLeft.svg rename to source/svg/Ox.UI.classic/symbolArrowLeft.svg diff --git a/build/svg/ox.ui.classic/symbolArrowRight.svg b/source/svg/Ox.UI.classic/symbolArrowRight.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolArrowRight.svg rename to source/svg/Ox.UI.classic/symbolArrowRight.svg diff --git a/build/svg/ox.ui.classic/symbolArrowUp.svg b/source/svg/Ox.UI.classic/symbolArrowUp.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolArrowUp.svg rename to source/svg/Ox.UI.classic/symbolArrowUp.svg diff --git a/build/svg/ox.ui.classic/symbolBracket.svg b/source/svg/Ox.UI.classic/symbolBracket.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolBracket.svg rename to source/svg/Ox.UI.classic/symbolBracket.svg diff --git a/build/svg/ox.ui.classic/symbolCenter.svg b/source/svg/Ox.UI.classic/symbolCenter.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolCenter.svg rename to source/svg/Ox.UI.classic/symbolCenter.svg diff --git a/build/svg/ox.ui.classic/symbolCheck.svg b/source/svg/Ox.UI.classic/symbolCheck.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolCheck.svg rename to source/svg/Ox.UI.classic/symbolCheck.svg diff --git a/build/svg/ox.ui.classic/symbolClose.svg b/source/svg/Ox.UI.classic/symbolClose.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolClose.svg rename to source/svg/Ox.UI.classic/symbolClose.svg diff --git a/build/svg/ox.ui.classic/symbolDelete.svg b/source/svg/Ox.UI.classic/symbolDelete.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolDelete.svg rename to source/svg/Ox.UI.classic/symbolDelete.svg diff --git a/build/svg/ox.ui.classic/symbolDown.svg b/source/svg/Ox.UI.classic/symbolDown.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolDown.svg rename to source/svg/Ox.UI.classic/symbolDown.svg diff --git a/build/svg/ox.ui.classic/symbolDownload.svg b/source/svg/Ox.UI.classic/symbolDownload.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolDownload.svg rename to source/svg/Ox.UI.classic/symbolDownload.svg diff --git a/build/svg/ox.ui.classic/symbolEdit.svg b/source/svg/Ox.UI.classic/symbolEdit.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolEdit.svg rename to source/svg/Ox.UI.classic/symbolEdit.svg diff --git a/build/svg/ox.ui.classic/symbolFill.svg b/source/svg/Ox.UI.classic/symbolFill.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolFill.svg rename to source/svg/Ox.UI.classic/symbolFill.svg diff --git a/build/svg/ox.ui.classic/symbolFind.svg b/source/svg/Ox.UI.classic/symbolFind.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolFind.svg rename to source/svg/Ox.UI.classic/symbolFind.svg diff --git a/build/svg/ox.ui.classic/symbolFit.svg b/source/svg/Ox.UI.classic/symbolFit.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolFit.svg rename to source/svg/Ox.UI.classic/symbolFit.svg diff --git a/build/svg/ox.ui.classic/symbolFlag.svg b/source/svg/Ox.UI.classic/symbolFlag.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolFlag.svg rename to source/svg/Ox.UI.classic/symbolFlag.svg diff --git a/build/svg/ox.ui.classic/symbolGoToIn.svg b/source/svg/Ox.UI.classic/symbolGoToIn.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolGoToIn.svg rename to source/svg/Ox.UI.classic/symbolGoToIn.svg diff --git a/build/svg/ox.ui.classic/symbolGoToOut.svg b/source/svg/Ox.UI.classic/symbolGoToOut.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolGoToOut.svg rename to source/svg/Ox.UI.classic/symbolGoToOut.svg diff --git a/build/svg/ox.ui.classic/symbolGrow.svg b/source/svg/Ox.UI.classic/symbolGrow.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolGrow.svg rename to source/svg/Ox.UI.classic/symbolGrow.svg diff --git a/build/svg/ox.ui.classic/symbolHelp.svg b/source/svg/Ox.UI.classic/symbolHelp.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolHelp.svg rename to source/svg/Ox.UI.classic/symbolHelp.svg diff --git a/build/svg/ox.ui.classic/symbolInfo.svg b/source/svg/Ox.UI.classic/symbolInfo.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolInfo.svg rename to source/svg/Ox.UI.classic/symbolInfo.svg diff --git a/build/svg/ox.ui.classic/symbolLeft.svg b/source/svg/Ox.UI.classic/symbolLeft.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolLeft.svg rename to source/svg/Ox.UI.classic/symbolLeft.svg diff --git a/build/svg/ox.ui.classic/symbolLike.svg b/source/svg/Ox.UI.classic/symbolLike.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolLike.svg rename to source/svg/Ox.UI.classic/symbolLike.svg diff --git a/build/svg/ox.ui.classic/symbolLoading.svg b/source/svg/Ox.UI.classic/symbolLoading.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolLoading.svg rename to source/svg/Ox.UI.classic/symbolLoading.svg diff --git a/build/svg/ox.ui.classic/symbolLock.svg b/source/svg/Ox.UI.classic/symbolLock.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolLock.svg rename to source/svg/Ox.UI.classic/symbolLock.svg diff --git a/build/svg/ox.ui.classic/symbolMount.svg b/source/svg/Ox.UI.classic/symbolMount.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolMount.svg rename to source/svg/Ox.UI.classic/symbolMount.svg diff --git a/build/svg/ox.ui.classic/symbolMute.svg b/source/svg/Ox.UI.classic/symbolMute.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolMute.svg rename to source/svg/Ox.UI.classic/symbolMute.svg diff --git a/build/svg/ox.ui.classic/symbolNone.svg b/source/svg/Ox.UI.classic/symbolNone.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolNone.svg rename to source/svg/Ox.UI.classic/symbolNone.svg diff --git a/build/svg/ox.ui.classic/symbolPause.svg b/source/svg/Ox.UI.classic/symbolPause.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolPause.svg rename to source/svg/Ox.UI.classic/symbolPause.svg diff --git a/build/svg/ox.ui.classic/symbolPlayInToOut.svg b/source/svg/Ox.UI.classic/symbolPlayInToOut.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolPlayInToOut.svg rename to source/svg/Ox.UI.classic/symbolPlayInToOut.svg diff --git a/build/svg/ox.ui.classic/symbolPublish.svg b/source/svg/Ox.UI.classic/symbolPublish.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolPublish.svg rename to source/svg/Ox.UI.classic/symbolPublish.svg diff --git a/build/svg/ox.ui.classic/symbolRedo.svg b/source/svg/Ox.UI.classic/symbolRedo.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolRedo.svg rename to source/svg/Ox.UI.classic/symbolRedo.svg diff --git a/build/svg/ox.ui.classic/symbolRemove.svg b/source/svg/Ox.UI.classic/symbolRemove.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolRemove.svg rename to source/svg/Ox.UI.classic/symbolRemove.svg diff --git a/build/svg/ox.ui.classic/symbolRight.svg b/source/svg/Ox.UI.classic/symbolRight.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolRight.svg rename to source/svg/Ox.UI.classic/symbolRight.svg diff --git a/build/svg/ox.ui.classic/symbolSelect.svg b/source/svg/Ox.UI.classic/symbolSelect.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolSelect.svg rename to source/svg/Ox.UI.classic/symbolSelect.svg diff --git a/build/svg/ox.ui.classic/symbolSet.svg b/source/svg/Ox.UI.classic/symbolSet.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolSet.svg rename to source/svg/Ox.UI.classic/symbolSet.svg diff --git a/build/svg/ox.ui.classic/symbolSetIn.svg b/source/svg/Ox.UI.classic/symbolSetIn.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolSetIn.svg rename to source/svg/Ox.UI.classic/symbolSetIn.svg diff --git a/build/svg/ox.ui.classic/symbolSetOut.svg b/source/svg/Ox.UI.classic/symbolSetOut.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolSetOut.svg rename to source/svg/Ox.UI.classic/symbolSetOut.svg diff --git a/build/svg/ox.ui.classic/symbolShrink.svg b/source/svg/Ox.UI.classic/symbolShrink.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolShrink.svg rename to source/svg/Ox.UI.classic/symbolShrink.svg diff --git a/build/svg/ox.ui.classic/symbolStar.svg b/source/svg/Ox.UI.classic/symbolStar.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolStar.svg rename to source/svg/Ox.UI.classic/symbolStar.svg diff --git a/build/svg/ox.ui.classic/symbolSync.svg b/source/svg/Ox.UI.classic/symbolSync.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolSync.svg rename to source/svg/Ox.UI.classic/symbolSync.svg diff --git a/build/svg/ox.ui.classic/symbolUndo.svg b/source/svg/Ox.UI.classic/symbolUndo.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUndo.svg rename to source/svg/Ox.UI.classic/symbolUndo.svg diff --git a/build/svg/ox.ui.classic/symbolUnlock.svg b/source/svg/Ox.UI.classic/symbolUnlock.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUnlock.svg rename to source/svg/Ox.UI.classic/symbolUnlock.svg diff --git a/build/svg/ox.ui.classic/symbolUnmount.svg b/source/svg/Ox.UI.classic/symbolUnmount.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUnmount.svg rename to source/svg/Ox.UI.classic/symbolUnmount.svg diff --git a/build/svg/ox.ui.classic/symbolUnmute.svg b/source/svg/Ox.UI.classic/symbolUnmute.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUnmute.svg rename to source/svg/Ox.UI.classic/symbolUnmute.svg diff --git a/build/svg/ox.ui.classic/symbolUp.svg b/source/svg/Ox.UI.classic/symbolUp.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUp.svg rename to source/svg/Ox.UI.classic/symbolUp.svg diff --git a/build/svg/ox.ui.classic/symbolUser.svg b/source/svg/Ox.UI.classic/symbolUser.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolUser.svg rename to source/svg/Ox.UI.classic/symbolUser.svg diff --git a/build/svg/ox.ui.classic/symbolView.svg b/source/svg/Ox.UI.classic/symbolView.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolView.svg rename to source/svg/Ox.UI.classic/symbolView.svg diff --git a/build/svg/ox.ui.classic/symbolVolumeDown.svg b/source/svg/Ox.UI.classic/symbolVolumeDown.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolVolumeDown.svg rename to source/svg/Ox.UI.classic/symbolVolumeDown.svg diff --git a/build/svg/ox.ui.classic/symbolVolumeUp.svg b/source/svg/Ox.UI.classic/symbolVolumeUp.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolVolumeUp.svg rename to source/svg/Ox.UI.classic/symbolVolumeUp.svg diff --git a/build/svg/ox.ui.classic/symbolWarning.svg b/source/svg/Ox.UI.classic/symbolWarning.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolWarning.svg rename to source/svg/Ox.UI.classic/symbolWarning.svg diff --git a/build/svg/ox.ui.classic/symbolZoom.svg b/source/svg/Ox.UI.classic/symbolZoom.svg similarity index 100% rename from build/svg/ox.ui.classic/symbolZoom.svg rename to source/svg/Ox.UI.classic/symbolZoom.svg diff --git a/source/svg/index.html b/source/svg/_index.html similarity index 100% rename from source/svg/index.html rename to source/svg/_index.html diff --git a/source/svg/loading.html b/source/svg/_loading.html similarity index 100% rename from source/svg/loading.html rename to source/svg/_loading.html diff --git a/source/svg/symbols/add.svg b/source/svg/symbols/add.svg deleted file mode 100644 index 2f6d2222..00000000 --- a/source/svg/symbols/add.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/arrowDown.svg b/source/svg/symbols/arrowDown.svg deleted file mode 100644 index e8c24cb8..00000000 --- a/source/svg/symbols/arrowDown.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/arrowLeft.svg b/source/svg/symbols/arrowLeft.svg deleted file mode 100644 index 7b4123b2..00000000 --- a/source/svg/symbols/arrowLeft.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/arrowRight.svg b/source/svg/symbols/arrowRight.svg deleted file mode 100644 index ee2294df..00000000 --- a/source/svg/symbols/arrowRight.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/arrowUp.svg b/source/svg/symbols/arrowUp.svg deleted file mode 100644 index 0ad8f1ed..00000000 --- a/source/svg/symbols/arrowUp.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/bracket.svg b/source/svg/symbols/bracket.svg deleted file mode 100644 index 87d81aeb..00000000 --- a/source/svg/symbols/bracket.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/svg/symbols/center.svg b/source/svg/symbols/center.svg deleted file mode 100644 index df83ecb3..00000000 --- a/source/svg/symbols/center.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/source/svg/symbols/check.svg b/source/svg/symbols/check.svg deleted file mode 100644 index 525b6f36..00000000 --- a/source/svg/symbols/check.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/close.svg b/source/svg/symbols/close.svg deleted file mode 100644 index 10fb83ba..00000000 --- a/source/svg/symbols/close.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/source/svg/symbols/delete.svg b/source/svg/symbols/delete.svg deleted file mode 100644 index 13cd469c..00000000 --- a/source/svg/symbols/delete.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/down.svg b/source/svg/symbols/down.svg deleted file mode 100644 index c35c4ffc..00000000 --- a/source/svg/symbols/down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/download.svg b/source/svg/symbols/download.svg deleted file mode 100644 index 8ca75c28..00000000 --- a/source/svg/symbols/download.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/edit.svg b/source/svg/symbols/edit.svg deleted file mode 100644 index 23f88d26..00000000 --- a/source/svg/symbols/edit.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/source/svg/symbols/fill.svg b/source/svg/symbols/fill.svg deleted file mode 100644 index 72391c9f..00000000 --- a/source/svg/symbols/fill.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/source/svg/symbols/find.svg b/source/svg/symbols/find.svg deleted file mode 100644 index 41d28b5f..00000000 --- a/source/svg/symbols/find.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/source/svg/symbols/fit.svg b/source/svg/symbols/fit.svg deleted file mode 100644 index 02669085..00000000 --- a/source/svg/symbols/fit.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/source/svg/symbols/flag.svg b/source/svg/symbols/flag.svg deleted file mode 100644 index d73f4d77..00000000 --- a/source/svg/symbols/flag.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/goToIn.svg b/source/svg/symbols/goToIn.svg deleted file mode 100644 index bc227b58..00000000 --- a/source/svg/symbols/goToIn.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/goToOut.svg b/source/svg/symbols/goToOut.svg deleted file mode 100644 index fa61a0a4..00000000 --- a/source/svg/symbols/goToOut.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/grow.svg b/source/svg/symbols/grow.svg deleted file mode 100644 index 316c1135..00000000 --- a/source/svg/symbols/grow.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/source/svg/symbols/help.svg b/source/svg/symbols/help.svg deleted file mode 100644 index 8342f2c4..00000000 --- a/source/svg/symbols/help.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/info.svg b/source/svg/symbols/info.svg deleted file mode 100644 index 1c7ca83b..00000000 --- a/source/svg/symbols/info.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/left.svg b/source/svg/symbols/left.svg deleted file mode 100644 index 90c5d8de..00000000 --- a/source/svg/symbols/left.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/like.svg b/source/svg/symbols/like.svg deleted file mode 100644 index e0643bb6..00000000 --- a/source/svg/symbols/like.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/loading.svg b/source/svg/symbols/loading.svg deleted file mode 100644 index e87df9ed..00000000 --- a/source/svg/symbols/loading.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/lock.svg b/source/svg/symbols/lock.svg deleted file mode 100644 index c79c2fdc..00000000 --- a/source/svg/symbols/lock.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/mount.svg b/source/svg/symbols/mount.svg deleted file mode 100644 index df315b6e..00000000 --- a/source/svg/symbols/mount.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/svg/symbols/mute.svg b/source/svg/symbols/mute.svg deleted file mode 100644 index d2e1017e..00000000 --- a/source/svg/symbols/mute.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/none.svg b/source/svg/symbols/none.svg deleted file mode 100644 index b24ffbc9..00000000 --- a/source/svg/symbols/none.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/svg/symbols/pause.svg b/source/svg/symbols/pause.svg deleted file mode 100644 index 0c7197c4..00000000 --- a/source/svg/symbols/pause.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/playInToOut.svg b/source/svg/symbols/playInToOut.svg deleted file mode 100644 index ed6c03f2..00000000 --- a/source/svg/symbols/playInToOut.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/publish.svg b/source/svg/symbols/publish.svg deleted file mode 100644 index e5da511e..00000000 --- a/source/svg/symbols/publish.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/svg/symbols/redo.svg b/source/svg/symbols/redo.svg deleted file mode 100644 index bd4f14c6..00000000 --- a/source/svg/symbols/redo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/remove.svg b/source/svg/symbols/remove.svg deleted file mode 100644 index 80eac286..00000000 --- a/source/svg/symbols/remove.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/svg/symbols/right.svg b/source/svg/symbols/right.svg deleted file mode 100644 index 719fe6fb..00000000 --- a/source/svg/symbols/right.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/source/svg/symbols/select.svg b/source/svg/symbols/select.svg deleted file mode 100644 index 3c1ef3dd..00000000 --- a/source/svg/symbols/select.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/source/svg/symbols/set.svg b/source/svg/symbols/set.svg deleted file mode 100644 index 6155f9f8..00000000 --- a/source/svg/symbols/set.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/setIn.svg b/source/svg/symbols/setIn.svg deleted file mode 100644 index 38a339e4..00000000 --- a/source/svg/symbols/setIn.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/setOut.svg b/source/svg/symbols/setOut.svg deleted file mode 100644 index 217a2c27..00000000 --- a/source/svg/symbols/setOut.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/shrink.svg b/source/svg/symbols/shrink.svg deleted file mode 100644 index 840b3864..00000000 --- a/source/svg/symbols/shrink.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/source/svg/symbols/star.svg b/source/svg/symbols/star.svg deleted file mode 100644 index 60f5386f..00000000 --- a/source/svg/symbols/star.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/source/svg/symbols/sync.svg b/source/svg/symbols/sync.svg deleted file mode 100644 index 2cd69eb0..00000000 --- a/source/svg/symbols/sync.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/undo.svg b/source/svg/symbols/undo.svg deleted file mode 100644 index 6aba640c..00000000 --- a/source/svg/symbols/undo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/unlock.svg b/source/svg/symbols/unlock.svg deleted file mode 100644 index 12c9f787..00000000 --- a/source/svg/symbols/unlock.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/unmount.svg b/source/svg/symbols/unmount.svg deleted file mode 100644 index 9377d024..00000000 --- a/source/svg/symbols/unmount.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/unmute.svg b/source/svg/symbols/unmute.svg deleted file mode 100644 index 72f5e52e..00000000 --- a/source/svg/symbols/unmute.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/up.svg b/source/svg/symbols/up.svg deleted file mode 100644 index c7547993..00000000 --- a/source/svg/symbols/up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/source/svg/symbols/user.svg b/source/svg/symbols/user.svg deleted file mode 100644 index db44b099..00000000 --- a/source/svg/symbols/user.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/source/svg/symbols/view.svg b/source/svg/symbols/view.svg deleted file mode 100644 index c1034a79..00000000 --- a/source/svg/symbols/view.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/volumeDown.svg b/source/svg/symbols/volumeDown.svg deleted file mode 100644 index a19c131f..00000000 --- a/source/svg/symbols/volumeDown.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/source/svg/symbols/volumeUp.svg b/source/svg/symbols/volumeUp.svg deleted file mode 100644 index c5cfaa20..00000000 --- a/source/svg/symbols/volumeUp.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/svg/symbols/warning.svg b/source/svg/symbols/warning.svg deleted file mode 100644 index 5f2b6c19..00000000 --- a/source/svg/symbols/warning.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/source/svg/symbols/zoom.svg b/source/svg/symbols/zoom.svg deleted file mode 100644 index be9bb043..00000000 --- a/source/svg/symbols/zoom.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/tools/build/build.py b/tools/build/build.py index 91443525..6121d1b0 100755 --- a/tools/build/build.py +++ b/tools/build/build.py @@ -3,16 +3,28 @@ import json import os import re +import shutil + +def append_file(file): + split = file.split('/')[1].split('.') + module = '.'.join([split[0], split[1]]) + if not module in files: + files[module] = [] + files[module].append(file) + +def copy_file(source, target): + print 'copying', source, 'to', target + write_file(target, read_file(source)) def read_file(file): - #print 'reading', file + print 'reading', file f = open(file) data = f.read() f.close() return data def write_file(file, data): - #print 'writing', file + print 'writing', file write_path(file) f = open(file, 'w') f.write(data) @@ -20,6 +32,8 @@ def write_file(file, data): return len(data) def write_link(source, target): + print 'linking', source, 'to', target + write_path(target) if os.path.exists(target): os.unlink(target) os.symlink(source, target) @@ -29,49 +43,73 @@ def write_path(file): if path and not os.path.exists(path): os.makedirs(path) -os.chdir(os.path.dirname(__file__)) +# doesn't work here +# os.chdir(os.path.dirname(__file__)) source_path = '../../source/' build_path = '../../build/' +files = {} -# SVG +# css +for path, dirnames, filenames in os.walk(source_path + 'css/'): + for filename in filenames: + source = os.path.join(path, filename) + target = source.replace(source_path, build_path) + copy_file(source, target) + append_file(target.replace(build_path, '')) -path = '../../source/svg/symbols/' -for dirname, dirnames, filenames in os.walk(path): +# js +filename = 'js/Ox.js' +write_link(source_path + filename, build_path + filename) +root = source_path + 'js/' +for path, dirnames, filenames in os.walk(root): + for dirname in dirnames: + if dirname[0] != '_': + if path == root and dirname != 'jquery': + source = os.path.join(path, dirname) + target = source.replace(source_path, build_path) + write_link(source, target) for filename in filenames: if filename[0] != '.' and filename[0] != '_': - svg = read_file(path + filename) - new_filename = 'symbol' + filename[0].upper() + filename[1:] - write_file(build_path + 'svg/ox.ui.classic/' + new_filename, svg) - write_file(build_path + 'svg/ox.ui.modern/' + new_filename, svg.replace('#404040', '#FFFFFF').replace('#000000', '#FFFFFF')) + if 'jquery' in path: + is_jquery = re.compile('jquery-[\d\.]+\.js').findall(filename) + is_jquery_min = re.compile('jquery-[\d\.]+\.min\.js').findall(filename) + source = os.path.join(path, filename) + if is_jquery: + target = os.path.join(path.replace(source_path, build_path), 'jquery.js') + elif is_jquery_min: + target = os.path.join(path.replace(source_path, build_path), 'jquery.min.js') + else: + target = source.replace(source_path, build_path) + copy_file(source, target) + if not is_jquery and not is_jquery_min: + files['Ox.UI'].append(target.replace(build_path, '')) + elif path != root and not '_' in path: + append_file(os.path.join(path, filename).replace(source_path, '')) -# JSON - -files = [] - -for dirname, dirnames, filenames in os.walk(source_path + 'js/'): +# png +for path, dirnames, filenames in os.walk(source_path + 'png/'): for filename in filenames: if filename[:1] != '.': - jquery = re.compile('jquery-[\d\.]+\.js').findall(filename) - if jquery or filename in ['Ox.js', 'OxUI.js']: - target = 'jquery.js' if jquery else filename - write_link(os.path.join(dirname, filename), build_path + 'js/' + target) - elif not '_' in dirname and not filename.endswith('.min.js'): - files.append(os.path.join(dirname.replace(source_path , '../source/'), filename)) + source = os.path.join(path, filename) + target = source.replace(source_path, build_path) + copy_file(source, target) + append_file(target.replace(build_path, '')) -for dirname, dirnames, filenames in os.walk(source_path + 'css'): +# svg +for path, dirnames, filenames in os.walk(source_path + 'svg/'): for filename in filenames: - if filename[:1] != '.': - write_link(os.path.join(dirname, filename), build_path + 'css/' + filename) + if filename[0] != '.' and filename[0] != '_': + source = os.path.join(path, filename) + target = source.replace(source_path, build_path) + copy_file(source, target) + append_file(target.replace(build_path, '')) + if 'Ox.UI.classic' in source: + svg = read_file(source).replace('#404040', '#FFFFFF').replace('#000000', '#FFFFFF') + target = target.replace('Ox.UI.classic', 'Ox.UI.modern') + write_file(target, svg) + append_file(target.replace(build_path, '')) -for dirname, dirnames, filenames in os.walk(build_path + 'png'): - for filename in filenames: - if filename[:1] != '.': - files.append(os.path.join(dirname.replace(build_path, ''), filename)) - -for dirname, dirnames, filenames in os.walk(build_path + 'svg'): - for filename in filenames: - if filename[:1] != '.': - files.append(os.path.join(dirname.replace(build_path, ''), filename)) - -write_file(build_path + 'json/OxUI.json', json.dumps(files, indent=4, sort_keys=True)) +for module in files: + file = build_path + 'json/' + module + '.json' + write_file(file, json.dumps(sorted(files[module]), indent=4, sort_keys=True)) diff --git a/tools/geo/ISO 3166-2/GB.json b/tools/geo/ISO 3166-2/GB.json deleted file mode 100644 index 80216f58..00000000 --- a/tools/geo/ISO 3166-2/GB.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - ENG: "England", - NIR: "Northern Ireland", - SCT: "Scotland", - WLS: "Wales" -} \ No newline at end of file diff --git a/tools/geo/geo.json b/tools/geo/geo.json deleted file mode 100644 index 5c7eeac4..00000000 --- a/tools/geo/geo.json +++ /dev/null @@ -1,17315 +0,0 @@ -{ - "AF": { - "address": "Afghanistan", - "geocode": { - "address_components": [ - { - "long_name": "Afghanistan", - "short_name": "AF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Afghanistan", - "geometry": { - "location": { - "lat": 33.93911, - "lng": 67.709953 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 33.9339665, - "lng": 67.70343125 - }, - "southWest": { - "lat": 29.3772, - "lng": 60.5170005 - }, - "northEast": { - "lat": 38.490733, - "lng": 74.889862 - } - }, - "viewport": { - "center": { - "lat": 33.80752835, - "lng": 67.709953 - }, - "southWest": { - "lat": 29.070898, - "lng": 59.514152 - }, - "northEast": { - "lat": 38.5441587, - "lng": 75.905754 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Afghanistan", - "time": 1299407532334 - }, - "AL": { - "address": "Albania", - "geocode": { - "address_components": [ - { - "long_name": "Albania", - "short_name": "AL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Albania", - "geometry": { - "location": { - "lat": 41.153332, - "lng": 20.168331 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.152782, - "lng": 20.089491 - }, - "southWest": { - "lat": 39.644482, - "lng": 19.1217 - }, - "northEast": { - "lat": 42.661082, - "lng": 21.057282 - } - }, - "viewport": { - "center": { - "lat": 41.14451285, - "lng": 20.168331 - }, - "southWest": { - "lat": 40.0691459, - "lng": 18.1193808 - }, - "northEast": { - "lat": 42.2198798, - "lng": 22.2172812 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Albania", - "time": 1299407533514 - }, - "DZ": { - "address": "Algeria", - "geocode": { - "address_components": [ - { - "long_name": "Algeria", - "short_name": "DZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Algeria", - "geometry": { - "location": { - "lat": 28.033886, - "lng": 1.659626 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 28.0948735, - "lng": 1.66591635 - }, - "southWest": { - "lat": 18.968147, - "lng": -8.6666671 - }, - "northEast": { - "lat": 37.2216, - "lng": 11.9984998 - } - }, - "viewport": { - "center": { - "lat": 27.56696825, - "lng": 1.659626 - }, - "southWest": { - "lat": 17.5190872, - "lng": -14.7319759 - }, - "northEast": { - "lat": 37.6148493, - "lng": 18.0512279 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Algeria", - "time": 1299407534648 - }, - "AD": { - "address": "Andorra", - "geocode": { - "address_components": [ - { - "long_name": "Andorra", - "short_name": "AD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Andorra", - "geometry": { - "location": { - "lat": 42.546245, - "lng": 1.601554 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.5418158, - "lng": 1.5975636 - }, - "southWest": { - "lat": 42.4287631, - "lng": 1.4087181 - }, - "northEast": { - "lat": 42.6548685, - "lng": 1.7864091 - } - }, - "viewport": { - "center": { - "lat": 42.54610645, - "lng": 1.601554 - }, - "southWest": { - "lat": 42.4145793, - "lng": 1.3454352 - }, - "northEast": { - "lat": 42.6776336, - "lng": 1.8576728 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Andorra", - "time": 1299407535722 - }, - "AO": { - "address": "Angola", - "geocode": { - "address_components": [ - { - "long_name": "Angola", - "short_name": "AO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Angola", - "geometry": { - "location": { - "lat": -11.202692, - "lng": 17.873887 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -11.2132775, - "lng": 17.7770722 - }, - "southWest": { - "lat": -18.0386106, - "lng": 11.4697 - }, - "northEast": { - "lat": -4.3879444, - "lng": 24.0844444 - } - }, - "viewport": { - "center": { - "lat": -11.14862665, - "lng": 17.873887 - }, - "southWest": { - "lat": -16.7440978, - "lng": 9.678086 - }, - "northEast": { - "lat": -5.5531555, - "lng": 26.069688 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Angola", - "time": 1299407536780 - }, - "AG": { - "address": "Antigua and Barbuda", - "geocode": { - "address_components": [ - { - "long_name": "Antigua and Barbuda", - "short_name": "AG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Antigua and Barbuda", - "geometry": { - "location": { - "lat": 17.060816, - "lng": -61.796428 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.3258973, - "lng": -62.01026915 - }, - "southWest": { - "lat": 16.9018, - "lng": -62.3810577 - }, - "northEast": { - "lat": 17.7499946, - "lng": -61.6394806 - } - }, - "viewport": { - "center": { - "lat": 17.06050395, - "lng": -61.796428 - }, - "southWest": { - "lat": 16.7191627, - "lng": -62.3086656 - }, - "northEast": { - "lat": 17.4018452, - "lng": -61.2841904 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Antigua and Barbuda", - "time": 1299407537976 - }, - "AR": { - "address": "Argentina", - "geocode": { - "address_components": [ - { - "long_name": "Argentina", - "short_name": "AR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Argentina", - "geometry": { - "location": { - "lat": -38.416097, - "lng": -63.616672 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -38.4421568, - "lng": -63.6409582 - }, - "southWest": { - "lat": -55.1035, - "lng": -73.6322 - }, - "northEast": { - "lat": -21.7808136, - "lng": -53.6497164 - } - }, - "viewport": { - "center": { - "lat": -37.86635825, - "lng": -63.616672 - }, - "southWest": { - "lat": -46.8048979, - "lng": -80.0082739 - }, - "northEast": { - "lat": -28.9278186, - "lng": -47.2250701 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Argentina", - "time": 1299407539034 - }, - "AM": { - "address": "Armenia", - "geocode": { - "address_components": [ - { - "long_name": "Armenia", - "short_name": "AM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Armenia", - "geometry": { - "location": { - "lat": 40.069099, - "lng": 45.038189 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 40.0706185, - "lng": 45.040717 - }, - "southWest": { - "lat": 38.840244, - "lng": 43.447212 - }, - "northEast": { - "lat": 41.300993, - "lng": 46.634222 - } - }, - "viewport": { - "center": { - "lat": 40.0603313, - "lng": 45.038189 - }, - "southWest": { - "lat": 38.9673766, - "lng": 42.9892388 - }, - "northEast": { - "lat": 41.153286, - "lng": 47.0871392 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Armenia", - "time": 1299407540091 - }, - "AU": { - "address": "Australia", - "geocode": { - "address_components": [ - { - "long_name": "Australia", - "short_name": "AU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Australia", - "geometry": { - "location": { - "lat": -25.274398, - "lng": 133.775136 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -26.58185, - "lng": 135.916 - }, - "southWest": { - "lat": -43.9572, - "lng": 112.5 - }, - "northEast": { - "lat": -9.2065, - "lng": 159.332 - } - }, - "viewport": { - "center": { - "lat": -23.6022752, - "lng": 133.775136 - }, - "southWest": { - "lat": -43.9215535, - "lng": 100.9919321 - }, - "northEast": { - "lat": -3.2829969, - "lng": 166.5583399 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Australia", - "time": 1299407541148 - }, - "AT": { - "address": "Austria", - "geocode": { - "address_components": [ - { - "long_name": "Austria", - "short_name": "AT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Austria", - "geometry": { - "location": { - "lat": 47.516231, - "lng": 14.550072 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 47.6965055, - "lng": 13.34576615 - }, - "southWest": { - "lat": 46.372299, - "lng": 9.5307833 - }, - "northEast": { - "lat": 49.020712, - "lng": 17.160749 - } - }, - "viewport": { - "center": { - "lat": 47.4807794, - "lng": 14.550072 - }, - "southWest": { - "lat": 45.5515199, - "lng": 10.4521715 - }, - "northEast": { - "lat": 49.4100389, - "lng": 18.6479725 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Austria", - "time": 1299407542203 - }, - "AZ": { - "address": "Azerbaijan", - "geocode": { - "address_components": [ - { - "long_name": "Azerbaijan", - "short_name": "AZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Azerbaijan", - "geometry": { - "location": { - "lat": 40.143105, - "lng": 47.576927 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 40.175745, - "lng": 47.7552415 - }, - "southWest": { - "lat": 38.39199, - "lng": 44.764683 - }, - "northEast": { - "lat": 41.9595, - "lng": 50.7458 - } - }, - "viewport": { - "center": { - "lat": 40.10803205, - "lng": 47.576927 - }, - "southWest": { - "lat": 37.9246135, - "lng": 43.4790265 - }, - "northEast": { - "lat": 42.2914506, - "lng": 51.6748275 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Azerbaijan", - "time": 1299407543328 - }, - "BS": { - "address": "Bahamas", - "geocode": { - "address_components": [ - { - "long_name": "The Bahamas", - "short_name": "BS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "The Bahamas", - "geometry": { - "location": { - "lat": 25.03428, - "lng": -77.39628 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 24.0443866, - "lng": -76.03637695 - }, - "southWest": { - "lat": 20.8536786, - "lng": -79.453125 - }, - "northEast": { - "lat": 27.2350946, - "lng": -72.6196289 - } - }, - "viewport": { - "center": { - "lat": 25.00700245, - "lng": -77.39628 - }, - "southWest": { - "lat": 22.4195947, - "lng": -81.4941805 - }, - "northEast": { - "lat": 27.5944102, - "lng": -73.2983795 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bahamas", - "time": 1299407544384 - }, - "BH": { - "address": "Bahrain", - "geocode": { - "address_components": [ - { - "long_name": "Bahrain", - "short_name": "BH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bahrain", - "geometry": { - "location": { - "lat": 25.930414, - "lng": 50.637772 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 25.93360125, - "lng": 50.5978775 - }, - "southWest": { - "lat": 25.5356264, - "lng": 50.3448486 - }, - "northEast": { - "lat": 26.3315761, - "lng": 50.8509064 - } - }, - "viewport": { - "center": { - "lat": 25.9299765, - "lng": 50.637772 - }, - "southWest": { - "lat": 25.6088684, - "lng": 50.1255344 - }, - "northEast": { - "lat": 26.2510846, - "lng": 51.1500096 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bahrain", - "time": 1299407545441 - }, - "BD": { - "address": "Bangladesh", - "geocode": { - "address_components": [ - { - "long_name": "Bangladesh", - "short_name": "BD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bangladesh", - "geometry": { - "location": { - "lat": 23.684994, - "lng": 90.356331 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 23.62704605, - "lng": 90.35627295 - }, - "southWest": { - "lat": 20.6174, - "lng": 88.0324305 - }, - "northEast": { - "lat": 26.6366921, - "lng": 92.6801154 - } - }, - "viewport": { - "center": { - "lat": 23.65882225, - "lng": 90.356331 - }, - "southWest": { - "lat": 21.0437153, - "lng": 86.2584305 - }, - "northEast": { - "lat": 26.2739292, - "lng": 94.4542315 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bangladesh", - "time": 1299407546597 - }, - "BB": { - "address": "Barbados", - "geocode": { - "address_components": [ - { - "long_name": "Barbados", - "short_name": "BB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Barbados", - "geometry": { - "location": { - "lat": 13.193887, - "lng": -59.543198 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.18817665, - "lng": -59.5352554 - }, - "southWest": { - "lat": 13.039844, - "lng": -59.6530151 - }, - "northEast": { - "lat": 13.3365093, - "lng": -59.4174957 - } - }, - "viewport": { - "center": { - "lat": 13.19387155, - "lng": -59.543198 - }, - "southWest": { - "lat": 13.1069639, - "lng": -59.6712574 - }, - "northEast": { - "lat": 13.2807792, - "lng": -59.4151386 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Barbados", - "time": 1299407547673 - }, - "BY": { - "address": "Belarus", - "geocode": { - "address_components": [ - { - "long_name": "Belarus", - "short_name": "BY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Belarus", - "geometry": { - "location": { - "lat": 53.709807, - "lng": 27.953389 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 53.7172525, - "lng": 27.97757885 - }, - "southWest": { - "lat": 51.262011, - "lng": 23.1783377 - }, - "northEast": { - "lat": 56.172494, - "lng": 32.77682 - } - }, - "viewport": { - "center": { - "lat": 53.67584595, - "lng": 27.953389 - }, - "southWest": { - "lat": 51.9849773, - "lng": 23.8554885 - }, - "northEast": { - "lat": 55.3667146, - "lng": 32.0512895 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Belarus", - "time": 1299407548734 - }, - "BE": { - "address": "Belgium", - "geocode": { - "address_components": [ - { - "long_name": "Belgium", - "short_name": "BE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Belgium", - "geometry": { - "location": { - "lat": 50.503887, - "lng": 4.469936 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 50.5010774, - "lng": 4.46600325 - }, - "southWest": { - "lat": 49.49701, - "lng": 2.5241 - }, - "northEast": { - "lat": 51.5051448, - "lng": 6.4079065 - } - }, - "viewport": { - "center": { - "lat": 50.495151, - "lng": 4.469936 - }, - "southWest": { - "lat": 49.5867465, - "lng": 2.4209858 - }, - "northEast": { - "lat": 51.4035555, - "lng": 6.5188862 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Belgium", - "time": 1299407549789 - }, - "BZ": { - "address": "Belize", - "geocode": { - "address_components": [ - { - "long_name": "Belize", - "short_name": "BZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Belize", - "geometry": { - "location": { - "lat": 17.189877, - "lng": -88.49765 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.19100825, - "lng": -88.2679696 - }, - "southWest": { - "lat": 15.8861967, - "lng": -89.2276392 - }, - "northEast": { - "lat": 18.4958198, - "lng": -87.3083 - } - }, - "viewport": { - "center": { - "lat": 17.1848523, - "lng": -88.49765 - }, - "southWest": { - "lat": 15.8205441, - "lng": -90.5466002 - }, - "northEast": { - "lat": 18.5491605, - "lng": -86.4486998 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Belize", - "time": 1299407550845 - }, - "BJ": { - "address": "Benin", - "geocode": { - "address_components": [ - { - "long_name": "Benin", - "short_name": "BJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Benin", - "geometry": { - "location": { - "lat": 9.30769, - "lng": 2.315834 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.3072717, - "lng": 2.3100051 - }, - "southWest": { - "lat": 6.2061, - "lng": 0.7766672 - }, - "northEast": { - "lat": 12.4084434, - "lng": 3.843343 - } - }, - "viewport": { - "center": { - "lat": 9.29633685, - "lng": 2.315834 - }, - "southWest": { - "lat": 6.4786055, - "lng": -1.7820665 - }, - "northEast": { - "lat": 12.1140682, - "lng": 6.4137345 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Benin", - "time": 1299407552046 - }, - "BT": { - "address": "Bhutan", - "geocode": { - "address_components": [ - { - "long_name": "Bhutan", - "short_name": "BT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bhutan", - "geometry": { - "location": { - "lat": 27.514162, - "lng": 90.433601 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 27.5314205, - "lng": 90.4358528 - }, - "southWest": { - "lat": 26.702016, - "lng": 88.7464735 - }, - "northEast": { - "lat": 28.360825, - "lng": 92.1252321 - } - }, - "viewport": { - "center": { - "lat": 27.5068701, - "lng": 90.433601 - }, - "southWest": { - "lat": 26.2402593, - "lng": 88.3846508 - }, - "northEast": { - "lat": 28.7734809, - "lng": 92.4825512 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bhutan", - "time": 1299407553105 - }, - "BO": { - "address": "Bolivia", - "geocode": { - "address_components": [ - { - "long_name": "Bolivia", - "short_name": "BO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bolivia", - "geometry": { - "location": { - "lat": -16.290154, - "lng": -63.588653 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -16.29027765, - "lng": -63.54917355 - }, - "southWest": { - "lat": -22.9011111, - "lng": -69.6427924 - }, - "northEast": { - "lat": -9.6794442, - "lng": -57.4555547 - } - }, - "viewport": { - "center": { - "lat": -16.21375755, - "lng": -63.588653 - }, - "southWest": { - "lat": -21.6896525, - "lng": -71.784454 - }, - "northEast": { - "lat": -10.7378626, - "lng": -55.392852 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bolivia", - "time": 1299407554368 - }, - "BA": { - "address": "Bosnia and Herzegovina", - "geocode": { - "address_components": [ - { - "long_name": "Bosnia and Herzegovina", - "short_name": "BA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bosnia and Herzegovina", - "geometry": { - "location": { - "lat": 43.915886, - "lng": 17.679076 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 43.91655975, - "lng": 17.6756085 - }, - "southWest": { - "lat": 42.5565375, - "lng": 15.729282 - }, - "northEast": { - "lat": 45.276582, - "lng": 19.621935 - } - }, - "viewport": { - "center": { - "lat": 43.90699295, - "lng": 17.679076 - }, - "southWest": { - "lat": 42.8781642, - "lng": 15.6301258 - }, - "northEast": { - "lat": 44.9358217, - "lng": 19.7280262 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bosnia and Herzegovina", - "time": 1299407555497 - }, - "BW": { - "address": "Botswana", - "geocode": { - "address_components": [ - { - "long_name": "Botswana", - "short_name": "BW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Botswana", - "geometry": { - "location": { - "lat": -22.328474, - "lng": 24.684866 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -22.33682125, - "lng": 24.68765185 - }, - "southWest": { - "lat": -26.8958336, - "lng": 20 - }, - "northEast": { - "lat": -17.7778089, - "lng": 29.3753037 - } - }, - "viewport": { - "center": { - "lat": -22.3034725, - "lng": 24.684866 - }, - "southWest": { - "lat": -24.9449662, - "lng": 20.5869655 - }, - "northEast": { - "lat": -19.6619788, - "lng": 28.7827665 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Botswana", - "time": 1299407556554 - }, - "BR": { - "address": "Brazil", - "geocode": { - "address_components": [ - { - "long_name": "Brazil", - "short_name": "BR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Brazil", - "geometry": { - "location": { - "lat": -14.235004, - "lng": -51.92528 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -14.408749, - "lng": -54.0422085 - }, - "southWest": { - "lat": -34.0891, - "lng": -73.982817 - }, - "northEast": { - "lat": 5.271602, - "lng": -34.1016 - } - }, - "viewport": { - "center": { - "lat": -13.2119549, - "lng": -51.92528 - }, - "southWest": { - "lat": -34.8610625, - "lng": -84.7084839 - }, - "northEast": { - "lat": 8.4371527, - "lng": -19.1420761 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Brazil", - "time": 1299407557888 - }, - "BN": { - "address": "Brunei", - "geocode": { - "address_components": [ - { - "long_name": "Brunei Darussalam", - "short_name": "BN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Brunei Darussalam", - "geometry": { - "location": { - "lat": 4.535277, - "lng": 114.727669 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 4.550154, - "lng": 114.71938115 - }, - "southWest": { - "lat": 4.002508, - "lng": 114.0752 - }, - "northEast": { - "lat": 5.0978, - "lng": 115.3635623 - } - }, - "viewport": { - "center": { - "lat": 4.5351893, - "lng": 114.727669 - }, - "southWest": { - "lat": 4.1792539, - "lng": 114.2154314 - }, - "northEast": { - "lat": 4.8911247, - "lng": 115.2399066 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Brunei", - "time": 1299407559059 - }, - "BG": { - "address": "Bulgaria", - "geocode": { - "address_components": [ - { - "long_name": "Bulgaria", - "short_name": "BG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bulgaria", - "geometry": { - "location": { - "lat": 42.733883, - "lng": 25.48583 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.72551555, - "lng": 25.54255035 - }, - "southWest": { - "lat": 41.2358638, - "lng": 22.3559007 - }, - "northEast": { - "lat": 44.2151673, - "lng": 28.7292 - } - }, - "viewport": { - "center": { - "lat": 42.69840915, - "lng": 25.48583 - }, - "southWest": { - "lat": 40.6003808, - "lng": 21.3879295 - }, - "northEast": { - "lat": 44.7964375, - "lng": 29.5837305 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bulgaria", - "time": 1299407560119 - }, - "BF": { - "address": "Burkina Faso", - "geocode": { - "address_components": [ - { - "long_name": "Burkina Faso", - "short_name": "BF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Burkina Faso", - "geometry": { - "location": { - "lat": 12.238333, - "lng": -1.561593 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.23949995, - "lng": -1.5584094 - }, - "southWest": { - "lat": 9.3938889, - "lng": -5.5211114 - }, - "northEast": { - "lat": 15.085111, - "lng": 2.4042926 - } - }, - "viewport": { - "center": { - "lat": 12.2235969, - "lng": -1.561593 - }, - "southWest": { - "lat": 9.4331182, - "lng": -5.6594935 - }, - "northEast": { - "lat": 15.0140756, - "lng": 2.5363075 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Burkina Faso", - "time": 1299407561182 - }, - "BI": { - "address": "Burundi", - "geocode": { - "address_components": [ - { - "long_name": "Burundi", - "short_name": "BI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Burundi", - "geometry": { - "location": { - "lat": -3.373056, - "lng": 29.918886 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -3.3795835, - "lng": 29.92719015 - }, - "southWest": { - "lat": -4.4611114, - "lng": 29.0004914 - }, - "northEast": { - "lat": -2.2980556, - "lng": 30.8538889 - } - }, - "viewport": { - "center": { - "lat": -3.3727946, - "lng": 29.918886 - }, - "southWest": { - "lat": -4.0856505, - "lng": 28.8944109 - }, - "northEast": { - "lat": -2.6599387, - "lng": 30.9433611 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Burundi", - "time": 1299407562238 - }, - "KH": { - "address": "Cambodia", - "geocode": { - "address_components": [ - { - "long_name": "Cambodia", - "short_name": "KH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cambodia", - "geometry": { - "location": { - "lat": 12.565679, - "lng": 104.990963 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 11.9340895, - "lng": 104.9806145 - }, - "southWest": { - "lat": 9.178, - "lng": 102.333542 - }, - "northEast": { - "lat": 14.690179, - "lng": 107.627687 - } - }, - "viewport": { - "center": { - "lat": 12.55057395, - "lng": 104.990963 - }, - "southWest": { - "lat": 9.7635934, - "lng": 100.8930625 - }, - "northEast": { - "lat": 15.3375545, - "lng": 109.0888635 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cambodia", - "time": 1299407563605 - }, - "CM": { - "address": "Cameroon", - "geocode": { - "address_components": [ - { - "long_name": "Cameroon", - "short_name": "CM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cameroon", - "geometry": { - "location": { - "lat": 7.369722, - "lng": 12.354722 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 7.36805635, - "lng": 12.30041095 - }, - "southWest": { - "lat": 1.6527778, - "lng": 8.3936 - }, - "northEast": { - "lat": 13.0833349, - "lng": 16.2072219 - } - }, - "viewport": { - "center": { - "lat": 7.333637, - "lng": 12.354722 - }, - "southWest": { - "lat": 1.6769977, - "lng": 4.158921 - }, - "northEast": { - "lat": 12.9902763, - "lng": 20.550523 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cameroon", - "time": 1299407564683 - }, - "CA": { - "address": "Canada", - "geocode": { - "address_components": [ - { - "long_name": "Canada", - "short_name": "CA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Canada", - "geometry": { - "location": { - "lat": 56.130366, - "lng": -106.346771 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 62.65721395, - "lng": -95.9896625 - }, - "southWest": { - "lat": 41.6763279, - "lng": -141.002725 - }, - "northEast": { - "lat": 83.6381, - "lng": -50.9766 - } - }, - "viewport": { - "center": { - "lat": 48.13000075, - "lng": -106.346771 - }, - "southWest": { - "lat": 21.8769939, - "lng": -171.9131788 - }, - "northEast": { - "lat": 74.3830076, - "lng": -40.7803632 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Canada", - "time": 1299407565783 - }, - "CV": { - "address": "Cape Verde", - "geocode": { - "address_components": [ - { - "long_name": "Cape Verde", - "short_name": "CV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cape Verde", - "geometry": { - "location": { - "lat": 16.002082, - "lng": -24.013197 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 16.0231249, - "lng": -23.98864745 - }, - "southWest": { - "lat": 14.7270734, - "lng": -25.3839111 - }, - "northEast": { - "lat": 17.3191764, - "lng": -22.5933838 - } - }, - "viewport": { - "center": { - "lat": 15.99736605, - "lng": -24.013197 - }, - "southWest": { - "lat": 14.6246052, - "lng": -26.0621472 - }, - "northEast": { - "lat": 17.3701269, - "lng": -21.9642468 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cape Verde", - "time": 1299407566839 - }, - "CF": { - "address": "Central African Republic", - "geocode": { - "address_components": [ - { - "long_name": "Central African Republic", - "short_name": "CF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Central African Republic", - "geometry": { - "location": { - "lat": 6.611111, - "lng": 20.939444 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 6.6196732, - "lng": 20.9393309 - }, - "southWest": { - "lat": 2.2213894, - "lng": 14.4144436 - }, - "northEast": { - "lat": 11.017957, - "lng": 27.4642182 - } - }, - "viewport": { - "center": { - "lat": 6.5786709, - "lng": 20.939444 - }, - "southWest": { - "lat": 0.9129005, - "lng": 12.743643 - }, - "northEast": { - "lat": 12.2444413, - "lng": 29.135245 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Central African Republic", - "time": 1299407567894 - }, - "TD": { - "address": "Chad", - "geocode": { - "address_components": [ - { - "long_name": "Chad", - "short_name": "TD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Chad", - "geometry": { - "location": { - "lat": 15.454166, - "lng": 18.732207 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.446105, - "lng": 18.7350005 - }, - "southWest": { - "lat": 7.442975, - "lng": 13.47 - }, - "northEast": { - "lat": 23.449235, - "lng": 24.000001 - } - }, - "viewport": { - "center": { - "lat": 15.38129295, - "lng": 18.732207 - }, - "southWest": { - "lat": 9.8827721, - "lng": 10.536406 - }, - "northEast": { - "lat": 20.8798138, - "lng": 26.928008 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Chad", - "time": 1299407568953 - }, - "CL": { - "address": "Chile", - "geocode": { - "address_components": [ - { - "long_name": "Chile", - "short_name": "CL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Chile", - "geometry": { - "location": { - "lat": -35.675147, - "lng": -71.542969 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -36.82191595, - "lng": -88.1804 - }, - "southWest": { - "lat": -56.1455, - "lng": -110.0281 - }, - "northEast": { - "lat": -17.4983319, - "lng": -66.3327 - } - }, - "viewport": { - "center": { - "lat": -33.59889785, - "lng": -71.542969 - }, - "southWest": { - "lat": -51.9984098, - "lng": -104.3261729 - }, - "northEast": { - "lat": -15.1993859, - "lng": -38.7597651 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Chile", - "time": 1299407570008 - }, - "CN": { - "address": "China", - "geocode": { - "address_components": [ - { - "long_name": "China", - "short_name": "CN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "China", - "geometry": { - "location": { - "lat": 35.86166, - "lng": 104.195397 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.780287, - "lng": 104.13611185 - }, - "southWest": { - "lat": 17.9996, - "lng": 73.4994137 - }, - "northEast": { - "lat": 53.560974, - "lng": 134.77281 - } - }, - "viewport": { - "center": { - "lat": 33.78040535, - "lng": 104.195397 - }, - "southWest": { - "lat": 15.4210976, - "lng": 71.4121931 - }, - "northEast": { - "lat": 52.1397131, - "lng": 136.9786009 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "China", - "time": 1299407571066 - }, - "CO": { - "address": "Colombia", - "geocode": { - "address_components": [ - { - "long_name": "Colombia", - "short_name": "CO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Colombia", - "geometry": { - "location": { - "lat": 4.570868, - "lng": -74.297333 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 4.645345, - "lng": -74.3410086 - }, - "southWest": { - "lat": -4.22711, - "lng": -81.8317 - }, - "northEast": { - "lat": 13.5178, - "lng": -66.8503172 - } - }, - "viewport": { - "center": { - "lat": 4.5483355, - "lng": -74.297333 - }, - "southWest": { - "lat": -1.1370918, - "lng": -82.493134 - }, - "northEast": { - "lat": 10.2337628, - "lng": -66.101532 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Colombia", - "time": 1299407572127 - }, - "KM": { - "address": "Comoros", - "geocode": { - "address_components": [ - { - "long_name": "Comoros", - "short_name": "KM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Comoros", - "geometry": { - "location": { - "lat": -11.875001, - "lng": 43.872219 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -11.9030461, - "lng": 43.8807678 - }, - "southWest": { - "lat": -12.4687601, - "lng": 43.1968689 - }, - "northEast": { - "lat": -11.3373321, - "lng": 44.5646667 - } - }, - "viewport": { - "center": { - "lat": -11.8741049, - "lng": 43.872219 - }, - "southWest": { - "lat": -12.5729169, - "lng": 42.8477439 - }, - "northEast": { - "lat": -11.1752929, - "lng": 44.8966941 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Comoros", - "time": 1299407573228 - }, - "CR": { - "address": "Costa Rica", - "geocode": { - "address_components": [ - { - "long_name": "Costa Rica", - "short_name": "CR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Costa Rica", - "geometry": { - "location": { - "lat": 9.748917, - "lng": -83.753428 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.5953678, - "lng": -84.2816 - }, - "southWest": { - "lat": 7.9722, - "lng": -86.0449 - }, - "northEast": { - "lat": 11.2185356, - "lng": -82.5183 - } - }, - "viewport": { - "center": { - "lat": 9.74594705, - "lng": -83.753428 - }, - "southWest": { - "lat": 8.3384864, - "lng": -85.8023782 - }, - "northEast": { - "lat": 11.1534077, - "lng": -81.7044778 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Costa Rica", - "time": 1299407574388 - }, - "CI": { - "address": "Côte d'Ivoire", - "geocode": { - "address_components": [ - { - "long_name": "Côte d'Ivoire", - "short_name": "CI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Côte d'Ivoire", - "geometry": { - "location": { - "lat": 7.539989, - "lng": -5.54708 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 7.4665075, - "lng": -5.54491855 - }, - "southWest": { - "lat": 4.193, - "lng": -8.602059 - }, - "northEast": { - "lat": 10.740015, - "lng": -2.4877781 - } - }, - "viewport": { - "center": { - "lat": 7.53073605, - "lng": -5.54708 - }, - "southWest": { - "lat": 4.7001208, - "lng": -9.6449805 - }, - "northEast": { - "lat": 10.3613513, - "lng": -1.4491795 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Côte d'Ivoire", - "time": 1299407575474 - }, - "HR": { - "address": "Croatia", - "geocode": { - "address_components": [ - { - "long_name": "Croatia", - "short_name": "HR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Croatia", - "geometry": { - "location": { - "lat": 45.1, - "lng": 15.2 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 44.4674948, - "lng": 16.407009 - }, - "southWest": { - "lat": 42.38, - "lng": 13.3649 - }, - "northEast": { - "lat": 46.5549896, - "lng": 19.449118 - } - }, - "viewport": { - "center": { - "lat": 45.06441335, - "lng": 15.2 - }, - "southWest": { - "lat": 43.0481272, - "lng": 11.1020995 - }, - "northEast": { - "lat": 47.0806995, - "lng": 19.2979005 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Croatia", - "time": 1299407576547 - }, - "CU": { - "address": "Cuba", - "geocode": { - "address_components": [ - { - "long_name": "Cuba", - "short_name": "CU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cuba", - "geometry": { - "location": { - "lat": 21.521757, - "lng": -77.781167 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 21.51525, - "lng": -79.563 - }, - "southWest": { - "lat": 19.6529, - "lng": -85.1715 - }, - "northEast": { - "lat": 23.3776, - "lng": -73.9545 - } - }, - "viewport": { - "center": { - "lat": 21.4974781, - "lng": -77.781167 - }, - "southWest": { - "lat": 18.8409932, - "lng": -81.8790675 - }, - "northEast": { - "lat": 24.153963, - "lng": -73.6832665 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cuba", - "time": 1299407577808 - }, - "CY": { - "address": "Cyprus", - "geocode": { - "address_components": [ - { - "long_name": "Cyprus", - "short_name": "CY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cyprus", - "geometry": { - "location": { - "lat": 35.126413, - "lng": 33.429859 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.1688, - "lng": 33.4252 - }, - "southWest": { - "lat": 34.6304, - "lng": 32.2459 - }, - "northEast": { - "lat": 35.7072, - "lng": 34.6045 - } - }, - "viewport": { - "center": { - "lat": 35.1243188, - "lng": 33.429859 - }, - "southWest": { - "lat": 34.5402633, - "lng": 32.4053839 - }, - "northEast": { - "lat": 35.7083743, - "lng": 34.4543341 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cyprus", - "time": 1299407578869 - }, - "CZ": { - "address": "Czech Republic", - "geocode": { - "address_components": [ - { - "long_name": "Czech Republic", - "short_name": "CZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Czech Republic", - "geometry": { - "location": { - "lat": 49.817492, - "lng": 15.472962 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 49.80358975, - "lng": 15.4751136 - }, - "southWest": { - "lat": 48.5515315, - "lng": 12.0909912 - }, - "northEast": { - "lat": 51.055648, - "lng": 18.859236 - } - }, - "viewport": { - "center": { - "lat": 49.78240355, - "lng": 15.472962 - }, - "southWest": { - "lat": 47.9392277, - "lng": 11.3750615 - }, - "northEast": { - "lat": 51.6255794, - "lng": 19.5708625 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Czech Republic", - "time": 1299407579942 - }, - "CD": { - "address": "Republic of the Congo", - "geocode": { - "address_components": [ - { - "long_name": "Congo", - "short_name": "CG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Congo", - "geometry": { - "location": { - "lat": -0.228021, - "lng": 15.827659 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -0.6916721, - "lng": 14.88090555 - }, - "southWest": { - "lat": -5.0964, - "lng": 11.1182 - }, - "northEast": { - "lat": 3.7130558, - "lng": 18.6436111 - } - }, - "viewport": { - "center": { - "lat": -0.2277379, - "lng": 15.827659 - }, - "southWest": { - "lat": -3.0829781, - "lng": 11.7297585 - }, - "northEast": { - "lat": 2.6275023, - "lng": 19.9255595 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Republic of the Congo", - "time": 1299407683326 - }, - "DK": { - "address": "Denmark", - "geocode": { - "address_components": [ - { - "long_name": "Denmark", - "short_name": "DK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Denmark", - "geometry": { - "location": { - "lat": 56.26392, - "lng": 9.501785 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 56.23008, - "lng": 10.511155 - }, - "southWest": { - "lat": 54.4317, - "lng": 7.8552 - }, - "northEast": { - "lat": 58.02846, - "lng": 13.16711 - } - }, - "viewport": { - "center": { - "lat": 56.23104085, - "lng": 9.501785 - }, - "southWest": { - "lat": 54.6444104, - "lng": 5.4038845 - }, - "northEast": { - "lat": 57.8176713, - "lng": 13.5996855 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Denmark", - "time": 1299407582073 - }, - "DJ": { - "address": "Djibouti", - "geocode": { - "address_components": [ - { - "long_name": "Djibouti", - "short_name": "DJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Djibouti", - "geometry": { - "location": { - "lat": 11.825138, - "lng": 42.590275 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 11.8228205, - "lng": 42.6218111 - }, - "southWest": { - "lat": 10.9319442, - "lng": 41.7597222 - }, - "northEast": { - "lat": 12.7136968, - "lng": 43.4839 - } - }, - "viewport": { - "center": { - "lat": 11.82424545, - "lng": 42.590275 - }, - "southWest": { - "lat": 11.1253059, - "lng": 41.5657999 - }, - "northEast": { - "lat": 12.523185, - "lng": 43.6147501 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Djibouti", - "time": 1299407583140 - }, - "DM": { - "address": "Dominica", - "geocode": { - "address_components": [ - { - "long_name": "Dominica", - "short_name": "DM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Dominica", - "geometry": { - "location": { - "lat": 15.414999, - "lng": -61.370976 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.42773695, - "lng": -61.3568306 - }, - "southWest": { - "lat": 15.20169, - "lng": -61.484108 - }, - "northEast": { - "lat": 15.6537839, - "lng": -61.2295532 - } - }, - "viewport": { - "center": { - "lat": 15.4149277, - "lng": -61.370976 - }, - "southWest": { - "lat": 15.2428225, - "lng": -61.6270948 - }, - "northEast": { - "lat": 15.5870329, - "lng": -61.1148572 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Dominica", - "time": 1299407584207 - }, - "DO": { - "address": "Dominican Republic", - "geocode": { - "address_components": [ - { - "long_name": "Dominican Republic", - "short_name": "DO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Dominican Republic", - "geometry": { - "location": { - "lat": 18.735693, - "lng": -70.162651 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.6698995, - "lng": -70.130055 - }, - "southWest": { - "lat": 17.3611, - "lng": -72.00751 - }, - "northEast": { - "lat": 19.978699, - "lng": -68.2526 - } - }, - "viewport": { - "center": { - "lat": 18.7302795, - "lng": -70.162651 - }, - "southWest": { - "lat": 17.377849, - "lng": -72.2116012 - }, - "northEast": { - "lat": 20.08271, - "lng": -68.1137008 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Dominican Republic", - "time": 1299407585266 - }, - "EC": { - "address": "Ecuador", - "geocode": { - "address_components": [ - { - "long_name": "Ecuador", - "short_name": "EC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ecuador", - "geometry": { - "location": { - "lat": -1.831239, - "lng": -78.183406 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -1.3594255, - "lng": -83.896297 - }, - "southWest": { - "lat": -5.014351, - "lng": -92.6038 - }, - "northEast": { - "lat": 2.2955, - "lng": -75.188794 - } - }, - "viewport": { - "center": { - "lat": -1.82217975, - "lng": -78.183406 - }, - "southWest": { - "lat": -7.5227342, - "lng": -86.379207 - }, - "northEast": { - "lat": 3.8783747, - "lng": -69.987605 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Ecuador", - "time": 1299407586330 - }, - "EG": { - "address": "Egypt", - "geocode": { - "address_components": [ - { - "long_name": "Egypt", - "short_name": "EG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Egypt", - "geometry": { - "location": { - "lat": 26.820553, - "lng": 30.802498 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 26.9061, - "lng": 30.8761982 - }, - "southWest": { - "lat": 22, - "lng": 24.6954964 - }, - "northEast": { - "lat": 31.8122, - "lng": 37.0569 - } - }, - "viewport": { - "center": { - "lat": 26.7062285, - "lng": 30.802498 - }, - "southWest": { - "lat": 21.6129146, - "lng": 22.606697 - }, - "northEast": { - "lat": 31.7995424, - "lng": 38.998299 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Egypt", - "time": 1299407587403 - }, - "SV": { - "address": "El Salvador", - "geocode": { - "address_components": [ - { - "long_name": "El Salvador", - "short_name": "SV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "El Salvador", - "geometry": { - "location": { - "lat": 13.794185, - "lng": -88.89653 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.74870075, - "lng": -88.93025 - }, - "southWest": { - "lat": 13.0474, - "lng": -90.1923 - }, - "northEast": { - "lat": 14.4500015, - "lng": -87.6682 - } - }, - "viewport": { - "center": { - "lat": 13.79315455, - "lng": -88.89653 - }, - "southWest": { - "lat": 13.0996552, - "lng": -89.9210051 - }, - "northEast": { - "lat": 14.4866539, - "lng": -87.8720549 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "El Salvador", - "time": 1299407588469 - }, - "GQ": { - "address": "Equatorial Guinea", - "geocode": { - "address_components": [ - { - "long_name": "Equatorial Guinea", - "short_name": "GQ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Equatorial Guinea", - "geometry": { - "location": { - "lat": 1.650801, - "lng": 10.267895 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 1.144, - "lng": 8.4478943 - }, - "southWest": { - "lat": -1.5475, - "lng": 5.5419 - }, - "northEast": { - "lat": 3.8355, - "lng": 11.3538886 - } - }, - "viewport": { - "center": { - "lat": 1.64875275, - "lng": 10.267895 - }, - "southWest": { - "lat": -1.205327, - "lng": 6.1699945 - }, - "northEast": { - "lat": 4.5028325, - "lng": 14.3657955 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Equatorial Guinea", - "time": 1299407589542 - }, - "ER": { - "address": "Eritrea", - "geocode": { - "address_components": [ - { - "long_name": "Eritrea", - "short_name": "ER", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Eritrea", - "geometry": { - "location": { - "lat": 15.179384, - "lng": 39.782334 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.1719615, - "lng": 39.83726665 - }, - "southWest": { - "lat": 12.354723, - "lng": 36.4433333 - }, - "northEast": { - "lat": 17.9892, - "lng": 43.2312 - } - }, - "viewport": { - "center": { - "lat": 15.1614076, - "lng": 39.782334 - }, - "southWest": { - "lat": 12.4056064, - "lng": 35.6844335 - }, - "northEast": { - "lat": 17.9172088, - "lng": 43.8802345 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Eritrea", - "time": 1299407590608 - }, - "EE": { - "address": "Estonia", - "geocode": { - "address_components": [ - { - "long_name": "Estonia", - "short_name": "EE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Estonia", - "geometry": { - "location": { - "lat": 58.595272, - "lng": 25.013607 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 58.62040775, - "lng": 24.9321195 - }, - "southWest": { - "lat": 57.5093155, - "lng": 21.6541 - }, - "northEast": { - "lat": 59.7315, - "lng": 28.210139 - } - }, - "viewport": { - "center": { - "lat": 58.5636088, - "lng": 25.013607 - }, - "southWest": { - "lat": 57.0748905, - "lng": 20.9157065 - }, - "northEast": { - "lat": 60.0523271, - "lng": 29.1115075 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Estonia", - "time": 1299407591671 - }, - "ET": { - "address": "Ethiopia", - "geocode": { - "address_components": [ - { - "long_name": "Ethiopia", - "short_name": "ET", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ethiopia", - "geometry": { - "location": { - "lat": 9.145, - "lng": 40.489673 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.14917505, - "lng": 40.4955555 - }, - "southWest": { - "lat": 3.4041356, - "lng": 32.9911111 - }, - "northEast": { - "lat": 14.8942145, - "lng": 47.9999999 - } - }, - "viewport": { - "center": { - "lat": 9.10048795, - "lng": 40.489673 - }, - "southWest": { - "lat": 3.4690657, - "lng": 32.293872 - }, - "northEast": { - "lat": 14.7319102, - "lng": 48.685474 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Ethiopia", - "time": 1299407593431 - }, - "FJ": { - "address": "Fiji", - "geocode": { - "address_components": [ - { - "long_name": "Fiji", - "short_name": "FJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Fiji", - "geometry": { - "location": { - "lat": -17.713371, - "lng": 178.065032 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -16.5541835, - "lng": 179.46166995 - }, - "southWest": { - "lat": -20.8998713, - "lng": 176.7919922 - }, - "northEast": { - "lat": -12.2084957, - "lng": -177.8686523 - } - }, - "viewport": { - "center": { - "lat": -17.6927531, - "lng": 178.065032 - }, - "southWest": { - "lat": -20.4128576, - "lng": 173.9671285 - }, - "northEast": { - "lat": -14.9726486, - "lng": -177.8370645 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Fiji", - "time": 1299407594514 - }, - "FI": { - "address": "Finland", - "geocode": { - "address_components": [ - { - "long_name": "Finland", - "short_name": "FI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Finland", - "geometry": { - "location": { - "lat": 61.92411, - "lng": 25.748151 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 64.8897466, - "lng": 25.39835 - }, - "southWest": { - "lat": 59.6872, - "lng": 19.2096 - }, - "northEast": { - "lat": 70.0922932, - "lng": 31.5871 - } - }, - "viewport": { - "center": { - "lat": 61.45155625, - "lng": 25.748151 - }, - "southWest": { - "lat": 56.0544274, - "lng": 9.3565491 - }, - "northEast": { - "lat": 66.8486851, - "lng": 42.1397529 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Finland", - "time": 1299407595591 - }, - "FR": { - "address": "France", - "geocode": { - "address_components": [ - { - "long_name": "France", - "short_name": "FR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "France", - "geometry": { - "location": { - "lat": 46.227638, - "lng": 2.213749 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.22475, - "lng": 2.0517 - }, - "southWest": { - "lat": 41.3253, - "lng": -5.5591 - }, - "northEast": { - "lat": 51.1242, - "lng": 9.6625 - } - }, - "viewport": { - "center": { - "lat": 46.08558305, - "lng": 2.213749 - }, - "southWest": { - "lat": 42.1331639, - "lng": -5.982052 - }, - "northEast": { - "lat": 50.0380022, - "lng": 10.40955 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "France", - "time": 1299407596655 - }, - "GA": { - "address": "Gabon", - "geocode": { - "address_components": [ - { - "long_name": "Gabon", - "short_name": "GA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Gabon", - "geometry": { - "location": { - "lat": -0.803689, - "lng": 11.609444 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -0.9193278, - "lng": 11.47077805 - }, - "southWest": { - "lat": -4.1656, - "lng": 8.421 - }, - "northEast": { - "lat": 2.3269444, - "lng": 14.5205561 - } - }, - "viewport": { - "center": { - "lat": -0.8026914, - "lng": 11.609444 - }, - "southWest": { - "lat": -3.6576738, - "lng": 7.5115435 - }, - "northEast": { - "lat": 2.052291, - "lng": 15.7073445 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Gabon", - "time": 1299407597713 - }, - "GM": { - "address": "Gambia", - "geocode": { - "address_components": [ - { - "long_name": "The Gambia", - "short_name": "GM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "The Gambia", - "geometry": { - "location": { - "lat": 13.443182, - "lng": -15.310139 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.4181446, - "lng": -15.3725053 - }, - "southWest": { - "lat": 13.0099, - "lng": -16.9464 - }, - "northEast": { - "lat": 13.8263892, - "lng": -13.7986106 - } - }, - "viewport": { - "center": { - "lat": 13.44217585, - "lng": -15.310139 - }, - "southWest": { - "lat": 12.7476465, - "lng": -16.3346141 - }, - "northEast": { - "lat": 14.1367052, - "lng": -14.2856639 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Gambia", - "time": 1299407598839 - }, - "GE": { - "address": "Georgia, Europe", - "geocode": { - "address_components": [ - { - "long_name": "Georgia", - "short_name": "GE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Georgia", - "geometry": { - "location": { - "lat": 42.315407, - "lng": 43.356892 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.3204665, - "lng": 43.3576595 - }, - "southWest": { - "lat": 41.054942, - "lng": 39.9792 - }, - "northEast": { - "lat": 43.585991, - "lng": 46.736119 - } - }, - "viewport": { - "center": { - "lat": 42.3065467, - "lng": 43.356892 - }, - "southWest": { - "lat": 41.2504575, - "lng": 41.3079418 - }, - "northEast": { - "lat": 43.3626359, - "lng": 45.4058422 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Georgia", - "time": 1299407599958 - }, - "DE": { - "address": "Germany", - "geocode": { - "address_components": [ - { - "long_name": "Germany", - "short_name": "DE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Germany", - "geometry": { - "location": { - "lat": 51.165691, - "lng": 10.451526 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 51.1758135, - "lng": 10.454045 - }, - "southWest": { - "lat": 47.270127, - "lng": 5.8662579 - }, - "northEast": { - "lat": 55.0815, - "lng": 15.0418321 - } - }, - "viewport": { - "center": { - "lat": 51.02672705, - "lng": 10.451526 - }, - "southWest": { - "lat": 47.4430843, - "lng": 2.255725 - }, - "northEast": { - "lat": 54.6103698, - "lng": 18.647327 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Germany", - "time": 1299407601051 - }, - "GH": { - "address": "Ghana", - "geocode": { - "address_components": [ - { - "long_name": "Ghana", - "short_name": "GH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ghana", - "geometry": { - "location": { - "lat": 7.946527, - "lng": -1.023194 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 7.90028375, - "lng": -1.02480065 - }, - "southWest": { - "lat": 4.6339, - "lng": -3.2491669 - }, - "northEast": { - "lat": 11.1666675, - "lng": 1.1995656 - } - }, - "viewport": { - "center": { - "lat": 7.9367876, - "lng": -1.023194 - }, - "southWest": { - "lat": 5.1088976, - "lng": -5.1210945 - }, - "northEast": { - "lat": 10.7646776, - "lng": 3.0747065 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Ghana", - "time": 1299407602115 - }, - "GR": { - "address": "Greece", - "geocode": { - "address_components": [ - { - "long_name": "Greece", - "short_name": "GR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Greece", - "geometry": { - "location": { - "lat": 39.074208, - "lng": 21.824312 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 38.1456728, - "lng": 23.87945 - }, - "southWest": { - "lat": 34.5428, - "lng": 19.3098 - }, - "northEast": { - "lat": 41.7485456, - "lng": 28.4491 - } - }, - "viewport": { - "center": { - "lat": 38.93513915, - "lng": 21.824312 - }, - "southWest": { - "lat": 34.5015673, - "lng": 13.628511 - }, - "northEast": { - "lat": 43.368711, - "lng": 30.020113 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Greece", - "time": 1299407603172 - }, - "GD": { - "address": "Grenada", - "geocode": { - "address_components": [ - { - "long_name": "Grenada", - "short_name": "GD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Grenada", - "geometry": { - "location": { - "lat": 12.262776, - "lng": -61.604171 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.2751013, - "lng": -61.58403395 - }, - "southWest": { - "lat": 11.9829051, - "lng": -61.8059921 - }, - "northEast": { - "lat": 12.5672975, - "lng": -61.3620758 - } - }, - "viewport": { - "center": { - "lat": 12.26271825, - "lng": -61.604171 - }, - "southWest": { - "lat": 12.088264, - "lng": -61.8602898 - }, - "northEast": { - "lat": 12.4371725, - "lng": -61.3480522 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Grenada", - "time": 1299407604229 - }, - "GT": { - "address": "Guatemala", - "geocode": { - "address_components": [ - { - "long_name": "Guatemala", - "short_name": "GT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guatemala", - "geometry": { - "location": { - "lat": 15.783471, - "lng": -90.230759 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.7228486, - "lng": -90.2348 - }, - "southWest": { - "lat": 13.63, - "lng": -92.2714 - }, - "northEast": { - "lat": 17.8156972, - "lng": -88.1982 - } - }, - "viewport": { - "center": { - "lat": 15.7788128, - "lng": -90.230759 - }, - "southWest": { - "lat": 14.4045604, - "lng": -92.2797092 - }, - "northEast": { - "lat": 17.1530652, - "lng": -88.1818088 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guatemala", - "time": 1299407605288 - }, - "GN": { - "address": "Guinea", - "geocode": { - "address_components": [ - { - "long_name": "Guinea", - "short_name": "GN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guinea", - "geometry": { - "location": { - "lat": 9.945587, - "lng": -9.696645 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.93420465, - "lng": -11.4641943 - }, - "southWest": { - "lat": 7.190909, - "lng": -15.282 - }, - "northEast": { - "lat": 12.6775003, - "lng": -7.6463886 - } - }, - "viewport": { - "center": { - "lat": 9.9334862, - "lng": -9.696645 - }, - "southWest": { - "lat": 7.1210623, - "lng": -13.7945455 - }, - "northEast": { - "lat": 12.7459101, - "lng": -5.5987445 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guinea", - "time": 1299407606347 - }, - "GW": { - "address": "Guinea-Bissau", - "geocode": { - "address_components": [ - { - "long_name": "Guinea-Bissau", - "short_name": "GW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guinea-Bissau", - "geometry": { - "location": { - "lat": 11.803749, - "lng": -15.180413 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 11.69966125, - "lng": -15.2974778 - }, - "southWest": { - "lat": 10.7146, - "lng": -16.9519 - }, - "northEast": { - "lat": 12.6847225, - "lng": -13.6430556 - } - }, - "viewport": { - "center": { - "lat": 11.80018555, - "lng": -15.180413 - }, - "southWest": { - "lat": 10.4022967, - "lng": -17.2293632 - }, - "northEast": { - "lat": 13.1980744, - "lng": -13.1314628 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guinea-Bissau", - "time": 1299407607406 - }, - "GY": { - "address": "Guyana", - "geocode": { - "address_components": [ - { - "long_name": "Guyana", - "short_name": "GY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guyana", - "geometry": { - "location": { - "lat": 4.860416, - "lng": -58.93018 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 4.943462, - "lng": -58.9530125 - }, - "southWest": { - "lat": 1.164724, - "lng": -61.414905 - }, - "northEast": { - "lat": 8.7222, - "lng": -56.49112 - } - }, - "viewport": { - "center": { - "lat": 4.8544109, - "lng": -58.93018 - }, - "southWest": { - "lat": 2.0093985, - "lng": -63.0280805 - }, - "northEast": { - "lat": 7.6994233, - "lng": -54.8322795 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guyana", - "time": 1299407608463 - }, - "HT": { - "address": "Haiti", - "geocode": { - "address_components": [ - { - "long_name": "Haiti", - "short_name": "HT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Haiti", - "geometry": { - "location": { - "lat": 18.971187, - "lng": -72.285215 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 19.0352, - "lng": -73.114977 - }, - "southWest": { - "lat": 17.9422, - "lng": -74.6082 - }, - "northEast": { - "lat": 20.1282, - "lng": -71.621754 - } - }, - "viewport": { - "center": { - "lat": 18.96571565, - "lng": -72.285215 - }, - "southWest": { - "lat": 17.6151813, - "lng": -74.3341652 - }, - "northEast": { - "lat": 20.31625, - "lng": -70.2362648 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Haiti", - "time": 1299407609519 - }, - "VA": { - "address": "Holy See", - "geocode": { - "address_components": [ - { - "long_name": "Vatican City", - "short_name": "VA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Vatican City", - "geometry": { - "location": { - "lat": 41.902916, - "lng": 12.453389 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.903842, - "lng": 12.4520838 - }, - "southWest": { - "lat": 41.9002147, - "lng": 12.4458426 - }, - "northEast": { - "lat": 41.9074693, - "lng": 12.458325 - } - }, - "viewport": { - "center": { - "lat": 41.90291545, - "lng": 12.453389 - }, - "southWest": { - "lat": 41.8946108, - "lng": 12.4373816 - }, - "northEast": { - "lat": 41.9112201, - "lng": 12.4693964 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Holy See", - "time": 1299407610576 - }, - "HN": { - "address": "Honduras", - "geocode": { - "address_components": [ - { - "long_name": "Honduras", - "short_name": "HN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Honduras", - "geometry": { - "location": { - "lat": 15.199999, - "lng": -86.241905 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.2260123, - "lng": -86.208624 - }, - "southWest": { - "lat": 12.9842246, - "lng": -89.355148 - }, - "northEast": { - "lat": 17.4678, - "lng": -83.0621 - } - }, - "viewport": { - "center": { - "lat": 15.1820005, - "lng": -86.241905 - }, - "southWest": { - "lat": 12.426468, - "lng": -90.3398055 - }, - "northEast": { - "lat": 17.937533, - "lng": -82.1440045 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Honduras", - "time": 1299407611635 - }, - "HU": { - "address": "Hungary", - "geocode": { - "address_components": [ - { - "long_name": "Hungary", - "short_name": "HU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Hungary", - "geometry": { - "location": { - "lat": 47.162494, - "lng": 19.503304 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 47.1611785, - "lng": 19.5059576 - }, - "southWest": { - "lat": 45.737124, - "lng": 16.1136813 - }, - "northEast": { - "lat": 48.585233, - "lng": 22.8982339 - } - }, - "viewport": { - "center": { - "lat": 47.12700685, - "lng": 19.503304 - }, - "southWest": { - "lat": 45.1847879, - "lng": 15.4054035 - }, - "northEast": { - "lat": 49.0692258, - "lng": 23.6012045 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Hungary", - "time": 1299407612692 - }, - "IS": { - "address": "Iceland", - "geocode": { - "address_components": [ - { - "long_name": "Iceland", - "short_name": "IS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Iceland", - "geometry": { - "location": { - "lat": 64.963051, - "lng": -19.020835 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 64.86425, - "lng": -19.24805 - }, - "southWest": { - "lat": 62.4819, - "lng": -26.2573 - }, - "northEast": { - "lat": 67.2466, - "lng": -12.2388 - } - }, - "viewport": { - "center": { - "lat": 63.2181791, - "lng": -19.020835 - }, - "southWest": { - "lat": 53.3865478, - "lng": -51.8040389 - }, - "northEast": { - "lat": 73.0498104, - "lng": 13.7623689 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Iceland", - "time": 1299407613747 - }, - "IN": { - "address": "India", - "geocode": { - "address_components": [ - { - "long_name": "India", - "short_name": "IN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "India", - "geometry": { - "location": { - "lat": 20.593684, - "lng": 78.96288 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 20.98492825, - "lng": 82.7526275 - }, - "southWest": { - "lat": 6.4627, - "lng": 68.1097 - }, - "northEast": { - "lat": 35.5071565, - "lng": 97.395555 - } - }, - "viewport": { - "center": { - "lat": 20.223799, - "lng": 78.96288 - }, - "southWest": { - "lat": 9.5812245, - "lng": 62.5712781 - }, - "northEast": { - "lat": 30.8663735, - "lng": 95.3544819 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "India", - "time": 1299407614821 - }, - "ID": { - "address": "Indonesia", - "geocode": { - "address_components": [ - { - "long_name": "Indonesia", - "short_name": "ID", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Indonesia", - "geometry": { - "location": { - "lat": -0.789275, - "lng": 113.921327 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -2.44565, - "lng": 117.8888 - }, - "southWest": { - "lat": -11.1083, - "lng": 94.7351 - }, - "northEast": { - "lat": 6.217, - "lng": 141.0425 - } - }, - "viewport": { - "center": { - "lat": -0.77383915, - "lng": 113.921327 - }, - "southWest": { - "lat": -12.1235867, - "lng": 97.5297251 - }, - "northEast": { - "lat": 10.5759084, - "lng": 130.3129289 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Indonesia", - "time": 1299407615956 - }, - "IR": { - "address": "Iran", - "geocode": { - "address_components": [ - { - "long_name": "Iran", - "short_name": "IR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Iran", - "geometry": { - "location": { - "lat": 32.427908, - "lng": 53.688046 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 32.29418775, - "lng": 53.6826137 - }, - "southWest": { - "lat": 24.8067, - "lng": 44.0318908 - }, - "northEast": { - "lat": 39.7816755, - "lng": 63.3333366 - } - }, - "viewport": { - "center": { - "lat": 32.299345, - "lng": 53.688046 - }, - "southWest": { - "lat": 27.4806828, - "lng": 45.492245 - }, - "northEast": { - "lat": 37.1180072, - "lng": 61.883847 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Iran", - "time": 1299407617014 - }, - "IQ": { - "address": "Iraq", - "geocode": { - "address_components": [ - { - "long_name": "Iraq", - "short_name": "IQ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Iraq", - "geometry": { - "location": { - "lat": 33.223191, - "lng": 43.679291 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 33.22107, - "lng": 43.714387 - }, - "southWest": { - "lat": 29.061208, - "lng": 38.793674 - }, - "northEast": { - "lat": 37.380932, - "lng": 48.6351 - } - }, - "viewport": { - "center": { - "lat": 33.0929944, - "lng": 43.679291 - }, - "southWest": { - "lat": 28.3170871, - "lng": 35.48349 - }, - "northEast": { - "lat": 37.8689017, - "lng": 51.875092 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Iraq", - "time": 1299407618070 - }, - "IE": { - "address": "Ireland", - "geocode": { - "address_components": [ - { - "long_name": "Ireland", - "short_name": "IE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ireland", - "geometry": { - "location": { - "lat": 53.41291, - "lng": -8.24389 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 53.3834, - "lng": -8.21775 - }, - "southWest": { - "lat": 51.3066, - "lng": -10.7666 - }, - "northEast": { - "lat": 55.4602, - "lng": -5.6689 - } - }, - "viewport": { - "center": { - "lat": 53.37884055, - "lng": -8.24389 - }, - "southWest": { - "lat": 51.6760697, - "lng": -12.3417905 - }, - "northEast": { - "lat": 55.0816114, - "lng": -4.1459895 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Ireland", - "time": 1299407619128 - }, - "IL": { - "address": "Israel", - "geocode": { - "address_components": [ - { - "long_name": "Israel", - "short_name": "IL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Israel", - "geometry": { - "location": { - "lat": 31.046051, - "lng": 34.851612 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 31.4062525, - "lng": 35.0810585 - }, - "southWest": { - "lat": 29.4797, - "lng": 34.267387 - }, - "northEast": { - "lat": 33.332805, - "lng": 35.89473 - } - }, - "viewport": { - "center": { - "lat": 31.0381871, - "lng": 34.851612 - }, - "southWest": { - "lat": 29.8146123, - "lng": 32.8026618 - }, - "northEast": { - "lat": 32.2617619, - "lng": 36.9005622 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Israel", - "time": 1299407620184 - }, - "IT": { - "address": "Italy", - "geocode": { - "address_components": [ - { - "long_name": "Italy", - "short_name": "IT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Italy", - "geometry": { - "location": { - "lat": 41.87194, - "lng": 12.56738 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.7811624, - "lng": 12.71211985 - }, - "southWest": { - "lat": 36.4699, - "lng": 6.6266397 - }, - "northEast": { - "lat": 47.0924248, - "lng": 18.7976 - } - }, - "viewport": { - "center": { - "lat": 41.7306545, - "lng": 12.56738 - }, - "southWest": { - "lat": 37.4773937, - "lng": 4.371579 - }, - "northEast": { - "lat": 45.9839153, - "lng": 20.763181 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Italy", - "time": 1299407621243 - }, - "JM": { - "address": "Jamaica", - "geocode": { - "address_components": [ - { - "long_name": "Jamaica", - "short_name": "JM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Jamaica", - "geometry": { - "location": { - "lat": 18.109581, - "lng": -77.297508 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.1193337, - "lng": -77.2761154 - }, - "southWest": { - "lat": 17.6688854, - "lng": -78.4073639 - }, - "northEast": { - "lat": 18.569782, - "lng": -76.1448669 - } - }, - "viewport": { - "center": { - "lat": 18.1082663, - "lng": -77.297508 - }, - "southWest": { - "lat": 17.4295435, - "lng": -78.3219831 - }, - "northEast": { - "lat": 18.7869891, - "lng": -76.2730329 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Jamaica", - "time": 1299407622300 - }, - "JP": { - "address": "Japan", - "geocode": { - "address_components": [ - { - "long_name": "Japan", - "short_name": "JP", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Japan", - "geometry": { - "location": { - "lat": 36.204824, - "lng": 138.252924 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 34.79495095, - "lng": 136.015481 - }, - "southWest": { - "lat": 23.9207972, - "lng": 122.91 - }, - "northEast": { - "lat": 45.6691047, - "lng": 149.120962 - } - }, - "viewport": { - "center": { - "lat": 35.6670333, - "lng": 138.252924 - }, - "southWest": { - "lat": 26.4661367, - "lng": 121.8613221 - }, - "northEast": { - "lat": 44.8679299, - "lng": 154.6445259 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Japan", - "time": 1299407623356 - }, - "JO": { - "address": "Jordan", - "geocode": { - "address_components": [ - { - "long_name": "Jordan", - "short_name": "JO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Jordan", - "geometry": { - "location": { - "lat": 30.585164, - "lng": 36.238414 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 31.2798855, - "lng": 37.122627 - }, - "southWest": { - "lat": 29.185036, - "lng": 34.9441 - }, - "northEast": { - "lat": 33.374735, - "lng": 39.301154 - } - }, - "viewport": { - "center": { - "lat": 30.55399725, - "lng": 36.238414 - }, - "southWest": { - "lat": 28.0954495, - "lng": 32.1405135 - }, - "northEast": { - "lat": 33.012545, - "lng": 40.3363145 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Jordan", - "time": 1299407624413 - }, - "KZ": { - "address": "Kazakhstan", - "geocode": { - "address_components": [ - { - "long_name": "Kazakhstan", - "short_name": "KZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kazakhstan", - "geometry": { - "location": { - "lat": 48.019573, - "lng": 66.923684 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 48.005284, - "lng": 66.9045435 - }, - "southWest": { - "lat": 40.568584, - "lng": 46.493672 - }, - "northEast": { - "lat": 55.441984, - "lng": 87.315415 - } - }, - "viewport": { - "center": { - "lat": 47.45627535, - "lng": 66.923684 - }, - "southWest": { - "lat": 39.8088216, - "lng": 50.5320821 - }, - "northEast": { - "lat": 55.1037291, - "lng": 83.3152859 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kazakhstan", - "time": 1299407625471 - }, - "KE": { - "address": "Kenya", - "geocode": { - "address_components": [ - { - "long_name": "Kenya", - "short_name": "KE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kenya", - "geometry": { - "location": { - "lat": -0.023559, - "lng": 37.906193 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 0.1582837, - "lng": 37.90832645 - }, - "southWest": { - "lat": -4.7243, - "lng": 33.9098213 - }, - "northEast": { - "lat": 5.0408674, - "lng": 41.9068316 - } - }, - "viewport": { - "center": { - "lat": -0.02352975, - "lng": 37.906193 - }, - "southWest": { - "lat": -2.8787924, - "lng": 33.8082925 - }, - "northEast": { - "lat": 2.8317329, - "lng": 42.0040935 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kenya", - "time": 1299407626528 - }, - "KI": { - "address": "Kiribati", - "geocode": { - "address_components": [ - { - "long_name": "Kiribati", - "short_name": "KI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kiribati", - "geometry": { - "location": { - "lat": -3.370417, - "lng": -168.734039 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -4.34287315, - "lng": -167.67333985 - }, - "southWest": { - "lat": -14.0939572, - "lng": 168.8818359 - }, - "northEast": { - "lat": 5.4082109, - "lng": -144.2285156 - } - }, - "viewport": { - "center": { - "lat": -3.30464105, - "lng": -168.734039 - }, - "southWest": { - "lat": -14.6363125, - "lng": 174.8743591 - }, - "northEast": { - "lat": 8.0270304, - "lng": -152.3424371 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kiribati", - "time": 1299407627586 - }, - "KW": { - "address": "Kuwait", - "geocode": { - "address_components": [ - { - "long_name": "Kuwait", - "short_name": "KW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kuwait", - "geometry": { - "location": { - "lat": 29.31166, - "lng": 47.481766 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 29.3140728, - "lng": 47.53572 - }, - "southWest": { - "lat": 28.5244463, - "lng": 46.55304 - }, - "northEast": { - "lat": 30.1036993, - "lng": 48.5184 - } - }, - "viewport": { - "center": { - "lat": 29.3097604, - "lng": 47.481766 - }, - "southWest": { - "lat": 28.6870854, - "lng": 46.4572909 - }, - "northEast": { - "lat": 29.9324354, - "lng": 48.5062411 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kuwait", - "time": 1299407628646 - }, - "KG": { - "address": "Kyrgyzstan", - "geocode": { - "address_components": [ - { - "long_name": "Kyrgyzstan", - "short_name": "KG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kyrgyzstan", - "geometry": { - "location": { - "lat": 41.20438, - "lng": 74.766098 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.2228055, - "lng": 74.7723855 - }, - "southWest": { - "lat": 39.180254, - "lng": 69.250998 - }, - "northEast": { - "lat": 43.265357, - "lng": 80.293773 - } - }, - "viewport": { - "center": { - "lat": 41.16910795, - "lng": 74.766098 - }, - "southWest": { - "lat": 39.0201377, - "lng": 70.6681975 - }, - "northEast": { - "lat": 43.3180782, - "lng": 78.8639985 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kyrgyzstan", - "time": 1299407629705 - }, - "LA": { - "address": "Laos", - "geocode": { - "address_components": [ - { - "long_name": "Laos", - "short_name": "LA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Laos", - "geometry": { - "location": { - "lat": 19.85627, - "lng": 102.495496 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.206296, - "lng": 103.889022 - }, - "southWest": { - "lat": 13.90972, - "lng": 100.083214 - }, - "northEast": { - "lat": 22.502872, - "lng": 107.69483 - } - }, - "viewport": { - "center": { - "lat": 19.83354315, - "lng": 102.495496 - }, - "southWest": { - "lat": 17.1477762, - "lng": 98.3975955 - }, - "northEast": { - "lat": 22.5193101, - "lng": 106.5933965 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Laos", - "time": 1299407630763 - }, - "LV": { - "address": "Latvia", - "geocode": { - "address_components": [ - { - "long_name": "Latvia", - "short_name": "LV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Latvia", - "geometry": { - "location": { - "lat": 56.879635, - "lng": 24.603189 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 56.8802147, - "lng": 24.5440015 - }, - "southWest": { - "lat": 55.6748581, - "lng": 20.8466 - }, - "northEast": { - "lat": 58.0855713, - "lng": 28.241403 - } - }, - "viewport": { - "center": { - "lat": 56.84705615, - "lng": 24.603189 - }, - "southWest": { - "lat": 55.2860351, - "lng": 20.5052885 - }, - "northEast": { - "lat": 58.4080772, - "lng": 28.7010895 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Latvia", - "time": 1299407631818 - }, - "LB": { - "address": "Lebanon", - "geocode": { - "address_components": [ - { - "long_name": "Lebanon", - "short_name": "LB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Lebanon", - "geometry": { - "location": { - "lat": 33.854721, - "lng": 35.862285 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 33.87355785, - "lng": 35.84741 - }, - "southWest": { - "lat": 33.0550257, - "lng": 35.0711 - }, - "northEast": { - "lat": 34.69209, - "lng": 36.62372 - } - }, - "viewport": { - "center": { - "lat": 33.85266225, - "lng": 35.862285 - }, - "southWest": { - "lat": 33.2596323, - "lng": 34.8378099 - }, - "northEast": { - "lat": 34.4456922, - "lng": 36.8867601 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Lebanon", - "time": 1299407632875 - }, - "LS": { - "address": "Lesotho", - "geocode": { - "address_components": [ - { - "long_name": "Lesotho", - "short_name": "LS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Lesotho", - "geometry": { - "location": { - "lat": -29.609988, - "lng": 28.233608 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -29.62318995, - "lng": 28.23346995 - }, - "southWest": { - "lat": -30.6755788, - "lng": 27.0112311 - }, - "northEast": { - "lat": -28.5708011, - "lng": 29.4557088 - } - }, - "viewport": { - "center": { - "lat": -29.60234275, - "lng": 28.233608 - }, - "southWest": { - "lat": -30.8439863, - "lng": 26.1846578 - }, - "northEast": { - "lat": -28.3606992, - "lng": 30.2825582 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Lesotho", - "time": 1299407633930 - }, - "LR": { - "address": "Liberia", - "geocode": { - "address_components": [ - { - "long_name": "Liberia", - "short_name": "LR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Liberia", - "geometry": { - "location": { - "lat": 6.428055, - "lng": -9.429499 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 6.410843, - "lng": -9.4524275 - }, - "southWest": { - "lat": 4.2697, - "lng": -11.5356 - }, - "northEast": { - "lat": 8.551986, - "lng": -7.369255 - } - }, - "viewport": { - "center": { - "lat": 6.4260751, - "lng": -9.429499 - }, - "southWest": { - "lat": 5.0069746, - "lng": -11.4784492 - }, - "northEast": { - "lat": 7.8451756, - "lng": -7.3805488 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Liberia", - "time": 1299407635004 - }, - "LY": { - "address": "Libya", - "geocode": { - "address_components": [ - { - "long_name": "Libya", - "short_name": "LY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Libya", - "geometry": { - "location": { - "lat": 26.3351, - "lng": 17.228331 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 26.3603649, - "lng": 17.32887155 - }, - "southWest": { - "lat": 19.5004298, - "lng": 9.3891431 - }, - "northEast": { - "lat": 33.2203, - "lng": 25.2686 - } - }, - "viewport": { - "center": { - "lat": 26.22222185, - "lng": 17.228331 - }, - "southWest": { - "lat": 21.1073873, - "lng": 9.03253 - }, - "northEast": { - "lat": 31.3370564, - "lng": 25.424132 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Libya", - "time": 1299407636061 - }, - "LI": { - "address": "Liechtenstein", - "geocode": { - "address_components": [ - { - "long_name": "Liechtenstein", - "short_name": "LI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Liechtenstein", - "geometry": { - "location": { - "lat": 47.166, - "lng": 9.555373 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 47.15941835, - "lng": 9.553635 - }, - "southWest": { - "lat": 47.04829, - "lng": 9.47162 - }, - "northEast": { - "lat": 47.2705467, - "lng": 9.63565 - } - }, - "viewport": { - "center": { - "lat": 47.16596535, - "lng": 9.555373 - }, - "southWest": { - "lat": 47.1052769, - "lng": 9.4273136 - }, - "northEast": { - "lat": 47.2266538, - "lng": 9.6834324 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Liechtenstein", - "time": 1299407637121 - }, - "LT": { - "address": "Lithuania", - "geocode": { - "address_components": [ - { - "long_name": "Lithuania", - "short_name": "LT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Lithuania", - "geometry": { - "location": { - "lat": 55.169438, - "lng": 23.881275 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 55.1744947, - "lng": 23.883325 - }, - "southWest": { - "lat": 53.898672, - "lng": 20.931 - }, - "northEast": { - "lat": 56.4503174, - "lng": 26.83565 - } - }, - "viewport": { - "center": { - "lat": 55.1360627, - "lng": 23.881275 - }, - "southWest": { - "lat": 53.5043651, - "lng": 19.7833745 - }, - "northEast": { - "lat": 56.7677603, - "lng": 27.9791755 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Lithuania", - "time": 1299407638177 - }, - "LU": { - "address": "Luxembourg", - "geocode": { - "address_components": [ - { - "long_name": "Luxembourg", - "short_name": "LU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Luxembourg", - "geometry": { - "location": { - "lat": 49.815273, - "lng": 6.129583 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 49.81549, - "lng": 6.1332997 - }, - "southWest": { - "lat": 49.4480355, - "lng": 5.7356294 - }, - "northEast": { - "lat": 50.1829445, - "lng": 6.53097 - } - }, - "viewport": { - "center": { - "lat": 49.81472455, - "lng": 6.129583 - }, - "southWest": { - "lat": 49.5843327, - "lng": 5.6173454 - }, - "northEast": { - "lat": 50.0451164, - "lng": 6.6418206 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Luxembourg", - "time": 1299407639235 - }, - "MK": { - "address": "Macedonia", - "geocode": { - "address_components": [ - { - "long_name": "Macedonia (FYROM)", - "short_name": "MK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Macedonia (FYROM)", - "geometry": { - "location": { - "lat": 41.608635, - "lng": 21.745275 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.614434, - "lng": 21.743258 - }, - "southWest": { - "lat": 40.855222, - "lng": 20.452423 - }, - "northEast": { - "lat": 42.373646, - "lng": 23.034093 - } - }, - "viewport": { - "center": { - "lat": 41.60642555, - "lng": 21.745275 - }, - "southWest": { - "lat": 41.0724876, - "lng": 20.7207999 - }, - "northEast": { - "lat": 42.1403635, - "lng": 22.7697501 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Macedonia", - "time": 1299407640290 - }, - "MG": { - "address": "Madagascar", - "geocode": { - "address_components": [ - { - "long_name": "Madagascar", - "short_name": "MG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Madagascar", - "geometry": { - "location": { - "lat": -18.766947, - "lng": 46.869107 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -18.8258, - "lng": 46.86765 - }, - "southWest": { - "lat": -26.2146, - "lng": 42.7368 - }, - "northEast": { - "lat": -11.437, - "lng": 50.9985 - } - }, - "viewport": { - "center": { - "lat": -18.6805024, - "lng": 46.869107 - }, - "southWest": { - "lat": -24.0825703, - "lng": 38.673306 - }, - "northEast": { - "lat": -13.2784345, - "lng": 55.064908 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Madagascar", - "time": 1299407641356 - }, - "MW": { - "address": "Malawi", - "geocode": { - "address_components": [ - { - "long_name": "Malawi", - "short_name": "MW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Malawi", - "geometry": { - "location": { - "lat": -13.254308, - "lng": 34.301525 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -13.2512132, - "lng": 34.3015278 - }, - "southWest": { - "lat": -17.1352783, - "lng": 32.6788892 - }, - "northEast": { - "lat": -9.3671481, - "lng": 35.9241664 - } - }, - "viewport": { - "center": { - "lat": -13.2384333, - "lng": 34.301525 - }, - "southWest": { - "lat": -16.0177585, - "lng": 30.2036245 - }, - "northEast": { - "lat": -10.4591081, - "lng": 38.3994255 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Malawi", - "time": 1299407642488 - }, - "MY": { - "address": "Malaysia", - "geocode": { - "address_components": [ - { - "long_name": "Malaysia", - "short_name": "MY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Malaysia", - "geometry": { - "location": { - "lat": 4.210484, - "lng": 101.975766 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 4.1864605, - "lng": 109.57625 - }, - "southWest": { - "lat": 0.853821, - "lng": 99.5787 - }, - "northEast": { - "lat": 7.5191, - "lng": 119.5738 - } - }, - "viewport": { - "center": { - "lat": 4.1897148, - "lng": 101.975766 - }, - "southWest": { - "lat": -1.4984411, - "lng": 93.779965 - }, - "northEast": { - "lat": 9.8778707, - "lng": 110.171567 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Malaysia", - "time": 1299407643622 - }, - "MV": { - "address": "Maldives", - "geocode": { - "address_components": [ - { - "long_name": "Maldives", - "short_name": "MV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Maldives", - "geometry": { - "location": { - "lat": 3.202778, - "lng": 73.22068 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 3.11209825, - "lng": 73.24035645 - }, - "southWest": { - "lat": -1.2907844, - "lng": 71.751709 - }, - "northEast": { - "lat": 7.5149809, - "lng": 74.7290039 - } - }, - "viewport": { - "center": { - "lat": 3.1869557, - "lng": 73.22068 - }, - "southWest": { - "lat": -2.5076424, - "lng": 65.024879 - }, - "northEast": { - "lat": 8.8815538, - "lng": 81.416481 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Maldives", - "time": 1299407644760 - }, - "ML": { - "address": "Mali", - "geocode": { - "address_components": [ - { - "long_name": "Mali", - "short_name": "ML", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mali", - "geometry": { - "location": { - "lat": 17.570692, - "lng": -3.996166 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.5739115, - "lng": -3.9861092 - }, - "southWest": { - "lat": 10.147811, - "lng": -12.238885 - }, - "northEast": { - "lat": 25.000012, - "lng": 4.2666666 - } - }, - "viewport": { - "center": { - "lat": 17.48902485, - "lng": -3.996166 - }, - "southWest": { - "lat": 12.0500355, - "lng": -12.191967 - }, - "northEast": { - "lat": 22.9280142, - "lng": 4.199635 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mali", - "time": 1299407645817 - }, - "MT": { - "address": "Malta", - "geocode": { - "address_components": [ - { - "long_name": "Malta", - "short_name": "MT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Malta", - "geometry": { - "location": { - "lat": 35.937496, - "lng": 14.375416 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.9429541, - "lng": 14.38479055 - }, - "southWest": { - "lat": 35.8038922, - "lng": 14.191582 - }, - "northEast": { - "lat": 36.082016, - "lng": 14.5779991 - } - }, - "viewport": { - "center": { - "lat": 35.93736385, - "lng": 14.375416 - }, - "southWest": { - "lat": 35.7928175, - "lng": 14.1192972 - }, - "northEast": { - "lat": 36.0819102, - "lng": 14.6315348 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Malta", - "time": 1299407646874 - }, - "MH": { - "address": "Marshall Islands", - "geocode": { - "address_components": [ - { - "long_name": "Marshall Islands", - "short_name": "MH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Marshall Islands", - "geometry": { - "location": { - "lat": 7.131474, - "lng": 171.184478 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.5896166, - "lng": 166.2286377 - }, - "southWest": { - "lat": 4.1601582, - "lng": 159.8840332 - }, - "northEast": { - "lat": 15.019075, - "lng": 172.5732422 - } - }, - "viewport": { - "center": { - "lat": 6.99338115, - "lng": 171.184478 - }, - "southWest": { - "lat": -4.2718582, - "lng": 154.7928761 - }, - "northEast": { - "lat": 18.2586205, - "lng": -172.4239201 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Marshall Islands", - "time": 1299407648005 - }, - "MR": { - "address": "Mauritania", - "geocode": { - "address_components": [ - { - "long_name": "Mauritania", - "short_name": "MR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mauritania", - "geometry": { - "location": { - "lat": 21.00789, - "lng": -10.940835 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 21.00785885, - "lng": -10.951734 - }, - "southWest": { - "lat": 14.721273, - "lng": -17.0701337 - }, - "northEast": { - "lat": 27.2944447, - "lng": -4.8333343 - } - }, - "viewport": { - "center": { - "lat": 20.91290535, - "lng": -10.940835 - }, - "southWest": { - "lat": 15.5863021, - "lng": -19.136636 - }, - "northEast": { - "lat": 26.2395086, - "lng": -2.745034 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mauritania", - "time": 1299407649062 - }, - "MU": { - "address": "Mauritius", - "geocode": { - "address_components": [ - { - "long_name": "Mauritius", - "short_name": "MU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mauritius", - "geometry": { - "location": { - "lat": -20.348404, - "lng": 57.552152 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -20.20665, - "lng": 57.6755 - }, - "southWest": { - "lat": -21.637, - "lng": 55.7666 - }, - "northEast": { - "lat": -18.7763, - "lng": 59.5844 - } - }, - "viewport": { - "center": { - "lat": -20.20665, - "lng": 57.6755 - }, - "southWest": { - "lat": -21.637, - "lng": 55.7666 - }, - "northEast": { - "lat": -18.7763, - "lng": 59.5844 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mauritius", - "time": 1299407650196 - }, - "MX": { - "address": "Mexico", - "geocode": { - "address_components": [ - { - "long_name": "Mexico", - "short_name": "MX", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mexico", - "geometry": { - "location": { - "lat": 23.634501, - "lng": -102.552784 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 23.5541315, - "lng": -102.6205 - }, - "southWest": { - "lat": 14.3895, - "lng": -118.6523 - }, - "northEast": { - "lat": 32.718763, - "lng": -86.5887 - } - }, - "viewport": { - "center": { - "lat": 23.22161605, - "lng": -102.552784 - }, - "southWest": { - "lat": 12.801132, - "lng": -118.9443859 - }, - "northEast": { - "lat": 33.6421001, - "lng": -86.1611821 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mexico", - "time": 1299407651253 - }, - "FM": { - "address": "Micronesia", - "geocode": { - "address_components": [ - { - "long_name": "Micronesia", - "short_name": "FM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Micronesia", - "geometry": { - "location": { - "lat": 7.425554, - "lng": 150.550812 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 5.21544735, - "lng": 150.2201843 - }, - "southWest": { - "lat": 0.1538084, - "lng": 136.9226074 - }, - "northEast": { - "lat": 10.2770863, - "lng": 163.5177612 - } - }, - "viewport": { - "center": { - "lat": 7.2818885, - "lng": 150.550812 - }, - "southWest": { - "lat": -3.9761569, - "lng": 134.1592101 - }, - "northEast": { - "lat": 18.5399339, - "lng": 166.9424139 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Micronesia", - "time": 1299407652309 - }, - "MD": { - "address": "Moldova", - "geocode": { - "address_components": [ - { - "long_name": "Moldova", - "short_name": "MD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Moldova", - "geometry": { - "location": { - "lat": 47.411631, - "lng": 28.369885 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.979424, - "lng": 28.389697 - }, - "southWest": { - "lat": 45.466904, - "lng": 26.616856 - }, - "northEast": { - "lat": 48.491944, - "lng": 30.162538 - } - }, - "viewport": { - "center": { - "lat": 47.4027629, - "lng": 28.369885 - }, - "southWest": { - "lat": 46.4362383, - "lng": 26.3209348 - }, - "northEast": { - "lat": 48.3692875, - "lng": 30.4188352 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Moldova", - "time": 1299407653365 - }, - "MC": { - "address": "Monaco", - "geocode": { - "address_components": [ - { - "long_name": "Monaco", - "short_name": "MC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Monaco", - "geometry": { - "location": { - "lat": 43.7384176, - "lng": 7.4246158 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 43.7378521, - "lng": 7.4258518 - }, - "southWest": { - "lat": 43.7238, - "lng": 7.4091036 - }, - "northEast": { - "lat": 43.7519042, - "lng": 7.4426 - } - }, - "viewport": { - "center": { - "lat": 43.73841705, - "lng": 7.4246158 - }, - "southWest": { - "lat": 43.7303554, - "lng": 7.4086084 - }, - "northEast": { - "lat": 43.7464787, - "lng": 7.4406232 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Monaco", - "time": 1299407654502 - }, - "MN": { - "address": "Mongolia", - "geocode": { - "address_components": [ - { - "long_name": "Mongolia", - "short_name": "MN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mongolia", - "geometry": { - "location": { - "lat": 46.862496, - "lng": 103.846656 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.86510825, - "lng": 103.8347845 - }, - "southWest": { - "lat": 41.58152, - "lng": 87.73762 - }, - "northEast": { - "lat": 52.1486965, - "lng": 119.931949 - } - }, - "viewport": { - "center": { - "lat": 46.29747625, - "lng": 103.846656 - }, - "southWest": { - "lat": 38.4820331, - "lng": 87.4550541 - }, - "northEast": { - "lat": 54.1129194, - "lng": 120.2382579 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mongolia", - "time": 1299407655560 - }, - "ME": { - "address": "Montenegro", - "geocode": { - "address_components": [ - { - "long_name": "Montenegro", - "short_name": "ME", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Montenegro", - "geometry": { - "location": { - "lat": 42.708678, - "lng": 19.37439 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.6942215, - "lng": 19.3958725 - }, - "southWest": { - "lat": 41.8297, - "lng": 18.43398 - }, - "northEast": { - "lat": 43.558743, - "lng": 20.357765 - } - }, - "viewport": { - "center": { - "lat": 42.7064601, - "lng": 19.37439 - }, - "southWest": { - "lat": 42.1817237, - "lng": 18.3499149 - }, - "northEast": { - "lat": 43.2311965, - "lng": 20.3988651 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Montenegro", - "time": 1299407656691 - }, - "MA": { - "address": "Morocco", - "geocode": { - "address_components": [ - { - "long_name": "Morocco", - "short_name": "MA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Morocco", - "geometry": { - "location": { - "lat": 31.791702, - "lng": -7.09262 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 31.80053325, - "lng": -7.1506879 - }, - "southWest": { - "lat": 27.6666665, - "lng": -13.3044 - }, - "northEast": { - "lat": 35.9344, - "lng": -0.9969758 - } - }, - "viewport": { - "center": { - "lat": 31.664517, - "lng": -7.09262 - }, - "southWest": { - "lat": 26.8123203, - "lng": -15.288421 - }, - "northEast": { - "lat": 36.5167137, - "lng": 1.103181 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Morocco", - "time": 1299407657748 - }, - "MZ": { - "address": "Mozambique", - "geocode": { - "address_components": [ - { - "long_name": "Mozambique", - "short_name": "MZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mozambique", - "geometry": { - "location": { - "lat": -18.665695, - "lng": 35.529562 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -18.64885, - "lng": 35.80463875 - }, - "southWest": { - "lat": -26.9612, - "lng": 30.2127775 - }, - "northEast": { - "lat": -10.3365, - "lng": 41.3965 - } - }, - "viewport": { - "center": { - "lat": -18.5796491, - "lng": 35.529562 - }, - "southWest": { - "lat": -23.9849332, - "lng": 27.333761 - }, - "northEast": { - "lat": -13.174365, - "lng": 43.725363 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mozambique", - "time": 1299407658807 - }, - "MM": { - "address": "Myanmar", - "geocode": { - "address_components": [ - { - "long_name": "Myanmar", - "short_name": "MM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Myanmar", - "geometry": { - "location": { - "lat": 21.913965, - "lng": 95.956223 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.99981755, - "lng": 96.67103985 - }, - "southWest": { - "lat": 9.4518, - "lng": 92.171808 - }, - "northEast": { - "lat": 28.5478351, - "lng": 101.1702717 - } - }, - "viewport": { - "center": { - "lat": 21.81568855, - "lng": 95.956223 - }, - "southWest": { - "lat": 16.5219099, - "lng": 87.760422 - }, - "northEast": { - "lat": 27.1094672, - "lng": 104.152024 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Myanmar", - "time": 1299407659870 - }, - "NA": { - "address": "Namibia", - "geocode": { - "address_components": [ - { - "long_name": "Namibia", - "short_name": "NA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Namibia", - "geometry": { - "location": { - "lat": -22.95764, - "lng": 18.49041 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -22.96170775, - "lng": 18.3663542 - }, - "southWest": { - "lat": -28.9706386, - "lng": 11.4697 - }, - "northEast": { - "lat": -16.9527769, - "lng": 25.2630084 - } - }, - "viewport": { - "center": { - "lat": -22.8556932, - "lng": 18.49041 - }, - "southWest": { - "lat": -28.1100271, - "lng": 10.294609 - }, - "northEast": { - "lat": -17.6013593, - "lng": 26.686211 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Namibia", - "time": 1299407660927 - }, - "NR": { - "address": "Nauru", - "geocode": { - "address_components": [ - { - "long_name": "Nauru", - "short_name": "NR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Nauru", - "geometry": { - "location": { - "lat": -0.522778, - "lng": 166.931503 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -0.52797995, - "lng": 166.935153 - }, - "southWest": { - "lat": -0.5580623, - "lng": 166.9071293 - }, - "northEast": { - "lat": -0.4978976, - "lng": 166.9631767 - } - }, - "viewport": { - "center": { - "lat": -0.52277795, - "lng": 166.931503 - }, - "southWest": { - "lat": -0.545093, - "lng": 166.8994882 - }, - "northEast": { - "lat": -0.5004629, - "lng": 166.9635178 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Nauru", - "time": 1299407661985 - }, - "NP": { - "address": "Nepal", - "geocode": { - "address_components": [ - { - "long_name": "Nepal", - "short_name": "NP", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Nepal", - "geometry": { - "location": { - "lat": 28.394857, - "lng": 84.124008 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 28.3973623, - "lng": 84.12576 - }, - "southWest": { - "lat": 26.3477794, - "lng": 80.0522222 - }, - "northEast": { - "lat": 30.4469452, - "lng": 88.1992978 - } - }, - "viewport": { - "center": { - "lat": 28.36509285, - "lng": 84.124008 - }, - "southWest": { - "lat": 25.8528731, - "lng": 80.0261075 - }, - "northEast": { - "lat": 30.8773126, - "lng": 88.2219085 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Nepal", - "time": 1299407663043 - }, - "NL": { - "address": "Netherlands", - "geocode": { - "address_components": [ - { - "long_name": "The Netherlands", - "short_name": "NL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "The Netherlands", - "geometry": { - "location": { - "lat": 52.132633, - "lng": 5.291266 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 52.21299185, - "lng": 5.27937025 - }, - "southWest": { - "lat": 50.7503837, - "lng": 3.3316 - }, - "northEast": { - "lat": 53.6756, - "lng": 7.2271405 - } - }, - "viewport": { - "center": { - "lat": 52.12400765, - "lng": 5.291266 - }, - "southWest": { - "lat": 51.2472913, - "lng": 3.2423158 - }, - "northEast": { - "lat": 53.000724, - "lng": 7.3402162 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Netherlands", - "time": 1299407664101 - }, - "NZ": { - "address": "New Zealand", - "geocode": { - "address_components": [ - { - "long_name": "New Zealand", - "short_name": "NZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "New Zealand", - "geometry": { - "location": { - "lat": -40.900557, - "lng": 174.885971 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -40.99315, - "lng": 172.3425 - }, - "southWest": { - "lat": -47.8427, - "lng": 165.6738 - }, - "northEast": { - "lat": -34.1436, - "lng": 179.0112 - } - }, - "viewport": { - "center": { - "lat": -40.7598895, - "lng": 174.885971 - }, - "southWest": { - "lat": -45.0769319, - "lng": 166.6901726 - }, - "northEast": { - "lat": -36.4428471, - "lng": -176.9182306 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "New Zealand", - "time": 1299407665174 - }, - "NI": { - "address": "Nicaragua", - "geocode": { - "address_components": [ - { - "long_name": "Nicaragua", - "short_name": "NI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Nicaragua", - "geometry": { - "location": { - "lat": 12.865416, - "lng": -85.207229 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.869663, - "lng": -85.0177 - }, - "southWest": { - "lat": 10.7090505, - "lng": -87.7588 - }, - "northEast": { - "lat": 15.0302755, - "lng": -82.2766 - } - }, - "viewport": { - "center": { - "lat": 12.8499748, - "lng": -85.207229 - }, - "southWest": { - "lat": 10.066277, - "lng": -89.3051295 - }, - "northEast": { - "lat": 15.6336726, - "lng": -81.1093285 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Nicaragua", - "time": 1299407666242 - }, - "NE": { - "address": "Niger", - "geocode": { - "address_components": [ - { - "long_name": "Niger", - "short_name": "NE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Niger", - "geometry": { - "location": { - "lat": 17.607789, - "lng": 8.081666 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.60390055, - "lng": 8.0828506 - }, - "southWest": { - "lat": 11.6928011, - "lng": 0.1666672 - }, - "northEast": { - "lat": 23.515, - "lng": 15.999034 - } - }, - "viewport": { - "center": { - "lat": 17.52597155, - "lng": 8.081666 - }, - "southWest": { - "lat": 12.0880921, - "lng": -0.114135 - }, - "northEast": { - "lat": 22.963851, - "lng": 16.277467 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Niger", - "time": 1299407667300 - }, - "NG": { - "address": "Nigeria", - "geocode": { - "address_components": [ - { - "long_name": "Nigeria", - "short_name": "NG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Nigeria", - "geometry": { - "location": { - "lat": 9.081999, - "lng": 8.675277 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.03585605, - "lng": 8.6775155 - }, - "southWest": { - "lat": 4.1821, - "lng": 2.676932 - }, - "northEast": { - "lat": 13.8896121, - "lng": 14.678099 - } - }, - "viewport": { - "center": { - "lat": 9.0377833, - "lng": 8.675277 - }, - "southWest": { - "lat": 3.4053741, - "lng": 0.479476 - }, - "northEast": { - "lat": 14.6701925, - "lng": 16.871078 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Nigeria", - "time": 1299407668358 - }, - "KP": { - "address": "North Korea", - "geocode": { - "address_components": [ - { - "long_name": "North Korea", - "short_name": "KP", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "North Korea", - "geometry": { - "location": { - "lat": 40.339852, - "lng": 127.510093 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 40.293345, - "lng": 127.395125 - }, - "southWest": { - "lat": 37.5751, - "lng": 124.1016 - }, - "northEast": { - "lat": 43.01159, - "lng": 130.68865 - } - }, - "viewport": { - "center": { - "lat": 40.3047385, - "lng": 127.510093 - }, - "southWest": { - "lat": 38.1276501, - "lng": 123.4121925 - }, - "northEast": { - "lat": 42.4818269, - "lng": 131.6079935 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "North Korea", - "time": 1299407669416 - }, - "NO": { - "address": "Norway", - "geocode": { - "address_components": [ - { - "long_name": "Norway", - "short_name": "NO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Norway", - "geometry": { - "location": { - "lat": 60.472024, - "lng": 8.468946 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 64.55875, - "lng": 17.70995 - }, - "southWest": { - "lat": 57.8097, - "lng": 4.0649 - }, - "northEast": { - "lat": 71.3078, - "lng": 31.355 - } - }, - "viewport": { - "center": { - "lat": 58.53054555, - "lng": 8.468946 - }, - "southWest": { - "lat": 47.1204866, - "lng": -24.3142579 - }, - "northEast": { - "lat": 69.9406045, - "lng": 41.2521499 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Norway", - "time": 1299407670471 - }, - "OM": { - "address": "Oman", - "geocode": { - "address_components": [ - { - "long_name": "Oman", - "short_name": "OM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Oman", - "geometry": { - "location": { - "lat": 21.512583, - "lng": 55.923255 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 21.44665, - "lng": 56.152 - }, - "southWest": { - "lat": 16.4572, - "lng": 52 - }, - "northEast": { - "lat": 26.4361, - "lng": 60.304 - } - }, - "viewport": { - "center": { - "lat": 21.48831245, - "lng": 55.923255 - }, - "southWest": { - "lat": 18.83166, - "lng": 51.8253545 - }, - "northEast": { - "lat": 24.1449649, - "lng": 60.0211555 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Oman", - "time": 1299407671529 - }, - "PK": { - "address": "Pakistan", - "geocode": { - "address_components": [ - { - "long_name": "Pakistan", - "short_name": "PK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Pakistan", - "geometry": { - "location": { - "lat": 30.375321, - "lng": 69.345116 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 30.3593035, - "lng": 69.3537018 - }, - "southWest": { - "lat": 23.6345, - "lng": 60.872972 - }, - "northEast": { - "lat": 37.084107, - "lng": 77.8344316 - } - }, - "viewport": { - "center": { - "lat": 30.2514273, - "lng": 69.345116 - }, - "southWest": { - "lat": 25.326729, - "lng": 61.149315 - }, - "northEast": { - "lat": 35.1761256, - "lng": 77.540917 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Pakistan", - "time": 1299407672584 - }, - "PW": { - "address": "Palau", - "geocode": { - "address_components": [ - { - "long_name": "Palau", - "short_name": "PW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Palau", - "geometry": { - "location": { - "lat": 7.51498, - "lng": 134.58252 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 6.20489455, - "lng": 133.46740725 - }, - "southWest": { - "lat": 4.1711155, - "lng": 131.8579102 - }, - "northEast": { - "lat": 8.2386736, - "lng": 135.0769043 - } - }, - "viewport": { - "center": { - "lat": 7.47819985, - "lng": 134.58252 - }, - "southWest": { - "lat": 1.8234218, - "lng": 126.386719 - }, - "northEast": { - "lat": 13.1329779, - "lng": 142.778321 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Palau", - "time": 1299407673641 - }, - "PA": { - "address": "Panama", - "geocode": { - "address_components": [ - { - "long_name": "Panama", - "short_name": "PA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Panama", - "geometry": { - "location": { - "lat": 8.537981, - "lng": -80.782127 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 8.3777, - "lng": -80.10536455 - }, - "southWest": { - "lat": 7.0409, - "lng": -83.0522411 - }, - "northEast": { - "lat": 9.7145, - "lng": -77.158488 - } - }, - "viewport": { - "center": { - "lat": 8.53536815, - "lng": -80.782127 - }, - "southWest": { - "lat": 7.1231133, - "lng": -82.8310772 - }, - "northEast": { - "lat": 9.947623, - "lng": -78.7331768 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Panama", - "time": 1299407674699 - }, - "PG": { - "address": "Papua New Guinea", - "geocode": { - "address_components": [ - { - "long_name": "Papua New Guinea", - "short_name": "PG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Papua New Guinea", - "geometry": { - "location": { - "lat": -6.314993, - "lng": 143.95555 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -6.37625, - "lng": 150.40545015 - }, - "southWest": { - "lat": -12.0823, - "lng": 140.8500003 - }, - "northEast": { - "lat": -0.6702, - "lng": 159.9609 - } - }, - "viewport": { - "center": { - "lat": -6.2839819, - "lng": 143.95555 - }, - "southWest": { - "lat": -11.9530487, - "lng": 135.759749 - }, - "northEast": { - "lat": -0.6149151, - "lng": 152.151351 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Papua New Guinea", - "time": 1299407675755 - }, - "PY": { - "address": "Paraguay", - "geocode": { - "address_components": [ - { - "long_name": "Paraguay", - "short_name": "PY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Paraguay", - "geometry": { - "location": { - "lat": -23.442503, - "lng": -58.443832 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -23.4389472, - "lng": -58.44055315 - }, - "southWest": { - "lat": -27.5883342, - "lng": -62.638051 - }, - "northEast": { - "lat": -19.2895602, - "lng": -54.2430553 - } - }, - "viewport": { - "center": { - "lat": -23.41653625, - "lng": -58.443832 - }, - "southWest": { - "lat": -26.0364681, - "lng": -62.5417325 - }, - "northEast": { - "lat": -20.7966044, - "lng": -54.3459315 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Paraguay", - "time": 1299407676813 - }, - "PE": { - "address": "Peru", - "geocode": { - "address_components": [ - { - "long_name": "Peru", - "short_name": "PE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Peru", - "geometry": { - "location": { - "lat": -9.189967, - "lng": -75.015152 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -9.2435385, - "lng": -75.03038905 - }, - "southWest": { - "lat": -18.4483, - "lng": -81.3867 - }, - "northEast": { - "lat": -0.038777, - "lng": -68.6740781 - } - }, - "viewport": { - "center": { - "lat": -9.1452435, - "lng": -75.015152 - }, - "southWest": { - "lat": -14.7759571, - "lng": -83.210953 - }, - "northEast": { - "lat": -3.5145299, - "lng": -66.819351 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Peru", - "time": 1299407677868 - }, - "PH": { - "address": "Philippines", - "geocode": { - "address_components": [ - { - "long_name": "Philippines", - "short_name": "PH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Philippines", - "geometry": { - "location": { - "lat": 12.879721, - "lng": 121.774017 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.07895, - "lng": 121.95925 - }, - "southWest": { - "lat": 4.2259, - "lng": 116.1475 - }, - "northEast": { - "lat": 19.932, - "lng": 127.771 - } - }, - "viewport": { - "center": { - "lat": 12.81807235, - "lng": 121.774017 - }, - "southWest": { - "lat": 7.2572115, - "lng": 113.578216 - }, - "northEast": { - "lat": 18.3789332, - "lng": 129.969818 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Philippines", - "time": 1299407679030 - }, - "PL": { - "address": "Poland", - "geocode": { - "address_components": [ - { - "long_name": "Poland", - "short_name": "PL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Poland", - "geometry": { - "location": { - "lat": 51.919438, - "lng": 19.145136 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 51.9537506, - "lng": 19.1341232 - }, - "southWest": { - "lat": 49.0020251, - "lng": 14.1223531 - }, - "northEast": { - "lat": 54.9054761, - "lng": 24.1458933 - } - }, - "viewport": { - "center": { - "lat": 51.7813125, - "lng": 19.145136 - }, - "southWest": { - "lat": 48.2563921, - "lng": 10.949335 - }, - "northEast": { - "lat": 55.3062329, - "lng": 27.340937 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Poland", - "time": 1299407680090 - }, - "PT": { - "address": "Portugal", - "geocode": { - "address_components": [ - { - "long_name": "Portugal", - "short_name": "PT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Portugal", - "geometry": { - "location": { - "lat": 39.399872, - "lng": -8.224454 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 37.2218524, - "lng": -18.82750455 - }, - "southWest": { - "lat": 32.2895, - "lng": -31.4648 - }, - "northEast": { - "lat": 42.1542048, - "lng": -6.1902091 - } - }, - "viewport": { - "center": { - "lat": 38.8458586, - "lng": -8.224454 - }, - "southWest": { - "lat": 30.0283977, - "lng": -24.6160559 - }, - "northEast": { - "lat": 47.6633195, - "lng": 8.1671479 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Portugal", - "time": 1299407681213 - }, - "QA": { - "address": "Qatar", - "geocode": { - "address_components": [ - { - "long_name": "Qatar", - "short_name": "QA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Qatar", - "geometry": { - "location": { - "lat": 25.354826, - "lng": 51.183884 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 25.344109, - "lng": 51.199 - }, - "southWest": { - "lat": 24.471118, - "lng": 50.7211 - }, - "northEast": { - "lat": 26.2171, - "lng": 51.6769 - } - }, - "viewport": { - "center": { - "lat": 25.353104, - "lng": 51.183884 - }, - "southWest": { - "lat": 24.7077913, - "lng": 50.1594089 - }, - "northEast": { - "lat": 25.9984167, - "lng": 52.2083591 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Qatar", - "time": 1299407682268 - }, - "RO": { - "address": "Romania", - "geocode": { - "address_components": [ - { - "long_name": "Romania", - "short_name": "RO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Romania", - "geometry": { - "location": { - "lat": 45.943161, - "lng": 24.96676 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 45.9421708, - "lng": 25.019933 - }, - "southWest": { - "lat": 43.6190676, - "lng": 20.261466 - }, - "northEast": { - "lat": 48.265274, - "lng": 29.7784 - } - }, - "viewport": { - "center": { - "lat": 45.90759275, - "lng": 24.96676 - }, - "southWest": { - "lat": 43.9212749, - "lng": 20.8688595 - }, - "northEast": { - "lat": 47.8939106, - "lng": 29.0646605 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Romania", - "time": 1299407684452 - }, - "RU": { - "address": "Russia", - "geocode": { - "address_components": [ - { - "long_name": "Russian Federation", - "short_name": "RU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Russia", - "geometry": { - "location": { - "lat": 61.52401, - "lng": 105.318756 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 61.67637185, - "lng": 105.31911 - }, - "southWest": { - "lat": 41.185353, - "lng": 19.6161 - }, - "northEast": { - "lat": 82.1673907, - "lng": -168.97788 - } - }, - "viewport": { - "center": { - "lat": 54.0833601, - "lng": 105.318756 - }, - "southWest": { - "lat": 31.2057644, - "lng": 39.7523482 - }, - "northEast": { - "lat": 76.9609558, - "lng": 170.8851638 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Russia", - "time": 1299407685507 - }, - "RW": { - "address": "Rwanda", - "geocode": { - "address_components": [ - { - "long_name": "Rwanda", - "short_name": "RW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Rwanda", - "geometry": { - "location": { - "lat": -1.940278, - "lng": 29.873888 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -1.94027805, - "lng": 29.8781097 - }, - "southWest": { - "lat": -2.8266669, - "lng": 28.8617752 - }, - "northEast": { - "lat": -1.0538892, - "lng": 30.8944442 - } - }, - "viewport": { - "center": { - "lat": -1.9401274, - "lng": 29.873888 - }, - "southWest": { - "lat": -2.6538109, - "lng": 28.8494129 - }, - "northEast": { - "lat": -1.2264439, - "lng": 30.8983631 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Rwanda", - "time": 1299407686564 - }, - "KN": { - "address": "Saint Kitts and Nevis", - "geocode": { - "address_components": [ - { - "long_name": "St Kitts and Nevis", - "short_name": "KN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Kitts and Nevis", - "geometry": { - "location": { - "lat": 17.357822, - "lng": -62.782998 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.2495996, - "lng": -62.69663415 - }, - "southWest": { - "lat": 17.0786101, - "lng": -62.86956 - }, - "northEast": { - "lat": 17.4205891, - "lng": -62.5237083 - } - }, - "viewport": { - "center": { - "lat": 17.3577428, - "lng": -62.782998 - }, - "southWest": { - "lat": 17.1873453, - "lng": -63.0391168 - }, - "northEast": { - "lat": 17.5281403, - "lng": -62.5268792 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Kitts and Nevis", - "time": 1299407687624 - }, - "LC": { - "address": "Saint Lucia", - "geocode": { - "address_components": [ - { - "long_name": "St Lucia", - "short_name": "LC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Lucia", - "geometry": { - "location": { - "lat": 13.909444, - "lng": -60.978893 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.9128528, - "lng": -60.9705162 - }, - "southWest": { - "lat": 13.704778, - "lng": -61.0812378 - }, - "northEast": { - "lat": 14.1209276, - "lng": -60.8597946 - } - }, - "viewport": { - "center": { - "lat": 13.9093791, - "lng": -60.978893 - }, - "southWest": { - "lat": 13.7360865, - "lng": -61.2350118 - }, - "northEast": { - "lat": 14.0826717, - "lng": -60.7227742 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Lucia", - "time": 1299407688698 - }, - "VC": { - "address": "Saint Vincent and the Grenadines", - "geocode": { - "address_components": [ - { - "long_name": "St Vincent and the Grenadines", - "short_name": "VC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Vincent and the Grenadines", - "geometry": { - "location": { - "lat": 12.984305, - "lng": -61.287228 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.9640062, - "lng": -61.2855148 - }, - "southWest": { - "lat": 12.5143467, - "lng": -61.4863586 - }, - "northEast": { - "lat": 13.4136657, - "lng": -61.084671 - } - }, - "viewport": { - "center": { - "lat": 12.9840614, - "lng": -61.287228 - }, - "southWest": { - "lat": 12.6361371, - "lng": -61.7994656 - }, - "northEast": { - "lat": 13.3319857, - "lng": -60.7749904 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Vincent and the Grenadines", - "time": 1299407689755 - }, - "WS": { - "address": "Samoa", - "geocode": { - "address_components": [ - { - "long_name": "Samoa", - "short_name": "WS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Samoa", - "geometry": { - "location": { - "lat": -13.759029, - "lng": -172.104629 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -13.75182305, - "lng": -172.10773945 - }, - "southWest": { - "lat": -14.0833013, - "lng": -172.8108215 - }, - "northEast": { - "lat": -13.4203448, - "lng": -171.4046574 - } - }, - "viewport": { - "center": { - "lat": -13.758772, - "lng": -172.104629 - }, - "southWest": { - "lat": -14.1055798, - "lng": -172.6168666 - }, - "northEast": { - "lat": -13.4119642, - "lng": -171.5923914 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Samoa", - "time": 1299407690813 - }, - "SM": { - "address": "San Marino", - "geocode": { - "address_components": [ - { - "long_name": "San Marino", - "short_name": "SM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "San Marino", - "geometry": { - "location": { - "lat": 43.94236, - "lng": 12.457777 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 43.9429471, - "lng": 12.4598731 - }, - "southWest": { - "lat": 43.8937645, - "lng": 12.4035885 - }, - "northEast": { - "lat": 43.9921297, - "lng": 12.5161577 - } - }, - "viewport": { - "center": { - "lat": 43.9423513, - "lng": 12.457777 - }, - "southWest": { - "lat": 43.9102146, - "lng": 12.3937473 - }, - "northEast": { - "lat": 43.974488, - "lng": 12.5218067 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "San Marino", - "time": 1299407691878 - }, - "ST": { - "address": "São Tomé and Príncipe", - "geocode": { - "address_components": [ - { - "long_name": "São Tomé and Príncipe", - "short_name": "ST", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "São Tomé and Príncipe", - "geometry": { - "location": { - "lat": 0.18636, - "lng": 6.613081 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 0.8986459, - "lng": 6.9934845 - }, - "southWest": { - "lat": -0.0988769, - "lng": 6.328125 - }, - "northEast": { - "lat": 1.8961687, - "lng": 7.658844 - } - }, - "viewport": { - "center": { - "lat": 0.18630215, - "lng": 6.613081 - }, - "southWest": { - "lat": -1.2417651, - "lng": 4.5641308 - }, - "northEast": { - "lat": 1.6143694, - "lng": 8.6620312 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "São Tomé and Príncipe", - "time": 1299407692978 - }, - "SA": { - "address": "Saudi Arabia", - "geocode": { - "address_components": [ - { - "long_name": "Saudi Arabia", - "short_name": "SA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Saudi Arabia", - "geometry": { - "location": { - "lat": 23.885942, - "lng": 45.079162 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 24.266906, - "lng": 45.09835 - }, - "southWest": { - "lat": 16.379528, - "lng": 34.53 - }, - "northEast": { - "lat": 32.154284, - "lng": 55.6667 - } - }, - "viewport": { - "center": { - "lat": 23.7808436, - "lng": 45.079162 - }, - "southWest": { - "lat": 18.5630555, - "lng": 36.883361 - }, - "northEast": { - "lat": 28.9986317, - "lng": 53.274963 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saudi Arabia", - "time": 1299407694035 - }, - "SN": { - "address": "Senegal", - "geocode": { - "address_components": [ - { - "long_name": "Senegal", - "short_name": "SN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Senegal", - "geometry": { - "location": { - "lat": 14.497401, - "lng": -14.452362 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.4789772, - "lng": -14.5183035 - }, - "southWest": { - "lat": 12.2649, - "lng": -17.688 - }, - "northEast": { - "lat": 16.6930544, - "lng": -11.348607 - } - }, - "viewport": { - "center": { - "lat": 14.48016035, - "lng": -14.452362 - }, - "southWest": { - "lat": 11.7156686, - "lng": -18.5502625 - }, - "northEast": { - "lat": 17.2446521, - "lng": -10.3544615 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Senegal", - "time": 1299407695094 - }, - "RS": { - "address": "Serbia", - "geocode": { - "address_components": [ - { - "long_name": "Serbia", - "short_name": "RS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Serbia", - "geometry": { - "location": { - "lat": 44.016521, - "lng": 21.005859 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 44.2104745, - "lng": 20.92867175 - }, - "southWest": { - "lat": 42.231503, - "lng": 18.850952 - }, - "northEast": { - "lat": 46.189446, - "lng": 23.0063915 - } - }, - "viewport": { - "center": { - "lat": 44.0076268, - "lng": 21.005859 - }, - "southWest": { - "lat": 42.9805391, - "lng": 18.9569088 - }, - "northEast": { - "lat": 45.0347145, - "lng": 23.0548092 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Serbia", - "time": 1299407696230 - }, - "SC": { - "address": "Seychelles", - "geocode": { - "address_components": [ - { - "long_name": "Seychelles", - "short_name": "SC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Seychelles", - "geometry": { - "location": { - "lat": -4.679574, - "lng": 55.491977 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -7.2741055, - "lng": 51.18804935 - }, - "southWest": { - "lat": -10.4716073, - "lng": 45.9832764 - }, - "northEast": { - "lat": -4.0766037, - "lng": 56.3928223 - } - }, - "viewport": { - "center": { - "lat": -4.58843885, - "lng": 55.491977 - }, - "southWest": { - "lat": -15.9023757, - "lng": 39.1003751 - }, - "northEast": { - "lat": 6.725498, - "lng": 71.8835789 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Seychelles", - "time": 1299407697288 - }, - "SL": { - "address": "Sierra Leone", - "geocode": { - "address_components": [ - { - "long_name": "Sierra Leone", - "short_name": "SL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sierra Leone", - "geometry": { - "location": { - "lat": 8.460555, - "lng": -11.779889 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 8.4222862, - "lng": -11.8374755 - }, - "southWest": { - "lat": 6.8446, - "lng": -13.4033 - }, - "northEast": { - "lat": 9.9999724, - "lng": -10.271651 - } - }, - "viewport": { - "center": { - "lat": 8.45796515, - "lng": -11.779889 - }, - "southWest": { - "lat": 7.0454253, - "lng": -13.8288392 - }, - "northEast": { - "lat": 9.870505, - "lng": -9.7309388 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sierra Leone", - "time": 1299407698343 - }, - "SG": { - "address": "Singapore", - "geocode": { - "address_components": [ - { - "long_name": "Singapore", - "short_name": "SG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Singapore", - "geometry": { - "location": { - "lat": 1.352083, - "lng": 103.819836 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 1.337939, - "lng": 103.839368 - }, - "southWest": { - "lat": 1.2015, - "lng": 103.5805 - }, - "northEast": { - "lat": 1.474378, - "lng": 104.098236 - } - }, - "viewport": { - "center": { - "lat": 1.35207645, - "lng": 103.819836 - }, - "southWest": { - "lat": 1.1735986, - "lng": 103.5637172 - }, - "northEast": { - "lat": 1.5305543, - "lng": 104.0759548 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Singapore", - "time": 1299407699409 - }, - "SK": { - "address": "Slovakia", - "geocode": { - "address_components": [ - { - "long_name": "Slovakia", - "short_name": "SK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Slovakia", - "geometry": { - "location": { - "lat": 48.669026, - "lng": 19.699024 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 48.67259695, - "lng": 19.69605785 - }, - "southWest": { - "lat": 47.7313888, - "lng": 16.833182 - }, - "northEast": { - "lat": 49.6138051, - "lng": 22.5589337 - } - }, - "viewport": { - "center": { - "lat": 48.6601992, - "lng": 19.699024 - }, - "southWest": { - "lat": 47.7169775, - "lng": 17.6500738 - }, - "northEast": { - "lat": 49.6034209, - "lng": 21.7479742 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Slovakia", - "time": 1299407700465 - }, - "SI": { - "address": "Slovenia", - "geocode": { - "address_components": [ - { - "long_name": "Slovenia", - "short_name": "SI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Slovenia", - "geometry": { - "location": { - "lat": 46.151241, - "lng": 14.995463 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.14907835, - "lng": 14.99299715 - }, - "southWest": { - "lat": 45.42151, - "lng": 13.3755107 - }, - "northEast": { - "lat": 46.8766467, - "lng": 16.6104836 - } - }, - "viewport": { - "center": { - "lat": 46.14234865, - "lng": 14.995463 - }, - "southWest": { - "lat": 45.1529331, - "lng": 12.9465128 - }, - "northEast": { - "lat": 47.1317642, - "lng": 17.0444132 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Slovenia", - "time": 1299407701522 - }, - "SB": { - "address": "Solomon Islands", - "geocode": { - "address_components": [ - { - "long_name": "Solomon Islands", - "short_name": "SB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Solomon Islands", - "geometry": { - "location": { - "lat": -9.64571, - "lng": 160.156194 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -9.37911295, - "lng": 161.57180785 - }, - "southWest": { - "lat": -12.6832149, - "lng": 155.1187134 - }, - "northEast": { - "lat": -6.075011, - "lng": 168.0249023 - } - }, - "viewport": { - "center": { - "lat": -9.5988504, - "lng": 160.156194 - }, - "southWest": { - "lat": -15.2221874, - "lng": 151.960393 - }, - "northEast": { - "lat": -3.9755134, - "lng": 168.351995 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Solomon Islands", - "time": 1299407702643 - }, - "SO": { - "address": "Somalia", - "geocode": { - "address_components": [ - { - "long_name": "Somalia", - "short_name": "SO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Somalia", - "geometry": { - "location": { - "lat": 5.152149, - "lng": 46.199616 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 5.2471, - "lng": 46.3040865 - }, - "southWest": { - "lat": -1.8673, - "lng": 40.994373 - }, - "northEast": { - "lat": 12.3615, - "lng": 51.6138 - } - }, - "viewport": { - "center": { - "lat": 5.12678, - "lng": 46.199616 - }, - "southWest": { - "lat": -0.5537756, - "lng": 38.003815 - }, - "northEast": { - "lat": 10.8073356, - "lng": 54.395417 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Somalia", - "time": 1299407703704 - }, - "ZA": { - "address": "South Africa", - "geocode": { - "address_components": [ - { - "long_name": "South Africa", - "short_name": "ZA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "South Africa", - "geometry": { - "location": { - "lat": -30.559482, - "lng": 22.937506 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -28.54619345, - "lng": 24.6643 - }, - "southWest": { - "lat": -34.967, - "lng": 16.2817 - }, - "northEast": { - "lat": -22.1253869, - "lng": 33.0469 - } - }, - "viewport": { - "center": { - "lat": -30.4351431, - "lng": 22.937506 - }, - "southWest": { - "lat": -35.3505839, - "lng": 14.741705 - }, - "northEast": { - "lat": -25.5197023, - "lng": 31.133307 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "South Africa", - "time": 1299407704760 - }, - "KR": { - "address": "South Korea", - "geocode": { - "address_components": [ - { - "long_name": "South Korea", - "short_name": "KR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "South Korea", - "geometry": { - "location": { - "lat": 35.907757, - "lng": 127.766922 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.81905, - "lng": 128.0072 - }, - "southWest": { - "lat": 33.0041, - "lng": 124.8541 - }, - "northEast": { - "lat": 38.634, - "lng": 131.1603 - } - }, - "viewport": { - "center": { - "lat": 35.87395405, - "lng": 127.766922 - }, - "southWest": { - "lat": 33.5606405, - "lng": 123.6690215 - }, - "northEast": { - "lat": 38.1872676, - "lng": 131.8648225 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "South Korea", - "time": 1299407705816 - }, - "ES": { - "address": "Spain", - "geocode": { - "address_components": [ - { - "long_name": "Spain", - "short_name": "ES", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Spain", - "geometry": { - "location": { - "lat": 40.463667, - "lng": -3.74922 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 40.2085, - "lng": -3.713 - }, - "southWest": { - "lat": 35.173, - "lng": -12.524 - }, - "northEast": { - "lat": 45.244, - "lng": 5.098 - } - }, - "viewport": { - "center": { - "lat": 40.2085, - "lng": -3.713 - }, - "southWest": { - "lat": 35.173, - "lng": -12.524 - }, - "northEast": { - "lat": 45.244, - "lng": 5.098 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Spain", - "time": 1299407706873 - }, - "LK": { - "address": "Sri Lanka", - "geocode": { - "address_components": [ - { - "long_name": "Sri Lanka", - "short_name": "LK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sri Lanka", - "geometry": { - "location": { - "lat": 7.873054, - "lng": 80.771797 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 7.857685, - "lng": 80.70625 - }, - "southWest": { - "lat": 5.6816, - "lng": 79.2677 - }, - "northEast": { - "lat": 10.03377, - "lng": 82.1448 - } - }, - "viewport": { - "center": { - "lat": 7.87063925, - "lng": 80.771797 - }, - "southWest": { - "lat": 6.45602, - "lng": 78.7228468 - }, - "northEast": { - "lat": 9.2852585, - "lng": 82.8207472 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sri Lanka", - "time": 1299407707993 - }, - "SD": { - "address": "Sudan", - "geocode": { - "address_components": [ - { - "long_name": "Sudan", - "short_name": "SD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sudan", - "geometry": { - "location": { - "lat": 12.862807, - "lng": 30.217636 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.8591261, - "lng": 30.2543695 - }, - "southWest": { - "lat": 3.4933339, - "lng": 21.814939 - }, - "northEast": { - "lat": 22.2249183, - "lng": 38.6938 - } - }, - "viewport": { - "center": { - "lat": 12.8012338, - "lng": 30.217636 - }, - "southWest": { - "lat": 7.2399999, - "lng": 22.021835 - }, - "northEast": { - "lat": 18.3624677, - "lng": 38.413437 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sudan", - "time": 1299407709876 - }, - "SR": { - "address": "Suriname", - "geocode": { - "address_components": [ - { - "long_name": "Suriname", - "short_name": "SR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Suriname", - "geometry": { - "location": { - "lat": 3.919305, - "lng": -56.027783 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 3.983453, - "lng": -56.006703 - }, - "southWest": { - "lat": 1.837306, - "lng": -58.070506 - }, - "northEast": { - "lat": 6.1296, - "lng": -53.9429 - } - }, - "viewport": { - "center": { - "lat": 3.91809145, - "lng": -56.027783 - }, - "southWest": { - "lat": 2.4933552, - "lng": -58.0767332 - }, - "northEast": { - "lat": 5.3428277, - "lng": -53.9788328 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Suriname", - "time": 1299407711127 - }, - "SZ": { - "address": "Swaziland", - "geocode": { - "address_components": [ - { - "long_name": "Swaziland", - "short_name": "SZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Swaziland", - "geometry": { - "location": { - "lat": -26.522503, - "lng": 31.465866 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -26.5179414, - "lng": 31.4629694 - }, - "southWest": { - "lat": -27.3173633, - "lng": 30.7910943 - }, - "northEast": { - "lat": -25.7185195, - "lng": 32.1348445 - } - }, - "viewport": { - "center": { - "lat": -26.520725, - "lng": 31.465866 - }, - "southWest": { - "lat": -27.1596726, - "lng": 30.4413909 - }, - "northEast": { - "lat": -25.8817774, - "lng": 32.4903411 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Swaziland", - "time": 1299407712253 - }, - "SE": { - "address": "Sweden", - "geocode": { - "address_components": [ - { - "long_name": "Sweden", - "short_name": "SE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sweden", - "geometry": { - "location": { - "lat": 60.128161, - "lng": 18.643501 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 62.03300175, - "lng": 17.37855505 - }, - "southWest": { - "lat": 55.00598, - "lng": 10.5798 - }, - "northEast": { - "lat": 69.0600235, - "lng": 24.1773101 - } - }, - "viewport": { - "center": { - "lat": 59.63694055, - "lng": 18.643501 - }, - "southWest": { - "lat": 53.9273797, - "lng": 2.2518991 - }, - "northEast": { - "lat": 65.3465014, - "lng": 35.0351029 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sweden", - "time": 1299407713974 - }, - "CH": { - "address": "Switzerland", - "geocode": { - "address_components": [ - { - "long_name": "Switzerland", - "short_name": "CH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Switzerland", - "geometry": { - "location": { - "lat": 46.818188, - "lng": 8.227512 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.8131505, - "lng": 8.22421 - }, - "southWest": { - "lat": 45.81792, - "lng": 5.95608 - }, - "northEast": { - "lat": 47.808381, - "lng": 10.49234 - } - }, - "viewport": { - "center": { - "lat": 46.80930635, - "lng": 8.227512 - }, - "southWest": { - "lat": 45.8319448, - "lng": 6.1785618 - }, - "northEast": { - "lat": 47.7866679, - "lng": 10.2764622 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Switzerland", - "time": 1299407716403 - }, - "SY": { - "address": "Syria", - "geocode": { - "address_components": [ - { - "long_name": "Syria", - "short_name": "SY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Syria", - "geometry": { - "location": { - "lat": 34.802075, - "lng": 38.996815 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 34.81733295, - "lng": 39.0025045 - }, - "southWest": { - "lat": 32.314097, - "lng": 35.6287 - }, - "northEast": { - "lat": 37.3205689, - "lng": 42.376309 - } - }, - "viewport": { - "center": { - "lat": 34.7687264, - "lng": 38.996815 - }, - "southWest": { - "lat": 32.4235564, - "lng": 34.8989145 - }, - "northEast": { - "lat": 37.1138964, - "lng": 43.0947155 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Syria", - "time": 1299407717497 - }, - "TJ": { - "address": "Tajikistan", - "geocode": { - "address_components": [ - { - "long_name": "Tajikistan", - "short_name": "TJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tajikistan", - "geometry": { - "location": { - "lat": 38.861034, - "lng": 71.276093 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 38.858202, - "lng": 71.24798415 - }, - "southWest": { - "lat": 36.672037, - "lng": 67.342012 - }, - "northEast": { - "lat": 41.044367, - "lng": 75.1539563 - } - }, - "viewport": { - "center": { - "lat": 38.8262657, - "lng": 71.276093 - }, - "southWest": { - "lat": 36.6022336, - "lng": 67.1781925 - }, - "northEast": { - "lat": 41.0502978, - "lng": 75.3739935 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tajikistan", - "time": 1299407718561 - }, - "TZ": { - "address": "Tanzania", - "geocode": { - "address_components": [ - { - "long_name": "Tanzania", - "short_name": "TZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tanzania", - "geometry": { - "location": { - "lat": -6.369028, - "lng": 34.888822 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -6.36388875, - "lng": 35.06065015 - }, - "southWest": { - "lat": -11.7408333, - "lng": 29.3400003 - }, - "northEast": { - "lat": -0.9869442, - "lng": 40.7813 - } - }, - "viewport": { - "center": { - "lat": -6.3377559, - "lng": 34.888822 - }, - "southWest": { - "lat": -12.0062323, - "lng": 26.693021 - }, - "northEast": { - "lat": -0.6692795, - "lng": 43.084623 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tanzania", - "time": 1299407719684 - }, - "TH": { - "address": "Thailand", - "geocode": { - "address_components": [ - { - "long_name": "Thailand", - "short_name": "TH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Thailand", - "geometry": { - "location": { - "lat": 15.870032, - "lng": 100.992541 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.038965, - "lng": 101.490104 - }, - "southWest": { - "lat": 5.612787, - "lng": 97.343396 - }, - "northEast": { - "lat": 20.465143, - "lng": 105.636812 - } - }, - "viewport": { - "center": { - "lat": 15.7953983, - "lng": 100.992541 - }, - "southWest": { - "lat": 10.3079872, - "lng": 92.79674 - }, - "northEast": { - "lat": 21.2828094, - "lng": 109.188342 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Thailand", - "time": 1299407720798 - }, - "TL": { - "address": "Timor-Leste", - "geocode": { - "address_components": [ - { - "long_name": "Timor-Leste", - "short_name": "TL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Timor-Leste", - "geometry": { - "location": { - "lat": -8.874217, - "lng": 125.727539 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -8.78935, - "lng": 125.72905 - }, - "southWest": { - "lat": -9.5303, - "lng": 124.0332 - }, - "northEast": { - "lat": -8.0484, - "lng": 127.4249 - } - }, - "viewport": { - "center": { - "lat": -8.87353875, - "lng": 125.727539 - }, - "southWest": { - "lat": -9.5790843, - "lng": 124.7030639 - }, - "northEast": { - "lat": -8.1679932, - "lng": 126.7520141 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Timor-Leste", - "time": 1299407722207 - }, - "TG": { - "address": "Togo", - "geocode": { - "address_components": [ - { - "long_name": "Togo", - "short_name": "TG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Togo", - "geometry": { - "location": { - "lat": 8.619543, - "lng": 0.824782 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 8.6099057, - "lng": 0.82966435 - }, - "southWest": { - "lat": 6.0812, - "lng": -0.1497214 - }, - "northEast": { - "lat": 11.1386114, - "lng": 1.8090501 - } - }, - "viewport": { - "center": { - "lat": 8.61690595, - "lng": 0.824782 - }, - "southWest": { - "lat": 7.2049543, - "lng": -1.2241682 - }, - "northEast": { - "lat": 10.0288576, - "lng": 2.8737322 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Togo", - "time": 1299407723286 - }, - "TO": { - "address": "Tonga", - "geocode": { - "address_components": [ - { - "long_name": "Tonga", - "short_name": "TO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tonga", - "geometry": { - "location": { - "lat": -21.178986, - "lng": -175.198242 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -18.62101475, - "lng": -174.60571285 - }, - "southWest": { - "lat": -21.8360058, - "lng": -175.9570312 - }, - "northEast": { - "lat": -15.4060237, - "lng": -173.2543945 - } - }, - "viewport": { - "center": { - "lat": -21.0833724, - "lng": -175.198242 - }, - "southWest": { - "lat": -26.4038789, - "lng": 176.6059596 - }, - "northEast": { - "lat": -15.7628659, - "lng": -167.0024436 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tonga", - "time": 1299407724378 - }, - "TT": { - "address": "Trinidad and Tobago", - "geocode": { - "address_components": [ - { - "long_name": "Trinidad & Tobago", - "short_name": "TT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Trinidad & Tobago", - "geometry": { - "location": { - "lat": 10.691803, - "lng": -61.222503 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 10.7006481, - "lng": -61.21163905 - }, - "southWest": { - "lat": 10.0422188, - "lng": -61.930593 - }, - "northEast": { - "lat": 11.3590774, - "lng": -60.4926851 - } - }, - "viewport": { - "center": { - "lat": 10.69099175, - "lng": -61.222503 - }, - "southWest": { - "lat": 9.9892948, - "lng": -62.2469781 - }, - "northEast": { - "lat": 11.3926887, - "lng": -60.1980279 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Trinidad and Tobago", - "time": 1299407725445 - }, - "TN": { - "address": "Tunisia", - "geocode": { - "address_components": [ - { - "long_name": "Tunisia", - "short_name": "TN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tunisia", - "geometry": { - "location": { - "lat": 33.886917, - "lng": 9.537499 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 33.88184815, - "lng": 9.56076535 - }, - "southWest": { - "lat": 30.2277963, - "lng": 7.5223134 - }, - "northEast": { - "lat": 37.5359, - "lng": 11.5992173 - } - }, - "viewport": { - "center": { - "lat": 33.8539821, - "lng": 9.537499 - }, - "southWest": { - "lat": 31.4831054, - "lng": 5.4395985 - }, - "northEast": { - "lat": 36.2248588, - "lng": 13.6353995 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tunisia", - "time": 1299407726508 - }, - "TR": { - "address": "Turkey", - "geocode": { - "address_components": [ - { - "long_name": "Turkey", - "short_name": "TR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Turkey", - "geometry": { - "location": { - "lat": 38.963745, - "lng": 35.243322 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 39.0871902, - "lng": 35.177914 - }, - "southWest": { - "lat": 35.8076804, - "lng": 25.5377 - }, - "northEast": { - "lat": 42.3667, - "lng": 44.818128 - } - }, - "viewport": { - "center": { - "lat": 38.824791, - "lng": 35.243322 - }, - "southWest": { - "lat": 34.3843151, - "lng": 27.047521 - }, - "northEast": { - "lat": 43.2652669, - "lng": 43.439123 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Turkey", - "time": 1299407727568 - }, - "TM": { - "address": "Turkmenistan", - "geocode": { - "address_components": [ - { - "long_name": "Turkmenistan", - "short_name": "TM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Turkmenistan", - "geometry": { - "location": { - "lat": 38.969719, - "lng": 59.556278 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 38.963802, - "lng": 59.5121265 - }, - "southWest": { - "lat": 35.12876, - "lng": 52.3169 - }, - "northEast": { - "lat": 42.798844, - "lng": 66.707353 - } - }, - "viewport": { - "center": { - "lat": 38.8307587, - "lng": 59.556278 - }, - "southWest": { - "lat": 34.3906555, - "lng": 51.360477 - }, - "northEast": { - "lat": 43.2708619, - "lng": 67.752079 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Turkmenistan", - "time": 1299407728644 - }, - "TV": { - "address": "Tuvalu", - "geocode": { - "address_components": [ - { - "long_name": "Tuvalu", - "short_name": "TV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tuvalu", - "geometry": { - "location": { - "lat": -7.109535, - "lng": 177.64933 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -8.3096325, - "lng": 177.7807617 - }, - "southWest": { - "lat": -11.1891796, - "lng": 175.5615234 - }, - "northEast": { - "lat": -5.4300854, - "lng": 180 - } - }, - "viewport": { - "center": { - "lat": -6.97185845, - "lng": 177.64933 - }, - "southWest": { - "lat": -18.2376228, - "lng": 161.2577281 - }, - "northEast": { - "lat": 4.2939059, - "lng": -165.9590681 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tuvalu", - "time": 1299407729717 - }, - "UG": { - "address": "Uganda", - "geocode": { - "address_components": [ - { - "long_name": "Uganda", - "short_name": "UG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Uganda", - "geometry": { - "location": { - "lat": 1.373333, - "lng": 32.290275 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 1.37125865, - "lng": 32.29971925 - }, - "southWest": { - "lat": -1.4761108, - "lng": 29.5663892 - }, - "northEast": { - "lat": 4.2186281, - "lng": 35.0330493 - } - }, - "viewport": { - "center": { - "lat": 1.37162875, - "lng": 32.290275 - }, - "southWest": { - "lat": -1.4828153, - "lng": 28.1923745 - }, - "northEast": { - "lat": 4.2260728, - "lng": 36.3881755 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Uganda", - "time": 1299407730957 - }, - "UA": { - "address": "Ukraine", - "geocode": { - "address_components": [ - { - "long_name": "Ukraine", - "short_name": "UA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ukraine", - "geometry": { - "location": { - "lat": 48.379433, - "lng": 31.16558 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 48.3359905, - "lng": 31.18215055 - }, - "southWest": { - "lat": 44.2924, - "lng": 22.1357201 - }, - "northEast": { - "lat": 52.379581, - "lng": 40.228581 - } - }, - "viewport": { - "center": { - "lat": 48.23820945, - "lng": 31.16558 - }, - "southWest": { - "lat": 44.443008, - "lng": 22.969779 - }, - "northEast": { - "lat": 52.0334109, - "lng": 39.361381 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Ukraine", - "time": 1299407732014 - }, - "AE": { - "address": "United Arab Emirates", - "geocode": { - "address_components": [ - { - "long_name": "United Arab Emirates", - "short_name": "AE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "United Arab Emirates", - "geometry": { - "location": { - "lat": 23.424076, - "lng": 53.847818 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 24.3548595, - "lng": 53.9559 - }, - "southWest": { - "lat": 22.633219, - "lng": 51.4723 - }, - "northEast": { - "lat": 26.0765, - "lng": 56.4395 - } - }, - "viewport": { - "center": { - "lat": 23.39812485, - "lng": 53.847818 - }, - "southWest": { - "lat": 20.7778282, - "lng": 49.7499175 - }, - "northEast": { - "lat": 26.0184215, - "lng": 57.9457185 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United Arab Emirates", - "time": 1299407733071 - }, - "GB": { - "address": "United Kingdom", - "geocode": { - "address_components": [ - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "United Kingdom", - "geometry": { - "location": { - "lat": 55.378051, - "lng": -3.435973 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 47.73855, - "lng": 12.5088275 - }, - "southWest": { - "lat": 34.5614, - "lng": -8.8989 - }, - "northEast": { - "lat": 60.9157, - "lng": 33.916555 - } - }, - "viewport": { - "center": { - "lat": 53.2747281, - "lng": -3.435973 - }, - "southWest": { - "lat": 40.1774485, - "lng": -36.2191769 - }, - "northEast": { - "lat": 66.3720077, - "lng": 29.3472309 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United Kingdom", - "time": 1299367225097 - }, - "US": { - "address": "United States", - "geocode": { - "address_components": [ - { - "long_name": "United States", - "short_name": "US", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "United States", - "geometry": { - "location": { - "lat": 37.09024, - "lng": -95.712891 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 45.15755, - "lng": -128.14468745 - }, - "southWest": { - "lat": 18.7763, - "lng": 170.5957 - }, - "northEast": { - "lat": 71.5388, - "lng": -66.8850749 - } - }, - "viewport": { - "center": { - "lat": 29.5165969, - "lng": -95.712891 - }, - "southWest": { - "lat": -5.7034477, - "lng": -161.2792988 - }, - "northEast": { - "lat": 64.7366415, - "lng": -30.1464832 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United States", - "time": 1299407734745 - }, - "UY": { - "address": "Uruguay", - "geocode": { - "address_components": [ - { - "long_name": "Uruguay", - "short_name": "UY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Uruguay", - "geometry": { - "location": { - "lat": -32.522779, - "lng": -55.765835 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -32.62050735, - "lng": -55.78406805 - }, - "southWest": { - "lat": -35.1558, - "lng": -58.4750933 - }, - "northEast": { - "lat": -30.0852147, - "lng": -53.0930428 - } - }, - "viewport": { - "center": { - "lat": -32.49052285, - "lng": -55.765835 - }, - "southWest": { - "lat": -34.8985929, - "lng": -59.8637355 - }, - "northEast": { - "lat": -30.0824528, - "lng": -51.6679345 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Uruguay", - "time": 1299407735801 - }, - "UZ": { - "address": "Uzbekistan", - "geocode": { - "address_components": [ - { - "long_name": "Uzbekistan", - "short_name": "UZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Uzbekistan", - "geometry": { - "location": { - "lat": 41.377491, - "lng": 64.585262 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 41.381166, - "lng": 64.573582 - }, - "southWest": { - "lat": 37.172257, - "lng": 55.998218 - }, - "northEast": { - "lat": 45.590075, - "lng": 73.148946 - } - }, - "viewport": { - "center": { - "lat": 41.23649985, - "lng": 64.585262 - }, - "southWest": { - "lat": 36.9506185, - "lng": 56.389461 - }, - "northEast": { - "lat": 45.5223812, - "lng": 72.781063 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Uzbekistan", - "time": 1299407736858 - }, - "VU": { - "address": "Vanuatu", - "geocode": { - "address_components": [ - { - "long_name": "Vanuatu", - "short_name": "VU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Vanuatu", - "geometry": { - "location": { - "lat": -15.376706, - "lng": 166.959158 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -16.6707611, - "lng": 168.28033445 - }, - "southWest": { - "lat": -20.5350773, - "lng": 166.0583496 - }, - "northEast": { - "lat": -12.8064449, - "lng": 170.5023193 - } - }, - "viewport": { - "center": { - "lat": -15.3041626, - "lng": 166.959158 - }, - "southWest": { - "lat": -20.804721, - "lng": 158.763357 - }, - "northEast": { - "lat": -9.8036042, - "lng": 175.154959 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Vanuatu", - "time": 1299407737986 - }, - "VE": { - "address": "Venezuela", - "geocode": { - "address_components": [ - { - "long_name": "Venezuela", - "short_name": "VE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Venezuela", - "geometry": { - "location": { - "lat": 6.42375, - "lng": -66.58973 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 6.6682669, - "lng": -66.578612 - }, - "southWest": { - "lat": 0.6479338, - "lng": -73.351558 - }, - "northEast": { - "lat": 12.6886, - "lng": -59.805666 - } - }, - "viewport": { - "center": { - "lat": 6.3922137, - "lng": -66.58973 - }, - "southWest": { - "lat": 0.72434, - "lng": -74.785531 - }, - "northEast": { - "lat": 12.0600874, - "lng": -58.393929 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Venezuela", - "time": 1299407739041 - }, - "VN": { - "address": "Vietnam", - "geocode": { - "address_components": [ - { - "long_name": "Vietnam", - "short_name": "VN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Vietnam", - "geometry": { - "location": { - "lat": 14.058324, - "lng": 108.277199 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.7942975, - "lng": 105.910455 - }, - "southWest": { - "lat": 8.1952, - "lng": 102.14441 - }, - "northEast": { - "lat": 23.393395, - "lng": 109.6765 - } - }, - "viewport": { - "center": { - "lat": 13.99146985, - "lng": 108.277199 - }, - "southWest": { - "lat": 8.4577697, - "lng": 100.081398 - }, - "northEast": { - "lat": 19.52517, - "lng": 116.473 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Vietnam", - "time": 1299407740167 - }, - "YE": { - "address": "Yemen", - "geocode": { - "address_components": [ - { - "long_name": "Yemen", - "short_name": "YE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Yemen", - "geometry": { - "location": { - "lat": 15.552727, - "lng": 48.516388 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.39875, - "lng": 48.1943 - }, - "southWest": { - "lat": 11.7975, - "lng": 41.7096 - }, - "northEast": { - "lat": 19, - "lng": 54.679 - } - }, - "viewport": { - "center": { - "lat": 15.47943525, - "lng": 48.516388 - }, - "southWest": { - "lat": 9.9835214, - "lng": 40.320587 - }, - "northEast": { - "lat": 20.9753491, - "lng": 56.712189 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Yemen", - "time": 1299407741223 - }, - "ZM": { - "address": "Zambia", - "geocode": { - "address_components": [ - { - "long_name": "Zambia", - "short_name": "ZM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Zambia", - "geometry": { - "location": { - "lat": -13.133897, - "lng": 27.849332 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -13.13969775, - "lng": 27.84930485 - }, - "southWest": { - "lat": -18.0761122, - "lng": 21.9963878 - }, - "northEast": { - "lat": -8.2032833, - "lng": 33.7022219 - } - }, - "viewport": { - "center": { - "lat": -13.07111665, - "lng": 27.849332 - }, - "southWest": { - "lat": -18.6263178, - "lng": 19.653531 - }, - "northEast": { - "lat": -7.5159155, - "lng": 36.045133 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Zambia", - "time": 1299407742353 - }, - "ZW": { - "address": "Zimbabwe", - "geocode": { - "address_components": [ - { - "long_name": "Zimbabwe", - "short_name": "ZW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Zimbabwe", - "geometry": { - "location": { - "lat": -19.015438, - "lng": 29.154857 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -19.01989715, - "lng": 29.15236995 - }, - "southWest": { - "lat": -22.4236835, - "lng": 25.2369579 - }, - "northEast": { - "lat": -15.6161108, - "lng": 33.067782 - } - }, - "viewport": { - "center": { - "lat": -18.99352415, - "lng": 29.154857 - }, - "southWest": { - "lat": -21.6932147, - "lng": 25.0569565 - }, - "northEast": { - "lat": -16.2938336, - "lng": 33.2527575 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Zimbabwe", - "time": 1299407743417 - }, - "GE-AB": { - "address": "Abkhazia", - "geocode": { - "address_components": [ - { - "long_name": "Abkhazia", - "short_name": "Abkhazia", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Georgia", - "short_name": "GE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Abkhazia, Georgia", - "geometry": { - "location": { - "lat": 42.9737816, - "lng": 41.4421799 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.9976365, - "lng": 41.0801075 - }, - "southWest": { - "lat": 42.410732, - "lng": 40.010239 - }, - "northEast": { - "lat": 43.584541, - "lng": 42.149976 - } - }, - "viewport": { - "center": { - "lat": 42.97156215, - "lng": 41.4421799 - }, - "southWest": { - "lat": 42.4490723, - "lng": 40.4177048 - }, - "northEast": { - "lat": 43.494052, - "lng": 42.466655 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Abkhazia", - "time": 1299407744473 - }, - "RS-KO": { - "address": "Kosovo", - "geocode": { - "address_components": [ - { - "long_name": "Kosovo", - "short_name": "XK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Kosovo", - "geometry": { - "location": { - "lat": 42.6026359, - "lng": 20.902977 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.5606995, - "lng": 20.9020755 - }, - "southWest": { - "lat": 41.852085, - "lng": 20.014284 - }, - "northEast": { - "lat": 43.269314, - "lng": 21.789867 - } - }, - "viewport": { - "center": { - "lat": 42.60041865, - "lng": 20.902977 - }, - "southWest": { - "lat": 42.0747868, - "lng": 19.8785019 - }, - "northEast": { - "lat": 43.1260505, - "lng": 21.9274521 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Kosovo", - "time": 1299407745530 - }, - "AZ-NK": { - "address": "Nagorno-Karabakh", - "geocode": { - "address_components": [ - { - "long_name": "Nagorno-Karabakh", - "short_name": "Nagorno-Karabakh", - "types": [ - "political" - ] - } - ], - "formatted_address": "Nagorno-Karabakh", - "geometry": { - "location": { - "lat": 40.1263658, - "lng": 46.5008174 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 39.930037, - "lng": 46.7214799 - }, - "southWest": { - "lat": 39.4456577, - "lng": 46.247494 - }, - "northEast": { - "lat": 40.4144163, - "lng": 47.1954658 - } - }, - "viewport": { - "center": { - "lat": 40.1241729, - "lng": 46.5008174 - }, - "southWest": { - "lat": 39.578148, - "lng": 45.4763423 - }, - "northEast": { - "lat": 40.6701978, - "lng": 47.5252925 - } - } - }, - "types": [ - "political" - ] - }, - "name": "Nagorno-Karabakh", - "time": 1299407746584 - }, - "CY-NC": { - "address": "Northern Cyprus", - "geocode": { - "address_components": [ - { - "long_name": "Cyprus", - "short_name": "CY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cyprus", - "geometry": { - "location": { - "lat": 35.126413, - "lng": 33.429859 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.1688, - "lng": 33.4252 - }, - "southWest": { - "lat": 34.6304, - "lng": 32.2459 - }, - "northEast": { - "lat": 35.7072, - "lng": 34.6045 - } - }, - "viewport": { - "center": { - "lat": 35.1243188, - "lng": 33.429859 - }, - "southWest": { - "lat": 34.5402633, - "lng": 32.4053839 - }, - "northEast": { - "lat": 35.7083743, - "lng": 34.4543341 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Northern Cyprus", - "time": 1299407747639 - }, - "PS": { - "address": "Palestine", - "geocode": { - "address_components": [ - { - "long_name": "Palestine", - "short_name": "Palestine", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Southwest", - "short_name": "Southwest", - "types": [ - "administrative_area_level_3", - "political" - ] - }, - { - "long_name": "Wirt", - "short_name": "Wirt", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "West Virginia", - "short_name": "WV", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United States", - "short_name": "US", - "types": [ - "country", - "political" - ] - }, - { - "long_name": "26160", - "short_name": "26160", - "types": [ - "postal_code" - ] - } - ], - "formatted_address": "Palestine, WV 26160, USA", - "geometry": { - "location": { - "lat": 39.03, - "lng": -81.40694 - }, - "location_type": "APPROXIMATE", - "viewport": { - "center": { - "lat": 39.0299995, - "lng": -81.40694 - }, - "southWest": { - "lat": 39.0213318, - "lng": -81.4229474 - }, - "northEast": { - "lat": 39.0386672, - "lng": -81.3909326 - } - } - }, - "types": [ - "locality", - "political" - ] - }, - "name": "Palestine", - "time": 1299407748803 - }, - "SO-SO": { - "address": "Somaliland", - "geocode": { - "address_components": [ - { - "long_name": "Somaliland", - "short_name": "Somaliland", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Somalia", - "short_name": "SO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Somaliland, Somalia", - "geometry": { - "location": { - "lat": 9.4117434, - "lng": 46.8252838 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.6978652, - "lng": 45.8720398 - }, - "southWest": { - "lat": 7.9177934, - "lng": 42.6791382 - }, - "northEast": { - "lat": 11.477937, - "lng": 49.0649414 - } - }, - "viewport": { - "center": { - "lat": 9.40887235, - "lng": 46.8252838 - }, - "southWest": { - "lat": 8.0000136, - "lng": 44.7763336 - }, - "northEast": { - "lat": 10.8177311, - "lng": 48.874234 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Somaliland", - "time": 1299407750935 - }, - "GE-SO": { - "address": "South Ossetia", - "geocode": { - "address_components": [ - { - "long_name": "South Ossetia", - "short_name": "South Ossetia", - "types": [ - "political" - ] - } - ], - "formatted_address": "South Ossetia", - "geometry": { - "location": { - "lat": 42.3386699, - "lng": 44.1231263 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 42.3652, - "lng": 44.1026 - }, - "southWest": { - "lat": 42.0225, - "lng": 43.5796 - }, - "northEast": { - "lat": 42.7079, - "lng": 44.6256 - } - }, - "viewport": { - "center": { - "lat": 42.33811605, - "lng": 44.1231263 - }, - "southWest": { - "lat": 42.074189, - "lng": 43.6108887 - }, - "northEast": { - "lat": 42.6020431, - "lng": 44.6353639 - } - } - }, - "types": [ - "political" - ] - }, - "name": "South Ossetia", - "time": 1299407751990 - }, - "SD-SS": { - "address": "South Sudan", - "geocode": { - "address_components": [ - { - "long_name": "Sudan", - "short_name": "SD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sudan", - "geometry": { - "location": { - "lat": 12.862807, - "lng": 30.217636 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.8591261, - "lng": 30.2543695 - }, - "southWest": { - "lat": 3.4933339, - "lng": 21.814939 - }, - "northEast": { - "lat": 22.2249183, - "lng": 38.6938 - } - }, - "viewport": { - "center": { - "lat": 12.8012338, - "lng": 30.217636 - }, - "southWest": { - "lat": 7.2399999, - "lng": 22.021835 - }, - "northEast": { - "lat": 18.3624677, - "lng": 38.413437 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "South Sudan", - "time": 1299407753112 - }, - "TW": { - "address": "Taiwan", - "geocode": { - "address_components": [ - { - "long_name": "Taiwan", - "short_name": "TW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Taiwan", - "geometry": { - "location": { - "lat": 23.69781, - "lng": 120.960515 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 23.63115, - "lng": 120.26995 - }, - "southWest": { - "lat": 21.7595, - "lng": 118.2071 - }, - "northEast": { - "lat": 25.5028, - "lng": 122.3328 - } - }, - "viewport": { - "center": { - "lat": 23.69126025, - "lng": 120.960515 - }, - "southWest": { - "lat": 22.3835599, - "lng": 118.9115648 - }, - "northEast": { - "lat": 24.9989606, - "lng": 123.0094652 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Taiwan", - "time": 1299407754169 - }, - "MD-TR": { - "address": "Transnistria", - "geocode": { - "address_components": [ - { - "long_name": "Transnistria", - "short_name": "Transnistria", - "types": [ - "route" - ] - }, - { - "long_name": "Sectorul Ciocana", - "short_name": "Sectorul Ciocana", - "types": [ - "sublocality", - "political" - ] - }, - { - "long_name": "Chisinau", - "short_name": "Chisinau", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Chisinau", - "short_name": "Chisinau", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Moldova", - "short_name": "MD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Transnistria, Chisinau, Moldova", - "geometry": { - "location": { - "lat": 47.0210663, - "lng": 28.8950944 - }, - "location_type": "GEOMETRIC_CENTER", - "bounds": { - "center": { - "lat": 47.02352605, - "lng": 28.89584005 - }, - "southWest": { - "lat": 47.0111474, - "lng": 28.8940215 - }, - "northEast": { - "lat": 47.0359047, - "lng": 28.8976586 - } - }, - "viewport": { - "center": { - "lat": 47.02352605, - "lng": 28.89584005 - }, - "southWest": { - "lat": 47.0111474, - "lng": 28.8926924 - }, - "northEast": { - "lat": 47.0359047, - "lng": 28.8989877 - } - } - }, - "types": [ - "route" - ] - }, - "name": "Transnistria", - "time": 1299407755413 - }, - "AQ": { - "address": "Antarctica", - "geocode": { - "address_components": [ - { - "long_name": "Antarctica", - "short_name": "AQ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Antarctica", - "geometry": { - "location": { - "lat": -75.250973, - "lng": -0.071389 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -75.05435, - "lng": -180 - }, - "southWest": { - "lat": -90, - "lng": 180 - }, - "northEast": { - "lat": -60.1087, - "lng": -180 - } - }, - "viewport": { - "center": { - "lat": -55.95562265, - "lng": -0.071389 - }, - "southWest": { - "lat": -86.9923745, - "lng": -131.2042045 - }, - "northEast": { - "lat": -24.9188708, - "lng": 131.0614265 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Antarctica", - "time": 1299407756468 - }, - "AU-AC": { - "address": "Ashmore and Cartier Islands", - "geocode": { - "address_components": [ - { - "long_name": "Ashmore and Cartier Islands", - "short_name": "Ashmore and Cartier Islands", - "types": [ - "natural_feature" - ] - } - ], - "formatted_address": "Ashmore and Cartier Islands", - "geometry": { - "location": { - "lat": -12.2753731, - "lng": 122.9691183 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -12.3911425, - "lng": 123.2437535 - }, - "southWest": { - "lat": -12.532686, - "lng": 122.928104 - }, - "northEast": { - "lat": -12.249599, - "lng": 123.559403 - } - }, - "viewport": { - "center": { - "lat": -12.3911425, - "lng": 123.2437535 - }, - "southWest": { - "lat": -12.532686, - "lng": 122.928104 - }, - "northEast": { - "lat": -12.249599, - "lng": 123.559403 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Ashmore and Cartier Islands", - "time": 1299407757526 - }, - "CX": { - "address": "Christmas Island", - "geocode": { - "address_components": [ - { - "long_name": "Christmas Island", - "short_name": "CX", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Christmas Island", - "geometry": { - "location": { - "lat": -10.447525, - "lng": 105.690449 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -10.491357, - "lng": 105.6231272 - }, - "southWest": { - "lat": -10.570362, - "lng": 105.5333161 - }, - "northEast": { - "lat": -10.412352, - "lng": 105.7129383 - } - }, - "viewport": { - "center": { - "lat": -10.4475126, - "lng": 105.690449 - }, - "southWest": { - "lat": -10.5352966, - "lng": 105.5623896 - }, - "northEast": { - "lat": -10.3597286, - "lng": 105.8185084 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Christmas Island", - "time": 1299407758613 - }, - "CC": { - "address": "Cocos Islands", - "geocode": { - "address_components": [ - { - "long_name": "Cocos (Keeling) Islands", - "short_name": "CC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cocos (Keeling) Islands", - "geometry": { - "location": { - "lat": -12.164165, - "lng": 96.870956 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -12.01591215, - "lng": 96.87306405 - }, - "southWest": { - "lat": -12.2118513, - "lng": 96.8134117 - }, - "northEast": { - "lat": -11.819973, - "lng": 96.9327164 - } - }, - "viewport": { - "center": { - "lat": -12.1641507, - "lng": 96.870956 - }, - "southWest": { - "lat": -12.2514104, - "lng": 96.7428966 - }, - "northEast": { - "lat": -12.076891, - "lng": 96.9990154 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cocos Islands", - "time": 1299407759743 - }, - "AU-CS": { - "address": "Coral Sea Islands", - "geocode": { - "address_components": [ - { - "long_name": "Coral Sea Islands", - "short_name": "Coral Sea Islands", - "types": [ - "natural_feature" - ] - } - ], - "formatted_address": "Coral Sea Islands", - "geometry": { - "location": { - "lat": -16.8735715, - "lng": 150.621315 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -16.8735715, - "lng": 150.621315 - }, - "southWest": { - "lat": -17.727644, - "lng": 149.127884 - }, - "northEast": { - "lat": -16.019499, - "lng": 152.114746 - } - }, - "viewport": { - "center": { - "lat": -16.8538122, - "lng": 150.621315 - }, - "southWest": { - "lat": -19.5863395, - "lng": 146.5234145 - }, - "northEast": { - "lat": -14.1212849, - "lng": 154.7192155 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Coral Sea Islands", - "time": 1299407760837 - }, - "HM": { - "address": "Heard Island and McDonald Islands", - "geocode": { - "address_components": [ - { - "long_name": "Heard Island and McDonald Islands", - "short_name": "HM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Heard Island and McDonald Islands", - "geometry": { - "location": { - "lat": -53.08181, - "lng": 73.504158 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -53.0507085, - "lng": 73.2278405 - }, - "southWest": { - "lat": -53.192001, - "lng": 72.596535 - }, - "northEast": { - "lat": -52.909416, - "lng": 73.859146 - } - }, - "viewport": { - "center": { - "lat": -53.0507085, - "lng": 73.2278405 - }, - "southWest": { - "lat": -53.192001, - "lng": 72.596535 - }, - "northEast": { - "lat": -52.909416, - "lng": 73.859146 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Heard Island and McDonald Islands", - "time": 1299407761895 - }, - "NF": { - "address": "Norfolk Island", - "geocode": { - "address_components": [ - { - "long_name": "Norfolk Island", - "short_name": "NF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Norfolk Island", - "geometry": { - "location": { - "lat": -29.040835, - "lng": 167.954712 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -29.064197, - "lng": 167.9562235 - }, - "southWest": { - "lat": -29.126415, - "lng": 167.914414 - }, - "northEast": { - "lat": -29.001979, - "lng": 167.998033 - } - }, - "viewport": { - "center": { - "lat": -29.064197, - "lng": 167.9562235 - }, - "southWest": { - "lat": -29.126415, - "lng": 167.914414 - }, - "northEast": { - "lat": -29.001979, - "lng": 167.998033 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Norfolk Island", - "time": 1299407762951 - }, - "HK": { - "address": "Hong Kong", - "geocode": { - "address_components": [ - { - "long_name": "Hong Kong", - "short_name": "HK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Hong Kong", - "geometry": { - "location": { - "lat": 22.396428, - "lng": 114.109497 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 22.352734, - "lng": 114.1277 - }, - "southWest": { - "lat": 22.1435, - "lng": 113.8259 - }, - "northEast": { - "lat": 22.561968, - "lng": 114.4295 - } - }, - "viewport": { - "center": { - "lat": 22.39633005, - "lng": 114.109497 - }, - "southWest": { - "lat": 22.2312688, - "lng": 113.8533782 - }, - "northEast": { - "lat": 22.5613913, - "lng": 114.3656158 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Hong Kong", - "time": 1299407764085 - }, - "MO": { - "address": "Macau", - "geocode": { - "address_components": [ - { - "long_name": "Macau", - "short_name": "MO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Macau", - "geometry": { - "location": { - "lat": 22.198745, - "lng": 113.543873 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 22.1618795, - "lng": 113.5707066 - }, - "southWest": { - "lat": 22.1066, - "lng": 113.5287132 - }, - "northEast": { - "lat": 22.217159, - "lng": 113.6127 - } - }, - "viewport": { - "center": { - "lat": 22.1987389, - "lng": 113.543873 - }, - "southWest": { - "lat": 22.1574151, - "lng": 113.4798433 - }, - "northEast": { - "lat": 22.2400627, - "lng": 113.6079027 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Macau", - "time": 1299407765141 - }, - "FO": { - "address": "Faroe Islands", - "geocode": { - "address_components": [ - { - "long_name": "Faroe Islands", - "short_name": "FO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Faroe Islands", - "geometry": { - "location": { - "lat": 61.892635, - "lng": -6.911806 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 61.8994259, - "lng": -6.9543457 - }, - "southWest": { - "lat": 61.3677776, - "lng": -7.7178955 - }, - "northEast": { - "lat": 62.4310742, - "lng": -6.1907959 - } - }, - "viewport": { - "center": { - "lat": 61.89078565, - "lng": -6.911806 - }, - "southWest": { - "lat": 61.5543449, - "lng": -7.9362811 - }, - "northEast": { - "lat": 62.2272264, - "lng": -5.8873309 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Faroe Islands", - "time": 1299407766199 - }, - "GL": { - "address": "Greenland", - "geocode": { - "address_components": [ - { - "long_name": "Greenland", - "short_name": "GL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Greenland", - "geometry": { - "location": { - "lat": 71.706936, - "lng": -42.604303 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 71.11677305, - "lng": -41.04492 - }, - "southWest": { - "lat": 58.26329, - "lng": -73.82812 - }, - "northEast": { - "lat": 83.9702561, - "lng": -8.26172 - } - }, - "viewport": { - "center": { - "lat": 66.1808512, - "lng": -42.604303 - }, - "southWest": { - "lat": 50.6566679, - "lng": -108.1707108 - }, - "northEast": { - "lat": 81.7050345, - "lng": 22.9621048 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Greenland", - "time": 1299407767255 - }, - "AX": { - "address": "Åland", - "geocode": { - "address_components": [ - { - "long_name": "Aland Islands", - "short_name": "Aland Islands", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Åland", - "short_name": "Åland", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "Finland", - "short_name": "FI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Aland Islands, Åland, Finland", - "geometry": { - "location": { - "lat": 60.177002, - "lng": 19.915002 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 60.19825, - "lng": 19.9684802 - }, - "southWest": { - "lat": 59.968959, - "lng": 19.6345568 - }, - "northEast": { - "lat": 60.427541, - "lng": 20.3024036 - } - }, - "viewport": { - "center": { - "lat": 60.176522, - "lng": 19.915002 - }, - "southWest": { - "lat": 59.9989497, - "lng": 19.4027644 - }, - "northEast": { - "lat": 60.3540943, - "lng": 20.4272396 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Åland", - "time": 1299407768393 - }, - "CP": { - "address": "Clipperton Island", - "geocode": { - "address_components": [ - { - "long_name": "French Polynesia", - "short_name": "PF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "French Polynesia", - "geometry": { - "location": { - "lat": -17.679742, - "lng": -149.406843 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -17.54083, - "lng": -145.90945 - }, - "southWest": { - "lat": -28.61346, - "lng": -154.4678 - }, - "northEast": { - "lat": -6.4682, - "lng": -137.3511 - } - }, - "viewport": { - "center": { - "lat": -13.42522465, - "lng": -149.406843 - }, - "southWest": { - "lat": -53.5625786, - "lng": 145.0267492 - }, - "northEast": { - "lat": 26.7121293, - "lng": -83.8404352 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Clipperton Island", - "time": 1299407769448 - }, - "GF": { - "address": "French Guiana", - "geocode": { - "address_components": [ - { - "long_name": "French Guiana", - "short_name": "GF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "French Guiana", - "geometry": { - "location": { - "lat": 3.933889, - "lng": -53.125782 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 4.0320435, - "lng": -53.0854435 - }, - "southWest": { - "lat": 2.109287, - "lng": -54.554438 - }, - "northEast": { - "lat": 5.9548, - "lng": -51.616449 - } - }, - "viewport": { - "center": { - "lat": 3.932671, - "lng": -53.125782 - }, - "southWest": { - "lat": 2.5079596, - "lng": -55.1747322 - }, - "northEast": { - "lat": 5.3573824, - "lng": -51.0768318 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "French Guiana", - "time": 1299407770518 - }, - "PF": { - "address": "French Polynesia", - "geocode": { - "address_components": [ - { - "long_name": "French Polynesia", - "short_name": "PF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "French Polynesia", - "geometry": { - "location": { - "lat": -17.679742, - "lng": -149.406843 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -17.54083, - "lng": -145.90945 - }, - "southWest": { - "lat": -28.61346, - "lng": -154.4678 - }, - "northEast": { - "lat": -6.4682, - "lng": -137.3511 - } - }, - "viewport": { - "center": { - "lat": -13.42522465, - "lng": -149.406843 - }, - "southWest": { - "lat": -53.5625786, - "lng": 145.0267492 - }, - "northEast": { - "lat": 26.7121293, - "lng": -83.8404352 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "French Polynesia", - "time": 1299407771574 - }, - "TF": { - "address": "French Southern Territories", - "geocode": { - "address_components": [ - { - "long_name": "French Southern and Antarctic Lands", - "short_name": "TF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "French Southern and Antarctic Lands", - "geometry": { - "location": { - "lat": -49.280366, - "lng": 69.348557 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -49.23393555, - "lng": 69.5695496 - }, - "southWest": { - "lat": -50.0641917, - "lng": 68.4832764 - }, - "northEast": { - "lat": -48.4036794, - "lng": 70.6558228 - } - }, - "viewport": { - "center": { - "lat": -49.27816575, - "lng": 69.348557 - }, - "southWest": { - "lat": -49.7440239, - "lng": 68.3240819 - }, - "northEast": { - "lat": -48.8123076, - "lng": 70.3730321 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "French Southern Territories", - "time": 1299407772631 - }, - "GP": { - "address": "Guadeloupe", - "geocode": { - "address_components": [ - { - "long_name": "Guadeloupe", - "short_name": "GP", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guadeloupe", - "geometry": { - "location": { - "lat": 16.995971, - "lng": -62.067641 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 16.3690015, - "lng": -61.50749145 - }, - "southWest": { - "lat": 15.742032, - "lng": -62.067641 - }, - "northEast": { - "lat": 16.995971, - "lng": -60.9473419 - } - }, - "viewport": { - "center": { - "lat": 16.99099615, - "lng": -62.067641 - }, - "southWest": { - "lat": 15.6252679, - "lng": -64.1165912 - }, - "northEast": { - "lat": 18.3567244, - "lng": -60.0186908 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guadeloupe", - "time": 1299407773687 - }, - "MQ": { - "address": "Martinique", - "geocode": { - "address_components": [ - { - "long_name": "Martinique", - "short_name": "MQ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Martinique", - "geometry": { - "location": { - "lat": 14.641528, - "lng": -61.024174 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.63408955, - "lng": -61.01377485 - }, - "southWest": { - "lat": 14.370834, - "lng": -61.2419128 - }, - "northEast": { - "lat": 14.8973451, - "lng": -60.7856369 - } - }, - "viewport": { - "center": { - "lat": 14.64146, - "lng": -61.024174 - }, - "southWest": { - "lat": 14.4687299, - "lng": -61.2802928 - }, - "northEast": { - "lat": 14.8141901, - "lng": -60.7680552 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Martinique", - "time": 1299407774742 - }, - "YT": { - "address": "Mayotte", - "geocode": { - "address_components": [ - { - "long_name": "Mayotte", - "short_name": "YT", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Mayotte", - "geometry": { - "location": { - "lat": -12.8275, - "lng": 45.166244 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -12.8065498, - "lng": 45.1557827 - }, - "southWest": { - "lat": -13.0358331, - "lng": 44.9914169 - }, - "northEast": { - "lat": -12.5772665, - "lng": 45.3201485 - } - }, - "viewport": { - "center": { - "lat": -12.8274398, - "lng": 45.166244 - }, - "southWest": { - "lat": -13.0015118, - "lng": 44.9101252 - }, - "northEast": { - "lat": -12.6533678, - "lng": 45.4223628 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Mayotte", - "time": 1299407775797 - }, - "NC": { - "address": "New Caledonia", - "geocode": { - "address_components": [ - { - "long_name": "New Caledonia", - "short_name": "NC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "New Caledonia", - "geometry": { - "location": { - "lat": -20.904305, - "lng": 165.618042 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -21.206088, - "lng": 165.8441162 - }, - "southWest": { - "lat": -23.2514405, - "lng": 163.3557129 - }, - "northEast": { - "lat": -19.1607355, - "lng": 168.3325195 - } - }, - "viewport": { - "center": { - "lat": -20.8983729, - "lng": 165.618042 - }, - "southWest": { - "lat": -22.2324837, - "lng": 163.5690918 - }, - "northEast": { - "lat": -19.5642621, - "lng": 167.6669922 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "New Caledonia", - "time": 1299407776853 - }, - "RE": { - "address": "Réunion", - "geocode": { - "address_components": [ - { - "long_name": "Reunion", - "short_name": "RE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Reunion", - "geometry": { - "location": { - "lat": -21.115141, - "lng": 55.536384 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -21.1353425, - "lng": 55.52730565 - }, - "southWest": { - "lat": -21.4035321, - "lng": 55.2097321 - }, - "northEast": { - "lat": -20.8671529, - "lng": 55.8448792 - } - }, - "viewport": { - "center": { - "lat": -21.1150475, - "lng": 55.536384 - }, - "southWest": { - "lat": -21.2815885, - "lng": 55.2802652 - }, - "northEast": { - "lat": -20.9485065, - "lng": 55.7925028 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Réunion", - "time": 1299407777974 - }, - "BL": { - "address": "Saint Barthélemy", - "geocode": { - "address_components": [ - { - "long_name": "St Barthélemy", - "short_name": "BL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Barthélemy", - "geometry": { - "location": { - "lat": 17.9, - "lng": -62.833333 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.9196265, - "lng": -62.8505945 - }, - "southWest": { - "lat": 17.878453, - "lng": -62.911764 - }, - "northEast": { - "lat": 17.9608, - "lng": -62.789425 - } - }, - "viewport": { - "center": { - "lat": 17.8999949, - "lng": -62.833333 - }, - "southWest": { - "lat": 17.8575234, - "lng": -62.8973627 - }, - "northEast": { - "lat": 17.9424664, - "lng": -62.7693033 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Barthélemy", - "time": 1299407779066 - }, - "MF": { - "address": "Saint Martin", - "geocode": { - "address_components": [ - { - "long_name": "St Martin", - "short_name": "MF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Martin", - "geometry": { - "location": { - "lat": 18.08255, - "lng": -63.052251 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.0863515, - "lng": -63.062049 - }, - "southWest": { - "lat": 18.047626, - "lng": -63.153246 - }, - "northEast": { - "lat": 18.125077, - "lng": -62.970852 - } - }, - "viewport": { - "center": { - "lat": 18.0825449, - "lng": -63.052251 - }, - "southWest": { - "lat": 18.0401173, - "lng": -63.1162807 - }, - "northEast": { - "lat": 18.1249725, - "lng": -62.9882213 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Martin", - "time": 1299407780136 - }, - "PM": { - "address": "Saint Pierre and Miquelon", - "geocode": { - "address_components": [ - { - "long_name": "St Pierre and Miquelon", - "short_name": "PM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Pierre and Miquelon", - "geometry": { - "location": { - "lat": 46.941936, - "lng": -56.27111 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.94605, - "lng": -56.26734 - }, - "southWest": { - "lat": 46.7496, - "lng": -56.40659 - }, - "northEast": { - "lat": 47.1425, - "lng": -56.12809 - } - }, - "viewport": { - "center": { - "lat": 46.941381, - "lng": -56.27111 - }, - "southWest": { - "lat": 46.697605, - "lng": -56.7833476 - }, - "northEast": { - "lat": 47.185157, - "lng": -55.7588724 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Pierre and Miquelon", - "time": 1299407781271 - }, - "WF": { - "address": "Wallis and Futuna", - "geocode": { - "address_components": [ - { - "long_name": "Wallis and Futuna", - "short_name": "WF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Wallis and Futuna", - "geometry": { - "location": { - "lat": -13.768752, - "lng": -177.156097 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -13.77451235, - "lng": -177.16278075 - }, - "southWest": { - "lat": -14.4187204, - "lng": -178.2284546 - }, - "northEast": { - "lat": -13.1303043, - "lng": -176.0971069 - } - }, - "viewport": { - "center": { - "lat": -13.75230825, - "lng": -177.156097 - }, - "southWest": { - "lat": -16.5256528, - "lng": 178.7459995 - }, - "northEast": { - "lat": -10.9789637, - "lng": -173.0581935 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Wallis and Futuna", - "time": 1299407782356 - }, - "AW": { - "address": "Aruba", - "geocode": { - "address_components": [ - { - "long_name": "Aruba", - "short_name": "AW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Aruba", - "geometry": { - "location": { - "lat": 12.52111, - "lng": -69.968338 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.5183555, - "lng": -69.96728895 - }, - "southWest": { - "lat": 12.406093, - "lng": -70.0701141 - }, - "northEast": { - "lat": 12.630618, - "lng": -69.8644638 - } - }, - "viewport": { - "center": { - "lat": 12.52109525, - "lng": -69.968338 - }, - "southWest": { - "lat": 12.4339544, - "lng": -70.0963974 - }, - "northEast": { - "lat": 12.6082361, - "lng": -69.8402786 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Aruba", - "time": 1299407783494 - }, - "BQ": { - "address": "Bonaire, Saint Eustatius and Saba", - "geocode": { - "address_components": [ - { - "long_name": "Bonaire", - "short_name": "Bonaire", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Bonaire", - "short_name": "Bonaire", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Netherlands Antilles", - "short_name": "AN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bonaire, Netherlands Antilles", - "geometry": { - "location": { - "lat": 12.2018902, - "lng": -68.2623822 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.16840935, - "lng": -68.30974605 - }, - "southWest": { - "lat": 12.0255536, - "lng": -68.4228516 - }, - "northEast": { - "lat": 12.3112651, - "lng": -68.1966405 - } - }, - "viewport": { - "center": { - "lat": 12.20187585, - "lng": -68.2623822 - }, - "southWest": { - "lat": 12.1146285, - "lng": -68.3904416 - }, - "northEast": { - "lat": 12.2891232, - "lng": -68.1343228 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Bonaire, Saint Eustatius and Saba", - "time": 1299407784549 - }, - "CW": { - "address": "Curaçao", - "geocode": { - "address_components": [ - { - "long_name": "Curaçao", - "short_name": "Curaçao", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Curaçao", - "short_name": "Curaçao", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Netherlands Antilles", - "short_name": "AN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Curaçao, Netherlands Antilles", - "geometry": { - "location": { - "lat": 12.1224221, - "lng": -68.8824233 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.214829, - "lng": -68.94927525 - }, - "southWest": { - "lat": 12.0379775, - "lng": -69.1600137 - }, - "northEast": { - "lat": 12.3916805, - "lng": -68.7385368 - } - }, - "viewport": { - "center": { - "lat": 12.122365, - "lng": -68.8824233 - }, - "southWest": { - "lat": 11.9478184, - "lng": -69.1385421 - }, - "northEast": { - "lat": 12.2969116, - "lng": -68.6263045 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Curaçao", - "time": 1299407785675 - }, - "SX": { - "address": "Sint Maarten", - "geocode": { - "address_components": [ - { - "long_name": "St Martin", - "short_name": "MF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Collectivity of St Martin", - "geometry": { - "location": { - "lat": 18.08255, - "lng": -63.052251 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.0863515, - "lng": -63.062049 - }, - "southWest": { - "lat": 18.047626, - "lng": -63.153246 - }, - "northEast": { - "lat": 18.125077, - "lng": -62.970852 - } - }, - "viewport": { - "center": { - "lat": 18.0825449, - "lng": -63.052251 - }, - "southWest": { - "lat": 18.0401173, - "lng": -63.1162807 - }, - "northEast": { - "lat": 18.1249725, - "lng": -62.9882213 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sint Maarten", - "time": 1299407786732 - }, - "CK": { - "address": "Cook Islands", - "geocode": { - "address_components": [ - { - "long_name": "Cook Islands", - "short_name": "CK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cook Islands", - "geometry": { - "location": { - "lat": -21.236736, - "lng": -159.777671 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -15.6289158, - "lng": -160.9387207 - }, - "southWest": { - "lat": -23.0898384, - "lng": -166.1791992 - }, - "northEast": { - "lat": -8.1679932, - "lng": -155.6982422 - } - }, - "viewport": { - "center": { - "lat": -16.2257785, - "lng": -159.777671 - }, - "southWest": { - "lat": -55.744792, - "lng": 134.6559212 - }, - "northEast": { - "lat": 23.293235, - "lng": -94.2112632 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cook Islands", - "time": 1299407787788 - }, - "NU": { - "address": "Niue", - "geocode": { - "address_components": [ - { - "long_name": "Niue", - "short_name": "NU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Niue", - "geometry": { - "location": { - "lat": -19.054445, - "lng": -169.867233 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -19.0540959, - "lng": -169.8622048 - }, - "southWest": { - "lat": -19.1555668, - "lng": -169.9500847 - }, - "northEast": { - "lat": -18.952625, - "lng": -169.7743249 - } - }, - "viewport": { - "center": { - "lat": -19.05442355, - "lng": -169.867233 - }, - "southWest": { - "lat": -19.1387966, - "lng": -169.9952924 - }, - "northEast": { - "lat": -18.9700505, - "lng": -169.7391736 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Niue", - "time": 1299407789016 - }, - "TK": { - "address": "Tokelau", - "geocode": { - "address_components": [ - { - "long_name": "Tokelau", - "short_name": "TK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tokelau", - "geometry": { - "location": { - "lat": -8.967363, - "lng": -171.855881 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -8.96403225, - "lng": -171.8776703 - }, - "southWest": { - "lat": -9.5059528, - "lng": -172.6625061 - }, - "northEast": { - "lat": -8.4221117, - "lng": -171.0928345 - } - }, - "viewport": { - "center": { - "lat": -8.96667785, - "lng": -171.855881 - }, - "southWest": { - "lat": -9.6720434, - "lng": -172.8803561 - }, - "northEast": { - "lat": -8.2613123, - "lng": -170.8314059 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Tokelau", - "time": 1299407790075 - }, - "BV": { - "address": "Bouvet Island", - "geocode": { - "address_components": [ - { - "long_name": "Bouvet Island", - "short_name": "BV", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bouvet Island", - "geometry": { - "location": { - "lat": -54.423199, - "lng": 3.413194 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -54.4313505, - "lng": 3.4117375 - }, - "southWest": { - "lat": -54.462379, - "lng": 3.335499 - }, - "northEast": { - "lat": -54.400322, - "lng": 3.487976 - } - }, - "viewport": { - "center": { - "lat": -54.4313505, - "lng": 3.4117375 - }, - "southWest": { - "lat": -54.462379, - "lng": 3.335499 - }, - "northEast": { - "lat": -54.400322, - "lng": 3.487976 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bouvet Island", - "time": 1299407791131 - }, - "SJ": { - "address": "Svalbard and Jan Mayen", - "geocode": { - "address_components": [ - { - "long_name": "Svalbard and Jan Mayen", - "short_name": "SJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Svalbard and Jan Mayen", - "geometry": { - "location": { - "lat": 77.553604, - "lng": 23.670272 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 75.69731655, - "lng": 12.12890625 - }, - "southWest": { - "lat": 70.4662074, - "lng": -10.546875 - }, - "northEast": { - "lat": 80.9284257, - "lng": 34.8046875 - } - }, - "viewport": { - "center": { - "lat": 73.5779735, - "lng": 23.670272 - }, - "southWest": { - "lat": 62.779149, - "lng": -41.8961358 - }, - "northEast": { - "lat": 84.376798, - "lng": 89.2366798 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Svalbard and Jan Mayen", - "time": 1299407792187 - }, - "IC": { - "address": "Canary Islands", - "geocode": { - "address_components": [ - { - "long_name": "Canarias", - "short_name": "CN", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Spain", - "short_name": "ES", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Canary Islands, Spain", - "geometry": { - "location": { - "lat": 28.2915637, - "lng": -16.6291304 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 28.5263581, - "lng": -15.7899533 - }, - "southWest": { - "lat": 27.6377504, - "lng": -18.1606948 - }, - "northEast": { - "lat": 29.4149658, - "lng": -13.4192118 - } - }, - "viewport": { - "center": { - "lat": 28.2841361, - "lng": -16.6291304 - }, - "southWest": { - "lat": 27.0265905, - "lng": -18.6780806 - }, - "northEast": { - "lat": 29.5416817, - "lng": -14.5801802 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Canary Islands", - "time": 1299407793253 - }, - "EA": { - "address": "Ceuta and Melilla", - "geocode": { - "address_components": [ - { - "long_name": "Melilla", - "short_name": "Melilla", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Melilla", - "short_name": "ML", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "Melilla", - "short_name": "Melilla", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Spain", - "short_name": "ES", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Melilla, Spain", - "geometry": { - "location": { - "lat": 35.2923388, - "lng": -2.9387938 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.2928354, - "lng": -2.9467737 - }, - "southWest": { - "lat": 35.2654743, - "lng": -2.9703619 - }, - "northEast": { - "lat": 35.3201965, - "lng": -2.9231855 - } - }, - "viewport": { - "center": { - "lat": 35.29233675, - "lng": -2.9387938 - }, - "southWest": { - "lat": 35.2741221, - "lng": -2.9708086 - }, - "northEast": { - "lat": 35.3105514, - "lng": -2.906779 - } - } - }, - "types": [ - "locality", - "political" - ] - }, - "name": "Ceuta and Melilla", - "time": 1299407794384 - }, - "AI": { - "address": "Anguilla", - "geocode": { - "address_components": [ - { - "long_name": "Anguilla", - "short_name": "AI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Anguilla", - "geometry": { - "location": { - "lat": 18.220554, - "lng": -63.068615 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.38986845, - "lng": -63.20022585 - }, - "southWest": { - "lat": 18.1465043, - "lng": -63.4803772 - }, - "northEast": { - "lat": 18.6332326, - "lng": -62.9200745 - } - }, - "viewport": { - "center": { - "lat": 18.2202236, - "lng": -63.068615 - }, - "southWest": { - "lat": 17.8810725, - "lng": -63.5808526 - }, - "northEast": { - "lat": 18.5593747, - "lng": -62.5563774 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Anguilla", - "time": 1299407795440 - }, - "AC": { - "address": "Ascension", - "geocode": { - "address_components": [ - { - "long_name": "Ascension", - "short_name": "Ascension", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Saint Helena", - "short_name": "SH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Ascension, Saint Helena", - "geometry": { - "location": { - "lat": -7.9467166, - "lng": -14.3559158 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -7.9409551, - "lng": -14.3563843 - }, - "southWest": { - "lat": -7.9942974, - "lng": -14.4235039 - }, - "northEast": { - "lat": -7.8876128, - "lng": -14.2892647 - } - }, - "viewport": { - "center": { - "lat": -7.94671425, - "lng": -14.3559158 - }, - "southWest": { - "lat": -7.9909176, - "lng": -14.4199455 - }, - "northEast": { - "lat": -7.9025109, - "lng": -14.2918861 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Ascension", - "time": 1299407796541 - }, - "BM": { - "address": "Bermuda", - "geocode": { - "address_components": [ - { - "long_name": "Bermuda", - "short_name": "BM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Bermuda", - "geometry": { - "location": { - "lat": 32.321384, - "lng": -64.75737 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 32.3181652, - "lng": -64.77171335 - }, - "southWest": { - "lat": 32.2424974, - "lng": -64.8914337 - }, - "northEast": { - "lat": 32.393833, - "lng": -64.651993 - } - }, - "viewport": { - "center": { - "lat": 32.32135255, - "lng": -64.75737 - }, - "southWest": { - "lat": 32.245919, - "lng": -64.8854294 - }, - "northEast": { - "lat": 32.3967861, - "lng": -64.6293106 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Bermuda", - "time": 1299407797597 - }, - "IO": { - "address": "British Indian Ocean Territory", - "geocode": { - "address_components": [ - { - "long_name": "British Indian Ocean Territory", - "short_name": "IO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "British Indian Ocean Territory", - "geometry": { - "location": { - "lat": -6.343194, - "lng": 71.876519 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -6.31464875, - "lng": 71.88697815 - }, - "southWest": { - "lat": -7.4891118, - "lng": 71.1859131 - }, - "northEast": { - "lat": -5.1401857, - "lng": 72.5880432 - } - }, - "viewport": { - "center": { - "lat": -6.31464875, - "lng": 71.88697815 - }, - "southWest": { - "lat": -7.4891118, - "lng": 71.1859131 - }, - "northEast": { - "lat": -5.1401857, - "lng": 72.5880432 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "British Indian Ocean Territory", - "time": 1299407798655 - }, - "VG": { - "address": "British Virgin Islands", - "geocode": { - "address_components": [ - { - "long_name": "British Virgin Islands", - "short_name": "VG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "British Virgin Islands", - "geometry": { - "location": { - "lat": 18.420695, - "lng": -64.639968 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.534979, - "lng": -64.56063 - }, - "southWest": { - "lat": 18.312737, - "lng": -64.852492 - }, - "northEast": { - "lat": 18.757221, - "lng": -64.268768 - } - }, - "viewport": { - "center": { - "lat": 18.4206116, - "lng": -64.639968 - }, - "southWest": { - "lat": 18.2512314, - "lng": -64.8960868 - }, - "northEast": { - "lat": 18.5899918, - "lng": -64.3838492 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "British Virgin Islands", - "time": 1299407799713 - }, - "KY": { - "address": "Cayman Islands", - "geocode": { - "address_components": [ - { - "long_name": "Cayman Islands", - "short_name": "KY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Cayman Islands", - "geometry": { - "location": { - "lat": 19.513469, - "lng": -80.566956 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 19.5145353, - "lng": -80.5681515 - }, - "southWest": { - "lat": 19.2604285, - "lng": -81.4222527 - }, - "northEast": { - "lat": 19.7686421, - "lng": -79.7140503 - } - }, - "viewport": { - "center": { - "lat": 19.5078658, - "lng": -80.566956 - }, - "southWest": { - "lat": 18.1617843, - "lng": -82.6159062 - }, - "northEast": { - "lat": 20.8539473, - "lng": -78.5180058 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Cayman Islands", - "time": 1299407800776 - }, - "DG": { - "address": "Diego Garcia", - "geocode": { - "address_components": [ - { - "long_name": "Diego Garcia", - "short_name": "Diego Garcia", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Diego Garcia", - "short_name": "Diego Garcia", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "British Indian Ocean Territory", - "short_name": "IO", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Diego Garcia, British Indian Ocean Territory", - "geometry": { - "location": { - "lat": -7.3195005, - "lng": 72.4228556 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -7.3383959, - "lng": 72.42423535 - }, - "southWest": { - "lat": -7.4435391, - "lng": 72.3540902 - }, - "northEast": { - "lat": -7.2332527, - "lng": 72.4943805 - } - }, - "viewport": { - "center": { - "lat": -7.3383959, - "lng": 72.42423535 - }, - "southWest": { - "lat": -7.4435391, - "lng": 72.3540902 - }, - "northEast": { - "lat": -7.2332527, - "lng": 72.4943805 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Diego Garcia", - "time": 1299407801900 - }, - "GB-ENG": { - "address": "England", - "geocode": { - "address_components": [ - { - "long_name": "England", - "short_name": "England", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "England, United Kingdom", - "geometry": { - "location": { - "lat": 52.0190289, - "lng": -0.7704274 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 52.84708985, - "lng": -2.29813415 - }, - "southWest": { - "lat": 49.8825312, - "lng": -6.3651943 - }, - "northEast": { - "lat": 55.8116485, - "lng": 1.768926 - } - }, - "viewport": { - "center": { - "lat": 51.8810214, - "lng": -0.7704274 - }, - "southWest": { - "lat": 48.363906, - "lng": -8.9662284 - }, - "northEast": { - "lat": 55.3981368, - "lng": 7.4253736 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "England", - "time": 1299407803031 - }, - "FK": { - "address": "Falkland Islands", - "geocode": { - "address_components": [ - { - "long_name": "Falkland Islands (Islas Malvinas)", - "short_name": "FK", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Falkland Islands (Islas Malvinas)", - "geometry": { - "location": { - "lat": -51.796253, - "lng": -59.523613 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -51.72766385, - "lng": -59.52804565 - }, - "southWest": { - "lat": -52.4744161, - "lng": -61.3792419 - }, - "northEast": { - "lat": -50.9809116, - "lng": -57.6768494 - } - }, - "viewport": { - "center": { - "lat": -51.6579839, - "lng": -59.523613 - }, - "southWest": { - "lat": -55.1925438, - "lng": -67.719414 - }, - "northEast": { - "lat": -48.123424, - "lng": -51.327812 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Falkland Islands", - "time": 1299407804089 - }, - "GI": { - "address": "Gibraltar", - "geocode": { - "address_components": [ - { - "long_name": "Gibraltar", - "short_name": "GI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Gibraltar", - "geometry": { - "location": { - "lat": 36.137741, - "lng": -5.345374 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 36.12950935, - "lng": -5.3533 - }, - "southWest": { - "lat": 36.1039, - "lng": -5.3721 - }, - "northEast": { - "lat": 36.1551187, - "lng": -5.3345 - } - }, - "viewport": { - "center": { - "lat": 36.1377389, - "lng": -5.345374 - }, - "southWest": { - "lat": 36.1197165, - "lng": -5.3773888 - }, - "northEast": { - "lat": 36.1557613, - "lng": -5.3133592 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Gibraltar", - "time": 1299407805146 - }, - "GG": { - "address": "Guernsey", - "geocode": { - "address_components": [ - { - "long_name": "Guernsey", - "short_name": "GG", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guernsey", - "geometry": { - "location": { - "lat": 49.465691, - "lng": -2.585278 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 49.5696465, - "lng": -2.4172455 - }, - "southWest": { - "lat": 49.407746, - "lng": -2.675589 - }, - "northEast": { - "lat": 49.731547, - "lng": -2.158902 - } - }, - "viewport": { - "center": { - "lat": 49.4651415, - "lng": -2.585278 - }, - "southWest": { - "lat": 49.2330896, - "lng": -3.0975156 - }, - "northEast": { - "lat": 49.6971934, - "lng": -2.0730404 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guernsey", - "time": 1299407806202 - }, - "IM": { - "address": "Isle of Man", - "geocode": { - "address_components": [ - { - "long_name": "Isle of Man", - "short_name": "IM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Isle of Man", - "geometry": { - "location": { - "lat": 54.236107, - "lng": -4.548056 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 54.2314435, - "lng": -4.5692545 - }, - "southWest": { - "lat": 54.04464, - "lng": -4.830181 - }, - "northEast": { - "lat": 54.418247, - "lng": -4.308328 - } - }, - "viewport": { - "center": { - "lat": 54.2359751, - "lng": -4.548056 - }, - "southWest": { - "lat": 54.1316351, - "lng": -4.8041748 - }, - "northEast": { - "lat": 54.3403151, - "lng": -4.2919372 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Isle of Man", - "time": 1299407807260 - }, - "JE": { - "address": "Jersey", - "geocode": { - "address_components": [ - { - "long_name": "Jersey", - "short_name": "JE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Jersey", - "geometry": { - "location": { - "lat": 49.214439, - "lng": -2.13125 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 49.211791, - "lng": -2.1377825 - }, - "southWest": { - "lat": 49.164176, - "lng": -2.256745 - }, - "northEast": { - "lat": 49.259406, - "lng": -2.01882 - } - }, - "viewport": { - "center": { - "lat": 49.21440465, - "lng": -2.13125 - }, - "southWest": { - "lat": 49.1560948, - "lng": -2.2593094 - }, - "northEast": { - "lat": 49.2727145, - "lng": -2.0031906 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Jersey", - "time": 1299407808328 - }, - "MS": { - "address": "Montserrat", - "geocode": { - "address_components": [ - { - "long_name": "Montserrat", - "short_name": "MS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Montserrat", - "geometry": { - "location": { - "lat": 16.742498, - "lng": -62.187366 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 16.7485371, - "lng": -62.19260205 - }, - "southWest": { - "lat": 16.671007, - "lng": -62.242584 - }, - "northEast": { - "lat": 16.8260672, - "lng": -62.1426201 - } - }, - "viewport": { - "center": { - "lat": 16.7424932, - "lng": -62.187366 - }, - "southWest": { - "lat": 16.6997532, - "lng": -62.2513957 - }, - "northEast": { - "lat": 16.7852332, - "lng": -62.1233363 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Montserrat", - "time": 1299407809385 - }, - "GB-NIR": { - "address": "Northern Ireland", - "geocode": { - "address_components": [ - { - "long_name": "Northern Ireland", - "short_name": "Northern Ireland", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Northern Ireland, United Kingdom", - "geometry": { - "location": { - "lat": 54.7877149, - "lng": -6.4923145 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 54.66690505, - "lng": -6.79808735 - }, - "southWest": { - "lat": 54.0211981, - "lng": -8.176558 - }, - "northEast": { - "lat": 55.312612, - "lng": -5.4196167 - } - }, - "viewport": { - "center": { - "lat": 54.77932935, - "lng": -6.4923145 - }, - "southWest": { - "lat": 53.9557769, - "lng": -8.5412647 - }, - "northEast": { - "lat": 55.6028818, - "lng": -4.4433643 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Northern Ireland", - "time": 1299407810520 - }, - "PN": { - "address": "Pitcairn", - "geocode": { - "address_components": [ - { - "long_name": "Pitcairn Islands", - "short_name": "PN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Pitcairn Islands", - "geometry": { - "location": { - "lat": -24.703615, - "lng": -127.439308 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -24.48524335, - "lng": -127.7339172 - }, - "southWest": { - "lat": -25.1776022, - "lng": -130.9268188 - }, - "northEast": { - "lat": -23.7928845, - "lng": -124.5410156 - } - }, - "viewport": { - "center": { - "lat": -24.48524335, - "lng": -127.7339172 - }, - "southWest": { - "lat": -25.1776022, - "lng": -130.9268188 - }, - "northEast": { - "lat": -23.7928845, - "lng": -124.5410156 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Pitcairn", - "time": 1299407811656 - }, - "SH": { - "address": "Saint Helena", - "geocode": { - "address_components": [ - { - "long_name": "St Helena", - "short_name": "SH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "St Helena", - "geometry": { - "location": { - "lat": -24.143474, - "lng": -10.030696 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -22.44448705, - "lng": -10.26123045 - }, - "southWest": { - "lat": -37.7880814, - "lng": -15.4248047 - }, - "northEast": { - "lat": -7.1008927, - "lng": -5.0976562 - } - }, - "viewport": { - "center": { - "lat": -22.5287592, - "lng": -10.030696 - }, - "southWest": { - "lat": -43.0180853, - "lng": -42.8138999 - }, - "northEast": { - "lat": -2.0394331, - "lng": 22.7525079 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Saint Helena", - "time": 1299407812712 - }, - "GB-SCT": { - "address": "Scotland", - "geocode": { - "address_components": [ - { - "long_name": "Scotland", - "short_name": "Scotland", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Scotland, United Kingdom", - "geometry": { - "location": { - "lat": 56.4906712, - "lng": -4.2026458 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 57.746607, - "lng": -4.6875445 - }, - "southWest": { - "lat": 54.631564, - "lng": -8.662663 - }, - "northEast": { - "lat": 60.86165, - "lng": -0.712426 - } - }, - "viewport": { - "center": { - "lat": 56.35965765, - "lng": -4.2026458 - }, - "southWest": { - "lat": 53.2036934, - "lng": -12.3984468 - }, - "northEast": { - "lat": 59.5156219, - "lng": 3.9931552 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Scotland", - "time": 1299407813770 - }, - "GS": { - "address": "South Georgia and the South Sandwich Islands", - "geocode": { - "address_components": [ - { - "long_name": "South Georgia and the South Sandwich Islands", - "short_name": "GS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "South Georgia and the South Sandwich Islands", - "geometry": { - "location": { - "lat": -54.429579, - "lng": -36.587909 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -56.8817513, - "lng": -31.9482422 - }, - "southWest": { - "lat": -59.910976, - "lng": -38.4301758 - }, - "northEast": { - "lat": -53.8525266, - "lng": -25.4663086 - } - }, - "viewport": { - "center": { - "lat": -52.30364345, - "lng": -36.587909 - }, - "southWest": { - "lat": -65.7020089, - "lng": -69.3711129 - }, - "northEast": { - "lat": -38.905278, - "lng": -3.8047051 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "South Georgia and the South Sandwich Islands", - "time": 1299407814826 - }, - "TA": { - "address": "Tristan da Cunha", - "geocode": { - "address_components": [ - { - "long_name": "Tristan da Cunha", - "short_name": "Tristan da Cunha", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Tristan da Cunha", - "short_name": "Tristan da Cunha", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Saint Helena", - "short_name": "SH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Tristan da Cunha, Saint Helena", - "geometry": { - "location": { - "lat": -37.1052489, - "lng": -12.2776838 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -37.11595925, - "lng": -12.2840023 - }, - "southWest": { - "lat": -37.1701659, - "lng": -12.3510361 - }, - "northEast": { - "lat": -37.0617526, - "lng": -12.2169685 - } - }, - "viewport": { - "center": { - "lat": -37.11595925, - "lng": -12.2840023 - }, - "southWest": { - "lat": -37.1701659, - "lng": -12.3510361 - }, - "northEast": { - "lat": -37.0617526, - "lng": -12.2169685 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Tristan da Cunha", - "time": 1299407815980 - }, - "TC": { - "address": "Turks and Caicos Islands", - "geocode": { - "address_components": [ - { - "long_name": "Turks and Caicos Islands", - "short_name": "TC", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Turks and Caicos Islands", - "geometry": { - "location": { - "lat": 21.694025, - "lng": -71.797928 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 21.5738103, - "lng": -71.79016115 - }, - "southWest": { - "lat": 21.1459922, - "lng": -72.520752 - }, - "northEast": { - "lat": 22.0016284, - "lng": -71.0595703 - } - }, - "viewport": { - "center": { - "lat": 21.69364285, - "lng": -71.797928 - }, - "southWest": { - "lat": 21.3618786, - "lng": -72.3101656 - }, - "northEast": { - "lat": 22.0254071, - "lng": -71.2856904 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Turks and Caicos Islands", - "time": 1299407817077 - }, - "GB-WLS": { - "address": "Wales", - "geocode": { - "address_components": [ - { - "long_name": "Wales", - "short_name": "Wales", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Wales, United Kingdom", - "geometry": { - "location": { - "lat": 52.4699784, - "lng": -3.8303771 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 52.40461405, - "lng": -4.0069775 - }, - "southWest": { - "lat": 51.3726411, - "lng": -5.364147 - }, - "northEast": { - "lat": 53.436587, - "lng": -2.649808 - } - }, - "viewport": { - "center": { - "lat": 52.4613794, - "lng": -3.8303771 - }, - "southWest": { - "lat": 51.5913157, - "lng": -5.8793273 - }, - "northEast": { - "lat": 53.3314431, - "lng": -1.7814269 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Wales", - "time": 1299407818208 - }, - "AS": { - "address": "American Samoa", - "geocode": { - "address_components": [ - { - "long_name": "American Samoa", - "short_name": "AS", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "American Samoa", - "geometry": { - "location": { - "lat": -14.270972, - "lng": -170.132217 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -14.06370565, - "lng": -170.1068115 - }, - "southWest": { - "lat": -14.7217607, - "lng": -171.0076904 - }, - "northEast": { - "lat": -13.4056506, - "lng": -169.2059326 - } - }, - "viewport": { - "center": { - "lat": -14.2699089, - "lng": -170.132217 - }, - "southWest": { - "lat": -14.9619675, - "lng": -171.1566921 - }, - "northEast": { - "lat": -13.5778503, - "lng": -169.1077419 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "American Samoa", - "time": 1299407819263 - }, - "GU": { - "address": "Guam", - "geocode": { - "address_components": [ - { - "long_name": "Guam", - "short_name": "GU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Guam", - "geometry": { - "location": { - "lat": 13.444304, - "lng": 144.793731 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.45081235, - "lng": 144.78881835 - }, - "southWest": { - "lat": 13.1022175, - "lng": 144.4647217 - }, - "northEast": { - "lat": 13.7994072, - "lng": 145.112915 - } - }, - "viewport": { - "center": { - "lat": 13.44405245, - "lng": 144.793731 - }, - "southWest": { - "lat": 13.0967834, - "lng": 144.2814934 - }, - "northEast": { - "lat": 13.7913215, - "lng": 145.3059686 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Guam", - "time": 1299407820332 - }, - "MP": { - "address": "Northern Mariana Islands", - "geocode": { - "address_components": [ - { - "long_name": "Northern Mariana Islands", - "short_name": "MP", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Northern Mariana Islands", - "geometry": { - "location": { - "lat": 17.33083, - "lng": 145.38469 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 17.3149355, - "lng": 145.4864502 - }, - "southWest": { - "lat": 13.9713848, - "lng": 144.7668457 - }, - "northEast": { - "lat": 20.6584862, - "lng": 146.2060547 - } - }, - "viewport": { - "center": { - "lat": 17.0115993, - "lng": 145.38469 - }, - "southWest": { - "lat": 6.1636154, - "lng": 128.9930881 - }, - "northEast": { - "lat": 27.8595832, - "lng": 161.7762919 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Northern Mariana Islands", - "time": 1299407821388 - }, - "PR": { - "address": "Puerto Rico", - "geocode": { - "address_components": [ - { - "long_name": "Puerto Rico", - "short_name": "PR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Puerto Rico", - "geometry": { - "location": { - "lat": 18.220833, - "lng": -66.590149 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.1997555, - "lng": -66.583627 - }, - "southWest": { - "lat": 17.831509, - "lng": -67.998751 - }, - "northEast": { - "lat": 18.568002, - "lng": -65.168503 - } - }, - "viewport": { - "center": { - "lat": 18.21951135, - "lng": -66.590149 - }, - "southWest": { - "lat": 17.5412208, - "lng": -67.6146241 - }, - "northEast": { - "lat": 18.8978019, - "lng": -65.5656739 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Puerto Rico", - "time": 1299407822443 - }, - "UM": { - "address": "Wake Island", - "geocode": { - "address_components": [ - { - "long_name": "Wake Island", - "short_name": "UM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Wake Island", - "geometry": { - "location": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "southWest": { - "lat": -0.389006, - "lng": 166.593323 - }, - "northEast": { - "lat": 28.398027, - "lng": -75 - } - }, - "viewport": { - "center": { - "lat": 12.9968137, - "lng": -134.2033385 - }, - "southWest": { - "lat": -8.6721834, - "lng": -166.9865424 - }, - "northEast": { - "lat": 34.6658108, - "lng": -101.4201346 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United States Minor Outlying Islands", - "time": 1299407823575 - }, - "VI": { - "address": "United States Virgin Islands", - "geocode": { - "address_components": [ - { - "long_name": "US Virgin Islands", - "short_name": "VI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "US Virgin Islands", - "geometry": { - "location": { - "lat": 18.335765, - "lng": -64.896335 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.04422595, - "lng": -64.83588445 - }, - "southWest": { - "lat": 17.623468, - "lng": -65.1590949 - }, - "northEast": { - "lat": 18.4649839, - "lng": -64.512674 - } - }, - "viewport": { - "center": { - "lat": 18.33543275, - "lng": -64.896335 - }, - "southWest": { - "lat": 17.9965068, - "lng": -65.4085726 - }, - "northEast": { - "lat": 18.6743587, - "lng": -64.3840974 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United States Virgin Islands", - "time": 1299407824637 - }, - "BUMM": { - "address": "Burma", - "geocode": { - "address_components": [ - { - "long_name": "Burma", - "short_name": "MM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Burma", - "geometry": { - "location": { - "lat": 21.913965, - "lng": 95.956223 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 18.99981755, - "lng": 96.67103985 - }, - "southWest": { - "lat": 9.4518, - "lng": 92.171808 - }, - "northEast": { - "lat": 28.5478351, - "lng": 101.1702717 - } - }, - "viewport": { - "center": { - "lat": 21.81568855, - "lng": 95.956223 - }, - "southWest": { - "lat": 16.5219099, - "lng": 87.760422 - }, - "northEast": { - "lat": 27.1094672, - "lng": 104.152024 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Burma", - "time": 1299407825812 - }, - "BYAA": { - "address": "Belarus", - "geocode": { - "address_components": [ - { - "long_name": "Belarus", - "short_name": "BY", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Belarus", - "geometry": { - "location": { - "lat": 53.709807, - "lng": 27.953389 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 53.7172525, - "lng": 27.97757885 - }, - "southWest": { - "lat": 51.262011, - "lng": 23.1783377 - }, - "northEast": { - "lat": 56.172494, - "lng": 32.77682 - } - }, - "viewport": { - "center": { - "lat": 53.67584595, - "lng": 27.953389 - }, - "southWest": { - "lat": 51.9849773, - "lng": 23.8554885 - }, - "northEast": { - "lat": 55.3667146, - "lng": 32.0512895 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Byelorussian Soviet Socialist Republic", - "time": 1299407826867 - }, - "CTKI": { - "address": "Canton and Enderbury Islands", - "geocode": { - "address_components": [ - { - "long_name": "Phoenix Islands", - "short_name": "Phoenix Islands", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Phoenix Islands", - "short_name": "Phoenix Islands", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Kiribati", - "short_name": "KI", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Phoenix Islands, Kiribati", - "geometry": { - "location": { - "lat": -3.7208845, - "lng": -170.7117394 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -3.7216785, - "lng": -170.7130205 - }, - "southWest": { - "lat": -3.727144, - "lng": -170.717621 - }, - "northEast": { - "lat": -3.716213, - "lng": -170.70842 - } - }, - "viewport": { - "center": { - "lat": -3.7216785, - "lng": -170.7130205 - }, - "southWest": { - "lat": -3.727144, - "lng": -170.717621 - }, - "northEast": { - "lat": -3.716213, - "lng": -170.70842 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Canton and Enderbury Islands", - "time": 1299407828006 - }, - "CSHH": { - "address": "Czechoslovakia", - "geocode": { - "address_components": [ - { - "long_name": "Czechoslovakia", - "short_name": "Czechoslovakia", - "types": [ - "route" - ] - }, - { - "long_name": "Parañaque City", - "short_name": "Parañaque City", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Metro Manila", - "short_name": "NCR", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Philippines", - "short_name": "PH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Czechoslovakia, Parañaque City, Philippines", - "geometry": { - "location": { - "lat": 14.4802996, - "lng": 121.0390422 - }, - "location_type": "GEOMETRIC_CENTER", - "bounds": { - "center": { - "lat": 14.4803559, - "lng": 121.03906585 - }, - "southWest": { - "lat": 14.4799532, - "lng": 121.0386376 - }, - "northEast": { - "lat": 14.4807586, - "lng": 121.0394941 - } - }, - "viewport": { - "center": { - "lat": 14.4803559, - "lng": 121.03906585 - }, - "southWest": { - "lat": 14.4772083, - "lng": 121.0359182 - }, - "northEast": { - "lat": 14.4835035, - "lng": 121.0422135 - } - } - }, - "types": [ - "route" - ] - }, - "name": "Czechoslovakia", - "time": 1299367316937 - }, - "DYBJ": { - "address": "Benin", - "geocode": { - "address_components": [ - { - "long_name": "Benin", - "short_name": "BJ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Benin", - "geometry": { - "location": { - "lat": 9.30769, - "lng": 2.315834 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 9.3072717, - "lng": 2.3100051 - }, - "southWest": { - "lat": 6.2061, - "lng": 0.7766672 - }, - "northEast": { - "lat": 12.4084434, - "lng": 3.843343 - } - }, - "viewport": { - "center": { - "lat": 9.29633685, - "lng": 2.315834 - }, - "southWest": { - "lat": 6.4786055, - "lng": -1.7820665 - }, - "northEast": { - "lat": 12.1140682, - "lng": 6.4137345 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Dahomey", - "time": 1299407829807 - }, - "TPTL": { - "address": "East Timor", - "geocode": { - "address_components": [ - { - "long_name": "Timor-Leste", - "short_name": "TL", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Timor-Leste", - "geometry": { - "location": { - "lat": -8.874217, - "lng": 125.727539 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -8.78935, - "lng": 125.72905 - }, - "southWest": { - "lat": -9.5303, - "lng": 124.0332 - }, - "northEast": { - "lat": -8.0484, - "lng": 127.4249 - } - }, - "viewport": { - "center": { - "lat": -8.87353875, - "lng": 125.727539 - }, - "southWest": { - "lat": -9.5790843, - "lng": 124.7030639 - }, - "northEast": { - "lat": -8.1679932, - "lng": 126.7520141 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "East Timor", - "time": 1299407830864 - }, - "DDDE": { - "address": "East Germany", - "geocode": { - "address_components": [ - { - "long_name": "Germany", - "short_name": "DE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Germany", - "geometry": { - "location": { - "lat": 51.165691, - "lng": 10.451526 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 51.1758135, - "lng": 10.454045 - }, - "southWest": { - "lat": 47.270127, - "lng": 5.8662579 - }, - "northEast": { - "lat": 55.0815, - "lng": 15.0418321 - } - }, - "viewport": { - "center": { - "lat": 51.02672705, - "lng": 10.451526 - }, - "southWest": { - "lat": 47.4430843, - "lng": 2.255725 - }, - "northEast": { - "lat": 54.6103698, - "lng": 18.647327 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "East Germany", - "time": 1299407832006 - }, - "KOHH": { - "address": "Korea", - "geocode": { - "address_components": [ - { - "long_name": "South Korea", - "short_name": "KR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "South Korea", - "geometry": { - "location": { - "lat": 35.907757, - "lng": 127.766922 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 35.81905, - "lng": 128.0072 - }, - "southWest": { - "lat": 33.0041, - "lng": 124.8541 - }, - "northEast": { - "lat": 38.634, - "lng": 131.1603 - } - }, - "viewport": { - "center": { - "lat": 35.87395405, - "lng": 127.766922 - }, - "southWest": { - "lat": 33.5606405, - "lng": 123.6690215 - }, - "northEast": { - "lat": 38.1872676, - "lng": 131.8648225 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Korea", - "time": 1299367322305 - }, - "VDVN": { - "address": "North Vietnam", - "geocode": { - "address_components": [ - { - "long_name": "Vietnam", - "short_name": "VN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Vietnam", - "geometry": { - "location": { - "lat": 14.058324, - "lng": 108.277199 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.7942975, - "lng": 105.910455 - }, - "southWest": { - "lat": 8.1952, - "lng": 102.14441 - }, - "northEast": { - "lat": 23.393395, - "lng": 109.6765 - } - }, - "viewport": { - "center": { - "lat": 13.99146985, - "lng": 108.277199 - }, - "southWest": { - "lat": 8.4577697, - "lng": 100.081398 - }, - "northEast": { - "lat": 19.52517, - "lng": 116.473 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "North Vietnam", - "time": 1299407835943 - }, - "RHZW": { - "address": "Rhodesia", - "geocode": { - "address_components": [ - { - "long_name": "Zimbabwe", - "short_name": "ZW", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Zimbabwe", - "geometry": { - "location": { - "lat": -19.015438, - "lng": 29.154857 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -19.01989715, - "lng": 29.15236995 - }, - "southWest": { - "lat": -22.4236835, - "lng": 25.2369579 - }, - "northEast": { - "lat": -15.6161108, - "lng": 33.067782 - } - }, - "viewport": { - "center": { - "lat": -18.99352415, - "lng": 29.154857 - }, - "southWest": { - "lat": -21.6932147, - "lng": 25.0569565 - }, - "northEast": { - "lat": -16.2938336, - "lng": 33.2527575 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Rhodesia", - "time": 1299407837065 - }, - "CSXX": { - "address": "Serbia and Montenegro", - "geocode": { - "address_components": [ - { - "long_name": "Serbia and Montenegro Embassy", - "short_name": "Serbia and Montenegro Embassy", - "types": [ - "establishment" - ] - }, - { - "long_name": "Niti Marg", - "short_name": "Niti Marg", - "types": [ - "route" - ] - }, - { - "long_name": "Chanakyapuri", - "short_name": "Chanakyapuri", - "types": [ - "sublocality", - "political" - ] - }, - { - "long_name": "New Delhi", - "short_name": "New Delhi", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "New Delhi", - "short_name": "New Delhi", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "Delhi", - "short_name": "Delhi", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "India", - "short_name": "IN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Serbia and Montenegro Embassy, Niti Marg, Chanakyapuri, New Delhi, Delhi, India", - "geometry": { - "location": { - "lat": 28.5920393, - "lng": 77.1901302 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 28.5920393, - "lng": 77.19013015 - }, - "southWest": { - "lat": 28.5906624, - "lng": 77.1884148 - }, - "northEast": { - "lat": 28.5934162, - "lng": 77.1918455 - } - }, - "viewport": { - "center": { - "lat": 28.59203885, - "lng": 77.1901302 - }, - "southWest": { - "lat": 28.5822416, - "lng": 77.1741228 - }, - "northEast": { - "lat": 28.6018361, - "lng": 77.2061376 - } - } - }, - "types": [ - "establishment" - ] - }, - "name": "Serbia and Montenegro", - "time": 1299368259173 - }, - "SITH": { - "address": "Thailand", - "geocode": { - "address_components": [ - { - "long_name": "Thailand", - "short_name": "TH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Thailand", - "geometry": { - "location": { - "lat": 15.870032, - "lng": 100.992541 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 13.038965, - "lng": 101.490104 - }, - "southWest": { - "lat": 5.612787, - "lng": 97.343396 - }, - "northEast": { - "lat": 20.465143, - "lng": 105.636812 - } - }, - "viewport": { - "center": { - "lat": 15.7953983, - "lng": 100.992541 - }, - "southWest": { - "lat": 10.3079872, - "lng": 92.79674 - }, - "northEast": { - "lat": 21.2828094, - "lng": 109.188342 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Siam", - "time": 1299407838902 - }, - "SKIN": { - "address": "Sikkim", - "geocode": { - "address_components": [ - { - "long_name": "Sikkim", - "short_name": "Sikkim", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "India", - "short_name": "IN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Sikkim, India", - "geometry": { - "location": { - "lat": 27.7306273, - "lng": 88.633784 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 27.602878, - "lng": 88.457898 - }, - "southWest": { - "lat": 27.076997, - "lng": 88.00499 - }, - "northEast": { - "lat": 28.128759, - "lng": 88.910806 - } - }, - "viewport": { - "center": { - "lat": 27.7301691, - "lng": 88.633784 - }, - "southWest": { - "lat": 27.4141242, - "lng": 88.1215464 - }, - "northEast": { - "lat": 28.046214, - "lng": 89.1460216 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Sikkim", - "time": 1299407840126 - }, - "YDYE": { - "address": "South Yemen", - "geocode": { - "address_components": [ - { - "long_name": "Yemen", - "short_name": "YE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Yemen", - "geometry": { - "location": { - "lat": 15.552727, - "lng": 48.516388 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 15.39875, - "lng": 48.1943 - }, - "southWest": { - "lat": 11.7975, - "lng": 41.7096 - }, - "northEast": { - "lat": 19, - "lng": 54.679 - } - }, - "viewport": { - "center": { - "lat": 15.47943525, - "lng": 48.516388 - }, - "southWest": { - "lat": 9.9835214, - "lng": 40.320587 - }, - "northEast": { - "lat": 20.9753491, - "lng": 56.712189 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "South Yemen", - "time": 1299407841264 - }, - "SUHH": { - "address": "Soviet Union", - "geocode": { - "address_components": [ - { - "long_name": "WWII Memorial Statue", - "short_name": "WWII Memorial Statue", - "types": [] - }, - { - "long_name": "просп. Достык", - "short_name": "просп. Достык", - "types": [ - "route" - ] - }, - { - "long_name": "Uralsk", - "short_name": "Uralsk", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Zelenov", - "short_name": "Zelenov", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "West Kazakhstan", - "short_name": "West Kazakhstan", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Kazakhstan", - "short_name": "KZ", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "WWII Memorial Statue, просп. Достык, Uralsk, Kazakhstan", - "geometry": { - "location": { - "lat": 51.2206431, - "lng": 51.3635194 - }, - "location_type": "APPROXIMATE", - "viewport": { - "center": { - "lat": 51.2206426, - "lng": 51.3635194 - }, - "southWest": { - "lat": 51.2136541, - "lng": 51.347512 - }, - "northEast": { - "lat": 51.2276311, - "lng": 51.3795268 - } - } - }, - "types": [] - }, - "name": "Soviet Union", - "time": 1299367331078 - }, - "DEDE": { - "address": "West Germany", - "geocode": { - "address_components": [ - { - "long_name": "Germany", - "short_name": "DE", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Germany", - "geometry": { - "location": { - "lat": 51.165691, - "lng": 10.451526 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 51.1758135, - "lng": 10.454045 - }, - "southWest": { - "lat": 47.270127, - "lng": 5.8662579 - }, - "northEast": { - "lat": 55.0815, - "lng": 15.0418321 - } - }, - "viewport": { - "center": { - "lat": 51.02672705, - "lng": 10.451526 - }, - "southWest": { - "lat": 47.4430843, - "lng": 2.255725 - }, - "northEast": { - "lat": 54.6103698, - "lng": 18.647327 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "West Germany", - "time": 1299407844302 - }, - "YUCS": { - "address": "Yugoslavia", - "geocode": { - "address_components": [ - { - "long_name": "Yugoslavia", - "short_name": "Yugoslavia", - "types": [ - "route" - ] - }, - { - "long_name": "Mexicali", - "short_name": "Mexicali", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "Baja California", - "short_name": "BC", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Mexico", - "short_name": "MX", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Yugoslavia, Mexicali, Baja California, Mexico", - "geometry": { - "location": { - "lat": 32.6302601, - "lng": -115.5226492 - }, - "location_type": "GEOMETRIC_CENTER", - "bounds": { - "center": { - "lat": 32.6303401, - "lng": -115.5229606 - }, - "southWest": { - "lat": 32.6139633, - "lng": -115.5242647 - }, - "northEast": { - "lat": 32.6467169, - "lng": -115.5216565 - } - }, - "viewport": { - "center": { - "lat": 32.6303401, - "lng": -115.5229606 - }, - "southWest": { - "lat": 32.6139633, - "lng": -115.5261082 - }, - "northEast": { - "lat": 32.6467169, - "lng": -115.519813 - } - } - }, - "types": [ - "route" - ] - }, - "name": "Yugoslavia", - "time": 1299367335634 - }, - "ZRCD": { - "address": "Zaire", - "geocode": { - "address_components": [ - { - "long_name": "Democratic Republic of the Congo", - "short_name": "CD", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Democratic Republic of the Congo", - "geometry": { - "location": { - "lat": -4.038333, - "lng": 21.758664 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": -4.03833345, - "lng": 21.73311615 - }, - "southWest": { - "lat": -13.4580558, - "lng": 12.1454 - }, - "northEast": { - "lat": 5.3813889, - "lng": 31.3208323 - } - }, - "viewport": { - "center": { - "lat": -4.01840725, - "lng": 21.758664 - }, - "southWest": { - "lat": -9.7077875, - "lng": 13.562863 - }, - "northEast": { - "lat": 1.670973, - "lng": 29.954465 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Zaire", - "time": 1299407846349 - }, - "FXFR": { - "address": "France", - "geocode": { - "address_components": [ - { - "long_name": "France", - "short_name": "FR", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "France", - "geometry": { - "location": { - "lat": 46.227638, - "lng": 2.213749 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 46.22475, - "lng": 2.0517 - }, - "southWest": { - "lat": 41.3253, - "lng": -5.5591 - }, - "northEast": { - "lat": 51.1242, - "lng": 9.6625 - } - }, - "viewport": { - "center": { - "lat": 46.08558305, - "lng": 2.213749 - }, - "southWest": { - "lat": 42.1331639, - "lng": -5.982052 - }, - "northEast": { - "lat": 50.0380022, - "lng": 10.40955 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Metropolitan France", - "time": 1299407849461 - }, - "NHVU": { - "address": "New Hebrides", - "geocode": { - "address_components": [ - { - "long_name": "New Hebrides", - "short_name": "New Hebrides", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Vanuatu", - "short_name": "VU", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "New Hebrides, Vanuatu", - "geometry": { - "location": { - "lat": -16, - "lng": 167 - }, - "location_type": "APPROXIMATE", - "viewport": { - "center": { - "lat": -15.99970525, - "lng": 167 - }, - "southWest": { - "lat": -16.3429273, - "lng": 166.4877624 - }, - "northEast": { - "lat": -15.6564832, - "lng": 167.5122376 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "New Hebrides", - "time": 1299407850709 - }, - "ANHH": { - "address": "Netherlands Antilles", - "geocode": { - "address_components": [ - { - "long_name": "Netherlands Antilles", - "short_name": "AN", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Netherlands Antilles", - "geometry": { - "location": { - "lat": 12.226079, - "lng": -69.060087 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.9816515, - "lng": -66.0813904 - }, - "southWest": { - "lat": 11.8996035, - "lng": -69.2770386 - }, - "northEast": { - "lat": 18.0636995, - "lng": -62.8857422 - } - }, - "viewport": { - "center": { - "lat": 12.16736245, - "lng": -69.060087 - }, - "southWest": { - "lat": 6.5924468, - "lng": -77.255888 - }, - "northEast": { - "lat": 17.7422781, - "lng": -60.864286 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Netherlands Antilles", - "time": 1299407852060 - }, - "MIUM": { - "address": "Midway Islands", - "geocode": { - "address_components": [ - { - "long_name": "Midway Islands", - "short_name": "UM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Midway Islands", - "geometry": { - "location": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "southWest": { - "lat": -0.389006, - "lng": 166.593323 - }, - "northEast": { - "lat": 28.398027, - "lng": -75 - } - }, - "viewport": { - "center": { - "lat": 12.9968137, - "lng": -134.2033385 - }, - "southWest": { - "lat": -8.6721834, - "lng": -166.9865424 - }, - "northEast": { - "lat": 34.6658108, - "lng": -101.4201346 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Midway Islands", - "time": 1299407856345 - }, - "PCHH": { - "address": "Pacific Islands", - "geocode": { - "address_components": [ - { - "long_name": "Islands", - "short_name": "Islands", - "types": [ - "point_of_interest", - "establishment" - ] - }, - { - "long_name": "117", - "short_name": "117", - "types": [ - "street_number" - ] - }, - { - "long_name": "W Broadway", - "short_name": "W Broadway", - "types": [ - "route" - ] - }, - { - "long_name": "Glendale", - "short_name": "Glendale", - "types": [ - "locality", - "political" - ] - }, - { - "long_name": "San Fernando Valley", - "short_name": "San Fernando Valley", - "types": [ - "administrative_area_level_3", - "political" - ] - }, - { - "long_name": "Los Angeles", - "short_name": "Los Angeles", - "types": [ - "administrative_area_level_2", - "political" - ] - }, - { - "long_name": "California", - "short_name": "CA", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "United States", - "short_name": "US", - "types": [ - "country", - "political" - ] - }, - { - "long_name": "91203", - "short_name": "91203", - "types": [ - "postal_code" - ] - } - ], - "formatted_address": "Islands, 117 W Broadway, Glendale, CA 91203, USA", - "geometry": { - "location": { - "lat": 34.146922, - "lng": -118.25597 - }, - "location_type": "APPROXIMATE", - "viewport": { - "center": { - "lat": 34.1469215, - "lng": -118.25597 - }, - "southWest": { - "lat": 34.1376871, - "lng": -118.2719774 - }, - "northEast": { - "lat": 34.1561559, - "lng": -118.2399626 - } - } - }, - "types": [ - "point_of_interest", - "establishment" - ] - }, - "name": "Pacific Islands", - "time": 1299367347372 - }, - "PZPA": { - "address": "Panama Canal Zone", - "geocode": { - "address_components": [ - { - "long_name": "Panama", - "short_name": "PA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Panama", - "geometry": { - "location": { - "lat": 8.537981, - "lng": -80.782127 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 8.3777, - "lng": -80.10536455 - }, - "southWest": { - "lat": 7.0409, - "lng": -83.0522411 - }, - "northEast": { - "lat": 9.7145, - "lng": -77.158488 - } - }, - "viewport": { - "center": { - "lat": 8.53536815, - "lng": -80.782127 - }, - "southWest": { - "lat": 7.1231133, - "lng": -82.8310772 - }, - "northEast": { - "lat": 9.947623, - "lng": -78.7331768 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Panama Canal Zone", - "time": 1299407858293 - }, - "WKUM": { - "address": "Wake Island", - "geocode": { - "address_components": [ - { - "long_name": "Wake Island", - "short_name": "UM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Wake Island", - "geometry": { - "location": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 14.0045105, - "lng": -134.2033385 - }, - "southWest": { - "lat": -0.389006, - "lng": 166.593323 - }, - "northEast": { - "lat": 28.398027, - "lng": -75 - } - }, - "viewport": { - "center": { - "lat": 12.9968137, - "lng": -134.2033385 - }, - "southWest": { - "lat": -8.6721834, - "lng": -166.9865424 - }, - "northEast": { - "lat": 34.6658108, - "lng": -101.4201346 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Wake Island", - "time": 1299407860446 - }, - "UK": { - "address": "United Kingdom", - "geocode": { - "address_components": [ - { - "long_name": "United Kingdom", - "short_name": "GB", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "United Kingdom", - "geometry": { - "location": { - "lat": 55.378051, - "lng": -3.435973 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 47.73855, - "lng": 12.5088275 - }, - "southWest": { - "lat": 34.5614, - "lng": -8.8989 - }, - "northEast": { - "lat": 60.9157, - "lng": 33.916555 - } - }, - "viewport": { - "center": { - "lat": 53.2747281, - "lng": -3.435973 - }, - "southWest": { - "lat": 40.1774485, - "lng": -36.2191769 - }, - "northEast": { - "lat": 66.3720077, - "lng": 29.3472309 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "United Kingdom", - "time": 1299367352755 - }, - "JTUM": { - "address": "Johnston Atoll", - "geocode": { - "address_components": [ - { - "long_name": "Johnston Atoll", - "short_name": "Johnston Atoll", - "types": [ - "natural_feature" - ] - }, - { - "long_name": "Wake Island", - "short_name": "UM", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Johnston Atoll, Wake Island", - "geometry": { - "location": { - "lat": 16.7322716, - "lng": -169.5308371 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 16.733841, - "lng": -169.5302965 - }, - "southWest": { - "lat": 16.726549, - "lng": -169.543488 - }, - "northEast": { - "lat": 16.741133, - "lng": -169.517105 - } - }, - "viewport": { - "center": { - "lat": 16.733841, - "lng": -169.5302965 - }, - "southWest": { - "lat": 16.726549, - "lng": -169.543488 - }, - "northEast": { - "lat": 16.741133, - "lng": -169.517105 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "Johnston Island", - "time": 1299407855201 - }, - "EU": { - "address": "Europe", - "geocode": { - "address_components": [ - { - "long_name": "Europe", - "short_name": "Europe", - "types": [ - "natural_feature" - ] - } - ], - "formatted_address": "Europe", - "geometry": { - "location": { - "lat": 54.5259614, - "lng": 15.2551187 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 58.29998485, - "lng": 23.0493 - }, - "southWest": { - "lat": 33.8978, - "lng": -28.0371 - }, - "northEast": { - "lat": 82.7021697, - "lng": 74.1357 - } - }, - "viewport": { - "center": { - "lat": 58.29998485, - "lng": 23.0493 - }, - "southWest": { - "lat": 33.8978, - "lng": -28.0371 - }, - "northEast": { - "lat": 82.7021697, - "lng": 74.1357 - } - } - }, - "types": [ - "natural_feature" - ] - }, - "name": "European Union", - "time": 1299407861727 - }, - "EH": { - "address": "Western Sahara", - "geocode": { - "address_components": [ - { - "long_name": "Western Sahara", - "short_name": "EH", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Western Sahara", - "geometry": { - "location": { - "lat": 24.215527, - "lng": -12.885834 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 24.0747, - "lng": -13.06198295 - }, - "southWest": { - "lat": 20.427, - "lng": -17.4573 - }, - "northEast": { - "lat": 27.7224, - "lng": -8.6666659 - } - }, - "viewport": { - "center": { - "lat": 24.1889134, - "lng": -12.885834 - }, - "southWest": { - "lat": 21.5845256, - "lng": -16.9837345 - }, - "northEast": { - "lat": 26.7933012, - "lng": -8.7879335 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Sahrawi", - "time": 1299407749858 - }, - "NTHH": { - "address": "Neutral Zone, Saudi Arabia", - "geocode": { - "address_components": [ - { - "long_name": "Irq/sau Neutral Zone", - "short_name": "Irq/sau Neutral Zone", - "types": [ - "administrative_area_level_1", - "political" - ] - }, - { - "long_name": "Saudi Arabia", - "short_name": "SA", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Irq/sau Neutral Zone, Saudi Arabia", - "geometry": { - "location": { - "lat": 28.9602072, - "lng": 45.6763443 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 28.98721835, - "lng": 45.6265483 - }, - "southWest": { - "lat": 28.7778378, - "lng": 44.7373584 - }, - "northEast": { - "lat": 29.1965989, - "lng": 46.5157382 - } - }, - "viewport": { - "center": { - "lat": 28.95832195, - "lng": 45.6763443 - }, - "southWest": { - "lat": 28.3335144, - "lng": 44.6518692 - }, - "northEast": { - "lat": 29.5831295, - "lng": 46.7008194 - } - } - }, - "types": [ - "administrative_area_level_1", - "political" - ] - }, - "name": "Neutral Zone", - "time": 1299407834885 - }, - "HVBF": { - "address": "Burkina Faso", - "geocode": { - "address_components": [ - { - "long_name": "Burkina Faso", - "short_name": "BF", - "types": [ - "country", - "political" - ] - } - ], - "formatted_address": "Burkina Faso", - "geometry": { - "location": { - "lat": 12.238333, - "lng": -1.561593 - }, - "location_type": "APPROXIMATE", - "bounds": { - "center": { - "lat": 12.23949995, - "lng": -1.5584094 - }, - "southWest": { - "lat": 9.3938889, - "lng": -5.5211114 - }, - "northEast": { - "lat": 15.085111, - "lng": 2.4042926 - } - }, - "viewport": { - "center": { - "lat": 12.2235969, - "lng": -1.561593 - }, - "southWest": { - "lat": 9.4331182, - "lng": -5.6594935 - }, - "northEast": { - "lat": 15.0140756, - "lng": 2.5363075 - } - } - }, - "types": [ - "country", - "political" - ] - }, - "name": "Upper Volta", - "time": 1299407843117 - } -} \ No newline at end of file diff --git a/tools/geo/index.html b/tools/geo/index.html deleted file mode 100644 index 392ff11d..00000000 --- a/tools/geo/index.html +++ /dev/null @@ -1,408 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tools/geo/map.png b/tools/geo/map.png deleted file mode 100644 index 3462ad70..00000000 Binary files a/tools/geo/map.png and /dev/null differ