From 5687a3007709991a24824f2b2382682d62cccdde Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sun, 4 Nov 2012 17:23:15 +0100 Subject: [PATCH 01/17] version bump --- .DS_Store | Bin 6148 -> 6148 bytes Core.js | 2 +- Tentia-Info.plist | 4 ++-- default.css | 2 +- delete.png | Bin 0 -> 199 bytes 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 delete.png diff --git a/.DS_Store b/.DS_Store index e9540dea2bf525aa9c807b6effd65f01a6b4cfd5..9a40a2c027f9abe6555c03cfae1cfba9b273143a 100644 GIT binary patch literal 6148 zcmeHKJxc>Y5S@)Dh!TjB!ty|{6jR$A;gZH8#aUS;<}^{0T+jsVJn(l2cK!rK{0UZ8 zHg=Z&0xRF_E@78^osFpM!0y}Z&fA%J$K7U$NR)?hiKswCOK6PVGP()I>)ggHr)P>l z!FzOCrKp*7`(vJN!YSYs_>BtiyX(;wwdj}z*86+6@oBDglQ4{jgC^1QQ}tSwGU9cU zcP%du0~#V;hhi(@&da;KYQ%ip+-0iCHKI;fwc=K9nVY8y^-yUCvCpZE zsyo!DGfL>h$|F~dW_z1??O*ZMv-URgobPSroeOyHRf>>j1DT#8<3r?qgmHtq7+)ZJ z%v<^AU&CxHqmG*opF?GdWz_QxmQ~lL z-YMV|uoYNPKMQ>RSEk?pZIb)t6mSasD+PoXMqwEx>9cjLI6iBAv^p9a`=tsc1)V;Q i<$#Z3b@Ng_K7cua##EuCVqQ_*9|2aynN#3r6!-%A;liQ- delta 131 zcmZoMXfc=|#>B`mF;Q%yo}wrV0|Nsi1A_nqLncEagC0W#Lo!4D#Kh%{ERz-3RVJ@s z<72w&31;45<7Qr=p)y&HU2U=eJ2&$@VGkhNgwbHLAcq*s#sV>>&Fmcf96+Oi0^gY@ V^NUylO$D3I1f^LvM~JLp1^_Sq8TbGI diff --git a/Core.js b/Core.js index 8a86fc5..475c32f 100644 --- a/Core.js +++ b/Core.js @@ -7,7 +7,7 @@ // function Core(action) { - this.max_length = 20; + this.max_length = 200; // this.timeout = 2 * 60 * 1000; this.timeout = 10 * 1000; // every 10 seconds this.action = action; diff --git a/Tentia-Info.plist b/Tentia-Info.plist index 534da7d..01a5877 100644 --- a/Tentia-Info.plist +++ b/Tentia-Info.plist @@ -42,7 +42,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.1.1 + 0.1.2 CFBundleSignature ???? CFBundleURLTypes @@ -57,7 +57,7 @@ CFBundleVersion - 0.1.1 + 0.1.2 LSApplicationCategoryType public.app-category.lifestyle LSMinimumSystemVersion diff --git a/default.css b/default.css index cdfb0ea..4b7368d 100644 --- a/default.css +++ b/default.css @@ -207,7 +207,7 @@ li:hover .date { li:first-child:hover .date { top: auto; - bottom: -1.8em; + bottom: -1.6em; z-index: 2; -webkit-border-top-left-radius: 0; -webkit-border-top-right-radius: 0; diff --git a/delete.png b/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..81578db09fa7f30c59ddc76158a0f240d99a8b31 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^+#ogw8<4F3I>j1DNtU=qlmzFem6RtIr7}3CIRI-ujePb1i1V=M}kAtk7!|UzLYd;@e%B8WNQ{#PSj;-UY&PEo4 vH=>JKWKEtKWX!PP4m$8(J;lJGfsw)YRetzU2i0dlOBp;}{an^LB{Ts5wo^kS literal 0 HcmV?d00001 From 248d8fa1b6731c754058d3c26ae9c28af6e3964a Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Mon, 5 Nov 2012 17:47:26 +0100 Subject: [PATCH 02/17] mved files to prepare for Linux version --- .DS_Store | Bin 6148 -> 6148 bytes Mac/.DS_Store | Bin 0 -> 6148 bytes Mac/AccessToken.h | 27 + Mac/AccessToken.m | 88 + Mac/Constants.h | 30 + Mac/Constants.m | 220 ++ Mac/Controller.h | 64 + Mac/Controller.m | 313 ++ Mac/English.lproj/Credits.rtf | 25 + Mac/English.lproj/InfoPlist.strings | 2 + Mac/English.lproj/MainMenu.xib | 2806 +++++++++++++++++ Mac/English.lproj/NewMessageWindow.xib | 372 +++ Mac/Icon.icns | Bin 0 -> 121861 bytes Mac/NewMessageWindow.h | 28 + Mac/NewMessageWindow.m | 158 + Mac/Sparkle.framework/Headers | 1 + Mac/Sparkle.framework/Resources | 1 + Mac/Sparkle.framework/Sparkle | 1 + .../Versions/A/Headers/SUAppcast.h | 33 + .../Versions/A/Headers/SUAppcastItem.h | 47 + .../Versions/A/Headers/SUUpdater.h | 118 + .../A/Headers/SUVersionComparisonProtocol.h | 27 + .../Versions/A/Headers/Sparkle.h | 21 + .../Versions/A/Resources/Info.plist | 24 + .../Versions/A/Resources/License.txt | 7 + .../A/Resources/SUModelTranslation.plist | 174 + .../A/Resources/SUStatus.nib/classes.nib | 56 + .../A/Resources/SUStatus.nib/info.nib | 20 + .../A/Resources/SUStatus.nib/keyedobjects.nib | Bin 0 -> 7344 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7278 bytes .../de.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../de.lproj/SUUpdateAlert.nib/info.nib | 20 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10493 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 13189 bytes .../A/Resources/de.lproj/Sparkle.strings | Bin 0 -> 9806 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7148 bytes .../en.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../en.lproj/SUUpdateAlert.nib/info.nib | 20 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10623 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 21 + .../keyedobjects.nib | Bin 0 -> 13263 bytes .../A/Resources/en.lproj/Sparkle.strings | Bin 0 -> 8216 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7273 bytes .../es.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../es.lproj/SUUpdateAlert.nib/info.nib | 20 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10668 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 13404 bytes .../A/Resources/es.lproj/Sparkle.strings | Bin 0 -> 8020 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 16 + .../keyedobjects.nib | Bin 0 -> 7245 bytes .../fr.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../fr.lproj/SUUpdateAlert.nib/info.nib | 16 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10338 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 16 + .../keyedobjects.nib | Bin 0 -> 13156 bytes .../A/Resources/fr.lproj/Sparkle.strings | Bin 0 -> 8554 bytes .../Versions/A/Resources/fr.lproj/fr.lproj | 1 + .../Versions/A/Resources/fr_CA.lproj | 1 + .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7161 bytes .../it.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../it.lproj/SUUpdateAlert.nib/info.nib | 20 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10360 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 12659 bytes .../A/Resources/it.lproj/Sparkle.strings | Bin 0 -> 8914 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 18 + .../keyedobjects.nib | Bin 0 -> 7234 bytes .../nl.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../nl.lproj/SUUpdateAlert.nib/info.nib | 16 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10220 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 16 + .../keyedobjects.nib | Bin 0 -> 12535 bytes .../A/Resources/nl.lproj/Sparkle.strings | Bin 0 -> 8514 bytes .../Versions/A/Resources/relaunch | Bin 0 -> 58924 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7675 bytes .../ru.lproj/SUUpdateAlert.nib/classes.nib | 67 + .../ru.lproj/SUUpdateAlert.nib/info.nib | 20 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10895 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 18 + .../keyedobjects.nib | Bin 0 -> 12898 bytes .../A/Resources/ru.lproj/Sparkle.strings | Bin 0 -> 8364 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 + .../SUAutomaticUpdateAlert.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 7474 bytes .../sv.lproj/SUUpdateAlert.nib/classes.nib | 39 + .../sv.lproj/SUUpdateAlert.nib/info.nib | 18 + .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 10180 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 + .../SUUpdatePermissionPrompt.nib/info.nib | 20 + .../keyedobjects.nib | Bin 0 -> 13483 bytes .../A/Resources/sv.lproj/Sparkle.strings | Bin 0 -> 8142 bytes Mac/Sparkle.framework/Versions/A/Sparkle | Bin 0 -> 463540 bytes Mac/Sparkle.framework/Versions/Current | 1 + Mac/Tentia-Info.plist | 80 + Mac/Tentia.xcodeproj/jeena.mode1v3 | 1421 +++++++++ Mac/Tentia.xcodeproj/jeena.pbxuser | 496 +++ Mac/Tentia.xcodeproj/project.pbxproj | 490 +++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 33669 bytes .../WorkspaceSettings.xcsettings | 10 + .../xcdebugger/Breakpoints.xcbkptlist | 18 + .../xcschemes/Twittia.xcscheme | 86 + .../xcschemes/xcschememanagement.plist | 22 + Mac/Tentia_Prefix.pch | 7 + Mac/TweetModel.h | 22 + Mac/TweetModel.m | 23 + Mac/ViewDelegate.h | 23 + Mac/ViewDelegate.m | 84 + Mac/WebKit/Constants.js | 21 + Mac/WebKit/ConversationView.js | 0 Mac/WebKit/Core.js | 457 +++ Mac/WebKit/OauthImplementation.js | 142 + Mac/WebKit/TimelineView.js | 0 Mac/WebKit/URI.min.js | 70 + Mac/WebKit/default-avatar.png | Bin 0 -> 3159 bytes Mac/WebKit/default.css | 238 ++ Mac/WebKit/delete.png | Bin 0 -> 199 bytes Mac/WebKit/enc-base64-min.js | 8 + Mac/WebKit/even-bg.png | Bin 0 -> 171 bytes Mac/WebKit/hmac-helper.js | 122 + Mac/WebKit/hmac-sha256.js | 17 + Mac/WebKit/index.html | 18 + Mac/WebKit/index_oauth.html | 16 + Mac/WebKit/jQuery-Plugins.js | 330 ++ Mac/WebKit/jQuery.js | 154 + Mac/WebKit/odd-bg.png | Bin 0 -> 166 bytes Mac/WebKit/pin.png | Bin 0 -> 630 bytes Mac/WebKit/sprite-icons.png | Bin 0 -> 11868 bytes Mac/main.m | 14 + WebKit/Constants.js | 21 + WebKit/ConversationView.js | 0 WebKit/Core.js | 457 +++ WebKit/OauthImplementation.js | 142 + WebKit/TimelineView.js | 0 WebKit/URI.min.js | 70 + WebKit/default-avatar.png | Bin 0 -> 3159 bytes WebKit/default.css | 238 ++ WebKit/delete.png | Bin 0 -> 199 bytes WebKit/enc-base64-min.js | 8 + WebKit/even-bg.png | Bin 0 -> 171 bytes WebKit/hmac-helper.js | 122 + WebKit/hmac-sha256.js | 17 + WebKit/index.html | 18 + WebKit/index_oauth.html | 16 + WebKit/jQuery-Plugins.js | 330 ++ WebKit/jQuery.js | 154 + WebKit/odd-bg.png | Bin 0 -> 166 bytes WebKit/pin.png | Bin 0 -> 630 bytes WebKit/sprite-icons.png | Bin 0 -> 11868 bytes publish/Appcast.xml | 20 + publish/ReleaseNotes.html | 32 + publish/Tentia.psd | Bin 0 -> 161862 bytes publish/dsa_pub.pem | 20 + publish/publish.rb | 40 + 175 files changed, 12602 insertions(+) create mode 100644 Mac/.DS_Store create mode 100644 Mac/AccessToken.h create mode 100644 Mac/AccessToken.m create mode 100644 Mac/Constants.h create mode 100644 Mac/Constants.m create mode 100644 Mac/Controller.h create mode 100644 Mac/Controller.m create mode 100644 Mac/English.lproj/Credits.rtf create mode 100644 Mac/English.lproj/InfoPlist.strings create mode 100644 Mac/English.lproj/MainMenu.xib create mode 100644 Mac/English.lproj/NewMessageWindow.xib create mode 100644 Mac/Icon.icns create mode 100644 Mac/NewMessageWindow.h create mode 100644 Mac/NewMessageWindow.m create mode 120000 Mac/Sparkle.framework/Headers create mode 120000 Mac/Sparkle.framework/Resources create mode 120000 Mac/Sparkle.framework/Sparkle create mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h create mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h create mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h create mode 100644 Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h create mode 100644 Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/Info.plist create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/License.txt create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings create mode 120000 Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj create mode 120000 Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings create mode 100755 Mac/Sparkle.framework/Versions/A/Resources/relaunch create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100644 Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings create mode 100755 Mac/Sparkle.framework/Versions/A/Sparkle create mode 120000 Mac/Sparkle.framework/Versions/Current create mode 100644 Mac/Tentia-Info.plist create mode 100644 Mac/Tentia.xcodeproj/jeena.mode1v3 create mode 100644 Mac/Tentia.xcodeproj/jeena.pbxuser create mode 100644 Mac/Tentia.xcodeproj/project.pbxproj create mode 100644 Mac/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme create mode 100644 Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Mac/Tentia_Prefix.pch create mode 100644 Mac/TweetModel.h create mode 100644 Mac/TweetModel.m create mode 100644 Mac/ViewDelegate.h create mode 100644 Mac/ViewDelegate.m create mode 100644 Mac/WebKit/Constants.js create mode 100644 Mac/WebKit/ConversationView.js create mode 100644 Mac/WebKit/Core.js create mode 100644 Mac/WebKit/OauthImplementation.js create mode 100644 Mac/WebKit/TimelineView.js create mode 100644 Mac/WebKit/URI.min.js create mode 100644 Mac/WebKit/default-avatar.png create mode 100644 Mac/WebKit/default.css create mode 100644 Mac/WebKit/delete.png create mode 100644 Mac/WebKit/enc-base64-min.js create mode 100644 Mac/WebKit/even-bg.png create mode 100644 Mac/WebKit/hmac-helper.js create mode 100644 Mac/WebKit/hmac-sha256.js create mode 100644 Mac/WebKit/index.html create mode 100644 Mac/WebKit/index_oauth.html create mode 100644 Mac/WebKit/jQuery-Plugins.js create mode 100644 Mac/WebKit/jQuery.js create mode 100644 Mac/WebKit/odd-bg.png create mode 100644 Mac/WebKit/pin.png create mode 100644 Mac/WebKit/sprite-icons.png create mode 100644 Mac/main.m create mode 100644 WebKit/Constants.js create mode 100644 WebKit/ConversationView.js create mode 100644 WebKit/Core.js create mode 100644 WebKit/OauthImplementation.js create mode 100644 WebKit/TimelineView.js create mode 100644 WebKit/URI.min.js create mode 100644 WebKit/default-avatar.png create mode 100644 WebKit/default.css create mode 100644 WebKit/delete.png create mode 100644 WebKit/enc-base64-min.js create mode 100644 WebKit/even-bg.png create mode 100644 WebKit/hmac-helper.js create mode 100644 WebKit/hmac-sha256.js create mode 100644 WebKit/index.html create mode 100644 WebKit/index_oauth.html create mode 100644 WebKit/jQuery-Plugins.js create mode 100644 WebKit/jQuery.js create mode 100644 WebKit/odd-bg.png create mode 100644 WebKit/pin.png create mode 100644 WebKit/sprite-icons.png create mode 100755 publish/Appcast.xml create mode 100644 publish/ReleaseNotes.html create mode 100644 publish/Tentia.psd create mode 100644 publish/dsa_pub.pem create mode 100755 publish/publish.rb diff --git a/.DS_Store b/.DS_Store index 9a40a2c027f9abe6555c03cfae1cfba9b273143a..4d9bfd3052d28c03cd12f22832e2889e23650b8c 100644 GIT binary patch delta 63 zcmZoMXfc=|#>CJ*F;Q%yo+2a5!~knXmdQLU#hXPrgjhBfd}G?o&cV+CRIyo*<2&Y5S@)Dh!TjB!ty|{6jR$A;gZH8#aUS;<}^{0T+jsVJn(l2cK!rK{0UZ8 zHg=Z&0xRF_E@78^osFpM!0y}Z&fA%J$K7U$NR)?hiKswCOK6PVGP()I>)ggHr)P>l z!FzOCrKp*7`(vJN!YSYs_>BtiyX(;wwdj}z*86+6@oBDglQ4{jgC^1QQ}tSwGU9cU zcP%du0~#V;hhi(@&da;KYQ%ip+-0iCHKI;fwc=K9nVY8y^-yUCvCpZE zsyo!DGfL>h$|F~dW_z1??O*ZMv-URgobPSroeOyHRf>>j1DT#8<3r?qgmHtq7+)ZJ z%v<^AU&CxHqmG*opF?GdWz_QxmQ~lL z-YMV|uoYNPKMQ>RSEk?pZIb)t6mSasD+PoXMqwEx>9cjLI6iBAv^p9a`=tsc1)V;Q i<$#Z3b@Ng_K7cua##EuCVqQ_*9|2aynN#3r6!-%A;liQ- diff --git a/Mac/.DS_Store b/Mac/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ab844af53727d07f898c8bcd14566a477eefa7b7 GIT binary patch literal 6148 zcmeHKu};G<5IvV7RiH`*F)(IgM093}s+5JHLztK-4YY-(sh|~Xx-;e+2BRj4vmjAF#Z%Rif(Oa^DhN+0*j%=+#p6^%20uZs_Yd*89Mp{J1?}D8#HuM z_VS^uXJv0FN_)rpfu2q(G$^$wAPV>jteD3Jpa1Re@BcnYoIHb6N+VdHtZK}|trk7M27quAW^%$xwgoX}!!P*c%wsPZGgs)&gKzoWn>QcbB( literal 0 HcmV?d00001 diff --git a/Mac/AccessToken.h b/Mac/AccessToken.h new file mode 100644 index 0000000..0a3941c --- /dev/null +++ b/Mac/AccessToken.h @@ -0,0 +1,27 @@ +// +// AccessToken.h +// Tentia +// +// Created by Jeena Paradies on 19/09/2011. +// Copyright 2011 __MyCompanyName__. All rights reserved. +// + + + +@interface AccessToken : NSObject { + NSUserDefaults *d; +} + +- (void)setString:(NSString *)string forKey:(NSString *)aKey; +- (NSString *)stringForKey:(NSString *)aKey; + +- (void)setAccessToken:(NSString *)_accessToken; +- (NSString *)accessToken; +- (void)setSecret:(NSString *)_secret; +- (NSString *)secret; +- (void)setUserId:(NSString *)_userId; +- (NSString *)userId; +- (void)setScreenName:(NSString *)_screenName; +- (NSString *)screenName; + +@end \ No newline at end of file diff --git a/Mac/AccessToken.m b/Mac/AccessToken.m new file mode 100644 index 0000000..02b181f --- /dev/null +++ b/Mac/AccessToken.m @@ -0,0 +1,88 @@ +// +// AccessToken.m +// Tentia +// +// Created by Jeena Paradies on 19/09/2011. +// Copyright 2011 __MyCompanyName__. All rights reserved. +// + +#import "AccessToken.h" + +@implementation AccessToken + +- (id)init +{ + self = [super init]; + if (self) { + // Initialization code here. + d = [NSUserDefaults standardUserDefaults]; + //[d removeObjectForKey:@"user_access_token"]; + } + + return self; +} + +- (void)setString:(NSString *)string forKey:(NSString *)aKey +{ + [d setObject:string forKey:aKey]; + [d synchronize]; +} + +- (NSString *)stringForKey:(NSString *)aKey +{ + return [d objectForKey:aKey]; +} + +- (void)setAccessToken:(NSString *)_accessToken +{ + [d synchronize]; +} + +- (NSString *)accessToken +{ + return [d objectForKey:@"accessToken"]; +} + +- (void)setSecret:(NSString *)_secret +{ + [d setObject:_secret forKey:@"secret"]; + [d synchronize]; +} + +- (NSString *)secret +{ + return [d objectForKey:@"secret"]; +} + +- (void)setUserId:(NSString *)_userId +{ + [d setObject:_userId forKey:@"userId"]; + [d synchronize]; +} + +- (NSString *)userId +{ + return [d objectForKey:@"userId"]; +} + +- (void)setScreenName:(NSString *)_screenName +{ + [d setObject:_screenName forKey:@"screenName"]; + [d synchronize]; +} + +- (NSString *)screenName +{ + return [d objectForKey:@"screenName"]; +} + ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { + return NO; +} + ++ (BOOL)isKeyExcludedFromWebScript:(const char *)name { + return NO; +} + + +@end diff --git a/Mac/Constants.h b/Mac/Constants.h new file mode 100644 index 0000000..ea85a62 --- /dev/null +++ b/Mac/Constants.h @@ -0,0 +1,30 @@ +// +// Constants.h +// Tentia +// +// Created by Jeena on 01.05.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import +#import + + +@interface Constants : NSObject { + +} + +#define OAUTH_CONSUMER_KEY @"JPmU8KJhiBKfpohCiWLg" +#define OAUTH_CONSUMER_SECRET @"jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" +#define OAUTH_SIGNATURE_METHOD @"HMAC-SHA1" +#define OAUTH_REQUEST_TOKEN_URL @"http://twitter.com/oauth/request_token" +#define OAUTH_USER_AUTHORIZATION_URL @"http://twitter.com/oauth/authorize" +#define OAUTH_ACCESS_TOKEN_URL @"http://twitter.com/oauth/access_token" +#define OAUTH_SERVICE_NAME @"twitter.com" + +#define APP_NAME @"Tentia" +#define MESSAGE_MAX_LENGTH 256 + ++ (NSString *)stringFromVirtualKeyCode:(NSInteger)code; + +@end diff --git a/Mac/Constants.m b/Mac/Constants.m new file mode 100644 index 0000000..a40d9e2 --- /dev/null +++ b/Mac/Constants.m @@ -0,0 +1,220 @@ +// +// Constants.m +// Tentia +// +// Created by Jeena on 01.05.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import "Constants.h" + + +@implementation Constants + ++ (NSString *)stringFromVirtualKeyCode:(NSInteger)code { + NSString *string = nil; + switch (code) { + case kVK_ANSI_A: + string = @"A"; + break; + case kVK_ANSI_S: + string = @"S"; + break; + case kVK_ANSI_D: + string = @"D"; + break; + case kVK_ANSI_F: + string = @"F"; + break; + case kVK_ANSI_H: + string = @"H"; + break; + case kVK_ANSI_G: + string = @"G"; + break; + case kVK_ANSI_Z: + string = @"Z"; + break; + case kVK_ANSI_X: + string = @"X"; + break; + case kVK_ANSI_C: + string = @"C"; + break; + case kVK_ANSI_V: + string = @"V"; + break; + case kVK_ANSI_B: + string = @"B"; + break; + case kVK_ANSI_Q: + string = @"Q"; + break; + case kVK_ANSI_W: + string = @"W"; + break; + case kVK_ANSI_E: + string = @"E"; + break; + case kVK_ANSI_R: + string = @"R"; + break; + case kVK_ANSI_Y: + string = @"Y"; + break; + case kVK_ANSI_T: + string = @"T"; + break; + case kVK_ANSI_1: + string = @"1"; + break; + case kVK_ANSI_2: + string = @"2"; + break; + case kVK_ANSI_3: + string = @"3"; + break; + case kVK_ANSI_4: + string = @"4"; + break; + case kVK_ANSI_6: + string = @"6"; + break; + case kVK_ANSI_5: + string = @"5"; + break; + case kVK_ANSI_Equal: + string = @"="; + break; + case kVK_ANSI_9: + string = @"9"; + break; + case kVK_ANSI_7: + string = @"7"; + break; + case kVK_ANSI_Minus: + string = @"-"; + break; + case kVK_ANSI_8: + string = @"8"; + break; + case kVK_ANSI_0: + string = @"0"; + break; + case kVK_ANSI_RightBracket: + string = @")"; + break; + case kVK_ANSI_O: + string = @"0"; + break; + case kVK_ANSI_U: + string = @"U"; + break; + case kVK_ANSI_LeftBracket: + string = @"("; + break; + case kVK_ANSI_I: + string = @"I"; + break; + case kVK_ANSI_P: + string = @"P"; + break; + case kVK_ANSI_L: + string = @"L"; + break; + case kVK_ANSI_J: + string = @"J"; + break; + case kVK_ANSI_Quote: + string = @"\""; + break; + case kVK_ANSI_K: + string = @"K"; + break; + case kVK_ANSI_Semicolon: + string = @";"; + break; + case kVK_ANSI_Backslash: + string = @"\\"; + break; + case kVK_ANSI_Comma: + string = @","; + break; + case kVK_ANSI_Slash: + string = @"/"; + break; + case kVK_ANSI_N: + string = @"N"; + break; + case kVK_ANSI_M: + string = @"M"; + break; + case kVK_ANSI_Period: + string = @"."; + break; + case kVK_ANSI_Grave: + string = @"`"; + break; + case kVK_ANSI_KeypadDecimal: + string = @"."; + break; + case kVK_ANSI_KeypadMultiply: + string = @"*"; + break; + case kVK_ANSI_KeypadPlus: + string = @"+"; + break; + case kVK_ANSI_KeypadClear: + string = @""; + break; + case kVK_ANSI_KeypadDivide: + string = @"/"; + break; + case kVK_ANSI_KeypadEnter: + string = @"⎆"; + break; + case kVK_ANSI_KeypadMinus: + string = @"-"; + break; + case kVK_ANSI_KeypadEquals: + string = @"="; + break; + case kVK_ANSI_Keypad0: + string = @"0"; + break; + case kVK_ANSI_Keypad1: + string = @"1"; + break; + case kVK_ANSI_Keypad2: + string = @"2"; + break; + case kVK_ANSI_Keypad3: + string = @"3"; + break; + case kVK_ANSI_Keypad4: + string = @"4"; + break; + case kVK_ANSI_Keypad5: + string = @"5"; + break; + case kVK_ANSI_Keypad6: + string = @"6"; + break; + case kVK_ANSI_Keypad7: + string = @"7"; + break; + case kVK_ANSI_Keypad8: + string = @"8"; + break; + case kVK_ANSI_Keypad9: + string = @"9"; + break; + default: + string = nil; + break; + } + + return string; +} + +@end diff --git a/Mac/Controller.h b/Mac/Controller.h new file mode 100644 index 0000000..8c4f381 --- /dev/null +++ b/Mac/Controller.h @@ -0,0 +1,64 @@ +// +// Controller.h +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import +#import +#import "ViewDelegate.h" +#import +#import "Constants.h" +#import "AccessToken.h" + + +@interface Controller : NSObject { + IBOutlet WebView *timelineView; + IBOutlet NSWindow *timelineViewWindow; + IBOutlet WebView *mentionsView; + IBOutlet NSWindow *mentionsViewWindow; + NSWindow *loginViewWindow; + NSProgressIndicator *loginActivityIndicator; + IBOutlet NSMenuItem *globalHotkeyMenuItem; + IBOutlet NSImageView *logoLayer; + ViewDelegate *viewDelegate; + WebView *oauthView; + AccessToken *accessToken; +} + +@property (retain, nonatomic) IBOutlet WebView *timelineView; +@property (retain, nonatomic) IBOutlet NSWindow *timelineViewWindow; +@property (retain, nonatomic) IBOutlet WebView *mentionsView; +@property (retain, nonatomic) IBOutlet NSWindow *mentionsViewWindow; +@property (assign) IBOutlet NSWindow *loginViewWindow; +@property (assign) IBOutlet NSProgressIndicator *loginActivityIndicator; +@property (retain, nonatomic) IBOutlet NSMenuItem *globalHotkeyMenuItem; +@property (retain, nonatomic) IBOutlet NSImageView *logoLayer; +@property (retain, nonatomic) IBOutlet ViewDelegate *viewDelegate; +@property (retain, nonatomic) WebView *oauthView; +@property (retain, nonatomic) AccessToken *accessToken; + +- (void)initOauth; +- (void)authentificationSucceded:(id)sender; +- (void)initWebViews; +- (void)initHotKeys; +- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; +- (NSString *)pluginURL; +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; +- (void)unreadMentions:(NSInteger)count; +- (void)openURL:(NSString *)url; + +- (void)setString:(NSString *)string forKey:(NSString *)aKey; +- (NSString *)stringForKey:(NSString *)aKey; +- (void)storeAccessToken:(NSString *)accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName; +- (void)loggedIn; + +- (IBAction)login:(id)sender; +- (IBAction)logout:(id)sender; + + +OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData); + +@end diff --git a/Mac/Controller.m b/Mac/Controller.m new file mode 100644 index 0000000..7eb883a --- /dev/null +++ b/Mac/Controller.m @@ -0,0 +1,313 @@ +// +// Controller.m +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import "Controller.h" +#import "NewMessageWindow.h" +#import "TweetModel.h" + + +@implementation Controller +@synthesize loginViewWindow; +@synthesize loginActivityIndicator; + +@synthesize timelineView, timelineViewWindow, mentionsView, mentionsViewWindow, globalHotkeyMenuItem, viewDelegate; +@synthesize logoLayer; +@synthesize oauthView, accessToken; + +- (void)awakeFromNib { + + [self initHotKeys]; + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(openNewMessageWindow:) + name:@"openNewMessageWindow" + object:nil]; + [nc addObserver:self + selector:@selector(sendTweet:) + name:@"sendTweet" + object:nil]; + [nc addObserver:self + selector:@selector(authentificationSucceded:) + name:@"authentificationSucceded" + object:nil]; + [nc addObserver:self + selector:@selector(getTweetUpdates:) + name:@"getTweetUpdates" + object:nil]; + + NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager]; + [appleEventManager setEventHandler:self + andSelector:@selector(handleGetURLEvent:withReplyEvent:) + forEventClass:kInternetEventClass + andEventID:kAEGetURL]; + + viewDelegate = [[ViewDelegate alloc] init]; + + + accessToken = [[AccessToken alloc] init]; + + //[accessToken setString:nil forKey:@"user_access_token"]; + + if (![accessToken stringForKey:@"user_access_token"]) { + [timelineViewWindow performClose:self]; + [mentionsViewWindow performClose:self]; + [self.loginViewWindow makeKeyAndOrderFront:self]; + } else { + [timelineViewWindow makeKeyAndOrderFront:self]; + [self initWebViews]; + } +} + +- (void)initOauth { + if (!oauthView) { + NSString *path = [[NSBundle mainBundle] resourcePath]; + NSURL *url = [NSURL fileURLWithPath:path]; + NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index_oauth.html", path] encoding:NSUTF8StringEncoding error:nil]; + + + oauthView = [[WebView alloc] init]; + viewDelegate.oauthView = oauthView; + [[oauthView mainFrame] loadHTMLString:index_string baseURL:url]; + [oauthView setFrameLoadDelegate:viewDelegate]; + [oauthView setPolicyDelegate:viewDelegate]; + [oauthView setUIDelegate:viewDelegate]; + [[oauthView windowScriptObject] setValue:self forKey:@"controller"]; + } else { + [oauthView stringByEvaluatingJavaScriptFromString:@"tentia_oauth.authenticate()"]; + } +} + +- (void)initHotKeys { + + NSInteger newTweetKey = kVK_ANSI_M; // http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes + NSInteger newTweetModifierKey = controlKey + cmdKey + optionKey; // cmdKey 256, shitfKey 512, optionKey 2048, controlKey 4096 + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + NSInteger defaultsNewTweetKey = (NSInteger)[defaults integerForKey:@"newTweetKey"]; + + if ([defaults objectForKey:@"newTweetKey"] != nil) { + newTweetKey = defaultsNewTweetKey; + } else { + [defaults setInteger:newTweetKey forKey:@"newTweetKey"]; + } + + NSInteger defaultsNewTweetModifierKey = (NSInteger)[defaults integerForKey:@"newTweetModifierKey"]; + if ([defaults objectForKey:@"newTweetModifierKey"] != nil) { + newTweetModifierKey = defaultsNewTweetModifierKey; + } else { + [defaults setInteger:newTweetModifierKey forKey:@"newTweetModifierKey"]; + } + + [defaults synchronize]; + + NSUInteger cocoaModifiers = 0; + if (newTweetModifierKey & shiftKey) cocoaModifiers = cocoaModifiers | NSShiftKeyMask; + if (newTweetModifierKey & optionKey) cocoaModifiers = cocoaModifiers | NSAlternateKeyMask; + if (newTweetModifierKey & controlKey) cocoaModifiers = cocoaModifiers | NSControlKeyMask; + if (newTweetModifierKey & cmdKey) cocoaModifiers = cocoaModifiers | NSCommandKeyMask; + + [globalHotkeyMenuItem setKeyEquivalent:[Constants stringFromVirtualKeyCode:newTweetKey]]; + [globalHotkeyMenuItem setKeyEquivalentModifierMask:cocoaModifiers]; + + /* CARBON from http://github.com/Xjs/drama-button/blob/carbon/Drama_ButtonAppDelegate.m */ + + EventTypeSpec eventType; + eventType.eventClass = kEventClassKeyboard; + eventType.eventKind = kEventHotKeyPressed; + + InstallApplicationEventHandler(&handler, 1, &eventType, NULL, NULL); + + EventHotKeyID g_HotKeyID; + g_HotKeyID.id = 1; + + EventHotKeyRef g_HotKeyRef; + + RegisterEventHotKey(newTweetKey, newTweetModifierKey, g_HotKeyID, GetApplicationEventTarget(), 0, &g_HotKeyRef); + + /* end CARBON */ +} + +- (void)authentificationSucceded:(id)sender { + [loginActivityIndicator stopAnimation:self]; + [self initWebViews]; + [loginViewWindow performClose:self]; +} + +- (void)initWebViews { + + NSString *path = [[NSBundle mainBundle] resourcePath]; + NSURL *url = [NSURL fileURLWithPath:path]; + NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index.html", path] encoding:NSUTF8StringEncoding error:nil]; + + viewDelegate.timelineView = timelineView; + [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; + [timelineView setFrameLoadDelegate:viewDelegate]; + [timelineView setPolicyDelegate:viewDelegate]; + [timelineView setUIDelegate:viewDelegate]; + [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; + + viewDelegate.mentionsView = mentionsView; + [[mentionsView mainFrame] loadHTMLString:index_string baseURL:url]; + [mentionsView setFrameLoadDelegate:viewDelegate]; + [mentionsView setPolicyDelegate:viewDelegate]; + [mentionsView setUIDelegate:viewDelegate]; + [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; + + // FIXME: show timelineView after authentification +} + ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { + return NO; +} + ++ (BOOL)isKeyExcludedFromWebScript:(const char *)name { + return NO; +} + +- (void)setString:(NSString *)string forKey:(NSString *)aKey +{ + [self.accessToken setString:string forKey:aKey]; +} + +- (NSString *)stringForKey:(NSString *)aKey +{ + return [self.accessToken stringForKey:aKey]; +} + + +#pragma mark Notifications + +- (IBAction)openNewMessageWindow:(id)sender { + [NSApp activateIgnoringOtherApps:YES]; + [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; +} + +- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string { + [NSApp activateIgnoringOtherApps:YES]; + NewMessageWindow *newTweet = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; + [newTweet inReplyTo:userName statusId:statusId withString:string]; +} + +- (void)openNewMessageWindowWithString:(NSString *)aString { + [NSApp activateIgnoringOtherApps:YES]; + + NSRange range = [aString rangeOfString:@"oauthtoken"]; + + if (range.length > 0) { + [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"tentia_oauth.requestAccessToken('%@')", aString]]; + } else { + NewMessageWindow *newTweet = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; + [newTweet withString:aString]; + } + +} + +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent { + NSString *text = [[[event paramDescriptorForKeyword:keyDirectObject] stringValue] substringFromIndex:8]; + [self openNewMessageWindowWithString:[text stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; +} + +- (IBAction)sendTweet:(id)sender { + TweetModel *tweet = (TweetModel *)[sender object]; + NSString *text = [[tweet.text stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"] stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; + NSString *func = [NSString stringWithFormat:@"tentia_instance.sendNewMessage(\"%@\", \"%@\", \"%@\")", + text, + tweet.inReplyTostatusId, + tweet.inReplyToEntity]; + [timelineView stringByEvaluatingJavaScriptFromString:func]; +} + +- (NSString *)pluginURL { + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSString *pathToPlugin = [@"~/Library/Application Support/Tentia/Plugin.js" stringByExpandingTildeInPath]; + if([fileManager fileExistsAtPath:pathToPlugin]) { + return [NSString stringWithFormat:@"%@", [NSURL fileURLWithPath:pathToPlugin]]; + } + return nil; +} + +- (void)unreadMentions:(NSInteger)count { + if (![mentionsViewWindow isVisible] && count > 0) { + [timelineViewWindow setTitle:[NSString stringWithFormat:@"Tentia (^%i)", count]]; + [[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i", count]]; + } else { + [timelineViewWindow setTitle:[NSString stringWithFormat:@"Tentia"]]; + [[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil]; + [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.unread_mentions = 0;"]; + } +} + +- (void)openURL:(NSString *)url { + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; +} + +- (void)storeAccessToken:(NSString *)_accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName +{ + self.accessToken.accessToken = _accessToken; + self.accessToken.secret = secret; + self.accessToken.userId = userId; + self.accessToken.screenName = screenName; + + [timelineViewWindow makeKeyAndOrderFront:self]; + + [[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil]; +} + +- (void)loggedIn { + [timelineViewWindow makeKeyAndOrderFront:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil]; +} + +- (IBAction)login:(id)sender { + [loginActivityIndicator startAnimation:self]; + [self initOauth]; +} + +- (IBAction)logout:(id)sender { + [timelineViewWindow performClose:self]; + [mentionsViewWindow performClose:self]; + [self.loginViewWindow makeKeyAndOrderFront:self]; + + [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; + [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; + + [accessToken setString:nil forKey:@"app_mac_key"]; + [accessToken setString:nil forKey:@"app_mac_key_id"]; + [accessToken setString:nil forKey:@"app_id"]; + [accessToken setString:nil forKey:@"app_mac_algorithm"]; + [accessToken setString:nil forKey:@"user_access_token"]; + [accessToken setString:nil forKey:@"user_mac_key"]; + [accessToken setString:nil forKey:@"user_mac_algorithm"]; + [accessToken setString:nil forKey:@"user_token_type"]; + [accessToken setString:nil forKey:@"api_root"]; + [accessToken setString:nil forKey:@"entity"]; +} + +// Mentions window has been visible +- (void)windowDidBecomeKey:(NSNotification *)notification { + if ([notification object] == mentionsViewWindow) { + [self unreadMentions:0]; + } +} + +- (void)getTweetUpdates:(id)sender { + [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData(true)"]; + [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData(true)"]; +} + + +/* CARBON */ + +OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData) +{ + [[NSNotificationCenter defaultCenter] postNotificationName:@"openNewMessageWindow" object:nil]; + return noErr; +} + +@end diff --git a/Mac/English.lproj/Credits.rtf b/Mac/English.lproj/Credits.rtf new file mode 100644 index 0000000..efb5826 --- /dev/null +++ b/Mac/English.lproj/Credits.rtf @@ -0,0 +1,25 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\viewkind0 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Jeena Paradies\ +\ + +\b Testing: +\b0 \ + All the early adopters on Tent\ +\ + +\b Documentation: +\b0 \ + http://github.com/jeena/Tentia/wiki\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} \ No newline at end of file diff --git a/Mac/English.lproj/InfoPlist.strings b/Mac/English.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Mac/English.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib new file mode 100644 index 0000000..930c402 --- /dev/null +++ b/Mac/English.lproj/MainMenu.xib @@ -0,0 +1,2806 @@ + + + + 1080 + 12C60 + 2843 + 1187.34 + 625.00 + + YES + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + + YES + 2843 + 1810 + + + + YES + NSButton + NSButtonCell + NSCustomObject + NSImageCell + NSImageView + NSMenu + NSMenuItem + NSProgressIndicator + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + WebView + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + Tentia + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Tentia + + YES + + + About Tentia + + 2147483647 + + + + + + Check for Updates... + + 2147483647 + + + + + + Preferences... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Tentia + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Tentia + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New Post + n + 1048576 + 2147483647 + + + + + + New global + t + 1835008 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Timeline + 1 + 1048576 + 2147483647 + + + + + + Mentions + 2 + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Logout + + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + YES + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + YES + + + Tentia Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + NSFontManager + + + Controller + + + 15 + 2 + {{712, 280}, {397, 581}} + 1685586944 + Tentia + NSWindow + + + + + 256 + + YES + + + 274 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + + {397, 581} + + + + + + + 13 + + YES + + YES + + + + + NO + YES + + + {397, 581} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + tentia + YES + + + SUUpdater + + + 15 + 2 + {{1077, 328}, {376, 581}} + 1685586944 + Mentions + NSWindow + + + + + 256 + + YES + + + 274 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + + {376, 581} + + + + + + + 12 + + YES + + + + + NO + YES + + + {376, 581} + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + mentions + YES + + + 7 + 2 + {{641, 502}, {480, 186}} + 1685586944 + Preferences + NSWindow + + + + + 256 + + YES + + + 268 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{20, 20}, {146, 146}} + + + + YES + + 0 + 33554432 + + NSImage + Icon + + 0 + 0 + 0 + YES + + NO + YES + + + + 268 + {{194, 82}, {266, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + LucidaGrande + 13 + 1044 + + https://example.tent.is + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + + + + 268 + {{191, 112}, {163, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Add your entity to log in: + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + NO + + + + 268 + {{391, 46}, {75, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Login + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{373, 55}, {16, 16}} + + + + _NS:945 + 28938 + 100 + + + {480, 186} + + + + _NS:20 + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + preferences + YES + + + YES + + + + + YES + + + terminate: + + + + 448 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 564 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 371 + + + + capitalizeWord: + + + + 454 + + + + lowercaseWord: + + + + 455 + + + + uppercaseWord: + + + + 456 + + + + toggleAutomaticDashSubstitution: + + + + 460 + + + + orderFrontSubstitutionsPanel: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + toggleAutomaticSpellingCorrection: + + + + 466 + + + + performFindPanelAction: + + + + 467 + + + + performFindPanelAction: + + + + 468 + + + + performFindPanelAction: + + + + 469 + + + + pasteAsPlainText: + + + + 471 + + + + showHelp: + + + + 494 + + + + newDocument: + + + + 540 + + + + timelineView + + + + 553 + + + + mentionsView + + + + 562 + + + + timelineViewWindow + + + + 565 + + + + mentionsViewWindow + + + + 566 + + + + globalHotkeyMenuItem + + + + 570 + + + + loginEntityTextField + + + + 605 + + + + login: + + + + 606 + + + + login: + + + + 609 + + + + logout: + + + + 612 + + + + loginViewWindow + + + + 616 + + + + loginActivityIndicator + + + + 622 + + + + makeKeyAndOrderFront: + + + + 547 + + + + checkForUpdates: + + + + 543 + + + + makeKeyAndOrderFront: + + + + 563 + + + + delegate + + + + 569 + + + + makeKeyAndOrderFront: + + + + 611 + + + + value: values.entity + + + + + + value: values.entity + value + values.entity + 2 + + + 619 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + 72 + + + + + 82 + + + + + 79 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 419 + + + + + 449 + + + YES + + + + + + 450 + + + YES + + + + + + + + 451 + + + + + 452 + + + + + 453 + + + + + 457 + + + + + 458 + + + + + 459 + + + + + 462 + + + + + 464 + + + + + 465 + + + + + 470 + + + + + 491 + + + YES + + + + + + 492 + + + YES + + + + + + 493 + + + + + 533 + + + + + 535 + + + YES + + + + Timeline + + + 536 + + + YES + + + + + + 537 + + + timeline + + + 541 + + + + + 542 + + + + + 559 + + + YES + + + + Mentions + + + 560 + + + YES + + + + + + 561 + + + + + 592 + + + YES + + + + + + 593 + + + YES + + + + + + + + + + 594 + + + YES + + + + + + 595 + + + + + 596 + + + YES + + + + + + 597 + + + + + 598 + + + YES + + + + + + 599 + + + + + 600 + + + YES + + + + + + 601 + + + + + 602 + + + + + 603 + + + + + 610 + + + + + 613 + + + + + 620 + + + + + 73 + + + + + 551 + + + + + 544 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 130.IBPluginDependency + 131.IBPluginDependency + 134.IBPluginDependency + 136.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 19.IBPluginDependency + 195.IBPluginDependency + 196.IBPluginDependency + 197.IBPluginDependency + 198.IBPluginDependency + 199.IBPluginDependency + 200.IBPluginDependency + 201.IBPluginDependency + 202.IBPluginDependency + 203.IBPluginDependency + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 207.IBPluginDependency + 208.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 215.IBPluginDependency + 216.IBPluginDependency + 217.IBPluginDependency + 218.IBPluginDependency + 219.IBPluginDependency + 220.IBPluginDependency + 221.IBPluginDependency + 23.IBPluginDependency + 236.IBPluginDependency + 239.IBPluginDependency + 24.IBPluginDependency + 29.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 354.IBPluginDependency + 419.IBPluginDependency + 449.IBPluginDependency + 450.IBPluginDependency + 451.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 457.IBPluginDependency + 458.IBPluginDependency + 459.IBPluginDependency + 462.IBPluginDependency + 464.IBPluginDependency + 465.IBPluginDependency + 470.IBPluginDependency + 491.IBPluginDependency + 492.IBPluginDependency + 493.IBPluginDependency + 5.IBPluginDependency + 533.IBPluginDependency + 535.IBPluginDependency + 535.IBWindowTemplateEditedContentRect + 535.NSWindowTemplate.visibleAtLaunch + 536.IBPluginDependency + 537.IBPluginDependency + 541.IBPluginDependency + 542.IBPluginDependency + 544.IBPluginDependency + 551.IBPluginDependency + 559.IBPluginDependency + 559.IBWindowTemplateEditedContentRect + 559.NSWindowTemplate.visibleAtLaunch + 56.IBPluginDependency + 560.IBPluginDependency + 561.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 592.IBPluginDependency + 592.NSWindowTemplate.visibleAtLaunch + 593.IBPluginDependency + 594.IBPluginDependency + 595.IBPluginDependency + 596.IBPluginDependency + 597.IBPluginDependency + 598.IBPluginDependency + 599.IBPluginDependency + 600.IBPluginDependency + 601.IBPluginDependency + 602.IBPluginDependency + 603.IBPluginDependency + 610.IBPluginDependency + 613.IBPluginDependency + 620.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 79.IBPluginDependency + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + 92.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{202, 175}, {397, 581}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{344, 175}, {376, 581}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 627 + + + + YES + + Controller + NSObject + + YES + + YES + login: + logout: + + + YES + id + id + + + + YES + + YES + login: + logout: + + + YES + + login: + id + + + logout: + id + + + + + YES + + YES + globalHotkeyMenuItem + loginActivityIndicator + loginViewWindow + logoLayer + mentionsView + mentionsViewWindow + timelineView + timelineViewWindow + viewDelegate + + + YES + NSMenuItem + NSProgressIndicator + NSWindow + NSImageView + WebView + NSWindow + WebView + NSWindow + ViewDelegate + + + + YES + + YES + globalHotkeyMenuItem + loginActivityIndicator + loginViewWindow + logoLayer + mentionsView + mentionsViewWindow + timelineView + timelineViewWindow + viewDelegate + + + YES + + globalHotkeyMenuItem + NSMenuItem + + + loginActivityIndicator + NSProgressIndicator + + + loginViewWindow + NSWindow + + + logoLayer + NSImageView + + + mentionsView + WebView + + + mentionsViewWindow + NSWindow + + + timelineView + WebView + + + timelineViewWindow + NSWindow + + + viewDelegate + ViewDelegate + + + + + IBProjectSource + ./Classes/Controller.h + + + + SUUpdater + NSObject + + checkForUpdates: + id + + + checkForUpdates: + + checkForUpdates: + id + + + + delegate + id + + + delegate + + delegate + id + + + + IBProjectSource + ./Classes/SUUpdater.h + + + + ViewDelegate + NSObject + + IBProjectSource + ./Classes/ViewDelegate.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + Icon + NSMenuCheckmark + NSMenuMixedState + + + YES + {512, 512} + {11, 11} + {10, 3} + + + + diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib new file mode 100644 index 0000000..273c84f --- /dev/null +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -0,0 +1,372 @@ + + + + 1080 + 12C60 + 2843 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2843 + + + YES + NSCustomObject + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NewMessageWindow + + + FirstResponder + + + 7 + 2 + {{133, 535}, {299, 113}} + 1886913536 + New Post + NSWindow + View + + {94, 86} + + + 256 + + YES + + + 274 + {{0, 22}, {299, 91}} + + + + YES + + -1809842175 + 272629760 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + NO + + + + 268 + {{257, 2}, {38, 17}} + + + YES + + 68157504 + 71304192 + 256 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + NO + + + {299, 113} + + + + + {{0, 0}, {2560, 1418}} + {94, 108} + {10000000000000, 10000000000000} + newPost + NO + 22 + YES + + + NSApplication + + + + + YES + + + window + + + + 18 + + + + sendTweet: + + + + 100031 + + + + textField + + + + 100034 + + + + counter + + + + 100038 + + + + delegate + + + + 100035 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + + -3 + + + Application + + + 100028 + + + YES + + + + + + 100029 + + + + + 100036 + + + YES + + + + + + 100037 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 100028.IBPluginDependency + 100029.IBPluginDependency + 100036.IBPluginDependency + 100037.IBPluginDependency + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 6.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{127, 736}, {299, 113}} + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 100038 + + + + YES + + NewMessageWindow + NSDocument + + sendTweet: + NSControl + + + sendTweet: + + sendTweet: + NSControl + + + + YES + + YES + counter + textField + + + YES + NSTextField + NSTextField + + + + YES + + YES + counter + textField + + + YES + + counter + NSTextField + + + textField + NSTextField + + + + + IBProjectSource + ./Classes/NewMessageWindow.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + diff --git a/Mac/Icon.icns b/Mac/Icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..4359f248765037abdd0e762e248e8db9ddcf59c1 GIT binary patch literal 121861 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 z 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 R^acShO?4f$Dpjk9{{u?JWhMXs literal 0 HcmV?d00001 diff --git a/Mac/NewMessageWindow.h b/Mac/NewMessageWindow.h new file mode 100644 index 0000000..7d993e6 --- /dev/null +++ b/Mac/NewMessageWindow.h @@ -0,0 +1,28 @@ +// +// NewTweetWindow.h +// Tentia +// +// Created by Jeena on 16.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + + +#import + + +@interface NewMessageWindow : NSDocument +{ + IBOutlet NSTextField *textField; + IBOutlet NSTextField *counter; + NSString *inReplyTostatusId; + NSString *inReplyToEntity; +} + +@property (nonatomic, retain) IBOutlet NSTextField *textField; +@property (nonatomic, retain) IBOutlet NSTextField *counter; + +- (IBAction)sendTweet:(NSControl *)control; +- (void)inReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; +- (void)withString:(NSString *)aString; + +@end diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m new file mode 100644 index 0000000..98d56c1 --- /dev/null +++ b/Mac/NewMessageWindow.m @@ -0,0 +1,158 @@ +// +// NewTweetWindow.m +// Tentia +// +// Created by Jeena on 16.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import "NewMessageWindow.h" +#import "Constants.h" +#import "TweetModel.h" + +@interface NewMessageWindow (private) +- (BOOL)isCommandEnterEvent:(NSEvent *)e; +@end + +@implementation NewMessageWindow + +@synthesize textField, counter; + + +- (id)init +{ + self = [super init]; + if (self) { + + // Add your subclass-specific initialization here. + // If an error occurs here, send a [self release] message and return nil. + inReplyTostatusId = @""; + inReplyToEntity = @""; + } + return self; +} + +- (NSString *)windowNibName +{ + // Override returning the nib file name of the document + // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. + return @"NewMessageWindow"; +} + +- (NSString *)displayName { + return @"New Post"; +} + +- (void)windowControllerDidLoadNib:(NSWindowController *) aController +{ + [super windowControllerDidLoadNib:aController]; + // Add any code here that needs to be executed once the windowController has loaded the document's window. + +} + +- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError +{ + // Insert code here to write your document to data of the specified type. If the given outError != NULL, ensure that you set *outError when returning nil. + + // You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. + + // For applications targeted for Panther or earlier systems, you should use the deprecated API -dataRepresentationOfType:. In this case you can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. + + if ( outError != NULL ) { + *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; + } + return nil; +} + +- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError +{ + // Insert code here to read your document from the given data of the specified type. If the given outError != NULL, ensure that you set *outError when returning NO. + + // You can also choose to override -readFromFileWrapper:ofType:error: or -readFromURL:ofType:error: instead. + + // For applications targeted for Panther or earlier systems, you should use the deprecated API -loadDataRepresentation:ofType. In this case you can also choose to override -readFromFile:ofType: or -loadFileWrapperRepresentation:ofType: instead. + + if ( outError != NULL ) { + *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; + } + return YES; +} + +- (void)inReplyTo:(NSString *)entity statusId:(NSString *)statusId withString:(NSString *)string { + [textField setStringValue:string]; + NSRange range = {[[textField stringValue] length] , 0}; + [[textField currentEditor] setSelectedRange:range]; + + [inReplyTostatusId release]; + inReplyTostatusId = statusId; + [inReplyTostatusId retain]; + + [inReplyToEntity release]; + inReplyToEntity = entity; + [inReplyToEntity retain]; + + [self controlTextDidChange:nil]; +} + +- (void)withString:(NSString *)aString { + [textField setStringValue:aString]; + NSRange range = {[[textField stringValue] length] , 0}; + [[textField currentEditor] setSelectedRange:range]; + + [self controlTextDidChange:nil]; +} + +-(void)controlTextDidChange:(NSNotification *)aNotification { + NSInteger c = MESSAGE_MAX_LENGTH - [[textField stringValue] length]; + [counter setIntValue:c]; + if(c < 0) { + [counter setTextColor:[NSColor redColor]]; + } else { + [counter setTextColor:[NSColor controlTextColor]]; + } +} + + +#pragma mark Keyboard delegate methods + +- (IBAction)sendTweet:(NSControl *)control { + if ([[control stringValue] length] <= MESSAGE_MAX_LENGTH) { + TweetModel *tweet = [[[TweetModel alloc] init] autorelease]; + tweet.text = [control stringValue]; + tweet.inReplyTostatusId = inReplyTostatusId; + tweet.inReplyToEntity = inReplyToEntity; + [[NSNotificationCenter defaultCenter] postNotificationName:@"sendTweet" object:tweet]; + [self close]; + } else { + NSBeep(); + } + +} + +- (BOOL)isCommandEnterEvent:(NSEvent *)e { + NSUInteger flags = (e.modifierFlags & NSDeviceIndependentModifierFlagsMask); + BOOL isCommand = (flags & NSCommandKeyMask) == NSCommandKeyMask; + BOOL isEnter = (e.keyCode == 0x24); // VK_RETURN + return (isCommand && isEnter); +} + +- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector +{ + BOOL retval = NO; + + if (commandSelector == @selector(insertNewline:)) { + retval = YES; // causes Apple to NOT fire the default enter action + textField.stringValue = [NSString stringWithFormat:@"%@\n", textField.stringValue]; + + [[[textField window] fieldEditor:YES forObject:nil] scrollRangeToVisible:NSMakeRange([[textField stringValue] length], 0)]; + [[[textField window] fieldEditor:YES forObject:nil] setSelectedRange:NSMakeRange([[textField stringValue] length], 0)]; + } + + if (commandSelector == @selector(noop:)) { + retval = YES; + [self sendTweet:control]; + } + + return retval; +} +@end diff --git a/Mac/Sparkle.framework/Headers b/Mac/Sparkle.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/Mac/Sparkle.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/Mac/Sparkle.framework/Resources b/Mac/Sparkle.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/Mac/Sparkle.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Mac/Sparkle.framework/Sparkle b/Mac/Sparkle.framework/Sparkle new file mode 120000 index 0000000..b2c5273 --- /dev/null +++ b/Mac/Sparkle.framework/Sparkle @@ -0,0 +1 @@ +Versions/Current/Sparkle \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h new file mode 100644 index 0000000..171148a --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcast.h @@ -0,0 +1,33 @@ +// +// SUAppcast.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCAST_H +#define SUAPPCAST_H + +@class SUAppcastItem; +@interface SUAppcast : NSObject { + NSArray *items; + NSString *userAgentString; + id delegate; + NSMutableData *incrementalData; +} + +- (void)fetchAppcastFromURL:(NSURL *)url; +- (void)setDelegate:delegate; +- (void)setUserAgentString:(NSString *)userAgentString; + +- (NSArray *)items; + +@end + +@interface NSObject (SUAppcastDelegate) +- (void)appcastDidFinishLoading:(SUAppcast *)appcast; +- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; +@end + +#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h new file mode 100644 index 0000000..7f1ca65 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h @@ -0,0 +1,47 @@ +// +// SUAppcastItem.h +// Sparkle +// +// Created by Andy Matuschak on 3/12/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUAPPCASTITEM_H +#define SUAPPCASTITEM_H + +@interface SUAppcastItem : NSObject { + NSString *title; + NSDate *date; + NSString *itemDescription; + + NSURL *releaseNotesURL; + + NSString *DSASignature; + NSString *minimumSystemVersion; + + NSURL *fileURL; + NSString *versionString; + NSString *displayVersionString; + + NSDictionary *propertiesDictionary; +} + +// Initializes with data from a dictionary provided by the RSS class. +- initWithDictionary:(NSDictionary *)dict; + +- (NSString *)title; +- (NSString *)versionString; +- (NSString *)displayVersionString; +- (NSDate *)date; +- (NSString *)itemDescription; +- (NSURL *)releaseNotesURL; +- (NSURL *)fileURL; +- (NSString *)DSASignature; +- (NSString *)minimumSystemVersion; + +// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. +- (NSDictionary *)propertiesDictionary; + +@end + +#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h new file mode 100644 index 0000000..e78c4d3 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Headers/SUUpdater.h @@ -0,0 +1,118 @@ +// +// SUUpdater.h +// Sparkle +// +// Created by Andy Matuschak on 1/4/06. +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SUUPDATER_H +#define SUUPDATER_H + +#import + +@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; +@interface SUUpdater : NSObject { + NSTimer *checkTimer; + SUUpdateDriver *driver; + + SUHost *host; + IBOutlet id delegate; +} + ++ (SUUpdater *)sharedUpdater; ++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; +- (NSBundle *)hostBundle; + +- (void)setDelegate:(id)delegate; +- delegate; + +- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; +- (BOOL)automaticallyChecksForUpdates; + +- (void)setUpdateCheckInterval:(NSTimeInterval)interval; +- (NSTimeInterval)updateCheckInterval; + +- (void)setFeedURL:(NSURL *)feedURL; +- (NSURL *)feedURL; + +- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; +- (BOOL)sendsSystemProfile; + +- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; +- (BOOL)automaticallyDownloadsUpdates; + +// This IBAction is meant for a main menu item. Hook up any menu item to this action, +// and Sparkle will check for updates and report back its findings verbosely. +- (IBAction)checkForUpdates:sender; + +// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, +// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an +// update is found, it will be downloaded and prepped for installation. +- (void)checkForUpdatesInBackground; + +// Date of last update check. Returns null if no check has been performed. +- (NSDate*)lastUpdateCheckDate; + +// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, +// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. +- (void)checkForUpdateInformation; + +// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. +- (void)resetUpdateCycle; + +- (BOOL)updateInProgress; +@end + +@interface NSObject (SUUpdaterDelegateInformalProtocol) +// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. +- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; + +// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. +- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; + +// Implement this if you want to do some special handling with the appcast once it finishes loading. +- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; + +// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding +// a valid update, if any, in the given appcast. +- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; + +// Sent when a valid update is found by the update driver. +- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; + +// Sent when a valid update is not found. +- (void)updaterDidNotFindUpdate:(SUUpdater *)update; + +// Sent immediately before installing the specified update. +- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; + +// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. +- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; + +// Called immediately before relaunching. +- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; + +// This method allows you to provide a custom version comparator. +// If you don't implement this method or return nil, the standard version comparator will be used. +- (id )versionComparatorForUpdater:(SUUpdater *)updater; + +// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. +- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; + +@end + +// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. +#ifdef DEBUG +#define SU_MIN_CHECK_INTERVAL 60 +#else +#define SU_MIN_CHECK_INTERVAL 60*60 +#endif + +#ifdef DEBUG +#define SU_DEFAULT_CHECK_INTERVAL 60 +#else +#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 +#endif + +#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h new file mode 100644 index 0000000..3d11ae8 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h @@ -0,0 +1,27 @@ +// +// SUVersionComparisonProtocol.h +// Sparkle +// +// Created by Andy Matuschak on 12/21/07. +// Copyright 2007 Andy Matuschak. All rights reserved. +// + +#ifndef SUVERSIONCOMPARISONPROTOCOL_H +#define SUVERSIONCOMPARISONPROTOCOL_H + +/*! + @protocol + @abstract Implement this protocol to provide version comparison facilities for Sparkle. +*/ +@protocol SUVersionComparison + +/*! + @method + @abstract An abstract method to compare two version strings. + @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. +*/ +- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; + +@end + +#endif diff --git a/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h b/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h new file mode 100644 index 0000000..08dd577 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Headers/Sparkle.h @@ -0,0 +1,21 @@ +// +// Sparkle.h +// Sparkle +// +// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) +// Copyright 2006 Andy Matuschak. All rights reserved. +// + +#ifndef SPARKLE_H +#define SPARKLE_H + +// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless +// there are name-space collisions) so we can list all of them to start with: + +#import + +#import +#import +#import + +#endif diff --git a/Mac/Sparkle.framework/Versions/A/Resources/Info.plist b/Mac/Sparkle.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..c7f277d --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + Sparkle + CFBundleIdentifier + org.andymatuschak.Sparkle + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Sparkle + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.5 Beta 6 + CFBundleSignature + ???? + CFBundleVersion + 313 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/License.txt b/Mac/Sparkle.framework/Versions/A/Resources/License.txt new file mode 100644 index 0000000..20466c4 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/License.txt @@ -0,0 +1,7 @@ +Copyright (c) 2006 Andy Matuschak + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist new file mode 100644 index 0000000..92ef947 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist @@ -0,0 +1,174 @@ + + + + + ADP2,1 + Developer Transition Kit + MacBook1,1 + MacBook (Core Duo) + MacBook2,1 + MacBook (Core 2 Duo) + MacBook4,1 + MacBook (Core 2 Duo Feb 2008) + MacBookAir1,1 + MacBook Air (January 2008) + MacBookPro1,1 + MacBook Pro Core Duo (15-inch) + MacBookPro1,2 + MacBook Pro Core Duo (17-inch) + MacBookPro2,1 + MacBook Pro Core 2 Duo (17-inch) + MacBookPro2,2 + MacBook Pro Core 2 Duo (15-inch) + MacBookPro3,1 + MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) + MacBookPro3,2 + MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) + MacBookPro4,1 + MacBook Pro (Core 2 Duo Feb 2008) + MacPro1,1 + Mac Pro (four-core) + MacPro2,1 + Mac Pro (eight-core) + MacPro3,1 + Mac Pro (January 2008 4- or 8- core "Harpertown") + Macmini1,1 + Mac Mini (Core Solo/Duo) + PowerBook1,1 + PowerBook G3 + PowerBook2,1 + iBook G3 + PowerBook2,2 + iBook G3 (FireWire) + PowerBook2,3 + iBook G3 + PowerBook2,4 + iBook G3 + PowerBook3,1 + PowerBook G3 (FireWire) + PowerBook3,2 + PowerBook G4 + PowerBook3,3 + PowerBook G4 (Gigabit Ethernet) + PowerBook3,4 + PowerBook G4 (DVI) + PowerBook3,5 + PowerBook G4 (1GHz / 867MHz) + PowerBook4,1 + iBook G3 (Dual USB, Late 2001) + PowerBook4,2 + iBook G3 (16MB VRAM) + PowerBook4,3 + iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) + PowerBook5,1 + PowerBook G4 (17 inch) + PowerBook5,2 + PowerBook G4 (15 inch FW 800) + PowerBook5,3 + PowerBook G4 (17-inch 1.33GHz) + PowerBook5,4 + PowerBook G4 (15 inch 1.5/1.33GHz) + PowerBook5,5 + PowerBook G4 (17-inch 1.5GHz) + PowerBook5,6 + PowerBook G4 (15 inch 1.67GHz/1.5GHz) + PowerBook5,7 + PowerBook G4 (17-inch 1.67GHz) + PowerBook5,8 + PowerBook G4 (Double layer SD, 15 inch) + PowerBook5,9 + PowerBook G4 (Double layer SD, 17 inch) + PowerBook6,1 + PowerBook G4 (12 inch) + PowerBook6,2 + PowerBook G4 (12 inch, DVI) + PowerBook6,3 + iBook G4 + PowerBook6,4 + PowerBook G4 (12 inch 1.33GHz) + PowerBook6,5 + iBook G4 (Early-Late 2004) + PowerBook6,7 + iBook G4 (Mid 2005) + PowerBook6,8 + PowerBook G4 (12 inch 1.5GHz) + PowerMac1,1 + Power Macintosh G3 (Blue & White) + PowerMac1,2 + Power Macintosh G4 (PCI Graphics) + PowerMac10,1 + Mac Mini G4 + PowerMac10,2 + Mac Mini (Late 2005) + PowerMac11,2 + Power Macintosh G5 (Late 2005) + PowerMac12,1 + iMac G5 (iSight) + PowerMac2,1 + iMac G3 (Slot-loading CD-ROM) + PowerMac2,2 + iMac G3 (Summer 2000) + PowerMac3,1 + Power Macintosh G4 (AGP Graphics) + PowerMac3,2 + Power Macintosh G4 (AGP Graphics) + PowerMac3,3 + Power Macintosh G4 (Gigabit Ethernet) + PowerMac3,4 + Power Macintosh G4 (Digital Audio) + PowerMac3,5 + Power Macintosh G4 (Quick Silver) + PowerMac3,6 + Power Macintosh G4 (Mirrored Drive Door) + PowerMac4,1 + iMac G3 (Early/Summer 2001) + PowerMac4,2 + iMac G4 (Flat Panel) + PowerMac4,4 + eMac + PowerMac4,5 + iMac G4 (17-inch Flat Panel) + PowerMac5,1 + Power Macintosh G4 Cube + PowerMac6,1 + iMac G4 (USB 2.0) + PowerMac6,3 + iMac G4 (20-inch Flat Panel) + PowerMac6,4 + eMac (USB 2.0, 2005) + PowerMac7,2 + Power Macintosh G5 + PowerMac7,3 + Power Macintosh G5 + PowerMac8,1 + iMac G5 + PowerMac8,2 + iMac G5 (Ambient Light Sensor) + PowerMac9,1 + Power Macintosh G5 (Late 2005) + RackMac1,1 + Xserve G4 + RackMac1,2 + Xserve G4 (slot-loading, cluster node) + RackMac3,1 + Xserve G5 + Xserve1,1 + Xserve (Intel Xeon) + Xserve2,1 + Xserve (January 2008 quad-core) + iMac1,1 + iMac G3 (Rev A-D) + iMac4,1 + iMac (Core Duo) + iMac4,2 + iMac for Education (17-inch, Core Duo) + iMac5,1 + iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) + iMac5,2 + iMac (Core 2 Duo, 17 inch, Combo Drive) + iMac6,1 + iMac (Core 2 Duo, 24 inch, SuperDrive) + iMac8,1 + iMac (April 2008) + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib new file mode 100644 index 0000000..22f13f8 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib @@ -0,0 +1,56 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + CLASS + SUStatusController + LANGUAGE + ObjC + OUTLETS + + actionButton + NSButton + progressBar + NSProgressIndicator + + SUPERCLASS + SUWindowController + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib new file mode 100644 index 0000000..a9ac867 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..4f1d598179ccecb32c7a12eead96bb5fe3663eb0 GIT binary patch literal 7344 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 I{hK-Azn((800000 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..4b1ab30 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..6b926302ea4751c08c4de4d180bdee22f01709ff GIT binary patch literal 7278 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 f{!{!>{8{{^8|{{$9#l~I + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..b4353d2f7c1f412919b46c5526549892ff7ab525 GIT binary patch literal 10493 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 + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..b403a3e45f6ac2ba253f8f9747b79ecd2acb28e1 GIT binary patch literal 13189 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings new file mode 100644 index 0000000000000000000000000000000000000000..b31f928fd57dad14168601c6c9bc3bacb27c9cdc GIT binary patch literal 9806 zcmeI2TTdHD6vyW|pJG!rrHu-`y|t|yBYdH!b^ZMm&h>qu z?=yY6p&v$izX$`hT!vnp*-=Y7yw*4UM{4cssjD#?YJ03b9)u6VBdz&i*i_4-@a6RB zIJCkr&SrdHPaUm0(bK8^x2{%isfAs7ar8iA>0`%{#uZ_#_HKBnr(g6w)@(+aU)wiRKO>?SnmrCQV@tbVM7xBtkyb$7$n#K7STB(>h&><9W7p1G;vK68=3FX$z#R+kdVb^?6S)5x@^Vs0a?dAbTeA# zJXxcfnJiKu`FV1J%hT-bFuavtwnYcg;NvUHw_cC;G{?y-EC7y)aqO1i6-+*%n^rLUY?H+Gtz35@a*RCv*wVJa)osA_Kcw9^ID))+2#FLvz zXBLGb56eHq$lH>Yqr<(@ZV5$H5#lPW%+Le5ihNt>`#>MhUWViugA73`4`u_0wIixC^ae$Syy&SzHlT(h z?dQmm8SKk0j+ct?gVsNew81--#9@rpbr>ke9gcqte+-2X|J1rff7V_t8rc%(Mn$tu z!O&m~v{8-Wu3JN^W&FJyT|T|aQ1fZgqTIXmMqWX~e3Or%^?lM~H~bO#Z^?i0J@Zi4 zBKXBnJlSM9dfe3>BiTMXQnh1ucqKUg`mAqbw=$ZT?{J&+>TPG@G++ zg~j~wexjJgCH=KzSgsQiDp|d}6LoieW_MGZL1qT!fy^uunVtLTCueAF^^)g3Yc*9s zlZak85wS;o%$Gl1<5BNzmr$vT8!9eHgc@uLn*qI(f(S6}mWN$Oc*VU6c%Pn^D=JktF zVl|)P>iKIv*Cg}&Jk+8g_Ylxe=J%V2?GpCC`$+P=w2O6Osi_K~_GnA0-6%UOVYQSM z;iXWQS2j7F&6N<<&3)hkTnJipbI6q3_B1sKu{G)x}Eq-L0)V7UvetRjP^`@YNh|xb5VIr7rIL zs7f(eo4wt2J}qNx{MGIoe~!^8<;_HAc?S7|7)4Yk+F~zx2CLrlm1EfQPKK*gS(abi z9`GN_N}SbYT+UcUv+jvE+*8--{z*yq_Ll3uc~vk)lSMr%t!i)is>_r2^YA3IU3|$Ho(pi=v zL)i^46;y7!L;a?p2*1X48I70XtEY<6Ev*2WdG{Jc+`F%p)6Ug<;)G5ajbD!|Ig$Hk zFmN+xc5@4=oI7WV1JAYn$g7`qp6J&L+&^1{Ih*R1`XAk*acWaeQ$fMBIbG}eB&+iM$C&&qD*JpI3a2NCvGx;4vxo)ke z$q;>B%Wx-lI}ybF2CFANcr;1(ydG_>@@u*!Pd8v?lxQ^+tDy-zlm8xx@XhLNYtt=x xSsu5iGn2?#q|qV`^(w!Va(tg#oBJYnftKO%CvGy`550a&72dwqGc0k%#lIFPR=NNH literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..4b1ab30 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..ab36d31 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 658 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9C7010 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..7630390c89e63ae4aa0af3491cb03518c1321d8a GIT binary patch literal 7148 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..994d4c3 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib @@ -0,0 +1,67 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2fb8a83 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 18 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..e7e7497db4bbc8e89d15986ad7531f1b0a07c217 GIT binary patch literal 10623 zcmb7K34Bw<)}JLwlcq^-_B2~>00oq#8!f9s3x(1Z(w4H8(57u5ZAy}|m1R@}eLfWt z_31+d3gU){i0rb7h=}as#v+P{3WDqNsgLj6d(%>u=l6Z#M{<{$GiT27KmVEOgoa=s z5=~A%hA<+CA{mk+1yZ5-@(xq{;Yc7N{2fih5E)DI0ngU|?6fu^H- z(L(e%T7;fJPok&LKhV?Y8T3!I7(I)Ypy!~M8ZAZ3&~o$wT8G|1>(QHN1KNl-p>1d< z+Kb*r@1w)$GjtApg|1?Rl~{!num&5j1zWKL^SC$egZtuscmN)RhvBif8rR@j9KaKC zBc6eq@Ju`h--qYnNAUvuPrMW_!!P4k@M`=zUXM59E%+_G8^41O;zRgj{0Tmdzs48v zFZfsdFMHenxt-iWx{*|pMtYD8l1c6&*<=XGCHbU?3@4+>7~&@rNrXhnJ>*_8 zkIW~3Lu&F6`8#=-JVG8L3&~UDALLoGgfx>CeAs5Iuk+|B$N`Q3cgf6Lr#dG@WMBp0qd3r{ib?olL_t zLZh^iPN7rjG&-HmpiOipokeHUIrLt7KV3!l(f8Z&*B&87xYVdj($Zi(C_H?r5)-UgTd3B0cnsH=@5tX z$bgKchQgDCR+2>F%_tZT1PGV#LhSJ028ziJ zg@u+mq55cnuijVV4_9zpp|>mm`UL$W0`*m)sgmBYd9;YL-a>C-*pV=-e_9l@7$fN- zbzp>DVQ;bn>@ribElkedXCJVw>=Hvv!8Wt+xmE1o5%54NN<--|KXFci{!GT`SZ`@* z10W%u0gZ_*FtyyQ>`-OM z*J?gt%)8Lts6SXPh6oWBw^SM<3uQN>Y%~z{fw>ekMtxusuRmH^=!I{oXAT<78rE<+ zGz8_Mp(qdKqXJZjicm2chK3_ADnX^FjHy@`)|)-T7O;hE5qpw7%a*cc_B?x)z0Te^ z20E0Zk!TbejmAKXjRS`a^hctBdY|BWP~RJB3|IO`6ngW06Z}DTCyNJr-fWNsJ_Y{2Cdol$@ZiCNgqxIMmo6_@{z1lt%nn zzRF2Cq3~2+xGEpO8QMvqGg6c+v;#5T#s+_QO29u=2u;uc!lexEn3{EFb`?uv33_Z` zZY6Ut7d&*Hh|O;X%&it?)r4lES!gzz19NEte|Z}x2+|^~j)mD|7Sdw`UF%w0I+w+* zM)#w6Xg+!XJ&68>9zuUd52HuWqi6wojA@vb=@`fK%)pGy#LUdXtjxv|M>RA~2nH&< zHHL#idiu*t_~9iv1NjDDBhF0Syg7KVLdL|K@j&5&jAAA~GTntt|;egZ@Zc(H^NMwBch_>ShVLYsz;O@}YvW zOTC7a6x?D!Gx$Cb^b0Mo8w#>JI}{9sZyq2ft~fWl-uE&KKpU zq}<97=BB2uDP8#FSzY+1^d1>q_>^9mvt|_+ABCW9Mk~-t2-sDla;yCH(Li;;A1;d_ zNhgR7UTE|pWbRAoWwZt&xZ5Pa9@eoLy@FPwSDA;kW9^&KYiKQcopoThvD?8AV7Rhc!au^ep&oPt5yWZDh4QrlhVofT*|dK>LQeMUfgA!DG% z2tSZg*OEB)3Lq}*5Bhx(e_<#JRR)?#a`vJ3n$de`zo4cG@-Hx=55DLMddI2%3 zST~l*y0c_G_NX91yGeO1Wc5k0eUHG)rS+h=}^AHYSqYLO8^ey@hT|}4A_vkXZf_^|hqMsm+egOvd zEBY7u4ZaVeKhU4(KQNG>rU+-E=LQ6${xCqUA8ZhXpo6jp8D8uU2SQbW%3OFBp5hCF znX($A(NMkEF;%RVtvz$=pn|q=$w8AF1JD5^0amrh1giiHHiW`a072nlI206|Bz9^U zYoI^q6XK>-zf@@4W>n)<_{_!sK`ev0xI~u9daxAu?#jJuP$GoH_w(-Ue|21LeI)7& z26?G`f=@BV1XC=-a;(5{;3~n+@FPGppmw!5E0*5A{~aI)J}gZyGmXh_tPE8728Vr6 zFT`-d@mReat5F~5DkRG=jr3THbt|wAb679dOi5>98ZesyVnzrzu?Ug67_n(3Hes_A z;-G`n2@Dl8&$xgz326?!rCv6i*o+ggT?l6YF)4BdV?rl^GKIqbHJ(SKB<#jXP(=yr z!yZ0~Jz$o0xIONGZ^O6aj<^%DB_#q7fcKOliG`@4s#n(B3iojxyW}~r3!+eQGsuo zgif$Hk-7_Y779)Ur*C=UjZP2x3w)7DLi<3y&>kXNP)igEx%YSWARuNxF(@ui1DD># z`m%>O!s*!G*xePJt*I$By=NCbJ)@_PRXutF6sKh-&zc1>=?zs!p{PT-68TqaU56Tr z@4|QE{xE8{h*$(!|B_a;!C5%F8E0c)PGVrUa3`@L2$9NWj6q>wP%q*kI2RAac{m^P zvk4dBVwS~<*f>_nY5{fX*i6Pgk&p)uM@K}y6GInlPbPA6p2EB1RBIjn0j*`sD!EMUHH^qDS`ts;4&k9)~t^N zRKt_dMI6L+=nAgKA>4o`<1qZ6jDgZY*%Q4FzXO7SntI{B5&#FLKLE-Yj4iBq0VN7J z#BvP;(pf3g%~U)EPsP*lbVv~>AR@OEf|TX6p)3!i#9$0!OfW*AQlz1|m7#hm_h#YQ z%kgZ%wXjl zMs!d)8^I}987nRGP6sktHwJtnfgW%*a4pDx6{Nq0*Mj5`wSlOgm2)&Nxm$+x=>?es zizmDezp)&@0fZtp)b+}30OdB~msmL)%|@|OaC2;!R=czvY8xxhN{-3hj(4oUJMd1t zE0*{|kDP!%SoPO6;BCBTCEn8}8e03^IvV!j_wfEU(NMw0w`BLVXh`iTQA;rzTJx!G zG#nP90UyK10eMc~XRdkM$0o3GF>j9>F7YW|BvifII{!0p{wcxvw+p2bLc^=qxNe~_ zI*!lcFYuSG8fUU9=5L`xBCSd7)vJ}(qzj?^*R%$IBhVUrQJ^*Wdwdzb^YD-OC;YQC zi56Z^!>WN7RNlx70F;OO>tJ!u7x?*n0E+N1$F24L9shyI8P1IvPmUlqMQj&#S zljvAFOyPggn@~Y-q7d{ZN}>Y2^GO2H5bgDP2iYXhyY^=5aG+D&AwPE zA_msK_!JsXOh`-2$VV&)7$&izT4E!KXdVl<>p@Iy92@crrSM1hSeH znkKB^g!C6yUP8b^buIzU6KQ}7SRaKX%?gEK!7Ma`4n@_~5x>9^p*o9Q0Ote3f*ra6 z3lS)!fM)<#O{|ecl&oG@-a1$mp1|5c*muYwomj&%6ufrdMYtcs;>A2A-AQsYNhT@c zmPV|I4hV;R(;;!iU*PiK1Mq;fh!Uu=u!xd+r=z!YRxHW@(rV+F}-n*nJYcO96JLHGrd zBZA3vHcbE%V-zsq2Fz`PCnOK>Bn4I$tzbq9S$RP+pWLlyviM1nz=jl)VJpZmX@amN z1OB^32;&DxDJdf(T0?j&o5g19ar}*?BUy~$^b82+)SkB}9b~LjI*1P!k;=AU;bL>x zOatnFLunv2V4J{ow$UdzZ=oVOPU=WK3AL)2$?jqI!m6ijmH{O6h{0JZxGv)_7d@m= z%(7`XgG>h}Hi6E?WHy;YSlcX{3+}uRbZ3xdu#t`oL;4Q8TEX=ccq@VqL)6%X8>k1=t+QDlP=xaXs_e!jXf+8Bm~ftK7y=92qcs<~LQ=CS()!Z$S#t*n*8 z@&WSTa`K>1AYi#Hk$sUPNSj=vt`SgR_DxcFii^FT5UH7&;G32vy;6aq+MCk4r6;HM zO!eQH1|+u4O)Lu@B@3351u?b~BjNtK27#KDR{^xwzy*YKYzGb&yEuoKiRdDTLLEPx?&5J*gZr;-Cf=yav zl!`AaIOktAlC;}N-fkwl$ZkP9X%%?myl+?q{fx#dkfyhGKHVlUvFB1Y{PGlQEeq zLFP=h;+o7h@gwL5GH-bD(RESvxe!+{-!I8Ih^zDDYcaBl8pLAS)mZ@Y)Oj{@-y1HT-bEG^;~{~xeO(LkUwKKdJSeUj; zVPV%YgGen*AV%&)ZU?merf01RQ$l5J75=Z|q9*bO)wCJ64#r(~O%6v5|2H{fK#rr0 zoOqD4{+b*&<=e^;2?cFWJFrb~9D(!D7_tU%B?wy`L-7!Fkaoklu!DXK=fl#vlEniK z%!Ez$K46wCSYU5};I0E=Qp=bi365cC29vRkz-8L30mZDNy-3P(fs?ch*;gD=piw9Z zzMI7FV{j$h9Ru)#Z-Mhb7IlL`gm2-W^xH?cZjn@Yo$>-~{)O@anBG$PyTA00 zC(ue-Mg6pz*3eoSpcCmN8l-i!o`%>q_7>aDcCejn7u(I=W_#E>Y%hD4?PKq;{S}<6 zxG_@8OBIUmbOT}TTn;;~yg=|ELM8CzTaa$ZO`)c!v1XM zF~atH#|U3EwO%-SbGGRz3@Ps9##SDkA^XHaDUQl_y3RAg>Kqz4uT%N@-M`MG+jw$p zn}NEf2;^x@jI+k(lyse>n^-rDH88u@Upa|~u6(Cf9Qc27hR!XXzlUvF+HyU&&Gmf2 zk5H1~U@TvV2RK(NgOj$FaL$9%wo)`477=UEP$AsW5HVs3;oQv&aW@PXqarcf7l_68 zS@s5;#I=O`BXAn`I-JARLNfFg(?KOh)FL>SdmiF)DWKkyEn2-OYC>P4FVk1(YWgaA zoxVob(%0!a`UYK3-=rJpM!Jb^rd#M%x{ba?x6>VTC*4JN)3@m!`VQSo-(`o`VRnQa zWyjd<>^S?7onRlakJ%^eQ}!7<$xgA;>FJFWEWv6+6$qW*68u>|6F7yU1BM z1Lxu7+)8d4SHR_qJ9@Aa{3jRBjpW*KgSZu34QJ)Xa;co3d!FMtJr~CXxFOuboQiAY z=8IE7IrMAR&}!^&+Zg+jcnuo_^fJA&oL&)^9l2T3De6Gjhd@e{2*=+Y;jbckqr2f? zbU4_#niLQ({2jnb@(M78_sQ4f7XV8woauL@J?Jo60Vnx$=@R+^SZM=TXbV_pJ6L8n zSY2PWMwj+tWs7btCK}# z_sHhU7RVOL*2&h(Hpn)~w#c^0w##B41IcC{_$tlqkv+<%&^?F^X}D@rp@` z`HIDgZHkW-zs5P@y2cHSn-DiM?&-L9;!ee#jyn@~G45Y+SCv>vm2#y)X;(Ux?UlDF zJ1RRXla;B;bY+IptDK~~PkFy`zVbokLgmxSHOj5ZJ<9i#A1l9BUQzyAMN}%4S>;kC zt9q&Wt464*RZ~^dRZXf{syV8qs#U7Bs&%UMstu}5s;#PRs_m+ss#B_ORNtvCsV=L2 zRQ;^_RrOoEA%1YYH$D(QJO1JLrSY%FZ;Rg>e?0zt{7-74R;x8?om#Ips?BPvI#KOV zyVUK}cdC1<^VGxDBh?esRq8r*NF7$sQ9q!5SiMO7r20Aa3+naiUFv=6BkGgtuhf^- zR}+*8x`d7i83}_Eauf0r3KEJE<|aIruq5G)gk1^mCw!7{KH-XnYOETMrmLpACPkB` z>7mKg^w(r*25NFNLo`D*`IGZlpok!P2m!eD4_0VPN`s(`WhU!M@M(f7vDs(lvCf!`!gSy4K zmAY4S8+F@t@9K`~PICx0(Pf;1Q*vrJ5!7-VcL$fpRdAEI1}@A+xhdQ*bPpD+tAZ6(lE|2 z-Y~&XWvDjP8tM!o!)(K&hQ|!g7#16zGwd+zGQ4eg$MCLUzu|qu2Zlq23r4rGz410< zM`LH>oyM-l?#2{jnz4tmw=vsTY8+vlW}IQ1X`F3j#`}zOjq{8T7?&A8G=6G4X*_NG z-1vp@obkNzg7I79MdJ^~-%UD`&15$@OeLmqrirF$ru$8gnwFW?nAV!snbw;&m^PX= zo3@#@n|7LZoA#JKFdZ@-H61sdGMzDfVLE5JWct}GGbfnao4c6P%mwBW^JMcB^EC4e z^Gx$>Gc!MCe%!p+yu`fJyxzRQyve-9yv=;ne8zm%e9ruX`6mmps4XUo-O|U>&vLhA zfF;|KV;OA8wd7g+mU)(kEDu{AwLE5d-13Cw8OvhJYRekSM$2Z)Hp?l?8OvGAmzJ+A z7cAdczO!7i###GX2UxSMgRFzCxz;>ufwjmw%<8q4TgO`eVO?fjZCztsYu#+!ZGG2z z%6h?uZ3(u{wp3fDZK%y_tFl$wYHbs3L0gmU@3u#53v3H*i)^cG8*Q6yTWxRIcG&jX zKC*pc`^<#w&zZ0~CCYcH`+wnyxZ_Nn&i_9pu*`vUtj_6_z;_AT~p_U-na_TBc+?3WyB zhsL3E=p9Cf*AImdaAbFOoqbCvT&=gZF3&Na@p&UMc9 z&Rx#8oqL`8obNk7aDMN+;{4J1v-4NyZ_eMHf4bsb2`-&W?=rb8t|XVomE{`f%5e>G z4Rz(a3SGsn;jR)_nXBA2$~DF{&Nbc@a7}X6xtd&aT@Shzx)!p>`A?n z1|@luMkG}w%}Y9v^kLFRNgpSjP5LtFT+*ea%X|u-#`oYe`Cfb|c zS3TH6J#tT+N98eiOdgBJ=COO69=C`0wDWZE-0tb*xx>@N)6J9YN%f?AGCVy!y*=5U oL7p5>k!P4^xM#FytY@63#uF4avJoP%AtZe057KYTx2NfU06T{mt^fc4 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib new file mode 100644 index 0000000..5220a22 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..b1cd28e --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,21 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + 41 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..e8dc5b88028a8bf491e46d29e25091c39735c921 GIT binary patch literal 13263 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 C5g()g literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings new file mode 100644 index 0000000000000000000000000000000000000000..16e0787b46dd69d9a9d59133dfdfc683787f5293 GIT binary patch literal 8216 zcmeHM+fEcg5UppP{eXdpBt$goqcMO=j3J=$6653S1(>kRlD)9<^XfTWTXfH5*;%s< z8)691)0dj+s#Dcxs(=5H=dvw{97`X6+xUBdpRVLG!tO?f$Ook=P~x0>^Fv^tPGL92)V>5cRhJ$y^%W)Coz zV|?QX^AZ`Ozbor#{lN1Wt2z7HwG%vLa*lDEP5p*gnPQ}e-puXE-a+X-jEym?EoT__ zn&*%>kzMR2kvI5#XuEn1Ppw7td>eMnWy{&SR5P9uy` zTjHaGu?#Z14$nszXFJ4&qEPWhIs1@siM1+&vZx!8eu5U!$>?~B=PKG1jed_KXA#ch zd_(C7E4fqZpF(~P-Re;J-{NsC9xGxrPx7zkyf)B0aA;u$R+K9;68OH0xaqo_M(h(? z!zt#7kSm7}=Cl@862)~$@mV>}8}G_enxpIXy(2p}X97O*G*22^66w}N3(N5 z?K)Gx3-rMweD+or%Q@7M zr+9|{WYT2LWU`(QF}viBF$^42F&@EO@Y!W@vS;PBWi~+8qpXT7+{fTPB(9=<_vZ~V z&dgb}nw!ikcG8C4iS32E)N3`Y-<4l3B2vT)v91wewoef&{2ud6JZ21p){m{%YFMB4 z_Fu(i>)#jh<7%}UmcK-%R>odLd}woiIkHC5SvZ@ANM8I+t6?FYm0?ZB&}o$!ei^rL zcCt2Q`C=B^nz(Gw?|Q93RJoQiHRd8pW0instW}c+cn{A|d-tNJYv_+v-&g2;vnzLR zH40@oto^Zm!}^9*``!kegY8h#F*wn3YKrd=IjqtV9iHP9d*i=3k?#R(tJkAECze*M zp0!c!v7V2<$V~ba=S@Ui@gAw@Bag!QGvjFZ72iAlKFb&f zB^-^WaU#1np~=jpxfq+`Dt=p|@zP z;gs(zJV)Ye-s+4Cr_RINT^uBY3?q>PoV8kC3TtGy&55m*Wx!&U)oWB7kE4xYnusJ9 rvDo&te#?Eg- + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..6b2f938f90ecd44f661ea8b2d6ec06e2fd5cc720 GIT binary patch literal 7273 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 J + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..c9b1e7d8831c67d3f55c8044ba2b1fdad7eb1248 GIT binary patch literal 10668 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 GrT+t(0j`Vy literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib new file mode 100644 index 0000000..5220a22 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..3eb7f81 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..8c54c217c00797d827b49b9adcc92151d64c3194 GIT binary patch literal 13404 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..4b1ab30 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..33a6020 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..4cd529a56b82299c1652f066cc95089a8bf1a192 GIT binary patch literal 7245 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 + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..d2586ea --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..65dfc95e3c2a0d483abf2be092c76db216dadb3c GIT binary patch literal 10338 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 z + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..d2586ea --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..4b7cc9054ee9d1ce02297c9b8484b41ec561c5ee GIT binary patch literal 13156 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings new file mode 100644 index 0000000000000000000000000000000000000000..ea175ae718007ffa8325619d382eb2db6e5b1133 GIT binary patch literal 8554 zcmd^^-)>t)5XSeqPjOliB2}aaxJ0N4w5m`^sh}<5(s4}c#&wKi$4#ClkJdY69s>A& zGZ}Wzv7JAVV+1IQeY|J?%+7o>^X=?!zo(DW{ZyrA=}4bleZJLSFAdW~zej1TmXp*^ z`)b=)%U(LwC+`o`I@D87eIBUozGk|U?xl_NN%|mdt7Rj7dhzr+b<(korvFe+`wSkKj`;Vqv?HW&y{}l)1lr+Z{$1H$d29& z)Y`W_#Tv{$(7UO6b<=CT&yo){<19VYZmRT!{+I8nqc?NSIoCIz1N}2oM;bZMGg^6d zA!je0r7dX^snNtBZJPeFeCQF)qW6#u$-F(w_Ez(=vx(je^~}?`$@;nUf2T!zc5Ssy zlW$6&@oxC#7w()`=aa33oD}Gp~-xpK0j%9psdn3aDc53_0(5eM|$g--gedJ z#Ma0=cMQ0-(bbMtA4!vaX$cwn8iU1I<4EmbcAP%a@6czqwPPX6GBL^NNB_XcL?b~T za=F$YEX4$VfVcFd5$yM?KAEf1o*c{X_54OsP1RmWM*l`0dgZ-`Mt)Wg*Tf?siCuOK z3uo$`HG=Ma#{-)OuR7LWU%xKXP^lBg80cgU-ee4x@c<;A$u{>=TR8KW!Kdr2Yg$5& zV0>^92S8Y5dYkD9|EUZqW7{_fz+NY2FSNF2`&w?d9HC++Ml8Sav_bQ zcx3qN7b~tyQy#CD?R!ghjrd4p3ZL3GFS||@ZAR*dqt}a(q1R;^Iv0}Ab;Lw`r!O62 zeXvH9TxN}p^qJ+A%i}9{S&Yi=7weCqpt`9^GHRJ&=(8yCyk(C&QnVzdY}aIo93GJ> zJf$t~-;oT&!kNCoXz9&a!iWru{(ZNQ{-w>td?1V2$p7G>IWrl;_fFLFSh5_c%-@bT z-)!eZ!#XFbvz*)01Kf{1hKAnjKj*aiigWciPi^Xlhz=s)4P><=Wx|{roG;P`-H><5 zesESeYMrBipP{jXv9XQd3`COWh7owGM~-IZ_h^JZ;Jevx18puL3;-DeP3}M7Zm2iR z?EJ_x2>fZT{?6i9fpM#(M_pq=GNaFm{ zw>Z0g+hplZ3!At{fhtZR?hD~ZoWd5RekC0KyL|}D{Z^{W_W$vnks*z< zS>0<&YjAR=4O(-UnuKYPS+oyN(SQ|zAJ zayE?Uw2EEMEb|O(1o>x?TRJl(@-Z7{b^67rYHU*EQ~7Oh1K-^+{UT}Ha^=qa^x{<{ z&PP}CTsRFZgSf}(s(w;+eivt4Se93@Kq@;87CqMPVK<(o`3$L=>>+fHeWKFh+>QDn z917{9V)$jjrdXTz6ZL2dZC{yIsb>s|m3Jg791RvSUd!55dMQgp{VX%ex+HN5Ud}7p z(-C!+t}1g8uc)cP9m{xiEZ)dpmi;>$#aQP887m<_mghWi!CI>i8@hfW>v$EHs-B|_ zguC}q1@_9|Sh14oF(<~ro98@G$|`s^^f;V~6F=n)`Yo=1{Ni_ACy# zcRDM-g#Y~myL`Nqt6jFo<_NE)-F$ChjYaS0&VWklvMBH*m2u#SY}6LEzZNPoJ0jxy ztpnICvr0yFeT1K(a+Q=ZQK_%X+&-4;l3fSM^%1#lo;fjjBE0o-UtMi!;s)Ni%+gP5 zmOfmt^y*p3ysPlDTbq^pgSsuAspWQVxV}wKi-_mH+NlkJ$a=M>ZoQ1q=Zch6XgJ%) zEyLm+Q?_qncH-gp}` z4iwj^X%OqLo&!uXa%v-e<>viQW;FEnnoXJA@_xuFFqabJw-jqTTYQFBIb z&6UW-J2gLHa8uP*v~ulinr58Y!X?QQ!OBbIvD>)UCAYz5y86ePvLBWfE-?28FTbYl literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj new file mode 120000 index 0000000..88614fe --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj @@ -0,0 +1 @@ +/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj b/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj new file mode 120000 index 0000000..88614fe --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/fr_CA.lproj @@ -0,0 +1 @@ +/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..4b1ab30 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..15ba8f4c8e18093cec6121a6aab21fdf4a8cea1d GIT binary patch literal 7161 zcmbtY2Yggj)<5@7d(+>{n|X8?1VlLCAWUXnl99p65o`|+C819b+nnU<%{_tqS`BESecLG^= z+aWLjx45D-Q+*lqC;W`m^LDTAJgGwpmZXGs@wbB+ERYTPFdintBq)LDPzCd$8DjV) z4p+b?xDKv|8{kH`32uX(a0lE255Nm>0A7aI;0<^iK8CO0Yxoy@1K+}T@ICxMw8ThE z#7u0&L0n`Y8AL{sF=Q+mPYOsOnM9_LX=FN?LCzyyGLOtB^(08bq=h6&8)+vO6Gkp0 zmy-?T8nT7lLT)A7$aZoExd+VTUUEO#MIImzl84B{m*gArE%}b>C`XOdO#9JuXaOyxMRWo!rW5HTI+;$PQ)vk;rDe37 zR?wxiovxrA^a9#RFQhB!Mf76I=qkFJuAyt`C3GFVlwL-1>E(1iy@FmzubDeMk_?C6 z;hkUw8`yyd2RK0h7q~%$KF}BXL4Ozk17Q#hh9TgAp>P%qgW)g&&W4e24vd1)Fb2j# z24uoG$g1`Fs-w|F?eIX@ACE8g`ev(<#n8o-7?#QJrFgABoRsiQKd-MO5Rl^WP(vsj zN_5N)1ykQpwk#TnU|L|p#20yeUVn=em-XO%c?=)gqp@Z3C{?5UWg*Uo3glb-pa}fC ziBh_wF?nQpG?J+FNBm7vte)q+zSat449s^v0L~N?6Nm70y&TidAL4hO|tz=%QW@8 z=$l)TOhjA!iBMo}D^`S55|(0#H=qCtp$I0-SKTee7pgZAl=$xo_;b+fvM=kRO!W;;Wl-SQYhO7WiSnjaaonggde@*lM-{iKKxZB z%i&yBb0^Gz3YZD!!7Qi*FU)2}){iY=OIZVJV&}7#!#K+vs0JU@U^>;pJoNrFDV_*L zaBa~D8t98AV*zQN*Eh@GAca|9be)OyIR*<*av>~&I#>)#pdOZj9~vM4L6D#kmMY05 zyS`eAw?-pDDTXSP#bHX8N#QW6ZYvM_o8%BpkH`xM;wv@8=y6}NRf@HRq;_UzBC{}? zgAgOLGV@Vo<`B+%zA|qkgrNl@5XD)Sqpy6)23f2-D}A90B$S)ShByeYxp-TP0qpF| z8DB8glby42tfw!b-RZE(QjxU^T3PwQvcn zgG=$Z7S_WC*eIt5u18r*JuhG)h7(c@{U>2gC!|OM6V~bVRY|c>G#Cn0;Ja9xKa8nR znoK035k)XZ$@6Z>iWbcMG{#O}o(!P?YQp8Eb)whMMXk|TLM}O+C>9OZ;<^=~^jy=V zu)hN{q}#q69NcSGrThy(M&b#7IPCXG zLC^GfASCC_X1Efrf~(;g*aFvLRAo=&MJ^MJWTUb!<{UP4H0r`X=5T0Tb+eLzP|$yF z%#SId=JKClYZq*VVic9@zG}_@_5ICo%XYX0Zp9pvvs^V>UI{*wC@3U9sAF%3t{uY8R@q+%0PJ$J%g+u$y^8;a|BH!daAkdnuX z41LiUhE08|KK9hly>K5^&@Q%^^~VyadmA1^7wv{U@DMx9Pl@C@vSXECLogXeKoYVyl=;)5>`lcY#BPKq&8ztn^hVF}kXuSW50_j?7My5(gN z98~FFAqPas2UWb(A6OQOG}ZHtv_fB^BP><=*}4M5 zH;@fr3wg>Gu)+0w-_FkL?7Xp_{G4pLg7Wi=u$c0(gk_~P=N_+XnHWDASSMLTFl>6)6pu$ajoOnIYu^$ z4RsKUf;8&XQ{Yo(*a@G(=kO2s0{#hKva{GQHk^%MXS0#mF-uxo!;+_JTDhmyA5TaP zQGYDxNubW2Z{BnN_$}Kj&9CuHj|BX!@njftFzBg@#uFI!P;0`|mYtdNM;T1X@(=<6 zR#?1BnMk(1o*%5}s;MY1_q63@X8lpHf6B;;vYJ1BbRifb02buRksOaf9iO*yebVN@Kgu_b0T2#7=(pfXu7&aEQq_7W@R5m&kP#RH1AR1A!h**fVi&*6x zLSmpc)3h3OfSvH$2rr`s##d3+jT6L4gdIdk<3#$qoM&ffXhbA^NZ)kcV1i6$*(^s% zje5Qh7C=_M+(EKrx8>!^-J~GpH!?WYIxZqZfDsQF3aiO5c#Di6XDj6=mts>anv4X? zqTy%^4XMFasob+kET0K1mt{HmsaSRsPJ>!9ii~DXmgnI5qN3hlno$}J2akY_WROfU zj%1N+l0$My9?3_aDw+`?l&i1RACT)@d5~Q%cMxRt;b@Z*h$2?V>sbLCU+e3@gl?%r z-^=Yq8IK`E{Y9v~m`p^?^O{2mi52mh^RhC>tA9nvw zJcm>hp9&00fTyw&2eGAMj4VNkaiM~7dAS(w-0c4p;yO4ghd33&QbecT(IbA?LIQF} zJR6Gv|F9!k2A;t#@RKIeoMuvJm&m5E={-i}Wo30!mps|1|DL*#{Z zc9ESjA|m-ziH`z%DsxxI+)3`*M(!d=Y!G%+owp_0_g3J3DpUBjnL-ty>ltD9?e{nGCjV4lwKH(_l&>Zp{d0yTFkr&7T7(!kmFC$bRglCb$;2yHd zpJ>LrQZ!LvPXiU3Qjgt6)v6~ctP#nd#DYjo0tjtL+mq4+PeLYcG7`;IUM%Q-R#*H6 zd2<_ivp4Jfz4kMic@)h&LXN|;%A6sb)5DrER;fAtr#DXo%-_8^lg@Wh=TUMhr8A5= zr?6!`I)hSNp(pZ@5v~Sx{_f2mbdrzA$EfoJ`ApFnVarixC2N&)`yb>BK=OiZ+}Did z98_Ww2}mqzRQ>W5`Fb1qn*2-7nZ91%+_)5*CN=t#;Y1w$F1IAybt_#h{ZP*jOD$iy z#4~$s)N%XLp>Ede`GNoGv%>qx_v8nbya!4BTjXcN%Oh}{e1ydFD3<+Fr1)7Zj?~kG z)HA|N=%q?#mgVrkfEt*V$)vp(eNom!P2}z_xdc-aP^&z_5Ll}GFYR@`50l8O{F{4S z`={jwu%x`(kPSPIh8^oM42Gmkn}Md4^_a$JT6Q$b(lK-_&7hfd9L=KHG>7KWJep6( zvkrCv>tq+QmFyyRF=K2MTg}$6wY6%sF7hSh0}qcJ`bE7KhwiLO#+yAV^mxuW9i>Mh zJyqbyBhxJW+S@NOt-}GH)8tdNDT8II3E>dCnj@Zc0-)A^BcyInM=kDUZANxIKeMb^ z3M})KMpt;w`Tybas5&|O5TTV7)ya%}WZW~mJtD=@UY^d9cv6E0IOKaequ2d;EV+w! z!OV2z@Ni}}9?hJ_^0vZ=)5oAZ?jt4Y_ymdg2& zo~c36P6ISZCE7@vXfqAb^XW1grY$r=qqLPSr!g9*37VvB>~glAZD1SO6>JmR%&uft zv8&lNYzw=VUB|9xe_~tN4eUmC6F*cr2*9&|U--eifw%J_FYspG!Joz3cpcC2PM+tD zyon#i4_8cqa=MY#bUR>kF9%$$++#bSTj;f2^jf7KRg|j7VbhR=0*6POXW>z1HlCMF z!4s}(Jeg`F_uwh*&s0NAv@acvXR9@Mwi?EB)l29#bQj%AU#EYkKWp?FLF3l+(e%>{ z&qlR>hwBJXVzJDcAY~v zT34@Irdy@EPPaq%nC>Or5#2kw&vn1)E&BfYA^M^EVfqpJk@`{kG5QSsIDNK0S6`?v z(bwoDeOMpYU#P!Gf2sa*{YL#(eV6_Y{r&n~`UmxY*6-K9u0N^&Q2(X=M}yX2HuN!! zFk~9?4V8vELyIA5SZ;_Ll7^jzJ%*+mM&hoVy4xmwWiBW>rL02cAD-q-EF$p^pNR*>5%Cy)5oT-Oh1@)W}CU6 zd4###Ji|QGJj?7g&o<97`^+uoP3A81{pJVEyUh=oA2B~>-fP}xe%<_r`LOw@`BMv6 zIE&jd)H2SJZOOIdTM8^imZ_FX%R)n7`!)~(hX zt+!bBS)aD@Wj!S-*2ko!f5802~PuV}R|B3}`;|K90_$j^N;hd^Y8Je_z(F1;XmfTap)bK!{o3yY>t7BB1f5{(h+t<9IcL+BjIRstZ-~_ zT;;gYvE6ZxW545F$KM_AJ3e%LAc#x#d)*y0q1V#9_L@2`<;JtekwSGETKp!7OI6Bp;nkLEEMX5CBjmnK?n+s zLbI@3hzm(!jj&O;O1MF|N!TMiEIcYaE<7RZ74`{F3;TuVgcpPtg*Sx5!so&l!k5C= z!Z*Tq!Vkhv!Y{&aF5=R-bS|5Vca3t5ab>v1xw2iku6$R4tH@RCn&g_|Dsjzl)wq_r zE_U7K+V48z`qr&=&v7qtFLNi{ZSHnAbFX% + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2e04cfa --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..2984064502b81dee5147f477cb7f28350dd4d945 GIT binary patch literal 10360 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 + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..c493485 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 667 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 5 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..55cc2c271b5b63daf69c155ca294fdfa17a9e0e5 GIT binary patch literal 12659 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..4b1ab30 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib @@ -0,0 +1,50 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..3f09790 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,18 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..aa38f86ba2610ef2aff9b9ba9b2bdfcdfaf38147 GIT binary patch literal 7234 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..994d4c3 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib @@ -0,0 +1,67 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..d2586ea --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..c82d3581bf07ad42836237f2cd3ea55ca48b73b6 GIT binary patch literal 10220 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 O_|R9B- + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..d2586ea --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBFramework Version + 629 + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..ac298ce7e33ac2b2b9e3971c5a730f431ed872a7 GIT binary patch literal 12535 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 &-a!7R(}MG2KUBgXUDll+r+*ztt;Vw2g`>-E2it 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/relaunch b/Mac/Sparkle.framework/Versions/A/Resources/relaunch new file mode 100755 index 0000000000000000000000000000000000000000..e7b96d61466005ca15b235b527e3ceb5d4819283 GIT binary patch literal 58924 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 + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2b3d425 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..1d4655c593e467e2972b1800808d53a152f4e56b GIT binary patch literal 7675 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 + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + CLASS + NSApplication + LANGUAGE + ObjC + SUPERCLASS + NSResponder + + + ACTIONS + + installUpdate + id + remindMeLater + id + skipThisVersion + id + + CLASS + SUUpdateAlert + LANGUAGE + ObjC + OUTLETS + + delegate + id + description + NSTextField + releaseNotesView + WebView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..2b3d425 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..103b1cf8478a00db14aafa192b05f1868c294c9f GIT binary patch literal 10895 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 SGKqLr0)O + + + + IBClasses + + + CLASS + NSObject + LANGUAGE + ObjC + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..5132e29 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,18 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + IBSystem Version + 9E17 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..c09d9e70d19c579ac605ff48aaee067448e0cea7 GIT binary patch literal 12898 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 lomi4xP~K + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + doNotInstall + id + installLater + id + installNow + id + + CLASS + SUAutomaticUpdateAlert + LANGUAGE + ObjC + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib new file mode 100644 index 0000000..c5a067e --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..53cb91a9b32fc4ddcc2a4506d3ae1c0458085256 GIT binary patch literal 7474 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 LVePl=TiW?wt9#5* literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib new file mode 100644 index 0000000..018710a --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib @@ -0,0 +1,39 @@ +{ + IBClasses = ( + { + CLASS = FirstResponder; + LANGUAGE = ObjC; + SUPERCLASS = NSObject; + }, + { + CLASS = NSApplication; + LANGUAGE = ObjC; + SUPERCLASS = NSResponder; + }, + { + CLASS = NSObject; + LANGUAGE = ObjC; + }, + { + ACTIONS = { + installUpdate = id; + remindMeLater = id; + skipThisVersion = id; + }; + CLASS = SUUpdateAlert; + LANGUAGE = ObjC; + OUTLETS = { + delegate = id; + description = NSTextField; + releaseNotesView = WebView; + }; + SUPERCLASS = SUWindowController; + }, + { + CLASS = SUWindowController; + LANGUAGE = ObjC; + SUPERCLASS = NSWindowController; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib new file mode 100644 index 0000000..6b787d4 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib @@ -0,0 +1,18 @@ + + + + + IBDocumentLocation + 69 14 356 240 0 0 1280 778 + IBFramework Version + 489.0 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBSystem Version + 9D34 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..7e6d490e723329c1372940af22e3d49bc0ee5da0 GIT binary patch literal 10180 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib new file mode 100644 index 0000000..5220a22 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib @@ -0,0 +1,59 @@ + + + + + IBClasses + + + CLASS + SUWindowController + LANGUAGE + ObjC + SUPERCLASS + NSWindowController + + + ACTIONS + + finishPrompt + id + toggleMoreInfo + id + + CLASS + SUUpdatePermissionPrompt + LANGUAGE + ObjC + OUTLETS + + delegate + id + descriptionTextField + NSTextField + moreInfoButton + NSButton + moreInfoView + NSView + + SUPERCLASS + SUWindowController + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + CLASS + NSObject + LANGUAGE + ObjC + + + IBVersion + 1 + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib new file mode 100644 index 0000000..c5a067e --- /dev/null +++ b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../Sparkle.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 6 + + IBSystem Version + 10A96 + targetFramework + IBCocoaFramework + + diff --git a/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Mac/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..64babac12911fdb05ddb63ef96193137c91f3ddf GIT binary patch literal 13483 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 C^-$vg literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/A/Sparkle b/Mac/Sparkle.framework/Versions/A/Sparkle new file mode 100755 index 0000000000000000000000000000000000000000..0db0a8f01fb6f1cf39bbe427ac76153793a26a3e GIT binary patch literal 463540 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

B-YH*!3RdDu#}q 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 literal 0 HcmV?d00001 diff --git a/Mac/Sparkle.framework/Versions/Current b/Mac/Sparkle.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/Mac/Sparkle.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/Mac/Tentia-Info.plist b/Mac/Tentia-Info.plist new file mode 100644 index 0000000..01a5877 --- /dev/null +++ b/Mac/Tentia-Info.plist @@ -0,0 +1,80 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + ???? + + CFBundleTypeIconFile + + CFBundleTypeName + DocumentType + CFBundleTypeOSTypes + + ???? + + CFBundleTypeRole + Editor + NSDocumentClass + NewMessageWindow + + + CFBundleExecutable + Tentia + CFBundleHelpBookFolder + Tentia.help + CFBundleHelpBookName + nu.jabs.apps.tentia.help + CFBundleIconFile + Icon.icns + CFBundleIdentifier + nu.jabs.apps.tentia + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Tentia + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.1.2 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + nu.jabs.apps.tentia.handler + CFBundleURLSchemes + + tentia + + + + CFBundleVersion + 0.1.2 + LSApplicationCategoryType + public.app-category.lifestyle + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + NSServices + + SUFeedURL + http://jabs.nu/Tentia/download/Appcast.xml + SUPublicDSAKeyFile + dsa_pub.pem + UTExportedTypeDeclarations + + UTImportedTypeDeclarations + + + diff --git a/Mac/Tentia.xcodeproj/jeena.mode1v3 b/Mac/Tentia.xcodeproj/jeena.mode1v3 new file mode 100644 index 0000000..777a537 --- /dev/null +++ b/Mac/Tentia.xcodeproj/jeena.mode1v3 @@ -0,0 +1,1421 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 1F68211F1249D25900A03CED + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-combo-popup + action + NSToolbarFlexibleSpaceItem + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 287 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 2A37F4AAFDCFA73011CA2CEA + 2A37F4ABFDCFA73011CA2CEA + 2A37F4B8FDCFA73011CA2CEA + 1FFA36C71177D861006C8562 + 2A37F4C3FDCFA73011CA2CEA + 1058C7A6FEA54F5311CA2CBB + 1C37FAAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 37 + 17 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {287, 1304}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {304, 1322}} + GroupTreeTableConfiguration + + MainColumn + 287 + + RubberWindowFrame + 469 55 1319 1363 0 0 2560 1418 + + Module + PBXSmartGroupTreeModule + Proportion + 304pt + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + TwittiaCore.js + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + TwittiaCore.js + _historyCapacity + 0 + bookmark + 1F8D1E4412DF5A0D00571730 + history + + 1F98DCA9124C691A004289ED + 1F98DCAD124C691A004289ED + 1F17508512A972DF004A0B42 + 1F2F793712BD93A600F073BE + 1F27470412D905CA00339B4F + 1F618EAC12DB5D0700E500D9 + 1F618ED112DB60D100E500D9 + 1F618ED212DB60D100E500D9 + 1F618ED312DB60D100E500D9 + 1F618ED412DB60D100E500D9 + 1F618ED512DB60D100E500D9 + 1F618ED612DB60D100E500D9 + 1F618F0212DB665B00E500D9 + 1F618F0312DB665B00E500D9 + 1F618F0412DB665B00E500D9 + 1F618F0512DB665B00E500D9 + 1F8D1E4212DF5A0D00571730 + 1F8D1E4312DF5A0D00571730 + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1010, 1317}} + RubberWindowFrame + 469 55 1319 1363 0 0 2560 1418 + + Module + PBXNavigatorGroup + Proportion + 1317pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 1322}, {1010, 0}} + RubberWindowFrame + 469 55 1319 1363 0 0 2560 1418 + + Module + XCDetailModule + Proportion + 0pt + + + Proportion + 1010pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 1F8D1E2712DF55D600571730 + 1CE0B1FE06471DED0097A5F4 + 1F8D1E2812DF55D600571730 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarConfigUserDefaultsMinorVersion + 2 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 1F8D1E4612DF5A0D00571730 + 1F8D1E4712DF5A0D00571730 + 1F6821201249D25900A03CED + 1CD10A99069EF8BA00B06720 + 1C78EAAD065D492600B07095 + /Users/jeena/Projects/Twittia/Twittia 2.xcodeproj + + WindowString + 469 55 1319 1363 0 0 2560 1418 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1299, 402}} + RubberWindowFrame + 2771 56 1299 684 2560 0 1920 1200 + + Module + PBXNavigatorGroup + Proportion + 402pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build Results + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 407}, {1299, 236}} + RubberWindowFrame + 2771 56 1299 684 2560 0 1920 1200 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 643pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 1F6821201249D25900A03CED + 1F8D1E2912DF55D600571730 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowContentMinSize + 486 300 + WindowString + 2771 56 1299 684 2560 0 1920 1200 + WindowToolGUID + 1F6821201249D25900A03CED + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {316, 203}} + {{316, 0}, {378, 203}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 203}} + {{0, 203}, {694, 178}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 381}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 148 + + Frame + {{316, 0}, {378, 203}} + RubberWindowFrame + 67 996 694 422 0 0 2560 1418 + + RubberWindowFrame + 67 996 694 422 0 0 2560 1418 + + Module + PBXDebugSessionModule + Proportion + 381pt + + + Proportion + 381pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1F8D1E2A12DF55D600571730 + 1C162984064C10D400B95A72 + 1F8D1E2B12DF55D600571730 + 1F8D1E2C12DF55D600571730 + 1F8D1E2D12DF55D600571730 + 1F8D1E2E12DF55D600571730 + 1F8D1E2F12DF55D600571730 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 67 996 694 422 0 0 2560 1418 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {968, 946}} + RubberWindowFrame + 2810 187 968 987 2560 0 1920 1200 + + Module + PBXDebugCLIModule + Proportion + 946pt + + + Proportion + 946pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 1F8D1E4512DF5A0D00571730 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 2810 187 968 987 2560 0 1920 1200 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 836 546 744 409 0 0 2560 1418 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 836 546 744 409 0 0 2560 1418 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 1F618EB812DB5D0700E500D9 + 1F618EB912DB5D0700E500D9 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 836 546 744 409 0 0 2560 1418 + WindowToolGUID + 1F618EB812DB5D0700E500D9 + WindowToolIsVisible + + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/Mac/Tentia.xcodeproj/jeena.pbxuser b/Mac/Tentia.xcodeproj/jeena.pbxuser new file mode 100644 index 0000000..16fe5ce --- /dev/null +++ b/Mac/Tentia.xcodeproj/jeena.pbxuser @@ -0,0 +1,496 @@ +// !$*UTF8*$! +{ + 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FFA36CB1177D861006C8562 /* default.css */; + name = "default.css: 80"; + rLen = 0; + rLoc = 1037; + rType = 0; + vrLen = 553; + vrLoc = 411; + }; + 1F198FC7117BC4AB0049BEA7 /* README.markdown */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1498}"; + }; + }; + 1F1990DF117BD2250049BEA7 /* Appcast.xml */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; + sepNavSelRange = "{784, 0}"; + sepNavVisRange = "{0, 954}"; + }; + }; + 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1285}}"; + sepNavSelRange = "{461, 0}"; + sepNavVisRange = "{0, 1964}"; + }; + }; + 1F27470412D905CA00339B4F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */; + name = "dsa_pub.pem: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1178; + vrLoc = 0; + }; + 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; + name = "ViewDelegate.m: 37"; + rLen = 13; + rLoc = 1089; + rType = 0; + vrLen = 1550; + vrLoc = 0; + }; + 1F364396118CBC77008198EF /* OAuth.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 636}"; + }; + }; + 1F364397118CBC77008198EF /* OAuth.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1034, 2655}}"; + sepNavSelRange = "{4216, 0}"; + sepNavVisRange = "{2668, 3057}"; + }; + }; + 1F4673E61180F654006CC37C /* TwittiaCore.js */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1013, 5355}}"; + sepNavSelRange = "{1631, 0}"; + sepNavVisRange = "{248, 3030}"; + }; + }; + 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; + functionName = "-sendTweet:"; + hitCount = 1; + ignoreCount = 0; + lineNumber = 108; + location = Twittia; + modificationTime = 316627463.947617; + originalNumberOfMultipleMatches = 1; + state = 1; + }; + 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */; + name = "MyDocument.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 573; + vrLoc = 0; + }; + 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; + sepNavSelRange = "{358, 0}"; + sepNavVisRange = "{0, 366}"; + }; + }; + 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; + sepNavSelRange = "{279, 0}"; + sepNavVisRange = "{0, 316}"; + }; + }; + 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; + name = "MyDocument.m: 107"; + rLen = 0; + rLoc = 3758; + rType = 0; + vrLen = 3377; + vrLoc = 537; + }; + 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F618EC812DB5E6100E500D9 /* TweetModel.h */; + name = "TweetModel.h: 18"; + rLen = 0; + rLoc = 358; + rType = 0; + vrLen = 366; + vrLoc = 0; + }; + 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; + name = "TweetModel.m: 18"; + rLen = 0; + rLoc = 279; + rType = 0; + vrLen = 316; + vrLoc = 0; + }; + 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FFA36D21177D879006C8562 /* Controller.h */; + name = "Controller.h: 10"; + rLen = 25; + rLoc = 149; + rType = 0; + vrLen = 1539; + vrLoc = 0; + }; + 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F364396118CBC77008198EF /* OAuth.h */; + name = "OAuth.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 636; + vrLoc = 0; + }; + 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F364397118CBC77008198EF /* OAuth.m */; + name = "OAuth.m: 135"; + rLen = 0; + rLoc = 4216; + rType = 0; + vrLen = 3057; + vrLoc = 2668; + }; + 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1FFA36D31177D879006C8562 /* Controller.m */; + name = "Controller.m: 178"; + rLen = 0; + rLoc = 5952; + rType = 0; + vrLen = 2979; + vrLoc = 4466; + }; + 1F618F0312DB665B00E500D9 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 8D15AC360486D014006FF6A4 /* Twittia_2-Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + LSMinimumSystemVersion, + ); + name = "/Users/jeena/Projects/Twittia/Twittia_2-Info.plist"; + rLen = 0; + rLoc = 9223372036854775808; + }; + 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F1990DF117BD2250049BEA7 /* Appcast.xml */; + name = "Appcast.xml: 15"; + rLen = 0; + rLoc = 784; + rType = 0; + vrLen = 954; + vrLoc = 0; + }; + 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F198FC7117BC4AB0049BEA7 /* README.markdown */; + name = "README.markdown: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1498; + vrLoc = 0; + }; + 1F68210012493A3400A03CED /* Twittia */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + dataTipCustomDataFormattersEnabled = 1; + dataTipShowTypeColumn = 1; + dataTipSortType = 0; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = Twittia; + savedGlobals = { + }; + showTypeColumn = 0; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 1F68211B12493A5400A03CED /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + repositoryNamesForRoots = { + "" = ""; + }; + }; + }; + 1F68211C12493A5400A03CED /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 1F77DB46118C5F1C007C7F1E /* Constants.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1115, 3300}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1114}"; + }; + }; + 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */; + name = "ReleaseNotes.html: 16"; + rLen = 0; + rLoc = 461; + rType = 0; + vrLen = 1964; + vrLoc = 0; + }; + 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; + name = "TwittiaCore.js: 90"; + rLen = 3; + rLoc = 3369; + rType = 0; + vrLen = 3174; + vrLoc = 376; + }; + 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; + name = "TwittiaCore.js: 66"; + rLen = 0; + rLoc = 1631; + rType = 0; + vrLen = 3030; + vrLoc = 248; + }; + 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; + name = "Constants.m: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1114; + vrLoc = 0; + }; + 1F98DCAD124C691A004289ED /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 1F98DC9D124BFFD7004289ED /* pin.png */; + }; + 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 865}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1178}"; + }; + }; + 1FFA36CB1177D861006C8562 /* default.css */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1115, 3270}}"; + sepNavSelRange = "{1037, 0}"; + sepNavVisRange = "{411, 553}"; + }; + }; + 1FFA36D21177D879006C8562 /* Controller.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; + sepNavSelRange = "{149, 25}"; + sepNavVisRange = "{0, 1539}"; + }; + }; + 1FFA36D31177D879006C8562 /* Controller.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1238, 3285}}"; + sepNavSelRange = "{5834, 0}"; + sepNavVisRange = "{5432, 1211}"; + }; + }; + 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1517, 1237}}"; + sepNavSelRange = "{1089, 13}"; + sepNavVisRange = "{0, 1550}"; + }; + }; + 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 1F68210012493A3400A03CED /* Twittia */; + activeTarget = 8D15AC270486D014006FF6A4 /* Twittia */; + addToTargets = ( + 8D15AC270486D014006FF6A4 /* Twittia */, + ); + breakpoints = ( + 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */, + ); + codeSenseManager = 1F68211C12493A5400A03CED /* Code sense */; + executables = ( + 1F68210012493A3400A03CED /* Twittia */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 200, + 200, + 580.58349609375, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBookmarksDataSource_LocationID, + PBXBookmarksDataSource_NameID, + PBXBookmarksDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 771, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 731, + 60, + 20, + 48.16259765625, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 316626383; + PBXWorkspaceStateSaveDate = 316626383; + }; + perUserProjectItems = { + 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = 1F17508512A972DF004A0B42 /* PBXTextBookmark */; + 1F27470412D905CA00339B4F /* PBXTextBookmark */ = 1F27470412D905CA00339B4F /* PBXTextBookmark */; + 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = 1F2F793712BD93A600F073BE /* PBXTextBookmark */; + 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */; + 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED112DB60D100E500D9 /* PBXTextBookmark */; + 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED212DB60D100E500D9 /* PBXTextBookmark */; + 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED312DB60D100E500D9 /* PBXTextBookmark */; + 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED412DB60D100E500D9 /* PBXTextBookmark */; + 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED512DB60D100E500D9 /* PBXTextBookmark */; + 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED612DB60D100E500D9 /* PBXTextBookmark */; + 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0212DB665B00E500D9 /* PBXTextBookmark */; + 1F618F0312DB665B00E500D9 /* PlistBookmark */ = 1F618F0312DB665B00E500D9 /* PlistBookmark */; + 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0412DB665B00E500D9 /* PBXTextBookmark */; + 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0512DB665B00E500D9 /* PBXTextBookmark */; + 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */; + 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */; + 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */; + 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = 1F98DCA9124C691A004289ED /* PBXTextBookmark */; + 1F98DCAD124C691A004289ED /* PBXBookmark */ = 1F98DCAD124C691A004289ED /* PBXBookmark */; + }; + sourceControlManager = 1F68211B12493A5400A03CED /* Source Control */; + userBuildSettings = { + }; + }; + 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1748, 1755}}"; + sepNavSelRange = "{3758, 0}"; + sepNavVisRange = "{537, 3377}"; + }; + }; + 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 573}"; + }; + }; + 8D15AC270486D014006FF6A4 /* Twittia */ = { + activeExec = 0; + executables = ( + 1F68210012493A3400A03CED /* Twittia */, + ); + }; +} diff --git a/Mac/Tentia.xcodeproj/project.pbxproj b/Mac/Tentia.xcodeproj/project.pbxproj new file mode 100644 index 0000000..35c0252 --- /dev/null +++ b/Mac/Tentia.xcodeproj/project.pbxproj @@ -0,0 +1,490 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */; }; + 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */; }; + 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1F122D48118E1DE100E83B77 /* Icon.icns */; }; + 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */; }; + 1F1C8082164824B30010B409 /* Constants.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805A164824760010B409 /* Constants.js */; }; + 1F1C8083164824B30010B409 /* ConversationView.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805B164824760010B409 /* ConversationView.js */; }; + 1F1C8084164824B30010B409 /* Core.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805C164824760010B409 /* Core.js */; }; + 1F1C8085164824B30010B409 /* default-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805D164824760010B409 /* default-avatar.png */; }; + 1F1C8086164824B30010B409 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805E164824760010B409 /* default.css */; }; + 1F1C8087164824B30010B409 /* delete.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805F164824760010B409 /* delete.png */; }; + 1F1C8088164824B30010B409 /* enc-base64-min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8060164824760010B409 /* enc-base64-min.js */; }; + 1F1C8089164824B30010B409 /* even-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8061164824760010B409 /* even-bg.png */; }; + 1F1C808A164824B30010B409 /* hmac-helper.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8062164824760010B409 /* hmac-helper.js */; }; + 1F1C808B164824B30010B409 /* hmac-sha256.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8063164824760010B409 /* hmac-sha256.js */; }; + 1F1C808C164824B30010B409 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8064164824760010B409 /* index.html */; }; + 1F1C808D164824B30010B409 /* index_oauth.html in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8065164824760010B409 /* index_oauth.html */; }; + 1F1C808E164824B30010B409 /* jQuery-Plugins.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8066164824760010B409 /* jQuery-Plugins.js */; }; + 1F1C808F164824B30010B409 /* jQuery.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8067164824760010B409 /* jQuery.js */; }; + 1F1C8090164824B30010B409 /* OauthImplementation.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8068164824760010B409 /* OauthImplementation.js */; }; + 1F1C8091164824B30010B409 /* odd-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8069164824760010B409 /* odd-bg.png */; }; + 1F1C8092164824B30010B409 /* pin.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806A164824760010B409 /* pin.png */; }; + 1F1C8093164824B30010B409 /* sprite-icons.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806B164824760010B409 /* sprite-icons.png */; }; + 1F1C8094164824B30010B409 /* TimelineView.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806C164824760010B409 /* TimelineView.js */; }; + 1F1C8095164824B30010B409 /* URI.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806D164824760010B409 /* URI.min.js */; }; + 1F618ECA12DB5E6100E500D9 /* TweetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; }; + 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F70619E1178FBB300C85707 /* Carbon.framework */; }; + 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; }; + 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA09846144602530079E258 /* libicucore.dylib */; }; + 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FC2549B1427D9930035D84B /* AccessToken.m */; }; + 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; + 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; + 1FFA36D71177D879006C8562 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D31177D879006C8562 /* Controller.m */; }; + 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; }; + 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FFA37061177DAF4006C8562 /* WebKit.framework */; }; + 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; + 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; + 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */; settings = {ATTRIBUTES = (); }; }; + 8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 1FE2FCA1117A82E1000504B0 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/NewMessageWindow.xib; sourceTree = ""; }; + 1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + 1F122D48118E1DE100E83B77 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; + 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; }; + 1F1C805A164824760010B409 /* Constants.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Constants.js; sourceTree = ""; }; + 1F1C805B164824760010B409 /* ConversationView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ConversationView.js; sourceTree = ""; }; + 1F1C805C164824760010B409 /* Core.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Core.js; sourceTree = ""; }; + 1F1C805D164824760010B409 /* default-avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default-avatar.png"; sourceTree = ""; }; + 1F1C805E164824760010B409 /* default.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = default.css; sourceTree = ""; }; + 1F1C805F164824760010B409 /* delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delete.png; sourceTree = ""; }; + 1F1C8060164824760010B409 /* enc-base64-min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "enc-base64-min.js"; sourceTree = ""; }; + 1F1C8061164824760010B409 /* even-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "even-bg.png"; sourceTree = ""; }; + 1F1C8062164824760010B409 /* hmac-helper.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-helper.js"; sourceTree = ""; }; + 1F1C8063164824760010B409 /* hmac-sha256.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-sha256.js"; sourceTree = ""; }; + 1F1C8064164824760010B409 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 1F1C8065164824760010B409 /* index_oauth.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index_oauth.html; sourceTree = ""; }; + 1F1C8066164824760010B409 /* jQuery-Plugins.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "jQuery-Plugins.js"; sourceTree = ""; }; + 1F1C8067164824760010B409 /* jQuery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jQuery.js; sourceTree = ""; }; + 1F1C8068164824760010B409 /* OauthImplementation.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = OauthImplementation.js; sourceTree = ""; }; + 1F1C8069164824760010B409 /* odd-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "odd-bg.png"; sourceTree = ""; }; + 1F1C806A164824760010B409 /* pin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pin.png; sourceTree = ""; }; + 1F1C806B164824760010B409 /* sprite-icons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sprite-icons.png"; sourceTree = ""; }; + 1F1C806C164824760010B409 /* TimelineView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = TimelineView.js; sourceTree = ""; }; + 1F1C806D164824760010B409 /* URI.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = URI.min.js; sourceTree = ""; }; + 1F36440E118CC173008198EF /* OAuthConsumer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OAuthConsumer.framework; sourceTree = ""; }; + 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = TweetModel.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = TweetModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1F70619E1178FBB300C85707 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; + 1F77DB45118C5F1C007C7F1E /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Constants.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 1F77DB46118C5F1C007C7F1E /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Constants.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1FA09846144602530079E258 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; + 1FC2549A1427D9930035D84B /* AccessToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AccessToken.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 1FC2549B1427D9930035D84B /* AccessToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AccessToken.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1FE2FC92117A818D000504B0 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; + 1FFA36D21177D879006C8562 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Controller.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 1FFA36D31177D879006C8562 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Controller.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 1FFA36D41177D879006C8562 /* ViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewDelegate.h; sourceTree = ""; }; + 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewDelegate.m; sourceTree = ""; }; + 1FFA37061177DAF4006C8562 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; + 2564AD2C0F5327BB00F57823 /* Tentia_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Tentia_Prefix.pch; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = NewMessageWindow.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = NewMessageWindow.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; + 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 8D15AC360486D014006FF6A4 /* Tentia-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Tentia-Info.plist"; sourceTree = ""; }; + 8D15AC370486D014006FF6A4 /* Tentia.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tentia.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D15AC330486D014006FF6A4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */, + 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, + 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */, + 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */, + 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */, + 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1F36440E118CC173008198EF /* OAuthConsumer.framework */, + 1FE2FC92117A818D000504B0 /* Sparkle.framework */, + 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, + 1FFA37061177DAF4006C8562 /* WebKit.framework */, + 1F70619E1178FBB300C85707 /* Carbon.framework */, + 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, + 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */, + 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FB0FE9D524F11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D15AC370486D014006FF6A4 /* Tentia.app */, + ); + name = Products; + sourceTree = ""; + }; + 1F1C8059164824760010B409 /* WebKit */ = { + isa = PBXGroup; + children = ( + 1F1C805A164824760010B409 /* Constants.js */, + 1F1C805B164824760010B409 /* ConversationView.js */, + 1F1C805C164824760010B409 /* Core.js */, + 1F1C805D164824760010B409 /* default-avatar.png */, + 1F1C805E164824760010B409 /* default.css */, + 1F1C805F164824760010B409 /* delete.png */, + 1F1C8060164824760010B409 /* enc-base64-min.js */, + 1F1C8061164824760010B409 /* even-bg.png */, + 1F1C8062164824760010B409 /* hmac-helper.js */, + 1F1C8063164824760010B409 /* hmac-sha256.js */, + 1F1C8064164824760010B409 /* index.html */, + 1F1C8065164824760010B409 /* index_oauth.html */, + 1F1C8066164824760010B409 /* jQuery-Plugins.js */, + 1F1C8067164824760010B409 /* jQuery.js */, + 1F1C8068164824760010B409 /* OauthImplementation.js */, + 1F1C8069164824760010B409 /* odd-bg.png */, + 1F1C806A164824760010B409 /* pin.png */, + 1F1C806B164824760010B409 /* sprite-icons.png */, + 1F1C806C164824760010B409 /* TimelineView.js */, + 1F1C806D164824760010B409 /* URI.min.js */, + ); + path = WebKit; + sourceTree = ""; + }; + 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */ = { + isa = PBXGroup; + children = ( + 1FA09846144602530079E258 /* libicucore.dylib */, + 2A37F4ABFDCFA73011CA2CEA /* Classes */, + 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, + 2A37F4B8FDCFA73011CA2CEA /* Resources */, + 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, + 19C28FB0FE9D524F11CA2CBB /* Products */, + ); + name = "Twittia 2"; + sourceTree = ""; + }; + 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { + isa = PBXGroup; + children = ( + 1FFA36D21177D879006C8562 /* Controller.h */, + 1FFA36D31177D879006C8562 /* Controller.m */, + 1FFA36D41177D879006C8562 /* ViewDelegate.h */, + 1FFA36D51177D879006C8562 /* ViewDelegate.m */, + 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */, + 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */, + 1F77DB45118C5F1C007C7F1E /* Constants.h */, + 1F77DB46118C5F1C007C7F1E /* Constants.m */, + 1F618EC812DB5E6100E500D9 /* TweetModel.h */, + 1F618EC912DB5E6100E500D9 /* TweetModel.m */, + 1FC2549A1427D9930035D84B /* AccessToken.h */, + 1FC2549B1427D9930035D84B /* AccessToken.m */, + ); + name = Classes; + sourceTree = ""; + }; + 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 2564AD2C0F5327BB00F57823 /* Tentia_Prefix.pch */, + 2A37F4B0FDCFA73011CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 1F122D48118E1DE100E83B77 /* Icon.icns */, + 1F1C8059164824760010B409 /* WebKit */, + 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, + 8D15AC360486D014006FF6A4 /* Tentia-Info.plist */, + 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, + 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */, + 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */, + ); + name = Resources; + sourceTree = ""; + }; + 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, + 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D15AC270486D014006FF6A4 /* Twittia */ = { + isa = PBXNativeTarget; + buildConfigurationList = C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Twittia" */; + buildPhases = ( + 8D15AC2B0486D014006FF6A4 /* Resources */, + 8D15AC300486D014006FF6A4 /* Sources */, + 8D15AC330486D014006FF6A4 /* Frameworks */, + 1FE2FCA1117A82E1000504B0 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Twittia; + productInstallPath = "$(HOME)/Applications"; + productName = "Twittia 2"; + productReference = 8D15AC370486D014006FF6A4 /* Tentia.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + }; + buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Tentia" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D15AC270486D014006FF6A4 /* Twittia */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D15AC2B0486D014006FF6A4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F1C8082164824B30010B409 /* Constants.js in Resources */, + 1F1C8083164824B30010B409 /* ConversationView.js in Resources */, + 1F1C8084164824B30010B409 /* Core.js in Resources */, + 1F1C8085164824B30010B409 /* default-avatar.png in Resources */, + 1F1C8086164824B30010B409 /* default.css in Resources */, + 1F1C8087164824B30010B409 /* delete.png in Resources */, + 1F1C8088164824B30010B409 /* enc-base64-min.js in Resources */, + 1F1C8089164824B30010B409 /* even-bg.png in Resources */, + 1F1C808A164824B30010B409 /* hmac-helper.js in Resources */, + 1F1C808B164824B30010B409 /* hmac-sha256.js in Resources */, + 1F1C808C164824B30010B409 /* index.html in Resources */, + 1F1C808D164824B30010B409 /* index_oauth.html in Resources */, + 1F1C808E164824B30010B409 /* jQuery-Plugins.js in Resources */, + 1F1C808F164824B30010B409 /* jQuery.js in Resources */, + 1F1C8090164824B30010B409 /* OauthImplementation.js in Resources */, + 1F1C8091164824B30010B409 /* odd-bg.png in Resources */, + 1F1C8092164824B30010B409 /* pin.png in Resources */, + 1F1C8093164824B30010B409 /* sprite-icons.png in Resources */, + 1F1C8094164824B30010B409 /* TimelineView.js in Resources */, + 1F1C8095164824B30010B409 /* URI.min.js in Resources */, + 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */, + 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, + 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */, + 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */, + 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D15AC300486D014006FF6A4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */, + 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */, + 8D15AC320486D014006FF6A4 /* main.m in Sources */, + 1FFA36D71177D879006C8562 /* Controller.m in Sources */, + 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */, + 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */, + 1F618ECA12DB5E6100E500D9 /* TweetModel.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C1660FE840EACC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 1DDD58290DA1D0D100B32029 /* English */, + ); + name = NewMessageWindow.xib; + sourceTree = ""; + }; + 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 1DDD582B0DA1D0D100B32029 /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 2A37F4BAFDCFA73011CA2CEA /* English */, + ); + name = Credits.rtf; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C05733C808A9546B00998B17 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Tentia_Prefix.pch; + INFOPLIST_FILE = "Tentia-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = Tentia; + SDKROOT = ""; + }; + name = Debug; + }; + C05733C908A9546B00998B17 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)\"", + ); + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Tentia_Prefix.pch; + INFOPLIST_FILE = "Tentia-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = Tentia; + SDKROOT = ""; + }; + name = Release; + }; + C05733CC08A9546B00998B17 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.5; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = ""; + }; + name = Debug; + }; + C05733CD08A9546B00998B17 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.5; + ONLY_ACTIVE_ARCH = NO; + SDKROOT = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Twittia" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C05733C808A9546B00998B17 /* Debug */, + C05733C908A9546B00998B17 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Tentia" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C05733CC08A9546B00998B17 /* Debug */, + C05733CD08A9546B00998B17 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; +} diff --git a/Mac/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Mac/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..6cf79f5 --- /dev/null +++ b/Mac/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate b/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..c163e33018a29e974bd624f9e1093b9d9d98c59f GIT binary patch literal 33669 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 literal 0 HcmV?d00001 diff --git a/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings b/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..659c876 --- /dev/null +++ b/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..a5446f1 --- /dev/null +++ b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,18 @@ + + + + + + + diff --git a/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme new file mode 100644 index 0000000..bbef1dc --- /dev/null +++ b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..7ce27f4 --- /dev/null +++ b/Mac/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Twittia.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8D15AC270486D014006FF6A4 + + primary + + + + + diff --git a/Mac/Tentia_Prefix.pch b/Mac/Tentia_Prefix.pch new file mode 100644 index 0000000..3eff51c --- /dev/null +++ b/Mac/Tentia_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Tentia' target in the 'Tentia' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Mac/TweetModel.h b/Mac/TweetModel.h new file mode 100644 index 0000000..51f08b9 --- /dev/null +++ b/Mac/TweetModel.h @@ -0,0 +1,22 @@ +// +// TweetModel.h +// Tentia +// +// Created by Jeena on 10.01.11. +// Copyright 2011 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface TweetModel : NSObject { + NSString *text; + NSString *inReplyTostatusId; + NSString *inReplyToEntity; +} + +@property (nonatomic, retain) NSString *text; +@property (nonatomic, retain) NSString *inReplyTostatusId; +@property (nonatomic, retain) NSString *inReplyToEntity; + +@end diff --git a/Mac/TweetModel.m b/Mac/TweetModel.m new file mode 100644 index 0000000..dc917ea --- /dev/null +++ b/Mac/TweetModel.m @@ -0,0 +1,23 @@ +// +// TweetModel.m +// Tentia +// +// Created by Jeena on 10.01.11. +// Copyright 2011 __MyCompanyName__. All rights reserved. +// + +#import "TweetModel.h" + + +@implementation TweetModel + +@synthesize text, inReplyTostatusId, inReplyToEntity; + +- (void)dealloc { + [text release]; + [inReplyTostatusId release]; + [inReplyToEntity release]; + [super dealloc]; +} + +@end diff --git a/Mac/ViewDelegate.h b/Mac/ViewDelegate.h new file mode 100644 index 0000000..8fc4f46 --- /dev/null +++ b/Mac/ViewDelegate.h @@ -0,0 +1,23 @@ +// +// ViewDelegate.h +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import +#import +#import "Constants.h" + +@interface ViewDelegate : NSObject { + WebView *timelineView; + WebView *mentionsView; + WebView *oauthView; +} + +@property (nonatomic, assign) WebView *timelineView; +@property (nonatomic, assign) WebView *mentionsView; +@property (nonatomic, assign) WebView *oauthView; + +@end diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m new file mode 100644 index 0000000..ad041fb --- /dev/null +++ b/Mac/ViewDelegate.m @@ -0,0 +1,84 @@ +// +// ViewDelegate.m +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import "ViewDelegate.h" + + +@implementation ViewDelegate + +@synthesize timelineView, mentionsView, oauthView; + +- (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message;{ + + if (![message isKindOfClass:[NSDictionary class]]) return; + + NSString *viewName = @"TimelineView"; + if (sender == mentionsView) viewName = @"MentionsView"; + if (sender == oauthView) viewName = @"OauthView"; + + NSLog(@"js<%@>: %@:%@: %@", + viewName, + [[message objectForKey:@"sourceURL"] lastPathComponent], + [message objectForKey:@"lineNumber"], + [message objectForKey:@"message"] + ); +} + +- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { + NSString *viewName = @"TimelineView"; + if (sender == mentionsView) viewName = @"MentionsView"; + if (sender == oauthView) viewName = @"OauthView"; + + NSLog(@"jsa<%@>: %@", viewName, message); +} + +- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener { + [listener ignore]; + [[NSWorkspace sharedWorkspace] openURL:[request URL]]; +} + +- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { + + if (sender == oauthView) { + + [oauthView stringByEvaluatingJavaScriptFromString:@"setTimeout( function() { tentia_oauth = new OauthImplementation(); }, 2);"]; + + } else { + + NSString *action = @"home_timeline"; + NSString *delay = @"1"; + + if (sender == mentionsView) { + action = @"mentions"; + delay = @"1000"; + } + + [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: + @"setTimeout(function(){ tentia_instance = new Core('%@'); \ + document.getElementsByTagName('body')[0].appendChild(tentia_instance.body); \ + setTimeout(function() { loadPlugin(controller.pluginURL()) }, 1); }, %@);", action, delay]]; + } +} + +- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems { + for (NSMenuItem*item in defaultMenuItems) { + if ([[item title] isEqualToString:@"Reload"]) { + [item setAction:@selector(reload:)]; + [item setTarget:self]; + } + } + + return defaultMenuItems; +} + +- (void)reload:(id)sender { + [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData();"]; + [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData();"]; +} + +@end diff --git a/Mac/WebKit/Constants.js b/Mac/WebKit/Constants.js new file mode 100644 index 0000000..179892e --- /dev/null +++ b/Mac/WebKit/Constants.js @@ -0,0 +1,21 @@ +// +// Constants.js +// Tentia +// +// Created by Jeena on 19.09.11. +// Licence: BSD (see attached LICENCE.txt file). +// + + +OAUTH_CONSUMER_KEY = "JPmU8KJhiBKfpohCiWLg" +OAUTH_CONSUMER_SECRET = "jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" +OAUTH_SIGNATURE_METHOD = "HMAC-SHA1" +OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" +OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" +OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" +OAUTH_SERVICE_NAME = "twitter.com" + +APP_NAME = "Tentia"; + +API_PATH = "http://api.twitter.com/1/"; +WEBSITE_PATH = "http://twitter.com/"; diff --git a/Mac/WebKit/ConversationView.js b/Mac/WebKit/ConversationView.js new file mode 100644 index 0000000..e69de29 diff --git a/Mac/WebKit/Core.js b/Mac/WebKit/Core.js new file mode 100644 index 0000000..475c32f --- /dev/null +++ b/Mac/WebKit/Core.js @@ -0,0 +1,457 @@ +// +// Core.js +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +function Core(action) { + this.max_length = 200; + // this.timeout = 2 * 60 * 1000; + this.timeout = 10 * 1000; // every 10 seconds + this.action = action; + this.getNewData(); + this.unread_mentions = 0; + this.since_id = null; + this.since_id_entity = null; + this.since_time = 0; + + this.body = document.createElement("ol"); + this.body.className = this.action; + this.cache = {}; + this.is_not_init = false; + + var _this = this; + setInterval(function() { _this.getNewData() }, this.timeout); +} + +Core.prototype.newStatus = function(status) { + + if(status != null && status.length > 0) { + for(var i = status.length-1, c=0; i>=c; --i) { + if(this.body.childNodes.length > 0) { + if(this.body.childNodes.length > this.max_length) { + this.body.removeChild(this.body.lastChild); + } + this.body.insertBefore(this.getItem(status[i]), this.body.firstChild); + } else { + this.body.appendChild(this.getItem(status[i])); + } + } + } + + if(this.action == "mentions" && this.is_not_init) { + this.unread_mentions += status.length; + controller.unreadMentions_(this.unread_mentions); + } + this.is_not_init = true; +} + +Core.prototype.logout = function() { + this.body.innerHTML = ""; +} + +Core.prototype.getItem = function(status) { + + var _this = this; + this.since_id = status.id; + this.since_id_entity = status.entity; + + var template = this.getTemplate(); + + template.reply_to.onclick = function() { + var mentions = []; + for (var i = 0; i < status.mentions.length; i++) { + var mention = status.mentions[i]; + if(mention.entity != controller.stringForKey_("entity")) + mentions.push(mention); + }; + replyTo(status.entity, status.id, mentions); + return false; + } + //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } + + template.username.innerText = status.entity; + template.username.href = status.entity; // FIXME open profile + + findProfileURL(status.entity, function(profile_url) { + if (profile_url) { + getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + template.username.title = template.username.innerText; + template.username.innerText = basic.name; + } + if(basic.avatar_url) { + template.image.onerror = function() { template.image.src = 'default-avatar.png' }; + template.image.src = basic.avatar_url; + } + } + }, null, false); // do not send auth-headers + } + }); + + template.in_reply.parentNode.className = "hidden"; + + template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); + findMentions(template.message, status.mentions); + + var time = document.createElement("abbr"); + time.innerText = ISODateString(new Date(status.published_at * 1000)); + time.title = time.innerText; + time.className = "timeago"; + $(time).timeago(); + template.ago.appendChild(time); + + // {"type":"Point","coordinates":[57.10803113,12.25854746]} + if (status.content && status.content.location && status.content.location.type == "Point") { + template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; + template.geo.style.display = ""; + } + + template.source.href = status.app.url; + template.source.innerHTML = status.app.name; + template.source.title = status.app.url; + + return template.item; +} + +Core.prototype.getTemplate = function() { + + if(this.template == "undefined") { + return jQuery.extend(true, {}, this.template); + } + + var a = document.createElement("a"); + + var item = document.createElement("li"); + + var reply_to = a.cloneNode(); + reply_to.className = "reply_to" + reply_to.innerText = " "; + reply_to.href = "#"; + item.appendChild(reply_to); + + var retweet = a.cloneNode(); + retweet.className = "retweet"; + retweet.innerText = " "; + retweet.href = "#"; + // item.appendChild(retweet); // FIXME + + + var image = document.createElement("img"); + image.className = "image"; + image.src = "default-avatar.png"; + image.onmousedown = function(e) { e.preventDefault(); }; + item.appendChild(image); + + var image_username = a.cloneNode(); + image.appendChild(image_username); + + var data = document.createElement("div"); + data.className = "data"; + item.appendChild(data); + + var head = document.createElement("h1"); + data.appendChild(head); + + var username = a.cloneNode(); + head.appendChild(username); + + var in_reply = document.createElement("span"); + in_reply.className = "reply"; + head.appendChild(in_reply); + + var space = document.createTextNode(" "); + head.appendChild(space); + + var geo = document.createElement("a"); + geo.style.display = "none"; + head.appendChild(geo); + + var pin = document.createElement("img"); + pin.src = "pin.png"; + pin.alt = "Map link"; + geo.appendChild(pin); + + var in_reply_text = document.createTextNode(" in reply to "); + in_reply.appendChild(in_reply_text) + + var in_reply_a = a.cloneNode(); + in_reply.appendChild(in_reply_a); + + var message = document.createElement("p"); + message.className = "message"; + data.appendChild(message); + + var images = document.createElement("p") + images.className = "images"; + data.appendChild(images); + + var date = message.cloneNode(); + date.className = "date"; + data.appendChild(date); + + var ago = a.cloneNode(); + date.appendChild(ago); + + var from = document.createTextNode(" from "); + date.appendChild(from) + + var source = document.createElement("a"); + source.className = "source"; + date.appendChild(source) + + this.template = { + item: item, + reply_to: reply_to, + retweet: retweet, + image: image, + username: username, + in_reply: in_reply_a, + message: message, + ago: ago, + source: source, + geo: geo, + images: images + } + + return jQuery.extend(true, {}, this.template); +} + +Core.prototype.getNewData = function() { + + var those = this; + var url = URI(mkApiRootPath("/posts")); + url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); + url.addSearch("limit", this.max_length); + if(this.since_id) { + url.addSearch("since_id", this.since_id); + url.addSearch("since_id_entity", this.since_id_entity); + } + + if (this.action == "mentions") { + url.addSearch("mentioned_entity", controller.stringForKey_("entity")); + } + + var http_method = "GET"; + var callback = function(resp) { + + try { + var json = JSON.parse(resp.responseText) + } catch (e) { + //alert(resp.responseText); + alert(url + " JSON parse error"); + throw e; + } + + those.newStatus(json); + } + + var data = null; + + if (controller.stringForKey_("user_access_token")) { + getURL(url.toString(), http_method, callback, data); // FIXME: error callback + } +} + + +Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { + + var _this = this; + + var url = URI(mkApiRootPath("/posts")); + + var http_method = "POST"; + var callback = function(data) { _this.getNewData(); } + + var data = { + "type": "https://tent.io/types/post/status/v0.1.0", + "published_at": (new Date().getTime() / 1000), + "permissions": { + "public": true + }, + "content": { + "text": content, + }, + }; + + var mentions = parseMentions(content, in_reply_to_status_id, in_reply_to_entity); + if (mentions.length > 0) { + data["mentions"] = mentions; + } + + getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback +} + +/* Helper functions */ + +function replaceURLWithHTMLLinks(text, entities, message_node) { + var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(exp, "$1"); +} + +function replaceUsernamesWithLinks(text, mentions) { + return text; // FIXME! + var username = /(^|\s)(\^)(\w+)/ig; + var hash = /(^|\s)(#)(\w+)/ig; + text = text.replace(username, "$1$2$3"); + return text.replace(hash, "$1$2$3"); +} + +function replyTo(entity, status_id, mentions) { + var string = "^" + entity.replace("https://", "") + " "; + for (var i = 0; i < mentions.length; i++) { + var e = mentions[i].entity.replace("https://", ""); + if(string.indexOf(e) == -1) string += "^" + e + " "; + } + controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); +} + +function loadPlugin(url) { + var plugin = document.createElement("script"); + plugin.type = "text/javascript"; + plugin.src = url; + document.getElementsByTagName("head")[0].appendChild(plugin); +} + +String.prototype.startsWith = function(prefix) { + return this.indexOf(prefix) === 0; +} + +String.prototype.endsWith = function(suffix) { + return this.match(suffix+"$") == suffix; +}; + +function getUrlVars(url) +{ + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} + +function replaceShortened(url, message_node) { + var api = "http://api.bitly.com"; + if(url.startsWith("http://j.mp/")) { + api = "http://api.j.mp"; + } + + var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key + + $.ajax({ + url: api_url, + success: function(data) { + var new_url = data.data.expand[0].long_url; + if (new_url) { + var regex = new RegExp(url, "g"); + message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); + } + }, + error:function (xhr, ajaxOptions, thrownError) { + alert(xhr.status); + alert(thrownError); + } + }); +} + +function findMentions(node, mentions) { + var text = node.innerHTML; + var mentions_in_text = []; + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var name = res[i]; + var e = name.substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + for (var j = 0; j < mentions.length; j++) { + var m = mentions[j]; + if(m.entity.startsWith(e)) { + mentions_in_text.push({ + entity: m.entity, + text: name + }); + } + } + } + } + + for (var i = 0; i < mentions_in_text.length; i++) { + var mention = mentions_in_text[i]; + + (function(mention) { // need this closure + findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + var new_text = node.innerHTML.replace( + mention.text, + "" + + basic.name + + "" + ); + node.innerHTML = new_text; + } + } + }, null, false); // do not send auth-headers + } + }); + })(mention); + } +} + +function parseMentions(text, post_id, entity) { + var mentions = []; + + if (post_id && entity) { + mentions.push({ + post: post_id, + entity: entity + }) + } + + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var e = res[i].substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + if (e != entity) { + mentions.push({entity:e}); + } + } + } + + return mentions; +} + +function ISODateString(d){ + function pad(n){return n<10 ? '0'+n : n} + return d.getUTCFullYear()+'-' + + pad(d.getUTCMonth()+1)+'-' + + pad(d.getUTCDate())+'T' + + pad(d.getUTCHours())+':' + + pad(d.getUTCMinutes())+':' + + pad(d.getUTCSeconds())+'Z' +} + +var tentia_instance; diff --git a/Mac/WebKit/OauthImplementation.js b/Mac/WebKit/OauthImplementation.js new file mode 100644 index 0000000..09e40bb --- /dev/null +++ b/Mac/WebKit/OauthImplementation.js @@ -0,0 +1,142 @@ +// +// OauthImplementation.js +// Tentia +// +// Created by Jeena on 19.09.11. +// Licence: BSD (see attached LICENCE.txt file). +// + +function getUrlVars(url) { + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} + +function OauthImplementation() { + this.app_info = { + "id": null, + "name": "Tentia", + "description": "A small TentStatus client.", + "url": "http://jabs.nu/Tentia/", + "icon": "http://jabs.nu/Tentia/icon.png", + "redirect_uris": [ + "tentia://oauthtoken" + ], + "scopes": { + "read_posts": "Uses posts to show them in a list", + "write_posts": "Posts on users behalf" + } + }; + this.register_data = null; + this.profile = null; + this.state = null; + + this.authenticate(); +} + +OauthImplementation.prototype.authenticate = function() { + this.entity = controller.stringForKey_("entity"); + this.requestProfileURL(this.entity); +} + +OauthImplementation.prototype.apiRoot = function() { + return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; +} + +OauthImplementation.prototype.requestProfileURL = function (entity) { + var those = this; + findProfileURL(entity, function(profile_url) { + those.register(profile_url); + }); +} + +OauthImplementation.prototype.register = function (url) { + var those = this; + getURL(url, "GET", function(resp) { + those.profile = JSON.parse(resp.responseText); + controller.setString_forKey_(those.apiRoot(), "api_root"); + var callback = function(resp) { + var data = JSON.parse(resp.responseText); + those.authRequest(data); + } + getURL(mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info)); + }); +} + +OauthImplementation.prototype.authRequest = function(register_data) { + // id + // mac_key_id + // mac_key + // mac_algorithm + this.register_data = register_data; + + // Needed for later App Registration Modification + controller.setString_forKey_(register_data["mac_key"], "app_mac_key"); + controller.setString_forKey_(register_data["mac_key_id"], "app_mac_key_id"); + controller.setString_forKey_(register_data["id"], "app_id"); + controller.setString_forKey_(register_data["mac_algorithm"], "app_mac_algorithm"); + + this.state = makeid(19); + var auth = "/oauth/authorize?client_id=" + register_data["id"] + + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) + + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") + + "&state=" + this.state + + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); + + controller.openURL_(this.apiRoot() + auth); +} + +OauthImplementation.prototype.requestAccessToken = function(responseBody) { + // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv + var urlVars = getUrlVars(responseBody); + if(this.state && this.state != "" && urlVars["state"] == this.state) { + + var url = mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; + + var requestBody = JSON.stringify({ + 'code' : urlVars["code"], + 'token_type' : "mac" + }); + + var those = this; + var http_method = "POST"; + var callback = function(resp) { + those.requestAccessTokenTicketFinished(resp.responseText); + }; + + var auth_header = makeAuthHeader( + url, + http_method, + controller.stringForKey_("app_mac_key"), + controller.stringForKey_("app_mac_key_id") + ); + + getURL(url, http_method, callback, requestBody, auth_header); + + } else { + alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") + } + + this.state = null; // reset the state +} + +OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) { + + var access = JSON.parse(responseBody); + + controller.setString_forKey_(access["access_token"], "user_access_token"); + controller.setString_forKey_(access["mac_key"], "user_mac_key"); + controller.setString_forKey_(access["mac_algorithm"], "user_mac_algorithm"); + controller.setString_forKey_(access["token_type"], "user_token_type"); + + controller.loggedIn(); +} + +var tentia_oauth; \ No newline at end of file diff --git a/Mac/WebKit/TimelineView.js b/Mac/WebKit/TimelineView.js new file mode 100644 index 0000000..e69de29 diff --git a/Mac/WebKit/URI.min.js b/Mac/WebKit/URI.min.js new file mode 100644 index 0000000..80b30f0 --- /dev/null +++ b/Mac/WebKit/URI.min.js @@ -0,0 +1,70 @@ +/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */ +/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */ +(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;if;f++)if("0"===j[0]&&1f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e, +c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(qw(y/q)&&j("overflow");d*= +q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;tl&&q.push(z(l));for((d=g=q.length)&&q.push(B);d=b&&lw((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;ty&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h +l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)", +"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this); +(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg", +bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro", +eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org", +"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan", +kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org", +mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org", +pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org", +sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school", +pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk", +rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or", +ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc", +us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)}, +is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})(); +(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a=== +d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; +c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent}; +c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}}; +c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;bc)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+ +a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()}; +m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]}; +q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null, +query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname), +b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null}; +var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this, +a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b); +return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0, +e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length- +this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return""; +var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$"); +this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length; +e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1)); +a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k= +a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g: +g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query= +c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()}; +f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&& +this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0, +f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery; +f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname), +a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;gg2tvScP?iPwb@Tx;rZ?YAS+2AY~Gf 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 literal 0 HcmV?d00001 diff --git a/Mac/WebKit/enc-base64-min.js b/Mac/WebKit/enc-base64-min.js new file mode 100644 index 0000000..acff43d --- /dev/null +++ b/Mac/WebKit/enc-base64-min.js @@ -0,0 +1,8 @@ +/* +CryptoJS v3.0.2 +code.google.com/p/crypto-js +(c) 2009-2012 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); +for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/Mac/WebKit/even-bg.png b/Mac/WebKit/even-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3166a2bb0d7818f7146ecd056d63f3479cad85fc GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3<=Wa({UTT+KPA0aYq{x;TbZ+)7GFOkm?sU~_9=NJ>b5z`|j`#>N)L#>b|{X2!s{ok5SW SusR#4oWax8&t;ucLK6U`6Fn^e literal 0 HcmV?d00001 diff --git a/Mac/WebKit/hmac-helper.js b/Mac/WebKit/hmac-helper.js new file mode 100644 index 0000000..f3ad041 --- /dev/null +++ b/Mac/WebKit/hmac-helper.js @@ -0,0 +1,122 @@ +// its different for app authentication and user authentication: +// for apps its id: mac_key_id and secret: mac_key, +// for users its id: access_token and secret:mac_key + +function getURL(url, http_method, callback, data, auth_header) { + $.ajax({ + beforeSend: function(xhr) { + if (data) xhr.setRequestHeader("Content-Length", data.length); + + if (auth_header) { // if is_set? auth_header + xhr.setRequestHeader("Authorization", auth_header); + } else { + var user_access_token = controller.stringForKey_("user_access_token"); + if (auth_header !== false && user_access_token) { + auth_header = makeAuthHeader( + url, + http_method, + controller.stringForKey_("user_mac_key"), + user_access_token + ) + xhr.setRequestHeader("Authorization", auth_header); + } + } + }, + url: url, + accepts: "application/vnd.tent.v0+json", + contentType: "application/vnd.tent.v0+json", + type: http_method, + complete: callback, + data: data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); + } + }); +} + +function makeAuthHeader(url, http_method, mac_key, mac_key_id) { + + url = URI(url); + var nonce = makeid(8); + var time_stamp = parseInt((new Date).getTime() / 1000, 10); + + var port = url.port(); + if (!port) { + port = url.protocol() == "https" ? "443" : "80"; + } + + var normalizedRequestString = "" + + time_stamp + '\n' + + nonce + '\n' + + http_method + '\n' + + url.path() + url.search() + url.hash() + '\n' + + url.hostname() + '\n' + + port + '\n' + + '\n' ; + + var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); + hmac.update(normalizedRequestString); + var hash = hmac.finalize(); + var mac = hash.toString(CryptoJS.enc.Base64); + + return 'MAC id="' + mac_key_id + + '", ts="' + time_stamp + + '", nonce="' + nonce + + '", mac="' + mac + '"'; +} + +function makeid(len) { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + for( var i=0; i < len; i++ ) + text += possible.charAt(Math.floor(Math.random() * possible.length)); + + return text; +} + +function findProfileURL(entity, callback) { + $.ajax({ + url: entity, + type: "HEAD", + complete: function(resp) { + if(resp) { + var headers = resp.getAllResponseHeaders(); + var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! + var ret = headers.match(regex); + var profile_url = null; + if(ret && ret.length > 1) { + var profile_url = ret[1]; + if (profile_url == "/profile") { + profile_url = entity + "/profile"; + } + } + + if (profile_url) { + callback(profile_url); + } + } + }, + error: function(xhr, ajaxOptions, thrownError) { + alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); + } + }); +} + +function mkApiRootPath(path) { + var api_root = controller.stringForKey_("api_root"); + if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { + api_root += "/"; + } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { + api_root = api_root.substring(0, api_root.length -1); + } + return api_root + path; +} + +function debug(string) { + if (typeof string == "Object") { + string = JSON.stirngify(string); + } + alert("DEBUG: " + string); +} \ No newline at end of file diff --git a/Mac/WebKit/hmac-sha256.js b/Mac/WebKit/hmac-sha256.js new file mode 100644 index 0000000..a143d84 --- /dev/null +++ b/Mac/WebKit/hmac-sha256.js @@ -0,0 +1,17 @@ +/* +CryptoJS v3.0.2 +code.google.com/p/crypto-js +(c) 2009-2012 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a= +this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= +l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b= +a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create(); +this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;fg;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64> +n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes, +g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); +(function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b + + + Tentia + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Mac/WebKit/index_oauth.html b/Mac/WebKit/index_oauth.html new file mode 100644 index 0000000..ccdb02c --- /dev/null +++ b/Mac/WebKit/index_oauth.html @@ -0,0 +1,16 @@ + + + + Tentia + + + + + + + + + + + + \ No newline at end of file diff --git a/Mac/WebKit/jQuery-Plugins.js b/Mac/WebKit/jQuery-Plugins.js new file mode 100644 index 0000000..c865d25 --- /dev/null +++ b/Mac/WebKit/jQuery-Plugins.js @@ -0,0 +1,330 @@ + +(function ($) { + $.format = (function () { + + var parseMonth = function(value){ + + switch(value){ + case "Jan": + return "01"; + break; + case "Feb": + return "02"; + break; + case "Mar": + return "03"; + break; + case "Apr": + return "04"; + break; + case "May": + return "05"; + break; + case "Jun": + return "06"; + break; + case "Jul": + return "07"; + break; + case "Aug": + return "08"; + break; + case "Sep": + return "09"; + break; + case "Oct": + return "10"; + break; + case "Nov": + return "11"; + break; + case "Dec": + return "12"; + break; + default: + return value; + } + }; + + var parseTime = function(value){ + var retValue = value; + if(retValue.indexOf(".") != -1){ + retValue = retValue.substring(0, retValue.indexOf(".")); + } + + var values3 = retValue.split(":"); + + if(values3.length == 3){ + hour = values3[0]; + minute = values3[1]; + second = values3[2]; + + return { + time: retValue, + hour: hour, + minute: minute, + second: second + }; + } else { + return { + time: "", + hour: "", + minute: "", + second: "" + }; + } + }; + + return { + date: function(value, format){ + //value = new java.util.Date() + //2009-12-18 10:54:50.546 + try{ + var values = value.split(" "); + var year = null; + var month = null; + var dayOfMonth = null; + var time = null; //json, time, hour, minute, second + + switch(values.length){ + case 6://Wed Jan 13 10:43:41 CET 2010 + year = values[5]; + month = parseMonth(values[1]); + dayOfMonth = values[2]; + time = parseTime(values[3]); + break; + case 2://2009-12-18 10:54:50.546 + var values2 = values[0].split("-"); + year = values2[0]; + month = values2[1]; + dayOfMonth = values2[2]; + time = parseTime(values[1]); + break; + default: + return value; + } + + + var pattern = ""; + var retValue = ""; + + for(i = 0; i < format.length; i++){ + var currentPattern = format.charAt(i); + pattern += currentPattern; + switch(pattern){ + case "dd": + retValue += dayOfMonth; + pattern = ""; + break; + case "MM": + retValue += month; + pattern = ""; + break; + case "yyyy": + retValue += year; + pattern = ""; + break; + case "HH": + retValue += time.hour; + pattern = ""; + break; + case "hh": + retValue += time.hour; + pattern = ""; + break; + case "mm": + retValue += time.minute; + pattern = ""; + break; + case "ss": + retValue += time.second; + pattern = ""; + break; + case " ": + retValue += currentPattern; + pattern = ""; + break; + case "/": + retValue += currentPattern; + pattern = ""; + break; + case ":": + retValue += currentPattern; + pattern = ""; + break; + default: + if(pattern.length == 2 && pattern.indexOf("y") != 0){ + retValue += pattern.substring(0, 1); + pattern = pattern.substring(1, 2); + } else if((pattern.length == 3 && pattern.indexOf("yyy") == -1)){ + pattern = ""; + } + } + } + return retValue; + } catch(e) { + return value; + } + } + }; + })(); +}(jQuery)); + + +$(document).ready(function() { + $(".shortDateFormat").each(function(idx, elem) { + if ($(elem).is(":input")){ + $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy')); + } else { + $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy')); + } + }); + $(".longDateFormat").each(function(idx, elem) { + if ($(elem).is(":input")){ + $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy hh:mm:ss')); + } else { + $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy hh:mm:ss')); + } + }); +}); + +/* + * timeago: a jQuery plugin, version: 0.8.2 (2010-02-16) + * @requires jQuery v1.2.3 or later + * + * Timeago is a jQuery plugin that makes it easy to support automatically + * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). + * + * For usage and examples, visit: + * http://timeago.yarp.com/ + * + * Licensed under the MIT: + * http://www.opensource.org/licenses/mit-license.php + * + * Copyright (c) 2008-2010, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org) + */ +(function($) { + $.timeago = function(timestamp) { + if (timestamp instanceof Date) return inWords(timestamp); + else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp)); + else return inWords($.timeago.datetime(timestamp)); + }; + var $t = $.timeago; + + $.extend($.timeago, { + settings: { + refreshMillis: 60000, + allowFuture: false, + strings: { + prefixAgo: null, + prefixFromNow: null, + suffixAgo: "ago", + suffixFromNow: "from now", + ago: null, // DEPRECATED, use suffixAgo + fromNow: null, // DEPRECATED, use suffixFromNow + seconds: "less than a minute", + minute: "about a minute", + minutes: "%d minutes", + hour: "about an hour", + hours: "about %d hours", + day: "a day", + days: "%d days", + month: "about a month", + months: "%d months", + year: "about a year", + years: "%d years" + } + }, + inWords: function(distanceMillis) { + var $l = this.settings.strings; + var prefix = $l.prefixAgo; + var suffix = $l.suffixAgo || $l.ago; + if (this.settings.allowFuture) { + if (distanceMillis < 0) { + prefix = $l.prefixFromNow; + suffix = $l.suffixFromNow || $l.fromNow; + } + distanceMillis = Math.abs(distanceMillis); + } + + var seconds = distanceMillis / 1000; + var minutes = seconds / 60; + var hours = minutes / 60; + var days = hours / 24; + var years = days / 365; + + var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || + seconds < 90 && substitute($l.minute, 1) || + minutes < 45 && substitute($l.minutes, Math.round(minutes)) || + minutes < 90 && substitute($l.hour, 1) || + hours < 24 && substitute($l.hours, Math.round(hours)) || + hours < 48 && substitute($l.day, 1) || + days < 30 && substitute($l.days, Math.floor(days)) || + days < 60 && substitute($l.month, 1) || + days < 365 && substitute($l.months, Math.floor(days / 30)) || + years < 2 && substitute($l.year, 1) || + substitute($l.years, Math.floor(years)); + + return $.trim([prefix, words, suffix].join(" ")); + }, + parse: function(iso8601) { + var s = $.trim(iso8601); + s = s.replace(/-/,"/").replace(/-/,"/"); + s = s.replace(/T/," ").replace(/Z/," UTC"); + s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 + return new Date(s); + }, + datetime: function(elem) { + // jQuery's `is()` doesn't play well with HTML5 in IE + var isTime = $(elem).get(0).tagName.toLowerCase() == "time"; // $(elem).is("time"); + var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title"); + return $t.parse(iso8601); + } + }); + + $.fn.timeago = function() { + var self = this; + self.each(refresh); + + var $s = $t.settings; + if ($s.refreshMillis > 0) { + setInterval(function() { self.each(refresh); }, $s.refreshMillis); + } + return self; + }; + + function refresh() { + var data = prepareData(this); + if (!isNaN(data.datetime)) { + $(this).text(inWords(data.datetime)); + } + return this; + } + + function prepareData(element) { + element = $(element); + if (!element.data("timeago")) { + element.data("timeago", { datetime: $t.datetime(element) }); + var text = $.trim(element.text()); + if (text.length > 0) element.attr("title", text); + } + return element.data("timeago"); + } + + function inWords(date) { + return $t.inWords(distance(date)); + } + + function distance(date) { + return (new Date().getTime() - date.getTime()); + } + + function substitute(stringOrFunction, value) { + var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction; + return string.replace(/%d/i, value); + } + + // fix for IE6 suckage + document.createElement("abbr"); + document.createElement("time"); +})(jQuery); diff --git a/Mac/WebKit/jQuery.js b/Mac/WebKit/jQuery.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/Mac/WebKit/jQuery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(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,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/Mac/WebKit/odd-bg.png b/Mac/WebKit/odd-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b822a14df86acfd140737763565850c86d370e95 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrE!3<<`t^?=KfZqb`svfBpFe+o`}Xa_hYxSxzWx6F z`%|K;}o-U3d6}OTS5)&9W6xh@n7?K_&BrtOru(`2?v8AzesB&c_Z3QZ3 N@O1TaS?83{1ORvxJVO8g literal 0 HcmV?d00001 diff --git a/Mac/WebKit/pin.png b/Mac/WebKit/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..32ce008232e849db86e1911ce8d2a5aee8261ea4 GIT binary patch literal 630 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 z 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 literal 0 HcmV?d00001 diff --git a/Mac/main.m b/Mac/main.m new file mode 100644 index 0000000..951da87 --- /dev/null +++ b/Mac/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Tentia +// +// Created by Jeena on 16.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +} diff --git a/WebKit/Constants.js b/WebKit/Constants.js new file mode 100644 index 0000000..179892e --- /dev/null +++ b/WebKit/Constants.js @@ -0,0 +1,21 @@ +// +// Constants.js +// Tentia +// +// Created by Jeena on 19.09.11. +// Licence: BSD (see attached LICENCE.txt file). +// + + +OAUTH_CONSUMER_KEY = "JPmU8KJhiBKfpohCiWLg" +OAUTH_CONSUMER_SECRET = "jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" +OAUTH_SIGNATURE_METHOD = "HMAC-SHA1" +OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" +OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" +OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" +OAUTH_SERVICE_NAME = "twitter.com" + +APP_NAME = "Tentia"; + +API_PATH = "http://api.twitter.com/1/"; +WEBSITE_PATH = "http://twitter.com/"; diff --git a/WebKit/ConversationView.js b/WebKit/ConversationView.js new file mode 100644 index 0000000..e69de29 diff --git a/WebKit/Core.js b/WebKit/Core.js new file mode 100644 index 0000000..475c32f --- /dev/null +++ b/WebKit/Core.js @@ -0,0 +1,457 @@ +// +// Core.js +// Tentia +// +// Created by Jeena on 15.04.10. +// Licence: BSD (see attached LICENCE.txt file). +// + +function Core(action) { + this.max_length = 200; + // this.timeout = 2 * 60 * 1000; + this.timeout = 10 * 1000; // every 10 seconds + this.action = action; + this.getNewData(); + this.unread_mentions = 0; + this.since_id = null; + this.since_id_entity = null; + this.since_time = 0; + + this.body = document.createElement("ol"); + this.body.className = this.action; + this.cache = {}; + this.is_not_init = false; + + var _this = this; + setInterval(function() { _this.getNewData() }, this.timeout); +} + +Core.prototype.newStatus = function(status) { + + if(status != null && status.length > 0) { + for(var i = status.length-1, c=0; i>=c; --i) { + if(this.body.childNodes.length > 0) { + if(this.body.childNodes.length > this.max_length) { + this.body.removeChild(this.body.lastChild); + } + this.body.insertBefore(this.getItem(status[i]), this.body.firstChild); + } else { + this.body.appendChild(this.getItem(status[i])); + } + } + } + + if(this.action == "mentions" && this.is_not_init) { + this.unread_mentions += status.length; + controller.unreadMentions_(this.unread_mentions); + } + this.is_not_init = true; +} + +Core.prototype.logout = function() { + this.body.innerHTML = ""; +} + +Core.prototype.getItem = function(status) { + + var _this = this; + this.since_id = status.id; + this.since_id_entity = status.entity; + + var template = this.getTemplate(); + + template.reply_to.onclick = function() { + var mentions = []; + for (var i = 0; i < status.mentions.length; i++) { + var mention = status.mentions[i]; + if(mention.entity != controller.stringForKey_("entity")) + mentions.push(mention); + }; + replyTo(status.entity, status.id, mentions); + return false; + } + //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } + + template.username.innerText = status.entity; + template.username.href = status.entity; // FIXME open profile + + findProfileURL(status.entity, function(profile_url) { + if (profile_url) { + getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + template.username.title = template.username.innerText; + template.username.innerText = basic.name; + } + if(basic.avatar_url) { + template.image.onerror = function() { template.image.src = 'default-avatar.png' }; + template.image.src = basic.avatar_url; + } + } + }, null, false); // do not send auth-headers + } + }); + + template.in_reply.parentNode.className = "hidden"; + + template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); + findMentions(template.message, status.mentions); + + var time = document.createElement("abbr"); + time.innerText = ISODateString(new Date(status.published_at * 1000)); + time.title = time.innerText; + time.className = "timeago"; + $(time).timeago(); + template.ago.appendChild(time); + + // {"type":"Point","coordinates":[57.10803113,12.25854746]} + if (status.content && status.content.location && status.content.location.type == "Point") { + template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; + template.geo.style.display = ""; + } + + template.source.href = status.app.url; + template.source.innerHTML = status.app.name; + template.source.title = status.app.url; + + return template.item; +} + +Core.prototype.getTemplate = function() { + + if(this.template == "undefined") { + return jQuery.extend(true, {}, this.template); + } + + var a = document.createElement("a"); + + var item = document.createElement("li"); + + var reply_to = a.cloneNode(); + reply_to.className = "reply_to" + reply_to.innerText = " "; + reply_to.href = "#"; + item.appendChild(reply_to); + + var retweet = a.cloneNode(); + retweet.className = "retweet"; + retweet.innerText = " "; + retweet.href = "#"; + // item.appendChild(retweet); // FIXME + + + var image = document.createElement("img"); + image.className = "image"; + image.src = "default-avatar.png"; + image.onmousedown = function(e) { e.preventDefault(); }; + item.appendChild(image); + + var image_username = a.cloneNode(); + image.appendChild(image_username); + + var data = document.createElement("div"); + data.className = "data"; + item.appendChild(data); + + var head = document.createElement("h1"); + data.appendChild(head); + + var username = a.cloneNode(); + head.appendChild(username); + + var in_reply = document.createElement("span"); + in_reply.className = "reply"; + head.appendChild(in_reply); + + var space = document.createTextNode(" "); + head.appendChild(space); + + var geo = document.createElement("a"); + geo.style.display = "none"; + head.appendChild(geo); + + var pin = document.createElement("img"); + pin.src = "pin.png"; + pin.alt = "Map link"; + geo.appendChild(pin); + + var in_reply_text = document.createTextNode(" in reply to "); + in_reply.appendChild(in_reply_text) + + var in_reply_a = a.cloneNode(); + in_reply.appendChild(in_reply_a); + + var message = document.createElement("p"); + message.className = "message"; + data.appendChild(message); + + var images = document.createElement("p") + images.className = "images"; + data.appendChild(images); + + var date = message.cloneNode(); + date.className = "date"; + data.appendChild(date); + + var ago = a.cloneNode(); + date.appendChild(ago); + + var from = document.createTextNode(" from "); + date.appendChild(from) + + var source = document.createElement("a"); + source.className = "source"; + date.appendChild(source) + + this.template = { + item: item, + reply_to: reply_to, + retweet: retweet, + image: image, + username: username, + in_reply: in_reply_a, + message: message, + ago: ago, + source: source, + geo: geo, + images: images + } + + return jQuery.extend(true, {}, this.template); +} + +Core.prototype.getNewData = function() { + + var those = this; + var url = URI(mkApiRootPath("/posts")); + url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); + url.addSearch("limit", this.max_length); + if(this.since_id) { + url.addSearch("since_id", this.since_id); + url.addSearch("since_id_entity", this.since_id_entity); + } + + if (this.action == "mentions") { + url.addSearch("mentioned_entity", controller.stringForKey_("entity")); + } + + var http_method = "GET"; + var callback = function(resp) { + + try { + var json = JSON.parse(resp.responseText) + } catch (e) { + //alert(resp.responseText); + alert(url + " JSON parse error"); + throw e; + } + + those.newStatus(json); + } + + var data = null; + + if (controller.stringForKey_("user_access_token")) { + getURL(url.toString(), http_method, callback, data); // FIXME: error callback + } +} + + +Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { + + var _this = this; + + var url = URI(mkApiRootPath("/posts")); + + var http_method = "POST"; + var callback = function(data) { _this.getNewData(); } + + var data = { + "type": "https://tent.io/types/post/status/v0.1.0", + "published_at": (new Date().getTime() / 1000), + "permissions": { + "public": true + }, + "content": { + "text": content, + }, + }; + + var mentions = parseMentions(content, in_reply_to_status_id, in_reply_to_entity); + if (mentions.length > 0) { + data["mentions"] = mentions; + } + + getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback +} + +/* Helper functions */ + +function replaceURLWithHTMLLinks(text, entities, message_node) { + var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(exp, "$1"); +} + +function replaceUsernamesWithLinks(text, mentions) { + return text; // FIXME! + var username = /(^|\s)(\^)(\w+)/ig; + var hash = /(^|\s)(#)(\w+)/ig; + text = text.replace(username, "$1$2$3"); + return text.replace(hash, "$1$2$3"); +} + +function replyTo(entity, status_id, mentions) { + var string = "^" + entity.replace("https://", "") + " "; + for (var i = 0; i < mentions.length; i++) { + var e = mentions[i].entity.replace("https://", ""); + if(string.indexOf(e) == -1) string += "^" + e + " "; + } + controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); +} + +function loadPlugin(url) { + var plugin = document.createElement("script"); + plugin.type = "text/javascript"; + plugin.src = url; + document.getElementsByTagName("head")[0].appendChild(plugin); +} + +String.prototype.startsWith = function(prefix) { + return this.indexOf(prefix) === 0; +} + +String.prototype.endsWith = function(suffix) { + return this.match(suffix+"$") == suffix; +}; + +function getUrlVars(url) +{ + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} + +function replaceShortened(url, message_node) { + var api = "http://api.bitly.com"; + if(url.startsWith("http://j.mp/")) { + api = "http://api.j.mp"; + } + + var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key + + $.ajax({ + url: api_url, + success: function(data) { + var new_url = data.data.expand[0].long_url; + if (new_url) { + var regex = new RegExp(url, "g"); + message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); + } + }, + error:function (xhr, ajaxOptions, thrownError) { + alert(xhr.status); + alert(thrownError); + } + }); +} + +function findMentions(node, mentions) { + var text = node.innerHTML; + var mentions_in_text = []; + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var name = res[i]; + var e = name.substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + for (var j = 0; j < mentions.length; j++) { + var m = mentions[j]; + if(m.entity.startsWith(e)) { + mentions_in_text.push({ + entity: m.entity, + text: name + }); + } + } + } + } + + for (var i = 0; i < mentions_in_text.length; i++) { + var mention = mentions_in_text[i]; + + (function(mention) { // need this closure + findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + var new_text = node.innerHTML.replace( + mention.text, + "" + + basic.name + + "" + ); + node.innerHTML = new_text; + } + } + }, null, false); // do not send auth-headers + } + }); + })(mention); + } +} + +function parseMentions(text, post_id, entity) { + var mentions = []; + + if (post_id && entity) { + mentions.push({ + post: post_id, + entity: entity + }) + } + + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var e = res[i].substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + if (e != entity) { + mentions.push({entity:e}); + } + } + } + + return mentions; +} + +function ISODateString(d){ + function pad(n){return n<10 ? '0'+n : n} + return d.getUTCFullYear()+'-' + + pad(d.getUTCMonth()+1)+'-' + + pad(d.getUTCDate())+'T' + + pad(d.getUTCHours())+':' + + pad(d.getUTCMinutes())+':' + + pad(d.getUTCSeconds())+'Z' +} + +var tentia_instance; diff --git a/WebKit/OauthImplementation.js b/WebKit/OauthImplementation.js new file mode 100644 index 0000000..09e40bb --- /dev/null +++ b/WebKit/OauthImplementation.js @@ -0,0 +1,142 @@ +// +// OauthImplementation.js +// Tentia +// +// Created by Jeena on 19.09.11. +// Licence: BSD (see attached LICENCE.txt file). +// + +function getUrlVars(url) { + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} + +function OauthImplementation() { + this.app_info = { + "id": null, + "name": "Tentia", + "description": "A small TentStatus client.", + "url": "http://jabs.nu/Tentia/", + "icon": "http://jabs.nu/Tentia/icon.png", + "redirect_uris": [ + "tentia://oauthtoken" + ], + "scopes": { + "read_posts": "Uses posts to show them in a list", + "write_posts": "Posts on users behalf" + } + }; + this.register_data = null; + this.profile = null; + this.state = null; + + this.authenticate(); +} + +OauthImplementation.prototype.authenticate = function() { + this.entity = controller.stringForKey_("entity"); + this.requestProfileURL(this.entity); +} + +OauthImplementation.prototype.apiRoot = function() { + return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; +} + +OauthImplementation.prototype.requestProfileURL = function (entity) { + var those = this; + findProfileURL(entity, function(profile_url) { + those.register(profile_url); + }); +} + +OauthImplementation.prototype.register = function (url) { + var those = this; + getURL(url, "GET", function(resp) { + those.profile = JSON.parse(resp.responseText); + controller.setString_forKey_(those.apiRoot(), "api_root"); + var callback = function(resp) { + var data = JSON.parse(resp.responseText); + those.authRequest(data); + } + getURL(mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info)); + }); +} + +OauthImplementation.prototype.authRequest = function(register_data) { + // id + // mac_key_id + // mac_key + // mac_algorithm + this.register_data = register_data; + + // Needed for later App Registration Modification + controller.setString_forKey_(register_data["mac_key"], "app_mac_key"); + controller.setString_forKey_(register_data["mac_key_id"], "app_mac_key_id"); + controller.setString_forKey_(register_data["id"], "app_id"); + controller.setString_forKey_(register_data["mac_algorithm"], "app_mac_algorithm"); + + this.state = makeid(19); + var auth = "/oauth/authorize?client_id=" + register_data["id"] + + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) + + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") + + "&state=" + this.state + + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); + + controller.openURL_(this.apiRoot() + auth); +} + +OauthImplementation.prototype.requestAccessToken = function(responseBody) { + // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv + var urlVars = getUrlVars(responseBody); + if(this.state && this.state != "" && urlVars["state"] == this.state) { + + var url = mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; + + var requestBody = JSON.stringify({ + 'code' : urlVars["code"], + 'token_type' : "mac" + }); + + var those = this; + var http_method = "POST"; + var callback = function(resp) { + those.requestAccessTokenTicketFinished(resp.responseText); + }; + + var auth_header = makeAuthHeader( + url, + http_method, + controller.stringForKey_("app_mac_key"), + controller.stringForKey_("app_mac_key_id") + ); + + getURL(url, http_method, callback, requestBody, auth_header); + + } else { + alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") + } + + this.state = null; // reset the state +} + +OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) { + + var access = JSON.parse(responseBody); + + controller.setString_forKey_(access["access_token"], "user_access_token"); + controller.setString_forKey_(access["mac_key"], "user_mac_key"); + controller.setString_forKey_(access["mac_algorithm"], "user_mac_algorithm"); + controller.setString_forKey_(access["token_type"], "user_token_type"); + + controller.loggedIn(); +} + +var tentia_oauth; \ No newline at end of file diff --git a/WebKit/TimelineView.js b/WebKit/TimelineView.js new file mode 100644 index 0000000..e69de29 diff --git a/WebKit/URI.min.js b/WebKit/URI.min.js new file mode 100644 index 0000000..80b30f0 --- /dev/null +++ b/WebKit/URI.min.js @@ -0,0 +1,70 @@ +/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */ +/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */ +(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;if;f++)if("0"===j[0]&&1f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e, +c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(qw(y/q)&&j("overflow");d*= +q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;tl&&q.push(z(l));for((d=g=q.length)&&q.push(B);d=b&&lw((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;ty&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h +l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)", +"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this); +(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg", +bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro", +eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org", +"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan", +kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org", +mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org", +pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org", +sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school", +pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk", +rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or", +ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc", +us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)}, +is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})(); +(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a=== +d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; +c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent}; +c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}}; +c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;bc)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+ +a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()}; +m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]}; +q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null, +query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname), +b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null}; +var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this, +a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b); +return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0, +e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length- +this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return""; +var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$"); +this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length; +e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1)); +a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k= +a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g: +g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query= +c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()}; +f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&& +this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0, +f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery; +f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname), +a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;gg2tvScP?iPwb@Tx;rZ?YAS+2AY~Gf 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 literal 0 HcmV?d00001 diff --git a/WebKit/enc-base64-min.js b/WebKit/enc-base64-min.js new file mode 100644 index 0000000..acff43d --- /dev/null +++ b/WebKit/enc-base64-min.js @@ -0,0 +1,8 @@ +/* +CryptoJS v3.0.2 +code.google.com/p/crypto-js +(c) 2009-2012 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); +for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/WebKit/even-bg.png b/WebKit/even-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3166a2bb0d7818f7146ecd056d63f3479cad85fc GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3<=Wa({UTT+KPA0aYq{x;TbZ+)7GFOkm?sU~_9=NJ>b5z`|j`#>N)L#>b|{X2!s{ok5SW SusR#4oWax8&t;ucLK6U`6Fn^e literal 0 HcmV?d00001 diff --git a/WebKit/hmac-helper.js b/WebKit/hmac-helper.js new file mode 100644 index 0000000..f3ad041 --- /dev/null +++ b/WebKit/hmac-helper.js @@ -0,0 +1,122 @@ +// its different for app authentication and user authentication: +// for apps its id: mac_key_id and secret: mac_key, +// for users its id: access_token and secret:mac_key + +function getURL(url, http_method, callback, data, auth_header) { + $.ajax({ + beforeSend: function(xhr) { + if (data) xhr.setRequestHeader("Content-Length", data.length); + + if (auth_header) { // if is_set? auth_header + xhr.setRequestHeader("Authorization", auth_header); + } else { + var user_access_token = controller.stringForKey_("user_access_token"); + if (auth_header !== false && user_access_token) { + auth_header = makeAuthHeader( + url, + http_method, + controller.stringForKey_("user_mac_key"), + user_access_token + ) + xhr.setRequestHeader("Authorization", auth_header); + } + } + }, + url: url, + accepts: "application/vnd.tent.v0+json", + contentType: "application/vnd.tent.v0+json", + type: http_method, + complete: callback, + data: data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); + } + }); +} + +function makeAuthHeader(url, http_method, mac_key, mac_key_id) { + + url = URI(url); + var nonce = makeid(8); + var time_stamp = parseInt((new Date).getTime() / 1000, 10); + + var port = url.port(); + if (!port) { + port = url.protocol() == "https" ? "443" : "80"; + } + + var normalizedRequestString = "" + + time_stamp + '\n' + + nonce + '\n' + + http_method + '\n' + + url.path() + url.search() + url.hash() + '\n' + + url.hostname() + '\n' + + port + '\n' + + '\n' ; + + var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); + hmac.update(normalizedRequestString); + var hash = hmac.finalize(); + var mac = hash.toString(CryptoJS.enc.Base64); + + return 'MAC id="' + mac_key_id + + '", ts="' + time_stamp + + '", nonce="' + nonce + + '", mac="' + mac + '"'; +} + +function makeid(len) { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + for( var i=0; i < len; i++ ) + text += possible.charAt(Math.floor(Math.random() * possible.length)); + + return text; +} + +function findProfileURL(entity, callback) { + $.ajax({ + url: entity, + type: "HEAD", + complete: function(resp) { + if(resp) { + var headers = resp.getAllResponseHeaders(); + var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! + var ret = headers.match(regex); + var profile_url = null; + if(ret && ret.length > 1) { + var profile_url = ret[1]; + if (profile_url == "/profile") { + profile_url = entity + "/profile"; + } + } + + if (profile_url) { + callback(profile_url); + } + } + }, + error: function(xhr, ajaxOptions, thrownError) { + alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); + } + }); +} + +function mkApiRootPath(path) { + var api_root = controller.stringForKey_("api_root"); + if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { + api_root += "/"; + } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { + api_root = api_root.substring(0, api_root.length -1); + } + return api_root + path; +} + +function debug(string) { + if (typeof string == "Object") { + string = JSON.stirngify(string); + } + alert("DEBUG: " + string); +} \ No newline at end of file diff --git a/WebKit/hmac-sha256.js b/WebKit/hmac-sha256.js new file mode 100644 index 0000000..a143d84 --- /dev/null +++ b/WebKit/hmac-sha256.js @@ -0,0 +1,17 @@ +/* +CryptoJS v3.0.2 +code.google.com/p/crypto-js +(c) 2009-2012 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a= +this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= +l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b= +a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create(); +this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;fg;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64> +n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes, +g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); +(function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b + + + Tentia + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WebKit/index_oauth.html b/WebKit/index_oauth.html new file mode 100644 index 0000000..ccdb02c --- /dev/null +++ b/WebKit/index_oauth.html @@ -0,0 +1,16 @@ + + + + Tentia + + + + + + + + + + + + \ No newline at end of file diff --git a/WebKit/jQuery-Plugins.js b/WebKit/jQuery-Plugins.js new file mode 100644 index 0000000..c865d25 --- /dev/null +++ b/WebKit/jQuery-Plugins.js @@ -0,0 +1,330 @@ + +(function ($) { + $.format = (function () { + + var parseMonth = function(value){ + + switch(value){ + case "Jan": + return "01"; + break; + case "Feb": + return "02"; + break; + case "Mar": + return "03"; + break; + case "Apr": + return "04"; + break; + case "May": + return "05"; + break; + case "Jun": + return "06"; + break; + case "Jul": + return "07"; + break; + case "Aug": + return "08"; + break; + case "Sep": + return "09"; + break; + case "Oct": + return "10"; + break; + case "Nov": + return "11"; + break; + case "Dec": + return "12"; + break; + default: + return value; + } + }; + + var parseTime = function(value){ + var retValue = value; + if(retValue.indexOf(".") != -1){ + retValue = retValue.substring(0, retValue.indexOf(".")); + } + + var values3 = retValue.split(":"); + + if(values3.length == 3){ + hour = values3[0]; + minute = values3[1]; + second = values3[2]; + + return { + time: retValue, + hour: hour, + minute: minute, + second: second + }; + } else { + return { + time: "", + hour: "", + minute: "", + second: "" + }; + } + }; + + return { + date: function(value, format){ + //value = new java.util.Date() + //2009-12-18 10:54:50.546 + try{ + var values = value.split(" "); + var year = null; + var month = null; + var dayOfMonth = null; + var time = null; //json, time, hour, minute, second + + switch(values.length){ + case 6://Wed Jan 13 10:43:41 CET 2010 + year = values[5]; + month = parseMonth(values[1]); + dayOfMonth = values[2]; + time = parseTime(values[3]); + break; + case 2://2009-12-18 10:54:50.546 + var values2 = values[0].split("-"); + year = values2[0]; + month = values2[1]; + dayOfMonth = values2[2]; + time = parseTime(values[1]); + break; + default: + return value; + } + + + var pattern = ""; + var retValue = ""; + + for(i = 0; i < format.length; i++){ + var currentPattern = format.charAt(i); + pattern += currentPattern; + switch(pattern){ + case "dd": + retValue += dayOfMonth; + pattern = ""; + break; + case "MM": + retValue += month; + pattern = ""; + break; + case "yyyy": + retValue += year; + pattern = ""; + break; + case "HH": + retValue += time.hour; + pattern = ""; + break; + case "hh": + retValue += time.hour; + pattern = ""; + break; + case "mm": + retValue += time.minute; + pattern = ""; + break; + case "ss": + retValue += time.second; + pattern = ""; + break; + case " ": + retValue += currentPattern; + pattern = ""; + break; + case "/": + retValue += currentPattern; + pattern = ""; + break; + case ":": + retValue += currentPattern; + pattern = ""; + break; + default: + if(pattern.length == 2 && pattern.indexOf("y") != 0){ + retValue += pattern.substring(0, 1); + pattern = pattern.substring(1, 2); + } else if((pattern.length == 3 && pattern.indexOf("yyy") == -1)){ + pattern = ""; + } + } + } + return retValue; + } catch(e) { + return value; + } + } + }; + })(); +}(jQuery)); + + +$(document).ready(function() { + $(".shortDateFormat").each(function(idx, elem) { + if ($(elem).is(":input")){ + $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy')); + } else { + $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy')); + } + }); + $(".longDateFormat").each(function(idx, elem) { + if ($(elem).is(":input")){ + $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy hh:mm:ss')); + } else { + $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy hh:mm:ss')); + } + }); +}); + +/* + * timeago: a jQuery plugin, version: 0.8.2 (2010-02-16) + * @requires jQuery v1.2.3 or later + * + * Timeago is a jQuery plugin that makes it easy to support automatically + * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). + * + * For usage and examples, visit: + * http://timeago.yarp.com/ + * + * Licensed under the MIT: + * http://www.opensource.org/licenses/mit-license.php + * + * Copyright (c) 2008-2010, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org) + */ +(function($) { + $.timeago = function(timestamp) { + if (timestamp instanceof Date) return inWords(timestamp); + else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp)); + else return inWords($.timeago.datetime(timestamp)); + }; + var $t = $.timeago; + + $.extend($.timeago, { + settings: { + refreshMillis: 60000, + allowFuture: false, + strings: { + prefixAgo: null, + prefixFromNow: null, + suffixAgo: "ago", + suffixFromNow: "from now", + ago: null, // DEPRECATED, use suffixAgo + fromNow: null, // DEPRECATED, use suffixFromNow + seconds: "less than a minute", + minute: "about a minute", + minutes: "%d minutes", + hour: "about an hour", + hours: "about %d hours", + day: "a day", + days: "%d days", + month: "about a month", + months: "%d months", + year: "about a year", + years: "%d years" + } + }, + inWords: function(distanceMillis) { + var $l = this.settings.strings; + var prefix = $l.prefixAgo; + var suffix = $l.suffixAgo || $l.ago; + if (this.settings.allowFuture) { + if (distanceMillis < 0) { + prefix = $l.prefixFromNow; + suffix = $l.suffixFromNow || $l.fromNow; + } + distanceMillis = Math.abs(distanceMillis); + } + + var seconds = distanceMillis / 1000; + var minutes = seconds / 60; + var hours = minutes / 60; + var days = hours / 24; + var years = days / 365; + + var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || + seconds < 90 && substitute($l.minute, 1) || + minutes < 45 && substitute($l.minutes, Math.round(minutes)) || + minutes < 90 && substitute($l.hour, 1) || + hours < 24 && substitute($l.hours, Math.round(hours)) || + hours < 48 && substitute($l.day, 1) || + days < 30 && substitute($l.days, Math.floor(days)) || + days < 60 && substitute($l.month, 1) || + days < 365 && substitute($l.months, Math.floor(days / 30)) || + years < 2 && substitute($l.year, 1) || + substitute($l.years, Math.floor(years)); + + return $.trim([prefix, words, suffix].join(" ")); + }, + parse: function(iso8601) { + var s = $.trim(iso8601); + s = s.replace(/-/,"/").replace(/-/,"/"); + s = s.replace(/T/," ").replace(/Z/," UTC"); + s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 + return new Date(s); + }, + datetime: function(elem) { + // jQuery's `is()` doesn't play well with HTML5 in IE + var isTime = $(elem).get(0).tagName.toLowerCase() == "time"; // $(elem).is("time"); + var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title"); + return $t.parse(iso8601); + } + }); + + $.fn.timeago = function() { + var self = this; + self.each(refresh); + + var $s = $t.settings; + if ($s.refreshMillis > 0) { + setInterval(function() { self.each(refresh); }, $s.refreshMillis); + } + return self; + }; + + function refresh() { + var data = prepareData(this); + if (!isNaN(data.datetime)) { + $(this).text(inWords(data.datetime)); + } + return this; + } + + function prepareData(element) { + element = $(element); + if (!element.data("timeago")) { + element.data("timeago", { datetime: $t.datetime(element) }); + var text = $.trim(element.text()); + if (text.length > 0) element.attr("title", text); + } + return element.data("timeago"); + } + + function inWords(date) { + return $t.inWords(distance(date)); + } + + function distance(date) { + return (new Date().getTime() - date.getTime()); + } + + function substitute(stringOrFunction, value) { + var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction; + return string.replace(/%d/i, value); + } + + // fix for IE6 suckage + document.createElement("abbr"); + document.createElement("time"); +})(jQuery); diff --git a/WebKit/jQuery.js b/WebKit/jQuery.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/WebKit/jQuery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(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,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/WebKit/odd-bg.png b/WebKit/odd-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b822a14df86acfd140737763565850c86d370e95 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrE!3<<`t^?=KfZqb`svfBpFe+o`}Xa_hYxSxzWx6F z`%|K;}o-U3d6}OTS5)&9W6xh@n7?K_&BrtOru(`2?v8AzesB&c_Z3QZ3 N@O1TaS?83{1ORvxJVO8g literal 0 HcmV?d00001 diff --git a/WebKit/pin.png b/WebKit/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..32ce008232e849db86e1911ce8d2a5aee8261ea4 GIT binary patch literal 630 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 z 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 literal 0 HcmV?d00001 diff --git a/publish/Appcast.xml b/publish/Appcast.xml new file mode 100755 index 0000000..9b89135 --- /dev/null +++ b/publish/Appcast.xml @@ -0,0 +1,20 @@ + + + + Tentia's Changelog + http://jabs.nu/Tentia/download/Appcast.xml + Most recent changes with links to updates. + en + + Version 0.1.2 + 10.5.0 + http://jabs.nu/Tentia/download/ReleaseNotes.html + Sun, 04 Nov 2012 17:30:32 +0100 + + + + diff --git a/publish/ReleaseNotes.html b/publish/ReleaseNotes.html new file mode 100644 index 0000000..df6285d --- /dev/null +++ b/publish/ReleaseNotes.html @@ -0,0 +1,32 @@ + + + + Tentia Release Notes + + + + +

Tentia 0.1.2

+

Bugfixes

+

Mentions now appear as realnames

+ +
+ +

Tentia 0.1.1

+

Bugfixes

+

Changed to send on Cmd+Enter.

+ +
+ +

Tentia 0.1.0

+

First attempt to rewrite the old Twitter client Twittia to a new and shiny Tent client Tentia.

+ + + \ No newline at end of file diff --git a/publish/Tentia.psd b/publish/Tentia.psd new file mode 100644 index 0000000000000000000000000000000000000000..1ff7f5db551aa19659be0f72354481da4a610869 GIT binary patch literal 161862 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⪼`#zbErxwhR>b@cii&RDF6`E_ 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

%9{LjHl8 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

a5?udMvXw2DZadR@v4X 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 literal 0 HcmV?d00001 diff --git a/publish/dsa_pub.pem b/publish/dsa_pub.pem new file mode 100644 index 0000000..4c959f3 --- /dev/null +++ b/publish/dsa_pub.pem @@ -0,0 +1,20 @@ +-----BEGIN PUBLIC KEY----- +MIIDPDCCAi4GByqGSM44BAEwggIhAoIBAQDjho3c9LB9TBv/wUQSegtiD2Q/YFjK +HvJH2ndtw2MIwd9iLA4JgXuZAZHpIa+YV7vU97TCvdRmO50VkfULkRona2SjE8lR +oK3VMOkJNGlAK0MfNgDF3/KcI7W6wTZRq/QLLI9Hi1oUpfheDCrrONyvHhCRW5UD +Rm/1Y/TltWfvDi2XmzvVFc9ISnuWoAntzp0IshWeAkcpDLbXJ3u9GudVAHeowEps ++BlMHMrzKPyvviRp0skJkmYvDpZn1YI9WhI4a65hPvgGO7a0/bgc1WbI6nR9mx6f +v+L37eqXoAJ+jrd2BaxD73BH7gBidO3xEYP0oUAxi1xkh2t587yyPU9lAhUAkKxj +3QWYyr+bYg6PDQyx2XpU+hcCggEBAJjhPOB+yLjbobEKJLzdjYujO0XMKVwej6k9 +14lCems95gwjWVS8t8rLAEYcheUPsz4rAid0ONCRQYbWmMBksv6AuXYH/qQM0BcB +DXtXnTRjUkDHCyWw+/QnkiQ+oHrzsZHPO1j+gsLOvZw2dfC1DUHHqsqaW1Oq8Xu9 +q+slmwbjTuymsbgfBJ27P09PU+FM0VNVQTCEXfZTMlDsCl6o19QmRbCLAqY0VhKZ +qPeL0atvdkaczDrNReZYRHcCfa9sO74Kt/m10UW7vEL5bIjYTN7kWvLh5HAuMvZo +Ta77PJpD0X0HbPUrX0/2YXZchxt3is1Tfy03T9aO4iWE+0Qy6wYDggEGAAKCAQEA +4AxqBHt4LMlsK330/0YXhyKYJEBjDHftz8vFuyq7Zob0t5euDExqtkjnDTo9BD/m +4tOE3/12IHL8kPpB0augGHONyoCO7Fdm+CR+mWNMqg2qo5mdPxEzP74WFrryhvh3 +z/GMhBPfZ/qSbfOvI9snc2KS6Pi34L+Je1UiYt8+gmN/uF/cUTWIkOUavI6AuGIB +oCkWGpEYjAYfZkR80/pKNQq2qLc9hiUAj1VpY5B6pxlelmos+/F62Je+E6Fd1VZN +cJfvL2kp/9bPU35cye4/FGkrW94DgRBw3IpAVrnwjnglJn2JUr7BySLO7PhFfTvO +ZbWeowFp6qKpOugZ7kS//w== +-----END PUBLIC KEY----- diff --git a/publish/publish.rb b/publish/publish.rb new file mode 100755 index 0000000..51dbb82 --- /dev/null +++ b/publish/publish.rb @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby -wKU +require 'time' + +path = File.dirname File.expand_path(__FILE__) + +# system "cd \"#{path}/build/Release/\"; zip -r Tentia.app.zip Tentia.app; cd \"#{path}\"" +version = `defaults read \"#{path}/build/Release/Tentia.app/Contents/Info\" CFBundleVersion`.gsub(/\n/,'') +length = `stat -f %z \"#{path}/build/Release/Tentia.app.zip\"`.gsub(/\n/,'') +signature = `ruby \"#{path}/../Sparkle\ 1.5b6/Extras/Signing Tools/sign_update.rb\" \"#{path}/build/Release/Tentia.app.zip\" \"#{path}/dsa_priv.pem\"`.gsub(/\n/,'') + +xml = < + + + Tentia's Changelog + http://jabs.nu/Tentia/download/Appcast.xml + Most recent changes with links to updates. + en + + Version #{version} + 10.5.0 + http://jabs.nu/Tentia/download/ReleaseNotes.html + #{Time.now.rfc2822} + + + + +XML + + +File.open("#{path}/Appcast.xml", 'w') {|f| f.write(xml) } +system "scp \"#{path}/build/Release/Tentia.app.zip\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" +system "scp \"#{path}/ReleaseNotes.html\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" +system "scp \"#{path}/Appcast.xml\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" + +puts "Done." \ No newline at end of file From 2efbbd1d0a782c588c3daf641fd4626ef89d2e32 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Mon, 5 Nov 2012 17:49:02 +0100 Subject: [PATCH 03/17] moved files to prepare for Linux --- AccessToken.h | 27 - AccessToken.m | 88 - Appcast.xml | 20 - Constants.h | 30 - Constants.js | 21 - Constants.m | 220 -- Controller.h | 64 - Controller.m | 313 -- Core.js | 457 --- English.lproj/Credits.rtf | 25 - English.lproj/InfoPlist.strings | 2 - English.lproj/MainMenu.xib | 2806 ----------------- English.lproj/NewMessageWindow.xib | 372 --- Icon.icns | Bin 121861 -> 0 bytes NewMessageWindow.h | 28 - NewMessageWindow.m | 158 - OauthImplementation.js | 142 - ReleaseNotes.html | 23 - Sparkle.framework/Headers | 1 - Sparkle.framework/Resources | 1 - Sparkle.framework/Sparkle | 1 - .../Versions/A/Headers/SUAppcast.h | 33 - .../Versions/A/Headers/SUAppcastItem.h | 47 - .../Versions/A/Headers/SUUpdater.h | 118 - .../A/Headers/SUVersionComparisonProtocol.h | 27 - .../Versions/A/Headers/Sparkle.h | 21 - .../Versions/A/Resources/Info.plist | 24 - .../Versions/A/Resources/License.txt | 7 - .../A/Resources/SUModelTranslation.plist | 174 - .../A/Resources/SUStatus.nib/classes.nib | 56 - .../A/Resources/SUStatus.nib/info.nib | 20 - .../A/Resources/SUStatus.nib/keyedobjects.nib | Bin 7344 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7278 -> 0 bytes .../de.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../de.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10493 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13189 -> 0 bytes .../A/Resources/de.lproj/Sparkle.strings | Bin 9806 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7148 -> 0 bytes .../en.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../en.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10623 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 21 - .../keyedobjects.nib | Bin 13263 -> 0 bytes .../A/Resources/en.lproj/Sparkle.strings | Bin 8216 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7273 -> 0 bytes .../es.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../es.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10668 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13404 -> 0 bytes .../A/Resources/es.lproj/Sparkle.strings | Bin 8020 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 16 - .../keyedobjects.nib | Bin 7245 -> 0 bytes .../fr.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../fr.lproj/SUUpdateAlert.nib/info.nib | 16 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10338 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 16 - .../keyedobjects.nib | Bin 13156 -> 0 bytes .../A/Resources/fr.lproj/Sparkle.strings | Bin 8554 -> 0 bytes .../Versions/A/Resources/fr.lproj/fr.lproj | 1 - .../Versions/A/Resources/fr_CA.lproj | 1 - .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7161 -> 0 bytes .../it.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../it.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10360 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 12659 -> 0 bytes .../A/Resources/it.lproj/Sparkle.strings | Bin 8914 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 18 - .../keyedobjects.nib | Bin 7234 -> 0 bytes .../nl.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../nl.lproj/SUUpdateAlert.nib/info.nib | 16 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10220 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 16 - .../keyedobjects.nib | Bin 12535 -> 0 bytes .../A/Resources/nl.lproj/Sparkle.strings | Bin 8514 -> 0 bytes .../Versions/A/Resources/relaunch | Bin 58924 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7675 -> 0 bytes .../ru.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../ru.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10895 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 18 - .../keyedobjects.nib | Bin 12898 -> 0 bytes .../A/Resources/ru.lproj/Sparkle.strings | Bin 8364 -> 0 bytes .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7474 -> 0 bytes .../sv.lproj/SUUpdateAlert.nib/classes.nib | 39 - .../sv.lproj/SUUpdateAlert.nib/info.nib | 18 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10180 -> 0 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 59 - .../SUUpdatePermissionPrompt.nib/info.nib | 20 - .../keyedobjects.nib | Bin 13483 -> 0 bytes .../A/Resources/sv.lproj/Sparkle.strings | Bin 8142 -> 0 bytes Sparkle.framework/Versions/A/Sparkle | Bin 463540 -> 0 bytes Sparkle.framework/Versions/Current | 1 - Tentia-Info.plist | 80 - Tentia.psd | Bin 161862 -> 0 bytes Tentia.xcodeproj/jeena.mode1v3 | 1421 --------- Tentia.xcodeproj/jeena.pbxuser | 496 --- Tentia.xcodeproj/project.pbxproj | 496 --- .../contents.xcworkspacedata | 7 - .../WorkspaceSettings.xcsettings | 10 - .../xcdebugger/Breakpoints.xcbkptlist | 18 - .../xcschemes/Twittia.xcscheme | 86 - .../xcschemes/xcschememanagement.plist | 22 - Tentia_Prefix.pch | 7 - TweetModel.h | 22 - TweetModel.m | 23 - URI.min.js | 70 - ViewDelegate.h | 23 - ViewDelegate.m | 84 - default-avatar.png | Bin 3159 -> 0 bytes default.css | 238 -- delete.png | Bin 199 -> 0 bytes dsa_pub.pem | 20 - enc-base64-min.js | 8 - even-bg.png | Bin 171 -> 0 bytes hmac-helper.js | 122 - hmac-sha256.js | 17 - index.html | 18 - index_oauth.html | 16 - jQuery-Plugins.js | 330 -- jQuery.js | 154 - main.m | 14 - odd-bg.png | Bin 166 -> 0 bytes pin.png | Bin 630 -> 0 bytes publish.rb | 40 - sprite-icons.png | Bin 11868 -> 0 bytes 150 files changed, 11006 deletions(-) delete mode 100644 AccessToken.h delete mode 100644 AccessToken.m delete mode 100755 Appcast.xml delete mode 100644 Constants.h delete mode 100644 Constants.js delete mode 100644 Constants.m delete mode 100644 Controller.h delete mode 100644 Controller.m delete mode 100644 Core.js delete mode 100644 English.lproj/Credits.rtf delete mode 100644 English.lproj/InfoPlist.strings delete mode 100644 English.lproj/MainMenu.xib delete mode 100644 English.lproj/NewMessageWindow.xib delete mode 100644 Icon.icns delete mode 100644 NewMessageWindow.h delete mode 100644 NewMessageWindow.m delete mode 100644 OauthImplementation.js delete mode 100644 ReleaseNotes.html delete mode 120000 Sparkle.framework/Headers delete mode 120000 Sparkle.framework/Resources delete mode 120000 Sparkle.framework/Sparkle delete mode 100644 Sparkle.framework/Versions/A/Headers/SUAppcast.h delete mode 100644 Sparkle.framework/Versions/A/Headers/SUAppcastItem.h delete mode 100644 Sparkle.framework/Versions/A/Headers/SUUpdater.h delete mode 100644 Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h delete mode 100644 Sparkle.framework/Versions/A/Headers/Sparkle.h delete mode 100644 Sparkle.framework/Versions/A/Resources/Info.plist delete mode 100644 Sparkle.framework/Versions/A/Resources/License.txt delete mode 100644 Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist delete mode 100644 Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings delete mode 120000 Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj delete mode 120000 Sparkle.framework/Versions/A/Resources/fr_CA.lproj delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings delete mode 100755 Sparkle.framework/Versions/A/Resources/relaunch delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib delete mode 100644 Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings delete mode 100755 Sparkle.framework/Versions/A/Sparkle delete mode 120000 Sparkle.framework/Versions/Current delete mode 100644 Tentia-Info.plist delete mode 100644 Tentia.psd delete mode 100644 Tentia.xcodeproj/jeena.mode1v3 delete mode 100644 Tentia.xcodeproj/jeena.pbxuser delete mode 100644 Tentia.xcodeproj/project.pbxproj delete mode 100644 Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100644 Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme delete mode 100644 Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Tentia_Prefix.pch delete mode 100644 TweetModel.h delete mode 100644 TweetModel.m delete mode 100644 URI.min.js delete mode 100644 ViewDelegate.h delete mode 100644 ViewDelegate.m delete mode 100644 default-avatar.png delete mode 100644 default.css delete mode 100644 delete.png delete mode 100644 dsa_pub.pem delete mode 100644 enc-base64-min.js delete mode 100644 even-bg.png delete mode 100644 hmac-helper.js delete mode 100644 hmac-sha256.js delete mode 100644 index.html delete mode 100644 index_oauth.html delete mode 100644 jQuery-Plugins.js delete mode 100644 jQuery.js delete mode 100644 main.m delete mode 100644 odd-bg.png delete mode 100644 pin.png delete mode 100755 publish.rb delete mode 100644 sprite-icons.png diff --git a/AccessToken.h b/AccessToken.h deleted file mode 100644 index 0a3941c..0000000 --- a/AccessToken.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// AccessToken.h -// Tentia -// -// Created by Jeena Paradies on 19/09/2011. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - - - -@interface AccessToken : NSObject { - NSUserDefaults *d; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey; -- (NSString *)stringForKey:(NSString *)aKey; - -- (void)setAccessToken:(NSString *)_accessToken; -- (NSString *)accessToken; -- (void)setSecret:(NSString *)_secret; -- (NSString *)secret; -- (void)setUserId:(NSString *)_userId; -- (NSString *)userId; -- (void)setScreenName:(NSString *)_screenName; -- (NSString *)screenName; - -@end \ No newline at end of file diff --git a/AccessToken.m b/AccessToken.m deleted file mode 100644 index 02b181f..0000000 --- a/AccessToken.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// AccessToken.m -// Tentia -// -// Created by Jeena Paradies on 19/09/2011. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "AccessToken.h" - -@implementation AccessToken - -- (id)init -{ - self = [super init]; - if (self) { - // Initialization code here. - d = [NSUserDefaults standardUserDefaults]; - //[d removeObjectForKey:@"user_access_token"]; - } - - return self; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey -{ - [d setObject:string forKey:aKey]; - [d synchronize]; -} - -- (NSString *)stringForKey:(NSString *)aKey -{ - return [d objectForKey:aKey]; -} - -- (void)setAccessToken:(NSString *)_accessToken -{ - [d synchronize]; -} - -- (NSString *)accessToken -{ - return [d objectForKey:@"accessToken"]; -} - -- (void)setSecret:(NSString *)_secret -{ - [d setObject:_secret forKey:@"secret"]; - [d synchronize]; -} - -- (NSString *)secret -{ - return [d objectForKey:@"secret"]; -} - -- (void)setUserId:(NSString *)_userId -{ - [d setObject:_userId forKey:@"userId"]; - [d synchronize]; -} - -- (NSString *)userId -{ - return [d objectForKey:@"userId"]; -} - -- (void)setScreenName:(NSString *)_screenName -{ - [d setObject:_screenName forKey:@"screenName"]; - [d synchronize]; -} - -- (NSString *)screenName -{ - return [d objectForKey:@"screenName"]; -} - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name { - return NO; -} - - -@end diff --git a/Appcast.xml b/Appcast.xml deleted file mode 100755 index 9060b46..0000000 --- a/Appcast.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Tentia's Changelog - http://jabs.nu/Tentia/download/Appcast.xml - Most recent changes with links to updates. - en - - Version 0.1.1 - 10.5.0 - http://jabs.nu/Tentia/download/ReleaseNotes.html - Sat, 03 Nov 2012 03:21:16 +0100 - - - - diff --git a/Constants.h b/Constants.h deleted file mode 100644 index ea85a62..0000000 --- a/Constants.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Constants.h -// Tentia -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import - - -@interface Constants : NSObject { - -} - -#define OAUTH_CONSUMER_KEY @"JPmU8KJhiBKfpohCiWLg" -#define OAUTH_CONSUMER_SECRET @"jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" -#define OAUTH_SIGNATURE_METHOD @"HMAC-SHA1" -#define OAUTH_REQUEST_TOKEN_URL @"http://twitter.com/oauth/request_token" -#define OAUTH_USER_AUTHORIZATION_URL @"http://twitter.com/oauth/authorize" -#define OAUTH_ACCESS_TOKEN_URL @"http://twitter.com/oauth/access_token" -#define OAUTH_SERVICE_NAME @"twitter.com" - -#define APP_NAME @"Tentia" -#define MESSAGE_MAX_LENGTH 256 - -+ (NSString *)stringFromVirtualKeyCode:(NSInteger)code; - -@end diff --git a/Constants.js b/Constants.js deleted file mode 100644 index 179892e..0000000 --- a/Constants.js +++ /dev/null @@ -1,21 +0,0 @@ -// -// Constants.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - - -OAUTH_CONSUMER_KEY = "JPmU8KJhiBKfpohCiWLg" -OAUTH_CONSUMER_SECRET = "jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" -OAUTH_SIGNATURE_METHOD = "HMAC-SHA1" -OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" -OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" -OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" -OAUTH_SERVICE_NAME = "twitter.com" - -APP_NAME = "Tentia"; - -API_PATH = "http://api.twitter.com/1/"; -WEBSITE_PATH = "http://twitter.com/"; diff --git a/Constants.m b/Constants.m deleted file mode 100644 index a40d9e2..0000000 --- a/Constants.m +++ /dev/null @@ -1,220 +0,0 @@ -// -// Constants.m -// Tentia -// -// Created by Jeena on 01.05.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "Constants.h" - - -@implementation Constants - -+ (NSString *)stringFromVirtualKeyCode:(NSInteger)code { - NSString *string = nil; - switch (code) { - case kVK_ANSI_A: - string = @"A"; - break; - case kVK_ANSI_S: - string = @"S"; - break; - case kVK_ANSI_D: - string = @"D"; - break; - case kVK_ANSI_F: - string = @"F"; - break; - case kVK_ANSI_H: - string = @"H"; - break; - case kVK_ANSI_G: - string = @"G"; - break; - case kVK_ANSI_Z: - string = @"Z"; - break; - case kVK_ANSI_X: - string = @"X"; - break; - case kVK_ANSI_C: - string = @"C"; - break; - case kVK_ANSI_V: - string = @"V"; - break; - case kVK_ANSI_B: - string = @"B"; - break; - case kVK_ANSI_Q: - string = @"Q"; - break; - case kVK_ANSI_W: - string = @"W"; - break; - case kVK_ANSI_E: - string = @"E"; - break; - case kVK_ANSI_R: - string = @"R"; - break; - case kVK_ANSI_Y: - string = @"Y"; - break; - case kVK_ANSI_T: - string = @"T"; - break; - case kVK_ANSI_1: - string = @"1"; - break; - case kVK_ANSI_2: - string = @"2"; - break; - case kVK_ANSI_3: - string = @"3"; - break; - case kVK_ANSI_4: - string = @"4"; - break; - case kVK_ANSI_6: - string = @"6"; - break; - case kVK_ANSI_5: - string = @"5"; - break; - case kVK_ANSI_Equal: - string = @"="; - break; - case kVK_ANSI_9: - string = @"9"; - break; - case kVK_ANSI_7: - string = @"7"; - break; - case kVK_ANSI_Minus: - string = @"-"; - break; - case kVK_ANSI_8: - string = @"8"; - break; - case kVK_ANSI_0: - string = @"0"; - break; - case kVK_ANSI_RightBracket: - string = @")"; - break; - case kVK_ANSI_O: - string = @"0"; - break; - case kVK_ANSI_U: - string = @"U"; - break; - case kVK_ANSI_LeftBracket: - string = @"("; - break; - case kVK_ANSI_I: - string = @"I"; - break; - case kVK_ANSI_P: - string = @"P"; - break; - case kVK_ANSI_L: - string = @"L"; - break; - case kVK_ANSI_J: - string = @"J"; - break; - case kVK_ANSI_Quote: - string = @"\""; - break; - case kVK_ANSI_K: - string = @"K"; - break; - case kVK_ANSI_Semicolon: - string = @";"; - break; - case kVK_ANSI_Backslash: - string = @"\\"; - break; - case kVK_ANSI_Comma: - string = @","; - break; - case kVK_ANSI_Slash: - string = @"/"; - break; - case kVK_ANSI_N: - string = @"N"; - break; - case kVK_ANSI_M: - string = @"M"; - break; - case kVK_ANSI_Period: - string = @"."; - break; - case kVK_ANSI_Grave: - string = @"`"; - break; - case kVK_ANSI_KeypadDecimal: - string = @"."; - break; - case kVK_ANSI_KeypadMultiply: - string = @"*"; - break; - case kVK_ANSI_KeypadPlus: - string = @"+"; - break; - case kVK_ANSI_KeypadClear: - string = @""; - break; - case kVK_ANSI_KeypadDivide: - string = @"/"; - break; - case kVK_ANSI_KeypadEnter: - string = @"⎆"; - break; - case kVK_ANSI_KeypadMinus: - string = @"-"; - break; - case kVK_ANSI_KeypadEquals: - string = @"="; - break; - case kVK_ANSI_Keypad0: - string = @"0"; - break; - case kVK_ANSI_Keypad1: - string = @"1"; - break; - case kVK_ANSI_Keypad2: - string = @"2"; - break; - case kVK_ANSI_Keypad3: - string = @"3"; - break; - case kVK_ANSI_Keypad4: - string = @"4"; - break; - case kVK_ANSI_Keypad5: - string = @"5"; - break; - case kVK_ANSI_Keypad6: - string = @"6"; - break; - case kVK_ANSI_Keypad7: - string = @"7"; - break; - case kVK_ANSI_Keypad8: - string = @"8"; - break; - case kVK_ANSI_Keypad9: - string = @"9"; - break; - default: - string = nil; - break; - } - - return string; -} - -@end diff --git a/Controller.h b/Controller.h deleted file mode 100644 index 8c4f381..0000000 --- a/Controller.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// Controller.h -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import -#import -#import "ViewDelegate.h" -#import -#import "Constants.h" -#import "AccessToken.h" - - -@interface Controller : NSObject { - IBOutlet WebView *timelineView; - IBOutlet NSWindow *timelineViewWindow; - IBOutlet WebView *mentionsView; - IBOutlet NSWindow *mentionsViewWindow; - NSWindow *loginViewWindow; - NSProgressIndicator *loginActivityIndicator; - IBOutlet NSMenuItem *globalHotkeyMenuItem; - IBOutlet NSImageView *logoLayer; - ViewDelegate *viewDelegate; - WebView *oauthView; - AccessToken *accessToken; -} - -@property (retain, nonatomic) IBOutlet WebView *timelineView; -@property (retain, nonatomic) IBOutlet NSWindow *timelineViewWindow; -@property (retain, nonatomic) IBOutlet WebView *mentionsView; -@property (retain, nonatomic) IBOutlet NSWindow *mentionsViewWindow; -@property (assign) IBOutlet NSWindow *loginViewWindow; -@property (assign) IBOutlet NSProgressIndicator *loginActivityIndicator; -@property (retain, nonatomic) IBOutlet NSMenuItem *globalHotkeyMenuItem; -@property (retain, nonatomic) IBOutlet NSImageView *logoLayer; -@property (retain, nonatomic) IBOutlet ViewDelegate *viewDelegate; -@property (retain, nonatomic) WebView *oauthView; -@property (retain, nonatomic) AccessToken *accessToken; - -- (void)initOauth; -- (void)authentificationSucceded:(id)sender; -- (void)initWebViews; -- (void)initHotKeys; -- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; -- (NSString *)pluginURL; -- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -- (void)unreadMentions:(NSInteger)count; -- (void)openURL:(NSString *)url; - -- (void)setString:(NSString *)string forKey:(NSString *)aKey; -- (NSString *)stringForKey:(NSString *)aKey; -- (void)storeAccessToken:(NSString *)accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName; -- (void)loggedIn; - -- (IBAction)login:(id)sender; -- (IBAction)logout:(id)sender; - - -OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData); - -@end diff --git a/Controller.m b/Controller.m deleted file mode 100644 index 7eb883a..0000000 --- a/Controller.m +++ /dev/null @@ -1,313 +0,0 @@ -// -// Controller.m -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "Controller.h" -#import "NewMessageWindow.h" -#import "TweetModel.h" - - -@implementation Controller -@synthesize loginViewWindow; -@synthesize loginActivityIndicator; - -@synthesize timelineView, timelineViewWindow, mentionsView, mentionsViewWindow, globalHotkeyMenuItem, viewDelegate; -@synthesize logoLayer; -@synthesize oauthView, accessToken; - -- (void)awakeFromNib { - - [self initHotKeys]; - - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc addObserver:self - selector:@selector(openNewMessageWindow:) - name:@"openNewMessageWindow" - object:nil]; - [nc addObserver:self - selector:@selector(sendTweet:) - name:@"sendTweet" - object:nil]; - [nc addObserver:self - selector:@selector(authentificationSucceded:) - name:@"authentificationSucceded" - object:nil]; - [nc addObserver:self - selector:@selector(getTweetUpdates:) - name:@"getTweetUpdates" - object:nil]; - - NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager]; - [appleEventManager setEventHandler:self - andSelector:@selector(handleGetURLEvent:withReplyEvent:) - forEventClass:kInternetEventClass - andEventID:kAEGetURL]; - - viewDelegate = [[ViewDelegate alloc] init]; - - - accessToken = [[AccessToken alloc] init]; - - //[accessToken setString:nil forKey:@"user_access_token"]; - - if (![accessToken stringForKey:@"user_access_token"]) { - [timelineViewWindow performClose:self]; - [mentionsViewWindow performClose:self]; - [self.loginViewWindow makeKeyAndOrderFront:self]; - } else { - [timelineViewWindow makeKeyAndOrderFront:self]; - [self initWebViews]; - } -} - -- (void)initOauth { - if (!oauthView) { - NSString *path = [[NSBundle mainBundle] resourcePath]; - NSURL *url = [NSURL fileURLWithPath:path]; - NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index_oauth.html", path] encoding:NSUTF8StringEncoding error:nil]; - - - oauthView = [[WebView alloc] init]; - viewDelegate.oauthView = oauthView; - [[oauthView mainFrame] loadHTMLString:index_string baseURL:url]; - [oauthView setFrameLoadDelegate:viewDelegate]; - [oauthView setPolicyDelegate:viewDelegate]; - [oauthView setUIDelegate:viewDelegate]; - [[oauthView windowScriptObject] setValue:self forKey:@"controller"]; - } else { - [oauthView stringByEvaluatingJavaScriptFromString:@"tentia_oauth.authenticate()"]; - } -} - -- (void)initHotKeys { - - NSInteger newTweetKey = kVK_ANSI_M; // http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes - NSInteger newTweetModifierKey = controlKey + cmdKey + optionKey; // cmdKey 256, shitfKey 512, optionKey 2048, controlKey 4096 - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSInteger defaultsNewTweetKey = (NSInteger)[defaults integerForKey:@"newTweetKey"]; - - if ([defaults objectForKey:@"newTweetKey"] != nil) { - newTweetKey = defaultsNewTweetKey; - } else { - [defaults setInteger:newTweetKey forKey:@"newTweetKey"]; - } - - NSInteger defaultsNewTweetModifierKey = (NSInteger)[defaults integerForKey:@"newTweetModifierKey"]; - if ([defaults objectForKey:@"newTweetModifierKey"] != nil) { - newTweetModifierKey = defaultsNewTweetModifierKey; - } else { - [defaults setInteger:newTweetModifierKey forKey:@"newTweetModifierKey"]; - } - - [defaults synchronize]; - - NSUInteger cocoaModifiers = 0; - if (newTweetModifierKey & shiftKey) cocoaModifiers = cocoaModifiers | NSShiftKeyMask; - if (newTweetModifierKey & optionKey) cocoaModifiers = cocoaModifiers | NSAlternateKeyMask; - if (newTweetModifierKey & controlKey) cocoaModifiers = cocoaModifiers | NSControlKeyMask; - if (newTweetModifierKey & cmdKey) cocoaModifiers = cocoaModifiers | NSCommandKeyMask; - - [globalHotkeyMenuItem setKeyEquivalent:[Constants stringFromVirtualKeyCode:newTweetKey]]; - [globalHotkeyMenuItem setKeyEquivalentModifierMask:cocoaModifiers]; - - /* CARBON from http://github.com/Xjs/drama-button/blob/carbon/Drama_ButtonAppDelegate.m */ - - EventTypeSpec eventType; - eventType.eventClass = kEventClassKeyboard; - eventType.eventKind = kEventHotKeyPressed; - - InstallApplicationEventHandler(&handler, 1, &eventType, NULL, NULL); - - EventHotKeyID g_HotKeyID; - g_HotKeyID.id = 1; - - EventHotKeyRef g_HotKeyRef; - - RegisterEventHotKey(newTweetKey, newTweetModifierKey, g_HotKeyID, GetApplicationEventTarget(), 0, &g_HotKeyRef); - - /* end CARBON */ -} - -- (void)authentificationSucceded:(id)sender { - [loginActivityIndicator stopAnimation:self]; - [self initWebViews]; - [loginViewWindow performClose:self]; -} - -- (void)initWebViews { - - NSString *path = [[NSBundle mainBundle] resourcePath]; - NSURL *url = [NSURL fileURLWithPath:path]; - NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index.html", path] encoding:NSUTF8StringEncoding error:nil]; - - viewDelegate.timelineView = timelineView; - [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; - [timelineView setFrameLoadDelegate:viewDelegate]; - [timelineView setPolicyDelegate:viewDelegate]; - [timelineView setUIDelegate:viewDelegate]; - [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; - - viewDelegate.mentionsView = mentionsView; - [[mentionsView mainFrame] loadHTMLString:index_string baseURL:url]; - [mentionsView setFrameLoadDelegate:viewDelegate]; - [mentionsView setPolicyDelegate:viewDelegate]; - [mentionsView setUIDelegate:viewDelegate]; - [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; - - // FIXME: show timelineView after authentification -} - -+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - return NO; -} - -+ (BOOL)isKeyExcludedFromWebScript:(const char *)name { - return NO; -} - -- (void)setString:(NSString *)string forKey:(NSString *)aKey -{ - [self.accessToken setString:string forKey:aKey]; -} - -- (NSString *)stringForKey:(NSString *)aKey -{ - return [self.accessToken stringForKey:aKey]; -} - - -#pragma mark Notifications - -- (IBAction)openNewMessageWindow:(id)sender { - [NSApp activateIgnoringOtherApps:YES]; - [[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; -} - -- (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string { - [NSApp activateIgnoringOtherApps:YES]; - NewMessageWindow *newTweet = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; - [newTweet inReplyTo:userName statusId:statusId withString:string]; -} - -- (void)openNewMessageWindowWithString:(NSString *)aString { - [NSApp activateIgnoringOtherApps:YES]; - - NSRange range = [aString rangeOfString:@"oauthtoken"]; - - if (range.length > 0) { - [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"tentia_oauth.requestAccessToken('%@')", aString]]; - } else { - NewMessageWindow *newTweet = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; - [newTweet withString:aString]; - } - -} - -- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent { - NSString *text = [[[event paramDescriptorForKeyword:keyDirectObject] stringValue] substringFromIndex:8]; - [self openNewMessageWindowWithString:[text stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; -} - -- (IBAction)sendTweet:(id)sender { - TweetModel *tweet = (TweetModel *)[sender object]; - NSString *text = [[tweet.text stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"] stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; - NSString *func = [NSString stringWithFormat:@"tentia_instance.sendNewMessage(\"%@\", \"%@\", \"%@\")", - text, - tweet.inReplyTostatusId, - tweet.inReplyToEntity]; - [timelineView stringByEvaluatingJavaScriptFromString:func]; -} - -- (NSString *)pluginURL { - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *pathToPlugin = [@"~/Library/Application Support/Tentia/Plugin.js" stringByExpandingTildeInPath]; - if([fileManager fileExistsAtPath:pathToPlugin]) { - return [NSString stringWithFormat:@"%@", [NSURL fileURLWithPath:pathToPlugin]]; - } - return nil; -} - -- (void)unreadMentions:(NSInteger)count { - if (![mentionsViewWindow isVisible] && count > 0) { - [timelineViewWindow setTitle:[NSString stringWithFormat:@"Tentia (^%i)", count]]; - [[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i", count]]; - } else { - [timelineViewWindow setTitle:[NSString stringWithFormat:@"Tentia"]]; - [[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.unread_mentions = 0;"]; - } -} - -- (void)openURL:(NSString *)url { - [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; -} - -- (void)storeAccessToken:(NSString *)_accessToken secret:(NSString *)secret userId:(NSString *)userId andScreenName:(NSString *)screenName -{ - self.accessToken.accessToken = _accessToken; - self.accessToken.secret = secret; - self.accessToken.userId = userId; - self.accessToken.screenName = screenName; - - [timelineViewWindow makeKeyAndOrderFront:self]; - - [[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil]; -} - -- (void)loggedIn { - [timelineViewWindow makeKeyAndOrderFront:self]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"authentificationSucceded" object:nil]; -} - -- (IBAction)login:(id)sender { - [loginActivityIndicator startAnimation:self]; - [self initOauth]; -} - -- (IBAction)logout:(id)sender { - [timelineViewWindow performClose:self]; - [mentionsViewWindow performClose:self]; - [self.loginViewWindow makeKeyAndOrderFront:self]; - - [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; - - [accessToken setString:nil forKey:@"app_mac_key"]; - [accessToken setString:nil forKey:@"app_mac_key_id"]; - [accessToken setString:nil forKey:@"app_id"]; - [accessToken setString:nil forKey:@"app_mac_algorithm"]; - [accessToken setString:nil forKey:@"user_access_token"]; - [accessToken setString:nil forKey:@"user_mac_key"]; - [accessToken setString:nil forKey:@"user_mac_algorithm"]; - [accessToken setString:nil forKey:@"user_token_type"]; - [accessToken setString:nil forKey:@"api_root"]; - [accessToken setString:nil forKey:@"entity"]; -} - -// Mentions window has been visible -- (void)windowDidBecomeKey:(NSNotification *)notification { - if ([notification object] == mentionsViewWindow) { - [self unreadMentions:0]; - } -} - -- (void)getTweetUpdates:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData(true)"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData(true)"]; -} - - -/* CARBON */ - -OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData) -{ - [[NSNotificationCenter defaultCenter] postNotificationName:@"openNewMessageWindow" object:nil]; - return noErr; -} - -@end diff --git a/Core.js b/Core.js deleted file mode 100644 index 475c32f..0000000 --- a/Core.js +++ /dev/null @@ -1,457 +0,0 @@ -// -// Core.js -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -function Core(action) { - this.max_length = 200; - // this.timeout = 2 * 60 * 1000; - this.timeout = 10 * 1000; // every 10 seconds - this.action = action; - this.getNewData(); - this.unread_mentions = 0; - this.since_id = null; - this.since_id_entity = null; - this.since_time = 0; - - this.body = document.createElement("ol"); - this.body.className = this.action; - this.cache = {}; - this.is_not_init = false; - - var _this = this; - setInterval(function() { _this.getNewData() }, this.timeout); -} - -Core.prototype.newStatus = function(status) { - - if(status != null && status.length > 0) { - for(var i = status.length-1, c=0; i>=c; --i) { - if(this.body.childNodes.length > 0) { - if(this.body.childNodes.length > this.max_length) { - this.body.removeChild(this.body.lastChild); - } - this.body.insertBefore(this.getItem(status[i]), this.body.firstChild); - } else { - this.body.appendChild(this.getItem(status[i])); - } - } - } - - if(this.action == "mentions" && this.is_not_init) { - this.unread_mentions += status.length; - controller.unreadMentions_(this.unread_mentions); - } - this.is_not_init = true; -} - -Core.prototype.logout = function() { - this.body.innerHTML = ""; -} - -Core.prototype.getItem = function(status) { - - var _this = this; - this.since_id = status.id; - this.since_id_entity = status.entity; - - var template = this.getTemplate(); - - template.reply_to.onclick = function() { - var mentions = []; - for (var i = 0; i < status.mentions.length; i++) { - var mention = status.mentions[i]; - if(mention.entity != controller.stringForKey_("entity")) - mentions.push(mention); - }; - replyTo(status.entity, status.id, mentions); - return false; - } - //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } - - template.username.innerText = status.entity; - template.username.href = status.entity; // FIXME open profile - - findProfileURL(status.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - template.username.title = template.username.innerText; - template.username.innerText = basic.name; - } - if(basic.avatar_url) { - template.image.onerror = function() { template.image.src = 'default-avatar.png' }; - template.image.src = basic.avatar_url; - } - } - }, null, false); // do not send auth-headers - } - }); - - template.in_reply.parentNode.className = "hidden"; - - template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); - findMentions(template.message, status.mentions); - - var time = document.createElement("abbr"); - time.innerText = ISODateString(new Date(status.published_at * 1000)); - time.title = time.innerText; - time.className = "timeago"; - $(time).timeago(); - template.ago.appendChild(time); - - // {"type":"Point","coordinates":[57.10803113,12.25854746]} - if (status.content && status.content.location && status.content.location.type == "Point") { - template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; - template.geo.style.display = ""; - } - - template.source.href = status.app.url; - template.source.innerHTML = status.app.name; - template.source.title = status.app.url; - - return template.item; -} - -Core.prototype.getTemplate = function() { - - if(this.template == "undefined") { - return jQuery.extend(true, {}, this.template); - } - - var a = document.createElement("a"); - - var item = document.createElement("li"); - - var reply_to = a.cloneNode(); - reply_to.className = "reply_to" - reply_to.innerText = " "; - reply_to.href = "#"; - item.appendChild(reply_to); - - var retweet = a.cloneNode(); - retweet.className = "retweet"; - retweet.innerText = " "; - retweet.href = "#"; - // item.appendChild(retweet); // FIXME - - - var image = document.createElement("img"); - image.className = "image"; - image.src = "default-avatar.png"; - image.onmousedown = function(e) { e.preventDefault(); }; - item.appendChild(image); - - var image_username = a.cloneNode(); - image.appendChild(image_username); - - var data = document.createElement("div"); - data.className = "data"; - item.appendChild(data); - - var head = document.createElement("h1"); - data.appendChild(head); - - var username = a.cloneNode(); - head.appendChild(username); - - var in_reply = document.createElement("span"); - in_reply.className = "reply"; - head.appendChild(in_reply); - - var space = document.createTextNode(" "); - head.appendChild(space); - - var geo = document.createElement("a"); - geo.style.display = "none"; - head.appendChild(geo); - - var pin = document.createElement("img"); - pin.src = "pin.png"; - pin.alt = "Map link"; - geo.appendChild(pin); - - var in_reply_text = document.createTextNode(" in reply to "); - in_reply.appendChild(in_reply_text) - - var in_reply_a = a.cloneNode(); - in_reply.appendChild(in_reply_a); - - var message = document.createElement("p"); - message.className = "message"; - data.appendChild(message); - - var images = document.createElement("p") - images.className = "images"; - data.appendChild(images); - - var date = message.cloneNode(); - date.className = "date"; - data.appendChild(date); - - var ago = a.cloneNode(); - date.appendChild(ago); - - var from = document.createTextNode(" from "); - date.appendChild(from) - - var source = document.createElement("a"); - source.className = "source"; - date.appendChild(source) - - this.template = { - item: item, - reply_to: reply_to, - retweet: retweet, - image: image, - username: username, - in_reply: in_reply_a, - message: message, - ago: ago, - source: source, - geo: geo, - images: images - } - - return jQuery.extend(true, {}, this.template); -} - -Core.prototype.getNewData = function() { - - var those = this; - var url = URI(mkApiRootPath("/posts")); - url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); - url.addSearch("limit", this.max_length); - if(this.since_id) { - url.addSearch("since_id", this.since_id); - url.addSearch("since_id_entity", this.since_id_entity); - } - - if (this.action == "mentions") { - url.addSearch("mentioned_entity", controller.stringForKey_("entity")); - } - - var http_method = "GET"; - var callback = function(resp) { - - try { - var json = JSON.parse(resp.responseText) - } catch (e) { - //alert(resp.responseText); - alert(url + " JSON parse error"); - throw e; - } - - those.newStatus(json); - } - - var data = null; - - if (controller.stringForKey_("user_access_token")) { - getURL(url.toString(), http_method, callback, data); // FIXME: error callback - } -} - - -Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { - - var _this = this; - - var url = URI(mkApiRootPath("/posts")); - - var http_method = "POST"; - var callback = function(data) { _this.getNewData(); } - - var data = { - "type": "https://tent.io/types/post/status/v0.1.0", - "published_at": (new Date().getTime() / 1000), - "permissions": { - "public": true - }, - "content": { - "text": content, - }, - }; - - var mentions = parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - if (mentions.length > 0) { - data["mentions"] = mentions; - } - - getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback -} - -/* Helper functions */ - -function replaceURLWithHTMLLinks(text, entities, message_node) { - var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(exp, "$1"); -} - -function replaceUsernamesWithLinks(text, mentions) { - return text; // FIXME! - var username = /(^|\s)(\^)(\w+)/ig; - var hash = /(^|\s)(#)(\w+)/ig; - text = text.replace(username, "$1$2$3"); - return text.replace(hash, "$1$2$3"); -} - -function replyTo(entity, status_id, mentions) { - var string = "^" + entity.replace("https://", "") + " "; - for (var i = 0; i < mentions.length; i++) { - var e = mentions[i].entity.replace("https://", ""); - if(string.indexOf(e) == -1) string += "^" + e + " "; - } - controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); -} - -function loadPlugin(url) { - var plugin = document.createElement("script"); - plugin.type = "text/javascript"; - plugin.src = url; - document.getElementsByTagName("head")[0].appendChild(plugin); -} - -String.prototype.startsWith = function(prefix) { - return this.indexOf(prefix) === 0; -} - -String.prototype.endsWith = function(suffix) { - return this.match(suffix+"$") == suffix; -}; - -function getUrlVars(url) -{ - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function replaceShortened(url, message_node) { - var api = "http://api.bitly.com"; - if(url.startsWith("http://j.mp/")) { - api = "http://api.j.mp"; - } - - var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key - - $.ajax({ - url: api_url, - success: function(data) { - var new_url = data.data.expand[0].long_url; - if (new_url) { - var regex = new RegExp(url, "g"); - message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); - } - }, - error:function (xhr, ajaxOptions, thrownError) { - alert(xhr.status); - alert(thrownError); - } - }); -} - -function findMentions(node, mentions) { - var text = node.innerHTML; - var mentions_in_text = []; - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var name = res[i]; - var e = name.substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - for (var j = 0; j < mentions.length; j++) { - var m = mentions[j]; - if(m.entity.startsWith(e)) { - mentions_in_text.push({ - entity: m.entity, - text: name - }); - } - } - } - } - - for (var i = 0; i < mentions_in_text.length; i++) { - var mention = mentions_in_text[i]; - - (function(mention) { // need this closure - findProfileURL(mention.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - var new_text = node.innerHTML.replace( - mention.text, - "" - + basic.name - + "" - ); - node.innerHTML = new_text; - } - } - }, null, false); // do not send auth-headers - } - }); - })(mention); - } -} - -function parseMentions(text, post_id, entity) { - var mentions = []; - - if (post_id && entity) { - mentions.push({ - post: post_id, - entity: entity - }) - } - - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var e = res[i].substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - if (e != entity) { - mentions.push({entity:e}); - } - } - } - - return mentions; -} - -function ISODateString(d){ - function pad(n){return n<10 ? '0'+n : n} - return d.getUTCFullYear()+'-' - + pad(d.getUTCMonth()+1)+'-' - + pad(d.getUTCDate())+'T' - + pad(d.getUTCHours())+':' - + pad(d.getUTCMinutes())+':' - + pad(d.getUTCSeconds())+'Z' -} - -var tentia_instance; diff --git a/English.lproj/Credits.rtf b/English.lproj/Credits.rtf deleted file mode 100644 index efb5826..0000000 --- a/English.lproj/Credits.rtf +++ /dev/null @@ -1,25 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf340 -{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720 - -\f0\b\fs24 \cf0 Engineering: -\b0 \ - Jeena Paradies\ -\ - -\b Testing: -\b0 \ - All the early adopters on Tent\ -\ - -\b Documentation: -\b0 \ - http://github.com/jeena/Tentia/wiki\ -\ - -\b With special thanks to: -\b0 \ - Mom\ -} \ No newline at end of file diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/English.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib deleted file mode 100644 index 930c402..0000000 --- a/English.lproj/MainMenu.xib +++ /dev/null @@ -1,2806 +0,0 @@ - - - - 1080 - 12C60 - 2843 - 1187.34 - 625.00 - - YES - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - YES - 2843 - 1810 - - - - YES - NSButton - NSButtonCell - NSCustomObject - NSImageCell - NSImageView - NSMenu - NSMenuItem - NSProgressIndicator - NSTextField - NSTextFieldCell - NSUserDefaultsController - NSView - NSWindowTemplate - WebView - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - Tentia - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - Tentia - - YES - - - About Tentia - - 2147483647 - - - - - - Check for Updates... - - 2147483647 - - - - - - Preferences... - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide Tentia - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit Tentia - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New Post - n - 1048576 - 2147483647 - - - - - - New global - t - 1835008 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Timeline - 1 - 1048576 - 2147483647 - - - - - - Mentions - 2 - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Logout - - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - YES - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - Tentia Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - NSFontManager - - - Controller - - - 15 - 2 - {{712, 280}, {397, 581}} - 1685586944 - Tentia - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {397, 581} - - - - - - - 13 - - YES - - YES - - - - - NO - YES - - - {397, 581} - - - - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - tentia - YES - - - SUUpdater - - - 15 - 2 - {{1077, 328}, {376, 581}} - 1685586944 - Mentions - NSWindow - - - - - 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {376, 581} - - - - - - - 12 - - YES - - - - - NO - YES - - - {376, 581} - - - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - mentions - YES - - - 7 - 2 - {{641, 502}, {480, 186}} - 1685586944 - Preferences - NSWindow - - - - - 256 - - YES - - - 268 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{20, 20}, {146, 146}} - - - - YES - - 0 - 33554432 - - NSImage - Icon - - 0 - 0 - 0 - YES - - NO - YES - - - - 268 - {{194, 82}, {266, 22}} - - - - _NS:9 - YES - - -1804599231 - 272630784 - - - LucidaGrande - 13 - 1044 - - https://example.tent.is - _NS:9 - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - NO - - - - 268 - {{191, 112}, {163, 17}} - - - - _NS:1535 - YES - - 68157504 - 272630784 - Add your entity to log in: - - _NS:1535 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - NO - - - - 268 - {{391, 46}, {75, 32}} - - - _NS:9 - YES - - 67108864 - 134217728 - Login - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 268 - {{373, 55}, {16, 16}} - - - - _NS:945 - 28938 - 100 - - - {480, 186} - - - - _NS:20 - - {{0, 0}, {2560, 1418}} - {10000000000000, 10000000000000} - preferences - YES - - - YES - - - - - YES - - - terminate: - - - - 448 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 564 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 371 - - - - capitalizeWord: - - - - 454 - - - - lowercaseWord: - - - - 455 - - - - uppercaseWord: - - - - 456 - - - - toggleAutomaticDashSubstitution: - - - - 460 - - - - orderFrontSubstitutionsPanel: - - - - 461 - - - - toggleAutomaticTextReplacement: - - - - 463 - - - - toggleAutomaticSpellingCorrection: - - - - 466 - - - - performFindPanelAction: - - - - 467 - - - - performFindPanelAction: - - - - 468 - - - - performFindPanelAction: - - - - 469 - - - - pasteAsPlainText: - - - - 471 - - - - showHelp: - - - - 494 - - - - newDocument: - - - - 540 - - - - timelineView - - - - 553 - - - - mentionsView - - - - 562 - - - - timelineViewWindow - - - - 565 - - - - mentionsViewWindow - - - - 566 - - - - globalHotkeyMenuItem - - - - 570 - - - - loginEntityTextField - - - - 605 - - - - login: - - - - 606 - - - - login: - - - - 609 - - - - logout: - - - - 612 - - - - loginViewWindow - - - - 616 - - - - loginActivityIndicator - - - - 622 - - - - makeKeyAndOrderFront: - - - - 547 - - - - checkForUpdates: - - - - 543 - - - - makeKeyAndOrderFront: - - - - 563 - - - - delegate - - - - 569 - - - - makeKeyAndOrderFront: - - - - 611 - - - - value: values.entity - - - - - - value: values.entity - value - values.entity - 2 - - - 619 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - - 72 - - - - - 82 - - - - - 79 - - - - - 205 - - - YES - - - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - YES - - - - - - 216 - - - YES - - - - - - 200 - - - YES - - - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - YES - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - YES - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - - 297 - - - - - 298 - - - - - 211 - - - YES - - - - - - 212 - - - YES - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - YES - - - - - - 349 - - - YES - - - - - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 419 - - - - - 449 - - - YES - - - - - - 450 - - - YES - - - - - - - - 451 - - - - - 452 - - - - - 453 - - - - - 457 - - - - - 458 - - - - - 459 - - - - - 462 - - - - - 464 - - - - - 465 - - - - - 470 - - - - - 491 - - - YES - - - - - - 492 - - - YES - - - - - - 493 - - - - - 533 - - - - - 535 - - - YES - - - - Timeline - - - 536 - - - YES - - - - - - 537 - - - timeline - - - 541 - - - - - 542 - - - - - 559 - - - YES - - - - Mentions - - - 560 - - - YES - - - - - - 561 - - - - - 592 - - - YES - - - - - - 593 - - - YES - - - - - - - - - - 594 - - - YES - - - - - - 595 - - - - - 596 - - - YES - - - - - - 597 - - - - - 598 - - - YES - - - - - - 599 - - - - - 600 - - - YES - - - - - - 601 - - - - - 602 - - - - - 603 - - - - - 610 - - - - - 613 - - - - - 620 - - - - - 73 - - - - - 551 - - - - - 544 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 130.IBPluginDependency - 131.IBPluginDependency - 134.IBPluginDependency - 136.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 149.IBPluginDependency - 150.IBPluginDependency - 19.IBPluginDependency - 195.IBPluginDependency - 196.IBPluginDependency - 197.IBPluginDependency - 198.IBPluginDependency - 199.IBPluginDependency - 200.IBPluginDependency - 201.IBPluginDependency - 202.IBPluginDependency - 203.IBPluginDependency - 204.IBPluginDependency - 205.IBPluginDependency - 206.IBPluginDependency - 207.IBPluginDependency - 208.IBPluginDependency - 209.IBPluginDependency - 210.IBPluginDependency - 211.IBPluginDependency - 212.IBPluginDependency - 213.IBPluginDependency - 214.IBPluginDependency - 215.IBPluginDependency - 216.IBPluginDependency - 217.IBPluginDependency - 218.IBPluginDependency - 219.IBPluginDependency - 220.IBPluginDependency - 221.IBPluginDependency - 23.IBPluginDependency - 236.IBPluginDependency - 239.IBPluginDependency - 24.IBPluginDependency - 29.IBPluginDependency - 295.IBPluginDependency - 296.IBPluginDependency - 297.IBPluginDependency - 298.IBPluginDependency - 346.IBPluginDependency - 348.IBPluginDependency - 349.IBPluginDependency - 350.IBPluginDependency - 351.IBPluginDependency - 354.IBPluginDependency - 419.IBPluginDependency - 449.IBPluginDependency - 450.IBPluginDependency - 451.IBPluginDependency - 452.IBPluginDependency - 453.IBPluginDependency - 457.IBPluginDependency - 458.IBPluginDependency - 459.IBPluginDependency - 462.IBPluginDependency - 464.IBPluginDependency - 465.IBPluginDependency - 470.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 493.IBPluginDependency - 5.IBPluginDependency - 533.IBPluginDependency - 535.IBPluginDependency - 535.IBWindowTemplateEditedContentRect - 535.NSWindowTemplate.visibleAtLaunch - 536.IBPluginDependency - 537.IBPluginDependency - 541.IBPluginDependency - 542.IBPluginDependency - 544.IBPluginDependency - 551.IBPluginDependency - 559.IBPluginDependency - 559.IBWindowTemplateEditedContentRect - 559.NSWindowTemplate.visibleAtLaunch - 56.IBPluginDependency - 560.IBPluginDependency - 561.IBPluginDependency - 57.IBPluginDependency - 58.IBPluginDependency - 592.IBPluginDependency - 592.NSWindowTemplate.visibleAtLaunch - 593.IBPluginDependency - 594.IBPluginDependency - 595.IBPluginDependency - 596.IBPluginDependency - 597.IBPluginDependency - 598.IBPluginDependency - 599.IBPluginDependency - 600.IBPluginDependency - 601.IBPluginDependency - 602.IBPluginDependency - 603.IBPluginDependency - 610.IBPluginDependency - 613.IBPluginDependency - 620.IBPluginDependency - 72.IBPluginDependency - 73.IBPluginDependency - 79.IBPluginDependency - 81.IBPluginDependency - 82.IBPluginDependency - 83.IBPluginDependency - 92.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{202, 175}, {397, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{344, 175}, {376, 581}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 627 - - - - YES - - Controller - NSObject - - YES - - YES - login: - logout: - - - YES - id - id - - - - YES - - YES - login: - logout: - - - YES - - login: - id - - - logout: - id - - - - - YES - - YES - globalHotkeyMenuItem - loginActivityIndicator - loginViewWindow - logoLayer - mentionsView - mentionsViewWindow - timelineView - timelineViewWindow - viewDelegate - - - YES - NSMenuItem - NSProgressIndicator - NSWindow - NSImageView - WebView - NSWindow - WebView - NSWindow - ViewDelegate - - - - YES - - YES - globalHotkeyMenuItem - loginActivityIndicator - loginViewWindow - logoLayer - mentionsView - mentionsViewWindow - timelineView - timelineViewWindow - viewDelegate - - - YES - - globalHotkeyMenuItem - NSMenuItem - - - loginActivityIndicator - NSProgressIndicator - - - loginViewWindow - NSWindow - - - logoLayer - NSImageView - - - mentionsView - WebView - - - mentionsViewWindow - NSWindow - - - timelineView - WebView - - - timelineViewWindow - NSWindow - - - viewDelegate - ViewDelegate - - - - - IBProjectSource - ./Classes/Controller.h - - - - SUUpdater - NSObject - - checkForUpdates: - id - - - checkForUpdates: - - checkForUpdates: - id - - - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ./Classes/SUUpdater.h - - - - ViewDelegate - NSObject - - IBProjectSource - ./Classes/ViewDelegate.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - Icon - NSMenuCheckmark - NSMenuMixedState - - - YES - {512, 512} - {11, 11} - {10, 3} - - - - diff --git a/English.lproj/NewMessageWindow.xib b/English.lproj/NewMessageWindow.xib deleted file mode 100644 index 273c84f..0000000 --- a/English.lproj/NewMessageWindow.xib +++ /dev/null @@ -1,372 +0,0 @@ - - - - 1080 - 12C60 - 2843 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2843 - - - YES - NSCustomObject - NSTextField - NSTextFieldCell - NSView - NSWindowTemplate - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NewMessageWindow - - - FirstResponder - - - 7 - 2 - {{133, 535}, {299, 113}} - 1886913536 - New Post - NSWindow - View - - {94, 86} - - - 256 - - YES - - - 274 - {{0, 22}, {299, 91}} - - - - YES - - -1809842175 - 272629760 - - - LucidaGrande - 13 - 1044 - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - 3 - MAA - - - - NO - - - - 268 - {{257, 2}, {38, 17}} - - - YES - - 68157504 - 71304192 - 256 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - - - NO - - - {299, 113} - - - - - {{0, 0}, {2560, 1418}} - {94, 108} - {10000000000000, 10000000000000} - newPost - NO - 22 - YES - - - NSApplication - - - - - YES - - - window - - - - 18 - - - - sendTweet: - - - - 100031 - - - - textField - - - - 100034 - - - - counter - - - - 100038 - - - - delegate - - - - 100035 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - 5 - - - YES - - - - Window - - - 6 - - - YES - - - - - - - -3 - - - Application - - - 100028 - - - YES - - - - - - 100029 - - - - - 100036 - - - YES - - - - - - 100037 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 100028.IBPluginDependency - 100029.IBPluginDependency - 100036.IBPluginDependency - 100037.IBPluginDependency - 5.IBPluginDependency - 5.IBWindowTemplateEditedContentRect - 6.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{127, 736}, {299, 113}} - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 100038 - - - - YES - - NewMessageWindow - NSDocument - - sendTweet: - NSControl - - - sendTweet: - - sendTweet: - NSControl - - - - YES - - YES - counter - textField - - - YES - NSTextField - NSTextField - - - - YES - - YES - counter - textField - - - YES - - counter - NSTextField - - - textField - NSTextField - - - - - IBProjectSource - ./Classes/NewMessageWindow.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - diff --git a/Icon.icns b/Icon.icns deleted file mode 100644 index 4359f248765037abdd0e762e248e8db9ddcf59c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121861 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 z 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 R^acShO?4f$Dpjk9{{u?JWhMXs diff --git a/NewMessageWindow.h b/NewMessageWindow.h deleted file mode 100644 index 7d993e6..0000000 --- a/NewMessageWindow.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// NewTweetWindow.h -// Tentia -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - - -#import - - -@interface NewMessageWindow : NSDocument -{ - IBOutlet NSTextField *textField; - IBOutlet NSTextField *counter; - NSString *inReplyTostatusId; - NSString *inReplyToEntity; -} - -@property (nonatomic, retain) IBOutlet NSTextField *textField; -@property (nonatomic, retain) IBOutlet NSTextField *counter; - -- (IBAction)sendTweet:(NSControl *)control; -- (void)inReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; -- (void)withString:(NSString *)aString; - -@end diff --git a/NewMessageWindow.m b/NewMessageWindow.m deleted file mode 100644 index 98d56c1..0000000 --- a/NewMessageWindow.m +++ /dev/null @@ -1,158 +0,0 @@ -// -// NewTweetWindow.m -// Tentia -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "NewMessageWindow.h" -#import "Constants.h" -#import "TweetModel.h" - -@interface NewMessageWindow (private) -- (BOOL)isCommandEnterEvent:(NSEvent *)e; -@end - -@implementation NewMessageWindow - -@synthesize textField, counter; - - -- (id)init -{ - self = [super init]; - if (self) { - - // Add your subclass-specific initialization here. - // If an error occurs here, send a [self release] message and return nil. - inReplyTostatusId = @""; - inReplyToEntity = @""; - } - return self; -} - -- (NSString *)windowNibName -{ - // Override returning the nib file name of the document - // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. - return @"NewMessageWindow"; -} - -- (NSString *)displayName { - return @"New Post"; -} - -- (void)windowControllerDidLoadNib:(NSWindowController *) aController -{ - [super windowControllerDidLoadNib:aController]; - // Add any code here that needs to be executed once the windowController has loaded the document's window. - -} - -- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError -{ - // Insert code here to write your document to data of the specified type. If the given outError != NULL, ensure that you set *outError when returning nil. - - // You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. - - // For applications targeted for Panther or earlier systems, you should use the deprecated API -dataRepresentationOfType:. In this case you can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. - - if ( outError != NULL ) { - *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; - } - return nil; -} - -- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError -{ - // Insert code here to read your document from the given data of the specified type. If the given outError != NULL, ensure that you set *outError when returning NO. - - // You can also choose to override -readFromFileWrapper:ofType:error: or -readFromURL:ofType:error: instead. - - // For applications targeted for Panther or earlier systems, you should use the deprecated API -loadDataRepresentation:ofType. In this case you can also choose to override -readFromFile:ofType: or -loadFileWrapperRepresentation:ofType: instead. - - if ( outError != NULL ) { - *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL]; - } - return YES; -} - -- (void)inReplyTo:(NSString *)entity statusId:(NSString *)statusId withString:(NSString *)string { - [textField setStringValue:string]; - NSRange range = {[[textField stringValue] length] , 0}; - [[textField currentEditor] setSelectedRange:range]; - - [inReplyTostatusId release]; - inReplyTostatusId = statusId; - [inReplyTostatusId retain]; - - [inReplyToEntity release]; - inReplyToEntity = entity; - [inReplyToEntity retain]; - - [self controlTextDidChange:nil]; -} - -- (void)withString:(NSString *)aString { - [textField setStringValue:aString]; - NSRange range = {[[textField stringValue] length] , 0}; - [[textField currentEditor] setSelectedRange:range]; - - [self controlTextDidChange:nil]; -} - --(void)controlTextDidChange:(NSNotification *)aNotification { - NSInteger c = MESSAGE_MAX_LENGTH - [[textField stringValue] length]; - [counter setIntValue:c]; - if(c < 0) { - [counter setTextColor:[NSColor redColor]]; - } else { - [counter setTextColor:[NSColor controlTextColor]]; - } -} - - -#pragma mark Keyboard delegate methods - -- (IBAction)sendTweet:(NSControl *)control { - if ([[control stringValue] length] <= MESSAGE_MAX_LENGTH) { - TweetModel *tweet = [[[TweetModel alloc] init] autorelease]; - tweet.text = [control stringValue]; - tweet.inReplyTostatusId = inReplyTostatusId; - tweet.inReplyToEntity = inReplyToEntity; - [[NSNotificationCenter defaultCenter] postNotificationName:@"sendTweet" object:tweet]; - [self close]; - } else { - NSBeep(); - } - -} - -- (BOOL)isCommandEnterEvent:(NSEvent *)e { - NSUInteger flags = (e.modifierFlags & NSDeviceIndependentModifierFlagsMask); - BOOL isCommand = (flags & NSCommandKeyMask) == NSCommandKeyMask; - BOOL isEnter = (e.keyCode == 0x24); // VK_RETURN - return (isCommand && isEnter); -} - -- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector -{ - BOOL retval = NO; - - if (commandSelector == @selector(insertNewline:)) { - retval = YES; // causes Apple to NOT fire the default enter action - textField.stringValue = [NSString stringWithFormat:@"%@\n", textField.stringValue]; - - [[[textField window] fieldEditor:YES forObject:nil] scrollRangeToVisible:NSMakeRange([[textField stringValue] length], 0)]; - [[[textField window] fieldEditor:YES forObject:nil] setSelectedRange:NSMakeRange([[textField stringValue] length], 0)]; - } - - if (commandSelector == @selector(noop:)) { - retval = YES; - [self sendTweet:control]; - } - - return retval; -} -@end diff --git a/OauthImplementation.js b/OauthImplementation.js deleted file mode 100644 index 09e40bb..0000000 --- a/OauthImplementation.js +++ /dev/null @@ -1,142 +0,0 @@ -// -// OauthImplementation.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - -function getUrlVars(url) { - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function OauthImplementation() { - this.app_info = { - "id": null, - "name": "Tentia", - "description": "A small TentStatus client.", - "url": "http://jabs.nu/Tentia/", - "icon": "http://jabs.nu/Tentia/icon.png", - "redirect_uris": [ - "tentia://oauthtoken" - ], - "scopes": { - "read_posts": "Uses posts to show them in a list", - "write_posts": "Posts on users behalf" - } - }; - this.register_data = null; - this.profile = null; - this.state = null; - - this.authenticate(); -} - -OauthImplementation.prototype.authenticate = function() { - this.entity = controller.stringForKey_("entity"); - this.requestProfileURL(this.entity); -} - -OauthImplementation.prototype.apiRoot = function() { - return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; -} - -OauthImplementation.prototype.requestProfileURL = function (entity) { - var those = this; - findProfileURL(entity, function(profile_url) { - those.register(profile_url); - }); -} - -OauthImplementation.prototype.register = function (url) { - var those = this; - getURL(url, "GET", function(resp) { - those.profile = JSON.parse(resp.responseText); - controller.setString_forKey_(those.apiRoot(), "api_root"); - var callback = function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data); - } - getURL(mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info)); - }); -} - -OauthImplementation.prototype.authRequest = function(register_data) { - // id - // mac_key_id - // mac_key - // mac_algorithm - this.register_data = register_data; - - // Needed for later App Registration Modification - controller.setString_forKey_(register_data["mac_key"], "app_mac_key"); - controller.setString_forKey_(register_data["mac_key_id"], "app_mac_key_id"); - controller.setString_forKey_(register_data["id"], "app_id"); - controller.setString_forKey_(register_data["mac_algorithm"], "app_mac_algorithm"); - - this.state = makeid(19); - var auth = "/oauth/authorize?client_id=" + register_data["id"] - + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) - + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") - + "&state=" + this.state - + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); - - controller.openURL_(this.apiRoot() + auth); -} - -OauthImplementation.prototype.requestAccessToken = function(responseBody) { - // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv - var urlVars = getUrlVars(responseBody); - if(this.state && this.state != "" && urlVars["state"] == this.state) { - - var url = mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; - - var requestBody = JSON.stringify({ - 'code' : urlVars["code"], - 'token_type' : "mac" - }); - - var those = this; - var http_method = "POST"; - var callback = function(resp) { - those.requestAccessTokenTicketFinished(resp.responseText); - }; - - var auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("app_mac_key"), - controller.stringForKey_("app_mac_key_id") - ); - - getURL(url, http_method, callback, requestBody, auth_header); - - } else { - alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") - } - - this.state = null; // reset the state -} - -OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) { - - var access = JSON.parse(responseBody); - - controller.setString_forKey_(access["access_token"], "user_access_token"); - controller.setString_forKey_(access["mac_key"], "user_mac_key"); - controller.setString_forKey_(access["mac_algorithm"], "user_mac_algorithm"); - controller.setString_forKey_(access["token_type"], "user_token_type"); - - controller.loggedIn(); -} - -var tentia_oauth; \ No newline at end of file diff --git a/ReleaseNotes.html b/ReleaseNotes.html deleted file mode 100644 index 421c1ac..0000000 --- a/ReleaseNotes.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - Tentia Release Notes - - - - -

Tentia 0.1.1

-

Bugfixes

-

Changed to send on Cmd+Enter.

- -

Tentia 0.1.0

-

First attempt to rewrite the old Twitter client Twittia to a new and shiny Tent client Tentia.

- - - \ No newline at end of file diff --git a/Sparkle.framework/Headers b/Sparkle.framework/Headers deleted file mode 120000 index a177d2a..0000000 --- a/Sparkle.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/Sparkle.framework/Resources b/Sparkle.framework/Resources deleted file mode 120000 index 953ee36..0000000 --- a/Sparkle.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/Sparkle.framework/Sparkle b/Sparkle.framework/Sparkle deleted file mode 120000 index b2c5273..0000000 --- a/Sparkle.framework/Sparkle +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Sparkle \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Headers/SUAppcast.h b/Sparkle.framework/Versions/A/Headers/SUAppcast.h deleted file mode 100644 index 171148a..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUAppcast.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// SUAppcast.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCAST_H -#define SUAPPCAST_H - -@class SUAppcastItem; -@interface SUAppcast : NSObject { - NSArray *items; - NSString *userAgentString; - id delegate; - NSMutableData *incrementalData; -} - -- (void)fetchAppcastFromURL:(NSURL *)url; -- (void)setDelegate:delegate; -- (void)setUserAgentString:(NSString *)userAgentString; - -- (NSArray *)items; - -@end - -@interface NSObject (SUAppcastDelegate) -- (void)appcastDidFinishLoading:(SUAppcast *)appcast; -- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h deleted file mode 100644 index 7f1ca65..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// SUAppcastItem.h -// Sparkle -// -// Created by Andy Matuschak on 3/12/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUAPPCASTITEM_H -#define SUAPPCASTITEM_H - -@interface SUAppcastItem : NSObject { - NSString *title; - NSDate *date; - NSString *itemDescription; - - NSURL *releaseNotesURL; - - NSString *DSASignature; - NSString *minimumSystemVersion; - - NSURL *fileURL; - NSString *versionString; - NSString *displayVersionString; - - NSDictionary *propertiesDictionary; -} - -// Initializes with data from a dictionary provided by the RSS class. -- initWithDictionary:(NSDictionary *)dict; - -- (NSString *)title; -- (NSString *)versionString; -- (NSString *)displayVersionString; -- (NSDate *)date; -- (NSString *)itemDescription; -- (NSURL *)releaseNotesURL; -- (NSURL *)fileURL; -- (NSString *)DSASignature; -- (NSString *)minimumSystemVersion; - -// Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. -- (NSDictionary *)propertiesDictionary; - -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/Sparkle.framework/Versions/A/Headers/SUUpdater.h deleted file mode 100644 index e78c4d3..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUUpdater.h +++ /dev/null @@ -1,118 +0,0 @@ -// -// SUUpdater.h -// Sparkle -// -// Created by Andy Matuschak on 1/4/06. -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SUUPDATER_H -#define SUUPDATER_H - -#import - -@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; -@interface SUUpdater : NSObject { - NSTimer *checkTimer; - SUUpdateDriver *driver; - - SUHost *host; - IBOutlet id delegate; -} - -+ (SUUpdater *)sharedUpdater; -+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle; -- (NSBundle *)hostBundle; - -- (void)setDelegate:(id)delegate; -- delegate; - -- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; -- (BOOL)automaticallyChecksForUpdates; - -- (void)setUpdateCheckInterval:(NSTimeInterval)interval; -- (NSTimeInterval)updateCheckInterval; - -- (void)setFeedURL:(NSURL *)feedURL; -- (NSURL *)feedURL; - -- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; -- (BOOL)sendsSystemProfile; - -- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; -- (BOOL)automaticallyDownloadsUpdates; - -// This IBAction is meant for a main menu item. Hook up any menu item to this action, -// and Sparkle will check for updates and report back its findings verbosely. -- (IBAction)checkForUpdates:sender; - -// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, -// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an -// update is found, it will be downloaded and prepped for installation. -- (void)checkForUpdatesInBackground; - -// Date of last update check. Returns null if no check has been performed. -- (NSDate*)lastUpdateCheckDate; - -// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, -// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. -- (void)checkForUpdateInformation; - -// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. -- (void)resetUpdateCycle; - -- (BOOL)updateInProgress; -@end - -@interface NSObject (SUUpdaterDelegateInformalProtocol) -// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. -- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; - -// Use this to override the default behavior for Sparkle prompting the user about automatic update checks. -- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; - -// Implement this if you want to do some special handling with the appcast once it finishes loading. -- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; - -// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding -// a valid update, if any, in the given appcast. -- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; - -// Sent when a valid update is found by the update driver. -- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; - -// Sent when a valid update is not found. -- (void)updaterDidNotFindUpdate:(SUUpdater *)update; - -// Sent immediately before installing the specified update. -- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; - -// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. -- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; - -// Called immediately before relaunching. -- (void)updaterWillRelaunchApplication:(SUUpdater *)updater; - -// This method allows you to provide a custom version comparator. -// If you don't implement this method or return nil, the standard version comparator will be used. -- (id )versionComparatorForUpdater:(SUUpdater *)updater; - -// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. -- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; - -@end - -// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. -#ifdef DEBUG -#define SU_MIN_CHECK_INTERVAL 60 -#else -#define SU_MIN_CHECK_INTERVAL 60*60 -#endif - -#ifdef DEBUG -#define SU_DEFAULT_CHECK_INTERVAL 60 -#else -#define SU_DEFAULT_CHECK_INTERVAL 60*60*24 -#endif - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h b/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h deleted file mode 100644 index 3d11ae8..0000000 --- a/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// SUVersionComparisonProtocol.h -// Sparkle -// -// Created by Andy Matuschak on 12/21/07. -// Copyright 2007 Andy Matuschak. All rights reserved. -// - -#ifndef SUVERSIONCOMPARISONPROTOCOL_H -#define SUVERSIONCOMPARISONPROTOCOL_H - -/*! - @protocol - @abstract Implement this protocol to provide version comparison facilities for Sparkle. -*/ -@protocol SUVersionComparison - -/*! - @method - @abstract An abstract method to compare two version strings. - @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. -*/ -- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; - -@end - -#endif diff --git a/Sparkle.framework/Versions/A/Headers/Sparkle.h b/Sparkle.framework/Versions/A/Headers/Sparkle.h deleted file mode 100644 index 08dd577..0000000 --- a/Sparkle.framework/Versions/A/Headers/Sparkle.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Sparkle.h -// Sparkle -// -// Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) -// Copyright 2006 Andy Matuschak. All rights reserved. -// - -#ifndef SPARKLE_H -#define SPARKLE_H - -// This list should include the shared headers. It doesn't matter if some of them aren't shared (unless -// there are name-space collisions) so we can list all of them to start with: - -#import - -#import -#import -#import - -#endif diff --git a/Sparkle.framework/Versions/A/Resources/Info.plist b/Sparkle.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index c7f277d..0000000 --- a/Sparkle.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - Sparkle - CFBundleIdentifier - org.andymatuschak.Sparkle - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Sparkle - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.5 Beta 6 - CFBundleSignature - ???? - CFBundleVersion - 313 - - diff --git a/Sparkle.framework/Versions/A/Resources/License.txt b/Sparkle.framework/Versions/A/Resources/License.txt deleted file mode 100644 index 20466c4..0000000 --- a/Sparkle.framework/Versions/A/Resources/License.txt +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (c) 2006 Andy Matuschak - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist b/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist deleted file mode 100644 index 92ef947..0000000 --- a/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist +++ /dev/null @@ -1,174 +0,0 @@ - - - - - ADP2,1 - Developer Transition Kit - MacBook1,1 - MacBook (Core Duo) - MacBook2,1 - MacBook (Core 2 Duo) - MacBook4,1 - MacBook (Core 2 Duo Feb 2008) - MacBookAir1,1 - MacBook Air (January 2008) - MacBookPro1,1 - MacBook Pro Core Duo (15-inch) - MacBookPro1,2 - MacBook Pro Core Duo (17-inch) - MacBookPro2,1 - MacBook Pro Core 2 Duo (17-inch) - MacBookPro2,2 - MacBook Pro Core 2 Duo (15-inch) - MacBookPro3,1 - MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) - MacBookPro3,2 - MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) - MacBookPro4,1 - MacBook Pro (Core 2 Duo Feb 2008) - MacPro1,1 - Mac Pro (four-core) - MacPro2,1 - Mac Pro (eight-core) - MacPro3,1 - Mac Pro (January 2008 4- or 8- core "Harpertown") - Macmini1,1 - Mac Mini (Core Solo/Duo) - PowerBook1,1 - PowerBook G3 - PowerBook2,1 - iBook G3 - PowerBook2,2 - iBook G3 (FireWire) - PowerBook2,3 - iBook G3 - PowerBook2,4 - iBook G3 - PowerBook3,1 - PowerBook G3 (FireWire) - PowerBook3,2 - PowerBook G4 - PowerBook3,3 - PowerBook G4 (Gigabit Ethernet) - PowerBook3,4 - PowerBook G4 (DVI) - PowerBook3,5 - PowerBook G4 (1GHz / 867MHz) - PowerBook4,1 - iBook G3 (Dual USB, Late 2001) - PowerBook4,2 - iBook G3 (16MB VRAM) - PowerBook4,3 - iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) - PowerBook5,1 - PowerBook G4 (17 inch) - PowerBook5,2 - PowerBook G4 (15 inch FW 800) - PowerBook5,3 - PowerBook G4 (17-inch 1.33GHz) - PowerBook5,4 - PowerBook G4 (15 inch 1.5/1.33GHz) - PowerBook5,5 - PowerBook G4 (17-inch 1.5GHz) - PowerBook5,6 - PowerBook G4 (15 inch 1.67GHz/1.5GHz) - PowerBook5,7 - PowerBook G4 (17-inch 1.67GHz) - PowerBook5,8 - PowerBook G4 (Double layer SD, 15 inch) - PowerBook5,9 - PowerBook G4 (Double layer SD, 17 inch) - PowerBook6,1 - PowerBook G4 (12 inch) - PowerBook6,2 - PowerBook G4 (12 inch, DVI) - PowerBook6,3 - iBook G4 - PowerBook6,4 - PowerBook G4 (12 inch 1.33GHz) - PowerBook6,5 - iBook G4 (Early-Late 2004) - PowerBook6,7 - iBook G4 (Mid 2005) - PowerBook6,8 - PowerBook G4 (12 inch 1.5GHz) - PowerMac1,1 - Power Macintosh G3 (Blue & White) - PowerMac1,2 - Power Macintosh G4 (PCI Graphics) - PowerMac10,1 - Mac Mini G4 - PowerMac10,2 - Mac Mini (Late 2005) - PowerMac11,2 - Power Macintosh G5 (Late 2005) - PowerMac12,1 - iMac G5 (iSight) - PowerMac2,1 - iMac G3 (Slot-loading CD-ROM) - PowerMac2,2 - iMac G3 (Summer 2000) - PowerMac3,1 - Power Macintosh G4 (AGP Graphics) - PowerMac3,2 - Power Macintosh G4 (AGP Graphics) - PowerMac3,3 - Power Macintosh G4 (Gigabit Ethernet) - PowerMac3,4 - Power Macintosh G4 (Digital Audio) - PowerMac3,5 - Power Macintosh G4 (Quick Silver) - PowerMac3,6 - Power Macintosh G4 (Mirrored Drive Door) - PowerMac4,1 - iMac G3 (Early/Summer 2001) - PowerMac4,2 - iMac G4 (Flat Panel) - PowerMac4,4 - eMac - PowerMac4,5 - iMac G4 (17-inch Flat Panel) - PowerMac5,1 - Power Macintosh G4 Cube - PowerMac6,1 - iMac G4 (USB 2.0) - PowerMac6,3 - iMac G4 (20-inch Flat Panel) - PowerMac6,4 - eMac (USB 2.0, 2005) - PowerMac7,2 - Power Macintosh G5 - PowerMac7,3 - Power Macintosh G5 - PowerMac8,1 - iMac G5 - PowerMac8,2 - iMac G5 (Ambient Light Sensor) - PowerMac9,1 - Power Macintosh G5 (Late 2005) - RackMac1,1 - Xserve G4 - RackMac1,2 - Xserve G4 (slot-loading, cluster node) - RackMac3,1 - Xserve G5 - Xserve1,1 - Xserve (Intel Xeon) - Xserve2,1 - Xserve (January 2008 quad-core) - iMac1,1 - iMac G3 (Rev A-D) - iMac4,1 - iMac (Core Duo) - iMac4,2 - iMac for Education (17-inch, Core Duo) - iMac5,1 - iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) - iMac5,2 - iMac (Core 2 Duo, 17 inch, Combo Drive) - iMac6,1 - iMac (Core 2 Duo, 24 inch, SuperDrive) - iMac8,1 - iMac (April 2008) - - diff --git a/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib deleted file mode 100644 index 22f13f8..0000000 --- a/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib +++ /dev/null @@ -1,56 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - CLASS - SUStatusController - LANGUAGE - ObjC - OUTLETS - - actionButton - NSButton - progressBar - NSProgressIndicator - - SUPERCLASS - SUWindowController - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib b/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib deleted file mode 100644 index a9ac867..0000000 --- a/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib deleted file mode 100644 index 4f1d598179ccecb32c7a12eead96bb5fe3663eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7344 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 I{hK-Azn((800000 diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 6b926302ea4751c08c4de4d180bdee22f01709ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7278 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 f{!{!>{8{{^8|{{$9#l~I - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index b4353d2f7c1f412919b46c5526549892ff7ab525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10493 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index b403a3e45f6ac2ba253f8f9747b79ecd2acb28e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13189 zcmeHtd3+Pq+W$FcCTaFgk|u4Mwn>vfJ7H}py9k9+C_*W;6exuf+R#SQq$VkQ&|3J7`ymFq=Zz>TYjf-EkGsJJ5TY`^EsB&A&7zW@CGc>j3QPm`HB+jE}f z`z&W>GzA0ESkIpO5k>@Yh(`*fL~5j& zENVh{$*T8J5>ibq8QNWbSm%rRD6SEbOUtkG&-2$6#s_US;uNGsI+TZcqdw>wGzb-< z;baW~u@_r$&M06YYbz}Mk2JPudjiFgv8il<>8uES0E1{}f7_(r@4Q+yM?9p8bM z;}!Tp{1AQ=?M8d>W4H~k!RztU_#b!&(&B&O_whb_03XDM@hA9Gd<=huf5boG-|-*# zPkf$Oh?Uq#CUFuk=|u|2AaX4kOh%FtQbxv+38a!tBQ<0e36dK~gha_~_?}N%$lu64 zAN#a*mwm5J$KqPQ|G?4X5W)I16Xx9GsKO=3Jb}dATlJcdie24L6J{;)ZjhxiMTR zH70+7!ClYI!h6s*u93T$yOq0*`#X0JcQ3b`yN`Q-dxqP?ea3yx9pk>> zj&omfC%CV;ueooyliau5cii{f58RL3PuwZ)XYMrj3->Gc2X}^d@g@8y{yOp!KbjxI zm-1uzGJYIC9`EMM`3kJ$C-9a0M1B%KnXlrf@YVcOei~oHPv?F748E4HOKrj%SH#SfgZ-cSJ!l4joKiEZdN@;niuhAc6^T2g+1a9Vp zBePg9c}CV!1?#~C>=GKJ0asfnK6g06dKQO6u`#}ouihW25roq6$^g(4^iK?g>cVqm zy5svuOqY5Ey4kXmVOjs&7*J6y(;^R`q!pX#Zu(6tHc=IQpDO6r^d#NaiUo?OlD^l9 zjY1p!b{|L~AN4{7ut#ZMY!8&DT#b-cK4C%=*u1~YA88B#!@{AmNVu^nwh#41{ZM~2 zV3N#qf3!-z2*KDkGyn~p29q^MW8p@56O$5BfxVUt9Tu()``Y=*2)GsvMniy=ah!?L zq*d}7L(#A`Xc#I&17UMxnqxlTQMo@hp|l*n<&ni`1nsd|NJb-32^xj2L!;3cREox; zGBgg2N9CvjO+b}YO-tz%>ZAA3`{{%9VfqApiatyKLATQ#^k4gdhDm5LszOsxH7MOQ zkWi678ViJcOc#Ls@^Evc)<3bde6(+dKS;+=4JCB+0W=*(`p^ti3rws7wVa9SQ3DE~ z>(MMp`Iuf7YBXy?W$ECnC}M>44)hGhZv_pNY_!V z5o_p3T0%!9_8Ou++E5rZQ5`Kj0;@-0{V0k74b4EsY%~YWMe|?}3(!K;f^I~M5JjzU ze-pYH-3;@OEU%4(gF$};wjzlD2#HFB0E6YW!p0b*s=T?$A7Qk@b!B1{({b1l=v^hW zz#S+x5FBH7z>-092pw!BCaNDR2q^w3qzJKpBPgPV_NNAFNbKe|+G7n6b`x3vPy5qB zha`SR(cdMW-iemMj^@I4??(5ad(m>V0
%!Tm~5`dXQPa8(qpW$VM$&=JGJ!Egka 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 diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings deleted file mode 100644 index b31f928fd57dad14168601c6c9bc3bacb27c9cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9806 zcmeI2TTdHD6vyW|pJG!rrHu-`y|t|yBYdH!b^ZMm&h>qu z?=yY6p&v$izX$`hT!vnp*-=Y7yw*4UM{4cssjD#?YJ03b9)u6VBdz&i*i_4-@a6RB zIJCkr&SrdHPaUm0(bK8^x2{%isfAs7ar8iA>0`%{#uZ_#_HKBnr(g6w)@(+aU)wiRKO>?SnmrCQV@tbVM7xBtkyb$7$n#K7STB(>h&><9W7p1G;vK68=3FX$z#R+kdVb^?6S)5x@^Vs0a?dAbTeA# zJXxcfnJiKu`FV1J%hT-bFuavtwnYcg;NvUHw_cC;G{?y-EC7y)aqO1i6-+*%n^rLUY?H+Gtz35@a*RCv*wVJa)osA_Kcw9^ID))+2#FLvz zXBLGb56eHq$lH>Yqr<(@ZV5$H5#lPW%+Le5ihNt>`#>MhUWViugA73`4`u_0wIixC^ae$Syy&SzHlT(h z?dQmm8SKk0j+ct?gVsNew81--#9@rpbr>ke9gcqte+-2X|J1rff7V_t8rc%(Mn$tu z!O&m~v{8-Wu3JN^W&FJyT|T|aQ1fZgqTIXmMqWX~e3Or%^?lM~H~bO#Z^?i0J@Zi4 zBKXBnJlSM9dfe3>BiTMXQnh1ucqKUg`mAqbw=$ZT?{J&+>TPG@G++ zg~j~wexjJgCH=KzSgsQiDp|d}6LoieW_MGZL1qT!fy^uunVtLTCueAF^^)g3Yc*9s zlZak85wS;o%$Gl1<5BNzmr$vT8!9eHgc@uLn*qI(f(S6}mWN$Oc*VU6c%Pn^D=JktF zVl|)P>iKIv*Cg}&Jk+8g_Ylxe=J%V2?GpCC`$+P=w2O6Osi_K~_GnA0-6%UOVYQSM z;iXWQS2j7F&6N<<&3)hkTnJipbI6q3_B1sKu{G)x}Eq-L0)V7UvetRjP^`@YNh|xb5VIr7rIL zs7f(eo4wt2J}qNx{MGIoe~!^8<;_HAc?S7|7)4Yk+F~zx2CLrlm1EfQPKK*gS(abi z9`GN_N}SbYT+UcUv+jvE+*8--{z*yq_Ll3uc~vk)lSMr%t!i)is>_r2^YA3IU3|$Ho(pi=v zL)i^46;y7!L;a?p2*1X48I70XtEY<6Ev*2WdG{Jc+`F%p)6Ug<;)G5ajbD!|Ig$Hk zFmN+xc5@4=oI7WV1JAYn$g7`qp6J&L+&^1{Ih*R1`XAk*acWaeQ$fMBIbG}eB&+iM$C&&qD*JpI3a2NCvGx;4vxo)ke z$q;>B%Wx-lI}ybF2CFANcr;1(ydG_>@@u*!Pd8v?lxQ^+tDy-zlm8xx@XhLNYtt=x xSsu5iGn2?#q|qV`^(w!Va(tg#oBJYnftKO%CvGy`550a&72dwqGc0k%#lIFPR=NNH diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index ab36d31..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 658 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9C7010 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 7630390c89e63ae4aa0af3491cb03518c1321d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7148 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 diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 994d4c3..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,67 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2fb8a83..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 18 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index e7e7497db4bbc8e89d15986ad7531f1b0a07c217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10623 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 diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index b1cd28e..0000000 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,21 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - 41 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index e8dc5b88028a8bf491e46d29e25091c39735c921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13263 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 C5g()g diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings deleted file mode 100644 index 16e0787b46dd69d9a9d59133dfdfc683787f5293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8216 zcmeHM+fEcg5UppP{eXdpBt$goqcMO=j3J=$6653S1(>kRlD)9<^XfTWTXfH5*;%s< z8)691)0dj+s#Dcxs(=5H=dvw{97`X6+xUBdpRVLG!tO?f$Ook=P~x0>^Fv^tPGL92)V>5cRhJ$y^%W)Coz zV|?QX^AZ`Ozbor#{lN1Wt2z7HwG%vLa*lDEP5p*gnPQ}e-puXE-a+X-jEym?EoT__ zn&*%>kzMR2kvI5#XuEn1Ppw7td>eMnWy{&SR5P9uy` zTjHaGu?#Z14$nszXFJ4&qEPWhIs1@siM1+&vZx!8eu5U!$>?~B=PKG1jed_KXA#ch zd_(C7E4fqZpF(~P-Re;J-{NsC9xGxrPx7zkyf)B0aA;u$R+K9;68OH0xaqo_M(h(? z!zt#7kSm7}=Cl@862)~$@mV>}8}G_enxpIXy(2p}X97O*G*22^66w}N3(N5 z?K)Gx3-rMweD+or%Q@7M zr+9|{WYT2LWU`(QF}viBF$^42F&@EO@Y!W@vS;PBWi~+8qpXT7+{fTPB(9=<_vZ~V z&dgb}nw!ikcG8C4iS32E)N3`Y-<4l3B2vT)v91wewoef&{2ud6JZ21p){m{%YFMB4 z_Fu(i>)#jh<7%}UmcK-%R>odLd}woiIkHC5SvZ@ANM8I+t6?FYm0?ZB&}o$!ei^rL zcCt2Q`C=B^nz(Gw?|Q93RJoQiHRd8pW0instW}c+cn{A|d-tNJYv_+v-&g2;vnzLR zH40@oto^Zm!}^9*``!kegY8h#F*wn3YKrd=IjqtV9iHP9d*i=3k?#R(tJkAECze*M zp0!c!v7V2<$V~ba=S@Ui@gAw@Bag!QGvjFZ72iAlKFb&f zB^-^WaU#1np~=jpxfq+`Dt=p|@zP z;gs(zJV)Ye-s+4Cr_RINT^uBY3?q>PoV8kC3TtGy&55m*Wx!&U)oWB7kE4xYnusJ9 rvDo&te#?Eg- - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 6b2f938f90ecd44f661ea8b2d6ec06e2fd5cc720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7273 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 J - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index c9b1e7d8831c67d3f55c8044ba2b1fdad7eb1248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10668 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 GrT+t(0j`Vy diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 3eb7f81..0000000 --- a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 8c54c217c00797d827b49b9adcc92151d64c3194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13404 zcmeHt2~<q=OjpPZQok&t@YM=Ydx|! zXYYOX@Xg=1zr7pU0{%!eKmRboh#(H}NP(0{jWpBT3w+^-KNPHSM?-CwyS?GY7C$si zbB7w{`WmAVJ;EzCyonN!YG%doJh`#S8}(9LFCB%?MT4}l!&yb0QE=3 zXbAcnDnp~tR8)@wXg*qjR-!x6dh`r>7VSYVqF2yC^fCGdeT#lV|3?2ozhR8kSc4O> z4jZuzXJHr4!MV5(&cg+`1P{d{@fbV-SK>*y22a7$@eDi*dvPlc;t&qw4*Yk#6jOW+ zz80^>x8U3G?f5RV550`<#`oY2cr(5qKZ2h`iTEje03X6{w<-BRp4=Tge7;KY4&`BM*}8C&f_zC%lGEe|a)z8Izmng`1y0E&a4Ig5GjQpglgr{ zxUt+gZai1XP2{FxzD*TxG%Y{xD(t-?rZKF?py9V?iBYucbfZw`-wZt+p&@_=STBn z_zHe3KaL;IPv9&0Dt;nAiJ#0@^ELbwzLuZLPvbAgFY?pzUVa8&$Is+v@%8*{-pe=e zjeHaDv%iv2QSTL?{>p*$1tN%&4rc^tSpUY#u0= zhoQ1C6rRU=$uqJq(_uZBfED3`G~mw`ip?Dgv!3OlV03~v=xz3e>jj~*y4DZy1bkEd z!KTnc8SWS!@#)N$fSWCQIV|g26a^^iWLV?@lyqV}eTjb6iBqVGzCjiAOL~I7*@=@W zqDuODCl-V*dh!r(p%C>$MS!D(7sG+_l&crgs;5k81C94h^o3jfK(J77VmQ>=7CnRp zpb|6?4Voqs-4~fI7lJUh3k^bpXTfCck!Yw@Mq*l=D}Zao@DZWLkhhzj41l3%7%Bx) z#;i<)CTx(`7>-74LL<;fG#HSZ&>r;yjjDaoDV5dmlt-4M(KK&|kc`Hl3N#jtL*vl| zREet4L^KIaM%AbWO+mF(O()Q)bSCxD+v%P3F1mqkqTA?px|2Rn_Z$WorlHHxbTk9i zfzZtY4vq9hqW++l$pV019cm9Z`leP^kM}nC0(3mpP(sJOi)O<}FKR%IK*S~x%Q>hS zwIDy5i{?qf$5=Dj7ikLxn|xuwu)4irf#0_<0#hz14|toqMXTDs#0M-GwJ7QfGD-uJ z#?r(Ttf8an7+Mj>HAwTiPzbeAEiF9;tA}Cz2#Nv>?Eu9Bv=A*qivfoY^mnurU4gDd z6m>%VDzqFehxx};H-J3d{t}M)v^yHlU5D3vEK1(H68-;^n>QK6F2< z{Q%kq;B80$L_5&G&_n29^a#N5DB6i0L%Y!9=n44x6neT|umcofZ*#Lh*epxR1aD+s zc_>^N3XTsodIJDkjSO$SkOFXe8|O8LL+!yP3Ep}^56T?~facdMZUX@ifDHnEj0lB; zzA(eBUI6v408)bx1_IS>-bPqys=q1PA{jK8rM)#+)*cOoeG&f>21Rsnzy~V)$5CT^ z{^ph_05mGdw5bW$J38!-17iIXL?kRgt83U8c{wH|lS2#T`KV4nw9s$?{ti8l5Y16h zy{l9ui-4BezfQ=-0ovkE5WtaOvTg1T=syJ&$&y7eEh; z)R2NvyxBm_yU3A#(2fgMa7;L8MmFy3i`cac;Cz$BV7Ak|c)W>@KK znJUyJaIVska>Z4;s#Gdb;a&6zfVvTViatZf(dXz3^dE&iyF+Q#MQ^<#g90|x>}n7g@vQ5QyNF!Yh&eH-bZdJYrJq4QXQ zl{f*b82ZctFbJ7-0!{=%&8$Xk)F~*bgW7AW7e}JLRxr;k68E|(&;u@=kF+XE>EH4x6wUrvcm6 z;S6kz*-|jhOcM0G^EXUA)D5fvJ4HaFdi@Sz^e;fzfmMK34$Y?adchEd_5aJT^u#C| zFe(7K{%@*zq)D8#H=9Ig1pWXF-87MCkNe`3&2jwYmdkK{7tRM|`<+Sn6D`6;xIZqA zYY~(3KCaTHk7ar8`@fLriz4}#^otXV_L2b{h08bLay(j!MPiXdSvc%n4Dutre@}_A zK+bUzB?@RhwO`&GH;Fw-IFZ^$=I8Z~iN$2}&KC3zu9mG1Xc$vApq*r>3cxxsGu3U_ zmi~Udsj%KOX}x0FpHbcvqx@fRaHgad#qwWFEpR=ay&2DzVPFa$@V7AmI)Y~72GBDW z8#LfXv;a4O-wfeq+=5=femob-0np(ZZ@AePg@P=tfCU75jo{J2WoqeQI#4p{6gH1^ z5Y@Vdosc!XUP$fe=v&Bauw;xGx`q9hF0HF?3dLiEK{6xS@cb=!ew<7IV*LA`gSY@M z1RxoROJZRBEd^s4fKw0s;s6-H?EwG<`T2bu>?x7Ds6Rkauym=!fTBK*{xSnfptZOt z<|*(M_{z=rN||1uq%ts!Vsb1O0TpjR_k!=Q!^`khcsWFKyHFj~&~jQvhpVYZLY?6| zV1P7#F_Z`7FJ1cHMY9~!@9RLnZ@?=-!`tvGY}NA^46KKaq$5D9OZ7r2)9R3L93oaP zazM}+gzzy0Azdrf8=-y%S{x8o`rz3H&oF%V!-hKE7J(XLuumG{fKfqdj34SD=oOJh zw!@pv-v-aHRPsWI*beiudJuX>;H%st0Pi4-VqYBaW@|;IQ4P=r9D%wF4|}qC!|)41 zzku{@4$K>cf7X@sle?s|d~sv5GwHM%=Xtci~OURT;rq`x~m-qX8dy zd1-GO3PW51josBAn;*Ot+3|g_yQzfTP3?PfEGBCNegJI9HvAyoj{k{wpk4SOyba8T zykVtPbPAnFC#PVonogosJ@!S?xQFmg{1~V-8}$TqxP{K6H^Y0iq^c#L#Qh}|E*tsoR5rXl8Vv=d=%r9{-LRh-HNV{tU%~Q8E%8w! zeF5)caB@9{&>EU1qzhL=oRmhZX{GS8UIn`>$xuGNzw|A(9thVS@bm9sKSV{BB%0fYNe@S#f^L)ta8g zjrOXmta6O68c{aBVtUzR;B1pG(irx)u^n`GY}5@fJ`LcW!9UU_0CyH`ycEC>;vv|d_(hGH!Ax9%*Lc*a2Z+KG1%sKv`Khh#6M`X80bR>Bb zNtU%RHLh?hJh+tJ5k0aKBk*nx5aYIE#DsLjOwvd?v5*X6B{q^t?8Je$ku2guCrCEQ zA-za%;vs~HBp1X-)bjBuK9OrN$2?0KEIu8cFQC+ohCG_joo0I>FwA zMf#E=$irDw0^1lV_LWSra>kk%;0U%8Y;pJ-5F1a5slP_HhAgpEP6pDvd&wYth77?+$xt#3Z>0f{xcMNm3+Xai32_Ju zlrEY%GMpJYGK!SPWseZZIMsNYB|FzjgBNA6kO`hFgM|gKH)S&T;h)PO8BWH_7EF@D ziDVMU;viWH36V_5auy|ki2xm8m5sHtcoE7tdXohK|vAYO<@U`fqoD={Yh*?8c7pS zHEsr?v>m7l5lta_?ven@Ub_XrTnye+_VexV4gl~=q`Du_Vg6i>Nd5vnH0*a~mdqvd zXa-%7qDli9?YRT(J3JIYFzf?Ol#Af)7_vxE2du9}MSa>s(Ay!<~7w8Vg{7*X@bkC5*w1VdRO>0&WBXSR!xRFOP{J|z#6 zN6>NdDA`FKL)*zN_$TCXveSNo4--YfLAnzf-*FUN?$Xuet0Mp@Ofn# za%xV~#c8CYq>+9pIp+;8{!{cIR5-`!W29q9Ed-<mn0m|jwQ5M*OP=_^`WeNBES1s1C>AuC(~SIG6_iei91N1vsS(P!S{ih&IS zxDsw4H;5a|4S~bwq3~bIl|fnrexR9>?Sq{c_zH-_;Nn0mTIzPNj3HGNu5pQO9gYPIY{$~ibZ?Bd3774&iX#PkL7 zDJ;NH7b{Bg^(N3@0)0x-M6QY}>EcSzV7WGlo4lEu%vEzW%=Ey~j+9#jHD{qd9J5JV zP#LU?jSz2Ntkes+pylikO&SWyBBiHe!oarn5I8VuN}r`PLcA|%*k5-31Dk=tGsq|C z05?lw^JDY{kjGrQyIyd`OoA6uq`~HHO6K(>L%m@AtIwBOtqE4!&o#$Z+Y76i=!^A& z^RHI}`h#5k$y)GH;vF}S3($i*1S9Nn1rgXsP!Y^LfU+YGTjw*(^Q5CCum zIsj3B6-1{3ME(Jg>}6mH=THspOI@Il`)Da78clRR5Tlam+CXj@cNMps$v31>BuDr= z4Wh5nm%Bv>PBFW<>$vObEA&-}ovNo)1RDeGO}>lzTs@_SelwQJ!gCY1Y7@6g799}g zDWE4KeRI6+foSBSd@y9;fS$XB^7H@%l0Ce#Jj+@E zgmdi!Xg{l?I{2-F_d3V}%mKP+;lBzzk^Ce;1(Q_Q0EGl-7id*{_8n~Y)IXy+vU5ww z&^Xm0opb=^xir-YP<>%H-79Hse1(0|3f#-wE8MHxYutYB0C$jkoqL0OlRLz{#U19} z=HB7n<=*3taPMu`rCm;XBWd5Qydg|mdBgzbzE1U|KB3n_c7^#?`n4*}fxLh$q zF;lTbu~KoHVuRvA#p8-66;CUkRqR&mQS4RhQ@o)#q6LS+w5(g#zEwMatQlc+$VdC<{8xrqJ zd@S*)#AgzpOWd8fC-LRPR}()<{3P+S#LpAIO#D@=(Q38HTDLYw+gmGY`)G%0$7m;M zr)%rAt=e0(YqV>%w`n(MyR@6NyS00?d$s$tuV`P>ex*IB{YLwp_IvFQ+Fz1LQc6;K zQeIMiQeje2QgKpg(uAa{q?)9eNi9j?r0bH_Cv8aTO4^*XHR-ve{YeLt-cR~0>6@gV zbyi)rE>BmY8>Abe8>%bSRp`d)Cg^H)L0yM#xo(y2PTh05-MT%xy}Et6S9SY!2X*i2 z&LnG+4awGIPjY$knB=j^;)~DQ`vNPrRlvh#?rF@j~P0CLx=k*4CmcF09zkYyzpnkBvPVdt<>;3w9 z`c{3Le!f1UZ`a?Vzg53Zf4lxp{oVTY`kneO^ydvJ28W^0Fw!vDP-CbyOfyV3)EQVVXNse@DhmO3o8EOkWcsMOJ^<5Q=kHl#MChEqFIm!;mBx-E5k>W!wdkCrxKeKbg*%IkUoSG@Hz6W{cTs&NMsBS?1B^3Fa#EBy+WSin-Q2%{<*4 zF+XVDY2Iai!u*u^8S``I-R3>!v*vSY8ELjOdzv%Nm6ns%E6tOZn>H$KPFhRa+_XSi zFs&^uoOUGbWZE}r-=&>SSET2p_f8kn`=sZkUzT2w-Yy|eyZ&{96KD2yo`POpEa@umn@{{G~3`53c8I2ho8Fyzqk?}^x z>5Ttau~ls~TGOo=R+}};>aylr3#~=gV(VCIwRO66jx}UmVqIZfZN1aF(fXuyuk};w z*VgZCoK0iPu-R;Oo73j9^|zJV#@NQ%#@i}w^K9+5D{bp-8*E*+&9<$!`)m)`9N15)eP-Xxvdo6eKxQzrEi;@M&0LVVD04~XotYampU8YE z^I+y1nQvvjo%vqo`%z{U!Tb_P6ct+mG2lw0~y*-2SEg7l+Z2>L_#+If@-6jzNwg zj-ifv$KM@m99tZZI*vGgbS61!t(+bz2L zxbxik?m~BwyVzag9^@Y49_lW24|k7rm%GQfC%LQL)V<8T+`Ynmt^0cSO7~6fo87m# zZ*{M8-|oKCeYbnPdxN{nz1h9heV_XQ_ap9|?oZvv-CwxBa-Vd6GWLhS?PJ#bHsDh^MU6h&nKSGJfC~M^qlZ~?fKSo z%5&Ot#`BZsXU~5;zj%K2ToAFyi3%}6REvpXl9()}hz2oLG>hqChG-M*VsB9t+r@?A zVzEP9DqbmeidTtOi`R(Pi8qKhimSxc;u>+Sc$;{Kc$fGO@gA{D+#=p5ZWI40J|sRW z?h>CApAnxI_lPfvuZa7_gW?PvJzALPd*!AwnfI6;xH*KtU)&$8pkt6B}O=(zoGB`YahTVANR$ z!2j*vD|;V1H$+bgRg~ki@9Xlf%Ub60)0wbPBXnr@~q)f%Q9J$YZ%?-%-Ky-Y{(E|#Xm0HORka`QtXxfxQr+*CM;kLM?5k&2 z>(R&KtU1d$&Y!BUBl!-s<5+KN((ot^v;&k)^*huV$a_a`gRJ#&`bh1ub{%LAl=MWS z>0<KT&OwSAbLSZlWZ~~NjRbRi; zbfR`Y{iJ{9Of^4dvEO9AEA%3zJ;}?mLAE~8k^}R|>wBHo)jGHge1_cEVWLx@2f9W& zffFskkY8^uKTfw~#(B?!^o!QQBYVSXkvVH#iAH#VO6>0U{6yaHY+4TT4u_f6roFsL zoMO4Q-{+zd9DvfmBgla3f&T0bLib0aoL}j3x{}&U)4uHI-$=edhfCN zCuv2!KZ@6x_5@o-Eb`kE(plqOmr)72j?%p|kr)1^BmAO=iFPxtkbCe3-Hh7L1yv{N zFHBe%m;wfK=GvllypV?0@G#Z+}nLeBQKFfg_r{M26t!Tws?khfOF&bC{J9CB)p%+=3CP!`}C;SY=OVi4*XU?(z4PDo= zVr-=S*psM)hLP4*=H9s?`03iaCUFU-mfYHN2%pl)8zXbVVn5=U*gX>AhFdb z8_Mp;Y#nX!``fvNp11|n`odbmR}oh>WSwLZ&NY@Zb4OMDA9uHMLwkC9B3Y^BgRK{; zOapnJy{GN8riDD-Ijt!%H#?$+?A5mk=3kcQc4U7i;s8&DH^S=Lw6V+O57o}ikSLLo zo3XVqlSheroOQzuiuiL~njtSYb=+w1Z|DYp1&xK8&<>t%D6dXLi!5vT4i>ZDHC=Mg zMndrJ8wv4_$Q~Lk8Npcn%*OLs4sBVNby(=Z@*>uv%b>$I){TrXBL4s1wrYLYUllz# zr&!E_Lq9unJzj@qoO!qg;EeZO(axg(!ta7cyhGgN(MZ$;ck>9D^~I6(e2;?U%6>hy z@JH=s5ckCgwJS2$67lL@EUc~k<$lh`d$~?$Urcl@F#~x!qa&w;5^7r^y$xsK`;ZOq?Nt-jb#{G|4GXX3a919-&PdiXt;OP^ z#&<5RI`6lp!w0!?wHPNZqQ0y+79Veu_J=y%$a0-7DtF&ydnk3?Vj1-caN&v=Iox1= z2k@PC5kGBNP)!eYz~#Ja5j*t?^GhUo8_0PgsTIk()y_TXslJ7jliX_OB#;x4!8Mdx z-nEb25PJIZWgvwWXdzn7dkiz$!p{$tx9zC@5O3C2dW< zy7{dne2eF`qw$NYm97973FN8N$*6SwvuL+m3ya!6F@SsliBP-SQ#&enuHDtAa_^#Q zL5y>ix_mW@%+VD4Yv-&HbzY`#wU!$m$gQjR@kOXaU%u@4TOJjme;<99D^=winRzFQ z+avq-U1;Gx2VUcwQZ0q}stZ5PV|hmY>e1I~NBzCMyY{Beom5`xS^A?jtKXEjndv*K k^+>Faif`Q3Yy01n^qQ4XOL(#76_p8gMcTx6u$X<<-!>mgkN^Mx diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 33a6020..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 4cd529a56b82299c1652f066cc95089a8bf1a192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7245 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 65dfc95e3c2a0d483abf2be092c76db216dadb3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10338 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 z - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 4b7cc9054ee9d1ce02297c9b8484b41ec561c5ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13156 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 diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings deleted file mode 100644 index ea175ae718007ffa8325619d382eb2db6e5b1133..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8554 zcmd^^-)>t)5XSeqPjOliB2}aaxJ0N4w5m`^sh}<5(s4}c#&wKi$4#ClkJdY69s>A& zGZ}Wzv7JAVV+1IQeY|J?%+7o>^X=?!zo(DW{ZyrA=}4bleZJLSFAdW~zej1TmXp*^ z`)b=)%U(LwC+`o`I@D87eIBUozGk|U?xl_NN%|mdt7Rj7dhzr+b<(korvFe+`wSkKj`;Vqv?HW&y{}l)1lr+Z{$1H$d29& z)Y`W_#Tv{$(7UO6b<=CT&yo){<19VYZmRT!{+I8nqc?NSIoCIz1N}2oM;bZMGg^6d zA!je0r7dX^snNtBZJPeFeCQF)qW6#u$-F(w_Ez(=vx(je^~}?`$@;nUf2T!zc5Ssy zlW$6&@oxC#7w()`=aa33oD}Gp~-xpK0j%9psdn3aDc53_0(5eM|$g--gedJ z#Ma0=cMQ0-(bbMtA4!vaX$cwn8iU1I<4EmbcAP%a@6czqwPPX6GBL^NNB_XcL?b~T za=F$YEX4$VfVcFd5$yM?KAEf1o*c{X_54OsP1RmWM*l`0dgZ-`Mt)Wg*Tf?siCuOK z3uo$`HG=Ma#{-)OuR7LWU%xKXP^lBg80cgU-ee4x@c<;A$u{>=TR8KW!Kdr2Yg$5& zV0>^92S8Y5dYkD9|EUZqW7{_fz+NY2FSNF2`&w?d9HC++Ml8Sav_bQ zcx3qN7b~tyQy#CD?R!ghjrd4p3ZL3GFS||@ZAR*dqt}a(q1R;^Iv0}Ab;Lw`r!O62 zeXvH9TxN}p^qJ+A%i}9{S&Yi=7weCqpt`9^GHRJ&=(8yCyk(C&QnVzdY}aIo93GJ> zJf$t~-;oT&!kNCoXz9&a!iWru{(ZNQ{-w>td?1V2$p7G>IWrl;_fFLFSh5_c%-@bT z-)!eZ!#XFbvz*)01Kf{1hKAnjKj*aiigWciPi^Xlhz=s)4P><=Wx|{roG;P`-H><5 zesESeYMrBipP{jXv9XQd3`COWh7owGM~-IZ_h^JZ;Jevx18puL3;-DeP3}M7Zm2iR z?EJ_x2>fZT{?6i9fpM#(M_pq=GNaFm{ zw>Z0g+hplZ3!At{fhtZR?hD~ZoWd5RekC0KyL|}D{Z^{W_W$vnks*z< zS>0<&YjAR=4O(-UnuKYPS+oyN(SQ|zAJ zayE?Uw2EEMEb|O(1o>x?TRJl(@-Z7{b^67rYHU*EQ~7Oh1K-^+{UT}Ha^=qa^x{<{ z&PP}CTsRFZgSf}(s(w;+eivt4Se93@Kq@;87CqMPVK<(o`3$L=>>+fHeWKFh+>QDn z917{9V)$jjrdXTz6ZL2dZC{yIsb>s|m3Jg791RvSUd!55dMQgp{VX%ex+HN5Ud}7p z(-C!+t}1g8uc)cP9m{xiEZ)dpmi;>$#aQP887m<_mghWi!CI>i8@hfW>v$EHs-B|_ zguC}q1@_9|Sh14oF(<~ro98@G$|`s^^f;V~6F=n)`Yo=1{Ni_ACy# zcRDM-g#Y~myL`Nqt6jFo<_NE)-F$ChjYaS0&VWklvMBH*m2u#SY}6LEzZNPoJ0jxy ztpnICvr0yFeT1K(a+Q=ZQK_%X+&-4;l3fSM^%1#lo;fjjBE0o-UtMi!;s)Ni%+gP5 zmOfmt^y*p3ysPlDTbq^pgSsuAspWQVxV}wKi-_mH+NlkJ$a=M>ZoQ1q=Zch6XgJ%) zEyLm+Q?_qncH-gp}` z4iwj^X%OqLo&!uXa%v-e<>viQW;FEnnoXJA@_xuFFqabJw-jqTTYQFBIb z&6UW-J2gLHa8uP*v~ulinr58Y!X?QQ!OBbIvD>)UCAYz5y86ePvLBWfE-?28FTbYl diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj b/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj deleted file mode 120000 index 88614fe..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj +++ /dev/null @@ -1 +0,0 @@ -/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/fr_CA.lproj b/Sparkle.framework/Versions/A/Resources/fr_CA.lproj deleted file mode 120000 index 88614fe..0000000 --- a/Sparkle.framework/Versions/A/Resources/fr_CA.lproj +++ /dev/null @@ -1 +0,0 @@ -/Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 15ba8f4c8e18093cec6121a6aab21fdf4a8cea1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7161 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2e04cfa..0000000 --- a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 2984064502b81dee5147f477cb7f28350dd4d945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10360 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index c493485..0000000 --- a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 667 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 5 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 55cc2c271b5b63daf69c155ca294fdfa17a9e0e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12659 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 diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30..0000000 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 3f09790..0000000 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index aa38f86ba2610ef2aff9b9ba9b2bdfcdfaf38147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7234 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 diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 994d4c3..0000000 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,67 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index c82d3581bf07ad42836237f2cd3ea55ca48b73b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10220 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 O_|R9B- - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index d2586ea..0000000 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 629 - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index ac298ce7e33ac2b2b9e3971c5a730f431ed872a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12535 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 &-a!7R(}MG2KUBgXUDll+r+*ztt;Vw2g`>-E2it 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 diff --git a/Sparkle.framework/Versions/A/Resources/relaunch b/Sparkle.framework/Versions/A/Resources/relaunch deleted file mode 100755 index e7b96d61466005ca15b235b527e3ceb5d4819283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58924 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d425..0000000 --- a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 1d4655c593e467e2972b1800808d53a152f4e56b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7675 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d425..0000000 --- a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 103b1cf8478a00db14aafa192b05f1868c294c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10895 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 SGKqLr0)O - - - - IBClasses - - - CLASS - NSObject - LANGUAGE - ObjC - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 5132e29..0000000 --- a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index c09d9e70d19c579ac605ff48aaee067448e0cea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12898 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 lomi4xP~K - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index c5a067e..0000000 --- a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 53cb91a9b32fc4ddcc2a4506d3ae1c0458085256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7474 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 LVePl=TiW?wt9#5* diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 018710a..0000000 --- a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,39 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - CLASS = NSApplication; - LANGUAGE = ObjC; - SUPERCLASS = NSResponder; - }, - { - CLASS = NSObject; - LANGUAGE = ObjC; - }, - { - ACTIONS = { - installUpdate = id; - remindMeLater = id; - skipThisVersion = id; - }; - CLASS = SUUpdateAlert; - LANGUAGE = ObjC; - OUTLETS = { - delegate = id; - description = NSTextField; - releaseNotesView = WebView; - }; - SUPERCLASS = SUWindowController; - }, - { - CLASS = SUWindowController; - LANGUAGE = ObjC; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 6b787d4..0000000 --- a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBDocumentLocation - 69 14 356 240 0 0 1280 778 - IBFramework Version - 489.0 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBSystem Version - 9D34 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib deleted file mode 100644 index 7e6d490e723329c1372940af22e3d49bc0ee5da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10180 zcmb7p2Ygh;7Wb6x_3mc-ZuYK-Pr6CyASEOOBBVg*EpC!ava;-k-3OnUczID4s}5 z`vhS`5Jd{4L@K03x)IGM3$b`88X3|&5v?5AJQypj2*Iln&7&pv2&IX*72(j<^Tzi3j5%JRFa}Bk>qqjLUHauEdjY98beFcqX2O zXX6!kHLk;(@ay;heit9a@8LuEef$Cb5PyU}#)pv}e}ccjr||dq2Yedm;veyU@Ok_z z{saGsFXF%PB|?ab=!t=tiIvz%D)Ezlkya#wv?o1CPtu2EksQ*G^e4IGE|N#`$zU>^ zj3A@Q-6TlHlX4O!6G@E3$rLh`JV<7eS!6buM;4PMWGPujR*}_Y4OvH?AWxE~$QJSn zd6m3Ic9OTqE^>f;Kt3g3kgv$spXSoL=m45e2hliPMwioCx`IANSJG80!~IV&wxJrOG?);+6(o!KF50!+%p~TdJP+77K#%4t$5r8a! zIX*hSC_gw+h>LRIIVT1`s-v+9VlP>u*fI*{0|DYAG)M#f+eAs((U{mXCmKoQ1tY<7 zAy&+B`9;G*pifvB9*UGjt7W~D>u3_1Gy zUS&$QpS{aoWB+D|sn{#*EcXOE_%V1O1GPsTV13e>ME#k9(XmBChgQNC6*9v@Eb%ew zjJlw%sM`qH#zK6Q{1Aceb*LNaJ`ToL#S_tqvd$wKoB&J9?UNNPjRqUdC(hXu^+LVD za>-Z_XX^Fx9DPt$J<3Aas5`7BuPPA)lN1Swq4`DdS00&z`mypYoEh~;x#%u501ZTW zC?6G|LNo{sMnz}{8j6N7Et|#Wvia;`_9$D(7PDHmj@7eG>?!sPd;Sy9VFVh9MxoJY z3}9>=I3!z$Cqj{+=z37UC|VUO6^7>*4GfkDVK$TLz@85tM|Z=>ASywns0;~cJSs;O zD1`1o6HpjUL=hB4m1q)*p*TvQDl{2YqbaZw*{j1sLN)v-Dvb$3WH6wtm`h3GDzhpP zjRz+SqWwV^x&M$*A}oM+hY!gK2g^m!$nPajHA)o)L8rXnl%miyK?1zotxvFYLMT#R z%vl-+7A2;Jg}h*Vg4jP45&MJVMYSZ6jAIY58SFM@NVy81^HUIFMy6-?bA&T9#!SVW ztEMKSLzgyz_FXznZxg8L*rgLZcTSr=y_mBW#-io0N2)3%;KX2Ru%oPs=(*|WJ~RU+ zZWm98ZOlAGoLF}I{pf*u^ZroA zyfPXo6Jh|VqNCz--LU9L&jF%nhL|v$8TQ1PZfr0+qpdLMVv_V`YH^On9v=zu%2* z>G{HlA%VV;(qLu0Dh%7aEKnGYCjgnD%0ystdb^Ap$Jk+=p|Bus`FNo;k+`s8&M(Ot zlADtgnB1XV+KmG}NhNc$hTPa_7Xj5KkkK_=#8W4D?9^fU^v}>6;OcGYO|%{DKs(V} zXcu}L?M8dx|8DdS+AGE@u&`uNaDW7CZ~#Qugb+!@;Z2i@4748|K<}c15Yzx!QXr7xBF|EpA4KL(gs3fTD{*C^ zQYmKSmPR8om_I-t)}aqYC_`A6qhf;?xx>fka6LKk2Rz=FP zqTy%^)B+S&Mq>$xPYnvn+6{rNDfO``L^G$emJnP1#hO{U-Vj;Z6^c>#7xXLo4gHQT zpg+)`urP7E!k1`o*fQfK2eTHp_HG5JAdb{CWf?xPq=?gfS+VVg*)W6*y2*O2mY?fTGG^sTc;OAIbQe1>`gwEtkCB zmbKwjtTk&jtY|81v58~A(V`cm{vuwkVjV~~U?WH#UJ*(NtSv_eq_yiLf4U+`H*7{% z>Oh@iol70>dCtU&B=^3JW=^e#Xl`(z#aWS6YUbr{T#C>pUM1U!aPv!6(2W}Dpo)SYs6Z@hIcqksmTCg4#g>6jJ zEi}k0V{{ZAy#bGwF$D;cwYi3%v3T4@Jgxyjus`JvH}g;lF2!Yy9_qugEI82Mq4YE{ z;K&~8-1Yy@Lt#7-JhVjikZ2+>Okb7_e>00YM{ao}8WUo{K$#GU1Ov%qX#@K>&&)Sd zbuzAQ0;Ybfe}kSKIzl>1>Y4t3M-slb36dDTAM{)*>nV9`rWgZdh3{gypm5IE+(;ba z3^43qAW}8RcpS~ba{#Av(PMZX5S=x6K7I&4jMm{tP#6Nt0=y6}LVNKNycE#73^HLD z*Fya56P+TaVu)c9V-)=bP#OZkFvUdhTI$F(f)NHXut24=Jj&BN>PdbAA4Q;1ct zd^Vt=`v$T5Mpkf4?v9_pPl|*JKZT#h&%pXN<68V2-h%4!3wSGj5i-tR*ps#RwNaVj zFdT=5!l7t%VN4h=z;fW|HnJZiph_`3!*(1R7sQ;D6OB~^`xyu|ijfi_OU81MAi^<8 zT2LMv&qiz6SXOAkR(6{P;FHJ3B)Jye#?;T^H}Q7713i!5!n^R>csJgIw&1zFxvk}0;Mlv@WHL9|z1ZY6Js#sV&U5eCd@Q|GB8_5nt4w=d}fVm-pi(K(0ln+>4+w?X8IY)F9<8fEu7m&&D5&S7W3cme(R4(k% zL}+|Shz&~~SOsv$II+{0s3$&#kK=D4qqds>M_g7`kH5lS<8N3oyPE~;@dL14%y{KIPQcdR!zL&eZ!z+f6gEW!ZY~a_4wcT zte9HijFvo*WQU}b8jMYa9d+%8Jme>Qt`47rqcBX^1gdi5&-j-O_!pVf4TlaQ8s(PX z@bC5bcYHxQLnr6SjKzXeVeQg)F=qq51}2meZpV&EW6GodLZ8*kQj@d}!f9veXx5=) zXR&A3>C=bRq=~LLDsgH#MJKr(M5HLt-rWR4dX9kgC$dRR@&(SoLy1z%7aVsTYatq} zAXfp|#Eon#YXiRof*i;Kf4M{{|+8vW@DFa;6>Hmq2peoV{oYMvL ztHlMRJGoQJ9W~&jX`p4b6-uzk+W*c$SBtrx1A}E{!9ayDF%X6A8M>BLnw-Uhu|N=t z3?l1_Pe=qpf$?xwPlR9-Lii)SNNjxbx6zTk|DHiFDBM&Kc>rb z4Il&S$iU>vF`CNib_1=3OwlOo&Toc*y0A6Qj|1BXp{UP6g0u5eSTd za>2NeAB8ip7>bUHW+Br^jaU;S_mb(*e+FT&H6B1!Ko}r@76ua)BG&*TNkt`}WRK*} zM*Ai;WXoZqWo#*EwFGDx5Z)@G8<4U_<-`;+RC*00&e`vw*Ti`pIxW) z{G{5CkVnxnvXCs26fdZhO1Y9gE7@bfOjfW}kfbX@Wq|x{fp`V5i@{B;A-BL0^MTf6#}vrpRE&f z%gt9%2P>#08_6bACF%V*=v~d$vpT4?H0TYi5fm4zhT?`Ul`#Z_&T;dGYpOp(o^7i7 z%^bfK9KVpfoSc0lc(EDV0H8^FF(FnZMgNU#e7c#GZ6IX<*^!j;BuKHcC$3>3czxvr zQ1Fj8H@6LV7jFdb?oY}UeOdrMefru850XRwbA{w1@-gUEOO8k~HnT0DTQz%541-6> zXQ*B}y%kjeb1stzIuK6wtX4+lm*iMIIYy3)@y3;31k^K@WDs%jfCyy)VDmr@uKg(H zZcQ3a`ii$J8rtYKaMo1Wb;X?Te>MMCW1vM~j31g9qdgeog=@w*L(VoehQxHqIdY!8 zELPCR0B5g7OTZ!*&_W0ji*PN}HB!SL{^iWl4|5Bd6+=_$HPB3y};8lP(ywfhM>Vo|A_P? zPB#G5kl)EAQF4xY{)_S;WicoZsw4g;%5$K2j;J~#4LY@vB+<6C9le95(R7+Y+tUuT zBke>x(=N0t?MAz^*V!9v8+(&&XFJ$V_7>a4-e$Ym9`+8~%l3iaWCsSMi;_T#WMmCQ z#L(JOKJ^)uek#ICv7JxcdL*5QlN%iwM{0<~4guwW!L{&^^ zS>|-rJ^+01g@uBR?#l zNkgDTG8P7;)X=Tv7!k<8)02HuuTx>LlrjT(LO@EIpn&hX_T=$4AX}*A=q3|ED3iE@ zBsb9FI{b*0)Rtq!TJ!DkKtXjxh&A{tkG;IU;kmHMbCKvr9+0#IE`;*XUW+MN|Oj8w8+V09Q!;;lgMDKz%M;7S&6De+uBu7oZG}b!l}7Dt}oYLS_;acFR}7QW53$O z*l$SBa3M(Fq}%K0cIn`f+eg0m%Z9=!(!dRFGq|ZuhnvA(aF;h2uH?qUwRRp^0hiO8 z$V+4|IYG{oOH@N0^cL8A1L#N^1}m+AYve6(Rs14c6~9Vfr`zaux|8mryXiZ0A3Z=1 z(nItE`Vl=$kI~cg3_VLPDyYJsa4LL?)`|{_eu_fHXvJ8?I7PW4qNq{aub8iRSn;f4 zi{b^vi;9;OuPR{RSh>{h&^*rzz4IH)+LIHUMg@wei#;;IrWsj`c*uX3=m zLOEHcDC8(-ZOtnZ=uX;}PhU!h#4%J(#w^avKhg9FFPN=?9eXlyLI-@$P`bl+O z^^4l6=GCp#>FOTp9Ce|3jC!2)%U0;s3)o?tEZ@EspqKYsUK25qF$h0 zq<&U?Kz&(b*L2bpX(nhM)~wL1*F2+nQL|06UvpUVndS@4G0j(+lbY`|KWmYeXcbzO z)}(EwZLLkyW@!g%i?qes3T<3FLpx8qP`g_Dx^|m(yLP8`mv)c#9qm5tw>qM8=mNTS zx^B8&x=dY`uCK12E?1YYE7T3rmFPmcO5Idljc%rHwr-wojc$|f8QoUhKHUepW4hD2 z3%Wmb7j>6(SM*4)*4y;A=v(Sr>)YzP>ig*X>Bs2D>F?H;=*#rg`kDIK`g!`r`c?X8 z^>65R>)+RZq5nhwm;P`4W&KqHG7y8$(8JKnkZH&=^fmM|4BHInjVhzp*vi<$SYQkqqsB?bxUtGuZJcVXF-|wmFy3!`&^Xt) z$oPtJpYee4pz(d0f-O|P5YHtjKeYdUEWWK^7xLZ|lM$XJxIUCoKYt6Og?%>k7 z_S~IZPcDiIneBzEAlh<*$^#Q!d-AHk-|1bJ;w$ zG+Pf_FIyj5fo+hj*j8biWUICms7ZTr@C(ss)BgYB&C zC)-s!wo|*xeyja9`|b9Y_SW`x_B-t9_Pgve?DyLrw9m57vCp$VWPilI*j{V@%>J$Y zKlXF>pY0bN)S+?s9W5Q1j$FrhN7RvU%yB&GsCBG$yzJQHIN~_!_}uZO?(8(b5*z|xu&=lx?XT?b8UC+bnSBO zcD>`;=Q`jz5M$JiR=bo-EH8PsFppv&gf= zv&>WLdCarQv&QqZXR~LE=LOG8o>x4FJx4r8J)e8N^c?qm?K$oF+jH4-#jEz3ye++* zykopI-qqf<-u2!(?*{KC?~~rAy{~#-_rB@f;oark?S0StzW1E>XYa4x-@Si$|MLFr zz3jc}!#?U$`qVzHPwzAO96p!N<7?qd_jU61@@4u;d}Y4zz6#$xzOXOitMtWu3EyPj z6yG%8y}tW=%s0>XkZ-f^Ip6cXt-hChulQc`z2SS)x5M|A?`_{6-(KH--@CrUz9YU1 zzCV2zeV2S!Qc)^NRivs?HL1E(L#ip2OSPujQro9?PQ5R6ed^ZK9jWi79!dSpkNvm! zd;16aC;F%PAN0@i&-O3yFY+(;ukx?)f93zif5QKr|9k&w{~7;T|4;t&{$KpR`7ikY z^k4K}@?QaxN_YjY;x)XEH}EE&iExX^2_-Z{7QZ`zm{Lm*YO+pP5hJm)BI-sIsSQm zE5D83&hO-R@w@qV_prLq73 diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 5220a22..0000000 --- a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,59 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - finishPrompt - id - toggleMoreInfo - id - - CLASS - SUUpdatePermissionPrompt - LANGUAGE - ObjC - OUTLETS - - delegate - id - descriptionTextField - NSTextField - moreInfoButton - NSButton - moreInfoView - NSView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index c5a067e..0000000 --- a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 10A96 - targetFramework - IBCocoaFramework - - diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib deleted file mode 100644 index 64babac12911fdb05ddb63ef96193137c91f3ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13483 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 C^-$vg diff --git a/Sparkle.framework/Versions/A/Sparkle b/Sparkle.framework/Versions/A/Sparkle deleted file mode 100755 index 0db0a8f01fb6f1cf39bbe427ac76153793a26a3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463540 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

B-YH*!3RdDu#}q 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 diff --git a/Sparkle.framework/Versions/Current b/Sparkle.framework/Versions/Current deleted file mode 120000 index 8c7e5a6..0000000 --- a/Sparkle.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/Tentia-Info.plist b/Tentia-Info.plist deleted file mode 100644 index 01a5877..0000000 --- a/Tentia-Info.plist +++ /dev/null @@ -1,80 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - ???? - - CFBundleTypeIconFile - - CFBundleTypeName - DocumentType - CFBundleTypeOSTypes - - ???? - - CFBundleTypeRole - Editor - NSDocumentClass - NewMessageWindow - - - CFBundleExecutable - Tentia - CFBundleHelpBookFolder - Tentia.help - CFBundleHelpBookName - nu.jabs.apps.tentia.help - CFBundleIconFile - Icon.icns - CFBundleIdentifier - nu.jabs.apps.tentia - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Tentia - CFBundlePackageType - APPL - CFBundleShortVersionString - 0.1.2 - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleURLName - nu.jabs.apps.tentia.handler - CFBundleURLSchemes - - tentia - - - - CFBundleVersion - 0.1.2 - LSApplicationCategoryType - public.app-category.lifestyle - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - NSServices - - SUFeedURL - http://jabs.nu/Tentia/download/Appcast.xml - SUPublicDSAKeyFile - dsa_pub.pem - UTExportedTypeDeclarations - - UTImportedTypeDeclarations - - - diff --git a/Tentia.psd b/Tentia.psd deleted file mode 100644 index 1ff7f5db551aa19659be0f72354481da4a610869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161862 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⪼`#zbErxwhR>b@cii&RDF6`E_ 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

%9{LjHl8 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

a5?udMvXw2DZadR@v4X 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 diff --git a/Tentia.xcodeproj/jeena.mode1v3 b/Tentia.xcodeproj/jeena.mode1v3 deleted file mode 100644 index 777a537..0000000 --- a/Tentia.xcodeproj/jeena.mode1v3 +++ /dev/null @@ -1,1421 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - DefaultDescriptionKey - DockingSystemVisible - - Extension - mode1v3 - FavBarConfig - - PBXProjectModuleGUID - 1F68211F1249D25900A03CED - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.mode1v3 - MajorVersion - 33 - MinorVersion - 0 - Name - Default - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - active-combo-popup - action - NSToolbarFlexibleSpaceItem - build-and-go - com.apple.ide.PBXToolbarStopButton - get-info - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProjectWithEditor - Identifier - perspective.project - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 287 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 2A37F4AAFDCFA73011CA2CEA - 2A37F4ABFDCFA73011CA2CEA - 2A37F4B8FDCFA73011CA2CEA - 1FFA36C71177D861006C8562 - 2A37F4C3FDCFA73011CA2CEA - 1058C7A6FEA54F5311CA2CBB - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 37 - 17 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {287, 1304}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {304, 1322}} - GroupTreeTableConfiguration - - MainColumn - 287 - - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - PBXSmartGroupTreeModule - Proportion - 304pt - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20306471E060097A5F4 - PBXProjectModuleLabel - TwittiaCore.js - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CE0B20406471E060097A5F4 - PBXProjectModuleLabel - TwittiaCore.js - _historyCapacity - 0 - bookmark - 1F8D1E4412DF5A0D00571730 - history - - 1F98DCA9124C691A004289ED - 1F98DCAD124C691A004289ED - 1F17508512A972DF004A0B42 - 1F2F793712BD93A600F073BE - 1F27470412D905CA00339B4F - 1F618EAC12DB5D0700E500D9 - 1F618ED112DB60D100E500D9 - 1F618ED212DB60D100E500D9 - 1F618ED312DB60D100E500D9 - 1F618ED412DB60D100E500D9 - 1F618ED512DB60D100E500D9 - 1F618ED612DB60D100E500D9 - 1F618F0212DB665B00E500D9 - 1F618F0312DB665B00E500D9 - 1F618F0412DB665B00E500D9 - 1F618F0512DB665B00E500D9 - 1F8D1E4212DF5A0D00571730 - 1F8D1E4312DF5A0D00571730 - - - SplitCount - 1 - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {1010, 1317}} - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - PBXNavigatorGroup - Proportion - 1317pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CE0B20506471E060097A5F4 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{0, 1322}, {1010, 0}} - RubberWindowFrame - 469 55 1319 1363 0 0 2560 1418 - - Module - XCDetailModule - Proportion - 0pt - - - Proportion - 1010pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDetailModule - - TableOfContents - - 1F8D1E2712DF55D600571730 - 1CE0B1FE06471DED0097A5F4 - 1F8D1E2812DF55D600571730 - 1CE0B20306471E060097A5F4 - 1CE0B20506471E060097A5F4 - - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.morph - IsVertical - 0 - Layout - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C08E77C0454961000C914BD - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - - PBXProjectModuleGUID - 11E0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 186 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 1C37FABC05509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 337}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 1 - XCSharingToken - com.apple.Xcode.GFSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {203, 355}} - GroupTreeTableConfiguration - - MainColumn - 186 - - RubberWindowFrame - 373 269 690 397 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 100% - - - Name - Morph - PreferredWidth - 300 - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - - TableOfContents - - 11E0B1FE06471DED0097A5F4 - - ToolbarConfiguration - xcode.toolbar.config.default.shortV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 1 - Type - Perspectives - UpdateMessage - The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? - WindowJustification - 5 - WindowOrderList - - 1F8D1E4612DF5A0D00571730 - 1F8D1E4712DF5A0D00571730 - 1F6821201249D25900A03CED - 1CD10A99069EF8BA00B06720 - 1C78EAAD065D492600B07095 - /Users/jeena/Projects/Twittia/Twittia 2.xcodeproj - - WindowString - 469 55 1319 1363 0 0 2560 1418 - WindowToolsV3 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.build - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - - StatusBarVisibility - - - GeometryConfiguration - - Frame - {{0, 0}, {1299, 402}} - RubberWindowFrame - 2771 56 1299 684 2560 0 1920 1200 - - Module - PBXNavigatorGroup - Proportion - 402pt - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build Results - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{0, 407}, {1299, 236}} - RubberWindowFrame - 2771 56 1299 684 2560 0 1920 1200 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 643pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - - TableOfContents - - 1F6821201249D25900A03CED - 1F8D1E2912DF55D600571730 - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowContentMinSize - 486 300 - WindowString - 2771 56 1299 684 2560 0 1920 1200 - WindowToolGUID - 1F6821201249D25900A03CED - WindowToolIsVisible - - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debugger - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {316, 203}} - {{316, 0}, {378, 203}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 203}} - {{0, 203}, {694, 178}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 381}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 120 - Value - 85 - Summary - 148 - - Frame - {{316, 0}, {378, 203}} - RubberWindowFrame - 67 996 694 422 0 0 2560 1418 - - RubberWindowFrame - 67 996 694 422 0 0 2560 1418 - - Module - PBXDebugSessionModule - Proportion - 381pt - - - Proportion - 381pt - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - - TableOfContents - - 1CD10A99069EF8BA00B06720 - 1F8D1E2A12DF55D600571730 - 1C162984064C10D400B95A72 - 1F8D1E2B12DF55D600571730 - 1F8D1E2C12DF55D600571730 - 1F8D1E2D12DF55D600571730 - 1F8D1E2E12DF55D600571730 - 1F8D1E2F12DF55D600571730 - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 67 996 694 422 0 0 2560 1418 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - MENUSEPARATOR - - - FirstTimeWindowDisplayed - - Identifier - windowTool.debuggerConsole - IsVertical - - Layout - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {968, 946}} - RubberWindowFrame - 2810 187 968 987 2560 0 1920 1200 - - Module - PBXDebugCLIModule - Proportion - 946pt - - - Proportion - 946pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - - TableOfContents - - 1C78EAAD065D492600B07095 - 1F8D1E4512DF5A0D00571730 - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 2810 187 968 987 2560 0 1920 1200 - WindowToolGUID - 1C78EAAD065D492600B07095 - WindowToolIsVisible - - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.0950012207031 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scm - WindowString - 743 379 452 308 0 0 1280 1002 - - - FirstTimeWindowDisplayed - - Identifier - windowTool.breakpoints - IsVertical - - Layout - - - Dock - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 836 546 744 409 0 0 2560 1418 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 836 546 744 409 0 0 2560 1418 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - - TableOfContents - - 1F618EB812DB5D0700E500D9 - 1F618EB912DB5D0700E500D9 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 836 546 744 409 0 0 2560 1418 - WindowToolGUID - 1F618EB812DB5D0700E500D9 - WindowToolIsVisible - - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 100% - - - Proportion - 100% - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {374, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {630, 331}} - MembersFrame - {{0, 105}, {374, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 97 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 385 179 630 352 0 0 1440 878 - - Module - PBXClassBrowserModule - Proportion - 332pt - - - Proportion - 332pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C0AD2AF069F1E9B00FABCE6 - 1C0AD2B0069F1E9B00FABCE6 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 385 179 630 352 0 0 1440 878 - WindowToolGUID - 1C0AD2AF069F1E9B00FABCE6 - WindowToolIsVisible - 0 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/Tentia.xcodeproj/jeena.pbxuser b/Tentia.xcodeproj/jeena.pbxuser deleted file mode 100644 index 16fe5ce..0000000 --- a/Tentia.xcodeproj/jeena.pbxuser +++ /dev/null @@ -1,496 +0,0 @@ -// !$*UTF8*$! -{ - 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36CB1177D861006C8562 /* default.css */; - name = "default.css: 80"; - rLen = 0; - rLoc = 1037; - rType = 0; - vrLen = 553; - vrLoc = 411; - }; - 1F198FC7117BC4AB0049BEA7 /* README.markdown */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1498}"; - }; - }; - 1F1990DF117BD2250049BEA7 /* Appcast.xml */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{784, 0}"; - sepNavVisRange = "{0, 954}"; - }; - }; - 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1285}}"; - sepNavSelRange = "{461, 0}"; - sepNavVisRange = "{0, 1964}"; - }; - }; - 1F27470412D905CA00339B4F /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */; - name = "dsa_pub.pem: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1178; - vrLoc = 0; - }; - 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; - name = "ViewDelegate.m: 37"; - rLen = 13; - rLoc = 1089; - rType = 0; - vrLen = 1550; - vrLoc = 0; - }; - 1F364396118CBC77008198EF /* OAuth.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 636}"; - }; - }; - 1F364397118CBC77008198EF /* OAuth.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1034, 2655}}"; - sepNavSelRange = "{4216, 0}"; - sepNavVisRange = "{2668, 3057}"; - }; - }; - 1F4673E61180F654006CC37C /* TwittiaCore.js */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1013, 5355}}"; - sepNavSelRange = "{1631, 0}"; - sepNavVisRange = "{248, 3030}"; - }; - }; - 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; - functionName = "-sendTweet:"; - hitCount = 1; - ignoreCount = 0; - lineNumber = 108; - location = Twittia; - modificationTime = 316627463.947617; - originalNumberOfMultipleMatches = 1; - state = 1; - }; - 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */; - name = "MyDocument.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 573; - vrLoc = 0; - }; - 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{358, 0}"; - sepNavVisRange = "{0, 366}"; - }; - }; - 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{279, 0}"; - sepNavVisRange = "{0, 316}"; - }; - }; - 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; - name = "MyDocument.m: 107"; - rLen = 0; - rLoc = 3758; - rType = 0; - vrLen = 3377; - vrLoc = 537; - }; - 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F618EC812DB5E6100E500D9 /* TweetModel.h */; - name = "TweetModel.h: 18"; - rLen = 0; - rLoc = 358; - rType = 0; - vrLen = 366; - vrLoc = 0; - }; - 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; - name = "TweetModel.m: 18"; - rLen = 0; - rLoc = 279; - rType = 0; - vrLen = 316; - vrLoc = 0; - }; - 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D21177D879006C8562 /* Controller.h */; - name = "Controller.h: 10"; - rLen = 25; - rLoc = 149; - rType = 0; - vrLen = 1539; - vrLoc = 0; - }; - 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F364396118CBC77008198EF /* OAuth.h */; - name = "OAuth.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 636; - vrLoc = 0; - }; - 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F364397118CBC77008198EF /* OAuth.m */; - name = "OAuth.m: 135"; - rLen = 0; - rLoc = 4216; - rType = 0; - vrLen = 3057; - vrLoc = 2668; - }; - 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1FFA36D31177D879006C8562 /* Controller.m */; - name = "Controller.m: 178"; - rLen = 0; - rLoc = 5952; - rType = 0; - vrLen = 2979; - vrLoc = 4466; - }; - 1F618F0312DB665B00E500D9 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 8D15AC360486D014006FF6A4 /* Twittia_2-Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - LSMinimumSystemVersion, - ); - name = "/Users/jeena/Projects/Twittia/Twittia_2-Info.plist"; - rLen = 0; - rLoc = 9223372036854775808; - }; - 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F1990DF117BD2250049BEA7 /* Appcast.xml */; - name = "Appcast.xml: 15"; - rLen = 0; - rLoc = 784; - rType = 0; - vrLen = 954; - vrLoc = 0; - }; - 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F198FC7117BC4AB0049BEA7 /* README.markdown */; - name = "README.markdown: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1498; - vrLoc = 0; - }; - 1F68210012493A3400A03CED /* Twittia */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 0; - configStateDict = { - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = Twittia; - savedGlobals = { - }; - showTypeColumn = 0; - sourceDirectories = ( - ); - variableFormatDictionary = { - }; - }; - 1F68211B12493A5400A03CED /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - repositoryNamesForRoots = { - "" = ""; - }; - }; - }; - 1F68211C12493A5400A03CED /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - 1F77DB46118C5F1C007C7F1E /* Constants.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1115, 3300}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1114}"; - }; - }; - 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */; - name = "ReleaseNotes.html: 16"; - rLen = 0; - rLoc = 461; - rType = 0; - vrLen = 1964; - vrLoc = 0; - }; - 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; - name = "TwittiaCore.js: 90"; - rLen = 3; - rLoc = 3369; - rType = 0; - vrLen = 3174; - vrLoc = 376; - }; - 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F4673E61180F654006CC37C /* TwittiaCore.js */; - name = "TwittiaCore.js: 66"; - rLen = 0; - rLoc = 1631; - rType = 0; - vrLen = 3030; - vrLoc = 248; - }; - 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; - name = "Constants.m: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 1114; - vrLoc = 0; - }; - 1F98DCAD124C691A004289ED /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 1F98DC9D124BFFD7004289ED /* pin.png */; - }; - 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 865}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 1178}"; - }; - }; - 1FFA36CB1177D861006C8562 /* default.css */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1115, 3270}}"; - sepNavSelRange = "{1037, 0}"; - sepNavVisRange = "{411, 553}"; - }; - }; - 1FFA36D21177D879006C8562 /* Controller.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1237}}"; - sepNavSelRange = "{149, 25}"; - sepNavVisRange = "{0, 1539}"; - }; - }; - 1FFA36D31177D879006C8562 /* Controller.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1238, 3285}}"; - sepNavSelRange = "{5834, 0}"; - sepNavVisRange = "{5432, 1211}"; - }; - }; - 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1517, 1237}}"; - sepNavSelRange = "{1089, 13}"; - sepNavVisRange = "{0, 1550}"; - }; - }; - 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { - activeBuildConfigurationName = Release; - activeExecutable = 1F68210012493A3400A03CED /* Twittia */; - activeTarget = 8D15AC270486D014006FF6A4 /* Twittia */; - addToTargets = ( - 8D15AC270486D014006FF6A4 /* Twittia */, - ); - breakpoints = ( - 1F618EA612DB5D0200E500D9 /* MyDocument.m:108 */, - ); - codeSenseManager = 1F68211C12493A5400A03CED /* Code sense */; - executables = ( - 1F68210012493A3400A03CED /* Twittia */, - ); - perUserDictionary = { - "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 20, - 198, - 20, - 99, - 99, - 29, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBreakpointsDataSource_ActionID, - PBXBreakpointsDataSource_TypeID, - PBXBreakpointsDataSource_BreakpointID, - PBXBreakpointsDataSource_UseID, - PBXBreakpointsDataSource_LocationID, - PBXBreakpointsDataSource_ConditionID, - PBXBreakpointsDataSource_IgnoreCountID, - PBXBreakpointsDataSource_ContinueID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; - PBXFileTableDataSourceColumnWidthsKey = ( - 200, - 200, - 580.58349609375, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXBookmarksDataSource_LocationID, - PBXBookmarksDataSource_NameID, - PBXBookmarksDataSource_CommentsID, - ); - }; - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 771, - 20, - 48, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 731, - 60, - 20, - 48.16259765625, - 43, - 43, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXTargetDataSource_PrimaryAttribute, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 316626383; - PBXWorkspaceStateSaveDate = 316626383; - }; - perUserProjectItems = { - 1F17508512A972DF004A0B42 /* PBXTextBookmark */ = 1F17508512A972DF004A0B42 /* PBXTextBookmark */; - 1F27470412D905CA00339B4F /* PBXTextBookmark */ = 1F27470412D905CA00339B4F /* PBXTextBookmark */; - 1F2F793712BD93A600F073BE /* PBXTextBookmark */ = 1F2F793712BD93A600F073BE /* PBXTextBookmark */; - 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */ = 1F618EAC12DB5D0700E500D9 /* PBXTextBookmark */; - 1F618ED112DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED112DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED212DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED212DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED312DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED312DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED412DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED412DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED512DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED512DB60D100E500D9 /* PBXTextBookmark */; - 1F618ED612DB60D100E500D9 /* PBXTextBookmark */ = 1F618ED612DB60D100E500D9 /* PBXTextBookmark */; - 1F618F0212DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0212DB665B00E500D9 /* PBXTextBookmark */; - 1F618F0312DB665B00E500D9 /* PlistBookmark */ = 1F618F0312DB665B00E500D9 /* PlistBookmark */; - 1F618F0412DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0412DB665B00E500D9 /* PBXTextBookmark */; - 1F618F0512DB665B00E500D9 /* PBXTextBookmark */ = 1F618F0512DB665B00E500D9 /* PBXTextBookmark */; - 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4212DF5A0D00571730 /* PBXTextBookmark */; - 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4312DF5A0D00571730 /* PBXTextBookmark */; - 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */ = 1F8D1E4412DF5A0D00571730 /* PBXTextBookmark */; - 1F98DCA9124C691A004289ED /* PBXTextBookmark */ = 1F98DCA9124C691A004289ED /* PBXTextBookmark */; - 1F98DCAD124C691A004289ED /* PBXBookmark */ = 1F98DCAD124C691A004289ED /* PBXBookmark */; - }; - sourceControlManager = 1F68211B12493A5400A03CED /* Source Control */; - userBuildSettings = { - }; - }; - 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1748, 1755}}"; - sepNavSelRange = "{3758, 0}"; - sepNavVisRange = "{537, 3377}"; - }; - }; - 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {949, 1262}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 573}"; - }; - }; - 8D15AC270486D014006FF6A4 /* Twittia */ = { - activeExec = 0; - executables = ( - 1F68210012493A3400A03CED /* Twittia */, - ); - }; -} diff --git a/Tentia.xcodeproj/project.pbxproj b/Tentia.xcodeproj/project.pbxproj deleted file mode 100644 index 2c2dff3..0000000 --- a/Tentia.xcodeproj/project.pbxproj +++ /dev/null @@ -1,496 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */; }; - 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */; }; - 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1F122D48118E1DE100E83B77 /* Icon.icns */; }; - 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */; }; - 1F2746FC12D9057600339B4F /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */; }; - 1F4673FE1180F7EA006CC37C /* Core.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F4673E61180F654006CC37C /* Core.js */; }; - 1F4674081180F7EE006CC37C /* jQuery.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F4673E21180F519006CC37C /* jQuery.js */; }; - 1F4674091180F7F3006CC37C /* jQuery-Plugins.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F4673E41180F590006CC37C /* jQuery-Plugins.js */; }; - 1F618ECA12DB5E6100E500D9 /* TweetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; }; - 1F705EA6117889FA00C85707 /* sprite-icons.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F705EA5117889FA00C85707 /* sprite-icons.png */; }; - 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F70619E1178FBB300C85707 /* Carbon.framework */; }; - 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; }; - 1F9816C8163915A100AFD4EE /* enc-base64-min.js in Sources */ = {isa = PBXBuildFile; fileRef = 1F9816C6163915A100AFD4EE /* enc-base64-min.js */; }; - 1F9816C9163915A100AFD4EE /* hmac-sha256.js in Sources */ = {isa = PBXBuildFile; fileRef = 1F9816C7163915A100AFD4EE /* hmac-sha256.js */; }; - 1F9816CA16391C4A00AFD4EE /* enc-base64-min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9816C6163915A100AFD4EE /* enc-base64-min.js */; }; - 1F9816CB16391C4A00AFD4EE /* hmac-sha256.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9816C7163915A100AFD4EE /* hmac-sha256.js */; }; - 1F98DC9E124BFFD7004289ED /* pin.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F98DC9D124BFFD7004289ED /* pin.png */; }; - 1F9D655E163B63E300B7282B /* URI.min.js in Sources */ = {isa = PBXBuildFile; fileRef = 1F9D655D163B63E300B7282B /* URI.min.js */; }; - 1F9D655F163B63F700B7282B /* URI.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9D655D163B63E300B7282B /* URI.min.js */; }; - 1F9D6561163C222400B7282B /* hmac-helper.js in Sources */ = {isa = PBXBuildFile; fileRef = 1F9D6560163C222400B7282B /* hmac-helper.js */; }; - 1F9D6562163C26FC00B7282B /* hmac-helper.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F9D6560163C222400B7282B /* hmac-helper.js */; }; - 1F9D6564163F35C600B7282B /* default-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F9D6563163F35C600B7282B /* default-avatar.png */; }; - 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA09846144602530079E258 /* libicucore.dylib */; }; - 1FC254941427BC050035D84B /* index_oauth.html in Resources */ = {isa = PBXBuildFile; fileRef = 1FC254931427BC050035D84B /* index_oauth.html */; }; - 1FC254951427BF150035D84B /* OauthImplementation.js in Resources */ = {isa = PBXBuildFile; fileRef = 1FC254911427ADF90035D84B /* OauthImplementation.js */; }; - 1FC2549F1427DC7F0035D84B /* Constants.js in Resources */ = {isa = PBXBuildFile; fileRef = 1FC2549D1427DC2B0035D84B /* Constants.js */; }; - 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FC2549B1427D9930035D84B /* AccessToken.m */; }; - 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; - 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1FE2FC92117A818D000504B0 /* Sparkle.framework */; }; - 1FFA36CD1177D861006C8562 /* even-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1FFA36C81177D861006C8562 /* even-bg.png */; }; - 1FFA36CE1177D861006C8562 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 1FFA36C91177D861006C8562 /* index.html */; }; - 1FFA36CF1177D861006C8562 /* odd-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1FFA36CA1177D861006C8562 /* odd-bg.png */; }; - 1FFA36D01177D861006C8562 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 1FFA36CB1177D861006C8562 /* default.css */; }; - 1FFA36D71177D879006C8562 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D31177D879006C8562 /* Controller.m */; }; - 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFA36D51177D879006C8562 /* ViewDelegate.m */; }; - 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FFA37061177DAF4006C8562 /* WebKit.framework */; }; - 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; - 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; - 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */; settings = {ATTRIBUTES = (); }; }; - 8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; - 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 1FE2FCA1117A82E1000504B0 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 1FE2FCA4117A83B1000504B0 /* Sparkle.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; - 1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/NewMessageWindow.xib; sourceTree = ""; }; - 1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; - 1F122D48118E1DE100E83B77 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; - 1F198FC7117BC4AB0049BEA7 /* README.markdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; path = README.markdown; sourceTree = ""; }; - 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; }; - 1F1990DF117BD2250049BEA7 /* Appcast.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Appcast.xml; sourceTree = ""; }; - 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; lineEnding = 0; path = ReleaseNotes.html; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.html; }; - 1F36440E118CC173008198EF /* OAuthConsumer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OAuthConsumer.framework; sourceTree = ""; }; - 1F4673E21180F519006CC37C /* jQuery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jQuery.js; sourceTree = ""; }; - 1F4673E41180F590006CC37C /* jQuery-Plugins.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "jQuery-Plugins.js"; sourceTree = ""; }; - 1F4673E61180F654006CC37C /* Core.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; lineEnding = 0; path = Core.js; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.javascript; }; - 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = TweetModel.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = TweetModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1F705EA5117889FA00C85707 /* sprite-icons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sprite-icons.png"; sourceTree = ""; }; - 1F70619E1178FBB300C85707 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - 1F77DB45118C5F1C007C7F1E /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Constants.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1F77DB46118C5F1C007C7F1E /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Constants.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1F9816C6163915A100AFD4EE /* enc-base64-min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "enc-base64-min.js"; sourceTree = ""; }; - 1F9816C7163915A100AFD4EE /* hmac-sha256.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-sha256.js"; sourceTree = ""; }; - 1F98DC9D124BFFD7004289ED /* pin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pin.png; sourceTree = ""; }; - 1F9D655D163B63E300B7282B /* URI.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = URI.min.js; sourceTree = ""; }; - 1F9D6560163C222400B7282B /* hmac-helper.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-helper.js"; sourceTree = ""; }; - 1F9D6563163F35C600B7282B /* default-avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default-avatar.png"; sourceTree = ""; }; - 1FA09846144602530079E258 /* libicucore.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libicucore.dylib; path = usr/lib/libicucore.dylib; sourceTree = SDKROOT; }; - 1FC254911427ADF90035D84B /* OauthImplementation.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; lineEnding = 0; path = OauthImplementation.js; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.javascript; }; - 1FC254931427BC050035D84B /* index_oauth.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index_oauth.html; sourceTree = ""; }; - 1FC2549A1427D9930035D84B /* AccessToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AccessToken.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1FC2549B1427D9930035D84B /* AccessToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AccessToken.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1FC2549D1427DC2B0035D84B /* Constants.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; lineEnding = 0; path = Constants.js; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.javascript; }; - 1FE2FC92117A818D000504B0 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; - 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; }; - 1FFA36C81177D861006C8562 /* even-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "even-bg.png"; sourceTree = ""; }; - 1FFA36C91177D861006C8562 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; - 1FFA36CA1177D861006C8562 /* odd-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "odd-bg.png"; sourceTree = ""; }; - 1FFA36CB1177D861006C8562 /* default.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = default.css; sourceTree = ""; }; - 1FFA36D21177D879006C8562 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Controller.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 1FFA36D31177D879006C8562 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = Controller.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 1FFA36D41177D879006C8562 /* ViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewDelegate.h; sourceTree = ""; }; - 1FFA36D51177D879006C8562 /* ViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewDelegate.m; sourceTree = ""; }; - 1FFA37061177DAF4006C8562 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - 2564AD2C0F5327BB00F57823 /* Tentia_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Tentia_Prefix.pch; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = NewMessageWindow.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = NewMessageWindow.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = main.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; - 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8D15AC360486D014006FF6A4 /* Tentia-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Tentia-Info.plist"; sourceTree = ""; }; - 8D15AC370486D014006FF6A4 /* Tentia.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tentia.app; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8D15AC330486D014006FF6A4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1FA09847144602530079E258 /* libicucore.dylib in Frameworks */, - 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, - 1FFA37071177DAF4006C8562 /* WebKit.framework in Frameworks */, - 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */, - 1FE2FC93117A818D000504B0 /* Sparkle.framework in Frameworks */, - 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 1F36440E118CC173008198EF /* OAuthConsumer.framework */, - 1FE2FC92117A818D000504B0 /* Sparkle.framework */, - 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, - 1FFA37061177DAF4006C8562 /* WebKit.framework */, - 1F70619E1178FBB300C85707 /* Carbon.framework */, - 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, - 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */, - 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 19C28FB0FE9D524F11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 8D15AC370486D014006FF6A4 /* Tentia.app */, - ); - name = Products; - sourceTree = ""; - }; - 1FFA36C71177D861006C8562 /* WebKit */ = { - isa = PBXGroup; - children = ( - 1F9D655D163B63E300B7282B /* URI.min.js */, - 1F9816C6163915A100AFD4EE /* enc-base64-min.js */, - 1F9816C7163915A100AFD4EE /* hmac-sha256.js */, - 1F4673E61180F654006CC37C /* Core.js */, - 1FC254911427ADF90035D84B /* OauthImplementation.js */, - 1FC2549D1427DC2B0035D84B /* Constants.js */, - 1FFA36C81177D861006C8562 /* even-bg.png */, - 1F98DC9D124BFFD7004289ED /* pin.png */, - 1F705EA5117889FA00C85707 /* sprite-icons.png */, - 1FFA36C91177D861006C8562 /* index.html */, - 1FC254931427BC050035D84B /* index_oauth.html */, - 1FFA36CA1177D861006C8562 /* odd-bg.png */, - 1FFA36CB1177D861006C8562 /* default.css */, - 1F4673E21180F519006CC37C /* jQuery.js */, - 1F4673E41180F590006CC37C /* jQuery-Plugins.js */, - 1F9D6560163C222400B7282B /* hmac-helper.js */, - 1F9D6563163F35C600B7282B /* default-avatar.png */, - ); - name = WebKit; - sourceTree = ""; - }; - 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */ = { - isa = PBXGroup; - children = ( - 1FA09846144602530079E258 /* libicucore.dylib */, - 2A37F4ABFDCFA73011CA2CEA /* Classes */, - 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, - 2A37F4B8FDCFA73011CA2CEA /* Resources */, - 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, - 19C28FB0FE9D524F11CA2CBB /* Products */, - ); - name = "Twittia 2"; - sourceTree = ""; - }; - 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { - isa = PBXGroup; - children = ( - 1FFA36D21177D879006C8562 /* Controller.h */, - 1FFA36D31177D879006C8562 /* Controller.m */, - 1FFA36D41177D879006C8562 /* ViewDelegate.h */, - 1FFA36D51177D879006C8562 /* ViewDelegate.m */, - 2A37F4AEFDCFA73011CA2CEA /* NewMessageWindow.h */, - 2A37F4ACFDCFA73011CA2CEA /* NewMessageWindow.m */, - 1F77DB45118C5F1C007C7F1E /* Constants.h */, - 1F77DB46118C5F1C007C7F1E /* Constants.m */, - 1F618EC812DB5E6100E500D9 /* TweetModel.h */, - 1F618EC912DB5E6100E500D9 /* TweetModel.m */, - 1FC2549A1427D9930035D84B /* AccessToken.h */, - 1FC2549B1427D9930035D84B /* AccessToken.m */, - ); - name = Classes; - sourceTree = ""; - }; - 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 2564AD2C0F5327BB00F57823 /* Tentia_Prefix.pch */, - 2A37F4B0FDCFA73011CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 1F122D48118E1DE100E83B77 /* Icon.icns */, - 1F198FC7117BC4AB0049BEA7 /* README.markdown */, - 1FE2FCA6117A8952000504B0 /* dsa_pub.pem */, - 1FFA36C71177D861006C8562 /* WebKit */, - 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, - 8D15AC360486D014006FF6A4 /* Tentia-Info.plist */, - 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, - 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */, - 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */, - 1F1990E1117BD2650049BEA7 /* ReleaseNotes.html */, - 1F1990DF117BD2250049BEA7 /* Appcast.xml */, - ); - name = Resources; - sourceTree = ""; - }; - 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, - 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 8D15AC270486D014006FF6A4 /* Twittia */ = { - isa = PBXNativeTarget; - buildConfigurationList = C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Twittia" */; - buildPhases = ( - 8D15AC2B0486D014006FF6A4 /* Resources */, - 8D15AC300486D014006FF6A4 /* Sources */, - 8D15AC330486D014006FF6A4 /* Frameworks */, - 1FE2FCA1117A82E1000504B0 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Twittia; - productInstallPath = "$(HOME)/Applications"; - productName = "Twittia 2"; - productReference = 8D15AC370486D014006FF6A4 /* Tentia.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0450; - }; - buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Tentia" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8D15AC270486D014006FF6A4 /* Twittia */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8D15AC2B0486D014006FF6A4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1F9D6562163C26FC00B7282B /* hmac-helper.js in Resources */, - 1F9D655F163B63F700B7282B /* URI.min.js in Resources */, - 1F9816CA16391C4A00AFD4EE /* enc-base64-min.js in Resources */, - 1F9816CB16391C4A00AFD4EE /* hmac-sha256.js in Resources */, - 1FC2549F1427DC7F0035D84B /* Constants.js in Resources */, - 1FC254951427BF150035D84B /* OauthImplementation.js in Resources */, - 1F2746FC12D9057600339B4F /* dsa_pub.pem in Resources */, - 1F4673FE1180F7EA006CC37C /* Core.js in Resources */, - 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */, - 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, - 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */, - 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */, - 1FFA36CD1177D861006C8562 /* even-bg.png in Resources */, - 1F4674091180F7F3006CC37C /* jQuery-Plugins.js in Resources */, - 1FFA36CE1177D861006C8562 /* index.html in Resources */, - 1FFA36CF1177D861006C8562 /* odd-bg.png in Resources */, - 1F4674081180F7EE006CC37C /* jQuery.js in Resources */, - 1FFA36D01177D861006C8562 /* default.css in Resources */, - 1F705EA6117889FA00C85707 /* sprite-icons.png in Resources */, - 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */, - 1F98DC9E124BFFD7004289ED /* pin.png in Resources */, - 1FC254941427BC050035D84B /* index_oauth.html in Resources */, - 1F9D6564163F35C600B7282B /* default-avatar.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8D15AC300486D014006FF6A4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1FC254A01427DFAD0035D84B /* AccessToken.m in Sources */, - 8D15AC310486D014006FF6A4 /* NewMessageWindow.m in Sources */, - 8D15AC320486D014006FF6A4 /* main.m in Sources */, - 1FFA36D71177D879006C8562 /* Controller.m in Sources */, - 1FFA36D81177D879006C8562 /* ViewDelegate.m in Sources */, - 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */, - 1F618ECA12DB5E6100E500D9 /* TweetModel.m in Sources */, - 1F9816C8163915A100AFD4EE /* enc-base64-min.js in Sources */, - 1F9816C9163915A100AFD4EE /* hmac-sha256.js in Sources */, - 1F9D655E163B63E300B7282B /* URI.min.js in Sources */, - 1F9D6561163C222400B7282B /* hmac-helper.js in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C1660FE840EACC02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1DDD58280DA1D0D100B32029 /* NewMessageWindow.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD58290DA1D0D100B32029 /* English */, - ); - name = NewMessageWindow.xib; - sourceTree = ""; - }; - 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1DDD582B0DA1D0D100B32029 /* English */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; - 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { - isa = PBXVariantGroup; - children = ( - 2A37F4BAFDCFA73011CA2CEA /* English */, - ); - name = Credits.rtf; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - C05733C808A9546B00998B17 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Tentia_Prefix.pch; - INFOPLIST_FILE = "Tentia-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = Tentia; - SDKROOT = ""; - }; - name = Debug; - }; - C05733C908A9546B00998B17 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - ); - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = Tentia_Prefix.pch; - INFOPLIST_FILE = "Tentia-Info.plist"; - INSTALL_PATH = "$(HOME)/Applications"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = Tentia; - SDKROOT = ""; - }; - name = Release; - }; - C05733CC08A9546B00998B17 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = ""; - }; - name = Debug; - }; - C05733CD08A9546B00998B17 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.5; - ONLY_ACTIVE_ARCH = NO; - SDKROOT = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - C05733C708A9546B00998B17 /* Build configuration list for PBXNativeTarget "Twittia" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C05733C808A9546B00998B17 /* Debug */, - C05733C908A9546B00998B17 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "Tentia" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C05733CC08A9546B00998B17 /* Debug */, - C05733CD08A9546B00998B17 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - }; - rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; -} diff --git a/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6cf79f5..0000000 --- a/Tentia.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings b/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings deleted file mode 100644 index 659c876..0000000 --- a/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100644 index a5446f1..0000000 --- a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme b/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme deleted file mode 100644 index bbef1dc..0000000 --- a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/Twittia.xcscheme +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist b/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 7ce27f4..0000000 --- a/Tentia.xcodeproj/xcuserdata/jeena.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - Twittia.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 8D15AC270486D014006FF6A4 - - primary - - - - - diff --git a/Tentia_Prefix.pch b/Tentia_Prefix.pch deleted file mode 100644 index 3eff51c..0000000 --- a/Tentia_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'Tentia' target in the 'Tentia' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/TweetModel.h b/TweetModel.h deleted file mode 100644 index 51f08b9..0000000 --- a/TweetModel.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// TweetModel.h -// Tentia -// -// Created by Jeena on 10.01.11. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import - - -@interface TweetModel : NSObject { - NSString *text; - NSString *inReplyTostatusId; - NSString *inReplyToEntity; -} - -@property (nonatomic, retain) NSString *text; -@property (nonatomic, retain) NSString *inReplyTostatusId; -@property (nonatomic, retain) NSString *inReplyToEntity; - -@end diff --git a/TweetModel.m b/TweetModel.m deleted file mode 100644 index dc917ea..0000000 --- a/TweetModel.m +++ /dev/null @@ -1,23 +0,0 @@ -// -// TweetModel.m -// Tentia -// -// Created by Jeena on 10.01.11. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "TweetModel.h" - - -@implementation TweetModel - -@synthesize text, inReplyTostatusId, inReplyToEntity; - -- (void)dealloc { - [text release]; - [inReplyTostatusId release]; - [inReplyToEntity release]; - [super dealloc]; -} - -@end diff --git a/URI.min.js b/URI.min.js deleted file mode 100644 index 80b30f0..0000000 --- a/URI.min.js +++ /dev/null @@ -1,70 +0,0 @@ -/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */ -/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */ -(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;if;f++)if("0"===j[0]&&1f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e, -c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(qw(y/q)&&j("overflow");d*= -q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;tl&&q.push(z(l));for((d=g=q.length)&&q.push(B);d=b&&lw((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;ty&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h -l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)", -"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this); -(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg", -bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro", -eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org", -"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan", -kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org", -mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org", -pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org", -sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school", -pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk", -rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or", -ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc", -us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)}, -is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})(); -(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a=== -d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; -c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent}; -c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}}; -c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;bc)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+ -a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()}; -m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]}; -q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null, -query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname), -b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null}; -var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this, -a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b); -return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0, -e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length- -this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return""; -var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$"); -this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length; -e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1)); -a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k= -a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g: -g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query= -c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()}; -f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&& -this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0, -f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery; -f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname), -a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;g -#import -#import "Constants.h" - -@interface ViewDelegate : NSObject { - WebView *timelineView; - WebView *mentionsView; - WebView *oauthView; -} - -@property (nonatomic, assign) WebView *timelineView; -@property (nonatomic, assign) WebView *mentionsView; -@property (nonatomic, assign) WebView *oauthView; - -@end diff --git a/ViewDelegate.m b/ViewDelegate.m deleted file mode 100644 index ad041fb..0000000 --- a/ViewDelegate.m +++ /dev/null @@ -1,84 +0,0 @@ -// -// ViewDelegate.m -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import "ViewDelegate.h" - - -@implementation ViewDelegate - -@synthesize timelineView, mentionsView, oauthView; - -- (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message;{ - - if (![message isKindOfClass:[NSDictionary class]]) return; - - NSString *viewName = @"TimelineView"; - if (sender == mentionsView) viewName = @"MentionsView"; - if (sender == oauthView) viewName = @"OauthView"; - - NSLog(@"js<%@>: %@:%@: %@", - viewName, - [[message objectForKey:@"sourceURL"] lastPathComponent], - [message objectForKey:@"lineNumber"], - [message objectForKey:@"message"] - ); -} - -- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { - NSString *viewName = @"TimelineView"; - if (sender == mentionsView) viewName = @"MentionsView"; - if (sender == oauthView) viewName = @"OauthView"; - - NSLog(@"jsa<%@>: %@", viewName, message); -} - -- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id )listener { - [listener ignore]; - [[NSWorkspace sharedWorkspace] openURL:[request URL]]; -} - -- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame { - - if (sender == oauthView) { - - [oauthView stringByEvaluatingJavaScriptFromString:@"setTimeout( function() { tentia_oauth = new OauthImplementation(); }, 2);"]; - - } else { - - NSString *action = @"home_timeline"; - NSString *delay = @"1"; - - if (sender == mentionsView) { - action = @"mentions"; - delay = @"1000"; - } - - [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: - @"setTimeout(function(){ tentia_instance = new Core('%@'); \ - document.getElementsByTagName('body')[0].appendChild(tentia_instance.body); \ - setTimeout(function() { loadPlugin(controller.pluginURL()) }, 1); }, %@);", action, delay]]; - } -} - -- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems { - for (NSMenuItem*item in defaultMenuItems) { - if ([[item title] isEqualToString:@"Reload"]) { - [item setAction:@selector(reload:)]; - [item setTarget:self]; - } - } - - return defaultMenuItems; -} - -- (void)reload:(id)sender { - [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData();"]; - [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData();"]; -} - -@end diff --git a/default-avatar.png b/default-avatar.png deleted file mode 100644 index a14806e7883bd81597d1acbfd7d420d172ca9fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3159 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 diff --git a/dsa_pub.pem b/dsa_pub.pem deleted file mode 100644 index 4c959f3..0000000 --- a/dsa_pub.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIDPDCCAi4GByqGSM44BAEwggIhAoIBAQDjho3c9LB9TBv/wUQSegtiD2Q/YFjK -HvJH2ndtw2MIwd9iLA4JgXuZAZHpIa+YV7vU97TCvdRmO50VkfULkRona2SjE8lR -oK3VMOkJNGlAK0MfNgDF3/KcI7W6wTZRq/QLLI9Hi1oUpfheDCrrONyvHhCRW5UD -Rm/1Y/TltWfvDi2XmzvVFc9ISnuWoAntzp0IshWeAkcpDLbXJ3u9GudVAHeowEps -+BlMHMrzKPyvviRp0skJkmYvDpZn1YI9WhI4a65hPvgGO7a0/bgc1WbI6nR9mx6f -v+L37eqXoAJ+jrd2BaxD73BH7gBidO3xEYP0oUAxi1xkh2t587yyPU9lAhUAkKxj -3QWYyr+bYg6PDQyx2XpU+hcCggEBAJjhPOB+yLjbobEKJLzdjYujO0XMKVwej6k9 -14lCems95gwjWVS8t8rLAEYcheUPsz4rAid0ONCRQYbWmMBksv6AuXYH/qQM0BcB -DXtXnTRjUkDHCyWw+/QnkiQ+oHrzsZHPO1j+gsLOvZw2dfC1DUHHqsqaW1Oq8Xu9 -q+slmwbjTuymsbgfBJ27P09PU+FM0VNVQTCEXfZTMlDsCl6o19QmRbCLAqY0VhKZ -qPeL0atvdkaczDrNReZYRHcCfa9sO74Kt/m10UW7vEL5bIjYTN7kWvLh5HAuMvZo -Ta77PJpD0X0HbPUrX0/2YXZchxt3is1Tfy03T9aO4iWE+0Qy6wYDggEGAAKCAQEA -4AxqBHt4LMlsK330/0YXhyKYJEBjDHftz8vFuyq7Zob0t5euDExqtkjnDTo9BD/m -4tOE3/12IHL8kPpB0augGHONyoCO7Fdm+CR+mWNMqg2qo5mdPxEzP74WFrryhvh3 -z/GMhBPfZ/qSbfOvI9snc2KS6Pi34L+Je1UiYt8+gmN/uF/cUTWIkOUavI6AuGIB -oCkWGpEYjAYfZkR80/pKNQq2qLc9hiUAj1VpY5B6pxlelmos+/F62Je+E6Fd1VZN -cJfvL2kp/9bPU35cye4/FGkrW94DgRBw3IpAVrnwjnglJn2JUr7BySLO7PhFfTvO -ZbWeowFp6qKpOugZ7kS//w== ------END PUBLIC KEY----- diff --git a/enc-base64-min.js b/enc-base64-min.js deleted file mode 100644 index acff43d..0000000 --- a/enc-base64-min.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -CryptoJS v3.0.2 -code.google.com/p/crypto-js -(c) 2009-2012 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); -for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/even-bg.png b/even-bg.png deleted file mode 100644 index 3166a2bb0d7818f7146ecd056d63f3479cad85fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3<=Wa({UTT+KPA0aYq{x;TbZ+)7GFOkm?sU~_9=NJ>b5z`|j`#>N)L#>b|{X2!s{ok5SW SusR#4oWax8&t;ucLK6U`6Fn^e diff --git a/hmac-helper.js b/hmac-helper.js deleted file mode 100644 index f3ad041..0000000 --- a/hmac-helper.js +++ /dev/null @@ -1,122 +0,0 @@ -// its different for app authentication and user authentication: -// for apps its id: mac_key_id and secret: mac_key, -// for users its id: access_token and secret:mac_key - -function getURL(url, http_method, callback, data, auth_header) { - $.ajax({ - beforeSend: function(xhr) { - if (data) xhr.setRequestHeader("Content-Length", data.length); - - if (auth_header) { // if is_set? auth_header - xhr.setRequestHeader("Authorization", auth_header); - } else { - var user_access_token = controller.stringForKey_("user_access_token"); - if (auth_header !== false && user_access_token) { - auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("user_mac_key"), - user_access_token - ) - xhr.setRequestHeader("Authorization", auth_header); - } - } - }, - url: url, - accepts: "application/vnd.tent.v0+json", - contentType: "application/vnd.tent.v0+json", - type: http_method, - complete: callback, - data: data, - processData: false, - error: function(xhr, ajaxOptions, thrownError) { - alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); - } - }); -} - -function makeAuthHeader(url, http_method, mac_key, mac_key_id) { - - url = URI(url); - var nonce = makeid(8); - var time_stamp = parseInt((new Date).getTime() / 1000, 10); - - var port = url.port(); - if (!port) { - port = url.protocol() == "https" ? "443" : "80"; - } - - var normalizedRequestString = "" - + time_stamp + '\n' - + nonce + '\n' - + http_method + '\n' - + url.path() + url.search() + url.hash() + '\n' - + url.hostname() + '\n' - + port + '\n' - + '\n' ; - - var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); - hmac.update(normalizedRequestString); - var hash = hmac.finalize(); - var mac = hash.toString(CryptoJS.enc.Base64); - - return 'MAC id="' + mac_key_id + - '", ts="' + time_stamp + - '", nonce="' + nonce + - '", mac="' + mac + '"'; -} - -function makeid(len) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for( var i=0; i < len; i++ ) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - - return text; -} - -function findProfileURL(entity, callback) { - $.ajax({ - url: entity, - type: "HEAD", - complete: function(resp) { - if(resp) { - var headers = resp.getAllResponseHeaders(); - var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! - var ret = headers.match(regex); - var profile_url = null; - if(ret && ret.length > 1) { - var profile_url = ret[1]; - if (profile_url == "/profile") { - profile_url = entity + "/profile"; - } - } - - if (profile_url) { - callback(profile_url); - } - } - }, - error: function(xhr, ajaxOptions, thrownError) { - alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); - } - }); -} - -function mkApiRootPath(path) { - var api_root = controller.stringForKey_("api_root"); - if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { - api_root += "/"; - } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { - api_root = api_root.substring(0, api_root.length -1); - } - return api_root + path; -} - -function debug(string) { - if (typeof string == "Object") { - string = JSON.stirngify(string); - } - alert("DEBUG: " + string); -} \ No newline at end of file diff --git a/hmac-sha256.js b/hmac-sha256.js deleted file mode 100644 index a143d84..0000000 --- a/hmac-sha256.js +++ /dev/null @@ -1,17 +0,0 @@ -/* -CryptoJS v3.0.2 -code.google.com/p/crypto-js -(c) 2009-2012 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a= -this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= -l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b= -a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create(); -this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;fg;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64> -n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes, -g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); -(function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b - - - Tentia - - - - - - - - - - - - - - \ No newline at end of file diff --git a/index_oauth.html b/index_oauth.html deleted file mode 100644 index ccdb02c..0000000 --- a/index_oauth.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Tentia - - - - - - - - - - - - \ No newline at end of file diff --git a/jQuery-Plugins.js b/jQuery-Plugins.js deleted file mode 100644 index c865d25..0000000 --- a/jQuery-Plugins.js +++ /dev/null @@ -1,330 +0,0 @@ - -(function ($) { - $.format = (function () { - - var parseMonth = function(value){ - - switch(value){ - case "Jan": - return "01"; - break; - case "Feb": - return "02"; - break; - case "Mar": - return "03"; - break; - case "Apr": - return "04"; - break; - case "May": - return "05"; - break; - case "Jun": - return "06"; - break; - case "Jul": - return "07"; - break; - case "Aug": - return "08"; - break; - case "Sep": - return "09"; - break; - case "Oct": - return "10"; - break; - case "Nov": - return "11"; - break; - case "Dec": - return "12"; - break; - default: - return value; - } - }; - - var parseTime = function(value){ - var retValue = value; - if(retValue.indexOf(".") != -1){ - retValue = retValue.substring(0, retValue.indexOf(".")); - } - - var values3 = retValue.split(":"); - - if(values3.length == 3){ - hour = values3[0]; - minute = values3[1]; - second = values3[2]; - - return { - time: retValue, - hour: hour, - minute: minute, - second: second - }; - } else { - return { - time: "", - hour: "", - minute: "", - second: "" - }; - } - }; - - return { - date: function(value, format){ - //value = new java.util.Date() - //2009-12-18 10:54:50.546 - try{ - var values = value.split(" "); - var year = null; - var month = null; - var dayOfMonth = null; - var time = null; //json, time, hour, minute, second - - switch(values.length){ - case 6://Wed Jan 13 10:43:41 CET 2010 - year = values[5]; - month = parseMonth(values[1]); - dayOfMonth = values[2]; - time = parseTime(values[3]); - break; - case 2://2009-12-18 10:54:50.546 - var values2 = values[0].split("-"); - year = values2[0]; - month = values2[1]; - dayOfMonth = values2[2]; - time = parseTime(values[1]); - break; - default: - return value; - } - - - var pattern = ""; - var retValue = ""; - - for(i = 0; i < format.length; i++){ - var currentPattern = format.charAt(i); - pattern += currentPattern; - switch(pattern){ - case "dd": - retValue += dayOfMonth; - pattern = ""; - break; - case "MM": - retValue += month; - pattern = ""; - break; - case "yyyy": - retValue += year; - pattern = ""; - break; - case "HH": - retValue += time.hour; - pattern = ""; - break; - case "hh": - retValue += time.hour; - pattern = ""; - break; - case "mm": - retValue += time.minute; - pattern = ""; - break; - case "ss": - retValue += time.second; - pattern = ""; - break; - case " ": - retValue += currentPattern; - pattern = ""; - break; - case "/": - retValue += currentPattern; - pattern = ""; - break; - case ":": - retValue += currentPattern; - pattern = ""; - break; - default: - if(pattern.length == 2 && pattern.indexOf("y") != 0){ - retValue += pattern.substring(0, 1); - pattern = pattern.substring(1, 2); - } else if((pattern.length == 3 && pattern.indexOf("yyy") == -1)){ - pattern = ""; - } - } - } - return retValue; - } catch(e) { - return value; - } - } - }; - })(); -}(jQuery)); - - -$(document).ready(function() { - $(".shortDateFormat").each(function(idx, elem) { - if ($(elem).is(":input")){ - $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy')); - } else { - $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy')); - } - }); - $(".longDateFormat").each(function(idx, elem) { - if ($(elem).is(":input")){ - $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy hh:mm:ss')); - } else { - $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy hh:mm:ss')); - } - }); -}); - -/* - * timeago: a jQuery plugin, version: 0.8.2 (2010-02-16) - * @requires jQuery v1.2.3 or later - * - * Timeago is a jQuery plugin that makes it easy to support automatically - * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). - * - * For usage and examples, visit: - * http://timeago.yarp.com/ - * - * Licensed under the MIT: - * http://www.opensource.org/licenses/mit-license.php - * - * Copyright (c) 2008-2010, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org) - */ -(function($) { - $.timeago = function(timestamp) { - if (timestamp instanceof Date) return inWords(timestamp); - else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp)); - else return inWords($.timeago.datetime(timestamp)); - }; - var $t = $.timeago; - - $.extend($.timeago, { - settings: { - refreshMillis: 60000, - allowFuture: false, - strings: { - prefixAgo: null, - prefixFromNow: null, - suffixAgo: "ago", - suffixFromNow: "from now", - ago: null, // DEPRECATED, use suffixAgo - fromNow: null, // DEPRECATED, use suffixFromNow - seconds: "less than a minute", - minute: "about a minute", - minutes: "%d minutes", - hour: "about an hour", - hours: "about %d hours", - day: "a day", - days: "%d days", - month: "about a month", - months: "%d months", - year: "about a year", - years: "%d years" - } - }, - inWords: function(distanceMillis) { - var $l = this.settings.strings; - var prefix = $l.prefixAgo; - var suffix = $l.suffixAgo || $l.ago; - if (this.settings.allowFuture) { - if (distanceMillis < 0) { - prefix = $l.prefixFromNow; - suffix = $l.suffixFromNow || $l.fromNow; - } - distanceMillis = Math.abs(distanceMillis); - } - - var seconds = distanceMillis / 1000; - var minutes = seconds / 60; - var hours = minutes / 60; - var days = hours / 24; - var years = days / 365; - - var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || - seconds < 90 && substitute($l.minute, 1) || - minutes < 45 && substitute($l.minutes, Math.round(minutes)) || - minutes < 90 && substitute($l.hour, 1) || - hours < 24 && substitute($l.hours, Math.round(hours)) || - hours < 48 && substitute($l.day, 1) || - days < 30 && substitute($l.days, Math.floor(days)) || - days < 60 && substitute($l.month, 1) || - days < 365 && substitute($l.months, Math.floor(days / 30)) || - years < 2 && substitute($l.year, 1) || - substitute($l.years, Math.floor(years)); - - return $.trim([prefix, words, suffix].join(" ")); - }, - parse: function(iso8601) { - var s = $.trim(iso8601); - s = s.replace(/-/,"/").replace(/-/,"/"); - s = s.replace(/T/," ").replace(/Z/," UTC"); - s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 - return new Date(s); - }, - datetime: function(elem) { - // jQuery's `is()` doesn't play well with HTML5 in IE - var isTime = $(elem).get(0).tagName.toLowerCase() == "time"; // $(elem).is("time"); - var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title"); - return $t.parse(iso8601); - } - }); - - $.fn.timeago = function() { - var self = this; - self.each(refresh); - - var $s = $t.settings; - if ($s.refreshMillis > 0) { - setInterval(function() { self.each(refresh); }, $s.refreshMillis); - } - return self; - }; - - function refresh() { - var data = prepareData(this); - if (!isNaN(data.datetime)) { - $(this).text(inWords(data.datetime)); - } - return this; - } - - function prepareData(element) { - element = $(element); - if (!element.data("timeago")) { - element.data("timeago", { datetime: $t.datetime(element) }); - var text = $.trim(element.text()); - if (text.length > 0) element.attr("title", text); - } - return element.data("timeago"); - } - - function inWords(date) { - return $t.inWords(distance(date)); - } - - function distance(date) { - return (new Date().getTime() - date.getTime()); - } - - function substitute(stringOrFunction, value) { - var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction; - return string.replace(/%d/i, value); - } - - // fix for IE6 suckage - document.createElement("abbr"); - document.createElement("time"); -})(jQuery); diff --git a/jQuery.js b/jQuery.js deleted file mode 100644 index 7c24308..0000000 --- a/jQuery.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(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,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/main.m b/main.m deleted file mode 100644 index 951da87..0000000 --- a/main.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.m -// Tentia -// -// Created by Jeena on 16.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -#import - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **) argv); -} diff --git a/odd-bg.png b/odd-bg.png deleted file mode 100644 index b822a14df86acfd140737763565850c86d370e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrE!3<<`t^?=KfZqb`svfBpFe+o`}Xa_hYxSxzWx6F z`%|K;}o-U3d6}OTS5)&9W6xh@n7?K_&BrtOru(`2?v8AzesB&c_Z3QZ3 N@O1TaS?83{1ORvxJVO8g diff --git a/pin.png b/pin.png deleted file mode 100644 index 32ce008232e849db86e1911ce8d2a5aee8261ea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)WdKHUATc>0L}hv)GB7YRATlsIGBY|eHy|r8F)%QJGeoxl000McNliru z(*hb78y;6mW3~VQ010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00GWP zL_t(|+NF}sYZE~jhkvu#-K0y4ZbM6Zup&hfk=BD+FQVYZo1jP!ir`6d_Tr(Z{u^Gj zw@Q1Gcu+)zAhb|42oa)SV@TN4vb(c8&3^AXffPJUHV0pL4m$jin60FvB - - - Tentia's Changelog - http://jabs.nu/Tentia/download/Appcast.xml - Most recent changes with links to updates. - en - - Version #{version} - 10.5.0 - http://jabs.nu/Tentia/download/ReleaseNotes.html - #{Time.now.rfc2822} - - - - -XML - - -File.open("#{path}/Appcast.xml", 'w') {|f| f.write(xml) } -system "scp \"#{path}/build/Release/Tentia.app.zip\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" -system "scp \"#{path}/ReleaseNotes.html\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" -system "scp \"#{path}/Appcast.xml\" jeena@jeena.net:~/jabs.nu/public/Tentia/download/" - -puts "Done." \ No newline at end of file diff --git a/sprite-icons.png b/sprite-icons.png deleted file mode 100644 index 7336e510a1ea7817467807b5609fbcd4763f2849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11868 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 z 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 From d99ff8652045d44f71a7745216ef424ada5ddbc6 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 7 Nov 2012 03:51:27 +0100 Subject: [PATCH 04/17] restructuring of the whole code basis --- Mac/Controller.m | 60 +- Mac/Tentia.xcodeproj/project.pbxproj | 94 +- .../UserInterfaceState.xcuserstate | Bin 33669 -> 36831 bytes Mac/ViewDelegate.m | 9 +- Mac/WebKit/Constants.js | 21 - Mac/WebKit/Core.js | 457 - Mac/WebKit/OauthImplementation.js | 142 - Mac/WebKit/TimelineView.js | 0 Mac/WebKit/hmac-helper.js | 122 - Mac/WebKit/hmac-sha256.js | 17 - Mac/WebKit/index.html | 18 - Mac/WebKit/index_oauth.html | 16 - README.markdown | 14 +- TimelineView.js | 4 + WebKit/Constants.js | 21 - WebKit/ConversationView.js | 0 WebKit/Core.js | 457 - WebKit/OauthImplementation.js | 142 - WebKit/TimelineView.js | 0 WebKit/URI.min.js | 70 - {Mac/WebKit => WebKit/css}/default.css | 10 +- WebKit/default-avatar.png | Bin 3159 -> 0 bytes WebKit/default.css | 238 - WebKit/delete.png | Bin 199 -> 0 bytes WebKit/enc-base64-min.js | 8 - WebKit/even-bg.png | Bin 171 -> 0 bytes WebKit/hmac-helper.js | 122 - {Mac/WebKit => WebKit/img}/default-avatar.png | Bin {Mac/WebKit => WebKit/img}/delete.png | Bin {Mac/WebKit => WebKit/img}/even-bg.png | Bin {Mac/WebKit => WebKit/img}/odd-bg.png | Bin {Mac/WebKit => WebKit/img}/pin.png | Bin {Mac/WebKit => WebKit/img}/sprite-icons.png | Bin WebKit/index.html | 11 +- WebKit/index_oauth.html | 16 - WebKit/jQuery-Plugins.js | 330 - WebKit/jQuery.js | 154 - WebKit/odd-bg.png | Bin 166 -> 0 bytes WebKit/pin.png | Bin 630 -> 0 bytes .../scripts/controller/Conversation.js | 0 WebKit/scripts/controller/Mentions.js | 45 + WebKit/scripts/controller/Oauth.js | 134 + WebKit/scripts/controller/Timeline.js | 106 + WebKit/scripts/helper/Core.js | 358 + WebKit/scripts/helper/Hmac.js | 56 + WebKit/scripts/helper/HostApp.js | 51 + WebKit/scripts/helper/Paths.js | 95 + WebKit/scripts/lib/.DS_Store | Bin 0 -> 6148 bytes WebKit/scripts/lib/CryptoJS.js | 7 + WebKit/scripts/lib/URI.js | 7 + WebKit/scripts/lib/vendor/.DS_Store | Bin 0 -> 6148 bytes .../scripts/lib/vendor}/URI.min.js | 0 .../scripts/lib/vendor}/enc-base64-min.js | 0 .../{ => scripts/lib/vendor}/hmac-sha256.js | 12 + .../scripts/lib/vendor}/jQuery.js | 0 .../scripts/lib/vendor/jQuery.plugins.js | 0 WebKit/scripts/lib/vendor/require-jquery.js | 11421 ++++++++++++++++ WebKit/scripts/lib/vendor/require.js | 1981 +++ WebKit/scripts/main.js | 68 + WebKit/sprite-icons.png | Bin 11868 -> 0 bytes 60 files changed, 14404 insertions(+), 2490 deletions(-) delete mode 100644 Mac/WebKit/Constants.js delete mode 100644 Mac/WebKit/Core.js delete mode 100644 Mac/WebKit/OauthImplementation.js delete mode 100644 Mac/WebKit/TimelineView.js delete mode 100644 Mac/WebKit/hmac-helper.js delete mode 100644 Mac/WebKit/hmac-sha256.js delete mode 100644 Mac/WebKit/index.html delete mode 100644 Mac/WebKit/index_oauth.html create mode 100644 TimelineView.js delete mode 100644 WebKit/Constants.js delete mode 100644 WebKit/ConversationView.js delete mode 100644 WebKit/Core.js delete mode 100644 WebKit/OauthImplementation.js delete mode 100644 WebKit/TimelineView.js delete mode 100644 WebKit/URI.min.js rename {Mac/WebKit => WebKit/css}/default.css (90%) delete mode 100644 WebKit/default-avatar.png delete mode 100644 WebKit/default.css delete mode 100644 WebKit/delete.png delete mode 100644 WebKit/enc-base64-min.js delete mode 100644 WebKit/even-bg.png delete mode 100644 WebKit/hmac-helper.js rename {Mac/WebKit => WebKit/img}/default-avatar.png (100%) rename {Mac/WebKit => WebKit/img}/delete.png (100%) rename {Mac/WebKit => WebKit/img}/even-bg.png (100%) rename {Mac/WebKit => WebKit/img}/odd-bg.png (100%) rename {Mac/WebKit => WebKit/img}/pin.png (100%) rename {Mac/WebKit => WebKit/img}/sprite-icons.png (100%) delete mode 100644 WebKit/index_oauth.html delete mode 100644 WebKit/jQuery-Plugins.js delete mode 100644 WebKit/jQuery.js delete mode 100644 WebKit/odd-bg.png delete mode 100644 WebKit/pin.png rename Mac/WebKit/ConversationView.js => WebKit/scripts/controller/Conversation.js (100%) create mode 100644 WebKit/scripts/controller/Mentions.js create mode 100644 WebKit/scripts/controller/Oauth.js create mode 100644 WebKit/scripts/controller/Timeline.js create mode 100644 WebKit/scripts/helper/Core.js create mode 100644 WebKit/scripts/helper/Hmac.js create mode 100644 WebKit/scripts/helper/HostApp.js create mode 100644 WebKit/scripts/helper/Paths.js create mode 100644 WebKit/scripts/lib/.DS_Store create mode 100644 WebKit/scripts/lib/CryptoJS.js create mode 100644 WebKit/scripts/lib/URI.js create mode 100644 WebKit/scripts/lib/vendor/.DS_Store rename {Mac/WebKit => WebKit/scripts/lib/vendor}/URI.min.js (100%) rename {Mac/WebKit => WebKit/scripts/lib/vendor}/enc-base64-min.js (100%) rename WebKit/{ => scripts/lib/vendor}/hmac-sha256.js (84%) rename {Mac/WebKit => WebKit/scripts/lib/vendor}/jQuery.js (100%) rename Mac/WebKit/jQuery-Plugins.js => WebKit/scripts/lib/vendor/jQuery.plugins.js (100%) create mode 100644 WebKit/scripts/lib/vendor/require-jquery.js create mode 100644 WebKit/scripts/lib/vendor/require.js create mode 100644 WebKit/scripts/main.js delete mode 100644 WebKit/sprite-icons.png diff --git a/Mac/Controller.m b/Mac/Controller.m index 7eb883a..7c07b4a 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -66,10 +66,9 @@ - (void)initOauth { if (!oauthView) { - NSString *path = [[NSBundle mainBundle] resourcePath]; + NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Webkit/"]; NSURL *url = [NSURL fileURLWithPath:path]; - NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index_oauth.html", path] encoding:NSUTF8StringEncoding error:nil]; - + NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@index.html", path] encoding:NSUTF8StringEncoding error:nil]; oauthView = [[WebView alloc] init]; viewDelegate.oauthView = oauthView; @@ -78,11 +77,36 @@ [oauthView setPolicyDelegate:viewDelegate]; [oauthView setUIDelegate:viewDelegate]; [[oauthView windowScriptObject] setValue:self forKey:@"controller"]; + //[oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth'); };"]; + } else { - [oauthView stringByEvaluatingJavaScriptFromString:@"tentia_oauth.authenticate()"]; + [oauthView stringByEvaluatingJavaScriptFromString:@"start('oauth');"]; } } +- (void)initWebViews { + + NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Webkit/"]; + NSURL *url = [NSURL fileURLWithPath:path]; + NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@index.html", path] encoding:NSUTF8StringEncoding error:nil]; + + viewDelegate.timelineView = timelineView; + [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; + [timelineView setFrameLoadDelegate:viewDelegate]; + [timelineView setPolicyDelegate:viewDelegate]; + [timelineView setUIDelegate:viewDelegate]; + [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; + + viewDelegate.mentionsView = mentionsView; + [[mentionsView mainFrame] loadHTMLString:index_string baseURL:url]; + [mentionsView setFrameLoadDelegate:viewDelegate]; + [mentionsView setPolicyDelegate:viewDelegate]; + [mentionsView setUIDelegate:viewDelegate]; + [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; + + // FIXME: show timelineView after authentification +} + - (void)initHotKeys { NSInteger newTweetKey = kVK_ANSI_M; // http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes @@ -139,29 +163,6 @@ [loginViewWindow performClose:self]; } -- (void)initWebViews { - - NSString *path = [[NSBundle mainBundle] resourcePath]; - NSURL *url = [NSURL fileURLWithPath:path]; - NSString *index_string = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/index.html", path] encoding:NSUTF8StringEncoding error:nil]; - - viewDelegate.timelineView = timelineView; - [[timelineView mainFrame] loadHTMLString:index_string baseURL:url]; - [timelineView setFrameLoadDelegate:viewDelegate]; - [timelineView setPolicyDelegate:viewDelegate]; - [timelineView setUIDelegate:viewDelegate]; - [[timelineView windowScriptObject] setValue:self forKey:@"controller"]; - - viewDelegate.mentionsView = mentionsView; - [[mentionsView mainFrame] loadHTMLString:index_string baseURL:url]; - [mentionsView setFrameLoadDelegate:viewDelegate]; - [mentionsView setPolicyDelegate:viewDelegate]; - [mentionsView setUIDelegate:viewDelegate]; - [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; - - // FIXME: show timelineView after authentification -} - + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { return NO; } @@ -200,7 +201,7 @@ NSRange range = [aString rangeOfString:@"oauthtoken"]; if (range.length > 0) { - [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"tentia_oauth.requestAccessToken('%@')", aString]]; + [oauthView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"tentia_instance.requestAccessToken('%@')", aString]]; } else { NewMessageWindow *newTweet = (NewMessageWindow *)[[NSDocumentController sharedDocumentController] openUntitledDocumentAndDisplay:YES error:nil]; [newTweet withString:aString]; @@ -276,6 +277,9 @@ [timelineView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; + if (oauthView) { + [oauthView stringByEvaluatingJavaScriptFromString:@"tentia_instance.logout();"]; + } [accessToken setString:nil forKey:@"app_mac_key"]; [accessToken setString:nil forKey:@"app_mac_key_id"]; diff --git a/Mac/Tentia.xcodeproj/project.pbxproj b/Mac/Tentia.xcodeproj/project.pbxproj index 35c0252..a7b52ad 100644 --- a/Mac/Tentia.xcodeproj/project.pbxproj +++ b/Mac/Tentia.xcodeproj/project.pbxproj @@ -11,26 +11,7 @@ 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */; }; 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1F122D48118E1DE100E83B77 /* Icon.icns */; }; 1F1990C6117BCA960049BEA7 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */; }; - 1F1C8082164824B30010B409 /* Constants.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805A164824760010B409 /* Constants.js */; }; - 1F1C8083164824B30010B409 /* ConversationView.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805B164824760010B409 /* ConversationView.js */; }; - 1F1C8084164824B30010B409 /* Core.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805C164824760010B409 /* Core.js */; }; - 1F1C8085164824B30010B409 /* default-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805D164824760010B409 /* default-avatar.png */; }; - 1F1C8086164824B30010B409 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805E164824760010B409 /* default.css */; }; - 1F1C8087164824B30010B409 /* delete.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C805F164824760010B409 /* delete.png */; }; - 1F1C8088164824B30010B409 /* enc-base64-min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8060164824760010B409 /* enc-base64-min.js */; }; - 1F1C8089164824B30010B409 /* even-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8061164824760010B409 /* even-bg.png */; }; - 1F1C808A164824B30010B409 /* hmac-helper.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8062164824760010B409 /* hmac-helper.js */; }; - 1F1C808B164824B30010B409 /* hmac-sha256.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8063164824760010B409 /* hmac-sha256.js */; }; - 1F1C808C164824B30010B409 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8064164824760010B409 /* index.html */; }; - 1F1C808D164824B30010B409 /* index_oauth.html in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8065164824760010B409 /* index_oauth.html */; }; - 1F1C808E164824B30010B409 /* jQuery-Plugins.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8066164824760010B409 /* jQuery-Plugins.js */; }; - 1F1C808F164824B30010B409 /* jQuery.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8067164824760010B409 /* jQuery.js */; }; - 1F1C8090164824B30010B409 /* OauthImplementation.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8068164824760010B409 /* OauthImplementation.js */; }; - 1F1C8091164824B30010B409 /* odd-bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C8069164824760010B409 /* odd-bg.png */; }; - 1F1C8092164824B30010B409 /* pin.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806A164824760010B409 /* pin.png */; }; - 1F1C8093164824B30010B409 /* sprite-icons.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806B164824760010B409 /* sprite-icons.png */; }; - 1F1C8094164824B30010B409 /* TimelineView.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806C164824760010B409 /* TimelineView.js */; }; - 1F1C8095164824B30010B409 /* URI.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C806D164824760010B409 /* URI.min.js */; }; + 1F1C80F916482A250010B409 /* WebKit in Resources */ = {isa = PBXBuildFile; fileRef = 1F1C80F816482A250010B409 /* WebKit */; }; 1F618ECA12DB5E6100E500D9 /* TweetModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F618EC912DB5E6100E500D9 /* TweetModel.m */; }; 1F70619F1178FBB300C85707 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F70619E1178FBB300C85707 /* Carbon.framework */; }; 1F77DB47118C5F1C007C7F1E /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F77DB46118C5F1C007C7F1E /* Constants.m */; }; @@ -69,27 +50,7 @@ 1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; 1F122D48118E1DE100E83B77 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; 1F1990C5117BCA960049BEA7 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; }; - 1F1C805A164824760010B409 /* Constants.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Constants.js; sourceTree = ""; }; - 1F1C805B164824760010B409 /* ConversationView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = ConversationView.js; sourceTree = ""; }; - 1F1C805C164824760010B409 /* Core.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Core.js; sourceTree = ""; }; - 1F1C805D164824760010B409 /* default-avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default-avatar.png"; sourceTree = ""; }; - 1F1C805E164824760010B409 /* default.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = default.css; sourceTree = ""; }; - 1F1C805F164824760010B409 /* delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delete.png; sourceTree = ""; }; - 1F1C8060164824760010B409 /* enc-base64-min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "enc-base64-min.js"; sourceTree = ""; }; - 1F1C8061164824760010B409 /* even-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "even-bg.png"; sourceTree = ""; }; - 1F1C8062164824760010B409 /* hmac-helper.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-helper.js"; sourceTree = ""; }; - 1F1C8063164824760010B409 /* hmac-sha256.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "hmac-sha256.js"; sourceTree = ""; }; - 1F1C8064164824760010B409 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; - 1F1C8065164824760010B409 /* index_oauth.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index_oauth.html; sourceTree = ""; }; - 1F1C8066164824760010B409 /* jQuery-Plugins.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "jQuery-Plugins.js"; sourceTree = ""; }; - 1F1C8067164824760010B409 /* jQuery.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = jQuery.js; sourceTree = ""; }; - 1F1C8068164824760010B409 /* OauthImplementation.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = OauthImplementation.js; sourceTree = ""; }; - 1F1C8069164824760010B409 /* odd-bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "odd-bg.png"; sourceTree = ""; }; - 1F1C806A164824760010B409 /* pin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pin.png; sourceTree = ""; }; - 1F1C806B164824760010B409 /* sprite-icons.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sprite-icons.png"; sourceTree = ""; }; - 1F1C806C164824760010B409 /* TimelineView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = TimelineView.js; sourceTree = ""; }; - 1F1C806D164824760010B409 /* URI.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = URI.min.js; sourceTree = ""; }; - 1F36440E118CC173008198EF /* OAuthConsumer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = OAuthConsumer.framework; sourceTree = ""; }; + 1F1C80F816482A250010B409 /* WebKit */ = {isa = PBXFileReference; lastKnownFileType = folder; name = WebKit; path = ../WebKit; sourceTree = ""; }; 1F618EC812DB5E6100E500D9 /* TweetModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = TweetModel.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 1F618EC912DB5E6100E500D9 /* TweetModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = TweetModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 1F70619E1178FBB300C85707 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; @@ -135,7 +96,6 @@ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( - 1F36440E118CC173008198EF /* OAuthConsumer.framework */, 1FE2FC92117A818D000504B0 /* Sparkle.framework */, 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, 1FFA37061177DAF4006C8562 /* WebKit.framework */, @@ -163,33 +123,6 @@ name = Products; sourceTree = ""; }; - 1F1C8059164824760010B409 /* WebKit */ = { - isa = PBXGroup; - children = ( - 1F1C805A164824760010B409 /* Constants.js */, - 1F1C805B164824760010B409 /* ConversationView.js */, - 1F1C805C164824760010B409 /* Core.js */, - 1F1C805D164824760010B409 /* default-avatar.png */, - 1F1C805E164824760010B409 /* default.css */, - 1F1C805F164824760010B409 /* delete.png */, - 1F1C8060164824760010B409 /* enc-base64-min.js */, - 1F1C8061164824760010B409 /* even-bg.png */, - 1F1C8062164824760010B409 /* hmac-helper.js */, - 1F1C8063164824760010B409 /* hmac-sha256.js */, - 1F1C8064164824760010B409 /* index.html */, - 1F1C8065164824760010B409 /* index_oauth.html */, - 1F1C8066164824760010B409 /* jQuery-Plugins.js */, - 1F1C8067164824760010B409 /* jQuery.js */, - 1F1C8068164824760010B409 /* OauthImplementation.js */, - 1F1C8069164824760010B409 /* odd-bg.png */, - 1F1C806A164824760010B409 /* pin.png */, - 1F1C806B164824760010B409 /* sprite-icons.png */, - 1F1C806C164824760010B409 /* TimelineView.js */, - 1F1C806D164824760010B409 /* URI.min.js */, - ); - path = WebKit; - sourceTree = ""; - }; 2A37F4AAFDCFA73011CA2CEA /* Twittia 2 */ = { isa = PBXGroup; children = ( @@ -234,8 +167,8 @@ 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 1F1C80F816482A250010B409 /* WebKit */, 1F122D48118E1DE100E83B77 /* Icon.icns */, - 1F1C8059164824760010B409 /* WebKit */, 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, 8D15AC360486D014006FF6A4 /* Tentia-Info.plist */, 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, @@ -308,31 +241,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1F1C8082164824B30010B409 /* Constants.js in Resources */, - 1F1C8083164824B30010B409 /* ConversationView.js in Resources */, - 1F1C8084164824B30010B409 /* Core.js in Resources */, - 1F1C8085164824B30010B409 /* default-avatar.png in Resources */, - 1F1C8086164824B30010B409 /* default.css in Resources */, - 1F1C8087164824B30010B409 /* delete.png in Resources */, - 1F1C8088164824B30010B409 /* enc-base64-min.js in Resources */, - 1F1C8089164824B30010B409 /* even-bg.png in Resources */, - 1F1C808A164824B30010B409 /* hmac-helper.js in Resources */, - 1F1C808B164824B30010B409 /* hmac-sha256.js in Resources */, - 1F1C808C164824B30010B409 /* index.html in Resources */, - 1F1C808D164824B30010B409 /* index_oauth.html in Resources */, - 1F1C808E164824B30010B409 /* jQuery-Plugins.js in Resources */, - 1F1C808F164824B30010B409 /* jQuery.js in Resources */, - 1F1C8090164824B30010B409 /* OauthImplementation.js in Resources */, - 1F1C8091164824B30010B409 /* odd-bg.png in Resources */, - 1F1C8092164824B30010B409 /* pin.png in Resources */, - 1F1C8093164824B30010B409 /* sprite-icons.png in Resources */, - 1F1C8094164824B30010B409 /* TimelineView.js in Resources */, - 1F1C8095164824B30010B409 /* URI.min.js in Resources */, 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */, 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, 1DDD582C0DA1D0D100B32029 /* NewMessageWindow.xib in Resources */, 1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */, 1F122D49118E1DE100E83B77 /* Icon.icns in Resources */, + 1F1C80F916482A250010B409 /* WebKit in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate b/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate index c163e33018a29e974bd624f9e1093b9d9d98c59f..ad1b90971046be74f00e5678fa97557c408018a1 100644 GIT binary patch literal 36831 zcmeFacVHA%_cuQG&hE6`B%6eE0)d2(y4l_ACYu83y+C>cLP!<}q>(}uohyQZ1;qx6 zN)n3LKtwEnq6qc^h$x5!1VIr6#fthnGm}k$;Pd49e&6?b|M*!TnYr_sd(S=R+;h%7 z_sq1GhWfU4gW*F8QJA7B6{V&aZMn9hJYcS^wXMFnsXU;0+ALdbds{_7O>6DUdbnI1 z(B9nQLZM~rwm8#|Q!K?%uGBEfjf$WQl#wz~k(8OTP*GGgWu;=MSSpSxqKc^!s+20D z%Bc#flB%L6QIn||R3p_ybx;eah1B)b4b)O<8MT61Mcqx^L)}X~Ks`itQk$s9sjbx0 z)HdpQ>IG^y^(wWOdX0LA`hYq>9i~2_zM#IOPEaSQ)6_TAchnEmPt+yqZ$u%4Fk%pk z9Fa3}L+;224M(GqKMFv4WI~ZB8d*_18i%q_Hp)S{C=V5&LNp0YMpIBVszo!*x*i zCVC6Kjov};q66q7bOe2jK1FBHMf5ZJ9sPlMEMN_G#xB?udt)Cw9Q)!?xDC(4^YL|f zF(&v%ybRxrZ^gIaJMmrkUVI;Z06&Ny!RzpPya8{!B+ppCSJj-r$46grhoqtodOI+M<#OXyO%j4r1u z=t{bZo*-naY`TGNq?_nwdJ%mcy_mk9zJV5LLf=T=L9e9mr0=31q93Loq1Vw* z&`;7&(Oc-9^e%cg{Sy5$y@!5?EBXie0)3JG zk^YIkME^|xqM}tQm0HE9TvV>AVJbh>DAj0{zbZmyP#IMw)p%8cDp8fI%2Va5Dpggg zNvg@Jdetn|Y}Gu~eANQgLe(J`Rj;cKsXkO4R(+&8p*pGhN_9$gL3L5}qv|I$rABJ3c2qm5b?V`2U-bxe zh&ogqrnahM)UoO~b-a3B=uxb>gM)ce%?)gP!2s1K?? zR-aIxRDY%ZMtxrWz4|xx@9IAoHN!IkEl9?1Hjmcy3nF&l0Q^rhYrZCma3}z-%&&*-JM%2_BD0g(#q44BG5eX zoMXOY&NJULKQI@Vi_EXgZ_HmT!?G;L@~kuK!UnKo*g$qH8^i{)A#5lc!A7#tY#f`w zrmz`oE}O^Zv*m0BTgg_jlh~P84?j~*pcPn=%x0+kSJ-|K4t>xBp z8@Ok=9o%!=^V|#Ei`-7`UG6>ZeeMJ90C$i(#C^ye=8kcnawoWx+y(9;_apZccZvI% z`-}UVXL*iyia*1j=YQfa^MCSx35>uBoS+k&1sB0p2o^$w zP$5hR7xY4eU=WOgNw5kr!gwKF$PhAxi9&%;D3l8oLbWhem?g{>8iYn+j<7_yNmwc@ z6K)o65ta)pgj=0fMUKCyuUKaKWuM2MoZwl`U2ZV#d zQQ?^Isc>94C7c$%7A^=Eg&&2VgkLp+Mx)Vc95jv^Cyh?ytZ~td(2UghX+~+rYQi)o zO{B)GiPgku;x&nyBu%m=MU$$@)Z}XNG-aA9O{1nsvru!r<`&IunmaXjX&%w6({yS! zX`a$-(>$+vN%M;4Rn0!l8=5yYZ)x7sys!B{b3k)g^NHrD<}=MVnr}7dG~a2?YktyP z()^*hti@VZ>!j6bowZ(CZ>^8kUmLEC)W&GzwF%l}ZHhKSo2#9uEiMUY>S$;S>W7WE0S*dAd z&8@TBT54)-sm-+=jkc!tYF$8-!JJ}%3EK(`z~!+SBUl+nZa9+Tm(jdUI<@VQyQs&Lh<}tz*WF`lcCW^-Xon z^O9{dYv$HBw@#7)Y(=#*ZH+d7R(>t)XiBxUwbwV*w1Z(&tuy4-w6&)+H?}m`;8hbP zd#9}(D5N}=T+?Q&lOL>aUr=akX>JA5IoYYGybrqIJD`8*tu>9dqWXol-Y$9;+G+t) z>AwBxp57<5w4}qVv}HBr)i>4mjs-eA;P;f~rncq=8)u)Acq)U^KSqtC##0GYB9%lX zQz=v`l}4qDE~2YAOmq|7MGw(a^b);ApU0?7DvQdda;RJ?kIJVeP!p*Fakv;GmWk^L zdX%881ieVmO9Z_}uvMB0FW{Skj{4f!xy{Y9m7eRBzp8a(%WIqKYedrIiSO)X2)};&yY+6TsLtTU{ zs6B(!*R-_Q=`2z=Qum{(h!eNJ+La+3CGJ18smo2liU)Ggvz zG3-O?R_ZqDc9@4T)Jp13>aJ>?dw(&USTn_eC-w0}~rm>}}u1BW>`NR-0 zSPT+F{|A%gpR^-r*W8pXIvu6V*L~Fe)w<#RdvWD3x~bLF8VVHSKenpYxu%vDU-_)^ zjt8l=z;Q{ftu+g}s0XQb%T&9nwvYCS9n%}q6}3%aR?sdZHQr2L}3 zYj*l~QR{o@zd?);!xb7oD$#heXc$Q2C#k2XyMSmW(I^q^KV>S3W;^R{-~Nuh6VFi3 zN}bp)nmef-qUGOVf)}L@?i8a2cJO6tkK9447%g=$^?!j;BcQiwnNc@Xzh>|4KI#oh z-$m`GUKeA<_%7;A>Me1+m^n}-ye|t&T(vG~NPQ@tSKkh5pxP9k)ik|XFGm{s%ixDH z?6_*(_@Tkd%4GniVk8}*j!A0nW9k#?sF)xoib>tnr_^!kGcj3A5i_Kj7y-OoJux?{ zsJJ>UHLG|+VRcbjZdyul)`a}(oV1F;8l;s^Ov*3nZQyqmLTOe}R&s7yA;3r&3eSB- zEng>wDL;Qro$aK~h^b<_^82^cxpiWi!sq9y@2B)~xhw?T)cHO!xIkS5PVW(dB3pYm zb%FX(){^iGD2PRi3}JqT#bJJnj8TTDFh8ToYFxb7KDj?rze@!9h5D8HP0SLr#hh;H z59%`Yr3cJ34&Uh-uY2T}pa#M^jyc4OF3or07@VL7nSD zuE+}-6^UsD2IU35)VXfyD)N)Bmq-9E{QwjL5RAM21U6VqR}dJDLBT*^6o|&6AhBGm z6eo3~5EP2S#3|we@ty%vgp4w~1CLD@61%50%>binroN#COoWJh+q^tmTN|teiUF#h zUq7v%Ora?GB~{hBoFTm=uckI);EVEV>YMUxO&wRhAWnY4l?CF4*jlS~&dQPu%L&*kbL;D*YwlUeDK$-VYuW}j zR=6c!V%-U1ofuYXG#CsfYma=PB2*?#e=#aSrQ&pPhB&hum7@w&Db|a##Mx3;J+hJ~ zbhJ0rH(k|@VOhzrAkH56LP<8jC&_7Qp4Zgxxw87Y_L=s#PDM48e%(5WxfIIPA)9i+ zKe1&hCH-T+Q;(V{{RT7(%|;EV5jBa8Vw2b`wuo~!pcXU-wW2oEF1CtoV!Jp`oG*q~ zRyH>`rq|Shr&W~#RJFBEl>9Mp8GA^bTHM^*L4{%yo7?K8wK=b*1%@k`(6+kb=9XMA z{u=BL!Mp@023^)a0{AEVAoriDSY)p*JVf$o<0Y$duA-Gx?(3&lm^b>ian=pJ-0T7~Wx zuNOsev3T=;fzKY6I{%1xgBVs6WiZ$W(2X`pOtv0vKpRCO-Y72VMvtP+=rQpoajCfM z{}7XHMNbbT+jazIjl^|VG1&{~Wr@jNL_5(gv>Ux7-Xbm+SBSTYw{1Xs&@1Rwv=_Z5 z-Y(uDt`zSS@BV*>$to8`T4TceqRcV9T=pJ%Um2ysP6w&wUFZ<{P`pcAC59E6Vu~y= zCi}#Ef{qR((Q$NQFbzh1ioOC3b{edZdqIP(=@ZppZL1?rueq_uK2!qKs+QK7LSOZh{wd^;^*R*;z{w8__cUe{8s!<{9e2u zbuS0!;yj#>C*X;=02ksST#QR_DK5k1xB^$=Dm)2K##3-Lo{DSmG+c}8unkYgGw@7Y zk7wc8xB)lfCftl$@Eq|+@ehJ%f;0rV668UU4?!ad8cR?FL6HQ-5tKksGC}DCWfPP~ z&_sfY2`VF~ilAzOY6+S_&@6)H5Y$1?0)iG3BoefQpk)LtC+IGM?j>jqK@SnsNznQM zwg{dpui_i4b+JQQ#gl4l!T2a{o^5N=!+O*kG{B2wyhp2b@k7EZOiN15OVc;jw9ba$ zT~mKVQAT`hsNO8tm9?;d>gP8??6j|cOJ%ethU)H5sOe~*nI**srNF5Ywwl$}A9#ff z{8Y6rVMqhN%8VO8&6P6f)@ohMkU;y49DQT|KHek4ZL8Le8xkA@RBiLCnb$H>W5{_9Ye(|vrU6QWQ5$?tNPh3V?IAr%t8p-Km;tm z8Dh;>VLmEjzF4ix9TGVQTELP=EJqIYZSAcPz8=6-Ps(rDRjo4*=?y8(tv3BY_S_~T zy;QAB9ukt|4)oBqq%ce0Sl@I7?sGEko}qGR@jRQYJrBaS4FlE3E*b9C|A{&p!11rh zc&`mLsx$al_sd}WhdLW=Gi!`jQ0;9Q>5ZWZA}9-)a6KO10HOInhJ3497dNB{?g`Bd z!ZC+sz;}kKccm?g_8Qo^891>=WwiH(x-Rr|PgcKI(C~8^@q_;XM-Q$kzLIed{tq~M z00*9x;XWMdyv%H@sSO9tFga; z)zhWzrv!);Nb7V~>NsiDCK{qa!6WpG0NDuW#z zDk1wAXrKoBQ-=F=sDzZ<>QvC;Ga$G$U^S$%4EWi9&fxv$nPz3QFNWGZd7fw58d_|v z1Lv96%77<^YN<#X`zoViKu?`z;IFE6mLX{hW&Iy8C$zf^b$Y0JOzPt`Y!uo@hCK5h za7|BKXMo(~07* z;%|@;@VgY)@SNCM56-~?`_56Zed7z_Nmtw|t#7M`jiQv9HLVc7vb7f0G|jM0&V=w@ zQbR*lTU&<>f>2|wc*wpvH}EOgB#GBY&2S1Tm!j*I7~|r~MJ5A;ql|`VyJJje(-Wjo zme<(k7;POpIB+(ytag50FxxI-W(X-CS06V9D! zGKHd|A|(nLA)eDmp;h$#*PQIt^csMCkRVS2+a&<$EkkDdpSaKT^rS`BsA%Y&DcUM^ zHQH(hap=SCq&G^qSBdl{`cc4qjG*BJ`AV20WX$-$OHVFZDtFUrG=OxOjYbK(Hx5T{ zr6Jn5o_?C%Mn6MuC&-VWQ3Q=9$bUV(gMJP`Umz%epfM7tywUz&Qx!pX+*a}21$i(= zh*y^Zar%>HFAW>4>*?3%ee{0%b%KHj3MMFopwRX7oAg^Sl6MFSBPd)NiT=OJl$m$s z?i>4|JQ8!1NtUkxv-}Ya`>WSb6`#__VJM#yWFWB71w%0@+!Nq{lHQOZqfL^?Mw$jN z#LGfZ#vC2qu2+HjnY5eHo&gDN`J<=pqx&(9O z!mP?rWhyZF1UB;&b^?N#wgl|H^;a1NrlF7a6I8_#%wQTwRiY||5tb8FKv1CsRV0rv z=z*9U)`ZIhvqW1#O&X(Mfc@rkimLXSm~|?f(!CM_n~A;M3tBND>ZD%oUSy=PcRNhg zpqeu%v07Da&^3q%L+>gim`a8Cv2}ac#}zq@wm{dSq@53=)ouo;7O7x+?Ha=+sv80G zCW0mrG+Dx&q6~M%?q`=~*}GErY}^FsMY~w7eRFd*(Av6GGrq8^L9;=3>g_E zv2mo-%Rb0QRZk8|$){9XlnI$hP`v~P>Ie8GE@#c_mqyB?wiqJ&V0Nf>0*vZ8)$^(s zRFF+Mo1g}Q8VPDzuiB;Btw1#s)Y1d>Uo>u$?t88N;b}e0VCrRoH&pKqN{IJV?*m;A z5Y$Rgo7DSunGo@TKgGOqkBnlqO0ypw(|_Sp9Z`KM!3`=v$5o#JtAUAD;B-&9qdR(&fW4rZ#V&Z)iw#P11ONYEk)@j4kX)BmG;11?rA zGFoH(voz zgW5>Y3W9DW2u#r1*Q+DdX3Ad;%k~`vt(2hd{I4$6*?8wfv2D^Kqaji$l|i#E{WkmhFkpETSSlv7Nz(R4i@CpSsvFg<06VC%Qn#tw0Tu-FVFJkr z04weJC+$djb*$C)x-6UKXjzRK`df19>(oRd=V0QlzEQnI;WSXr-4djtN`r1Wa&xVs z?2UbU@ah$6dD$3rV(wJKvZ01$V*`O~2te8-cP{mP-}#H58NmIJK@u~-Nl~v+KL}gd zYM|EUPW4)X9v`qJs_vBH90b9RWBQN+WCQngQd(`00n?^$ZJ%ye3hUL7z|p1Npx#K( z69hfkrG8YsnV_c#+9FAb``|$cxKV0rZHFAWhN4<2b;+J*0}cjEth6>tK0R=u{XJXN z&%k?N7d!~|uD5ilx2vBe=xKtU>&+ujKd;^e2?y#I)Gw-c610t=X9(KfO`li4q<$G@ zg&=rhht#QmFHrJtMq&P8sZ)603QP(t7PNHn&No8r!+Bl(HuRO=4lW=J!e4d({iMFW ztA0=J>+=M?AciZ_XpJ<>2oD%ScL{ccL+ZmY;gH!H->LqHpq+hm_(XktaO}_3uqXi? zb`iAOj%@@(MC#oG=GpHPJN7B{*Ag?GCg|l(^%;U*8OTiEDa-^LWRtF9rnxn(5!0I+ zAn&X#VqrtX+?JUOrh#P=6*YH;VQ$mH#)YQH>IKne$TTy|Xo@J7!n*yof5I~|3o0s0 zTW2VVd2&ci{ev3vLk6SO&+1>~@w`gVUNL;K6vncE^B3g1#l#alkkkP8la`jty;tv1fy4jLBfq%exs;a$~w2a^VP$z75iA+vmb2NVP6(kfwI%;+obOwt>i@ zgEX%ma825~Rys2{xLu*yqqeL)}OkR5BwZUD5U&sX1lu*Hi`!lP;!)nMTklf=+ia zb&QRmuL(LMhL`nlY^gHA6+M`KrfbiuOhKlBX@moH1E&5;ChBIIm}cp~$v-z6{KSd9 z_j4GqfBL1+G9An!$eLs3GV_@E%mQX1LFWkij-c}dflu+n2Ie|uF>^h010xc2fuM^7 z{XsAs(s%ejEW7_8jLFhbq=_>jO{MKW6viPc1}|k^N=a$mkvcOL{1L0R_Q`Q1lDV(J9jc{tuPdV|}qY`&Z zisU7N>Hdo373NiDFEfc?hF~?pDp`H}FRZ_yJu<^iHr%noPUJV3cO)WDW8PxGtT;_D zOEA~Xyvw}DyiYJsut2az3@=sIglgTjXx(pR=~*zYqIFr1@=?h4ku>Zh1Z#T}#F?WE zM71Sd(5sxT!mxMybLNz!CB9(3WKJ+AnXd?TB3MVTGr=wdyKZ1kGhZ`jn6u0`1P>$F zjo=XkhY=k8|7!_2P++IxkIW@WOZ-HzdnfZV!5;slC4QH*#2?IMf;|Zy-lrx0W-&-L zOR6OR&JNpAZc8*S}u6uhbH(z&c!o=Op9#4x%MkSJsEpZ(@hBZmc`&!FsY@ ztT(|U3HBp+6v3kj_9r-i;4z!n;jAw^f*r~F(dSvX9!T(5f`bSSCKz^sVhIkF#_wrO zHCmEVOvwhbH7eC$1oJ;CJv}PP+Efo?DTTSKsml_r}_5UrM#!hEv zf;6%-2#)Dw>j{n<;NY=Mvb%(1t92%O-dRKQ49GXLB%6|qhV;mAYqH4{ZjMe*3Xid- zMTeV{EKy0((UB?UoW${7*K`wPRn5+qhP8m;@nYCvI23&w zdmVK1cuzWvi53!QKjI;d>wI zVsE3``(IF6-NCMu&XJ|2^*exXU!S_!JK4J=qxBm1|Iu1y?`H3n$afFHDV^+n1gC;0 z5ATtT2RP&=)xPLi9yN#I}vP~I6HP6gMp)@JV? zSP#9|lB6PE?ci_1(Yb2f=(@S>b#mMA2IgRuWv@yPmK+ zSvbVh&F*4%vtSiXB)EX!!ftjC`wIIi!9@fY6I>$oI`FD44Co{z7&W&-y$~?|{<&c? zq-z%0pzuTuEREH=;D2tdyhCP9f5p6|r~#h#W* zN7U7{*GzE6lcs?qE?1UAm{zHoxcGmsqTG`#=cM!Y86Geu)M$?Gse;1`8m)sPRE6lF zgHkvGPDUrSg8)neer$v4H(HUdDC&SCDz-XX-63ZvLgel>NX?wCVQ!*IRCjrJLh%}2 z)Rg8IrNi-1XqnR7(A@f=?}(9t->A|4a9t|o0&kt3-cU264SttI&Ob3wp`WvZPO5za z@|4?ATVGd`0eT41a+4vncQ9~lQ1D=tE_&Y86%^7};vx(xBt;nD^<|RW!Jy=B6iFp} zk`0uO76pJaMcVtWDN$5sx+~*>?k!>bnCczofo`qI_ql%LpMYl;9hVMxr1T0fqNcQ3jOV%Rv+2 zv}_fc3MW%rPzPE8W%atyb||5@OCc~u%HL4rX23sCsRmC`l$`XEd6E|jdSde5Tpa?KF@y7zQkT&FUm4LmEal>bAqQ4T)UC|iM_=B%>Dv@ULv@T zU>m{H35K-5Gc6gSt^Ebyyo_cKJsnk~9->}o+) zo}30w*;9@p-K#7)C(aobBn~{E#!k+K;N}4~1LvXG3{YU{fB&Sr9Pj45IbX2WIUjB~ z!7T*O>EcFkV0^a{+y>Tq$vo+}bm>f6{fwFI{)xA(lL_OWc%!2Dlu-pz=QhEa!E`Q| z3*kb!Fm?u<`GWv=2f_0Q2D@VsSVYp0d(-4OlQOQkLp@FOPbZYPXa#is|FIMMT)gsz zg+q-5{>zkdX0L**>Jc+8h0CS%k8-J88kf#xaG6{dm(76%u$bWM3BG|~kzfLqEeT#i z@J)|$d0aj>0d$NbG%w;{kzGpgGJi!%GnL?hmds>U()fQ~jI{TmQ)MNN6tGCbnzz zsNc(qo0}V^)wE_oB?392SuuK)cfc@`2i)>lvH%@bNq4|Y##lgg;USs*1W*_Kp`n zD@3WpaqT9_HSM)C)4_eS$Mpw6S{Qsr zy#_HIZa4Q5_cFJKdxd+I+e`2Uf;SSpiQq>G-b^sKG>>oM_JPv!=iY$--{RgT_z9_m zA;C{df9xc9kD{`A1Q^Qy0rN|yLrGIx&D_39U`n7E?6b5csl*iwU8cKNyzf{5ESQ-pOREqFNp@ACflaNLDF6f zrMX*Qr6H4)e_%94NA(sO;y&U&rd&F?BLqLy$w3Tm3vd}&m+%VNWob)llThr0KF)nE z$;@X2Z|&s1Aoyu1Dk7C|vD<6hR~)1TZ{SXGr@61WGu&B%w-F3nx1Hc;3Em;yk^Vi; zeJ|gEoABRr1VcW+#Ih7=ht$?q4x3PQz;|tx@~SaUS_>+A3}MB@Gn=yr|_v1y!m~C4-x#KBq>mI4gQsvkYfZN zhhIQ>Nc`BV1$r41%5FA*AJpsS^>{Q&45PPsQEjtic}qTY@3meCNvmA_yktUL-Bwx+ z+Im9@k~sFZDY8k`&-?fQv`YWm174>X2~w=5_whVQ!S$H*{{3(CK4{9|wCpf3XVvZ1C0cAqj@n>$*dnWR^G0VQ(D zmALp~O2e1%rM+G^!5gK2MwNk|F+D!)aX)9zomwe|#@&KmuGx$=zen6;z;KMKw zfUH$s2q18gbH9Ze80{Zwgv6TcK{ z|H{(~8?ascGOE4b@Aikm3i(WFzkOD|t9Gw28ly zzl&eR-_75{-^+t-0&4q9f=>{9lHjih29Ut$WkEkh^L4YL7cEA!UyO{i=a;Z8y9UtenKx~bF zf`5{SI4CS>-w^z5H@{URV-Bn>6?S}LRq zcco2uiFB}ff*hwNXB5jvy(hF5bl5sE66OJ)seD*6>p0_N}XNT zQ>2hT-tXrx`U)2EC;MGLE&pt%{8=7y+k5;7{v5%7_Y^PXzlTzV{15yE{vx3%Lc@m? zm|n+$zr_DK(9Y+7<9{bKA~cpQFo`jH#Y}Qypm^60{XGT#Z$a8e?dN(3w4fq1{HF$l zfgX^5;z}iy($i^y7qnMA>>xN2nk6*X`}$tzs^|5I^6SCf`^U<`S05FZ-7R65Faj7< za1-1G55ZIL61)W;VYuK+XbqvYgmxe_bij$w;E*~K+J(@rn*|8xN@|H3BLoOzgg{{| zp@$LLSJ6#ih|sA7j#ARM6Z&D<=2Pl$+gkfMo6=gYxPtQ94g%U#SJMh6yG~+0`vcMt zC6YLd(u*n^WWTzf zVJ$=o7GNU5OlY@GA&S5`eUP|oB*h7_;EW1!LOh{82<_d=Q$m7}e8r@u2tXiDLVLla zR`e1AxM2V*30Xq!6%XbK`Goc%^l+IQBzK@crTi0H2eMO%v|pz%nb4!e@M5WwrTu=5V53~Rg=s>qP)F#|g!U(NK({a* zcw;7kbN;{#$#Q3d2fSAD$ZSOrw`iIn|JYl47=i|%at5~TSskvto?&Zlw6(V?`8z@r z#AbwMLI?K7W`tH@AuO~)o6s(F2y=yb!hB%?p@CV02pvpl=vpYD!w4O|NmwLYCoC4O z=Z6cTKnSfTbOfOz37r7`0HG5Jodo`Xq%)-;xTNf=lrGAh2PLe;`z5b)Agf6xfgGKI zJCcVf?RS8hwELBV-1D*DOPddikhEC!1-`26_n;&zptN*MgOaa3UoL=};^9!~L{3<> zPtI+^U6jkANhg71E~hgz5HY`|c4sj?flDk0($o0d`vY zD!~t+S8B5asqeK7~MR@GBh)zxKN3 zQfczrgq^}JY8IhEZHyDCp(asZsn(TI>=9lWd;`2ocvb5BHEV|puL=7g6&l7ifYN;f z9mw5X!hQ+v-)>(S4j*M`mx~bDGnegQCqywLBv1pW34gq?DDoQ_u}_&rJD-zRj6 zQ~`NFU16hSNkFnpZ#+dfBzy$H1>r;CFrm{3o!%uJ5k4k#2BD!c_hflpvL6TecQxeb z1Yf5Kc1in8_)^0ET=;^}S%l8+5>5yw37tdeMmY75BqcDyH!^GkROcDtoTNI>3f~Cd z5;~XAd4$gI7QO@3`8}a0NUC%8{}t7F3HGCep9wv&Z_WBmgCy1YyYPo_S@=`Wn|25U= z)T26U!)HPrr(Q2rt%8qm`<()#Vv)PF&#Zh{r1f20a3*vOWh#-fRq9tPD{+o=KVR|j=s>w613LzSGK zu&?CzOqaICrSxaWvxRSvD29~1jJRI0{$V9b>Sza@3rDC9$)8oYO*2l>UDJDX*MD4H zab{IbUm?r^qxnztga#BToIInaE7Z*b_SR$*x3 zBB5^~^m5r)gX|#bgBT6)eV8jIDpD_h;6-1am298#W=%V=?^PAQH65C{s8}GmgWY{5^$>r)Zo_Kq*Wdva?OeX5l_wS znmd#W;1^Am9TR)gRhre;Dx<4eqj^B{pk}S+AwokZ!A4t1=tYEH5G7>GCam=cA=Rrb@+y>5C2bdUDmhj;5Xa zzSmrkl;IDAzPpnGuSAk9?_Nad5RyH_A&0*0kNvEHs?eR9UkH6~?_JqW#)&<}xhSM~H#2@*6X%Ch*OcDUA8JA%?^M^dx2qqL)8HIcHD z6hcalZ@#=6?=eI6q!pV?j)u)|SMGSWDD}gxx<%+sA`JNvLO=GAHb6TD-VvxBs||wp zjMRp*%d}zCJ>|7CVTozAHI+h^9`IyUtrBQc(tP~tdOp2#Eo-w1@&N5Fy!5V3ga*@o zT|Y6_>a`JyPeSO8gzmJv5Hi1N%^<~Ei#AFdP3SH{cN2PjKZihe^b}M53d>!aC<*R{ zKEdsg*MXM%fKh8RVcenc&DB}dJ%on(w$N1(J^=*Z*wE&I*l0%qsid!&z&D(<1=>Po z52DwT8L-nnaB{k|MUu%ar91sQ&6PKlXiJsw?!S7ZOIs$POOfDz)pU?tH*KZ1szmmP z<#abMYBUu}S>S863GgM!M<8K!JNq)bpM9Hsmwg|;8u=0X3HvGgBjg^9g>OG5!q*>D zA#EiSGF);Yjb$QN$Q45_MI+Y?xf1Q%JopCWV)*vs5)Lv1xaHhB*jGLR`6aE-~9KNggC4Z9tmH!>Ss`!^cK|GF;0&Rj5d{uE6 zd`GcTSSdU&90lVqL$g5hjOI9eWAK9JNBFwnFPgu!6ntM$rDe3P@MXcV+F)%cd|hy+ zc8>Ns?NaTn+B>!PX&=!(p?ylbRl7}lPWzko5AC1Yza7#X3LQ!u${Z>kCOJ%TSm?0C zVVT1%4l5iUblC3jlEYgL?>M~Y@PWfYM+ZlDM^DF5j){&Lj?*2lb6o0pyW=Xy2OXbw zeBN=N<3Y#6jz=7iI)3W-nd8@v-#DIgJn#6o6LO-R)K08Zl2f)*nNy|HB&TYp8mC&P z8=P)&y4C4+rA^9<)%&JE5@&hwn- zJ1=xz;=IavjdPdt7Uvz#yPOX@pKw0w{H^nM&fh!#?EI_q@6MN<|8g1WlIT+F(%{nU zGRLLOWu?n%mrj>%mklnPTsFHr?y}wGS(oQr_PFeI+2``Q%Tbq;E@xc6aXII5-sK0E z-&`qI?5c8QTsc=?*C^K%*KF5Z*L>HBu4S$ju2rs+U8`LiT$@~5Tw7gVb3NdC$n~)6 zkzr$onTDB%MGdnKyK&gcVXKEdFl_Cxhli~jwt3j&!=4GrtW^KLJ=z38^f?M=70+}?J3 z*X<*>lWynTesH_!_LJMsZoj(I?rL||op;x`JGeW!d%Fj^=ef^tzr+20_fGex+@E%T z#(jtT^X@OY?{a_B{h<3{_ap9~xSw|a+Wn0CH}1c9P#)Mr<-vGx9?l-F9&R2U9$p?k z9?>2Z9*rK$JXU(F^0>$2K92`HHhDbdvDIUn$99jM9=knW_ISl(ug7tZpFDM*zMdmI zM|zI()O$vF8az#&ah{o;MV=*|Wu6tDRi2YQXL`=^Z18OIZ1HUMZ1=pu^H$Gop6_`6 z=y}3?={3qL&@0F*#4F4z!Yk4%(JRR-*(=qnz^l@0lGhZksb15(W_vYy zHG9qRYV+#wy3uR7*R5W+d#&`k&ug{U172&r9`<_N>j|$Xy|#Gm^4jh7lGh%uH@!ac z`qJy9*D0^Bz0P`l>-DqOuU@}QHM5#B~`i+7@TmUp3d zv3IF=xp$@aB=4!-b>1_*JG|$5&+}g3z0CWF_b1-RypMZ-?)|0rN$*qMUwfbR{?_|D z@9(`Yc>m~q$@>@Y-@O0u{?q$!ALK*(sC`%;-bdr(;N#@u?BnX==Hubx<>TYy>od}4 zl#jp97@xU5^L-ZjEcOw7miR35S?+V2&q|+FKKJ^p_Ic3fVV_Q)^*)T}%Z3!jrdr+v=)eCzY8&+k5$ef}CA zH#~EA_VC={`NMA?{=o3H!yg{LZuqg`XNG?>{M_*KzGmMf-xS|8-wfa7zW4dA_I<#2 zt?$Rar+mNmJ?s1Jh|m$%5wRoUM~okF!-(5P+%e+L5vxWV8u7)56C=JFaeCy~k>-(6 zBdsH2M=l?E-^kS?9~ilI)!l~H>~?Hl#_X!U59(Zfc&kMb-X6Fz@a@2l1CIuN z8u-~*ud$H!JvL-)*x07Ai^eVC1#|LKwX9ed3=LJs)E)T8> zo)SDYxHi}pECz21em3}c@afVaICOdF-J$D3 zH-|nEx+Qd5=(C|Og}xH{TIl}JH$&eJ{V?=+=;_cOLobK^9frfyVO*GV*sw5DVpC7&`{HE}m!&ijg7QQn4 zuJ9+q4~2iJ=k+dnAANw{sE^f;(JV_ zf1iGhzDvJB|ET^k{ge7F`nU8K^nXW;jW9%5BN8HVBT6F5A}S)PA|^*nkEoAmh-iwK z6VVoNUBrrrdn39c9*=k`;^~O(5zj^JiP#&lKjMvuwkPj`%I&a>U;T zY|t1S4bBEvgS)}gFv<`D^}rGhS%w@#o?(Kaz))$JY?x}8X0RD%7+MSq4NDAn8rB#d zG(2Q@#L#JY%>Trm7(_{H#>;j-Z`BWrXv zjxdfjh8V+*1}GR9Z%i;I8&i!L#w=r@vC3#Owi*{1uQw9oO~#vzcN*_D-e+8Ge9-ui zaiejoakp{5@eSi!#&?YG8IKr`8jl-4H=ZzlW&FpG0ieHnp#Y4rn#mYOgEaAnr=3&Fx_Ul*YvPylWDtYw`q@QuW7&O zP18ZsVbjN^qo(7g&rN4c7fioLvXQz-m&jp}?vb96qap($$3_N6hDGWlqa%|d^CQb5 zDjM>oENzu@}9_@k#9y`i2U75n{{R{vya)=JkmVM9AXYPLw>H= zVvaT^nzPJ>=4$gy^K5gId5*c=yx1(7mzbBDZ!xbh-)&xNUT=Qd{Gxfcd5?LodB6F6 z^Fi}r^AYn=^QY!h<_qROES$yJGR)#(@wWI{0xiLoFpJ(|gfG;@Thc8>mPwW=mZ_F$ zmO4wLrNz=_>9EYVEVL}K+-`Zm(rwvj*=%{jvc>YeWvAsO%O1;K%Rb9{mSdJPmJ602 zEtf36SbmGbQR*lzN{DiZa*Fbd8XXl8WsQo98XuJul^T^7H8H9vswApBsxqo0YHieG zQ3s=rMV*Pd81;8F7p;kQjCPJ57VR7D7wsQCCORlOBswyBTy%PLQS_wfDbZ7-r$yIA zH%7Naw?%hE&yQXhy(Ief==-DBM?V?8HTs$89nmjDzZ$(S`id^n3kBfnE5e_Vy=%7W7foMi+M3-Z_EcVhhvV!d=m3n%$G4=#hi}$G3NJ} zKVzv_I#!5vh}Ffq#=6Chi>-^jA$ED}s@O+jH^y#`eIj;C?2gzMVt2*99Q#V_+p!jC&MnR}&L_?{Zfu+(Zd_bqTuNMeTvl98TzOn& z+@!ebxR>JIjyo84IPT-PV{s?qPQ{&x`!?>oxIf}m@y_v{@jme*;zz{?#fQf0C0-GQtI3&0vxFvWd_#^};#3zhPNKcrMP@GVcFg>9@p&?;TLVLozgoO!9 z5>_W{NZ6RLDPeQMwuEOBo=$^? z-jw`U@{`G1lV3_ckbE@x>*RCE-zQ&8{w4YM=cdBnHY=@^dr7lXnF?DI` zEvdJru1dW(b#>~4sSl;DPklZ0%ha=}7gH~#{+jxG8k@$Y@oAd0F=?i>acPNZDQW3x zS@1c}vb4&y$!Sy5YSX5t%}iUJwm0oUx?lQ)^x5h2(-);*pH9+mN?(@#Kzeujqv?;Q zKb5{UeRuk+>HE^(NPjo|gY-k`AEkel{!0dx;gI2y;g;c<;hW)?;hzzh5s?v}k&}_1 zQIJubQI=7eF*##uMsr4MMn}f{j71sOXON7WGL~g@X6(xNCR3g1mzkAWmpLc1HM1?V zBlE`0C7Cy6F3Vh*xhnJC%=sWO%Bs$qo>iaKkky@`W?tv+CVn>Y+ljwU{A1!@1*kw(z!nGv z9tGY7z6E{-{sn;r!3CiO6AL;D9w~UU;9$YAf|CX33cfG+wczhURiSI4TcK}ZU}11! zXkmC^Y~i@V#KM%q^uo--lESjWio!{SPZjPg+*7!>aDU<3h3^#}DEzSSXyKQI-xU5> zc)3VZL|Lg=%%7&Mazqh6n#~6y68;Nx5dWd z@x_V7$;D~Kg~heS(~Iki8;YBYTZ=o2=NB(3zO8s=@v7o`i|;R9Q@pnLk>al6^~KK= zA1U!HF_+YqEG_9Q*;VpU$>${}N=}u0UGh^YTPl<~l@0A@Z`=ab*+3B)x%g&cw zDEq1G&vK#MqujgPx7@GXzdW!!xIC&nraZnpp**=ftvs_lyS%ad&hoA0@0XvfpeuA0 zBP&K%jHw8!2(8dp7%R*bDHZ7znHAX;c@+~X3M)z~$||N;+*(Hed2{6*l@C^KtlV7rMCF#sZI#bf?y1~cxxezw z%6BT?uRKtBu<~f-$;$JUzgDTMger$BU6osvXO&NtZ4 z9ry=01U>^z;2dZM?Vua<@x%F1d@`TTXYiT)WImgJnV-f_=Zkrk2fWD3yvpmm#XI~u z{vdxv2p1BC9AS!cw73_>1t4uw2+7Gz!;*4lzoM6Q2~H7E{G% z#R+1XI8mG=W{Fe8+2R~=p2&(o6hui>#Qs+Y(H6_Z_2S>f&%{$=r`QKa!c>?GXTm}_ z3(kYZkcBctP=y4#kivy<5qt~216RP+a2?zLt6&Y>33tQ2a6dc%KZnO*6Fdpe!VB;c zY=u9-UMW%`qQ>XRPGVe&vZN**i^m50l*@)L5FTqFZomrLau`9t}Ld`3Pm zUz9J)SLAlNTmBJ+qe%2CGz5)A@hA}`p=6YToiqfXR~`p^Rn)Qlga@B~E!n$ySOLS6QGeQc9J@ z$_izR@}BZnWxKLd*{$qV_A8$&N0l#>FO^fu8RfikQE5>+l`b_}O;WQ|R#nv{>PmH^ zTCKjTZc}U3J?cKSUVUHvQ2kgvs-9Kb)H_wocoi zZPGStb=p3yUOT8A*4nijdW1eqkJ01wcs)^1(x2AT^$a~z&(as^%k*mfJ^i45SpQD{ zj}dPq8?%g%0Sv*A49mcVXZS{iQDwYqY%^+&oyKlsuklaguyND)-sm$2m;=oy^C2_Z zj5XuT1T)Ee)=W1u%uI8#nP=vk)6GJ&$XsZyHFuc@%n!_u%umcFv&C#P+szL18}p|5 zo%w_LzzVY>tU=ZgYnT;d#aRzqN!Bl^D^ z>)+P*);&AS9%}#A9%ColDR!zo&VIqpv?trycCKAy&$eH;i|vpNY-*R<74}Mdja_MP zv^Uvx_6_@v-DCIK_nmYn+j+%#!+G0T=9D?*&RS=^Q{_}U^-hEHh4ZCz$~og)a$21$ z&Nb({bIZBybU8gZ9LM4jcqAT$6YyjBar`7s!xQl&oQ0?0Ts##Q;2D_WQv7FJjw|pA zyb4$0&3G%`hHLTP@IG9R-^U-|qxb|qg}=gQaSLw4?YINqz;|#L?#6e?KoUVB$siI# z639~|g`|>kWIUNben(y+IV6wdlNqFtyiO!S2qgh2Aq&VtvXm?*E6HlImQ<1rq?Xi? z?PLe}lr)ed5(r7x8#?wTaM90wQ zXgbZHnRE)xrBi7Eo!g%P?4O{Z0WG16XenJnm(kU96Wv7{Xe+%(@6-R%pZsutv_Hll z>%ZU^`^Z;)!?%6nFZIj(a(}tM%3tGG`!#-@zr)|<@9_`%hx||cV}7H5!oT2O@>~55 z|F+-d-}QTg*kDBPNbqPdIv5iq2Pr{nkQRVI3Mzui;Nzen_%^s7{4_uEXP<09|K;n? N7|Q-%f8qIq{s#oLgqZ*U literal 33669 zcmeFa2YeLO*DySHW~VMmHa+x^-gY;;>5X(q@4am{n*{`O~eqfL>y5_6cNQl2~kRv5#>Y$QAt!0 zjl^VP3eiqXCuR_Hh`Gc9;#T5z;$GrD;(p=*Vj1x$@g%X5SW9dmo+CCAFA-aaSBW=> zH;K21J;eLO2gCv5AaRm7MSMzpMw}te5?>Nu5#JJ*i9d)xiNA=eh(anvqanxvIU^S| z6b(b3XbcKOTBJip6owK}5=urXC>4!I8K?*qqY_k#Dp4(}L(OO^YC)~24NXJsr~}PH zv(X$hAKi-XMa$6>s2la5=g|vj6M7lFf?h>$p&jULv=hC9_K*&wGwDKlkVDClugI^-Z^&QC z-^ky|Kgd7HzsRc;K@FkoD0|9*8cvO%MpC1wAS##&p|n&C6-&iY@l*memP(|Os2nPn z%A@kBYO02+rRpdXRZp3z2C9W>rP`=z)I91IYCa`WcT@LJOQ?IP$Ee4tC#Ywrb=0%e zR_bNy73x)L7qy#umpViprjAfYsWa4B>I>=|b(#8s`jNV#LMl>4sT@=qm7~f@<*ag1 zxvIvfyj0#QA62Nzpfak$REer2RkA8Ym8Z&A6{u=dwW>PRWYrW^vudVlmTIMhkC)qASFs(q^WRfkodsy3Q^R^dkCp`VRU|dI|ji{WRT8 z_s}comGmllHNBqRKyRX7rC+1B(XZ3n>0R`0`UL$6eUd&!e@cHwpQb;j&(P=TujsGo z@9E3*5A@IU@AOrMVmO9poEaC!m2qR-84qRzdjf|C0Gt61$E9MIG6Z13k3-c@U z8}mC$vkc3!9P7k7vo5R$JAw^iwXBZSv!RThHLwwEG#kUlvSZmaHiOM%3)v#Jm@Q#T z*-CaQ+rqZ8ZR|9*o$X*d*)DcEJDa_ay`O!6eUN>KUCKVpE@K~Im$Mt$=h+w7P3&g& zMfN3j3%iwlncc?jVBcoF<3Hw4^Plr)_zV2E{7?MP{4W9_Ab}J( z!A@`$+=NlWXhAQ83I@R_gbCq7gfL#n5Hf`XQt z!eQa4@Ud`8xFmcpTo!&1eiW_9V{IEmagXJg9J|qgqj#aI1o$1@@OQ8EEAz25n>#vs2s^@FBt@!+&=8KI3X>5SJ!I0jWTvH;x3*8|Xfs=^ zX|0y7sn(WGlg1}9G(0slGSsL|i;PLrhKHvaw8`lyY1(vSa!hz?a&&k^WTb6sH^Ph1 zJxjO~9>h>$7%`j}L5w6u5u*uDVvIhccwQsb+)z_cf!+-ajos8ML8WNjeDB4p=;vArk082O)ZVBGg7RR%+s4% z+iPS1)?&*f>r^X%R(>t&YDu$pbT+k^JHdr8X+m?%9i6GIQ`?%YFjax%S#)#)g_PG) z%pKN7`NgKrSw+^i)^;GBgN=&He1O8pLHLbpH&3+|H_f*8q3BU$wE#>7ecRi;*eAEO zje}k3$ZW}NYH8|Q3m`n`_te&wj@D)?XWNo^VjQ7+hDadB5{X0-kxZlzsYDu)E;@GLXU_^FPXYW(nYIFsXyJj0{95gbu)zWItZ0WR4 zY?rBi?W^+VCXL^qmj)9{SKQjwZn37q{3gxle;Qa+GR~xl{HGE9prm~_w>NdPw%8Ci z{JR&m6WUv+YUL%HH2Rx)CoeO_q={1AkpB!TXm6Fg*y64>iM_6+&7d*1&95d*gl+{< zL(~#=;s|lHIA#S=Pnd}Y(OcAtMls|dVFisbftW~4BAO(f(EyBG4S%;=n_&y4TSY<~ zC5|*{q9-&pTVwV5=2nZjc~Wafr@piUWI#XJYHcy=dr|AqmjL%Rnf2D`))sBUL|t3U z!~;Y#F_mZ`TB{WG(*itSq5Np=D9tMd?(QMlh-u1?6?w(^vadc6u`U@2PawxlA<^2{ z*o(tJV6$alUM5ZIO#y4@YHDuO%Tm|7NS(Q@%|_>W#C$^6P23{-bQ7ZJE6Yc*wHbEH z+Gu0^9H5+}N;(e6T6!U|sGGP=^b>;*5qA)G5{qFUe2Ke>dx#|_joU!sDlkv9=5I%<%}Z95^nyz1=*khj@gTraXO&cpP5JE6(leG&eL` z)0#lLx3-wuXRRO}Bc33p)#MfTKeN&QDWbcN{ym~j3{hyjN}};xgHGB|tQT z7%CC%KV>S3X0J8g^Wr`m63-KxBqUxC!@7yhV)(ydf~^vQFN+a_5!^<+E+ZHvMoI{# z{SPpz9Jl-iZNnb53!5bEhdQL2djjAvarOOG|4xGL&=P$ zPEZ3Tqc*c;LaR9ry$uBY$r{|=nmSpDVnX=O>O&ZVZ29#wMXQt$& z7r`iH$n`MND+-eHihE%wJa?K{^t2cZB0OhKXozR%yb#YhhRD#!5Kn_K+AwdPGUyB9 zd^d4UOcTc`zh59OJ}ssz0`N8QOwyFdjW7-(7-ER?D-nx0#3Mn>7YoE9v80!H$gY=o;QJyCaj_dY ziiKjjNux;}m(tbJ*lYzIDNUg$UgSz#>_Lvm9R?MP>4l;44xr)0#TC+1G)jJ6DgkgB z06=l`I(i9=ypS(Q5AsGnV!2q^gZz-cSS?N;Bt0lZX7dV@CjX|`JiTQixJZ+9&23=t z^?BAAxz>&jumOq}shioz1l9|eElmvA`6Zi+(d;1T7D4#Pp^{>6u$*N~*bKy18TUU}dk;B#ufK z&0=twAv8497;W2?Oq2_3kFroU$`LJMqi9`$@=!i15GRNe#YqyX?wKk1U7gKME!Uyp zl9>W_YRcdVC6)!hKf9%MM$3Tr%9|QHC)s8#L*<0->8GW=S14D7s+9-cNp1Cn^pEWm z6S5MzRj3}BQ3JA|Mscz@MQj$QiY=?q1T+y%LQQD0*ebS()5K1(OAM*1YHgi5&TN6x zOm!+y)!JSloq6C`)=TQNlGZ*16^a$Kb~H&QGuPY(%a#09Yhy`kTMqbS&9;|dUwjll zEAt-#cqd+x@h2+hghxk(c!r0~vn{0)O$Td-y2SQwG(+qVLkc5m=4ittO$Ud>NJY`1 zxzbj_7%|xPo`~>ZYAr-}-iXhLkI`MgXZL^#p8hTSP1_5<~hZQ!^*Z7^8~-+8Dz7 zh_e~JBoXIDaeg=2B8p;2aYT%OK zqVLcp^gX(aen3B>E9fWmGx`Pnihe`Cqd(A}=r44YBuGS(Bt@!7nq)|p@jk}$PJ^R7>&Tl6C-bo{4ol~NRN>bqZo`5 zFiOTK9it44vN6iTs0gDnjH)oI9i)~?Cs||OY0|{rl*UZ9SU?Y#v`(?M=s@=S&P}Ad z4DT+JCjO@26{RPq<)-VVn%k#9FrsB3#1S&Ydv4aD2h(Z+Wu==r6=FgC_>GaF-Fveq zo_upx=cG(2-XR5ol=JvxFo6Al{ba!Rn>2|xweagK+8}BM%RnDAX<}{)Xum;2=O`ooQ;7NT8e4IhdXiGRS5BnfGccXtz#inyG8E3|e)p40HL-!YqO_ zCLGxFS|QGL9iE9Y%*RZcoSRzuVE03E;N|dzuA{RZLT7^*AWfd(36m!Lre;WOZMW(M zvr?uE>8YFD^^zG@YiBORdYT7|WS$JJ`@bXNgSeE!V8ILI$?# zW~tUO$!xd=QmqVW&CN152%t>3UWalJBR0q&pD}6TZfZ+=PkcAn*@-g1XKz-QNny-R zGema>Z)~#+ZNts#+FtZzm39pcr^ygE{x>*p5T{I+!M$*^^qVx*Y|+9F8zUmG!EcTX zaI;A>Zl-po6js$XHg!N4A3W{mSrCu|Dp{tOCP<;=L^v==HYzhMAv`K7D%!7e5=6-x z;a7v7JOF+Q9jF{d8TLyz%hs}TyiVQRCIj1gvxMy5=)oFcu?+5&n=zNdj!oCs&j z!It1&8Q^RGIU^3*=Z9oyuiq?s@;*nw(E8<>ppZLD`!AkNqavR}IZWlikKZ4xWe(8|vQPAE5 ze&H-z+_c0N_Jw2HH6N8Vbu>YkG9ZreX_9Ao3L~CsZoT8JPn=?B)x~y>4^S$OJ zTWEUlTM#0Q*F{cr2&j-ER}nFWc~x_ap>XOmghts;HsrhH`_d}*knfRu$$jEM@sM~} zJhGDffcy|vv0pqY9)neU{J**i!|7Mt?>t&5t-=r*5k0SBPIyF&6pOQM#R>8=X%U~0 zC&^Rfr{W3m6Y->YY9)D^{2Uf>R{T`_3>IP%Om}-jpDIC4LR-_y$hg$y-wMKX>d-muV6i879%h00-|r znot_b^+x+jxl!%_YpD30cnM&AFT=|4{`_I%3pI11BclKxV^p++TvT*8@OwYN(Ugw_ z@LHLrd?`Nw7$E*2{s;iC$N=O0u56fdn~YqvArxdM++dIZ$Jp48(otamjnY%0lz}pe zKa0PJzly)Dq{68PfEFeGF8%?~{`_CvvVbLbS8n}YUWEaoJ>@`>fdomWAe(%>&hja5*{(HOo{FH>J!RBO}ZhQG*Odb4b2#-F&ZMR z!A>SiT;1^YFBaF%F@zbyAs}Q7i!lPbL`OwSLGQjG64g%4_*?4Cq-Fu+IT$%$1SJs| zV%`$Llkf@q3z0Ix!y^om;tL1K>*r@oExIA1w^MfjxWyPbW8@-%bCtm*s=H7A(V{5Q zFr!g|X9R@%;oV0qy&=4Zsb$LMxntzfyLpm%@ha)Q^O6iNCZa!dsE{jOhRFhIM0f~}`skO+32d~KpO1DKaE8i^si533t3uP)%xnEA`K zGO;3}qCxr%k+8S{8}J(S<_+P!MeR_~8iSEnKUx8c^CQpbWVFJ<41JMOY7h0n4T zkh09hufKF#rVXtK*hE7Zth3LgQ|BoNB>s&QenWi=FfU;gf{|8&3At67&;Gneoh;)R z7Af&rm;|z)FMgtazu}Vqp#D@S7m6Wq0pLKW0bE@6^4(WP%P2;KhV_9_sZ>0GQPCY+S^*V>Av>Xf`d{>%k{{mL^khTtt{H86rE*gZzY!r+BUB>^ zZ`EjwVlj%7u#cAs5%2e7%v%r1P@AURI#c!fCd586pT_OXlXLE4DTaLeJ)qe zF+|9AEjmmRndm_ZMwP0{xFLd>sw`!<#$hzRceh~U1D3Dvj5{Z9ydeS>+^bMkg{ra} zlC4}-p@7N6D61b#yjR*gQ-{f5j0R($!Bv@5jS`q^^@_@>nxKHm!6>&MjB(@W4NsKy zN=jH{A2w4}?Kh-ThpH3kG##US3@Ij{Q=v?!@ln%a&%CH$V~mi@US#MXy3bWX3giZ8 zEl}MG@NUDX7^4yiUa1UEyJzg{Cy+uUW2B_0A|fT1rBB1C?o!)uSp%mE3^So>p}$q^riLrk`{HcO1RlvPlMK z2=Cv3wWpMeqmJt0) z^|g%XG>qEC5Jgs^!@}j)9}NxOCfHv8UIoXTZYWZT>sI}UQD;99epZ2vxeoB3D##iE z1-dYTY`g;45EH5Z4xjQN?gdO!G!1}h6-G0=X$B)XZ`haHpw$W+%`$0fu4AL==63yr z)@Ddlcj#v~>!-I(n$-YiFfwxb#L($2v!~8BhM8tXg+ppObYhFXL`vZgh_`CTXB1Xe zm9*g9G#AhqeU`qelS(eZQwJ(fd!$go5^3fYx7#0@Xn9y97AbJh7#zv#Zfs;GNW%Bv&^mbyrW&4LwqU zp$&W^J@Gp5O)~h00lat8qBi+uC=ebgPoImkU?ucBqD+J1}|_>iy{HO3^1h zgPuvxqGwlj$n~O7xPj3V7(I^BV;J?^Y|{3Ik|`Dc1$1o1<}Yk`-9m#0(nHUuK}S4^ z(NjJ20{T{rp2nzK3@PvB*fM2s`D#NL^0WL-l; z4NNx;6kFd-1DQ7blTbb<3FSumd5oUJXmh_%Zl}Br46e$=pEMq1P=@Vz9@^~U7@lV+J?VNgZH$S-b24f@1^(A@6#X9AJQLTv<0KB z7y%})U<6L%YZz_A==HVq0s0_)h(1gop^s9PGoyERojK zVQFrKizRuG-0Og$MqOy%T*j#D=jz2UEbRJ^{HFX39yYHOs>)J$`VhR+54JAS>3VFbn=oF+!i3}Ngr+KbUXjNV_tI4~N< z5u*<<`VfO39@47{%M>dI#ln9>%mKEt*92a-spY-uR6%^Gg!nLw_V*RYF(VmI(9O&! ziGUCsdb@`i!+2o?hkzpz7v7kb3N$|nnmH*7%^?Y@5*cu(rl3!9UVAZ zj53=BJnF-J_ToAs*vOy2q=MpR#xjXa5|hk8yx}-TCouX1BRI&MTE(O>>C8B0Jd=UZ zrx<;P(FKft#w7XwD{iO=wNbHHQ^M6p>Oa&-zrjn_`=nO{Z`xG}* z%hZFOW$G9cMrSel0=y}vL3Ve}{Ts#Yoitc)Gn1Gp*TI`A!~60EdYhTX%p!Dan0BUv z>14W?>C6mfCPo)A`U)dBDt?2}w-|v$Tw24-X67(+nR(1DR3#%~^gTwGG5P@`I38Y+ zwe?T`xwiiQlqzNxGj|PAi_8+{-hpcI0k~#B1KoCr<7~Y0Ftcp%D~~dRi)5K6ncgB< zMap|5DPMunF9TKUYGw_yR#L6MWAqzFzsjEKe{z|l|3s#jb+c0?_$sO*NNH!cw;HBHAy%xZ>&V9^>lEQzV`2dqFCb=HwBW6D)c}xnj zAj8XPaFn!IZTcIGK;N@usi8$DoG+oU-lXwroZi_ekJUCy7xlCjFtAvje9v5Fe!!#)CS5V)4@?flYeCTV2w;QBZ(s>||<$HC(Gj7G6^X+9;C&`_cP;EZ85{CbQ*@Owlg4D7$Q*b^Z=jE;fW!2qI2H)KFP^u)rQ zzZ*OUcR8;ZTy(f+-rK}xf5O<3_SV);5fL2W2>0#12`#j)i6YX8Y-m=eYA)Xd{Ln)PML1{HVC zYW}ZBN`+kVNbe+0A6ea@{sztI<3W2OWY$P$QuB5fm zJj>JE>1l|H4Uf=Vl$9nM2RGjcdy(o>l58TI42FnJ!lbsFO~IsoQ1F)>FGsjZ-T#T} zY4S;t&0=%G1!S|?9888{($K@^vH6%ZVloU|z|tAgC91MX)~1P*I=z$bep)7ochUky z;VG*sgH_QZAeP;~tSZ(5Cw#V=tzm1~I@ZM2vu3sdlaZK=!elfiV=x(u$v8~LV=`ea z+sIm3NcR!;FnlsQ8Ixl%nTW|GD767a3*#Sv|HP0w*kh$2T5ii=(u{!z`Rx$ow>I{* z#V9d1^j|ap3pZAJ$<{Mt(1#|-XQrna!=to@ammrz@DyW=HaaxisEtmKiAhh52#-k* zgMgaUMM0T0vt=Cg@aV9#!-aaOq8);>1A!}p`X?`KX`0q$9T?yo4Z~#vZT%aJ2257c z+S=S;ZqJ14b#nQjVyl%oU>PZcK60Nk2NJ$oBY=d$zITiE%m$YOQ@dn>yTlgXF_Moh(I8Ya^*IS!NKF`0qM%xBm|>}0~1 zy^~$c-bHw`_pnPanI&xu2s9k{{=`%<D z{FN-UTXKigpaUw%m4O{O=2@*>aB)sMkg9{WthBQUg3q%gkbPlj1$G}?Wx7EdGYAB9 z3~8F!asvnwb_)C^Ylp;Y@ESybtOe%IN!7})Ipzi{+}lw^=TUa0M8e0|$Jr;?C)uai zr`c|{hh2fmY)pbUm^<#vN${9}-yw+6+l-{YmkBg3X}5ORZu#S=-sqiKZl|Eo)KO_@Vr?HtdI_-Yxirj1omW^Wr5z9e zW?yIDkW?L5nzC;8O-z+@A6@7?&nTcr)=PF8Z;S#aAcx><1BAx&N)U5mASzL))w za9Y9cW8Y`NPp`scH709Tupa@_9>8R+#HR~EtATGgXj&i{7zg0XmWlF@eNF)I0r>HQ z$I2N1sgKRz=i{xdQ>~rtvlNwhOcJ<{FjSbfi9g{o1VB_8DB= zh7%W@Vx(>x%~s{OsFTu-aOAOV%}?wfgwsES|JgsK@IOaz2$Pd~!~bLxCcEVQ`uo7R zOmB_`dUFgWCl5FPb37-=u|={OlT!x97DF>_`6I%+<(Qs~< zY>{G%q@1PyZ$uLn6o*SFg1_I^#}eFV4mvRnj3RR0oDU|aVG^$DDsTBqZv|iyF6Uks zErjTuGDs^8(qXc5;Go_h-#>=<4s+pL1fk|4xhO80i{WCqI1V~KXly%cJIvPg@4BQ6 z)}cyEdRDk3s=UKL%tex z_8@xpuV}Cu=;10PaQ}LIFHPYFk{nUjDRK4Q1mwT#bktX~!R0C*?Jdfl)=PT|+7GT& zgCQHxjUzN%z8DZ1I&a<~&dN>TCc=hKA|`T^xhZh+l1@~L&5-O{p6rUbPn3<9q6#G^ z%sR7E`NX45xvFv9N0?k95}3RlllLFtrgAMXM=RIHO@nzRah;5w>mu&2fY?oQW4pDb z3?d6)cB?HC=$209XyVz}+vDf&h+Pe_3!AZ)<^q@LK1|**Q1WJQGiAw}gUNd^d8bWK z?p8=NPa+ZU+F~2qV-CEsyZU+kpZRmpy12!#vQFrGI+3^^lW^GzkP)Gq5On3>?v>^N zZ{&8EM`|y`J;;HflulKB0y)Ty8chBkZmGmm|8}@C!!qs>lg9gB%+SLvm!SWfp?t5w z;U4E8MB2kW!99t|hcLOchkKgq#^l48Tn5gm?7`T|y#B2l;*~hkA>Rgn4Yy8$zm|Ij zlaF9>c@Ot2w;q#^VsabQG$l)kLugB99q6BMFK{n`f5L6zHghjx@-a+4j>#uha9app z?qy6qDfuU_{@?IVxb1Lc=!s+@eI^5^n8N!?U0+X=4>)=#FJ_{QI=l;}`CLt2!cL`$rt+FfuFcvz`Nz( zB(<@d`xTSVOAfMAi+o<{_1H`;;Ih^9pD?9MfbwC4`-_KAWj6=m_D$V9_)wdnFG*8h zj~BSfr|52}abNocDGnypHb8D0djBa-zpc@aPN^*dS1-A%6D%^6MfMs#o>2_nOTC8g zKfe4wsoLD%r(w`)Y~@RT)0VKm+24SAGoDdQ%1bhJc_(0P9s*FWN!@{5`%OwzjC64T z66N!3Rh+y#Kl}#b$d4d=`B9jBT@uIRuEyze=Y zWBEjs#V2F(EllnZ;Z(7!ZxM1=p4Xv^N#7bWc&PFk+>VFO<@0zrw!V$YotS*5ubPuD z;vt7Q;7G@p@x5Jju5F^jSM%n->(#t|P>d^8!^k{hlZHJXDfc`8C``0&C0&oGbXa#>OzmUHTlW>gu2$KhTZ7*+>Y%grsoSK2%m}Ga9zgzkY z)Zv`UzUm3(gZrcp4*tEt=9emRb);9W{->HmRY13>-c-(i(86<|ge_Gh?1)02rzJ@M zt8n5Pr_C4|AzwrtC}OL4u#zkJ)%+TMEf1>nBqmQ`@>5KHwvvCAU(avgK?k13w_qj7TPK&i!H5fR@-aa`0dhbuVeCT-)oM&(j(ZvOkTz$B=jGugdI^FYwx6c2P63_4`=>?b!PmZ{9l;7g2|uYMaY%d zHglr2T|u?|>4B&UlpxiAD|8m%c>hZ;ssazF3WA`*sSu5X z3^>$--X1*&zPm8&y5SJWhT)LLhT#j81VAs*1y8{ravs7M!AtNKd<0*?50kK-tC%7% zg)l{8idroM2!TS75G;fUT1=@hH55}3m>P?z6imr&4wX=X&BQ53Hi(Dn`p&zy+NJA< zq?kJ`lg2@B2U~IG^+SqhO>JmxhI4PP!B_hG_Rk_q4{)nZ5c)p(dyvW%bsH5Tg|T4u zgeW0eh!J9iI3Zq0z!Z%s22(7iI85=F5-_D+BP2pd-&;t5|I>tYOu_X^DL!l`{o#r! zcO{_T8{USl$`JXLQazr%Jy{h2gxFkqi=-D|=~BV`wh)S+NY29oKQC$D3#E~|_C~rw|8hwP zDzeYv5DJ7M!l_#*#FTxvP>d;uJ~5E<&>hJg5)>Pu%Y{ndexU+Wnr@*AQ*eE>_b6@~ zQ71r}Wu;&e>IE}@H>R90<%}s8FhkNq`Cs`VJeU51>c4WixZT=O0mt`7h_2Ym`Gl!L zYd>mjm~sQuY}0fIorCPYFhiKtKX^8#pen6z@I2v`!Gp1|gwU-Q76`Wr3x(T+MZ)dE z9m1W$V&N{~Zs8tG4a3xMOpU*S|02qplw-g~&Vl$|@x8?Hf~UHAA9U&SuS!a#SFM13&J=SemZi z0`|S0E9ryYw5D`A?)#wcMO*2p(r-}77W9qEoY(>^oC*cb%F(^=gZ|fh!`(%#GvuI| z6cG2h;Y5&PZ#K60AADL5Iag$=@U z!p2HSv3AHgc1#68u_{C&gcpQOa$?=qP*whT1w7tNOzVTA41G!10-?yh{Pndvv_jY_ zyex$h{(i^}^ZJ$Y=1BDe2jvC4CTtU)6}As5m%vmAECf?p+gjd&6_o0_par*0klq&F zk>qA4ra-QDVM-5j(_6oANO(`!E9?U@yf1tpd?IK^am$arGV1glVc|W6*BF4(k!ZA#RD}#>&MzVX4rr+Q>6r;6wOg$$2SJhD<%qDV17v$Z!k$;C{02|_NIkj zWrK&A3f0ijyeHWwyrOb?M zLKOWWDI94A`49=s$ia9@RDk0Eh-F&J_!7D2RDOG5m$l2Ps1@a|$Mx>SAlt9z)sQZE zMlGn->LF@7wY}Owtx-Fw!MLPh3M~9MOpV7>2BtDGm4&HnOyxX7c&lC2ZfbYFPeE1EVF?Bt7fn z8@aKL^qQ=HQ+it%OJ#XB6R&WRbl6Z{?E@#NDtIPk{uP(uT5Lc|z-N8qZ94CI^A8~+ zB?+$%B+ftG+YVVBGT>)@e`{p5alrEk`R887P)Dob5?rq2-zGW1%UsI#HdZ zPR3LzrodaM?(>J$Y3lKV9b9#W8n&hkQ*hH5Ja9?Q`ou|b!CUGFy2$E0b>TG-iqzn_ zRAQ zCHvD~uzG`fEVWfVp;XS4$|YGt2`?g;h=6YoOJpgi)^lS=v4LzTd^=DSd^^xsHi=DT z$3a!fLip~Vwd^{`*gpr~__GPV?Pm*o)6c8$T|e95JARI`AH#S2oPw$vy0FSx7leLC*&eL7Km3?IiQ@QHjfe6LPAe6vm_U&Gh& z^$;Fur91j*XiK9`1|2Ib1n%(!O`x7@2xqmc7gAn2~Y>AL*N@{BH;UGV$^Z) zoikbLB6S^n(@cZ9QT>#9t$MS1n|g?k|hjPJG(#ZdHW&u_V$kU&i1bMqwL4nd)xckN7_f*$J)o+kF}p^ zkL{P(-*5k*{loT;*gtB&#r_TZ9riozciA7c|JeS7{Ym>z9sC^h4)G4j4yg|54p|O4 z4tWj*4z&&@2eX64VU5F!4qF^vc6im{cMYd;&^T(GHLjWwno$~0jhDtpldhShxl{9i z=0VL;&2yTqnpZX3G}|@1HScQP(;U=%uDPJOthwsQI1X_f>geg{<>=$+=cskmI~p9r z93vdd9A`N`>bSyjwc}dHb&k6nKXv@l@q5P~9IrV3?D(tW?@lTw+KF}2I5|7HI=MRq zIfXezJH{fna4K>taVm4FaGL5g+iAWNcDmK+4yVOVcRMX{dd%qwr>C5{ zoqlj8oJnVuGvi#~T?=NZnkoaZ>tbDr;vou6=i!}*}|*Und*e{ufJ z`41P$MdRY`GSp?b%Saa=7eAK(mmrrAmvJt&F0)(~x!mq@hs$D@WiF4nEO&X#Wu?mt zF56tTyS(YL!)2$-E|>i-2VD-k9Ci8F<%G*gmoHs@bRF&*;acNrb!~N>>pI^RyDoHH zO%1v+^;%4uradUDT?dIt=#?9L;)Xm^#bPIP&aLaNlbt`wPbgOo&bu+n5 zc58NPacgsHck6VU?l#};Znx!bkGnnT*6p^!ZI# zHTs^>_m18>`q=2>qdysa%5#Kgpl7hB)>H2}*>i^HEYCTf^E_YkeAn|m&wZXBjA6z& zk8vI2K4$2c(lHHV8pli+Gil6{}L;Z&Pjr1GsH^wi>FT_vh z7wTv93-?R#%knGnGy6^UYxZmLYx8UOo8vdnZ@wS)yVdVDza@Ul{CfO0`n~M;s^2!h z?S60i?eW{|_rBkUe*66n`hDx~>hJBJ?O)u>dM_n+fG&wsu@_P^EtZvQ3z_xnHS z|FHif{@woT{5Si*>A%N+pZ|yc2mBBFpYlKLf7bt;{{{cA0+;}8KwN+&pgEv3U{1gt z0rv+y7_c;8S-|puo`6*WYXjB=YzWvG@N&Sefc*id0?r3q4EQGCQos)Ze*|0&Bm-4} zY#<-#6gWK4C(sZW8yFurHZUnLB``ZMFR(DMIIt|RBG4Q-C9pFP2QCi0J8((heSr@I zJ{I_7V0Yk(z}10k178SyE%4pI{ecGq4+kC%{5bIQz%K&747?clP2hKdzXXv%4nZD4 z!-7TxjSBJ%3JeMf(gzuW!h<4%5`!{=ih@i*lY%A(H3zi>wFS)znj17f2nQ_;S`>6| z(DI!BT^4bmF5iP{WpmNrM5r!CM{YHPG6ty$ZsouF;i&e7hceL(w|_6hA% z+HUO%?RxD-?I!Ju+O67Gv^%u>v>$6f*Phj$(|)PFsQp3vllE8b@7lj~gpSua>pXRV zx?r7Fr`H*DvAP6Zk}gG;t{bl_&{gT+d!2Ocx=!76-AowedBdPlvB-d#UTKT_|f57dX~b$Ww7 zOdqdL*XQZ0^^N)o`bql9`euEXex`noex6>`FVNqme@Nf0U#DNMe@_3rev|$+{dWCZ z`nUDF^zZ8T>rd&w)L+s6qW@k0S11alLN%dIp)R5Bq4l9tL)$~ULT84~3l&3e4ZSV& z$9FR}G|rHgE<9gOkD4;9(eMNHH`S78;fq zmKjzWo;7SRY&5)Jc-iopVY}fi!`p`U4Mz-T4Cf4A8on}oYq(_i)2K2sM$RZ09gQwV zcjGYQ2&11-Z;Ur48dHqv#tdVYvD{c`tTxseUpKyI+;2Q+JZwB_JY_s>JZn5}ykPt} zj0m#}a|v?~8x}S)%qPr0EGSGHrVon`8yl7smKt_P*wV0NVavlF4?7+9ZP=x-%VAf- zBf?X{^TUh6OT#O|tHbNU&EYNK)51H$XN1oVpBFBMF9_chellW6L~KM;!~+rQBVLKv z7V$>Jj)-?6c1N6uI2&;x;_Ha-BEFCKE0T(2BKb)BNXJN*NcTwJ$mqzJ$dt(J$b!h) z$c9L3gT9mqJE9~J(`Plj&_S4 z8a*OlOB_>}m}_?-Cs_@emA_?mcAd_#O= z{FM0i_@(h12KVd<_!i1#>%Mu<+foRrd(ij?Y<+LXyDQ&O5!T2k&v zS(@@l%3~={rgW#QNO>XUm6Tm6ds9A0*`IPG<>Qo3Qck5@P8Cx1sgbFvsadJHsRgOU zsa2`9sr9LrRBP%Zshd;xr5;W_m3lh$Z0h;ci>Y6y{+dRlQE5yXpQcH3PIF5enl?Nw zEv-H6$+R_T&!lZk+m`lr+OD)cY5UR+rX5N9IPH_PQ)%bZE~Z^hyPD3V^XWs<9n#&> zho+B6ADuoXJt*Cf9-E#rzGwWZ@z0IlHvaAL?~Ok?{_Obk<1dc?X8fh`KaBq=gUVns z_>3VL4jE1vt{Ltb@fqffyE0zN*q*UF2P z$@Ize&kV{8$&AU2%S^~j%6uU6smzs`YckhmZp_@2`BLV~ncFkp$^0PmXy#{`XEM)a zewleCi^<}%hGaQpIc2$Kd1MXG8kMEbGG;|&MQ6ok#b+gErDUaNjn68}nw|Ap*3oPx zJ0LqP+mt;kdqMVX*>_|w&R&+iE_*}v^VyrTw`9MPy)FBV>>b(fWFN~uk$o!rv+Oh3 z=dv$kf0g}h_V?L89~ckLGX5Ka~Gj{%-|rfm4BNfk(mcf>8xy3PK9>1;&Dig6M*{g0Tfv1(t#d1x*E0 z3g#BfFIZ4;TfrR#_ZK`_u&Q8f!LtR=6}(jNa=~i_+Y8<-I8*RvAydc~4k@%R9A4;I z=w0Yn7+k0;G!%vv#up|QrWB?XmKIhNnhP5XCl)pp&Mur+xU6t};Twe?6rL{pvxq37 zikKq4Xh_l6qVYvpMY%=!MHNMsq6tM!MQug1iXJI?qG(&uJ4FYI4i_COI$k`wIG}iJ zacXg8aYOMv#Sav}Uc9sTuM%~MU5P`9Q_1j>Q6*zayi4Lsa!VRY=9Vlgd9>v5lBY^~ zN?t43S+cj}XvuG-Oet5YF10UpEcGi5EDb5uml{hWO2?Kam!_4DE6p!0DlILoDYcfi zmv)uTES+8YVClo9kCZ-E`b6pK(q~H7mp)gzwe)o9xiU@J(6Yp`w6e)%Q_5zR%_|ej zZY{f`?5?sUW%rdmS+=WeZ`rZ3lVzWkohkdW?5nbG%Py7uR(7>~NV#*lTlvuP5#`?H ze&qq>!R5O0s`B>o#pMr{KU}`N{IT-2k;`xeKDz;U;QSnyA&Wha? zA5|Q$_@d&sia#rfN@x{Q$yRDAT`N5*hgXiQ464*thE|4EMpi~w=2li!POO|WT;)lXHwR{c?Rwc5VgvD&5Dy?R*n z$ZF4O?`q%b-0G@oOSQFnVs%sXl#H|cZ>fHzdRz7O>b=$bs^72vu= zy2h)M6K zbl0q`SyS_T&DNS%YhJH;vt~!l-kJ|;_Sc-MIbUMyy|@G0_uY5 z!t3Je#@E%?O|5II>!_PvH?wYb-Lkrsb!+O@)orNTSocERJ9WG34%Hp4J6?CP?z6hj z>wc=cYEqe4$X*UH4K08Ogl`wP4AiBHytn?HXSpaFnwYA*7SQlQBTz~_3C>2 zddGT~dcS&oeSCdleM)_LeMWs&eQ|w7eRX|ZeSQ7Z`u6&+`kD3f>c#q7>lfAETmN`{ zcm2xxHTCQ3H`Z^ef2n?Z{oeXx^(X32)t|0ETYtX(V*Stczt#U~Cd`zXG4p1%S!XUZ zPcz?VUTNNG-f#ZQe8zmve8K#+`8)Gv^OXiw1KYqis2l7XG!4!TZVes{{tY<|QyLaD ztZsO@;e5kY%Mgo$#mVAo@vscHXf3gp1WS@7)iTbKVad1DSge*wmMNAN%QVYu%RGx{ zxz)1Ba);$k%l(!|Eo&_6EE_D(TQ*y^Sl+hmw7g^4Z8>B)YB_E>Y5B}@#&XH>z2&my z$41mR?Ek6hd|sM>!#JEGtd?ZVCdq1Z8s=&k{Sb$OAQIK6h(<z<%PVLvdqc6EXbm-@-;r2v*{AGNGs^qW?6R_AnH z7i^WSwt8!@MoU=I($-?F)@FTn(AX~8h)vjIdu3%?L#u4&gW)Jb+Ue#wA?ARTOa@H!y~A+`~gW!BafLG+yF0-rya|sNh$q3N;}T jYC~O!g?MNSTZ0SdLn(}goBz`Lvg+z3uaqVKXSnqT)uS$% diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m index ad041fb..6ec5761 100644 --- a/Mac/ViewDelegate.m +++ b/Mac/ViewDelegate.m @@ -46,11 +46,11 @@ if (sender == oauthView) { - [oauthView stringByEvaluatingJavaScriptFromString:@"setTimeout( function() { tentia_oauth = new OauthImplementation(); }, 2);"]; + [oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"]; } else { - NSString *action = @"home_timeline"; + NSString *action = @"timeline"; NSString *delay = @"1"; if (sender == mentionsView) { @@ -58,10 +58,7 @@ delay = @"1000"; } - [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: - @"setTimeout(function(){ tentia_instance = new Core('%@'); \ - document.getElementsByTagName('body')[0].appendChild(tentia_instance.body); \ - setTimeout(function() { loadPlugin(controller.pluginURL()) }, 1); }, %@);", action, delay]]; + [sender stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"function HostAppGo() { start('%@') }", action]]; } } diff --git a/Mac/WebKit/Constants.js b/Mac/WebKit/Constants.js deleted file mode 100644 index 179892e..0000000 --- a/Mac/WebKit/Constants.js +++ /dev/null @@ -1,21 +0,0 @@ -// -// Constants.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - - -OAUTH_CONSUMER_KEY = "JPmU8KJhiBKfpohCiWLg" -OAUTH_CONSUMER_SECRET = "jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" -OAUTH_SIGNATURE_METHOD = "HMAC-SHA1" -OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" -OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" -OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" -OAUTH_SERVICE_NAME = "twitter.com" - -APP_NAME = "Tentia"; - -API_PATH = "http://api.twitter.com/1/"; -WEBSITE_PATH = "http://twitter.com/"; diff --git a/Mac/WebKit/Core.js b/Mac/WebKit/Core.js deleted file mode 100644 index 475c32f..0000000 --- a/Mac/WebKit/Core.js +++ /dev/null @@ -1,457 +0,0 @@ -// -// Core.js -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -function Core(action) { - this.max_length = 200; - // this.timeout = 2 * 60 * 1000; - this.timeout = 10 * 1000; // every 10 seconds - this.action = action; - this.getNewData(); - this.unread_mentions = 0; - this.since_id = null; - this.since_id_entity = null; - this.since_time = 0; - - this.body = document.createElement("ol"); - this.body.className = this.action; - this.cache = {}; - this.is_not_init = false; - - var _this = this; - setInterval(function() { _this.getNewData() }, this.timeout); -} - -Core.prototype.newStatus = function(status) { - - if(status != null && status.length > 0) { - for(var i = status.length-1, c=0; i>=c; --i) { - if(this.body.childNodes.length > 0) { - if(this.body.childNodes.length > this.max_length) { - this.body.removeChild(this.body.lastChild); - } - this.body.insertBefore(this.getItem(status[i]), this.body.firstChild); - } else { - this.body.appendChild(this.getItem(status[i])); - } - } - } - - if(this.action == "mentions" && this.is_not_init) { - this.unread_mentions += status.length; - controller.unreadMentions_(this.unread_mentions); - } - this.is_not_init = true; -} - -Core.prototype.logout = function() { - this.body.innerHTML = ""; -} - -Core.prototype.getItem = function(status) { - - var _this = this; - this.since_id = status.id; - this.since_id_entity = status.entity; - - var template = this.getTemplate(); - - template.reply_to.onclick = function() { - var mentions = []; - for (var i = 0; i < status.mentions.length; i++) { - var mention = status.mentions[i]; - if(mention.entity != controller.stringForKey_("entity")) - mentions.push(mention); - }; - replyTo(status.entity, status.id, mentions); - return false; - } - //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } - - template.username.innerText = status.entity; - template.username.href = status.entity; // FIXME open profile - - findProfileURL(status.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - template.username.title = template.username.innerText; - template.username.innerText = basic.name; - } - if(basic.avatar_url) { - template.image.onerror = function() { template.image.src = 'default-avatar.png' }; - template.image.src = basic.avatar_url; - } - } - }, null, false); // do not send auth-headers - } - }); - - template.in_reply.parentNode.className = "hidden"; - - template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); - findMentions(template.message, status.mentions); - - var time = document.createElement("abbr"); - time.innerText = ISODateString(new Date(status.published_at * 1000)); - time.title = time.innerText; - time.className = "timeago"; - $(time).timeago(); - template.ago.appendChild(time); - - // {"type":"Point","coordinates":[57.10803113,12.25854746]} - if (status.content && status.content.location && status.content.location.type == "Point") { - template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; - template.geo.style.display = ""; - } - - template.source.href = status.app.url; - template.source.innerHTML = status.app.name; - template.source.title = status.app.url; - - return template.item; -} - -Core.prototype.getTemplate = function() { - - if(this.template == "undefined") { - return jQuery.extend(true, {}, this.template); - } - - var a = document.createElement("a"); - - var item = document.createElement("li"); - - var reply_to = a.cloneNode(); - reply_to.className = "reply_to" - reply_to.innerText = " "; - reply_to.href = "#"; - item.appendChild(reply_to); - - var retweet = a.cloneNode(); - retweet.className = "retweet"; - retweet.innerText = " "; - retweet.href = "#"; - // item.appendChild(retweet); // FIXME - - - var image = document.createElement("img"); - image.className = "image"; - image.src = "default-avatar.png"; - image.onmousedown = function(e) { e.preventDefault(); }; - item.appendChild(image); - - var image_username = a.cloneNode(); - image.appendChild(image_username); - - var data = document.createElement("div"); - data.className = "data"; - item.appendChild(data); - - var head = document.createElement("h1"); - data.appendChild(head); - - var username = a.cloneNode(); - head.appendChild(username); - - var in_reply = document.createElement("span"); - in_reply.className = "reply"; - head.appendChild(in_reply); - - var space = document.createTextNode(" "); - head.appendChild(space); - - var geo = document.createElement("a"); - geo.style.display = "none"; - head.appendChild(geo); - - var pin = document.createElement("img"); - pin.src = "pin.png"; - pin.alt = "Map link"; - geo.appendChild(pin); - - var in_reply_text = document.createTextNode(" in reply to "); - in_reply.appendChild(in_reply_text) - - var in_reply_a = a.cloneNode(); - in_reply.appendChild(in_reply_a); - - var message = document.createElement("p"); - message.className = "message"; - data.appendChild(message); - - var images = document.createElement("p") - images.className = "images"; - data.appendChild(images); - - var date = message.cloneNode(); - date.className = "date"; - data.appendChild(date); - - var ago = a.cloneNode(); - date.appendChild(ago); - - var from = document.createTextNode(" from "); - date.appendChild(from) - - var source = document.createElement("a"); - source.className = "source"; - date.appendChild(source) - - this.template = { - item: item, - reply_to: reply_to, - retweet: retweet, - image: image, - username: username, - in_reply: in_reply_a, - message: message, - ago: ago, - source: source, - geo: geo, - images: images - } - - return jQuery.extend(true, {}, this.template); -} - -Core.prototype.getNewData = function() { - - var those = this; - var url = URI(mkApiRootPath("/posts")); - url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); - url.addSearch("limit", this.max_length); - if(this.since_id) { - url.addSearch("since_id", this.since_id); - url.addSearch("since_id_entity", this.since_id_entity); - } - - if (this.action == "mentions") { - url.addSearch("mentioned_entity", controller.stringForKey_("entity")); - } - - var http_method = "GET"; - var callback = function(resp) { - - try { - var json = JSON.parse(resp.responseText) - } catch (e) { - //alert(resp.responseText); - alert(url + " JSON parse error"); - throw e; - } - - those.newStatus(json); - } - - var data = null; - - if (controller.stringForKey_("user_access_token")) { - getURL(url.toString(), http_method, callback, data); // FIXME: error callback - } -} - - -Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { - - var _this = this; - - var url = URI(mkApiRootPath("/posts")); - - var http_method = "POST"; - var callback = function(data) { _this.getNewData(); } - - var data = { - "type": "https://tent.io/types/post/status/v0.1.0", - "published_at": (new Date().getTime() / 1000), - "permissions": { - "public": true - }, - "content": { - "text": content, - }, - }; - - var mentions = parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - if (mentions.length > 0) { - data["mentions"] = mentions; - } - - getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback -} - -/* Helper functions */ - -function replaceURLWithHTMLLinks(text, entities, message_node) { - var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(exp, "$1"); -} - -function replaceUsernamesWithLinks(text, mentions) { - return text; // FIXME! - var username = /(^|\s)(\^)(\w+)/ig; - var hash = /(^|\s)(#)(\w+)/ig; - text = text.replace(username, "$1$2$3"); - return text.replace(hash, "$1$2$3"); -} - -function replyTo(entity, status_id, mentions) { - var string = "^" + entity.replace("https://", "") + " "; - for (var i = 0; i < mentions.length; i++) { - var e = mentions[i].entity.replace("https://", ""); - if(string.indexOf(e) == -1) string += "^" + e + " "; - } - controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); -} - -function loadPlugin(url) { - var plugin = document.createElement("script"); - plugin.type = "text/javascript"; - plugin.src = url; - document.getElementsByTagName("head")[0].appendChild(plugin); -} - -String.prototype.startsWith = function(prefix) { - return this.indexOf(prefix) === 0; -} - -String.prototype.endsWith = function(suffix) { - return this.match(suffix+"$") == suffix; -}; - -function getUrlVars(url) -{ - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function replaceShortened(url, message_node) { - var api = "http://api.bitly.com"; - if(url.startsWith("http://j.mp/")) { - api = "http://api.j.mp"; - } - - var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key - - $.ajax({ - url: api_url, - success: function(data) { - var new_url = data.data.expand[0].long_url; - if (new_url) { - var regex = new RegExp(url, "g"); - message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); - } - }, - error:function (xhr, ajaxOptions, thrownError) { - alert(xhr.status); - alert(thrownError); - } - }); -} - -function findMentions(node, mentions) { - var text = node.innerHTML; - var mentions_in_text = []; - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var name = res[i]; - var e = name.substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - for (var j = 0; j < mentions.length; j++) { - var m = mentions[j]; - if(m.entity.startsWith(e)) { - mentions_in_text.push({ - entity: m.entity, - text: name - }); - } - } - } - } - - for (var i = 0; i < mentions_in_text.length; i++) { - var mention = mentions_in_text[i]; - - (function(mention) { // need this closure - findProfileURL(mention.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - var new_text = node.innerHTML.replace( - mention.text, - "" - + basic.name - + "" - ); - node.innerHTML = new_text; - } - } - }, null, false); // do not send auth-headers - } - }); - })(mention); - } -} - -function parseMentions(text, post_id, entity) { - var mentions = []; - - if (post_id && entity) { - mentions.push({ - post: post_id, - entity: entity - }) - } - - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var e = res[i].substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - if (e != entity) { - mentions.push({entity:e}); - } - } - } - - return mentions; -} - -function ISODateString(d){ - function pad(n){return n<10 ? '0'+n : n} - return d.getUTCFullYear()+'-' - + pad(d.getUTCMonth()+1)+'-' - + pad(d.getUTCDate())+'T' - + pad(d.getUTCHours())+':' - + pad(d.getUTCMinutes())+':' - + pad(d.getUTCSeconds())+'Z' -} - -var tentia_instance; diff --git a/Mac/WebKit/OauthImplementation.js b/Mac/WebKit/OauthImplementation.js deleted file mode 100644 index 09e40bb..0000000 --- a/Mac/WebKit/OauthImplementation.js +++ /dev/null @@ -1,142 +0,0 @@ -// -// OauthImplementation.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - -function getUrlVars(url) { - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function OauthImplementation() { - this.app_info = { - "id": null, - "name": "Tentia", - "description": "A small TentStatus client.", - "url": "http://jabs.nu/Tentia/", - "icon": "http://jabs.nu/Tentia/icon.png", - "redirect_uris": [ - "tentia://oauthtoken" - ], - "scopes": { - "read_posts": "Uses posts to show them in a list", - "write_posts": "Posts on users behalf" - } - }; - this.register_data = null; - this.profile = null; - this.state = null; - - this.authenticate(); -} - -OauthImplementation.prototype.authenticate = function() { - this.entity = controller.stringForKey_("entity"); - this.requestProfileURL(this.entity); -} - -OauthImplementation.prototype.apiRoot = function() { - return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; -} - -OauthImplementation.prototype.requestProfileURL = function (entity) { - var those = this; - findProfileURL(entity, function(profile_url) { - those.register(profile_url); - }); -} - -OauthImplementation.prototype.register = function (url) { - var those = this; - getURL(url, "GET", function(resp) { - those.profile = JSON.parse(resp.responseText); - controller.setString_forKey_(those.apiRoot(), "api_root"); - var callback = function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data); - } - getURL(mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info)); - }); -} - -OauthImplementation.prototype.authRequest = function(register_data) { - // id - // mac_key_id - // mac_key - // mac_algorithm - this.register_data = register_data; - - // Needed for later App Registration Modification - controller.setString_forKey_(register_data["mac_key"], "app_mac_key"); - controller.setString_forKey_(register_data["mac_key_id"], "app_mac_key_id"); - controller.setString_forKey_(register_data["id"], "app_id"); - controller.setString_forKey_(register_data["mac_algorithm"], "app_mac_algorithm"); - - this.state = makeid(19); - var auth = "/oauth/authorize?client_id=" + register_data["id"] - + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) - + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") - + "&state=" + this.state - + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); - - controller.openURL_(this.apiRoot() + auth); -} - -OauthImplementation.prototype.requestAccessToken = function(responseBody) { - // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv - var urlVars = getUrlVars(responseBody); - if(this.state && this.state != "" && urlVars["state"] == this.state) { - - var url = mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; - - var requestBody = JSON.stringify({ - 'code' : urlVars["code"], - 'token_type' : "mac" - }); - - var those = this; - var http_method = "POST"; - var callback = function(resp) { - those.requestAccessTokenTicketFinished(resp.responseText); - }; - - var auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("app_mac_key"), - controller.stringForKey_("app_mac_key_id") - ); - - getURL(url, http_method, callback, requestBody, auth_header); - - } else { - alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") - } - - this.state = null; // reset the state -} - -OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) { - - var access = JSON.parse(responseBody); - - controller.setString_forKey_(access["access_token"], "user_access_token"); - controller.setString_forKey_(access["mac_key"], "user_mac_key"); - controller.setString_forKey_(access["mac_algorithm"], "user_mac_algorithm"); - controller.setString_forKey_(access["token_type"], "user_token_type"); - - controller.loggedIn(); -} - -var tentia_oauth; \ No newline at end of file diff --git a/Mac/WebKit/TimelineView.js b/Mac/WebKit/TimelineView.js deleted file mode 100644 index e69de29..0000000 diff --git a/Mac/WebKit/hmac-helper.js b/Mac/WebKit/hmac-helper.js deleted file mode 100644 index f3ad041..0000000 --- a/Mac/WebKit/hmac-helper.js +++ /dev/null @@ -1,122 +0,0 @@ -// its different for app authentication and user authentication: -// for apps its id: mac_key_id and secret: mac_key, -// for users its id: access_token and secret:mac_key - -function getURL(url, http_method, callback, data, auth_header) { - $.ajax({ - beforeSend: function(xhr) { - if (data) xhr.setRequestHeader("Content-Length", data.length); - - if (auth_header) { // if is_set? auth_header - xhr.setRequestHeader("Authorization", auth_header); - } else { - var user_access_token = controller.stringForKey_("user_access_token"); - if (auth_header !== false && user_access_token) { - auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("user_mac_key"), - user_access_token - ) - xhr.setRequestHeader("Authorization", auth_header); - } - } - }, - url: url, - accepts: "application/vnd.tent.v0+json", - contentType: "application/vnd.tent.v0+json", - type: http_method, - complete: callback, - data: data, - processData: false, - error: function(xhr, ajaxOptions, thrownError) { - alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); - } - }); -} - -function makeAuthHeader(url, http_method, mac_key, mac_key_id) { - - url = URI(url); - var nonce = makeid(8); - var time_stamp = parseInt((new Date).getTime() / 1000, 10); - - var port = url.port(); - if (!port) { - port = url.protocol() == "https" ? "443" : "80"; - } - - var normalizedRequestString = "" - + time_stamp + '\n' - + nonce + '\n' - + http_method + '\n' - + url.path() + url.search() + url.hash() + '\n' - + url.hostname() + '\n' - + port + '\n' - + '\n' ; - - var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); - hmac.update(normalizedRequestString); - var hash = hmac.finalize(); - var mac = hash.toString(CryptoJS.enc.Base64); - - return 'MAC id="' + mac_key_id + - '", ts="' + time_stamp + - '", nonce="' + nonce + - '", mac="' + mac + '"'; -} - -function makeid(len) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for( var i=0; i < len; i++ ) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - - return text; -} - -function findProfileURL(entity, callback) { - $.ajax({ - url: entity, - type: "HEAD", - complete: function(resp) { - if(resp) { - var headers = resp.getAllResponseHeaders(); - var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! - var ret = headers.match(regex); - var profile_url = null; - if(ret && ret.length > 1) { - var profile_url = ret[1]; - if (profile_url == "/profile") { - profile_url = entity + "/profile"; - } - } - - if (profile_url) { - callback(profile_url); - } - } - }, - error: function(xhr, ajaxOptions, thrownError) { - alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); - } - }); -} - -function mkApiRootPath(path) { - var api_root = controller.stringForKey_("api_root"); - if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { - api_root += "/"; - } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { - api_root = api_root.substring(0, api_root.length -1); - } - return api_root + path; -} - -function debug(string) { - if (typeof string == "Object") { - string = JSON.stirngify(string); - } - alert("DEBUG: " + string); -} \ No newline at end of file diff --git a/Mac/WebKit/hmac-sha256.js b/Mac/WebKit/hmac-sha256.js deleted file mode 100644 index a143d84..0000000 --- a/Mac/WebKit/hmac-sha256.js +++ /dev/null @@ -1,17 +0,0 @@ -/* -CryptoJS v3.0.2 -code.google.com/p/crypto-js -(c) 2009-2012 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -var CryptoJS=CryptoJS||function(h,i){var e={},f=e.lib={},l=f.Base=function(){function a(){}return{extend:function(j){a.prototype=this;var d=new a;j&&d.mixIn(j);d.$super=this;return d},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var d in a)a.hasOwnProperty(d)&&(this[d]=a[d]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.$super.extend(this)}}}(),k=f.WordArray=l.extend({init:function(a,j){a= -this.words=a||[];this.sigBytes=j!=i?j:4*a.length},toString:function(a){return(a||m).stringify(this)},concat:function(a){var j=this.words,d=a.words,c=this.sigBytes,a=a.sigBytes;this.clamp();if(c%4)for(var b=0;b>>2]|=(d[b>>>2]>>>24-8*(b%4)&255)<<24-8*((c+b)%4);else if(65535>>2]=d[b>>>2];else j.push.apply(j,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a= -l.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return k.create(d,b/2)}},q=o.Latin1={stringify:function(a){for(var b= -a.words,a=a.sigBytes,d=[],c=0;c>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return k.create(d,b)}},r=o.Utf8={stringify:function(a){try{return decodeURIComponent(escape(q.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return q.parse(unescape(encodeURIComponent(a)))}},b=f.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=k.create(); -this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,g=c/(4*e),g=a?h.ceil(g):h.max((g|0)-this._minBufferSize,0),a=g*e,c=h.min(4*a,c);if(a){for(var f=0;fg;)e(b)&&(8>g&&(k[g]=f(h.pow(b,0.5))),o[g]=f(h.pow(b,1/3)),g++),b++})();var m=[],l=l.SHA256=e.extend({_doReset:function(){this._hash=f.create(k.slice(0))},_doProcessBlock:function(e,f){for(var b=this._hash.words,g=b[0],a=b[1],j=b[2],d=b[3],c=b[4],h=b[5],l=b[6],k=b[7],n=0;64> -n;n++){if(16>n)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i<<14|i>>>18)^i>>>3)+m[n-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+m[n-16]}i=k+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&h^~c&l)+o[n]+m[n];p=((g<<30|g>>>2)^(g<<19|g>>>13)^(g<<10|g>>>22))+(g&a^g&j^a&j);k=l;l=h;h=c;c=d+i|0;d=j;j=a;a=g;g=i+p|0}b[0]=b[0]+g|0;b[1]=b[1]+a|0;b[2]=b[2]+j|0;b[3]=b[3]+d|0;b[4]=b[4]+c|0;b[5]=b[5]+h|0;b[6]=b[6]+l|0;b[7]=b[7]+k|0},_doFinalize:function(){var e=this._data,f=e.words,b=8*this._nDataBytes, -g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); -(function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b - - - Tentia - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Mac/WebKit/index_oauth.html b/Mac/WebKit/index_oauth.html deleted file mode 100644 index ccdb02c..0000000 --- a/Mac/WebKit/index_oauth.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Tentia - - - - - - - - - - - - \ No newline at end of file diff --git a/README.markdown b/README.markdown index b0c513a..006e20a 100644 --- a/README.markdown +++ b/README.markdown @@ -3,4 +3,16 @@ Tentia Tentia is a slim Tent client for OS X written in mostly JavaScript. -For more info check out the Wiki page: https://github.com/jeena/Tentia/wiki \ No newline at end of file +For more info check out the Wiki page: https://github.com/jeena/Tentia/wiki + + +Thanks everyone in the Open Source community! Tentia is using: + +- RequireJS - http://requirejs.org +- URI.js - http://medialize.github.com/URI.js/ +- CryptoJS - http://code.google.com/p/crypto-js/ +- jQuery - http://jquery.com/ +- WebKit - http://www.webkit.org/ +- Tent - https://tent.io/ +- timeago - http://timeago.yarp.com/ +- sparkle - http://sparkle.andymatuschak.org/ \ No newline at end of file diff --git a/TimelineView.js b/TimelineView.js new file mode 100644 index 0000000..af1750b --- /dev/null +++ b/TimelineView.js @@ -0,0 +1,4 @@ +function TimelineView() { + +} + diff --git a/WebKit/Constants.js b/WebKit/Constants.js deleted file mode 100644 index 179892e..0000000 --- a/WebKit/Constants.js +++ /dev/null @@ -1,21 +0,0 @@ -// -// Constants.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - - -OAUTH_CONSUMER_KEY = "JPmU8KJhiBKfpohCiWLg" -OAUTH_CONSUMER_SECRET = "jtfSrnDrRcUnL1nqTMcAW0055m63EMClmkxhiBjQ" -OAUTH_SIGNATURE_METHOD = "HMAC-SHA1" -OAUTH_REQUEST_TOKEN_URL = "http://twitter.com/oauth/request_token" -OAUTH_USER_AUTHORIZATION_URL = "http://twitter.com/oauth/authorize" -OAUTH_ACCESS_TOKEN_URL = "http://twitter.com/oauth/access_token" -OAUTH_SERVICE_NAME = "twitter.com" - -APP_NAME = "Tentia"; - -API_PATH = "http://api.twitter.com/1/"; -WEBSITE_PATH = "http://twitter.com/"; diff --git a/WebKit/ConversationView.js b/WebKit/ConversationView.js deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/Core.js b/WebKit/Core.js deleted file mode 100644 index 475c32f..0000000 --- a/WebKit/Core.js +++ /dev/null @@ -1,457 +0,0 @@ -// -// Core.js -// Tentia -// -// Created by Jeena on 15.04.10. -// Licence: BSD (see attached LICENCE.txt file). -// - -function Core(action) { - this.max_length = 200; - // this.timeout = 2 * 60 * 1000; - this.timeout = 10 * 1000; // every 10 seconds - this.action = action; - this.getNewData(); - this.unread_mentions = 0; - this.since_id = null; - this.since_id_entity = null; - this.since_time = 0; - - this.body = document.createElement("ol"); - this.body.className = this.action; - this.cache = {}; - this.is_not_init = false; - - var _this = this; - setInterval(function() { _this.getNewData() }, this.timeout); -} - -Core.prototype.newStatus = function(status) { - - if(status != null && status.length > 0) { - for(var i = status.length-1, c=0; i>=c; --i) { - if(this.body.childNodes.length > 0) { - if(this.body.childNodes.length > this.max_length) { - this.body.removeChild(this.body.lastChild); - } - this.body.insertBefore(this.getItem(status[i]), this.body.firstChild); - } else { - this.body.appendChild(this.getItem(status[i])); - } - } - } - - if(this.action == "mentions" && this.is_not_init) { - this.unread_mentions += status.length; - controller.unreadMentions_(this.unread_mentions); - } - this.is_not_init = true; -} - -Core.prototype.logout = function() { - this.body.innerHTML = ""; -} - -Core.prototype.getItem = function(status) { - - var _this = this; - this.since_id = status.id; - this.since_id_entity = status.entity; - - var template = this.getTemplate(); - - template.reply_to.onclick = function() { - var mentions = []; - for (var i = 0; i < status.mentions.length; i++) { - var mention = status.mentions[i]; - if(mention.entity != controller.stringForKey_("entity")) - mentions.push(mention); - }; - replyTo(status.entity, status.id, mentions); - return false; - } - //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } - - template.username.innerText = status.entity; - template.username.href = status.entity; // FIXME open profile - - findProfileURL(status.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - template.username.title = template.username.innerText; - template.username.innerText = basic.name; - } - if(basic.avatar_url) { - template.image.onerror = function() { template.image.src = 'default-avatar.png' }; - template.image.src = basic.avatar_url; - } - } - }, null, false); // do not send auth-headers - } - }); - - template.in_reply.parentNode.className = "hidden"; - - template.message.innerHTML = replaceUsernamesWithLinks(replaceURLWithHTMLLinks(status.content.text, status.entities, template.message)); - findMentions(template.message, status.mentions); - - var time = document.createElement("abbr"); - time.innerText = ISODateString(new Date(status.published_at * 1000)); - time.title = time.innerText; - time.className = "timeago"; - $(time).timeago(); - template.ago.appendChild(time); - - // {"type":"Point","coordinates":[57.10803113,12.25854746]} - if (status.content && status.content.location && status.content.location.type == "Point") { - template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; - template.geo.style.display = ""; - } - - template.source.href = status.app.url; - template.source.innerHTML = status.app.name; - template.source.title = status.app.url; - - return template.item; -} - -Core.prototype.getTemplate = function() { - - if(this.template == "undefined") { - return jQuery.extend(true, {}, this.template); - } - - var a = document.createElement("a"); - - var item = document.createElement("li"); - - var reply_to = a.cloneNode(); - reply_to.className = "reply_to" - reply_to.innerText = " "; - reply_to.href = "#"; - item.appendChild(reply_to); - - var retweet = a.cloneNode(); - retweet.className = "retweet"; - retweet.innerText = " "; - retweet.href = "#"; - // item.appendChild(retweet); // FIXME - - - var image = document.createElement("img"); - image.className = "image"; - image.src = "default-avatar.png"; - image.onmousedown = function(e) { e.preventDefault(); }; - item.appendChild(image); - - var image_username = a.cloneNode(); - image.appendChild(image_username); - - var data = document.createElement("div"); - data.className = "data"; - item.appendChild(data); - - var head = document.createElement("h1"); - data.appendChild(head); - - var username = a.cloneNode(); - head.appendChild(username); - - var in_reply = document.createElement("span"); - in_reply.className = "reply"; - head.appendChild(in_reply); - - var space = document.createTextNode(" "); - head.appendChild(space); - - var geo = document.createElement("a"); - geo.style.display = "none"; - head.appendChild(geo); - - var pin = document.createElement("img"); - pin.src = "pin.png"; - pin.alt = "Map link"; - geo.appendChild(pin); - - var in_reply_text = document.createTextNode(" in reply to "); - in_reply.appendChild(in_reply_text) - - var in_reply_a = a.cloneNode(); - in_reply.appendChild(in_reply_a); - - var message = document.createElement("p"); - message.className = "message"; - data.appendChild(message); - - var images = document.createElement("p") - images.className = "images"; - data.appendChild(images); - - var date = message.cloneNode(); - date.className = "date"; - data.appendChild(date); - - var ago = a.cloneNode(); - date.appendChild(ago); - - var from = document.createTextNode(" from "); - date.appendChild(from) - - var source = document.createElement("a"); - source.className = "source"; - date.appendChild(source) - - this.template = { - item: item, - reply_to: reply_to, - retweet: retweet, - image: image, - username: username, - in_reply: in_reply_a, - message: message, - ago: ago, - source: source, - geo: geo, - images: images - } - - return jQuery.extend(true, {}, this.template); -} - -Core.prototype.getNewData = function() { - - var those = this; - var url = URI(mkApiRootPath("/posts")); - url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); - url.addSearch("limit", this.max_length); - if(this.since_id) { - url.addSearch("since_id", this.since_id); - url.addSearch("since_id_entity", this.since_id_entity); - } - - if (this.action == "mentions") { - url.addSearch("mentioned_entity", controller.stringForKey_("entity")); - } - - var http_method = "GET"; - var callback = function(resp) { - - try { - var json = JSON.parse(resp.responseText) - } catch (e) { - //alert(resp.responseText); - alert(url + " JSON parse error"); - throw e; - } - - those.newStatus(json); - } - - var data = null; - - if (controller.stringForKey_("user_access_token")) { - getURL(url.toString(), http_method, callback, data); // FIXME: error callback - } -} - - -Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { - - var _this = this; - - var url = URI(mkApiRootPath("/posts")); - - var http_method = "POST"; - var callback = function(data) { _this.getNewData(); } - - var data = { - "type": "https://tent.io/types/post/status/v0.1.0", - "published_at": (new Date().getTime() / 1000), - "permissions": { - "public": true - }, - "content": { - "text": content, - }, - }; - - var mentions = parseMentions(content, in_reply_to_status_id, in_reply_to_entity); - if (mentions.length > 0) { - data["mentions"] = mentions; - } - - getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback -} - -/* Helper functions */ - -function replaceURLWithHTMLLinks(text, entities, message_node) { - var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; - return text.replace(exp, "$1"); -} - -function replaceUsernamesWithLinks(text, mentions) { - return text; // FIXME! - var username = /(^|\s)(\^)(\w+)/ig; - var hash = /(^|\s)(#)(\w+)/ig; - text = text.replace(username, "$1$2$3"); - return text.replace(hash, "$1$2$3"); -} - -function replyTo(entity, status_id, mentions) { - var string = "^" + entity.replace("https://", "") + " "; - for (var i = 0; i < mentions.length; i++) { - var e = mentions[i].entity.replace("https://", ""); - if(string.indexOf(e) == -1) string += "^" + e + " "; - } - controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); -} - -function loadPlugin(url) { - var plugin = document.createElement("script"); - plugin.type = "text/javascript"; - plugin.src = url; - document.getElementsByTagName("head")[0].appendChild(plugin); -} - -String.prototype.startsWith = function(prefix) { - return this.indexOf(prefix) === 0; -} - -String.prototype.endsWith = function(suffix) { - return this.match(suffix+"$") == suffix; -}; - -function getUrlVars(url) -{ - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function replaceShortened(url, message_node) { - var api = "http://api.bitly.com"; - if(url.startsWith("http://j.mp/")) { - api = "http://api.j.mp"; - } - - var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key - - $.ajax({ - url: api_url, - success: function(data) { - var new_url = data.data.expand[0].long_url; - if (new_url) { - var regex = new RegExp(url, "g"); - message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); - } - }, - error:function (xhr, ajaxOptions, thrownError) { - alert(xhr.status); - alert(thrownError); - } - }); -} - -function findMentions(node, mentions) { - var text = node.innerHTML; - var mentions_in_text = []; - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var name = res[i]; - var e = name.substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - for (var j = 0; j < mentions.length; j++) { - var m = mentions[j]; - if(m.entity.startsWith(e)) { - mentions_in_text.push({ - entity: m.entity, - text: name - }); - } - } - } - } - - for (var i = 0; i < mentions_in_text.length; i++) { - var mention = mentions_in_text[i]; - - (function(mention) { // need this closure - findProfileURL(mention.entity, function(profile_url) { - if (profile_url) { - getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - - if (profile && basic) { - if(basic.name) { - var new_text = node.innerHTML.replace( - mention.text, - "" - + basic.name - + "" - ); - node.innerHTML = new_text; - } - } - }, null, false); // do not send auth-headers - } - }); - })(mention); - } -} - -function parseMentions(text, post_id, entity) { - var mentions = []; - - if (post_id && entity) { - mentions.push({ - post: post_id, - entity: entity - }) - } - - var res = text.match(/(\^\S+)/ig); - - if (res) { - for (var i = 0; i < res.length; i++) { - var e = res[i].substring(1); - if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { - e = "https://" + e; - } - if (e != entity) { - mentions.push({entity:e}); - } - } - } - - return mentions; -} - -function ISODateString(d){ - function pad(n){return n<10 ? '0'+n : n} - return d.getUTCFullYear()+'-' - + pad(d.getUTCMonth()+1)+'-' - + pad(d.getUTCDate())+'T' - + pad(d.getUTCHours())+':' - + pad(d.getUTCMinutes())+':' - + pad(d.getUTCSeconds())+'Z' -} - -var tentia_instance; diff --git a/WebKit/OauthImplementation.js b/WebKit/OauthImplementation.js deleted file mode 100644 index 09e40bb..0000000 --- a/WebKit/OauthImplementation.js +++ /dev/null @@ -1,142 +0,0 @@ -// -// OauthImplementation.js -// Tentia -// -// Created by Jeena on 19.09.11. -// Licence: BSD (see attached LICENCE.txt file). -// - -function getUrlVars(url) { - var vars = [], hash; - if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); - var hashes = url.slice(url.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++) - { - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - return vars; -} - -function OauthImplementation() { - this.app_info = { - "id": null, - "name": "Tentia", - "description": "A small TentStatus client.", - "url": "http://jabs.nu/Tentia/", - "icon": "http://jabs.nu/Tentia/icon.png", - "redirect_uris": [ - "tentia://oauthtoken" - ], - "scopes": { - "read_posts": "Uses posts to show them in a list", - "write_posts": "Posts on users behalf" - } - }; - this.register_data = null; - this.profile = null; - this.state = null; - - this.authenticate(); -} - -OauthImplementation.prototype.authenticate = function() { - this.entity = controller.stringForKey_("entity"); - this.requestProfileURL(this.entity); -} - -OauthImplementation.prototype.apiRoot = function() { - return this.profile["https://tent.io/types/info/core/v0.1.0"]["servers"][0]; -} - -OauthImplementation.prototype.requestProfileURL = function (entity) { - var those = this; - findProfileURL(entity, function(profile_url) { - those.register(profile_url); - }); -} - -OauthImplementation.prototype.register = function (url) { - var those = this; - getURL(url, "GET", function(resp) { - those.profile = JSON.parse(resp.responseText); - controller.setString_forKey_(those.apiRoot(), "api_root"); - var callback = function(resp) { - var data = JSON.parse(resp.responseText); - those.authRequest(data); - } - getURL(mkApiRootPath("/apps"), "POST", callback, JSON.stringify(those.app_info)); - }); -} - -OauthImplementation.prototype.authRequest = function(register_data) { - // id - // mac_key_id - // mac_key - // mac_algorithm - this.register_data = register_data; - - // Needed for later App Registration Modification - controller.setString_forKey_(register_data["mac_key"], "app_mac_key"); - controller.setString_forKey_(register_data["mac_key_id"], "app_mac_key_id"); - controller.setString_forKey_(register_data["id"], "app_id"); - controller.setString_forKey_(register_data["mac_algorithm"], "app_mac_algorithm"); - - this.state = makeid(19); - var auth = "/oauth/authorize?client_id=" + register_data["id"] - + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) - + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") - + "&state=" + this.state - + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); - - controller.openURL_(this.apiRoot() + auth); -} - -OauthImplementation.prototype.requestAccessToken = function(responseBody) { - // /oauthtoken?code=51d0115b04d1ed94001dde751c5b360f&state=aQfH1VEohYsQr86qqyv - var urlVars = getUrlVars(responseBody); - if(this.state && this.state != "" && urlVars["state"] == this.state) { - - var url = mkApiRootPath("/apps/") + this.register_data["id"] + "/authorizations"; - - var requestBody = JSON.stringify({ - 'code' : urlVars["code"], - 'token_type' : "mac" - }); - - var those = this; - var http_method = "POST"; - var callback = function(resp) { - those.requestAccessTokenTicketFinished(resp.responseText); - }; - - var auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("app_mac_key"), - controller.stringForKey_("app_mac_key_id") - ); - - getURL(url, http_method, callback, requestBody, auth_header); - - } else { - alert("State is not the same: {" + this.state + "} vs {" + urlVars["state"] + "}") - } - - this.state = null; // reset the state -} - -OauthImplementation.prototype.requestAccessTokenTicketFinished = function(responseBody) { - - var access = JSON.parse(responseBody); - - controller.setString_forKey_(access["access_token"], "user_access_token"); - controller.setString_forKey_(access["mac_key"], "user_mac_key"); - controller.setString_forKey_(access["mac_algorithm"], "user_mac_algorithm"); - controller.setString_forKey_(access["token_type"], "user_token_type"); - - controller.loggedIn(); -} - -var tentia_oauth; \ No newline at end of file diff --git a/WebKit/TimelineView.js b/WebKit/TimelineView.js deleted file mode 100644 index e69de29..0000000 diff --git a/WebKit/URI.min.js b/WebKit/URI.min.js deleted file mode 100644 index 80b30f0..0000000 --- a/WebKit/URI.min.js +++ /dev/null @@ -1,70 +0,0 @@ -/*! URI.js v1.7.4 http://medialize.github.com/URI.js/ */ -/* build contains: IPv6.js, punycode.js, SecondLevelDomains.js, URI.js, URITemplate.js */ -(function(){("undefined"!==typeof module&&module.exports?module.exports:window).IPv6={best:function(d){var d=d.toLowerCase().split(":"),j=d.length,h=8;""===d[0]&&""===d[1]&&""===d[2]?(d.shift(),d.shift()):""===d[0]&&""===d[1]?d.shift():""===d[j-1]&&""===d[j-2]&&d.pop();j=d.length;-1!==d[j-1].indexOf(".")&&(h=7);var i;for(i=0;if;f++)if("0"===j[0]&&1f&&(j=u,f=s)):"0"==d[i]&&(g=!0,u=i,s=1);s>f&&(j=u,f=s);1>>10&1023|55296),a=56320|a&1023);return b+=z(a)}).join("")}function s(e, -c,k){for(var d=0,e=k?w(e/b):e>>1,e=e+w(e/c);e>x*r>>1;d+=n)e=w(e/x);return w(d+(x+1)*e/(e+a))}function u(a){var b=[],c=a.length,d,g=0,t=k,i=e,m,h,l,q,v;m=a.lastIndexOf(B);0>m&&(m=0);for(h=0;h=c&&j("invalid-input");q=a.charCodeAt(m++);q=10>q-48?q-22:26>q-65?q-65:26>q-97?q-97:n;(q>=n||q>w((y-g)/d))&&j("overflow");g+=q*d;v=l<=i?p:l>=i+r?r:l-i;if(qw(y/q)&&j("overflow");d*= -q}d=b.length+1;i=s(g-h,d,0==h);w(g/d)>y-t&&j("overflow");t+=w(g/d);g%=d;b.splice(g++,0,t)}return f(b)}function g(a){var b,c,d,g,f,t,m,h,l,q=[],v,u,x,a=i(a);v=a.length;b=k;c=0;f=e;for(t=0;tl&&q.push(z(l));for((d=g=q.length)&&q.push(B);d=b&&lw((y-c)/u)&&j("overflow");c+=(m-b)*u;b=m;for(t=0;ty&&j("overflow"),l==b){h=c;for(m=n;;m+=n){l=m<=f?p:m>=f+r?r:m-f;if(h -l+x%h)-0));h=w(x/h)}q.push(z(h+22+75*(26>h)-0));f=s(c,u,d==g);c=0;++d}++c;++b}return q.join("")}var c,m="function"==typeof define&&"object"==typeof define.amd&&define.amd&&define,l="object"==typeof exports&&exports,q="object"==typeof module&&module,y=2147483647,n=36,p=1,r=26,a=38,b=700,e=72,k=128,B="-",t=/[^ -~]/,v=/^xn--/,C={overflow:"Overflow: input needs wider integers to process.",ucs2decode:"UCS-2(decode): illegal sequence",ucs2encode:"UCS-2(encode): illegal value","not-basic":"Illegal input >= 0x80 (not a basic code point)", -"invalid-input":"Invalid input"},x=n-p,w=Math.floor,z=String.fromCharCode,A;c={version:"0.3.0",ucs2:{decode:i,encode:f},decode:u,encode:g,toASCII:function(a){return h(a.split("."),function(a){return t.test(a)?"xn--"+g(a):a}).join(".")},toUnicode:function(a){return h(a.split("."),function(a){return v.test(a)?u(a.slice(4).toLowerCase()):a}).join(".")}};if(l)if(q&&q.exports==l)q.exports=c;else for(A in c)c.hasOwnProperty(A)&&(l[A]=c[A]);else m?define("punycode",c):d.punycode=c})(this); -(function(){var d={list:{ac:"com|gov|mil|net|org",ae:"ac|co|gov|mil|name|net|org|pro|sch",af:"com|edu|gov|net|org",al:"com|edu|gov|mil|net|org",ao:"co|ed|gv|it|og|pb",ar:"com|edu|gob|gov|int|mil|net|org|tur",at:"ac|co|gv|or",au:"asn|com|csiro|edu|gov|id|net|org",ba:"co|com|edu|gov|mil|net|org|rs|unbi|unmo|unsa|untz|unze",bb:"biz|co|com|edu|gov|info|net|org|store|tv",bh:"biz|cc|com|edu|gov|info|net|org",bn:"com|edu|gov|net|org",bo:"com|edu|gob|gov|int|mil|net|org|tv",br:"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|edu|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|lel|mat|med|mil|mus|net|nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|rec|slg|srv|tmp|trd|tur|tv|vet|vlog|wiki|zlg", -bs:"com|edu|gov|net|org",bz:"du|et|om|ov|rg",ca:"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk",ck:"biz|co|edu|gen|gov|info|net|org",cn:"ac|ah|bj|com|cq|edu|fj|gd|gov|gs|gx|gz|ha|hb|he|hi|hl|hn|jl|js|jx|ln|mil|net|nm|nx|org|qh|sc|sd|sh|sn|sx|tj|tw|xj|xz|yn|zj",co:"com|edu|gov|mil|net|nom|org",cr:"ac|c|co|ed|fi|go|or|sa",cy:"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm","do":"art|com|edu|gob|gov|mil|net|org|sld|web",dz:"art|asso|com|edu|gov|net|org|pol",ec:"com|edu|fin|gov|info|med|mil|net|org|pro", -eg:"com|edu|eun|gov|mil|name|net|org|sci",er:"com|edu|gov|ind|mil|net|org|rochest|w",es:"com|edu|gob|nom|org",et:"biz|com|edu|gov|info|name|net|org",fj:"ac|biz|com|info|mil|name|net|org|pro",fk:"ac|co|gov|net|nom|org",fr:"asso|com|f|gouv|nom|prd|presse|tm",gg:"co|net|org",gh:"com|edu|gov|mil|org",gn:"ac|com|gov|net|org",gr:"com|edu|gov|mil|net|org",gt:"com|edu|gob|ind|mil|net|org",gu:"com|edu|gov|net|org",hk:"com|edu|gov|idv|net|org",id:"ac|co|go|mil|net|or|sch|web",il:"ac|co|gov|idf|k12|muni|net|org", -"in":"ac|co|edu|ernet|firm|gen|gov|i|ind|mil|net|nic|org|res",iq:"com|edu|gov|i|mil|net|org",ir:"ac|co|dnssec|gov|i|id|net|org|sch",it:"edu|gov",je:"co|net|org",jo:"com|edu|gov|mil|name|net|org|sch",jp:"ac|ad|co|ed|go|gr|lg|ne|or",ke:"ac|co|go|info|me|mobi|ne|or|sc",kh:"com|edu|gov|mil|net|org|per",ki:"biz|com|de|edu|gov|info|mob|net|org|tel",km:"asso|com|coop|edu|gouv|k|medecin|mil|nom|notaires|pharmaciens|presse|tm|veterinaire",kn:"edu|gov|net|org",kr:"ac|busan|chungbuk|chungnam|co|daegu|daejeon|es|gangwon|go|gwangju|gyeongbuk|gyeonggi|gyeongnam|hs|incheon|jeju|jeonbuk|jeonnam|k|kg|mil|ms|ne|or|pe|re|sc|seoul|ulsan", -kw:"com|edu|gov|net|org",ky:"com|edu|gov|net|org",kz:"com|edu|gov|mil|net|org",lb:"com|edu|gov|net|org",lk:"assn|com|edu|gov|grp|hotel|int|ltd|net|ngo|org|sch|soc|web",lr:"com|edu|gov|net|org",lv:"asn|com|conf|edu|gov|id|mil|net|org",ly:"com|edu|gov|id|med|net|org|plc|sch",ma:"ac|co|gov|m|net|org|press",mc:"asso|tm",me:"ac|co|edu|gov|its|net|org|priv",mg:"com|edu|gov|mil|nom|org|prd|tm",mk:"com|edu|gov|inf|name|net|org|pro",ml:"com|edu|gov|net|org|presse",mn:"edu|gov|org",mo:"com|edu|gov|net|org", -mt:"com|edu|gov|net|org",mv:"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro",mw:"ac|co|com|coop|edu|gov|int|museum|net|org",mx:"com|edu|gob|net|org",my:"com|edu|gov|mil|name|net|org|sch",nf:"arts|com|firm|info|net|other|per|rec|store|web",ng:"biz|com|edu|gov|mil|mobi|name|net|org|sch",ni:"ac|co|com|edu|gob|mil|net|nom|org",np:"com|edu|gov|mil|net|org",nr:"biz|com|edu|gov|info|net|org",om:"ac|biz|co|com|edu|gov|med|mil|museum|net|org|pro|sch",pe:"com|edu|gob|mil|net|nom|org|sld",ph:"com|edu|gov|i|mil|net|ngo|org", -pk:"biz|com|edu|fam|gob|gok|gon|gop|gos|gov|net|org|web",pl:"art|bialystok|biz|com|edu|gda|gdansk|gorzow|gov|info|katowice|krakow|lodz|lublin|mil|net|ngo|olsztyn|org|poznan|pwr|radom|slupsk|szczecin|torun|warszawa|waw|wroc|wroclaw|zgora",pr:"ac|biz|com|edu|est|gov|info|isla|name|net|org|pro|prof",ps:"com|edu|gov|net|org|plo|sec",pw:"belau|co|ed|go|ne|or",ro:"arts|com|firm|info|nom|nt|org|rec|store|tm|www",rs:"ac|co|edu|gov|in|org",sb:"com|edu|gov|net|org",sc:"com|edu|gov|net|org",sh:"co|com|edu|gov|net|nom|org", -sl:"com|edu|gov|net|org",st:"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store",sv:"com|edu|gob|org|red",sz:"ac|co|org",tr:"av|bbs|bel|biz|com|dr|edu|gen|gov|info|k12|name|net|org|pol|tel|tsk|tv|web",tt:"aero|biz|cat|co|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel",tw:"club|com|ebiz|edu|game|gov|idv|mil|net|org",mu:"ac|co|com|gov|net|or|org",mz:"ac|co|edu|gov|org",na:"co|com",nz:"ac|co|cri|geek|gen|govt|health|iwi|maori|mil|net|org|parliament|school", -pa:"abo|ac|com|edu|gob|ing|med|net|nom|org|sld",pt:"com|edu|gov|int|net|nome|org|publ",py:"com|edu|gov|mil|net|org",qa:"com|edu|gov|mil|net|org",re:"asso|com|nom",ru:"ac|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|com|dagestan|e-burg|edu|gov|grozny|int|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|kranoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mil|mordovia|mosreg|msk|murmansk|nalchik|net|nnov|nov|novosibirsk|nsk|omsk|orenburg|org|oryol|penza|perm|pp|pskov|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yekaterinburg|yuzhno-sakhalinsk", -rw:"ac|co|com|edu|gouv|gov|int|mil|net",sa:"com|edu|gov|med|net|org|pub|sch",sd:"com|edu|gov|info|med|net|org|tv",se:"a|ac|b|bd|c|d|e|f|g|h|i|k|l|m|n|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z",sg:"com|edu|gov|idn|net|org|per",sn:"art|com|edu|gouv|org|perso|univ",sy:"com|edu|gov|mil|net|news|org",th:"ac|co|go|in|mi|net|or",tj:"ac|biz|co|com|edu|go|gov|info|int|mil|name|net|nic|org|test|web",tn:"agrinet|com|defense|edunet|ens|fin|gov|ind|info|intl|mincom|nat|net|org|perso|rnrt|rns|rnu|tourism",tz:"ac|co|go|ne|or", -ua:"biz|cherkassy|chernigov|chernovtsy|ck|cn|co|com|crimea|cv|dn|dnepropetrovsk|donetsk|dp|edu|gov|if|in|ivano-frankivsk|kh|kharkov|kherson|khmelnitskiy|kiev|kirovograd|km|kr|ks|kv|lg|lugansk|lutsk|lviv|me|mk|net|nikolaev|od|odessa|org|pl|poltava|pp|rovno|rv|sebastopol|sumy|te|ternopil|uzhgorod|vinnica|vn|zaporizhzhe|zhitomir|zp|zt",ug:"ac|co|go|ne|or|org|sc",uk:"ac|bl|british-library|co|cym|gov|govt|icnet|jet|lea|ltd|me|mil|mod|national-library-scotland|nel|net|nhs|nic|nls|org|orgn|parliament|plc|police|sch|scot|soc", -us:"dni|fed|isa|kids|nsn",uy:"com|edu|gub|mil|net|org",ve:"co|com|edu|gob|info|mil|net|org|web",vi:"co|com|k12|net|org",vn:"ac|biz|com|edu|gov|health|info|int|name|net|org|pro",ye:"co|com|gov|ltd|me|net|org|plc",yu:"ac|co|edu|gov|org",za:"ac|agric|alt|bourse|city|co|cybernet|db|edu|gov|grondar|iaccess|imt|inca|landesign|law|mil|net|ngo|nis|nom|olivetti|org|pix|school|tm|web",zm:"ac|co|com|edu|gov|net|org|sch"},has_expression:null,is_expression:null,has:function(j){return!!j.match(d.has_expression)}, -is:function(j){return!!j.match(d.is_expression)},get:function(j){return(j=j.match(d.has_expression))&&j[1]||null},init:function(){var j="",h;for(h in d.list)Object.prototype.hasOwnProperty.call(d.list,h)&&(j+="|("+("("+d.list[h]+")."+h)+")");d.has_expression=RegExp("\\.("+j.substr(1)+")$","i");d.is_expression=RegExp("^("+j.substr(1)+")$","i")}};d.init();"undefined"!==typeof module&&module.exports?module.exports=d:window.SecondLevelDomains=d})(); -(function(d){function j(a){return a.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function h(a){return"[object Array]"===String(Object.prototype.toString.call(a))}function i(a){return encodeURIComponent(a).replace(/[!'()*]/g,escape).replace(/\*/g,"%2A")}var f="undefined"!==typeof module&&module.exports,s=f?require("./punycode"):window.punycode,u=f?require("./IPv6"):window.IPv6,g=f?require("./SecondLevelDomains"):window.SecondLevelDomains,c=function(a,b){if(!(this instanceof c))return new c(a,b);a=== -d&&(a="undefined"!==typeof location?location.href+"":"");this.href(a);return b!==d?this.absoluteTo(b):this},f=c.prototype;c.protocol_expression=/^[a-z][a-z0-9-+-]*$/i;c.idn_expression=/[^a-z0-9\.-]/i;c.punycode_expression=/(xn--)/i;c.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;c.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; -c.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?\u00ab\u00bb\u201c\u201d\u2018\u2019]))/ig;c.defaultPorts={http:"80",https:"443",ftp:"21"};c.invalid_hostname_characters=/[^a-zA-Z0-9\.-]/;c.encode=i;c.decode=decodeURIComponent;c.iso8859=function(){c.encode=escape;c.decode=unescape};c.unicode=function(){c.encode=i;c.decode=decodeURIComponent}; -c.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}}}; -c.encodeQuery=function(a){return c.encode(a+"").replace(/%20/g,"+")};c.decodeQuery=function(a){return c.decode((a+"").replace(/\+/g,"%20"))};c.recodePath=function(a){for(var a=(a+"").split("/"),b=0,e=a.length;bc)return a[0]===b[0]&&"/"===a[0]?"/":"";"/"!==a[c]&&(c=a.substring(0,c).lastIndexOf("/"));return a.substring(0,c+1)};c.withinString=function(a,b){return a.replace(c.find_uri_expression,b)};c.ensureValidHostname=function(a){if(a.match(c.invalid_hostname_characters)){if(!s)throw new TypeError("Hostname '"+ -a+"' contains characters other than [A-Z0-9.-] and Punycode.js is not available");if(s.toASCII(a).match(c.invalid_hostname_characters))throw new TypeError("Hostname '"+a+"' contains characters other than [A-Z0-9.-]");}};f.build=function(a){if(!0===a)this._deferred_build=!0;else if(a===d||this._deferred_build)this._string=c.build(this._parts),this._deferred_build=!1;return this};f.clone=function(){return new c(this)};f.toString=function(){return this.build(!1)._string};f.valueOf=function(){return this.toString()}; -m={protocol:"protocol",username:"username",password:"password",hostname:"hostname",port:"port"};q=function(a){return function(b,e){if(b===d)return this._parts[a]||"";this._parts[a]=b;this.build(!e);return this}};for(l in m)f[l]=q(m[l]);m={query:"?",fragment:"#"};q=function(a,b){return function(e,c){if(e===d)return this._parts[a]||"";null!==e&&(e+="",e[0]===b&&(e=e.substring(1)));this._parts[a]=e;this.build(!c);return this}};for(l in m)f[l]=q(l,m[l]);m={search:["?","query"],hash:["#","fragment"]}; -q=function(a,b){return function(e,c){var d=this[a](e,c);return"string"===typeof d&&d.length?b+d:d}};for(l in m)f[l]=q(m[l][1],m[l][0]);f.pathname=function(a,b){if(a===d||!0===a){var e=this._parts.path||(this._parts.urn?"":"/");return a?c.decodePath(e):e}this._parts.path=a?c.recodePath(a):"/";this.build(!b);return this};f.path=f.pathname;f.href=function(a,b){if(a===d)return this.toString();this._string="";this._parts={protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null, -query:null,fragment:null};var e=a instanceof c,k="object"===typeof a&&(a.hostname||a.path),g;if("string"===typeof a)this._parts=c.parse(a);else if(e||k)for(g in e=e?a._parts:a,e)Object.hasOwnProperty.call(this._parts,g)&&(this._parts[g]=e[g]);else throw new TypeError("invalid input");this.build(!b);return this};f.is=function(a){var b=!1,e=!1,d=!1,f=!1,m=!1,l=!1,h=!1,i=!this._parts.urn;this._parts.hostname&&(i=!1,e=c.ip4_expression.test(this._parts.hostname),d=c.ip6_expression.test(this._parts.hostname), -b=e||d,m=(f=!b)&&g&&g.has(this._parts.hostname),l=f&&c.idn_expression.test(this._parts.hostname),h=f&&c.punycode_expression.test(this._parts.hostname));switch(a.toLowerCase()){case "relative":return i;case "absolute":return!i;case "domain":case "name":return f;case "sld":return m;case "ip":return b;case "ip4":case "ipv4":case "inet4":return e;case "ip6":case "ipv6":case "inet6":return d;case "idn":return l;case "url":return!this._parts.urn;case "urn":return!!this._parts.urn;case "punycode":return h}return null}; -var y=f.protocol,n=f.port,p=f.hostname;f.protocol=function(a,b){if(a!==d&&a&&(a=a.replace(/:(\/\/)?$/,""),a.match(/[^a-zA-z0-9\.+-]/)))throw new TypeError("Protocol '"+a+"' contains characters other than [A-Z0-9.+-]");return y.call(this,a,b)};f.scheme=f.protocol;f.port=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d&&(0===a&&(a=null),a&&(a+="",":"===a[0]&&(a=a.substring(1)),a.match(/[^0-9]/))))throw new TypeError("Port '"+a+"' contains characters other than [0-9]");return n.call(this, -a,b)};f.hostname=function(a,b){if(this._parts.urn)return a===d?"":this;if(a!==d){var e={};c.parseHost(a,e);a=e.hostname}return p.call(this,a,b)};f.host=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildHost(this._parts):"";c.parseHost(a,this._parts);this.build(!b);return this};f.authority=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d)return this._parts.hostname?c.buildAuthority(this._parts):"";c.parseAuthority(a,this._parts);this.build(!b); -return this};f.userinfo=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.username)return"";var e=c.buildUserinfo(this._parts);return e.substring(0,e.length-1)}"@"!==a[a.length-1]&&(a+="@");c.parseUserinfo(a,this._parts);this.build(!b);return this};f.subdomain=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0, -e)||""}e=this._parts.hostname.length-this.domain().length;e=this._parts.hostname.substring(0,e);e=RegExp("^"+j(e));a&&"."!==a[a.length-1]&&(a+=".");a&&c.ensureValidHostname(a);this._parts.hostname=this._parts.hostname.replace(e,a);this.build(!b);return this};f.domain=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return"";var e=this._parts.hostname.match(/\./g);if(e&&2>e.length)return this._parts.hostname;e=this._parts.hostname.length- -this.tld(b).length-1;e=this._parts.hostname.lastIndexOf(".",e-1)+1;return this._parts.hostname.substring(e)||""}if(!a)throw new TypeError("cannot set domain empty");c.ensureValidHostname(a);!this._parts.hostname||this.is("IP")?this._parts.hostname=a:(e=RegExp(j(this.domain())+"$"),this._parts.hostname=this._parts.hostname.replace(e,a));this.build(!b);return this};f.tld=function(a,b){if(this._parts.urn)return a===d?"":this;"boolean"===typeof a&&(b=a,a=d);if(a===d){if(!this._parts.hostname||this.is("IP"))return""; -var c=this._parts.hostname.lastIndexOf("."),c=this._parts.hostname.substring(c+1);return!0!==b&&g&&g.list[c.toLowerCase()]?g.get(this._parts.hostname)||c:c}if(a)if(a.match(/[^a-zA-Z0-9-]/))if(g&&g.is(a))c=RegExp(j(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(c,a);else throw new TypeError("TLD '"+a+"' contains characters other than [A-Z0-9]");else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");c=RegExp(j(this.tld())+"$"); -this._parts.hostname=this._parts.hostname.replace(c,a)}else throw new TypeError("cannot set TLD empty");this.build(!b);return this};f.directory=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var e=this._parts.path.length-this.filename().length-1,e=this._parts.path.substring(0,e)||(this._parts.hostname?"/":"");return a?c.decodePath(e):e}e=this._parts.path.length-this.filename().length; -e=this._parts.path.substring(0,e);e=RegExp("^"+j(e));this.is("relative")||(a||(a="/"),"/"!==a[0]&&(a="/"+a));a&&"/"!==a[a.length-1]&&(a+="/");a=c.recodePath(a);this._parts.path=this._parts.path.replace(e,a);this.build(!b);return this};f.filename=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this._parts.path.lastIndexOf("/"),e=this._parts.path.substring(e+1);return a?c.decodePathSegment(e):e}e=!1;"/"===a[0]&&(a=a.substring(1)); -a.match(/\.?\//)&&(e=!0);var k=RegExp(j(this.filename())+"$"),a=c.recodePath(a);this._parts.path=this._parts.path.replace(k,a);e?this.normalizePath(b):this.build(!b);return this};f.suffix=function(a,b){if(this._parts.urn)return a===d?"":this;if(a===d||!0===a){if(!this._parts.path||"/"===this._parts.path)return"";var e=this.filename(),k=e.lastIndexOf(".");if(-1===k)return"";e=e.substring(k+1);e=/^[a-z0-9%]+$/i.test(e)?e:"";return a?c.decodePathSegment(e):e}"."===a[0]&&(a=a.substring(1));if(e=this.suffix())k= -a?RegExp(j(e)+"$"):RegExp(j("."+e)+"$");else{if(!a)return this;this._parts.path+="."+c.recodePath(a)}k&&(a=c.recodePath(a),this._parts.path=this._parts.path.replace(k,a));this.build(!b);return this};f.segment=function(a,b,c){var k=this._parts.urn?":":"/",g=this.path(),f="/"===g.substring(0,1),g=g.split(k);"number"!==typeof a&&(c=b,b=a,a=d);if(a!==d&&"number"!==typeof a)throw Error("Bad segment '"+a+"', must be 0-based integer");f&&g.shift();0>a&&(a=Math.max(g.length+a,0));if(b===d)return a===d?g: -g[a];if(null===a||g[a]===d)if(h(b))g=b;else{if(b||"string"===typeof b&&b.length)""===g[g.length-1]?g[g.length-1]=b:g.push(b)}else b||"string"===typeof b&&b.length?g[a]=b:g.splice(a,1);f&&g.unshift("");return this.path(g.join(k),c)};var r=f.query;f.query=function(a,b){return!0===a?c.parseQuery(this._parts.query):a!==d&&"string"!==typeof a?(this._parts.query=c.buildQuery(a),this.build(!b),this):r.call(this,a,b)};f.addQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.addQuery(d,a,b);this._parts.query= -c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.removeQuery=function(a,b,e){var d=c.parseQuery(this._parts.query);c.removeQuery(d,a,b);this._parts.query=c.buildQuery(d);"string"!==typeof a&&(e=b);this.build(!e);return this};f.addSearch=f.addQuery;f.removeSearch=f.removeQuery;f.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()}; -f.normalizeProtocol=function(a){"string"===typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!a));return this};f.normalizeHostname=function(a){this._parts.hostname&&(this.is("IDN")&&s?this._parts.hostname=s.toASCII(this._parts.hostname):this.is("IPv6")&&u&&(this._parts.hostname=u.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!a));return this};f.normalizePort=function(a){"string"===typeof this._parts.protocol&& -this._parts.port===c.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!a));return this};f.normalizePath=function(a){if(this._parts.urn||!this._parts.path||"/"===this._parts.path)return this;var b,e,d=this._parts.path,g,f;"/"!==d[0]&&("."===d[0]&&(e=d.substring(0,d.indexOf("/"))),b=!0,d="/"+d);for(d=d.replace(/(\/(\.\/)+)|\/{2,}/g,"/");;){g=d.indexOf("/../");if(-1===g)break;else if(0===g){d=d.substring(3);break}f=d.substring(0,g).lastIndexOf("/");-1===f&&(f=g);d=d.substring(0, -f)+d.substring(g+3)}b&&this.is("relative")&&(d=e?e+d:d.substring(1));d=c.recodePath(d);this._parts.path=d;this.build(!a);return this};f.normalizePathname=f.normalizePath;f.normalizeQuery=function(a){"string"===typeof this._parts.query&&(this._parts.query.length?this.query(c.parseQuery(this._parts.query)):this._parts.query=null,this.build(!a));return this};f.normalizeFragment=function(a){this._parts.fragment||(this._parts.fragment=null,this.build(!a));return this};f.normalizeSearch=f.normalizeQuery; -f.normalizeHash=f.normalizeFragment;f.iso8859=function(){var a=c.encode,b=c.decode;c.encode=escape;c.decode=decodeURIComponent;this.normalize();c.encode=a;c.decode=b;return this};f.unicode=function(){var a=c.encode,b=c.decode;c.encode=i;c.decode=unescape;this.normalize();c.encode=a;c.decode=b;return this};f.readable=function(){var a=this.clone();a.username("").password("").normalize();var b="";a._parts.protocol&&(b+=a._parts.protocol+"://");a._parts.hostname&&(a.is("punycode")&&s?(b+=s.toUnicode(a._parts.hostname), -a._parts.port&&(b+=":"+a._parts.port)):b+=a.host());a._parts.hostname&&(a._parts.path&&"/"!==a._parts.path[0])&&(b+="/");b+=a.path(!0);if(a._parts.query){for(var e="",g=0,f=a._parts.query.split("&"),m=f.length;gg2tvScP?iPwb@Tx;rZ?YAS+2AY~Gf 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 diff --git a/WebKit/enc-base64-min.js b/WebKit/enc-base64-min.js deleted file mode 100644 index acff43d..0000000 --- a/WebKit/enc-base64-min.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -CryptoJS v3.0.2 -code.google.com/p/crypto-js -(c) 2009-2012 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -(function(){var h=CryptoJS,i=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();for(var b=[],a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); -for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/WebKit/even-bg.png b/WebKit/even-bg.png deleted file mode 100644 index 3166a2bb0d7818f7146ecd056d63f3479cad85fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3<=Wa({UTT+KPA0aYq{x;TbZ+)7GFOkm?sU~_9=NJ>b5z`|j`#>N)L#>b|{X2!s{ok5SW SusR#4oWax8&t;ucLK6U`6Fn^e diff --git a/WebKit/hmac-helper.js b/WebKit/hmac-helper.js deleted file mode 100644 index f3ad041..0000000 --- a/WebKit/hmac-helper.js +++ /dev/null @@ -1,122 +0,0 @@ -// its different for app authentication and user authentication: -// for apps its id: mac_key_id and secret: mac_key, -// for users its id: access_token and secret:mac_key - -function getURL(url, http_method, callback, data, auth_header) { - $.ajax({ - beforeSend: function(xhr) { - if (data) xhr.setRequestHeader("Content-Length", data.length); - - if (auth_header) { // if is_set? auth_header - xhr.setRequestHeader("Authorization", auth_header); - } else { - var user_access_token = controller.stringForKey_("user_access_token"); - if (auth_header !== false && user_access_token) { - auth_header = makeAuthHeader( - url, - http_method, - controller.stringForKey_("user_mac_key"), - user_access_token - ) - xhr.setRequestHeader("Authorization", auth_header); - } - } - }, - url: url, - accepts: "application/vnd.tent.v0+json", - contentType: "application/vnd.tent.v0+json", - type: http_method, - complete: callback, - data: data, - processData: false, - error: function(xhr, ajaxOptions, thrownError) { - alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); - } - }); -} - -function makeAuthHeader(url, http_method, mac_key, mac_key_id) { - - url = URI(url); - var nonce = makeid(8); - var time_stamp = parseInt((new Date).getTime() / 1000, 10); - - var port = url.port(); - if (!port) { - port = url.protocol() == "https" ? "443" : "80"; - } - - var normalizedRequestString = "" - + time_stamp + '\n' - + nonce + '\n' - + http_method + '\n' - + url.path() + url.search() + url.hash() + '\n' - + url.hostname() + '\n' - + port + '\n' - + '\n' ; - - var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); - hmac.update(normalizedRequestString); - var hash = hmac.finalize(); - var mac = hash.toString(CryptoJS.enc.Base64); - - return 'MAC id="' + mac_key_id + - '", ts="' + time_stamp + - '", nonce="' + nonce + - '", mac="' + mac + '"'; -} - -function makeid(len) { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for( var i=0; i < len; i++ ) - text += possible.charAt(Math.floor(Math.random() * possible.length)); - - return text; -} - -function findProfileURL(entity, callback) { - $.ajax({ - url: entity, - type: "HEAD", - complete: function(resp) { - if(resp) { - var headers = resp.getAllResponseHeaders(); - var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! - var ret = headers.match(regex); - var profile_url = null; - if(ret && ret.length > 1) { - var profile_url = ret[1]; - if (profile_url == "/profile") { - profile_url = entity + "/profile"; - } - } - - if (profile_url) { - callback(profile_url); - } - } - }, - error: function(xhr, ajaxOptions, thrownError) { - alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); - } - }); -} - -function mkApiRootPath(path) { - var api_root = controller.stringForKey_("api_root"); - if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { - api_root += "/"; - } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { - api_root = api_root.substring(0, api_root.length -1); - } - return api_root + path; -} - -function debug(string) { - if (typeof string == "Object") { - string = JSON.stirngify(string); - } - alert("DEBUG: " + string); -} \ No newline at end of file diff --git a/Mac/WebKit/default-avatar.png b/WebKit/img/default-avatar.png similarity index 100% rename from Mac/WebKit/default-avatar.png rename to WebKit/img/default-avatar.png diff --git a/Mac/WebKit/delete.png b/WebKit/img/delete.png similarity index 100% rename from Mac/WebKit/delete.png rename to WebKit/img/delete.png diff --git a/Mac/WebKit/even-bg.png b/WebKit/img/even-bg.png similarity index 100% rename from Mac/WebKit/even-bg.png rename to WebKit/img/even-bg.png diff --git a/Mac/WebKit/odd-bg.png b/WebKit/img/odd-bg.png similarity index 100% rename from Mac/WebKit/odd-bg.png rename to WebKit/img/odd-bg.png diff --git a/Mac/WebKit/pin.png b/WebKit/img/pin.png similarity index 100% rename from Mac/WebKit/pin.png rename to WebKit/img/pin.png diff --git a/Mac/WebKit/sprite-icons.png b/WebKit/img/sprite-icons.png similarity index 100% rename from Mac/WebKit/sprite-icons.png rename to WebKit/img/sprite-icons.png diff --git a/WebKit/index.html b/WebKit/index.html index 78fb207..7a1c7ba 100644 --- a/WebKit/index.html +++ b/WebKit/index.html @@ -3,15 +3,8 @@ Tentia - - - - - - - - - + + diff --git a/WebKit/index_oauth.html b/WebKit/index_oauth.html deleted file mode 100644 index ccdb02c..0000000 --- a/WebKit/index_oauth.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Tentia - - - - - - - - - - - - \ No newline at end of file diff --git a/WebKit/jQuery-Plugins.js b/WebKit/jQuery-Plugins.js deleted file mode 100644 index c865d25..0000000 --- a/WebKit/jQuery-Plugins.js +++ /dev/null @@ -1,330 +0,0 @@ - -(function ($) { - $.format = (function () { - - var parseMonth = function(value){ - - switch(value){ - case "Jan": - return "01"; - break; - case "Feb": - return "02"; - break; - case "Mar": - return "03"; - break; - case "Apr": - return "04"; - break; - case "May": - return "05"; - break; - case "Jun": - return "06"; - break; - case "Jul": - return "07"; - break; - case "Aug": - return "08"; - break; - case "Sep": - return "09"; - break; - case "Oct": - return "10"; - break; - case "Nov": - return "11"; - break; - case "Dec": - return "12"; - break; - default: - return value; - } - }; - - var parseTime = function(value){ - var retValue = value; - if(retValue.indexOf(".") != -1){ - retValue = retValue.substring(0, retValue.indexOf(".")); - } - - var values3 = retValue.split(":"); - - if(values3.length == 3){ - hour = values3[0]; - minute = values3[1]; - second = values3[2]; - - return { - time: retValue, - hour: hour, - minute: minute, - second: second - }; - } else { - return { - time: "", - hour: "", - minute: "", - second: "" - }; - } - }; - - return { - date: function(value, format){ - //value = new java.util.Date() - //2009-12-18 10:54:50.546 - try{ - var values = value.split(" "); - var year = null; - var month = null; - var dayOfMonth = null; - var time = null; //json, time, hour, minute, second - - switch(values.length){ - case 6://Wed Jan 13 10:43:41 CET 2010 - year = values[5]; - month = parseMonth(values[1]); - dayOfMonth = values[2]; - time = parseTime(values[3]); - break; - case 2://2009-12-18 10:54:50.546 - var values2 = values[0].split("-"); - year = values2[0]; - month = values2[1]; - dayOfMonth = values2[2]; - time = parseTime(values[1]); - break; - default: - return value; - } - - - var pattern = ""; - var retValue = ""; - - for(i = 0; i < format.length; i++){ - var currentPattern = format.charAt(i); - pattern += currentPattern; - switch(pattern){ - case "dd": - retValue += dayOfMonth; - pattern = ""; - break; - case "MM": - retValue += month; - pattern = ""; - break; - case "yyyy": - retValue += year; - pattern = ""; - break; - case "HH": - retValue += time.hour; - pattern = ""; - break; - case "hh": - retValue += time.hour; - pattern = ""; - break; - case "mm": - retValue += time.minute; - pattern = ""; - break; - case "ss": - retValue += time.second; - pattern = ""; - break; - case " ": - retValue += currentPattern; - pattern = ""; - break; - case "/": - retValue += currentPattern; - pattern = ""; - break; - case ":": - retValue += currentPattern; - pattern = ""; - break; - default: - if(pattern.length == 2 && pattern.indexOf("y") != 0){ - retValue += pattern.substring(0, 1); - pattern = pattern.substring(1, 2); - } else if((pattern.length == 3 && pattern.indexOf("yyy") == -1)){ - pattern = ""; - } - } - } - return retValue; - } catch(e) { - return value; - } - } - }; - })(); -}(jQuery)); - - -$(document).ready(function() { - $(".shortDateFormat").each(function(idx, elem) { - if ($(elem).is(":input")){ - $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy')); - } else { - $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy')); - } - }); - $(".longDateFormat").each(function(idx, elem) { - if ($(elem).is(":input")){ - $(elem).val($.format.date($(elem).val(), 'dd/MM/yyyy hh:mm:ss')); - } else { - $(elem).text($.format.date($(elem).text(), 'dd/MM/yyyy hh:mm:ss')); - } - }); -}); - -/* - * timeago: a jQuery plugin, version: 0.8.2 (2010-02-16) - * @requires jQuery v1.2.3 or later - * - * Timeago is a jQuery plugin that makes it easy to support automatically - * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). - * - * For usage and examples, visit: - * http://timeago.yarp.com/ - * - * Licensed under the MIT: - * http://www.opensource.org/licenses/mit-license.php - * - * Copyright (c) 2008-2010, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org) - */ -(function($) { - $.timeago = function(timestamp) { - if (timestamp instanceof Date) return inWords(timestamp); - else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp)); - else return inWords($.timeago.datetime(timestamp)); - }; - var $t = $.timeago; - - $.extend($.timeago, { - settings: { - refreshMillis: 60000, - allowFuture: false, - strings: { - prefixAgo: null, - prefixFromNow: null, - suffixAgo: "ago", - suffixFromNow: "from now", - ago: null, // DEPRECATED, use suffixAgo - fromNow: null, // DEPRECATED, use suffixFromNow - seconds: "less than a minute", - minute: "about a minute", - minutes: "%d minutes", - hour: "about an hour", - hours: "about %d hours", - day: "a day", - days: "%d days", - month: "about a month", - months: "%d months", - year: "about a year", - years: "%d years" - } - }, - inWords: function(distanceMillis) { - var $l = this.settings.strings; - var prefix = $l.prefixAgo; - var suffix = $l.suffixAgo || $l.ago; - if (this.settings.allowFuture) { - if (distanceMillis < 0) { - prefix = $l.prefixFromNow; - suffix = $l.suffixFromNow || $l.fromNow; - } - distanceMillis = Math.abs(distanceMillis); - } - - var seconds = distanceMillis / 1000; - var minutes = seconds / 60; - var hours = minutes / 60; - var days = hours / 24; - var years = days / 365; - - var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || - seconds < 90 && substitute($l.minute, 1) || - minutes < 45 && substitute($l.minutes, Math.round(minutes)) || - minutes < 90 && substitute($l.hour, 1) || - hours < 24 && substitute($l.hours, Math.round(hours)) || - hours < 48 && substitute($l.day, 1) || - days < 30 && substitute($l.days, Math.floor(days)) || - days < 60 && substitute($l.month, 1) || - days < 365 && substitute($l.months, Math.floor(days / 30)) || - years < 2 && substitute($l.year, 1) || - substitute($l.years, Math.floor(years)); - - return $.trim([prefix, words, suffix].join(" ")); - }, - parse: function(iso8601) { - var s = $.trim(iso8601); - s = s.replace(/-/,"/").replace(/-/,"/"); - s = s.replace(/T/," ").replace(/Z/," UTC"); - s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400 - return new Date(s); - }, - datetime: function(elem) { - // jQuery's `is()` doesn't play well with HTML5 in IE - var isTime = $(elem).get(0).tagName.toLowerCase() == "time"; // $(elem).is("time"); - var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title"); - return $t.parse(iso8601); - } - }); - - $.fn.timeago = function() { - var self = this; - self.each(refresh); - - var $s = $t.settings; - if ($s.refreshMillis > 0) { - setInterval(function() { self.each(refresh); }, $s.refreshMillis); - } - return self; - }; - - function refresh() { - var data = prepareData(this); - if (!isNaN(data.datetime)) { - $(this).text(inWords(data.datetime)); - } - return this; - } - - function prepareData(element) { - element = $(element); - if (!element.data("timeago")) { - element.data("timeago", { datetime: $t.datetime(element) }); - var text = $.trim(element.text()); - if (text.length > 0) element.attr("title", text); - } - return element.data("timeago"); - } - - function inWords(date) { - return $t.inWords(distance(date)); - } - - function distance(date) { - return (new Date().getTime() - date.getTime()); - } - - function substitute(stringOrFunction, value) { - var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction; - return string.replace(/%d/i, value); - } - - // fix for IE6 suckage - document.createElement("abbr"); - document.createElement("time"); -})(jQuery); diff --git a/WebKit/jQuery.js b/WebKit/jQuery.js deleted file mode 100644 index 7c24308..0000000 --- a/WebKit/jQuery.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(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,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/WebKit/odd-bg.png b/WebKit/odd-bg.png deleted file mode 100644 index b822a14df86acfd140737763565850c86d370e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrE!3<<`t^?=KfZqb`svfBpFe+o`}Xa_hYxSxzWx6F z`%|K;}o-U3d6}OTS5)&9W6xh@n7?K_&BrtOru(`2?v8AzesB&c_Z3QZ3 N@O1TaS?83{1ORvxJVO8g diff --git a/WebKit/pin.png b/WebKit/pin.png deleted file mode 100644 index 32ce008232e849db86e1911ce8d2a5aee8261ea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmV-+0*U>JP)WdKHUATc>0L}hv)GB7YRATlsIGBY|eHy|r8F)%QJGeoxl000McNliru z(*hb78y;6mW3~VQ010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00GWP zL_t(|+NF}sYZE~jhkvu#-K0y4ZbM6Zup&hfk=BD+FQVYZo1jP!ir`6d_Tr(Z{u^Gj zw@Q1Gcu+)zAhb|42oa)SV@TN4vb(c8&3^AXffPJUHV0pL4m$jin60FvB 0) { + for(var i = statuses.length-1, c=0; i>=c; --i) { + + var status = statuses[i]; + this.since_id = status.id; + this.since_id_entity = status.entity; + + if(this.body.childNodes.length > 0) { + if(this.body.childNodes.length > this.max_length) { + this.body.removeChild(this.body.lastChild); + } + this.body.insertBefore(this.getStatusDOMElement(status), this.body.firstChild); + } else { + this.body.appendChild(this.getStatusDOMElement(status)); + } + } + } + } + + Timeline.prototype.getNewData = function(add_to_search) { + + add_to_search = add_to_search || {}; + + var those = this; + var url = URI(Paths.mkApiRootPath("/posts")); + url.addSearch("post_types", "https://tent.io/types/post/status/v0.1.0"); + url.addSearch("limit", this.max_length); + if(this.since_id) { + url.addSearch("since_id", this.since_id); + url.addSearch("since_id_entity", this.since_id_entity); + } + + for (key in add_to_search) { + url.addSearch(key, add_to_search[key]); + } + + var http_method = "GET"; + var callback = function(resp) { + + try { + var json = JSON.parse(resp.responseText) + } catch (e) { + //alert(resp.responseText); + alert(url + " JSON parse error"); + throw e; + } + + those.newStatus(json); + } + + var data = null; + + if (HostApp.stringForKey("user_access_token")) { + Paths.getURL(url.toString(), http_method, callback, data); // FIXME: error callback + } + } + + Timeline.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity) { + var _this = this; + var callback = function(data) { _this.getNewData(); } + Core.prototype.sendNewMessage.call(this, content, in_reply_to_status_id, in_reply_to_entity, callback); + } + + Timeline.prototype.foo = function(a) { + return a; + } + + return Timeline; + +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js new file mode 100644 index 0000000..4d3cf82 --- /dev/null +++ b/WebKit/scripts/helper/Core.js @@ -0,0 +1,358 @@ +define([ + "jquery", + "helper/Paths", + "lib/URI", + "lib/vendor/jquery.plugins" +], + +function(jQuery, Paths, URI) { + + function Core() { + + } + + Core.prototype.getTemplate = function() { + + if(this.template == "undefined") { + return jQuery.extend(true, {}, this.template); + } + + var a = document.createElement("a"); + + var item = document.createElement("li"); + + var reply_to = a.cloneNode(); + reply_to.className = "reply_to" + reply_to.innerText = " "; + reply_to.href = "#"; + item.appendChild(reply_to); + + var retweet = a.cloneNode(); + retweet.className = "retweet"; + retweet.innerText = " "; + retweet.href = "#"; + // item.appendChild(retweet); // FIXME + + + var image = document.createElement("img"); + image.className = "image"; + image.src = "img/default-avatar.png"; + image.onmousedown = function(e) { e.preventDefault(); }; + item.appendChild(image); + + var image_username = a.cloneNode(); + image.appendChild(image_username); + + var data = document.createElement("div"); + data.className = "data"; + item.appendChild(data); + + var head = document.createElement("h1"); + data.appendChild(head); + + var username = a.cloneNode(); + head.appendChild(username); + + var in_reply = document.createElement("span"); + in_reply.className = "reply"; + head.appendChild(in_reply); + + var space = document.createTextNode(" "); + head.appendChild(space); + + var geo = document.createElement("a"); + geo.style.display = "none"; + head.appendChild(geo); + + var pin = document.createElement("img"); + pin.src = "img/pin.png"; + pin.alt = "Map link"; + geo.appendChild(pin); + + var in_reply_text = document.createTextNode(" in reply to "); + in_reply.appendChild(in_reply_text) + + var in_reply_a = a.cloneNode(); + in_reply.appendChild(in_reply_a); + + var message = document.createElement("p"); + message.className = "message"; + data.appendChild(message); + + var images = document.createElement("p") + images.className = "images"; + data.appendChild(images); + + var date = message.cloneNode(); + date.className = "date"; + data.appendChild(date); + + var ago = a.cloneNode(); + date.appendChild(ago); + + var from = document.createTextNode(" from "); + date.appendChild(from) + + var source = document.createElement("a"); + source.className = "source"; + date.appendChild(source) + + this.template = { + item: item, + reply_to: reply_to, + retweet: retweet, + image: image, + username: username, + in_reply: in_reply_a, + message: message, + ago: ago, + source: source, + geo: geo, + images: images + } + + return jQuery.extend(true, {}, this.template); + } + + Core.prototype.getStatusDOMElement = function(status) { + + var _this = this; + + var template = this.getTemplate(); + + + template.reply_to.onclick = function() { + var mentions = []; + for (var i = 0; i < status.mentions.length; i++) { + var mention = status.mentions[i]; + if(mention.entity != HostApp.stringForKey("entity")) + mentions.push(mention); + } + this.replyTo(status.entity, status.id, mentions); + return false; + } + + //template.retweet.onclick = function() { template.retweet.className = "hidden"; _this.retweet(status.id_str, template.item); return false; } + + template.username.innerText = status.entity; + template.username.href = status.entity; // FIXME open profile + + Paths.findProfileURL(status.entity, function(profile_url) { + if (profile_url) { + Paths.getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + template.username.title = template.username.innerText; + template.username.innerText = basic.name; + } + if(basic.avatar_url) { + template.image.onerror = function() { template.image.src = 'img/default-avatar.png' }; + template.image.src = basic.avatar_url; + } + } + }, null, false); // do not send auth-headers + } + }); + + template.in_reply.parentNode.className = "hidden"; + + template.message.innerHTML = this.replaceUsernamesWithLinks( + this.replaceURLWithHTMLLinks(status.content.text, status.entities, template.message) + ); + + this.findMentions(template.message, status.mentions); + + var time = document.createElement("abbr"); + time.innerText = this.ISODateString(new Date(status.published_at * 1000)); + time.title = time.innerText; + time.className = "timeago"; + jQuery(time).timeago(); + template.ago.appendChild(time); + + // {"type":"Point","coordinates":[57.10803113,12.25854746]} + if (status.content && status.content.location && status.content.location.type == "Point") { + template.geo.href = "http://maps.google.com/maps?q=" + status.content.location.coordinates[0] + "," + status.content.location.coordinates[1]; + template.geo.style.display = ""; + } + + template.source.href = status.app.url; + template.source.innerHTML = status.app.name; + template.source.title = status.app.url; + + return template.item; + } + + Core.prototype.sendNewMessage = function(content, in_reply_to_status_id, in_reply_to_entity, callback) { + + var url = URI(Paths.mkApiRootPath("/posts")); + + var http_method = "POST"; + + var data = { + "type": "https://tent.io/types/post/status/v0.1.0", + "published_at": (new Date().getTime() / 1000), + "permissions": { + "public": true + }, + "content": { + "text": content, + }, + }; + + var mentions = this.parseMentions(content, in_reply_to_status_id, in_reply_to_entity); + if (mentions.length > 0) { + data["mentions"] = mentions; + } + + Paths.getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback + } + + + Core.prototype.logout = function() { + this.body.innerHTML = ""; + } + + + // Helper functions + + Core.prototype.replaceShortened = function(url, message_node) { + var api = "http://api.bitly.com"; + if(url.startsWith("http://j.mp/")) { + api = "http://api.j.mp"; + } + + var api_url = api + "/v3/expand?format=json&apiKey=R_4fc2a1aa461d076556016390fa6400f6&login=twittia&shortUrl=" + url; // FIXME: new api key + + jQuery.ajax({ + url: api_url, + success: function(data) { + var new_url = data.data.expand[0].long_url; + if (new_url) { + var regex = new RegExp(url, "g"); + message_node.innerHTML = message_node.innerHTML.replace(regex, new_url); + } + }, + error:function (xhr, ajaxOptions, thrownError) { + alert(xhr.status); + alert(thrownError); + } + }); + } + + Core.prototype.findMentions = function(node, mentions) { + var text = node.innerHTML; + var mentions_in_text = []; + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var name = res[i]; + var e = name.substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + for (var j = 0; j < mentions.length; j++) { + var m = mentions[j]; + if(m.entity.startsWith(e)) { + mentions_in_text.push({ + entity: m.entity, + text: name + }); + } + } + } + } + + for (var i = 0; i < mentions_in_text.length; i++) { + var mention = mentions_in_text[i]; + + (function(mention) { // need this closure + Paths.findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + Paths.getURL(profile_url, "GET", function(resp) { + var profile = JSON.parse(resp.responseText); + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + var new_text = node.innerHTML.replace( + mention.text, + "" + + basic.name + + "" + ); + node.innerHTML = new_text; + } + } + }, null, false); // do not send auth-headers + } + }); + })(mention); + } + } + + Core.prototype.parseMentions = function(text, post_id, entity) { + var mentions = []; + + if (post_id && entity) { + mentions.push({ + post: post_id, + entity: entity + }) + } + + var res = text.match(/(\^\S+)/ig); + + if (res) { + for (var i = 0; i < res.length; i++) { + var e = res[i].substring(1); + if (e.substring(0,7) != "http://" && e.substring(0,8) != "https://") { + e = "https://" + e; + } + if (e != entity) { + mentions.push({entity:e}); + } + } + } + + return mentions; + } + + Core.prototype.ISODateString = function(d){ + function pad(n){return n<10 ? '0'+n : n} + return d.getUTCFullYear()+'-' + + pad(d.getUTCMonth()+1)+'-' + + pad(d.getUTCDate())+'T' + + pad(d.getUTCHours())+':' + + pad(d.getUTCMinutes())+':' + + pad(d.getUTCSeconds())+'Z' + } + + Core.prototype.replaceURLWithHTMLLinks = function(text, entities, message_node) { + var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; + return text.replace(exp, "$1"); + } + + Core.prototype.replaceUsernamesWithLinks = function(text, mentions) { + return text; // FIXME! + var username = /(^|\s)(\^)(\w+)/ig; + var hash = /(^|\s)(#)(\w+)/ig; + text = text.replace(username, "$1$2$3"); + return text.replace(hash, "$1$2$3"); + } + + Core.prototype.replyTo = function(entity, status_id, mentions) { + var string = "^" + entity.replace("https://", "") + " "; + for (var i = 0; i < mentions.length; i++) { + var e = mentions[i].entity.replace("https://", ""); + if(string.indexOf(e) == -1) string += "^" + e + " "; + } + controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); + } + + return Core; + +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/Hmac.js b/WebKit/scripts/helper/Hmac.js new file mode 100644 index 0000000..b18a5e8 --- /dev/null +++ b/WebKit/scripts/helper/Hmac.js @@ -0,0 +1,56 @@ +define([ + "lib/URI", + "lib/CryptoJS" +], + +function(URI, CryptoJS) { + + var Hmac = {}; + + Hmac.makeAuthHeader = function(url, http_method, mac_key, mac_key_id) { + + url = URI(url); + var nonce = Hmac.makeid(8); + var time_stamp = parseInt((new Date).getTime() / 1000, 10); + + var port = url.port(); + if (!port) { + port = url.protocol() == "https" ? "443" : "80"; + } + + var normalizedRequestString = "" + + time_stamp + '\n' + + nonce + '\n' + + http_method + '\n' + + url.path() + url.search() + url.hash() + '\n' + + url.hostname() + '\n' + + port + '\n' + + '\n' ; + + var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, mac_key); + hmac.update(normalizedRequestString); + var hash = hmac.finalize(); + var mac = hash.toString(CryptoJS.enc.Base64); + + return 'MAC id="' + mac_key_id + + '", ts="' + time_stamp + + '", nonce="' + nonce + + '", mac="' + mac + '"'; + } + + Hmac.makeid = function(len) { + var text = ""; + var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + for( var i=0; i < len; i++ ) + text += possible.charAt(Math.floor(Math.random() * possible.length)); + + return text; + } + + return Hmac; +}); + +// its different for app authentication and user authentication: +// for apps its id: mac_key_id and secret: mac_key, +// for users its id: access_token and secret:mac_key diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js new file mode 100644 index 0000000..a5c864b --- /dev/null +++ b/WebKit/scripts/helper/HostApp.js @@ -0,0 +1,51 @@ +define(function() { + + var HostApp = {}; + + HostApp.setStringForKey = function(string, key) { + if (OS_TYPE == "mac") { + controller.setString_forKey_(string, key); + } else { + controller.setStringForKey(string, key); + } + } + + HostApp.stringForKey = function(key) { + if (OS_TYPE == "mac") { + return controller.stringForKey_(key); + } else { + return controller.stringForKey(key); + } + } + + HostApp.openURL = function(url) { + if (OS_TYPE == "mac") { + controller.openURL_(url); + } else { + controller.openURL(URL); + } + } + + HostApp.loggedIn = function() { + controller.loggedIn(); + } + + HostApp.logout = function() { + if (OS_TYPE == "mac") { + controller.logout_(self); + } else { + controller.logout(self); + } + } + + HostApp.unreadMentions = function(i) { + if (OS_TYPE == "mac") { + controller.unreadMentions_(i); + } else { + controller.unreadMentions(i); + } + } + + return HostApp; + +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/Paths.js b/WebKit/scripts/helper/Paths.js new file mode 100644 index 0000000..43b27e7 --- /dev/null +++ b/WebKit/scripts/helper/Paths.js @@ -0,0 +1,95 @@ +define([ + "jquery", + "helper/HostApp", + "helper/Hmac" +], + +function(jQuery, HostApp, Hmac) { + var Paths = {}; + + Paths.getUrlVars = function(url) { + var vars = [], hash; + if(url.indexOf("#") > -1) url = url.slice(0, url.indexOf("#")); + var hashes = url.slice(url.indexOf('?') + 1).split('&'); + for(var i = 0; i < hashes.length; i++) + { + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; + } + + Paths.getURL = function(url, http_method, callback, data, auth_header) { + jQuery.ajax({ + beforeSend: function(xhr) { + if (data) xhr.setRequestHeader("Content-Length", data.length); + + if (auth_header) { // if is_set? auth_header + xhr.setRequestHeader("Authorization", auth_header); + } else { + var user_access_token = HostApp.stringForKey("user_access_token"); + if (auth_header !== false && user_access_token) { + auth_header = Hmac.makeAuthHeader( + url, + http_method, + HostApp.stringForKey("user_mac_key"), + user_access_token + ) + xhr.setRequestHeader("Authorization", auth_header); + } + } + }, + url: url, + accepts: "application/vnd.tent.v0+json", + contentType: "application/vnd.tent.v0+json", + type: http_method, + complete: callback, + data: data, + processData: false, + error: function(xhr, ajaxOptions, thrownError) { + alert("getURL " + xhr.statusText + " " + http_method + " (" + url + "): '" + xhr.responseText + "'"); + } + }); + } + + Paths.findProfileURL = function(entity, callback) { + jQuery.ajax({ + url: entity, + type: "HEAD", + complete: function(resp) { + if(resp) { + var headers = resp.getAllResponseHeaders(); + var regex = /Link: <([^>]*)>; rel="https:\/\/tent.io\/rels\/profile"/; // FIXME: parse it! + var ret = headers.match(regex); + var profile_url = null; + if(ret && ret.length > 1) { + var profile_url = ret[1]; + if (profile_url == "/profile") { + profile_url = entity + "/profile"; + } + } + + if (profile_url) { + callback(profile_url); + } + } + }, + error: function(xhr, ajaxOptions, thrownError) { + alert("findProfileURL " + xhr.statusText + " (" + entity + "): " + xhr.responseText); + } + }); + } + + Paths.mkApiRootPath = function(path) { + var api_root = HostApp.stringForKey("api_root"); + if((api_root.substring(api_root.length - 1, api_root.length) != "/") && (path.substring(0, 1) != "/")) { + api_root += "/"; + } else if((api_root.substring(api_root.length - 1, api_root.length) == "/") && (path.substring(0, 1) == "/")) { + api_root = api_root.substring(0, api_root.length -1); + } + return api_root + path; + } + + return Paths; +}); \ No newline at end of file diff --git a/WebKit/scripts/lib/.DS_Store b/WebKit/scripts/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T04=L-xr)=P+$B8rNwZjvG*8ulUB?WcS0Lve9!Ws!Ts%(>6m zy9Y9}10XHh^$9QoFy#(45Z2OX1U-?`Pus8_2jJ091k2K qlGlksq2BulpdtInkp?ZEMQ2{&*cr+y;@5Iwdn)m[n]=e[f+n]|0;else{var i=m[n-15],p=m[n-2];m[n]=((i<<25|i>>>7)^(i< g=8*e.sigBytes;f[g>>>5]|=128<<24-g%32;f[(g+64>>>9<<4)+15]=b;e.sigBytes=4*f.length;this._process()}});i.SHA256=e._createHelper(l);i.HmacSHA256=e._createHmacHelper(l)})(Math); (function(){var h=CryptoJS,i=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(e,f){e=this._hasher=e.create();"string"==typeof f&&(f=i.parse(f));var h=e.blockSize,k=4*h;f.sigBytes>k&&(f=e.finalize(f));for(var o=this._oKey=f.clone(),m=this._iKey=f.clone(),q=o.words,r=m.words,b=0;b>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var b=b.replace(/\s/g,""),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c)); +for(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/Mac/WebKit/jQuery.js b/WebKit/scripts/lib/vendor/jQuery.js similarity index 100% rename from Mac/WebKit/jQuery.js rename to WebKit/scripts/lib/vendor/jQuery.js diff --git a/Mac/WebKit/jQuery-Plugins.js b/WebKit/scripts/lib/vendor/jQuery.plugins.js similarity index 100% rename from Mac/WebKit/jQuery-Plugins.js rename to WebKit/scripts/lib/vendor/jQuery.plugins.js diff --git a/WebKit/scripts/lib/vendor/require-jquery.js b/WebKit/scripts/lib/vendor/require-jquery.js new file mode 100644 index 0000000..653f6c9 --- /dev/null +++ b/WebKit/scripts/lib/vendor/require-jquery.js @@ -0,0 +1,11421 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.1 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.1', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + aps = ap.slice, + apsp = ap.splice, + isBrowser = !!(typeof window !== 'undefined' && navigator && document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (obj.hasOwnProperty(prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value !== 'string') { + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + //Allow getting a global that expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite and existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + waitSeconds: 7, + baseUrl: './', + paths: {}, + pkgs: {}, + shim: {}, + map: {}, + config: {} + }, + registry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; ary[i]; i += 1) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment, + foundMap, foundI, foundStarMap, starI, + baseParts = baseName && baseName.split('/'), + normalizedBaseParts = baseParts, + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + if (config.pkgs[baseName]) { + //If the baseName is a package name, then just treat it as one + //name to concat the name with. + normalizedBaseParts = baseParts = [baseName]; + } else { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + } + + name = normalizedBaseParts.concat(name.split('/')); + trimDots(name); + + //Some use of packages may use a . path to reference the + //'main' module name, so normalize for that. + pkgConfig = config.pkgs[(pkgName = name[0])]; + name = name.join('/'); + if (pkgConfig && name === pkgName + '/' + pkgConfig.main) { + name = pkgName; + } + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if (applyMap && (baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = config.paths[id]; + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + removeScript(id); + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + context.require([id]); + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = defined[prefix]; + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + normalizedName = normalize(name, parentName, applyMap); + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = registry[id]; + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = registry[id]; + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + getModule(depMap).on(name, fn); + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = registry[id]; + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + //Array splice in the values since the context code has a + //local var ref to defQueue, so cannot just reassign the one + //on context. + apsp.apply(defQueue, + [defQueue.length - 1, 0].concat(globalDefQueue)); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return mod.exports; + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return (config.config && config.config[mod.map.id]) || {}; + }, + exports: defined[mod.map.id] + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = registry[depId]; + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (traced[depId]) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var map, modId, err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(registry, function (mod) { + map = mod.map; + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = undefEvents[map.id] || {}; + this.map = map; + this.shim = config.shim[map.id]; + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks is the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + this.fetch(); + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. + if (this.events.error) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + if (this.map.isDefine) { + //If setting exports via 'module' is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + cjsModule = this.module; + if (cjsModule && + cjsModule.exports !== undefined && + //Make sure it is not already the exports value + cjsModule.exports !== this.exports) { + exports = cjsModule.exports; + } else if (exports === undefined && this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = [this.map.id]; + err.requireType = 'define'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + req.onResourceLoad(context, this.map, this.depMaps); + } + } + + //Clean up + delete registry[id]; + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true, + skipMap: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = registry[normalizedMap.id]; + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + try { + req.exec(text); + } catch (e) { + throw new Error('fromText eval for ' + moduleName + + ' failed: ' + e); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = handlers[depMap.id]; + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', this.errback); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!handlers[id] && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = registry[pluginMap.id]; + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths and packages since they require special processing, + //they are additive. + var pkgs = config.pkgs, + shim = config.shim, + objs = { + paths: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (prop === 'map') { + mixin(config[prop], value, true, true); + } else { + mixin(config[prop], value, true); + } + } else { + config[prop] = value; + } + }); + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if (value.exports && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location; + + pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + location = pkgObj.location; + + //Create a brand new object on pkgs, since currentPackages can + //be passed in again, and config.pkgs is the internal transformed + //state for all package configs. + pkgs[pkgObj.name] = { + name: pkgObj.name, + location: location || pkgObj.name, + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + main: (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, '') + }; + }); + + //Done with modifications, assing packages back to context config + config.pkgs = pkgs; + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || getGlobal(value.exports); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && handlers[deps]) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var index = moduleNamePlusExt.lastIndexOf('.'), + ext = null; + + if (index !== -1) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = registry[id]; + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. parent module is passed in for context, + * used by the optimizer. + */ + enable: function (depMap, parent) { + var mod = registry[depMap.id]; + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = config.shim[moduleName] || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = registry[moduleName]; + + if (!found && !defined[moduleName] && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext) { + var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, + parentPath; + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + pkgs = config.pkgs; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + pkg = pkgs[parentModule]; + parentPath = paths[parentModule]; + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } else if (pkg) { + //If module name is just the package name, then looking + //for the main module. + if (moduleName === pkg.name) { + pkgPath = pkg.location + '/' + pkg.main; + } else { + pkgPath = pkg.location; + } + syms.splice(0, i, pkgPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/\?/.test(url) ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callack function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + return onError(makeError('scripterror', 'Script error', evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = contexts[contextName]; + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = function (err) { + throw err; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEvenListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation that a build has been done so that + //only one script needs to be loaded anyway. This may need to be + //reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = dataMain.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + dataMain = mainScript; + } + + //Strip off any trailing .js since dataMain is now + //like a module name. + dataMain = dataMain.replace(jsSuffixRegExp, ''); + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = []; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps.length && isFunction(callback)) { + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); + }; + + define.amd = { + jQuery: true + }; + + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); +/*! + * jQuery JavaScript Library v1.8.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time) + */ +(function( window, undefined ) { +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + location = window.location, + navigator = window.navigator, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // Save a reference to some core methods + core_push = Array.prototype.push, + core_slice = Array.prototype.slice, + core_indexOf = Array.prototype.indexOf, + core_toString = Object.prototype.toString, + core_hasOwn = Object.prototype.hasOwnProperty, + core_trim = String.prototype.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source, + + // Used for detecting and trimming whitespace + core_rnotwhite = /\S/, + core_rspace = /\s+/, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // The ready event handler and self cleanup method + DOMContentLoaded = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + } else if ( document.readyState === "complete" ) { + // we're here because readyState === "complete" in oldIE + // which is good enough for us to call the dom ready! + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context && context.nodeType ? context.ownerDocument || context : document ); + + // scripts is true for back-compat + selector = jQuery.parseHTML( match[1], doc, true ); + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + this.attr.call( selector, context, true ); + } + + return jQuery.merge( this, selector ); + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.8.2", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ), + "slice", core_slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ core_toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // scripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, scripts ) { + var parsed; + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + scripts = context; + context = 0; + } + context = context || document; + + // Single tag + if ( (parsed = rsingleTag.exec( data )) ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] ); + return jQuery.merge( [], + (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes ); + }, + + parseJSON: function( data ) { + if ( !data || typeof data !== "string") { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && core_rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var name, + i = 0, + length = obj.length, + isObj = length === undefined || jQuery.isFunction( obj ); + + if ( args ) { + if ( isObj ) { + for ( name in obj ) { + if ( callback.apply( obj[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( obj[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in obj ) { + if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var type, + ret = results || []; + + if ( arr != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + type = jQuery.type( arr ); + + if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) { + core_push.call( ret, arr ); + } else { + jQuery.merge( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, + ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, pass ) { + var exec, + bulk = key == null, + i = 0, + length = elems.length; + + // Sets many values + if ( key && typeof key === "object" ) { + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); + } + chainable = 1; + + // Sets one value + } else if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = pass === undefined && jQuery.isFunction( value ); + + if ( bulk ) { + // Bulk operations only iterate when executing function values + if ( exec ) { + exec = fn; + fn = function( elem, key, value ) { + return exec.call( jQuery( elem ), value ); + }; + + // Otherwise they run against the entire set + } else { + fn.call( elems, value ); + fn = null; + } + } + + if ( fn ) { + for (; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + } + + chainable = 1; + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready, 1 ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.split( core_rspace ), function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) { + list.push( arg ); + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + return jQuery.inArray( fn, list ) > -1; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ]( jQuery.isFunction( fn ) ? + function() { + var returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + } : + newDefer[ action ] + ); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] = list.fire + deferred[ tuple[0] ] = list.fire; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + fragment, + eventName, + i, + isSupported, + clickFn, + div = document.createElement("div"); + + // Preliminary tests + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Can't get basic test support + if ( !all || !all.length ) { + return {}; + } + + // First batch of supports tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + 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) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: ( document.compatMode === "CSS1Compat" ), + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", clickFn = function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent("onclick"); + div.detachEvent( "onclick", clickFn ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + input.setAttribute( "checked", "checked" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for ( i in { + submit: true, + change: true, + focusin: true + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Run tests that need a body at doc ready + jQuery(function() { + var container, div, tds, marginDiv, + divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // NOTE: To any future maintainer, we've window.getComputedStyle + // because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // 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 + marginDiv = document.createElement("div"); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + container.style.zoom = 1; + } + + // Null elements to avoid leaks in IE + body.removeChild( container ); + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + fragment.removeChild( div ); + all = a = select = opt = input = fragment = div = null; + + return support; +})(); +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + deletedIds: [], + + // Remove at next major release (1.9/2.0) + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // 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" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attr = elem.attributes; + for ( l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + data = this.triggerHandler( "getData" + part, [ parts[0] ] ); + + // Try to fetch any internally stored data first + if ( data === undefined && elem ) { + data = jQuery.data( elem, key ); + data = dataAttr( elem, key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } + + parts[1] = value; + this.each(function() { + var self = jQuery( this ); + + self.triggerHandler( "setData" + part, parts ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + part, parts ); + }); + }, null, value, arguments.length > 1, null, false ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery.removeData( elem, type + "queue", true ); + jQuery.removeData( elem, key, true ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, fixSpecified, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea|)$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var removes, className, elem, c, cl, i, l; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + if ( (value && typeof value === "string") || value === undefined ) { + removes = ( value || "" ).split( core_rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + if ( elem.nodeType === 1 && elem.className ) { + + className = (" " + elem.className + " ").replace( rclass, " " ); + + // loop over each item in the removal list + for ( c = 0, cl = removes.length; c < cl; c++ ) { + // Remove until there is nothing to remove, + while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) { + className = className.replace( " " + removes[ c ] + " " , " " ); + } + } + elem.className = value ? jQuery.trim( className ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( core_rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9 + attrFn: {}, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, isBool, + i = 0; + + if ( value && elem.nodeType === 1 ) { + + attrNames = value.split( core_rspace ); + + for ( ; i < attrNames.length; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + isBool = rboolean.test( name ); + + // See #9699 for explanation of this approach (setting first, then removal) + // Do not do this for boolean attributes (see #10870) + if ( !isBool ) { + jQuery.attr( elem, name, "" ); + } + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( isBool && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true, + coords: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.value = value + "" ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/, + rhoverHack = /(?:^|\s)hover(\.\S+|)\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var t, tns, type, origType, namespaces, origCount, + j, events, special, eventType, handleObj, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, "events", true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType, + type = event.type || event, + namespaces = []; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + for ( old = elem; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old === (elem.ownerDocument || document) ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related, + handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = core_slice.call( arguments ), + run_all = !event.exclusive && !event.namespace, + special = jQuery.event.special[ event.type ] || {}, + handlerQueue = []; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(event.button && event.type === "click") ) { + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + + // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + selMatch = {}; + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8) + event.metaKey = !!event.metaKey; + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // 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. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 – + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // 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 || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "_submit_attached" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "_submit_attached", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "_change_attached", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { // && selector != null + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var cachedruns, + assertGetIdNotName, + Expr, + getText, + isXML, + contains, + compile, + sortOrder, + hasDuplicate, + outermostContext, + + baseHasDuplicate = true, + strundefined = "undefined", + + expando = ( "sizcache" + Math.random() ).replace( ".", "" ), + + Token = String, + document = window.document, + docElem = document.documentElement, + dirruns = 0, + done = 0, + pop = [].pop, + push = [].push, + slice = [].slice, + // Use a stripped-down indexOf if a native one is unavailable + indexOf = [].indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + // Augment a function for special use by Sizzle + markFunction = function( fn, value ) { + fn[ expando ] = value == null || value; + return fn; + }, + + createCache = function() { + var cache = {}, + keys = []; + + return markFunction(function( key, value ) { + // Only keep the most recent entries + if ( keys.push( key ) > Expr.cacheLength ) { + delete cache[ keys.shift() ]; + } + + return (cache[ key ] = value); + }, cache ); + }, + + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // Regex + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments not in parens/brackets, + // then attribute selectors and non-pseudos (denoted by :), + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", + + // For matchExpr.POS and matchExpr.needsContext + pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, + + rnot = /^:not/, + rsibling = /[\x20\t\r\n\f]*[+~]/, + rendsWithNot = /:not\($/, + + rheader = /h\d/i, + rinputs = /input|select|textarea|button/i, + + rbackslash = /\\(?!\\)/g, + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "POS": new RegExp( pos, "i" ), + "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" ) + }, + + // Support + + // Used for testing something on an element + assert = function( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } + }, + + // Check if getElementsByTagName("*") returns only elements + assertTagNameNoComments = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }), + + // Check if getAttribute returns normalized href attributes + assertHrefNotNormalized = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }), + + // Check if attributes should be retrieved by attribute nodes + assertAttributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }), + + // Check if getElementsByClassName can be trusted + assertUsableClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }), + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + assertUsableName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
"; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = document.getElementsByName && + // buggy browsers will return fewer than the correct 2 + document.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + document.getElementsByName( expando + 0 ).length; + assertGetIdNotName = !document.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + +// If slice is not available, provide a backup +try { + slice.call( docElem.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + for ( ; (elem = this[i]); i++ ) { + results.push( elem ); + } + return results; + }; +} + +function Sizzle( selector, context, results, seed ) { + results = results || []; + context = context || document; + var match, elem, xml, m, + nodeType = context.nodeType; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( nodeType !== 1 && nodeType !== 9 ) { + return []; + } + + xml = isXML( context ); + + if ( !xml && !seed ) { + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed, xml ); +} + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + return Sizzle( expr, null, null, [ elem ] ).length > 0; +}; + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + } else { + + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } + return ret; +}; + +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Element contains another +contains = Sizzle.contains = docElem.contains ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) ); + } : + docElem.compareDocumentPosition ? + function( a, b ) { + return b && !!( a.compareDocumentPosition( b ) & 16 ); + } : + function( a, b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + return false; + }; + +Sizzle.attr = function( elem, name ) { + var val, + xml = isXML( elem ); + + if ( !xml ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( xml || assertAttributes ) { + return elem.getAttribute( name ); + } + val = elem.getAttributeNode( name ); + return val ? + typeof elem[ name ] === "boolean" ? + elem[ name ] ? name : null : + val.specified ? val.value : null : + null; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + // IE6/7 return a modified href + attrHandle: assertHrefNotNormalized ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }, + + find: { + "ID": assertGetIdNotName ? + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + } : + function( id, context, xml ) { + if ( typeof context.getElementById !== strundefined && !xml ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }, + + "TAG": assertTagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + var elem, + tmp = [], + i = 0; + + for ( ; (elem = results[i]); i++ ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }, + + "NAME": assertUsableName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }, + + "CLASS": assertUsableClassName && function( className, context, xml ) { + if ( typeof context.getElementsByClassName !== strundefined && !xml ) { + return context.getElementsByClassName( className ); + } + } + }, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( rbackslash, "" ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 3 xn-component of xn+y argument ([+-]?\d*n|) + 4 sign of xn-component + 5 x of xn-component + 6 sign of y-component + 7 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1] === "nth" ) { + // nth-child requires argument + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) ); + match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" ); + + // other types prohibit arguments + } else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var unquoted, excess; + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + if ( match[3] ) { + match[2] = match[3]; + } else if ( (unquoted = match[4]) ) { + // Only check arguments that contain a pseudo + if ( rpseudo.test(unquoted) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + unquoted = unquoted.slice( 0, excess ); + match[0] = match[0].slice( 0, excess ); + } + match[2] = unquoted; + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + "ID": assertGetIdNotName ? + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + return elem.getAttribute("id") === id; + }; + } : + function( id ) { + id = id.replace( rbackslash, "" ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === id; + }; + }, + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + nodeName = nodeName.replace( rbackslash, "" ).toLowerCase(); + + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ expando ][ className ]; + if ( !pattern ) { + pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") ); + } + return function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }; + }, + + "ATTR": function( name, operator, check ) { + return function( elem, context ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.substr( result.length - check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, argument, first, last ) { + + if ( type === "nth" ) { + return function( elem ) { + var node, diff, + parent = elem.parentNode; + + if ( first === 1 && last === 0 ) { + return true; + } + + if ( parent ) { + diff = 0; + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + diff++; + if ( elem === node ) { + break; + } + } + } + } + + // Incorporate the offset (or cast to NaN), then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + }; + } + + return function( elem ) { + var node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + /* falls through */ + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + var nodeType; + elem = elem.firstChild; + while ( elem ) { + if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) { + return false; + } + elem = elem.nextSibling; + } + return true; + }, + + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "text": function( elem ) { + var type, attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + (type = elem.type) === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type ); + }, + + // Input types + "radio": createInputPseudo("radio"), + "checkbox": createInputPseudo("checkbox"), + "file": createInputPseudo("file"), + "password": createInputPseudo("password"), + "image": createInputPseudo("image"), + + "submit": createButtonPseudo("submit"), + "reset": createButtonPseudo("reset"), + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "focus": function( elem ) { + var doc = elem.ownerDocument; + return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href); + }, + + "active": function( elem ) { + return elem === elem.ownerDocument.activeElement; + }, + + // Positional types + "first": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = 0; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = 1; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +function siblingCheck( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; +} + +sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + return ( !a.compareDocumentPosition || !b.compareDocumentPosition ? + a.compareDocumentPosition : + a.compareDocumentPosition(b) & 4 + ) ? -1 : 1; + } : + function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + +// Always assume the presence of duplicates if sort doesn't +// pass them to our comparison function (as in Google Chrome). +[0, 0].sort( sortOrder ); +baseHasDuplicate = !hasDuplicate; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + i = 1; + + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + + return results; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, soFar, groups, preFilters, + cached = tokenCache[ expando ][ selector ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + soFar = soFar.slice( match[0].length ); + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + + // Cast descendant combinators to space + matched.type = match[0].replace( rtrim, " " ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + // The last two arguments here are (context, xml) for backCompat + (match = preFilters[ type ]( match, document, true ))) ) { + + tokens.push( matched = new Token( match.shift() ) ); + soFar = soFar.slice( matched.length ); + matched.type = type; + matched.matches = match; + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && combinator.dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( !xml ) { + var cache, + dirkey = dirruns + " " + doneName + " ", + cachedkey = dirkey + cachedruns; + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( (cache = elem[ expando ]) === cachedkey ) { + return elem.sizset; + } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) { + if ( elem.sizset ) { + return elem; + } + } else { + elem[ expando ] = cachedkey; + if ( matcher( elem, context, xml ) ) { + elem.sizset = true; + return elem; + } + elem.sizset = false; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( checkNonElements || elem.nodeType === 1 ) { + if ( matcher( elem, context, xml ) ) { + return elem; + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones + if ( seed && postFinder ) { + return; + } + + var i, elem, postFilterIn, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + postFilterIn = condense( matcherOut, postMap ); + postFilter( postFilterIn, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = postFilterIn.length; + while ( i-- ) { + if ( (elem = postFilterIn[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + // Keep seed and results synchronized + if ( seed ) { + // Ignore postFinder because it can't coexist with seed + i = preFilter && matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + seed[ preMap[i] ] = !(results[ preMap[i] ] = elem); + } + } + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + // The concatenated values are (context, xml) for backCompat + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && tokens.join("") + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Nested matchers should use non-integer dirruns + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = superMatcher.el; + } + + // Add elements passing elementMatchers directly to results + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + for ( j = 0; (matcher = elementMatchers[j]); j++ ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++superMatcher.el; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + for ( j = 0; (matcher = setMatchers[j]); j++ ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + superMatcher.el = 0; + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ expando ][ selector ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results, seed ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results, seed ); + } + return results; +} + +function select( selector, context, results, seed, xml ) { + var i, tokens, token, type, find, + match = tokenize( selector ), + j = match.length; + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !xml && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().length ); + } + + // Fetch a seed set for right-to-left matching + for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( rbackslash, "" ), + rsibling.test( tokens[0].type ) && context.parentNode || context, + xml + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && tokens.join(""); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + xml, + results, + rsibling.test( selector ) + ); + return results; +} + +if ( document.querySelectorAll ) { + (function() { + var disconnectedMatch, + oldSelect = select, + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // qSa(:focus) reports false when true (Chrome 21), + // A support test would require too much code (would include document ready) + rbuggyQSA = [":focus"], + + // matchesSelector(:focus) reports false when true (Chrome 21), + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + // A support test would require too much code (would include document ready) + // just skip matchesSelector for :active + rbuggyMatches = [ ":active", ":focus" ], + matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector; + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here (do not put tests after this one) + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

"; + if ( div.querySelectorAll("[test^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here (do not put tests after this one) + div.innerHTML = ""; + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push(":enabled", ":disabled"); + } + }); + + // rbuggyQSA always contains :focus, so no need for a length check + rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") ); + + select = function( selector, context, results, seed, xml ) { + // Only use querySelectorAll when not filtering, + // when this is not xml, + // and when no QSA bugs apply + if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + var groups, i, + old = true, + nid = expando, + newContext = context, + newSelector = context.nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + groups[i].join(""); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + + return oldSelect( selector, context, results, seed, xml ); + }; + + if ( matches ) { + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + try { + matches.call( div, "[test!='']:sizzle" ); + rbuggyMatches.push( "!=", pseudos ); + } catch ( e ) {} + }); + + // rbuggyMatches always contains :active and :focus, so no need for a length check + rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") ); + + Sizzle.matchesSelector = function( elem, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyMatches always contains :active, so no need for an existence check + if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) { + try { + var ret = matches.call( elem, 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 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, null, null, [ elem ] ).length > 0; + }; + } + })(); +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Back-compat +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, l, length, n, r, ret, + self = this; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + ret = this.pushStack( "", "find", selector ); + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, core_slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /]", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, +// unless wrapped in a div with non-breaking characters in front of it. +if ( !jQuery.support.htmlSerialize ) { + wrapMap._default = [ 1, "X
", "
" ]; +} + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( set, this ), "before", this.selector ); + } + }, + + after: function() { + if ( !isDisconnected( this[0] ) ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } + + if ( arguments.length ) { + var set = jQuery.clean( arguments ); + return this.pushStack( jQuery.merge( this, set ), "after", this.selector ); + } + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + jQuery.cleanData( [ elem ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName( "*" ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + if ( !isDisconnected( this[0] ) ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith( value.call( this, i, old ) ); + }); + } + + if ( typeof value !== "string" ) { + value = jQuery( value ).detach(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } + + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = [].concat.apply( [], args ); + + var results, first, fragment, iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; + + // We can't cloneNode fragments that contain checked, in WebKit + if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) { + return this.each(function() { + jQuery(this).domManip( args, table, callback ); + }); + } + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + args[0] = value.call( this, i, table ? self.html() : undefined ); + self.domManip( args, table, callback ); + }); + } + + if ( this[0] ) { + results = jQuery.buildFragment( args, this, scripts ); + fragment = results.fragment; + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + // Fragments from the fragment cache must always be cloned and never used in place. + for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) { + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + i === iNoClone ? + fragment : + jQuery.clone( fragment, true, true ) + ); + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + + if ( scripts.length ) { + jQuery.each( scripts, function( i, elem ) { + if ( elem.src ) { + if ( jQuery.ajax ) { + jQuery.ajax({ + url: elem.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.error("no ajax"); + } + } else { + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + }); + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function cloneFixAttributes( src, dest ) { + var nodeName; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } + + // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); + + if ( nodeName === "object" ) { + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + + // IE blanks contents when cloning scripts + } else if ( nodeName === "script" && dest.text !== src.text ) { + dest.text = src.text; + } + + // Event data gets referenced instead of copied if the expando + // gets copied too + dest.removeAttribute( jQuery.expando ); +} + +jQuery.buildFragment = function( args, context, scripts ) { + var fragment, cacheable, cachehit, + first = args[ 0 ]; + + // Set context from what may come in as undefined or a jQuery collection or a node + // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & + // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception + context = context || document; + context = !context.nodeType && context[0] || context; + context = context.ownerDocument || context; + + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 + if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document && + first.charAt(0) === "<" && !rnocache.test( first ) && + (jQuery.support.checkClone || !rchecked.test( first )) && + (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) { + + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[ first ]; + cachehit = fragment !== undefined; + } + + if ( !fragment ) { + fragment = context.createDocumentFragment(); + jQuery.clean( args, context, fragment, scripts ); + + // Update the cache, but only store false + // unless this is a second parsing of the same content + if ( cacheable ) { + jQuery.fragments[ first ] = cachehit && fragment; + } + } + + return { fragment: fragment, cacheable: cacheable }; +}; + +jQuery.fragments = {}; + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + l = insert.length, + parent = this.length === 1 && this[0].parentNode; + + if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) { + insert[ original ]( this[0] ); + return this; + } else { + for ( ; i < l; i++ ) { + elems = ( i > 0 ? this.clone(true) : this ).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +}); + +function getAll( elem ) { + if ( typeof elem.getElementsByTagName !== "undefined" ) { + return elem.getElementsByTagName( "*" ); + + } else if ( typeof elem.querySelectorAll !== "undefined" ) { + return elem.querySelectorAll( "*" ); + + } else { + return []; + } +} + +// Used in clean, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var srcElements, + destElements, + i, + clone; + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + 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 = 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 + // elements on the page has a name or id of "length" + for ( i = 0; srcElements[i]; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + srcElements = destElements = null; + + // Return the cloned set + return clone; + }, + + clean: function( elems, context, fragment, scripts ) { + var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags, + safe = context === document && safeFragment, + ret = []; + + // Ensure that context is a document + if ( !context || typeof context.createDocumentFragment === "undefined" ) { + context = document; + } + + // Use the already-created safe fragment if context permits + for ( i = 0; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Ensure a safe container in which to render the html + safe = safe || createSafeFragment( context ); + div = context.createElement("div"); + safe.appendChild( div ); + + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // Go to html and back, then peel off extra wrappers + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + depth = wrap[0]; + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
" && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } + + elem = div.childNodes; + + // Take out of fragment container (we need a fresh div each time) + div.parentNode.removeChild( div ); + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + jQuery.merge( ret, elem ); + } + } + + // Fix #11356: Clear elements from safeFragment + if ( div ) { + elem = div = safe = null; + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + for ( i = 0; (elem = ret[i]) != null; i++ ) { + if ( jQuery.nodeName( elem, "input" ) ) { + fixDefaultChecked( elem ); + } else if ( typeof elem.getElementsByTagName !== "undefined" ) { + jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); + } + } + } + + // Append elements to a provided document fragment + if ( fragment ) { + // Special handling of each script element + handleScript = function( elem ) { + // Check if we consider it executable + if ( !elem.type || rscriptType.test( elem.type ) ) { + // Detach the script and store it in the scripts array (if provided) or the fragment + // Return truthy to indicate that it has been handled + return scripts ? + scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) : + fragment.appendChild( elem ); + } + }; + + for ( i = 0; (elem = ret[i]) != null; i++ ) { + // Check if we're done after handling an executable script + if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) { + // Append to fragment and handle embedded scripts + fragment.appendChild( elem ); + if ( typeof elem.getElementsByTagName !== "undefined" ) { + // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration + jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript ); + + // Splice the scripts into ret after their former ancestor and advance our index beyond them + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); + i += jsTags.length; + } + } + } + } + + return ret; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var data, id, elem, type, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + jQuery.deletedIds.push( id ); + } + } + } + } + } +}); +// Limit scope pollution from any deprecated API +(function() { + +var matched, browser; + +// Use of jQuery.browser is frowned upon. +// More details: http://api.jquery.com/jQuery.browser +// jQuery.uaMatch maintained for back-compat +jQuery.uaMatch = function( ua ) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || + /(webkit)[ \/]([\w.]+)/.exec( ua ) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || + /(msie) ([\w.]+)/.exec( ua ) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; +}; + +matched = jQuery.uaMatch( navigator.userAgent ); +browser = {}; + +if ( matched.browser ) { + browser[ matched.browser ] = true; + browser.version = matched.version; +} + +// Chrome is Webkit, but Webkit is also Safari. +if ( browser.chrome ) { + browser.webkit = true; +} else if ( browser.webkit ) { + browser.safari = true; +} + +jQuery.browser = browser; + +jQuery.sub = function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; +}; + +})(); +var curCSS, iframe, iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ), + elemdisplay = {}, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + + eventsToggle = jQuery.fn.toggle; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var elem, display, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + values[ index ] = jQuery._data( elem, "olddisplay" ); + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && elem.style.display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + display = curCSS( elem, "display" ); + + if ( !values[ index ] && display !== "none" ) { + jQuery._data( elem, "olddisplay", display ); + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state, fn2 ) { + var bool = typeof state === "boolean"; + + if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) { + return eventsToggle.apply( this, arguments ); + } + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, numeric, extra ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( numeric || extra !== undefined ) { + num = parseFloat( val ); + return numeric || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: To any future maintainer, we've window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + curCSS = function( elem, name ) { + var ret, width, minWidth, maxWidth, + computed = window.getComputedStyle( elem, null ), + style = elem.style; + + if ( computed ) { + + ret = computed[ name ]; + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + curCSS = function( elem, name ) { + var left, rsLeft, + ret = elem.currentStyle && elem.currentStyle[ name ], + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + // we use jQuery.css instead of curCSS here + // because of the reliableMarginRight CSS hook! + val += jQuery.css( elem, extra + cssExpand[ i ], true ); + } + + // From this point on we use curCSS for maximum performance (relevant in animations) + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0; + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0; + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + valueIsBorderBox = true, + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox + ) + ) + "px"; +} + + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + if ( elemdisplay[ nodeName ] ) { + return elemdisplay[ nodeName ]; + } + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ), + display = elem.css("display"); + elem.remove(); + + // If the simple way fails, + // get element's real default display by attaching it to a temp iframe + if ( display === "none" || display === "" ) { + // Use the already-created iframe if possible + iframe = document.body.appendChild( + iframe || jQuery.extend( document.createElement("iframe"), { + frameBorder: 0, + width: 0, + height: 0 + }) + ); + + // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. + if ( !iframeDoc || !iframe.createElement ) { + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; + iframeDoc.write(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) ); + + display = curCSS( elem, "display" ); + document.body.removeChild( iframe ); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + + return display; +} + +jQuery.each([ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + // certain elements can have dimension info if we invisibly show them + // however, it must have a current display style that would benefit from this + if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) { + return jQuery.swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + }); + } else { + return getWidthOrHeight( elem, name, extra ); + } + } + }, + + set: function( elem, value, extra ) { + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box" + ) : 0 + ); + } + }; +}); + +if ( !jQuery.support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + // IE uses filters for opacity + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there there is no filter style applied in a css rule, we are done + if ( currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +// These hooks cannot be added until DOM ready because the support test +// for it is not run until after DOM ready +jQuery(function() { + 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 + return jQuery.swap( elem, { "display": "inline-block" }, function() { + if ( computed ) { + return curCSS( elem, "marginRight" ); + } + }); + } + }; + } + + // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + if ( !jQuery.support.pixelPosition && jQuery.fn.position ) { + jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = { + get: function( elem, computed ) { + if ( computed ) { + var ret = curCSS( elem, prop ); + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret; + } + } + }; + }); + } + +}); + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.hidden = function( elem ) { + return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none"); + }; + + jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); + }; +} + +// These hooks are used by animate to expand properties +jQuery.each({ + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [ value ], + expanded = {}; + + for ( i = 0; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +}); +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rselectTextarea = /^(?:select|textarea)/i; + +jQuery.fn.extend({ + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map(function(){ + return this.elements ? jQuery.makeArray( this.elements ) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + ( this.checked || rselectTextarea.test( this.nodeName ) || + rinput.test( this.type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val, i ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + } +}); + +//Serialize an array of form elements or a set of +//key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, value ) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); + s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + }); + + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); +}; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + // If array item is non-scalar (array or object), encode its + // numeric index to resolve deserialization ambiguity issues. + // Note that rack (as of 1.0.0) can't currently deserialize + // nested arrays properly, and attempting to do so may cause + // a server error. Possible fixes are to modify rack's + // deserialization algorithm or to provide an option or flag + // to force array serialization to be shallow. + buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); + } + }); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + // Serialize scalar item. + add( prefix, obj ); + } +} +var + // Document location + ajaxLocParts, + ajaxLocation, + + rhash = /#.*$/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = ["*/"] + ["*"]; + +// #8138, IE may throw an exception when accessing +// a field from window.location if document.domain has been set +try { + ajaxLocation = 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 ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, list, placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), + i = 0, + length = dataTypes.length; + + if ( jQuery.isFunction( func ) ) { + // For each dataType in the dataTypeExpression + for ( ; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, + dataType /* internal */, inspected /* internal */ ) { + + dataType = dataType || options.dataTypes[ 0 ]; + inspected = inspected || {}; + + inspected[ dataType ] = true; + + var selection, + list = structure[ dataType ], + i = 0, + length = list ? list.length : 0, + executeOnly = ( structure === prefilters ); + + for ( ; i < length && ( executeOnly || !selection ); i++ ) { + selection = list[ i ]( options, originalOptions, jqXHR ); + // If we got redirected to another dataType + // we try there if executing only and not done already + if ( typeof selection === "string" ) { + if ( !executeOnly || inspected[ selection ] ) { + selection = undefined; + } else { + options.dataTypes.unshift( selection ); + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, selection, inspected ); + } + } + } + // If we're only executing or nothing was selected + // we try the catchall dataType if not done already + if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { + selection = inspectPrefiltersOrTransports( + structure, options, originalOptions, jqXHR, "*", inspected ); + } + // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + return selection; +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } +} + +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + // Don't do a request if no elements are being requested + if ( !this.length ) { + return this; + } + + var selector, type, response, + self = this, + off = url.indexOf(" "); + + if ( off >= 0 ) { + selector = url.slice( off, url.length ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // Request the remote document + jQuery.ajax({ + url: url, + + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params, + complete: function( jqXHR, status ) { + if ( callback ) { + self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); + } + } + }).done(function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + // See if a selector was specified + self.html( selector ? + + // Create a dummy div to hold the results + jQuery("
") + + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append( responseText.replace( rscript, "" ) ) + + // Locate the specified elements + .find( selector ) : + + // If not, just inject the full result + responseText ); + + }); + + return this; +}; + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ + jQuery.fn[ o ] = function( f ){ + return this.on( o, f ); + }; +}); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +}); + +jQuery.extend({ + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + // 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 ) { + // Building a settings object + ajaxExtend( target, jQuery.ajaxSettings ); + } else { + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; + } + ajaxExtend( target, settings ); + return target; + }, + + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText" + }, + + // List of data converters + // 1) key format is "source_type destination_type" (a single space in-between) + // 2) the catchall symbol "*" can be used for source_type + converters: { + + // Convert anything to text + "* text": window.String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + context: true, + url: true + } + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var // ifModified key + ifModifiedKey, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // To know if global events are to be dispatched + fireGlobals, + // Loop variable + i, + // Create the final options object + 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.Callbacks( "once memory" ), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // The jqXHR state + state = 0, + // Default abort message + strAbort = "canceled", + // Fake xhr + jqXHR = { + + readyState: 0, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( !state ) { + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || strAbort; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + return this; + } + }; + + // 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, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // If successful, handle type chaining + if ( status >= 200 && status < 300 || status === 304 ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + + modified = jqXHR.getResponseHeader("Last-Modified"); + if ( modified ) { + jQuery.lastModified[ ifModifiedKey ] = modified; + } + modified = jqXHR.getResponseHeader("Etag"); + if ( modified ) { + jQuery.etag[ ifModifiedKey ] = modified; + } + } + + // If not modified + if ( status === 304 ) { + + statusText = "notmodified"; + isSuccess = true; + + // If we have data + } else { + + isSuccess = ajaxConvert( s, response ); + statusText = isSuccess.state; + success = isSuccess.data; + error = isSuccess.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( !statusText || status ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + // Attach deferreds + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.add; + + // Status-dependent callbacks + jqXHR.statusCode = function( map ) { + if ( map ) { + var tmp; + if ( state < 2 ) { + for ( tmp in map ) { + statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[ jqXHR.status ]; + jqXHR.always( tmp ); + } + } + return this; + }; + + // 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, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); + + // A cross-domain request is in order when we have a protocol:host:port mismatch + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ) || false; + s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !== + ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + + // Add anti-cache in url if needed + if ( s.cache === false ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); + } + if ( jQuery.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + // Abort if not done already and return + return jqXHR.abort(); + + } + + // aborting is no longer a cancellation + strAbort = "abort"; + + // 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 { + 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 ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + return jqXHR; + }, + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + +}); + +/* Handles responses to an ajax request: + * - sets all responseXXX fields accordingly + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes, + responseFields = s.responseFields; + + // Fill responseXXX fields + for ( type in responseFields ) { + if ( type in responses ) { + jqXHR[ responseFields[type] ] = responses[ type ]; + } + } + + // Remove auto dataType and get content-type in the process + while( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +// Chain conversions given the request and the original response +function ajaxConvert( s, response ) { + + var conv, conv2, current, tmp, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(), + prev = dataTypes[ 0 ], + converters = {}, + i = 0; + + // Apply the dataFilter if provided + if ( s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + // Convert to each sequential dataType, tolerating list modification + for ( ; (current = dataTypes[++i]); ) { + + // There's only work to do if current dataType is non-auto + if ( current !== "*" ) { + + // Convert response if prev dataType is non-auto and differs from current + if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split(" "); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.splice( i--, 0, current ); + } + + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s["throws"] ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; + } + } + } + } + + // Update prev for next iteration + prev = current; + } + } + + return { state: "success", data: response }; +} +var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); + +// Default jsonp settings +jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + this[ callback ] = true; + return callback; + } +}); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + data = s.data, + url = s.url, + hasCallback = s.jsonp !== false, + replaceInUrl = hasCallback && rjsonp.test( url ), + replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && + !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && + rjsonp.test( data ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + overwritten = window[ callbackName ]; + + // Insert callback into url or form data + if ( replaceInUrl ) { + s.url = url.replace( rjsonp, "$1" + callbackName ); + } else if ( replaceInData ) { + s.data = data.replace( rjsonp, "$1" + callbackName ); + } else if ( hasCallback ) { + s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters["script json"] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always(function() { + // Restore preexisting value + window[ callbackName ] = overwritten; + + // Save back as free + if ( s[ callbackName ] ) { + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + }); + + // Delegate to script + return "script"; + } +}); +// Install script dataType +jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +}); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +}); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function(s) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = "async"; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( head && script.parentNode ) { + head.removeChild( script ); + } + + // Dereference the script + script = undefined; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( 0, 1 ); + } + } + }; + } +}); +var xhrCallbacks, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function() { + // Abort all pending requests + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( 0, 1 ); + } + } : false, + xhrId = 0; + +// 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 ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function() { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +// Determine support properties +(function( xhr ) { + jQuery.extend( jQuery.support, { + ajax: !!xhr, + cors: !!xhr && ( "withCredentials" in xhr ) + }); +})( jQuery.ajaxSettings.xhr() ); + +// Create transport if the browser can provide an xhr +if ( jQuery.support.ajax ) { + + jQuery.ajaxTransport(function( s ) { + // Cross domain only allowed if supported through XMLHttpRequest + if ( !s.crossDomain || jQuery.support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + + // Get a new xhr + var handle, i, + xhr = s.xhr(); + + // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + if ( s.username ) { + xhr.open( s.type, s.url, s.async, s.username, s.password ); + } else { + xhr.open( s.type, s.url, s.async ); + } + + // 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 { + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + } catch( _ ) {} + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + + var status, + statusText, + responseHeaders, + responses, + xml; + + // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + try { + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Only called once + callback = undefined; + + // Do not keep as active anymore + if ( handle ) { + xhr.onreadystatechange = jQuery.noop; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } + } + + // 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; + } + + // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + try { + responses.text = xhr.responseText; + } catch( _ ) { + } + + // 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; + } + } + } + } catch( firefoxAccessException ) { + if ( !isAbort ) { + complete( -1, firefoxAccessException ); + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, responseHeaders ); + } + }; + + if ( !s.async ) { + // if we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout( callback, 0 ); + } else { + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; + } + xhr.onreadystatechange = callback; + } + }, + + abort: function() { + if ( callback ) { + callback(0,1); + } + } + }; + } + }); +} +var fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ), + rrun = /queueHooks$/, + animationPrefilters = [ defaultPrefilter ], + tweeners = { + "*": [function( prop, value ) { + var end, unit, + tween = this.createTween( prop, value ), + parts = rfxnum.exec( value ), + target = tween.cur(), + start = +target || 0, + scale = 1, + maxIterations = 20; + + if ( parts ) { + end = +parts[2]; + unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + + // We need to compute starting value + if ( unit !== "px" && start ) { + // Iteratively approximate from a nonzero starting point + // Prefer the current property, because this process will be trivial if it uses the same units + // Fallback to end or a simple constant + start = jQuery.css( tween.elem, prop, true ) || end || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + start = start / scale; + jQuery.style( tween.elem, prop, start + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // And breaking the loop if scale is unchanged or perfect, or if we've just had enough + } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); + } + + tween.unit = unit; + tween.start = start; + // If a +=/-= token was provided, we're doing a relative animation + tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end; + } + return tween; + }] + }; + +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout(function() { + fxNow = undefined; + }, 0 ); + return ( fxNow = jQuery.now() ); +} + +function createTweens( animation, props ) { + jQuery.each( props, function( prop, value ) { + var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( collection[ index ].call( animation, prop, value ) ) { + + // we're done with this property + return; + } + } + }); +} + +function Animation( elem, properties, options ) { + var result, + index = 0, + tweenerIndex = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always( function() { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function() { + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + percent = 1 - ( remaining / animation.duration || 0 ), + index = 0, + length = animation.tweens.length; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ]); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise({ + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { specialEasing: {} }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end, easing ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + // if we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + }), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length ; index++ ) { + result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + return result; + } + } + + createTweens( animation, props ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + anim: animation, + queue: animation.opts.queue, + elem: elem + }) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // not quite $.extend, this wont overwrite keys already present. + // also - reusing 'index' from above because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + tweeners[ prop ] = tweeners[ prop ] || []; + tweeners[ prop ].unshift( callback ); + } + }, + + prefilter: function( callback, prepend ) { + if ( prepend ) { + animationPrefilters.unshift( callback ); + } else { + animationPrefilters.push( callback ); + } + } +}); + +function defaultPrefilter( elem, props, opts ) { + var index, prop, value, length, dataShow, tween, hooks, oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden( elem ); + + // handle queue: false promises + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always(function() { + // doing this makes sure that the complete handler will be called + // before this completes + anim.always(function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + }); + }); + } + + // height/width overflow pass + if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Set display property to inline-block for height/width + // animations on inline elements that are having width/height animated + if ( jQuery.css( elem, "display" ) === "inline" && + jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !jQuery.support.shrinkWrapBlocks ) { + anim.done(function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + }); + } + } + + + // show/hide pass + for ( index in props ) { + value = props[ index ]; + if ( rfxtypes.exec( value ) ) { + delete props[ index ]; + if ( value === ( hidden ? "hide" : "show" ) ) { + continue; + } + handled.push( index ); + } + } + + length = handled.length; + if ( length ) { + dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} ); + if ( hidden ) { + jQuery( elem ).show(); + } else { + anim.done(function() { + jQuery( elem ).hide(); + }); + } + anim.done(function() { + var prop; + jQuery.removeData( elem, "fxshow", true ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + }); + for ( index = 0 ; index < length ; index++ ) { + prop = handled[ index ]; + tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 ); + orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } +} + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || "swing"; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + if ( tween.elem[ tween.prop ] != null && + (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { + return tween.elem[ tween.prop ]; + } + + // passing any value as a 4th parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, simple values such as "10px" are parsed to Float. + // complex values such as "rotate(1rad)" are returned as is. + result = jQuery.css( tween.elem, tween.prop, false, "" ); + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + // use step hook for back compat - use cssHook if its there - use .style if its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Remove in 2.0 - this supports IE8's panic based approach +// to setting things on disconnected nodes + +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" || + // special check for .toggle( handler, handler, ... ) + ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +}); + +jQuery.fn.extend({ + fadeTo: function( speed, to, easing, callback ) { + + // show any hidden elements after setting opacity to 0 + return this.filter( isHidden ).css( "opacity", 0 ).show() + + // animate to the value specified + .end().animate({ opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations resolve immediately + if ( empty ) { + anim.stop( true ); + } + }; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each(function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = jQuery._data( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // start the next in the queue if the last step wasn't forced + // timers currently will call their complete callbacks, which will dequeue + // but only if they were gotoEnd + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + }); + } +}); + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, step value is 2 to skip over Left and Right + includeWidth = includeWidth? 1 : 0; + for( ; i < 4 ; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +// Generate shortcuts for custom animations +jQuery.each({ + slideDown: genFx("show"), + slideUp: genFx("hide"), + slideToggle: genFx("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +}); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : + opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + + // normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p*Math.PI ) / 2; + } +}; + +jQuery.timers = []; +jQuery.fx = Tween.prototype.init; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } +}; + +jQuery.fx.timer = function( timer ) { + if ( timer() && jQuery.timers.push( timer ) && !timerId ) { + timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.stop = function() { + clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 +}; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + +if ( jQuery.expr && jQuery.expr.filters ) { + jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep(jQuery.timers, function( fn ) { + return elem === fn.elem; + }).length; + }; +} +var rroot = /^(?:body|html)$/i; + +jQuery.fn.offset = function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft, + box = { top: 0, left: 0 }, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + if ( (body = doc.body) === elem ) { + return jQuery.offset.bodyOffset( elem ); + } + + docElem = doc.documentElement; + + // Make sure it's not a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return box; + } + + // If we don't have gBCR, just use 0,0 rather than error + // BlackBerry 5, iOS 3 (original iPhone) + if ( typeof elem.getBoundingClientRect !== "undefined" ) { + box = elem.getBoundingClientRect(); + } + win = getWindow( doc ); + clientTop = docElem.clientTop || body.clientTop || 0; + clientLeft = docElem.clientLeft || body.clientLeft || 0; + scrollTop = win.pageYOffset || docElem.scrollTop; + scrollLeft = win.pageXOffset || docElem.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +}; + +jQuery.offset = { + + bodyOffset: function( body ) { + var top = body.offsetTop, + left = body.offsetLeft; + + if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) { + top += parseFloat( jQuery.css(body, "marginTop") ) || 0; + left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; + } + + return { top: top, left: left }; + }, + + setOffset: function( elem, options, i ) { + var position = jQuery.css( elem, "position" ); + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + var curElem = jQuery( elem ), + curOffset = curElem.offset(), + curCSSTop = jQuery.css( elem, "top" ), + curCSSLeft = jQuery.css( elem, "left" ), + 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 either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( jQuery.isFunction( options ) ) { + options = options.call( elem, i, curOffset ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + } +}; + + +jQuery.fn.extend({ + + position: function() { + if ( !this[0] ) { + return; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; + offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; + + // Add offsetParent borders + parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; + parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; + + // Subtract the two offsets + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + + offsetParent: function() { + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || document.body; + }); + } +}); + + +// Create scrollLeft and scrollTop methods +jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return jQuery.access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? (prop in win) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +}); + +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { + jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { + // margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return jQuery.access( this, function( elem, type, value ) { + var doc; + + if ( jQuery.isWindow( elem ) ) { + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, value, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + }); +}); +// Expose jQuery to the global object +window.jQuery = window.$ = jQuery; + +// Expose jQuery as an AMD module, but only for AMD loaders that +// understand the issues with loading multiple versions of jQuery +// in a page that all might call define(). The loader will indicate +// they have special allowances for multiple jQuery versions by +// specifying define.amd.jQuery = true. Register as a named module, +// since jQuery can be concatenated with other files that may use define, +// but not use a proper concatenation script that understands anonymous +// AMD modules. A named AMD is safest and most robust way to register. +// Lowercase jquery is used because AMD module names are derived from +// file names, and jQuery is normally delivered in a lowercase file name. +// Do this after creating the global so that if an AMD module wants to call +// noConflict to hide this version of jQuery, it will work. +if ( typeof define === "function" && define.amd && define.amd.jQuery ) { + define( "jquery", [], function () { return jQuery; } ); +} + +})( window ); diff --git a/WebKit/scripts/lib/vendor/require.js b/WebKit/scripts/lib/vendor/require.js new file mode 100644 index 0000000..39dbad8 --- /dev/null +++ b/WebKit/scripts/lib/vendor/require.js @@ -0,0 +1,1981 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.1 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, jQuery, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.1', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + aps = ap.slice, + apsp = ap.splice, + isBrowser = !!(typeof window !== 'undefined' && navigator && document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (obj.hasOwnProperty(prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value !== 'string') { + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + //Allow getting a global that expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite and existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + waitSeconds: 7, + baseUrl: './', + paths: {}, + pkgs: {}, + shim: {}, + map: {}, + config: {} + }, + registry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; ary[i]; i += 1) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgName, pkgConfig, mapValue, nameParts, i, j, nameSegment, + foundMap, foundI, foundStarMap, starI, + baseParts = baseName && baseName.split('/'), + normalizedBaseParts = baseParts, + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + if (config.pkgs[baseName]) { + //If the baseName is a package name, then just treat it as one + //name to concat the name with. + normalizedBaseParts = baseParts = [baseName]; + } else { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + } + + name = normalizedBaseParts.concat(name.split('/')); + trimDots(name); + + //Some use of packages may use a . path to reference the + //'main' module name, so normalize for that. + pkgConfig = config.pkgs[(pkgName = name[0])]; + name = name.join('/'); + if (pkgConfig && name === pkgName + '/' + pkgConfig.main) { + name = pkgName; + } + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if (applyMap && (baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = config.paths[id]; + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + removeScript(id); + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + context.require([id]); + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = defined[prefix]; + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + normalizedName = normalize(name, parentName, applyMap); + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = registry[id]; + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = registry[id]; + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + getModule(depMap).on(name, fn); + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = registry[id]; + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + //Array splice in the values since the context code has a + //local var ref to defQueue, so cannot just reassign the one + //on context. + apsp.apply(defQueue, + [defQueue.length - 1, 0].concat(globalDefQueue)); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return mod.exports; + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return (config.config && config.config[mod.map.id]) || {}; + }, + exports: defined[mod.map.id] + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = registry[depId]; + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (traced[depId]) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var map, modId, err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(registry, function (mod) { + map = mod.map; + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = undefEvents[map.id] || {}; + this.map = map; + this.shim = config.shim[map.id]; + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks is the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + this.fetch(); + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. + if (this.events.error) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + if (this.map.isDefine) { + //If setting exports via 'module' is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + cjsModule = this.module; + if (cjsModule && + cjsModule.exports !== undefined && + //Make sure it is not already the exports value + cjsModule.exports !== this.exports) { + exports = cjsModule.exports; + } else if (exports === undefined && this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = [this.map.id]; + err.requireType = 'define'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + req.onResourceLoad(context, this.map, this.depMaps); + } + } + + //Clean up + delete registry[id]; + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true, + skipMap: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = registry[normalizedMap.id]; + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + try { + req.exec(text); + } catch (e) { + throw new Error('fromText eval for ' + moduleName + + ' failed: ' + e); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = handlers[depMap.id]; + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', this.errback); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!handlers[id] && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = registry[pluginMap.id]; + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths and packages since they require special processing, + //they are additive. + var pkgs = config.pkgs, + shim = config.shim, + objs = { + paths: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (prop === 'map') { + mixin(config[prop], value, true, true); + } else { + mixin(config[prop], value, true); + } + } else { + config[prop] = value; + } + }); + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if (value.exports && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location; + + pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + location = pkgObj.location; + + //Create a brand new object on pkgs, since currentPackages can + //be passed in again, and config.pkgs is the internal transformed + //state for all package configs. + pkgs[pkgObj.name] = { + name: pkgObj.name, + location: location || pkgObj.name, + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + main: (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, '') + }; + }); + + //Done with modifications, assing packages back to context config + config.pkgs = pkgs; + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || getGlobal(value.exports); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && handlers[deps]) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var index = moduleNamePlusExt.lastIndexOf('.'), + ext = null; + + if (index !== -1) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = registry[id]; + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. parent module is passed in for context, + * used by the optimizer. + */ + enable: function (depMap, parent) { + var mod = registry[depMap.id]; + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = config.shim[moduleName] || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = registry[moduleName]; + + if (!found && !defined[moduleName] && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext) { + var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, + parentPath; + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + pkgs = config.pkgs; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + pkg = pkgs[parentModule]; + parentPath = paths[parentModule]; + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } else if (pkg) { + //If module name is just the package name, then looking + //for the main module. + if (moduleName === pkg.name) { + pkgPath = pkg.location + '/' + pkg.main; + } else { + pkgPath = pkg.location; + } + syms.splice(0, i, pkgPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/\?/.test(url) ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callack function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + return onError(makeError('scripterror', 'Script error', evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = contexts[contextName]; + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = function (err) { + throw err; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEvenListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation that a build has been done so that + //only one script needs to be loaded anyway. This may need to be + //reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = dataMain.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + dataMain = mainScript; + } + + //Strip off any trailing .js since dataMain is now + //like a module name. + dataMain = dataMain.replace(jsSuffixRegExp, ''); + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = []; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps.length && isFunction(callback)) { + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + (context ? context.defQueue : globalDefQueue).push([name, deps, callback]); + }; + + define.amd = { + jQuery: true + }; + + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js new file mode 100644 index 0000000..de3f063 --- /dev/null +++ b/WebKit/scripts/main.js @@ -0,0 +1,68 @@ +var tentia_instance; +var tentia_cache = {}; +var OS_TYPE = "mac"; + +requirejs.config({ + baseUrl: 'scripts' +}); + +function start(view) { + + if (view == "oauth") { + + require(["controller/Oauth"], function(Oauth) { + + tentia_instance = new Oauth(); + tentia_instance.authenticate(); + + }); + + } else if (view == "timeline") { + + require(["controller/Timeline"], function(Timeline) { + + tentia_instance = new Timeline(); + + }); + + } else if (view == "mentions") { + + require(["controller/Mentions"], function(Mentions) { + + tentia_instance = new Mentions(); + + }); + + } else if (view == "profile") { + + } else if (view == "follow") { + + } else if (view == "conversation") { + + } +} + + +String.prototype.startsWith = function(prefix) { + return this.indexOf(prefix) === 0; +} + +String.prototype.endsWith = function(suffix) { + return this.match(suffix+"$") == suffix; +}; + +function loadPlugin(url) { + var plugin = document.createElement("script"); + plugin.type = "text/javascript"; + plugin.src = url; + document.getElementsByTagName("head")[0].appendChild(plugin); +} + +function debug(string) { + if (typeof string != "string") { + string = JSON.stringify(string); + } + alert("DEBUG: " + string); +} + +setTimeout(HostAppGo, 1000); diff --git a/WebKit/sprite-icons.png b/WebKit/sprite-icons.png deleted file mode 100644 index 7336e510a1ea7817467807b5609fbcd4763f2849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11868 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 z zNuddqqL5V{jyFjP^=aGC)YAhA#hE)`X3Q<{jBllEpOGfrqx8Q0N6gT-X$Ue@XemTO ziN>$RsB9?gvHCq!_d$rvPk)1{!-|s_+) zfRVV=`m9oO9aH@4gx{K<<4Lx9Pgo*|BA7!kVU1H21pi5e6AoB>sca*P(JSBkE2hHq zm)s1`UN#N;-Hs^xZ3G845xWXY{wf2WkJ#o9UCLB)=|Xn&$|pmDTv|q$IEyA^j6f6G z&&|xYu?0Y0(8bF*XFOh&T1+u+)kE#<2OB!{Kff(Rc0{jZIy{l$Ukrq*|F?X3KVslI zu?aVO)IEELS&@{|Ny9om5DbFfI{U|SegadJ40oH_^f)+YFsLvp&B!QQb4gtPFoDkG z(MdhQ=~n%MvjPKOlnW`XX|Te#GQK_ppUp(UWKT~|;jE15hXue(LPn9Vs^9sv)9<{K zpH*V=gFq`Mr~8$8LU$ns-aLYQ&sq66A{y+Q zl;%x9Cob#Lt$t*D7keDkhiAfGW^h;LCfGHN_-So?qV?Vw<~xHLo-lU*x^I|`=WKtU z2{n32U;nGeZ4Ojm3H?5i$ff@9v%?d@aqReb8Nc0Nh!mVp?ifu3FpakigDzwD6CtN( zX2i$fuH27~?|*gK5-DWvzWe>`@u&1{B3@zy?Rw`a4W>dvi46Vvqk{n}+@BukS#PI{qGY2xB)siv!uA{_Qk-tyY-W_^SOJ#`|m;0w`| zN$3KFI1Ck+I};0L&L-_K;5Tvi`?_E^H%;k`*^wvZvnyON@b z^Y$F3TVw>WuLPa{g&m+k=2Ox+{{S}AIQ$R}l^RYJkmAdk zwhsh&R4JZ;buq2U#Y$aty!hkw__4dD(^JUgQ>%O3y$6XmW z!aJ?(GT(kh38gi;K>j!IZ~-RyPo*#D{XIl499lBGX}?V!qg6lv9zSm1h7QY1ZKY=6 z5R{5l!E88y-Z)du1<1MTgbLP<1lVCX`zOKVdKe3Xg|NgAxC^BaF#_euP>-8ladGjmky`r&QNt@$lFUB4@ z?0AhMMC`!RKL&^LBYJGTeyw{Q)^LsD5MZ~Y&@7GJi;GzJ=C>2Ra%YGb^cI#`(%_ck zIzVH;9dQt8IlzG~S_GgqlsE1PPzy^BX`a6bGk82G__MEg&^5FW8?tSrE_B98CC=Wt zlCjmhO(p}j@LU(s;}&3Q{#?V(cvD3BVhGS6ZSGX&Uc%=ersDhMhRsR7@ps{O-u%$k z8H87J&JOxQoOh}dKy*q|Ycbe1?cww3r$*M+ zyIUKfwwTrhm;yHqQzlC(8q&haqpyu0`C>&j@ga9r?W7JXGikw;G>MJZ;}fUD!%Td| zsNd3_Fkw>PCqi#udsN?udcfGUpntPeb6$fEmG=xD+-K$SqT=3_o(khW?fW+nsla?! zeoi#*ldxyI0z>8Va3aj#%#YBVKgr(i5a5fFo^80K2lN7w*yjgkS%D5C4PT-c76L=I z?EG&W<38VRgW2){I5XXFjYyA32aEg!RcTe0^2)poS;;M`;xD3c(JY@?Q;5BoggN#- zAv}H09)Sml0l_Mk{E@Hw{<-~FsJmh#(0E~HMlkEnlZlT9l|-p~Kki!E)%%nrj!lZ` z4J)eN!sM(_E4!&4@0l%hlK^7Az*l@3D|_}@;=#iP45j*A6QABEmZMvaE?aLf(MkEk zu`49++Bj(N9U}CkZ=Bz~d^2P2*ScVg>6*k7w(?jjZno}YtgWODtlvdeQfEph5C)W* z^ZhcSp)G(G;5#q7x7bCy*I$s7lpmb;uypr><)DFq>`aOGvgYn_;K^QQsQVrbkb*d* z`;!Td5-V_4sX&DPayngEW4MTsUi4ygBRF{Sg(45F)p+X} zCU%D{KklZckZDQjepUu^^P7+L7cSy3OQU|5)a4G3j6I1pu#+iZrEd4=$5E56|FpGS zASH@VTJcH-#4s?0$K=<9R~K5M;7*b(iIF^nL#50c>J3FLa)0`B<*+$7W_ZUeKX-j` zfr7!i-FY$-=5n~GpVb^5F9%NB&Xk2G^iy?~6=CRU4l^@qyi=P?G0)cMpF+r`V`zu} zc2k|ilHHQ=&p&CwV-~m~z8zGkZ!%dz}d(nSzKm15-WpN)3i;1a;P2+8+ec1hpVpbz9jg@_G2h23)w6#ZUjt|PI z^**?5{QCBaJ)Z5YBUZAGzBQ0e1e&>C`&UJIiHwFg+jwH;_r1u^yC$9^*3LUaPmm%>0b>rh}zG)$819 zu}tg0>x5ZfsL4(Ffv|e0)<&A{3vmLI6+fjBXaH6 z*`>%;`jk@ng1#|XI?%mQZfs|Ltnd2ttEkBcNwq$UWc#A6xot-Ynh&kl_nrDTtz!`z z|G27w@kyZ@cZm?suJOT=mJV`t$VsCn4+<($L`9?py_LeJ2=mBJ;^sY3LsQ@Si7B3_ z;@v)LyAZngI!_;7uL*_RL}{#~jVAfG?XXxVHmyOoWW3Q4bIy*gX25@U*POAg?(Sin zS?KrMit=*kI*!7nf}n&dzs|K(`A^q?=bd)xUdGuCdwY9IX{I(>+x13*1$tToXO#zN zO}>}>xmv9JH~akF-PS4DIdJvvktaPWZ#u5J^hXAstsj-d5OwL!llMhr#I_U7nRas4 zYoXd9yrVD1;TIY7qEe*XqG-TEnpkRvDdVxi^Fz#_jIm<@?5~SkUtCHZ>nalbb@9Oj z)Lf{yPU62-GCK$Vf%?{_5=l%S(RwvhI~6xP;^)&}ubl;Rme?yFZ(^QPI#B0#4U3<6 zJSx~eP#E2cFj7+Ry~v7xZEFBHHQkTcj|=Lvn3+$sD|>%QRV=e{r@AY0??ReDP?k>f zF`=6x;S3ZW5Ye~Dj4PLYa@=8Hyp}@wi8u(`C`y4iXkU21a4=%)tv|jKpwI){Gj)~H zep74ArIrZSmViV-ix&-@M-lS7+yRoB$fdn|xm>pst*%?%Ue)TZjJsn=aMk5GSa-b` zpM9U=TlLxhg}-SgQ1R_gBkXJIIGp685_&$mHQLeuz!?=};lLTJH|HVw5$n|W<~-1h zlCb0*j+`*m#SEDWycGHf(SahM(%ZvGw}gG2Y4ii1?n%Ha7X z0vx${M&tyg5~(4}gQ%S<&-W{p>?XTl>UDYsp1gzW7_UVC-k8qa6CTxfI@MWwzJx?F z!~c5Y`CcR;JtTyCBSDJx)Z=O#$vzX%q7VJ<{3AsE!gGoK;p-(-oeAq`_;6EVW0M^8 zs|qFl{*toRw`@@uwW-HDE0yK{VYyUJgu%+_^~T-A%02#r*6Xd5sGZG=)Vt@heSrPJ4o-H7stT4}38Hgmps(1Q&^FX~Idou9G? z`MDdx6Stw-bAf;BS&9>JA|perYHe_h{G98CD8D5`$R!|RDZlHKj_sk@DbwR7%B^cz z5`Lc)JYGo~CEOo1qV69rm9Z?6nC2xW9G}B)_m_;0oOTmVQ5+EK1^(_SpPCK&hA?36 z1f?mgTfx{W6rg^k(DZxG6W)nr$PbgCgwDCLP(lWeeZQbC6|eJcTkni3L=g+Mw;ou( zyxQLSf7NL)FUGJ@Z3jhtxwj(WdIl*aJ4DZ^{^WwWxeqouQ|G zA9UXB(DRgZkKItCaWlgn_h1ZNhQ znf~5v^0eWQ+IuQH{+<$xv#lJL5h12YjX%aoK!Zu`-zeSl!s)d13=HrwFrq%o_`HTH zC}2IO3fNBndo75zK_cP^9+cmg4?Pu72cvT=hANioGPMwhY?}3 zN1*qKJ&99Q@%H_JPaPA71bX?8LwK=P}>@yNXv*3w&xCJ6Bm;ZQ-`w9ViI>?;{ZP&PeG zV{7CF3?@$N(!tGmOG`^dHfnl;x`z!yLVh**+cm2fy1P0^H0lE5JRJ^%iJt9=lo6S1->>J+0FxNtSM|MS)e}!M-7Zk(cK1=! zTX_Z1v$gcDoVPJcyCGi>1eqC2e73K)!-yj9=Zbj&GNqW;qvklU*gNb^oP&q#DH)5sfyWyx0i?1c|g`v4%>a~ zQJm`8=ZKY>8!9c0mplY_A}N2XVI#$doF|FX%G3H;yk&m3L~}NTMX=|tp8M36;*TBR zyo#Qaqa&l>oMZ4K)x5jvJO%1Ak1;V_i*?m}9GC}beyIV*Y9H&epL@&B#f4F~FGn4X zGc`Y7T4^jCC|GE*JYQ0d}yK3II%EZHqCvq>Hh`&@5+vV`7tYNh!$5C zI^VywJXRx_g&I-6Nv(#{x%4{XCAHOl6LKpmE0}EvQ{3ADr-nT&J92ekb}Yq=8rp|k z{q_jEa})lu=8b+zW+D5RzoIF;w?lBx7f_die1}erL%d5KNFUEHwq2G3qc|Qx6xD>w zr!r%Kzs)7EtP`?vio#?XAa0OFg5`(1Ycz4oX2+!gI+(NwTcv+OGDXL-zt*2dV*_8Y zBY5S*#^O>|qSF!O+^YIrt-XXe-QUQ~%I4MJM*F#*@{bkI2{sl+_;#j1N7>%VH>c+= zm_+4_gVn}G)tIl7G}yq5ukxXM?b@iK{YqLl{psE{6-Ul4i-~ya;VA+5Xy0GwZj)0~ zgS`{BIcl2#|jGvlx>Jri1-p(DzAwdaoa=i?D)XKpuZAw+9wx<)}&Rd3VB zcx@qC?@u}QTapq(uaBTYe*){Iz(xX$^hlmjpa!emt~D{5$t6~T^pDePm(4<&n~RAU zlb!-x$mTCmI3p`5DOv#x$u&PWi((yruK<8;nkt@R-_-bJoXhp%y~X@>vfjHeRSts% zB@wHYO{$Ip)zD85p`ZAu7mz#uAByT42c4@fxigcJqPrZFmGHrj|5IU{BzYD7j|(rQ zprVY)s`4Ah)zIxX-UuLge~Se>@}+I=rmS>aZu@$eArT)cM{Hpx?eWPC9gtLXc?x%l z@IH)06F{!k>*eK@ucfVRp&}g?7B-R~i7rd18SnZ7(e3T@{DV6T?{fPpA3U$6-wCsH zK)F-h>m9pReiFlTb90qIVDho|qwHCsic6UwZ$1_#SodT|AHgxe3DVvaX|6{JFqH5e zW$P6d)V`bkQD^13oi(mt9qj1g%aH<|t|g<Ucp|VVe+`ghMLnIQqqKkyxWW}2|6?x6KOKG!54KOXm~jIsTny##r-c#`bX7~ z?r~V;_SJc}Lq%H6i;sHB@%B`r0;f$z@veP%adOt`SsOD=k)L{UkdQ)+s~ZwG+&QY- ztmz^Yqr;CGsM8jEhy!~98w$Yciot<)O^1yD=yQPZU$JGTWW9GURZm#|e1MdkYD}#9 zu@fNX=RXNPZ*G2Q$8Z5`iHZDc*$m8^F2p$f*jjbj&dK7^|6lPeCO*`Xt3zxpetxT% zIg(;4tC6M$(VkT6f$1yfg}NfUi@iTZo_Hu>18!Ff*8JyL4NRRJ3lz@6amS%^By8sdL2-^H~NE@_p=cO zrx@$fLIlqA3xB#GV|_VP{&!bL5**yz`Ns{!@uCC-iJI(vR$AHF*)KIRdDe9d?+9im zM4AvL%-_uKa%U$JTN)9XAj1Iq)#1wwImf4LL3@7z*Nr};I^K)@7t- zFLDI^v0I;cgcYQ{66M0%Q|uMwYvU-hMWvG<^<9Tnu-o6`pglKOfKV zrqqmdISw-5@l?WWbD;+Tr~Q;&C{f2vT1!vL0pr<%hwr9t$II#`PXfyE#jW+aR**Rc zA&r}JnkyNB=OxXGhxZQ+`ITef#a7jXE2sB87)ip>?OUkbr%>JPG&- zil={eNrIW`)l@GPL+`zq;n#j85TSoKTqFv9FQ#^9!bT)6k^e*LjCtdR3rMtf>g?TC z!GyFq1&JS;zh_Yq>4rw6baJHnGjeCJz0Wf7aPA!6+VBxKUCBAGpLwS$rcun#=wI~h zTTgVqSyjFevJhtu+Nqj>GG6=n-7Y21ljXfT*+5RRGoQv!XC=_;cdPBZpMgmHgj2TC z*oEYH#N+lw8I4S9*5h|pwuZKQ?f@j7e$DGiwbP9B>z;r-l#||E6m9{zjx~PPO)}nl z>Rw&miHp-C(2+PkV%KuD9!;Tt&27r<)(u6}Pph;Gv*7;d+5lhn*(NY$bNlV9aQZ(l zdmrLIk{~}5`$(_8N=bkcu+!gR`fc3lt3$G&TfU0>^Ub*@uS2*R8E1W7!5ShUmLuq6 z=`JyqT;%Skd@Hcw-=nlM1Pv|ztEGS!1VXGdyB&H{cQ>Uilm;w05$ghcLAjFeOS<>u zmE)0Cl!zpUWyK-hu37zDe}Mvrye>up_MF}7WP%4ZfJ}FMXkGt9;eN{n)?_F{V}Pf2 z=h~SIv)bPK6kz92??l;CCTQe~baui-;Qe5-I7VzJ`xtC_*q6ap60dtLi6$@d;mwyHLP34W;^D4KHMgr?GTyOZawPSo3C%W zup#_$cI&&v9*{`FArbniB zFVMiiw?xdQFrkCIy@OwFG@<@j`I^38@P80;mPlpp%cYD3q>#YPO+j?)T^8Rr=PaoT7U9KL2>!6*P z_gZP4pPGkQ`~2a{#Tb4TST4rlq5Ai1o6pm!HqrNRfhAVDKhav5d4C(`jyUi$mey^X zR7Ac}l+>_1Mn=8I69j`(zD~PMET6T%#2wmk1s|#BEO<`TQi764H=&EU>-+O954O91 zk3{!IIL6T}q(vTh2@n|??A$b(>eGRsEQ~3V_*{NbS}U5oW4(^%Cpkm>O=O)+wmrBZ zJaiVT-_EY#+L7yO^hw#{Puu@y;3w?!;@O>jCW8`_+FLS=kbr^7d<4~F{zLHRkN*$# z6Xyx}A~|MJn5>!ZCoAA$1b4y9doriGHn}GOG-+r@rA@FwIs)($TuHfgq<33EW8<5x zbnEV~x^-f|L*ImFVhm>%LdSwF+cL1r`KRrIZ{76*1SmD`pl-n!q>4=M1iCpHfI(p+3{o&&B#110&+mp*5f8?r?u z)orQbw3mlgM}Jl64IjE5FRLpnsyjs~oS8w|hc{sAA71?OS{xi4r1>aC^dwHglI30H z<K#qYOf({fSp^^<;Q+7_Uua89%mB57|Vlk59CJ zqN#C|mCo^7CJI+TWgeq?SOpJVuo=oei;e8GnE+S8;gBO=tiz`RiUghQ{$6a-bp*-NP-6-|^x9dbv#6{!v-1SCp=2hdaZhYR`qz8jzL kRY;<~^Vtr-ph5{Wd!eyR#%KC`TpUG7PF=Q2+9ddY0aAZ4KL7v# From 8e4d54f68b499da62ad37e4dc5c6236c2f4e9b7b Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 7 Nov 2012 19:44:41 +0100 Subject: [PATCH 05/17] fixed problem with reply button --- .gitignore | 4 ++-- .../UserInterfaceState.xcuserstate | Bin 36831 -> 0 bytes WebKit/scripts/controller/Mentions.js | 8 +++++--- WebKit/scripts/helper/Core.js | 12 ++++++++---- WebKit/scripts/helper/HostApp.js | 15 +++++++++++++++ 5 files changed, 30 insertions(+), 9 deletions(-) delete mode 100644 Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.gitignore b/.gitignore index b87be8a..07938ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -build/ -Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate +Mac/build/ +Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate dsa_priv.pem diff --git a/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate b/Mac/Tentia.xcodeproj/project.xcworkspace/xcuserdata/jeena.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ad1b90971046be74f00e5678fa97557c408018a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36831 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 N7|Q-%f8qIq{s#oLgqZ*U diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index b44fe50..af86c6c 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -9,10 +9,12 @@ function(HostApp, Timeline) { function Mentions() { this.is_not_init = false; - this.action = "mentions"; this.unread_mentions = 0; Timeline.call(this); + + this.action = "mentions"; + this.body.className = this.action; } Mentions.prototype = Object.create(Timeline.prototype); @@ -21,16 +23,16 @@ function(HostApp, Timeline) { Timeline.prototype.newStatus.call(this, status); - if(this.action == "mentions" && this.is_not_init) { + if(this.is_not_init) { this.unread_mentions += status.length; HostApp.unreadMentions(this.unread_mentions); } this.is_not_init = true; - } Mentions.prototype.getNewData = function(add_to_search) { + add_to_search = add_to_search || {}; if (!add_to_search["mentioned_entity"]) { diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 4d3cf82..c5f3eef 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -2,10 +2,11 @@ define([ "jquery", "helper/Paths", "lib/URI", + "helper/HostApp", "lib/vendor/jquery.plugins" ], -function(jQuery, Paths, URI) { +function(jQuery, Paths, URI, HostApp) { function Core() { @@ -122,13 +123,15 @@ function(jQuery, Paths, URI) { template.reply_to.onclick = function() { + var mentions = []; for (var i = 0; i < status.mentions.length; i++) { var mention = status.mentions[i]; if(mention.entity != HostApp.stringForKey("entity")) mentions.push(mention); } - this.replyTo(status.entity, status.id, mentions); + + _this.replyTo(status.entity, status.id, mentions); return false; } @@ -344,13 +347,14 @@ function(jQuery, Paths, URI) { return text.replace(hash, "$1$2$3"); } - Core.prototype.replyTo = function(entity, status_id, mentions) { + Core.prototype.replyTo = function(entity, status_id, mentions) { var string = "^" + entity.replace("https://", "") + " "; for (var i = 0; i < mentions.length; i++) { var e = mentions[i].entity.replace("https://", ""); if(string.indexOf(e) == -1) string += "^" + e + " "; } - controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); + debug("a") + HostApp.openNewMessageWidow(entity, status_id, string); } return Core; diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index a5c864b..0403b72 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -3,6 +3,7 @@ define(function() { var HostApp = {}; HostApp.setStringForKey = function(string, key) { + if (OS_TYPE == "mac") { controller.setString_forKey_(string, key); } else { @@ -11,6 +12,7 @@ define(function() { } HostApp.stringForKey = function(key) { + if (OS_TYPE == "mac") { return controller.stringForKey_(key); } else { @@ -19,6 +21,7 @@ define(function() { } HostApp.openURL = function(url) { + if (OS_TYPE == "mac") { controller.openURL_(url); } else { @@ -27,10 +30,12 @@ define(function() { } HostApp.loggedIn = function() { + controller.loggedIn(); } HostApp.logout = function() { + if (OS_TYPE == "mac") { controller.logout_(self); } else { @@ -39,6 +44,7 @@ define(function() { } HostApp.unreadMentions = function(i) { + if (OS_TYPE == "mac") { controller.unreadMentions_(i); } else { @@ -46,6 +52,15 @@ define(function() { } } + HostApp.openNewMessageWidow = function(entity, status_id, string) { + + if (OS_TYPE == "mac") { + controller.openNewMessageWindowInReplyTo_statusId_withString_(entity, status_id, string); + } else { + controller.openNewMessageWindowInReplyTostatusIdwithString(entity, status_id, string); + } + } + return HostApp; }); \ No newline at end of file From 6c055122852b78ff2d29be66ab179f02ad556e6d Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Wed, 7 Nov 2012 20:09:11 +0100 Subject: [PATCH 06/17] removed debug --- WebKit/scripts/helper/Core.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index c5f3eef..df5737c 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -215,6 +215,7 @@ function(jQuery, Paths, URI, HostApp) { Core.prototype.logout = function() { + this.body.innerHTML = ""; } @@ -222,6 +223,7 @@ function(jQuery, Paths, URI, HostApp) { // Helper functions Core.prototype.replaceShortened = function(url, message_node) { + var api = "http://api.bitly.com"; if(url.startsWith("http://j.mp/")) { api = "http://api.j.mp"; @@ -246,6 +248,7 @@ function(jQuery, Paths, URI, HostApp) { } Core.prototype.findMentions = function(node, mentions) { + var text = node.innerHTML; var mentions_in_text = []; var res = text.match(/(\^\S+)/ig); @@ -298,6 +301,7 @@ function(jQuery, Paths, URI, HostApp) { } Core.prototype.parseMentions = function(text, post_id, entity) { + var mentions = []; if (post_id && entity) { @@ -325,7 +329,9 @@ function(jQuery, Paths, URI, HostApp) { } Core.prototype.ISODateString = function(d){ + function pad(n){return n<10 ? '0'+n : n} + return d.getUTCFullYear()+'-' + pad(d.getUTCMonth()+1)+'-' + pad(d.getUTCDate())+'T' @@ -335,11 +341,13 @@ function(jQuery, Paths, URI, HostApp) { } Core.prototype.replaceURLWithHTMLLinks = function(text, entities, message_node) { + var exp = /(([^\^]https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_()|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; return text.replace(exp, "$1"); } Core.prototype.replaceUsernamesWithLinks = function(text, mentions) { + return text; // FIXME! var username = /(^|\s)(\^)(\w+)/ig; var hash = /(^|\s)(#)(\w+)/ig; @@ -348,12 +356,13 @@ function(jQuery, Paths, URI, HostApp) { } Core.prototype.replyTo = function(entity, status_id, mentions) { + var string = "^" + entity.replace("https://", "") + " "; for (var i = 0; i < mentions.length; i++) { var e = mentions[i].entity.replace("https://", ""); if(string.indexOf(e) == -1) string += "^" + e + " "; } - debug("a") + HostApp.openNewMessageWidow(entity, status_id, string); } From fa2bda0394d1625f8814257fd9947fb5a856eedc Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 21:16:52 +0100 Subject: [PATCH 07/17] Added conversation view --- Mac/Controller.h | 6 + Mac/Controller.m | 21 ++- Mac/English.lproj/MainMenu.xib | 154 +++++++++++++++++++++- Mac/ViewDelegate.h | 2 + Mac/ViewDelegate.m | 10 +- WebKit/css/default.css | 4 + WebKit/scripts/controller/Conversation.js | 126 ++++++++++++++++++ WebKit/scripts/controller/Oauth.js | 10 +- WebKit/scripts/helper/Core.js | 110 ++++++++++------ WebKit/scripts/helper/Followings.js | 50 +++++++ WebKit/scripts/helper/HostApp.js | 9 ++ WebKit/scripts/helper/Paths.js | 10 +- WebKit/scripts/main.js | 10 +- 13 files changed, 474 insertions(+), 48 deletions(-) create mode 100644 WebKit/scripts/helper/Followings.js diff --git a/Mac/Controller.h b/Mac/Controller.h index 8c4f381..4a91b57 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -19,6 +19,8 @@ IBOutlet NSWindow *timelineViewWindow; IBOutlet WebView *mentionsView; IBOutlet NSWindow *mentionsViewWindow; + IBOutlet WebView *conversationView; + IBOutlet NSWindow *conversationViewWindow; NSWindow *loginViewWindow; NSProgressIndicator *loginActivityIndicator; IBOutlet NSMenuItem *globalHotkeyMenuItem; @@ -32,6 +34,8 @@ @property (retain, nonatomic) IBOutlet NSWindow *timelineViewWindow; @property (retain, nonatomic) IBOutlet WebView *mentionsView; @property (retain, nonatomic) IBOutlet NSWindow *mentionsViewWindow; +@property (retain, nonatomic) IBOutlet WebView *conversationView; +@property (retain, nonatomic) IBOutlet NSWindow *conversationViewWindow; @property (assign) IBOutlet NSWindow *loginViewWindow; @property (assign) IBOutlet NSProgressIndicator *loginActivityIndicator; @property (retain, nonatomic) IBOutlet NSMenuItem *globalHotkeyMenuItem; @@ -58,6 +62,8 @@ - (IBAction)login:(id)sender; - (IBAction)logout:(id)sender; +- (IBAction)showConversationForPostId:(NSString *)postId andEntity:(NSString *)entity; + OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData); diff --git a/Mac/Controller.m b/Mac/Controller.m index 7c07b4a..01766d3 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -15,7 +15,8 @@ @synthesize loginViewWindow; @synthesize loginActivityIndicator; -@synthesize timelineView, timelineViewWindow, mentionsView, mentionsViewWindow, globalHotkeyMenuItem, viewDelegate; +@synthesize timelineView, timelineViewWindow, mentionsView, mentionsViewWindow, conversationView, conversationViewWindow; +@synthesize globalHotkeyMenuItem, viewDelegate; @synthesize logoLayer; @synthesize oauthView, accessToken; @@ -53,6 +54,10 @@ accessToken = [[AccessToken alloc] init]; //[accessToken setString:nil forKey:@"user_access_token"]; + if (![accessToken stringForKey:@"version-0.2.0-new-login"]) { + [self logout:self]; + [accessToken setString:@"yes" forKey:@"version-0.2.0-new-login"]; + } if (![accessToken stringForKey:@"user_access_token"]) { [timelineViewWindow performClose:self]; @@ -103,6 +108,14 @@ [mentionsView setPolicyDelegate:viewDelegate]; [mentionsView setUIDelegate:viewDelegate]; [[mentionsView windowScriptObject] setValue:self forKey:@"controller"]; + + + viewDelegate.conversationView = conversationView; + [[conversationView mainFrame] loadHTMLString:index_string baseURL:url]; + [conversationView setFrameLoadDelegate:viewDelegate]; + [conversationView setPolicyDelegate:viewDelegate]; + [conversationView setUIDelegate:viewDelegate]; + [[conversationView windowScriptObject] setValue:self forKey:@"controller"]; // FIXME: show timelineView after authentification } @@ -305,6 +318,12 @@ [mentionsView stringByEvaluatingJavaScriptFromString:@"tentia_instance.getNewData(true)"]; } +- (IBAction)showConversationForPostId:(NSString *)postId andEntity:(NSString *)entity +{ + NSString *js = [NSString stringWithFormat:@"tentia_instance.showStatus('%@', '%@');", postId, entity]; + [conversationView stringByEvaluatingJavaScriptFromString:js]; + [conversationViewWindow makeKeyAndOrderFront:self]; +} /* CARBON */ diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 930c402..23ae427 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -3,7 +3,7 @@ 1080 12C60 - 2843 + 2844 1187.34 625.00 @@ -15,7 +15,7 @@ YES - 2843 + 2844 1810 @@ -920,7 +920,7 @@ - + 12 YES @@ -935,6 +935,66 @@ {376, 581} + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + mentions + YES + + + 15 + 2 + {{1292, 328}, {376, 581}} + 1685586944 + Conversation + NSWindow + + + + + 256 + + YES + + + 274 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + + {376, 581} + + + + + + + NO + YES + + + {376, 581} + + + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} @@ -1561,6 +1621,22 @@ 622 + + + conversationView + + + + 632 + + + + conversationViewWindow + + + + 633 + makeKeyAndOrderFront: @@ -1617,6 +1693,14 @@ 619 + + + delegate + + + + 631 + @@ -2366,6 +2450,30 @@ + + 628 + + + YES + + + + Mentions + + + 629 + + + YES + + + + + + 630 + + + @@ -2477,6 +2585,11 @@ 610.IBPluginDependency 613.IBPluginDependency 620.IBPluginDependency + 628.IBPluginDependency + 628.IBWindowTemplateEditedContentRect + 628.NSWindowTemplate.visibleAtLaunch + 629.IBPluginDependency + 630.IBPluginDependency 72.IBPluginDependency 73.IBPluginDependency 79.IBPluginDependency @@ -2593,6 +2706,11 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{344, 175}, {376, 581}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2613,7 +2731,7 @@ - 627 + 633 @@ -2627,11 +2745,15 @@ YES login: logout: + openNewMessageWindow: + sendTweet: YES id id + id + id @@ -2640,6 +2762,8 @@ YES login: logout: + openNewMessageWindow: + sendTweet: YES @@ -2651,12 +2775,22 @@ logout: id + + openNewMessageWindow: + id + + + sendTweet: + id + YES YES + conversationView + conversationViewWindow globalHotkeyMenuItem loginActivityIndicator loginViewWindow @@ -2669,6 +2803,8 @@ YES + WebView + NSWindow NSMenuItem NSProgressIndicator NSWindow @@ -2684,6 +2820,8 @@ YES YES + conversationView + conversationViewWindow globalHotkeyMenuItem loginActivityIndicator loginViewWindow @@ -2696,6 +2834,14 @@ YES + + conversationView + WebView + + + conversationViewWindow + NSWindow + globalHotkeyMenuItem NSMenuItem diff --git a/Mac/ViewDelegate.h b/Mac/ViewDelegate.h index 8fc4f46..5001c65 100644 --- a/Mac/ViewDelegate.h +++ b/Mac/ViewDelegate.h @@ -13,11 +13,13 @@ @interface ViewDelegate : NSObject { WebView *timelineView; WebView *mentionsView; + WebView *conversationView; WebView *oauthView; } @property (nonatomic, assign) WebView *timelineView; @property (nonatomic, assign) WebView *mentionsView; +@property (nonatomic, assign) WebView *conversationView; @property (nonatomic, assign) WebView *oauthView; @end diff --git a/Mac/ViewDelegate.m b/Mac/ViewDelegate.m index 6ec5761..2d3347f 100644 --- a/Mac/ViewDelegate.m +++ b/Mac/ViewDelegate.m @@ -11,7 +11,7 @@ @implementation ViewDelegate -@synthesize timelineView, mentionsView, oauthView; +@synthesize timelineView, mentionsView, conversationView, oauthView; - (void)webView:(WebView *)sender addMessageToConsole:(NSDictionary *)message;{ @@ -19,6 +19,7 @@ NSString *viewName = @"TimelineView"; if (sender == mentionsView) viewName = @"MentionsView"; + if (sender == conversationView) viewName = @"ConversationView"; if (sender == oauthView) viewName = @"OauthView"; NSLog(@"js<%@>: %@:%@: %@", @@ -32,6 +33,7 @@ - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { NSString *viewName = @"TimelineView"; if (sender == mentionsView) viewName = @"MentionsView"; + if (sender == conversationView) viewName = @"ConversationView"; if (sender == oauthView) viewName = @"OauthView"; NSLog(@"jsa<%@>: %@", viewName, message); @@ -47,7 +49,11 @@ if (sender == oauthView) { [oauthView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('oauth') }"]; - + + } else if(sender == conversationView) { + + [conversationView stringByEvaluatingJavaScriptFromString:@"function HostAppGo() { start('conversation') }"]; + } else { NSString *action = @"timeline"; diff --git a/WebKit/css/default.css b/WebKit/css/default.css index a5cb424..1b3b367 100644 --- a/WebKit/css/default.css +++ b/WebKit/css/default.css @@ -62,6 +62,10 @@ li:after { height: 0; } +.highlight { + border-right: 5px solid #f17779; +} + h1 { font-size: 1em; font-weight: bold; diff --git a/WebKit/scripts/controller/Conversation.js b/WebKit/scripts/controller/Conversation.js index e69de29..7441e9d 100644 --- a/WebKit/scripts/controller/Conversation.js +++ b/WebKit/scripts/controller/Conversation.js @@ -0,0 +1,126 @@ +define([ + "helper/HostApp", + "helper/Core", + "helper/Paths", + "lib/URI" +], + +function(HostApp, Core, Paths, URI, Followings) { + + + function Conversation() { + + Core.call(this); + + this.action = "conversation"; + + this.body = document.createElement("ol"); + this.body.className = this.action; + document.body.appendChild(this.body); + } + + Conversation.prototype = Object.create(Core.prototype); + + + Conversation.addStatus = function(status) { + + this.body.appendChild(this.getStatusDOMElement(status)); + } + + + Conversation.prototype.showStatus = function(id, entity) { + + this.body.innerHTML = ""; + this.append(id, entity); + } + + Conversation.prototype.append = function(id, entity, node, add_after) { + + var _this = this; + + var callback = function(resp) { + + var status = JSON.parse(resp.responseText); + + var dom_element = _this.getStatusDOMElement(status); + + if (node) { + + node.parentNode.insertBefore(dom_element, node); + + } else { + dom_element.className = "highlight"; + _this.body.appendChild(dom_element); + + _this.appendMentioned(id, entity, dom_element); + } + + + if (status.mentions && status.mentions.length > 0 && status.mentions[0].post) { + _this.append(status.mentions[0].post, status.mentions[0].entity, dom_element); + } + } + + function getRemoteStatus(profile) { + var server = profile["https://tent.io/types/info/core/v0.1.0"].servers[0]; + Paths.getURL(URI(server + "/posts/" + id).toString(), "GET", callback, null, false); + } + + + if (entity == HostApp.stringForKey("entity")) { + + var url = URI(Paths.mkApiRootPath("/posts/" + id)); + Paths.getURL(url.toString(), "GET", callback, null); + + } else if(this.followings.followings[entity]) { + + getRemoteStatus(this.followings.followings[entity].profile); + + } else { + + Paths.findProfileURL(entity, function(profile_url) { + + if (profile_url) { + + Paths.getURL(profile_url, "GET", function(resp) { + + getRemoteStatus(JSON.parse(resp.responseText)); + + }, null, false); // do not send auth-headers + } + }); + } + } + + Conversation.prototype.appendMentioned = function(id, entity, node) { + + var url = URI(Paths.mkApiRootPath("/posts")); + url.addSearch("mentioned_post", id); + url.addSearch("post_types", "https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Fstatus%2Fv0.1.0"); + + var _this = this; + var callback = function(resp) { + + var statuses = JSON.parse(resp.responseText); + + for (var i = 0; i < statuses.length; i++) { + + var status = statuses[i]; + var dom_element = _this.getStatusDOMElement(status); + _this.body.appendChild(dom_element); + + _this.appendMentioned(status.id, status.entity, dom_element); + } + } + + Paths.getURL(url.toString(), "GET", callback); + + } + + // /posts?limit=10&mentioned_post=gnqqyt&post_types=https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Fstatus%2Fv0.1.0,https%3A%2F%2Ftent.io%2Ftypes%2Fpost%2Frepost%2Fv0.1.0 HTTP/1.1" 200 - 0.0582 + + + + return Conversation; + +}); \ No newline at end of file diff --git a/WebKit/scripts/controller/Oauth.js b/WebKit/scripts/controller/Oauth.js index 983eaa4..9f29a6c 100644 --- a/WebKit/scripts/controller/Oauth.js +++ b/WebKit/scripts/controller/Oauth.js @@ -18,7 +18,13 @@ function(HostApp, Paths, Hmac) { ], "scopes": { "read_posts": "Uses posts to show them in a list", - "write_posts": "Posts on users behalf" + "write_posts": "Posts on users behalf", + "read_profile": "Displays your own profile", + "write_profile": "Updating profile and mentions pointer", + "read_followers": "Display a list of people who follow you", + "write_followers": "Be able to block people who follow you", + "read_followings": "Display following list and their older posts in conversations", + "write_followings": "Follow ne entities" } }; @@ -74,7 +80,7 @@ function(HostApp, Paths, Hmac) { + "&redirect_uri=" + escape(this.app_info["redirect_uris"][0]) + "&scope=" + Object.keys(this.app_info["scopes"]).join(",") + "&state=" + this.state - + "&tent_post_types=" + escape("https://tent.io/types/posts/status/v0.1.0"); + + "&tent_post_types=all"; HostApp.openURL(this.apiRoot() + auth); } diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index df5737c..b94b5f0 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -3,13 +3,16 @@ define([ "helper/Paths", "lib/URI", "helper/HostApp", + "helper/Followings", "lib/vendor/jquery.plugins" ], -function(jQuery, Paths, URI, HostApp) { +function(jQuery, Paths, URI, HostApp, Followings) { function Core() { + this.followings = new Followings(); + } Core.prototype.getTemplate = function() { @@ -121,7 +124,6 @@ function(jQuery, Paths, URI, HostApp) { var template = this.getTemplate(); - template.reply_to.onclick = function() { var mentions = []; @@ -140,25 +142,39 @@ function(jQuery, Paths, URI, HostApp) { template.username.innerText = status.entity; template.username.href = status.entity; // FIXME open profile - Paths.findProfileURL(status.entity, function(profile_url) { - if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + var profile = function(profile) { - if (profile && basic) { - if(basic.name) { - template.username.title = template.username.innerText; - template.username.innerText = basic.name; - } - if(basic.avatar_url) { - template.image.onerror = function() { template.image.src = 'img/default-avatar.png' }; - template.image.src = basic.avatar_url; - } - } - }, null, false); // do not send auth-headers + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + template.username.title = template.username.innerText; + template.username.innerText = basic.name; + } + if(basic.avatar_url) { + template.image.onerror = function() { template.image.src = 'img/default-avatar.png' }; + template.image.src = basic.avatar_url; + } } - }); + + } + + if (this.followings.followings[status.entity]) { + + profile(this.followings.followings[status.entity].profile); + + } else { + + Paths.findProfileURL(status.entity, function(profile_url) { + if (profile_url) { + Paths.getURL(profile_url, "GET", function(resp) { + var p = JSON.parse(resp.responseText); + profile(p) + }, null, false); // do not send auth-headers + } + }); + } + template.in_reply.parentNode.className = "hidden"; @@ -174,6 +190,12 @@ function(jQuery, Paths, URI, HostApp) { time.className = "timeago"; jQuery(time).timeago(); template.ago.appendChild(time); + + template.ago.href = "#" + template.ago.onclick = function() { + HostApp.showConversation(status.id, status.entity); + return false; + } // {"type":"Point","coordinates":[57.10803113,12.25854746]} if (status.content && status.content.location && status.content.location.type == "Point") { @@ -272,30 +294,44 @@ function(jQuery, Paths, URI, HostApp) { } } + var _this = this; for (var i = 0; i < mentions_in_text.length; i++) { var mention = mentions_in_text[i]; (function(mention) { // need this closure - Paths.findProfileURL(mention.entity, function(profile_url) { - if (profile_url) { - Paths.getURL(profile_url, "GET", function(resp) { - var profile = JSON.parse(resp.responseText); - var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; - if (profile && basic) { - if(basic.name) { - var new_text = node.innerHTML.replace( - mention.text, - "" - + basic.name - + "" - ); - node.innerHTML = new_text; - } - } - }, null, false); // do not send auth-headers + var profile = function(profile) { + var basic = profile["https://tent.io/types/info/basic/v0.1.0"]; + + if (profile && basic) { + if(basic.name) { + var new_text = node.innerHTML.replace( + mention.text, + "" + + basic.name + + "" + ); + node.innerHTML = new_text; + } } - }); + } + + if (_this.followings.followings[mention.entity]) { + + profile(_this.followings.followings[mention.entity].profile) + + } else { + + Paths.findProfileURL(mention.entity, function(profile_url) { + if (profile_url) { + Paths.getURL(profile_url, "GET", function(resp) { + var p = JSON.parse(resp.responseText); + profile(p) + }, null, false); // do not send auth-headers + } + }); + } + })(mention); } } diff --git a/WebKit/scripts/helper/Followings.js b/WebKit/scripts/helper/Followings.js new file mode 100644 index 0000000..0979020 --- /dev/null +++ b/WebKit/scripts/helper/Followings.js @@ -0,0 +1,50 @@ +define([ + "helper/Paths", + "lib/URI" +], + +function(Paths, URI) { + + function Followings() { + + this.timeout = 2 * 60 * 1000; + this.followings = {}; + this.before_id = null; + + var _this = this; + this.intervall = setInterval(function() { _this.getAllFollowings(); }, this.timeout); + + this.getAllFollowings(); + } + + Followings.prototype.getAllFollowings = function() { + + var _this = this; + + var callback = function(resp) { + + var fs = JSON.parse(resp.responseText) + + if (fs.length < 1) return; + + for (var i = 0; i < fs.length; i++) { + + var following = fs[i]; + _this.before_id = following.id; + _this.followings[following.entity] = following; + } + + _this.getAllFollowings(); + } + + var url = URI(Paths.mkApiRootPath("/followings")); + if (this.before_id) { + url.addSearch("before_id", this.before_id); + } + + Paths.getURL(url, "GET", callback); + } + + return Followings; + +}); \ No newline at end of file diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 0403b72..6ba6275 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -61,6 +61,15 @@ define(function() { } } + HostApp.showConversation = function(id, entity) { + + if (OS_TYPE == "mac") { + controller.showConversationForPostId_andEntity_(id, entity); + } else { + controller.showConversationForPostIdandEntity(id, entity); + } + } + return HostApp; }); \ No newline at end of file diff --git a/WebKit/scripts/helper/Paths.js b/WebKit/scripts/helper/Paths.js index 43b27e7..c2a6516 100644 --- a/WebKit/scripts/helper/Paths.js +++ b/WebKit/scripts/helper/Paths.js @@ -21,21 +21,28 @@ function(jQuery, HostApp, Hmac) { } Paths.getURL = function(url, http_method, callback, data, auth_header) { + jQuery.ajax({ + beforeSend: function(xhr) { if (data) xhr.setRequestHeader("Content-Length", data.length); if (auth_header) { // if is_set? auth_header + xhr.setRequestHeader("Authorization", auth_header); + } else { + var user_access_token = HostApp.stringForKey("user_access_token"); + if (auth_header !== false && user_access_token) { + auth_header = Hmac.makeAuthHeader( url, http_method, HostApp.stringForKey("user_mac_key"), user_access_token - ) + ); xhr.setRequestHeader("Authorization", auth_header); } } @@ -54,6 +61,7 @@ function(jQuery, HostApp, Hmac) { } Paths.findProfileURL = function(entity, callback) { + jQuery.ajax({ url: entity, type: "HEAD", diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index de3f063..4c5947f 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -39,6 +39,12 @@ function start(view) { } else if (view == "conversation") { + require(["controller/Conversation"], function(Conversation) { + + tentia_instance = new Conversation(); + + }); + } } @@ -59,10 +65,12 @@ function loadPlugin(url) { } function debug(string) { + if (typeof string != "string") { string = JSON.stringify(string); } + alert("DEBUG: " + string); } -setTimeout(HostAppGo, 1000); +setTimeout(HostAppGo, 2000); From f299176e7efc378d9945c78b6a1ec1900e0c2b2c Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 22:42:57 +0100 Subject: [PATCH 08/17] fixes #18 --- Mac/Controller.m | 1 + Mac/NewMessageWindow.m | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Mac/Controller.m b/Mac/Controller.m index 01766d3..0d6ce00 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -323,6 +323,7 @@ NSString *js = [NSString stringWithFormat:@"tentia_instance.showStatus('%@', '%@');", postId, entity]; [conversationView stringByEvaluatingJavaScriptFromString:js]; [conversationViewWindow makeKeyAndOrderFront:self]; + conversationViewWindow.title = @"Test"; } /* CARBON */ diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m index 98d56c1..f065e5f 100644 --- a/Mac/NewMessageWindow.m +++ b/Mac/NewMessageWindow.m @@ -141,11 +141,20 @@ BOOL retval = NO; if (commandSelector == @selector(insertNewline:)) { - retval = YES; // causes Apple to NOT fire the default enter action - textField.stringValue = [NSString stringWithFormat:@"%@\n", textField.stringValue]; + + NSText *text = [[textField window] fieldEditor:YES forObject:nil]; + + NSRange range = [text selectedRange]; + NSString *stringBefore = [textField.stringValue substringToIndex:range.location]; + NSString *stringAfter = [textField.stringValue substringFromIndex:range.location + range.length]; + + textField.stringValue = [NSString stringWithFormat:@"%@\n%@", stringBefore, stringAfter]; - [[[textField window] fieldEditor:YES forObject:nil] scrollRangeToVisible:NSMakeRange([[textField stringValue] length], 0)]; - [[[textField window] fieldEditor:YES forObject:nil] setSelectedRange:NSMakeRange([[textField stringValue] length], 0)]; + NSRange r = NSMakeRange(range.location + 1, 0); + [text scrollRangeToVisible:r]; + [text setSelectedRange:r]; + + retval = YES; // causes Apple to NOT fire the default enter action } if (commandSelector == @selector(noop:)) { From 6b0a1fde1783bba8ce679c34f0a8abdc6fc1ade8 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 23:19:12 +0100 Subject: [PATCH 09/17] problems with lookup gesture --- Mac/NewMessageWindow.m | 5 +++-- WebKit/scripts/helper/Core.js | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m index f065e5f..dbdd0f7 100644 --- a/Mac/NewMessageWindow.m +++ b/Mac/NewMessageWindow.m @@ -156,12 +156,13 @@ retval = YES; // causes Apple to NOT fire the default enter action } - - if (commandSelector == @selector(noop:)) { + else if (commandSelector == @selector(noop:)) { retval = YES; [self sendTweet:control]; } + NSLog(@"%@", NSStringFromSelector(commandSelector) ); + return retval; } @end diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index b94b5f0..5435ec1 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -232,6 +232,8 @@ function(jQuery, Paths, URI, HostApp, Followings) { data["mentions"] = mentions; } + debug(data); + //return Paths.getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback } From 2bed2d844dacea50484a3fcf7c3bd7e98e94d601 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 23:38:17 +0100 Subject: [PATCH 10/17] fixed #17 --- Mac/English.lproj/NewMessageWindow.xib | 6 +++--- Mac/NewMessageWindow.m | 23 ++++++++++++++++++++--- WebKit/scripts/controller/Timeline.js | 2 +- WebKit/scripts/helper/Core.js | 2 -- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Mac/English.lproj/NewMessageWindow.xib b/Mac/English.lproj/NewMessageWindow.xib index 273c84f..ca3ff00 100644 --- a/Mac/English.lproj/NewMessageWindow.xib +++ b/Mac/English.lproj/NewMessageWindow.xib @@ -3,12 +3,12 @@ 1080 12C60 - 2843 + 2844 1187.34 625.00 com.apple.InterfaceBuilder.CocoaPlugin - 2843 + 2844 YES @@ -59,7 +59,7 @@ YES -1809842175 - 272629760 + 268435456 LucidaGrande diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m index dbdd0f7..7a7045a 100644 --- a/Mac/NewMessageWindow.m +++ b/Mac/NewMessageWindow.m @@ -138,6 +138,9 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector { + NSLog(@"%@", NSStringFromSelector(commandSelector) ); + + BOOL retval = NO; if (commandSelector == @selector(insertNewline:)) { @@ -161,8 +164,22 @@ [self sendTweet:control]; } - NSLog(@"%@", NSStringFromSelector(commandSelector) ); - - return retval; + return retval; } + + +/* Perform a Quick Look on the content at location in the event. If there are no Quick Look items at the location, call super. + Also, see quickLookPreviewItems: further below. + */ +- (void)quickLookWithEvent:(NSEvent *)event { + NSLog(@"%@", event); +} +/* Perform a Quick Look on the text cursor position, selection, or whatever is appropriate for your view. If there are no Quick Look + items, then call [[self nextResponder] tryToPerform:_cmd with:sender]; to pass the request up the responder chain. Eventually + AppKit will attempt to perform a dictionary look up. Also see quickLookWithEvent: above. + */ +- (void)quickLookPreviewItems:(id)sender { + NSLog(@"%@", sender); +} + @end diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 41b8e38..28172e1 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -13,7 +13,7 @@ function(Core, Paths, HostApp, URI) { this.action = "timeline"; - this.max_length = 20; + this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds this.since_id = null; this.since_id_entity = null; diff --git a/WebKit/scripts/helper/Core.js b/WebKit/scripts/helper/Core.js index 5435ec1..b94b5f0 100644 --- a/WebKit/scripts/helper/Core.js +++ b/WebKit/scripts/helper/Core.js @@ -232,8 +232,6 @@ function(jQuery, Paths, URI, HostApp, Followings) { data["mentions"] = mentions; } - debug(data); - //return Paths.getURL(url.toString(), http_method, callback, JSON.stringify(data)); // FIXME: error callback } From 46d59dbce359d2c2807fa23f007d718e3e7dc305 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 23:40:58 +0100 Subject: [PATCH 11/17] removed unnecessary debugging code --- Mac/NewMessageWindow.m | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Mac/NewMessageWindow.m b/Mac/NewMessageWindow.m index 7a7045a..b7783fd 100644 --- a/Mac/NewMessageWindow.m +++ b/Mac/NewMessageWindow.m @@ -138,9 +138,6 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector { - NSLog(@"%@", NSStringFromSelector(commandSelector) ); - - BOOL retval = NO; if (commandSelector == @selector(insertNewline:)) { @@ -167,19 +164,4 @@ return retval; } - -/* Perform a Quick Look on the content at location in the event. If there are no Quick Look items at the location, call super. - Also, see quickLookPreviewItems: further below. - */ -- (void)quickLookWithEvent:(NSEvent *)event { - NSLog(@"%@", event); -} -/* Perform a Quick Look on the text cursor position, selection, or whatever is appropriate for your view. If there are no Quick Look - items, then call [[self nextResponder] tryToPerform:_cmd with:sender]; to pass the request up the responder chain. Eventually - AppKit will attempt to perform a dictionary look up. Also see quickLookWithEvent: above. - */ -- (void)quickLookPreviewItems:(id)sender { - NSLog(@"%@", sender); -} - @end From d8683ed9d5b1e74f535a521f90815da710a89d57 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Fri, 9 Nov 2012 23:52:24 +0100 Subject: [PATCH 12/17] fixed #20 --- WebKit/scripts/controller/Timeline.js | 11 ++++++----- WebKit/scripts/main.js | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/WebKit/scripts/controller/Timeline.js b/WebKit/scripts/controller/Timeline.js index 28172e1..8242ccf 100644 --- a/WebKit/scripts/controller/Timeline.js +++ b/WebKit/scripts/controller/Timeline.js @@ -12,6 +12,7 @@ function(Core, Paths, HostApp, URI) { Core.call(this); this.action = "timeline"; + this.reload_blocked = false; this.max_length = 200; this.timeout = 10 * 1000; // every 10 seconds @@ -82,12 +83,16 @@ function(Core, Paths, HostApp, URI) { } those.newStatus(json); + those.reload_blocked = false; } var data = null; if (HostApp.stringForKey("user_access_token")) { - Paths.getURL(url.toString(), http_method, callback, data); // FIXME: error callback + if (!this.reload_blocked) { + this.reload_blocked = true; + Paths.getURL(url.toString(), http_method, callback, data); // FIXME: error callback + } } } @@ -97,10 +102,6 @@ function(Core, Paths, HostApp, URI) { Core.prototype.sendNewMessage.call(this, content, in_reply_to_status_id, in_reply_to_entity, callback); } - Timeline.prototype.foo = function(a) { - return a; - } - return Timeline; }); \ No newline at end of file diff --git a/WebKit/scripts/main.js b/WebKit/scripts/main.js index 4c5947f..0234f5e 100644 --- a/WebKit/scripts/main.js +++ b/WebKit/scripts/main.js @@ -73,4 +73,21 @@ function debug(string) { alert("DEBUG: " + string); } -setTimeout(HostAppGo, 2000); +function go() { // wait untill everything is loaded + setTimeout(function() { + + if (HostAppGo != undefined) { + + HostAppGo(); + + } else { + + go(); + + } + + }, 500); +} + +go(); + From 9bcba0beaec06e4de73d67b7a3b26ea7eb835797 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 10 Nov 2012 01:17:52 +0100 Subject: [PATCH 13/17] implemented Notification Center --- Mac/Controller.h | 4 +++- Mac/Controller.m | 26 ++++++++++++++++++++++++++ WebKit/scripts/controller/Mentions.js | 16 +++++++++++++--- WebKit/scripts/helper/HostApp.js | 6 ++++++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/Mac/Controller.h b/Mac/Controller.h index 4a91b57..5a7a499 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -14,7 +14,7 @@ #import "AccessToken.h" -@interface Controller : NSObject { +@interface Controller : NSObject { IBOutlet WebView *timelineView; IBOutlet NSWindow *timelineViewWindow; IBOutlet WebView *mentionsView; @@ -52,6 +52,8 @@ - (NSString *)pluginURL; - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; - (void)unreadMentions:(NSInteger)count; +- (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity; + - (void)openURL:(NSString *)url; - (void)setString:(NSString *)string forKey:(NSString *)aKey; diff --git a/Mac/Controller.m b/Mac/Controller.m index 0d6ce00..6f2764d 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -23,6 +23,7 @@ - (void)awakeFromNib { [self initHotKeys]; + [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self @@ -257,6 +258,24 @@ } } +- (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity { + + NSUserNotification *notification = [[NSUserNotification alloc] init]; + notification.title = @"Tent Mention"; + notification.subtitle = [NSString stringWithFormat:@"Mentioned by %@", name]; + notification.informativeText = text; + notification.hasActionButton = YES; + notification.actionButtonTitle = @"Show"; + notification.soundName = NSUserNotificationDefaultSoundName; + notification.userInfo = [NSDictionary dictionaryWithObjectsAndKeys: + entity, @"entity", + postId, @"postId", nil]; + + NSLog(@"%@", notification); + + [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; +} + - (void)openURL:(NSString *)url { [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } @@ -326,6 +345,13 @@ conversationViewWindow.title = @"Test"; } +// Notifications + +- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification +{ + [self showConversationForPostId:[notification.userInfo objectForKey:@"postId"] andEntity:[notification.userInfo objectForKey:@"entity"]]; +} + /* CARBON */ OSStatus handler(EventHandlerCallRef nextHandler, EventRef theEvent, void* userData) diff --git a/WebKit/scripts/controller/Mentions.js b/WebKit/scripts/controller/Mentions.js index af86c6c..2451555 100644 --- a/WebKit/scripts/controller/Mentions.js +++ b/WebKit/scripts/controller/Mentions.js @@ -19,13 +19,23 @@ function(HostApp, Timeline) { Mentions.prototype = Object.create(Timeline.prototype); - Mentions.prototype.newStatus = function(status) { + Mentions.prototype.newStatus = function(statuses) { - Timeline.prototype.newStatus.call(this, status); + Timeline.prototype.newStatus.call(this, statuses); if(this.is_not_init) { - this.unread_mentions += status.length; + this.unread_mentions += statuses.length; HostApp.unreadMentions(this.unread_mentions); + for (var i = 0; i < statuses.length; i++) { + var status = statuses[i]; + + var name; + if(this.followings.followings[status.entity]) { + name = this.followings.followings[status.entity].profile["https://tent.io/types/info/basic/v0.1.0"].name; + } + + HostApp.notificateUserAboutMention(status.content.text, name || status.entity, status.id, status.entity); + }; } this.is_not_init = true; diff --git a/WebKit/scripts/helper/HostApp.js b/WebKit/scripts/helper/HostApp.js index 6ba6275..7e1d5e0 100644 --- a/WebKit/scripts/helper/HostApp.js +++ b/WebKit/scripts/helper/HostApp.js @@ -70,6 +70,12 @@ define(function() { } } + HostApp.notificateUserAboutMention = function(text, name, post_id, entity) { + if (OS_TYPE == "mac") { + controller.notificateUserAboutMention_fromName_withPostId_andEntity_(text, name, post_id, entity); + } + } + return HostApp; }); \ No newline at end of file From 54e75128dce1a914709e0cecbc0ac734d381b1e7 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 10 Nov 2012 02:01:35 +0100 Subject: [PATCH 14/17] fixed wrong position of conversation window --- Mac/Controller.h | 2 +- Mac/Controller.m | 2 +- Mac/English.lproj/MainMenu.xib | 44 ++++++++++++++++++++-------------- TimelineView.js | 4 ---- publish/ReleaseNotes.html | 11 ++++++++- 5 files changed, 38 insertions(+), 25 deletions(-) delete mode 100644 TimelineView.js diff --git a/Mac/Controller.h b/Mac/Controller.h index 5a7a499..44b1874 100644 --- a/Mac/Controller.h +++ b/Mac/Controller.h @@ -51,7 +51,7 @@ - (void)openNewMessageWindowInReplyTo:(NSString *)userName statusId:(NSString *)statusId withString:(NSString *)string; - (NSString *)pluginURL; - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -- (void)unreadMentions:(NSInteger)count; +- (void)unreadMentions:(int)count; - (void)notificateUserAboutMention:(NSString *)text fromName:(NSString *)name withPostId:(NSString *)postId andEntity:(NSString *)entity; - (void)openURL:(NSString *)url; diff --git a/Mac/Controller.m b/Mac/Controller.m index 6f2764d..8d2e9cb 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -247,7 +247,7 @@ return nil; } -- (void)unreadMentions:(NSInteger)count { +- (void)unreadMentions:(int)count { if (![mentionsViewWindow isVisible] && count > 0) { [timelineViewWindow setTitle:[NSString stringWithFormat:@"Tentia (^%i)", count]]; [[[NSApplication sharedApplication] dockTile] setBadgeLabel:[NSString stringWithFormat:@"%i", count]]; diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 23ae427..807fb4d 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -920,7 +920,7 @@ - + 12 YES @@ -942,7 +942,7 @@ mentions YES - + 15 2 {{1292, 328}, {376, 581}} @@ -951,13 +951,13 @@ NSWindow - + 256 YES - - + + 274 YES @@ -981,12 +981,12 @@ {376, 581} - + - + NO YES @@ -994,7 +994,7 @@ {376, 581} - + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} @@ -1133,6 +1133,7 @@ {{391, 46}, {75, 32}} + _NS:9 YES @@ -1625,7 +1626,7 @@ conversationView - + 632 @@ -1633,7 +1634,7 @@ conversationViewWindow - + 633 @@ -1696,7 +1697,7 @@ delegate - + 631 @@ -2452,27 +2453,27 @@ 628 - + YES - + Mentions 629 - + YES - + - + 630 - - + + @@ -2747,6 +2748,7 @@ logout: openNewMessageWindow: sendTweet: + showConversationForPostId:andEntity: YES @@ -2754,6 +2756,7 @@ id id id + NSString @@ -2764,6 +2767,7 @@ logout: openNewMessageWindow: sendTweet: + showConversationForPostId:andEntity: YES @@ -2783,6 +2787,10 @@ sendTweet: id + + showConversationForPostId:andEntity: + NSString + diff --git a/TimelineView.js b/TimelineView.js deleted file mode 100644 index af1750b..0000000 --- a/TimelineView.js +++ /dev/null @@ -1,4 +0,0 @@ -function TimelineView() { - -} - diff --git a/publish/ReleaseNotes.html b/publish/ReleaseNotes.html index df6285d..fa691fd 100644 --- a/publish/ReleaseNotes.html +++ b/publish/ReleaseNotes.html @@ -12,7 +12,16 @@ - + +

Tentia 0.2.0

+ +

Bugfixes

+

Implemented Notification Center

+

Implemented new Conversation view

+

Needs to reauthenticate to get all needed permissions

+ +
+

Tentia 0.1.2

Bugfixes

Mentions now appear as realnames

From c43014649d814c4eaaecd3c0237507b7c1db2fe9 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 10 Nov 2012 02:09:15 +0100 Subject: [PATCH 15/17] fixed wrong position of conversation window --- Mac/English.lproj/MainMenu.xib | 59 +++++++++++----------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 807fb4d..7e9d721 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -920,7 +920,7 @@ - + 12 YES @@ -942,7 +942,7 @@ mentions YES - + 15 2 {{1292, 328}, {376, 581}} @@ -951,13 +951,13 @@ NSWindow - + 256 YES - - + + 274 YES @@ -981,12 +981,12 @@ {376, 581} - + - + NO YES @@ -994,11 +994,11 @@ {376, 581} - + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} - mentions + conversations YES @@ -1626,7 +1626,7 @@ conversationView - + 632 @@ -1634,7 +1634,7 @@ conversationViewWindow - + 633 @@ -1697,7 +1697,7 @@ delegate - + 631 @@ -2453,27 +2453,27 @@ 628 - + YES - + Mentions 629 - + YES - + - + 630 - - + + @@ -2746,17 +2746,11 @@ YES login: logout: - openNewMessageWindow: - sendTweet: - showConversationForPostId:andEntity: YES id id - id - id - NSString @@ -2765,9 +2759,6 @@ YES login: logout: - openNewMessageWindow: - sendTweet: - showConversationForPostId:andEntity: YES @@ -2779,18 +2770,6 @@ logout: id - - openNewMessageWindow: - id - - - sendTweet: - id - - - showConversationForPostId:andEntity: - NSString -
From 16a746eb5367e62015cea902592d5c062fca5748 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 10 Nov 2012 02:23:03 +0100 Subject: [PATCH 16/17] removed debugging code --- Mac/Controller.m | 3 --- 1 file changed, 3 deletions(-) diff --git a/Mac/Controller.m b/Mac/Controller.m index 8d2e9cb..bd6fd4b 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -271,8 +271,6 @@ entity, @"entity", postId, @"postId", nil]; - NSLog(@"%@", notification); - [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; } @@ -342,7 +340,6 @@ NSString *js = [NSString stringWithFormat:@"tentia_instance.showStatus('%@', '%@');", postId, entity]; [conversationView stringByEvaluatingJavaScriptFromString:js]; [conversationViewWindow makeKeyAndOrderFront:self]; - conversationViewWindow.title = @"Test"; } // Notifications From 02ebc12451f9552638db519bcb77be3d678a6237 Mon Sep 17 00:00:00 2001 From: Jeena Paradies Date: Sat, 10 Nov 2012 11:04:52 +0100 Subject: [PATCH 17/17] clicking on notification center gets you to mentions view instead --- Mac/Controller.m | 3 +- Mac/English.lproj/MainMenu.xib | 95 +++++++++++++++++++++------------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/Mac/Controller.m b/Mac/Controller.m index bd6fd4b..7d18c3b 100644 --- a/Mac/Controller.m +++ b/Mac/Controller.m @@ -346,7 +346,8 @@ - (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification { - [self showConversationForPostId:[notification.userInfo objectForKey:@"postId"] andEntity:[notification.userInfo objectForKey:@"entity"]]; + //[self showConversationForPostId:[notification.userInfo objectForKey:@"postId"] andEntity:[notification.userInfo objectForKey:@"entity"]]; + [[self mentionsViewWindow] makeKeyAndOrderFront:self]; } /* CARBON */ diff --git a/Mac/English.lproj/MainMenu.xib b/Mac/English.lproj/MainMenu.xib index 7e9d721..1826672 100644 --- a/Mac/English.lproj/MainMenu.xib +++ b/Mac/English.lproj/MainMenu.xib @@ -729,6 +729,15 @@ Window YES + + + Timeline + 1 + 1048576 + 2147483647 + + + Minimize @@ -920,7 +929,7 @@ - + 12 YES @@ -942,7 +951,7 @@ mentions YES - + 15 2 {{1292, 328}, {376, 581}} @@ -951,13 +960,13 @@ NSWindow - + 256 YES - - + + 274 YES @@ -981,12 +990,12 @@ {376, 581} - + - + NO YES @@ -994,7 +1003,7 @@ {376, 581} - + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} @@ -1626,7 +1635,7 @@ conversationView - + 632 @@ -1634,7 +1643,7 @@ conversationViewWindow - + 633 @@ -1646,6 +1655,14 @@ 547 + + + makeKeyAndOrderFront: + + + + 642 + checkForUpdates: @@ -1697,7 +1714,7 @@ delegate - + 631 @@ -1789,8 +1806,8 @@ - + @@ -2046,6 +2063,7 @@ + @@ -2441,6 +2459,30 @@ + + 628 + + + YES + + + + Mentions + + + 629 + + + YES + + + + + + 630 + + + 551 @@ -2452,28 +2494,9 @@ - 628 - - - YES - - - - Mentions - - - 629 - - - YES - - - - - - 630 - - + 641 + + @@ -2591,6 +2614,7 @@ 628.NSWindowTemplate.visibleAtLaunch 629.IBPluginDependency 630.IBPluginDependency + 641.IBPluginDependency 72.IBPluginDependency 73.IBPluginDependency 79.IBPluginDependency @@ -2718,6 +2742,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2732,7 +2757,7 @@ - 633 + 642