packages feed

yesod 0.10.2 → 1.0.0

raw patch · 38 files changed

+4467/−652 lines, 38 filesdep ~hamletdep ~shakespeare-cssdep ~shakespeare-js

Dependency ranges changed: hamlet, shakespeare-css, shakespeare-js, shakespeare-text, transformers, wai, wai-extra, warp, yesod-auth, yesod-core, yesod-form, yesod-json, yesod-persistent

Files

Build.hs view
@@ -1,46 +1,50 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE CPP #-} module Build     ( getDeps     , touchDeps     , touch     , recompDeps-    , findHaskellFiles     ) where  -- FIXME there's a bug when getFileStatus applies to a file -- temporary deleted (e.g., Vim saving a file)  import           Control.Applicative ((<|>), many)+import qualified Data.Attoparsec.Text.Lazy as A+import           Data.Char (isSpace, isUpper)+import qualified Data.Text.Lazy.IO as TIO+ import           Control.Exception (SomeException, try)-import           Control.Monad (when, filterM, forM, forM_)+import           Control.Monad (when, filterM, forM, forM_, (>=>)) -import qualified Data.Attoparsec.Text.Lazy as A-import           Data.Char (isSpace) import           Data.Monoid (mappend)-import           Data.List (isSuffixOf) import qualified Data.Map as Map import qualified Data.Set as Set-import qualified Data.Text.Lazy.IO as TIO  import qualified System.Posix.Types import           System.Directory-import           System.FilePath (replaceExtension, (</>))+import           System.FilePath (takeExtension, replaceExtension, (</>)) import           System.PosixCompat.Files (getFileStatus, setFileTimes,                                              accessTime, modificationTime) + touch :: IO ()-touch = touchDeps id updateFileTime =<< getDeps+touch = touchDeps id updateFileTime =<< fmap snd (getDeps []) -recompDeps :: IO ()-recompDeps = touchDeps hiFile removeHi =<< getDeps+recompDeps :: [FilePath] -> IO ()+recompDeps = getDeps >=> touchDeps hiFile removeHi . snd  type Deps = Map.Map FilePath (Set.Set FilePath) -getDeps :: IO Deps-getDeps = do-    hss <- findHaskellFiles "."-    deps' <- mapM determineHamletDeps hss-    return $ fixDeps $ zip hss deps'+getDeps :: [FilePath] -> IO ([FilePath], Deps)+getDeps hsSourceDirs = do+    let defSrcDirs = case hsSourceDirs of+                        [] -> ["."]+                        ds -> ds+    hss <- fmap concat $ mapM findHaskellFiles defSrcDirs+    deps' <- mapM determineDeps hss+    return $ (hss, fixDeps $ zip hss deps')  touchDeps :: (FilePath -> FilePath) ->              (FilePath -> FilePath -> IO ()) ->@@ -103,42 +107,52 @@     fmap concat $ mapM go contents   where     go ('.':_)          = return []-    go ('c':"abal-dev") = return []-    go ('d':"ist")      = return []-    go x = do-        let y = path </> x-        d <- doesDirectoryExist y-        if d-            then findHaskellFiles y-            else if ".hs" `isSuffixOf` x || ".lhs" `isSuffixOf` x-                    then return [y]-                    else return []+    go filename = do+        d <- doesDirectoryExist full+        if not d+          then if isHaskellFile+                  then return [full]+                  else return []+          else if isHaskellDir+                 then findHaskellFiles full+                 else return []+      where+        -- this could fail on unicode+        isHaskellDir  = isUpper (head filename)+        isHaskellFile = takeExtension filename `elem` watch_files+        full = path </> filename+        watch_files = [".hs", ".lhs"] -data TempType = Hamlet | Verbatim | Messages FilePath | StaticFiles FilePath+data TempType = StaticFiles FilePath+              | Verbatim | Messages FilePath | Hamlet      deriving Show -determineHamletDeps :: FilePath -> IO [FilePath]-determineHamletDeps x = do+determineDeps :: FilePath -> IO [FilePath]+determineDeps x = do     y <- TIO.readFile x -- FIXME catch IO exceptions     let z = A.parse (many $ (parser <|> (A.anyChar >> return Nothing))) y     case z of         A.Fail{} -> return []         A.Done _ r -> mapM go r >>= filterM doesFileExist . concat   where+    go (Just (StaticFiles fp, _)) = getFolderContents fp     go (Just (Hamlet, f)) = return [f, "templates/" ++ f ++ ".hamlet"]     go (Just (Verbatim, f)) = return [f]     go (Just (Messages f, _)) = return [f]-    go (Just (StaticFiles fp, _)) = getFolderContents fp     go Nothing = return []+     parser = do-        ty <- (A.string "$(hamletFile " >> return Hamlet)+        ty <- (do _ <- A.string "\nstaticFiles \""+                  x' <- A.many1 $ A.satisfy (/= '"')+                  return $ StaticFiles x')+           <|> (A.string "$(parseRoutesFile " >> return Verbatim)+           <|> (A.string "$(hamletFile " >> return Hamlet)            <|> (A.string "$(ihamletFile " >> return Hamlet)            <|> (A.string "$(whamletFile " >> return Hamlet)            <|> (A.string "$(html " >> return Hamlet)            <|> (A.string "$(widgetFile " >> return Hamlet)            <|> (A.string "$(Settings.hamletFile " >> return Hamlet)            <|> (A.string "$(Settings.widgetFile " >> return Hamlet)-           <|> (A.string "$(parseRoutesFile " >> return Verbatim)            <|> (A.string "$(persistFile " >> return Verbatim)            <|> (                    A.string "$(persistFileWith " >>@@ -153,10 +167,6 @@                     y <- A.many1 $ A.satisfy (/= '"')                     _ <- A.string "\""                     return $ Messages $ concat [x', "/", y, ".msg"])-           <|> (do-                    _ <- A.string "\nstaticFiles \""-                    x' <- A.many1 $ A.satisfy (/= '"')-                    return $ StaticFiles x')         case ty of             Messages{} -> return $ Just (ty, "")             StaticFiles{} -> return $ Just (ty, "")@@ -169,13 +179,13 @@                 _ <- A.char ')'                 return $ Just (ty, y) -getFolderContents :: FilePath -> IO [FilePath]-getFolderContents fp = do-    cs <- getDirectoryContents fp-    let notHidden ('.':_) = False-        notHidden ('t':"mp") = False-        notHidden _ = True-    fmap concat $ forM (filter notHidden cs) $ \c -> do-        let f = fp ++ '/' : c-        isFile <- doesFileExist f-        if isFile then return [f] else getFolderContents f+    getFolderContents :: FilePath -> IO [FilePath]+    getFolderContents fp = do+        cs <- getDirectoryContents fp+        let notHidden ('.':_) = False+            notHidden ('t':"mp") = False+            notHidden _ = True+        fmap concat $ forM (filter notHidden cs) $ \c -> do+            let f = fp ++ '/' : c+            isFile <- doesFileExist f+            if isFile then return [f] else getFolderContents f
Devel.hs view
@@ -1,6 +1,4 @@ {-# LANGUAGE OverloadedStrings   #-}-{-# LANGUAGE QuasiQuotes         #-}-{-# LANGUAGE TemplateHaskell     #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE CPP                 #-} module Devel@@ -16,7 +14,7 @@  import           Control.Concurrent (forkIO, threadDelay) import qualified Control.Exception as Ex-import           Control.Monad (forever, when)+import           Control.Monad (forever, when, unless)  import           Data.Char (isUpper, isNumber) import qualified Data.List as L@@ -29,9 +27,10 @@ import           System.Posix.Types (EpochTime) import           System.PosixCompat.Files (modificationTime, getFileStatus) import           System.Process (createProcess, proc, terminateProcess, readProcess,-                                           waitForProcess, rawSystem)+                                           waitForProcess, rawSystem, runInteractiveProcess)+import           System.IO (hClose, hIsEOF, hGetLine, stdout, stderr, hPutStrLn) -import Build (recompDeps, getDeps,findHaskellFiles)+import Build (recompDeps, getDeps)  lockFile :: FilePath lockFile = "dist/devel-terminate"@@ -46,9 +45,7 @@  devel :: Bool -> [String] -> IO () devel isCabalDev passThroughArgs = do-     checkDevelFile-     writeLock      putStrLn "Yesod devel server. Press ENTER to quit"@@ -56,20 +53,20 @@       cabal <- D.findPackageDesc "."       gpd   <- D.readPackageDescription D.normal cabal -      checkCabalFile gpd+      hsSourceDirs <- checkCabalFile gpd        _<- rawSystem cmd args -      mainLoop+      mainLoop hsSourceDirs      _ <- getLine     writeLock     exitSuccess   where-    cmd | isCabalDev == True = "cabal-dev"+    cmd | isCabalDev = "cabal-dev"         | otherwise  = "cabal" -    diffArgs | isCabalDev == True = [+    diffArgs | isCabalDev = [               "--cabal-install-arg=-fdevel" -- legacy             , "--cabal-install-arg=-flibrary-only"             ]@@ -79,27 +76,28 @@             ]     args = "configure":diffArgs ++ ["--disable-library-profiling" ] -    mainLoop :: IO ()-    mainLoop = do+    mainLoop :: [FilePath] -> IO ()+    mainLoop hsSourceDirs = do        ghcVer <- ghcVersion+       when isCabalDev (rawSystemFilter cmd ["build"] >> return ())  -- cabal-dev fails with strange errors sometimes if we cabal-dev buildinfo before cabal-dev build+       pkgArgs <- ghcPackageArgs isCabalDev ghcVer+       let devArgs = pkgArgs ++ ["devel.hs"] ++ passThroughArgs        forever $ do            putStrLn "Rebuilding application..." -           recompDeps+           recompDeps hsSourceDirs -           list <- getFileList-           exit <- rawSystem cmd ["build"]+           list <- getFileList hsSourceDirs+           exit <- rawSystemFilter cmd ["build"]             case exit of              ExitFailure _ -> putStrLn "Build failure, pausing..."              _ -> do                    removeLock-                   let pkg = pkgConfigs isCabalDev ghcVer-                   let dev_args = pkg ++ ["devel.hs"] ++ passThroughArgs-                   putStrLn $ "Starting development server: runghc " ++ L.intercalate " " dev_args-                   (_,_,_,ph) <- createProcess $ proc "runghc" dev_args+                   putStrLn $ "Starting development server: runghc " ++ L.unwords devArgs+                   (_,_,_,ph) <- createProcess $ proc "runghc" devArgs                    watchTid <- forkIO . try_ $ do-                         watchForChanges list+                         watchForChanges hsSourceDirs list                          putStrLn "Stopping development server..."                          writeLock                          threadDelay 1000000@@ -108,43 +106,36 @@                    ec <- waitForProcess ph                    putStrLn $ "Exit code: " ++ show ec                    Ex.throwTo watchTid (userError "process finished")-           watchForChanges list+           watchForChanges hsSourceDirs list  try_ :: forall a. IO a -> IO () try_ x = (Ex.try x :: IO (Either Ex.SomeException a)) >> return () -pkgConfigs :: Bool -> String -> [String]-pkgConfigs isCabalDev ghcVer-  | isCabalDev = ["-package-confcabal-dev/packages-" ++ ghcVer ++ ".conf", inplacePkg]-  | otherwise  = [inplacePkg]-  where-    inplacePkg = "-package-confdist/package.conf.inplace"-- type FileList = Map.Map FilePath EpochTime -getFileList :: IO FileList-getFileList = do-    files <- findHaskellFiles "."-    deps <- getDeps+getFileList :: [FilePath] -> IO FileList+getFileList hsSourceDirs = do+    (files, deps) <- getDeps hsSourceDirs     let files' = files ++ map fst (Map.toList deps)     fmap Map.fromList $ flip mapM files' $ \f -> do-        fs <- getFileStatus f-        return (f, modificationTime fs)+        efs <- Ex.try $ getFileStatus f+        return $ case efs of+            Left (_ :: Ex.SomeException) -> (f, 0)+            Right fs -> (f, modificationTime fs) -watchForChanges :: FileList -> IO ()-watchForChanges list = do-    newList <- getFileList+watchForChanges :: [FilePath] ->  FileList -> IO ()+watchForChanges hsSourceDirs list = do+    newList <- getFileList hsSourceDirs     if list /= newList       then return ()-      else threadDelay 1000000 >> watchForChanges list+      else threadDelay 1000000 >> watchForChanges hsSourceDirs list  checkDevelFile :: IO () checkDevelFile = do   e <- doesFileExist "devel.hs"-  when (not e) $ failWith "file devel.hs not found"+  unless e $ failWith "file devel.hs not found" -checkCabalFile :: D.GenericPackageDescription -> IO ()+checkCabalFile :: D.GenericPackageDescription -> IO [FilePath] checkCabalFile gpd = case D.condLibrary gpd of     Nothing -> failWith "incorrect cabal file, no library"     Just ct ->@@ -152,19 +143,15 @@         Nothing   ->           failWith "no development flag found in your configuration file. Expected a 'library-only' flag or the older 'devel' flag"         Just dLib -> do-         case (D.hsSourceDirs . D.libBuildInfo) dLib of-           []     -> return ()-           ["."]  -> return ()-           _      ->-             putStrLn $ "WARNING: yesod devel may not work correctly with " ++-                        "custom hs-source-dirs"-         fl <- getFileList-         let unlisted = checkFileList fl dLib-         when (not . null $ unlisted) $ do-              putStrLn "WARNING: the following source files are not listed in exposed-modules or other-modules:"-              mapM_ putStrLn unlisted-         when (D.fromString "Application" `notElem` D.exposedModules dLib) $ do-              putStrLn "WARNING: no exposed module Application"+           let hsSourceDirs = D.hsSourceDirs . D.libBuildInfo $ dLib+           fl <- getFileList hsSourceDirs+           let unlisted = checkFileList fl dLib+           unless (null unlisted) $ do+                putStrLn "WARNING: the following source files are not listed in exposed-modules or other-modules:"+                mapM_ putStrLn unlisted+           when (D.fromString "Application" `notElem` D.exposedModules dLib) $+                putStrLn "WARNING: no exposed module Application"+           return hsSourceDirs  failWith :: String -> IO a failWith msg = do@@ -192,6 +179,22 @@     where       getNumber = filter (\x -> isNumber x || x == '.') +ghcPackageArgs :: Bool -> String -> IO [String]+ghcPackageArgs isCabalDev ghcVer+  | isCabalDev = do+      r <- readProcess "cabal-dev" ["buildopts"] []+      let opts = L.lines r+      return $ "-hide-all-packages" : "-no-user-package-conf" : inplacePkg : cabaldevConf : pkgid opts : depPkgIds opts+  | otherwise = return [inplacePkg]+      where+        pkgid opts      = let (_,p) = head (selectOpts ["-package-name"] opts) in "-package-id" ++ p ++ "-inplace"+        depPkgIds opts  = map (uncurry (++)) (selectOpts ["-package-id"] opts)+        inplacePkg   = "-package-confdist/package.conf.inplace"+        cabaldevConf = "-package-confcabal-dev/packages-" ++ ghcVer ++ ".conf"+        selectOpts opts (x1:x2:xs)+           | x1 `elem` opts = (x1,x2):selectOpts opts xs+           | otherwise      = selectOpts opts (x2:xs)+        selectOpts _ _ = []  lookupDevelLib :: D.CondTree D.ConfVar c a -> Maybe a lookupDevelLib ct | found     = Just (D.condTreeData ct)@@ -199,9 +202,22 @@   where     found = not . null . map (\(_,x,_) -> D.condTreeData x) .             filter isDevelLib . D.condTreeComponents  $ ct-    isDevelLib ((D.Var (D.Flag (D.FlagName f))), _, _) = f `elem` ["library-only", "devel"]+    isDevelLib (D.Var (D.Flag (D.FlagName f)), _, _) = f `elem` ["library-only", "devel"]     isDevelLib _                                       = False ---+-- | Acts like @rawSystem@, but filters out lines from the output that we're not interested in seeing.+rawSystemFilter :: String -> [String] -> IO ExitCode+rawSystemFilter command args = do+    (inh, outh, errh, ph) <- runInteractiveProcess command args Nothing Nothing+    hClose inh+    let go handlein handleout = do+            isEof <- hIsEOF handlein+            if isEof+                then hClose handlein+                else do+                    line <- hGetLine handlein+                    unless ("Loading package " `L.isPrefixOf` line) $ hPutStrLn handleout line+                    go handlein handleout+    _ <- forkIO $ go outh stdout+    _ <- forkIO $ go errh stderr+    waitForProcess ph
Scaffolding/Scaffolder.hs view
@@ -5,7 +5,7 @@ import Scaffolding.CodeGen  import Language.Haskell.TH.Syntax-import Control.Monad (unless)+import Control.Monad (when) import qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Encoding as LT import qualified Data.ByteString.Lazy as L@@ -26,14 +26,7 @@             hFlush stdout             prompt f -qq :: String-#if __GLASGOW_HASKELL__ >= 700-qq = ""-#else-qq = "$"-#endif--data Backend = Sqlite | Postgresql | Mysql | MongoDB | Tiny+data Backend = Sqlite | Postgresql | Mysql | MongoDB   deriving (Eq, Read, Show, Enum, Bounded)  puts :: String -> IO ()@@ -58,9 +51,7 @@     project <- prompt $ \s -> all validPN s && not (null s)     let dir = project -    puts $(codegenDir "input" "site-arg")-    let isUpperAZ c = 'A' <= c && c <= 'Z'-    sitearg <- prompt $ \s -> not (null s) && all validPN s && isUpperAZ (head s) && s /= "Main"+    let sitearg = "App"      puts $(codegenDir "input" "database")     @@ -71,18 +62,19 @@                 "p" -> (Postgresql, "GenericSql", "SqlPersist", "Postgresql", "sqlSettings")                 "mysql" -> (Mysql, "GenericSql", "SqlPersist", "MySQL", "sqlSettings")                 "mongo" -> (MongoDB,    "MongoDB", "Action", "MongoDB", "MkPersistSettings { mpsBackend = ConT ''Action }")-                "t" -> (Tiny, "","","",undefined)                 _ -> error $ "Invalid backend: " ++ backendC         (modelImports) = case backend of           MongoDB -> "import Database.Persist." ++ importGenericDB ++ "\nimport Language.Haskell.TH.Syntax"           Sqlite -> ""           Postgresql -> ""           Mysql -> ""-          Tiny -> undefined          uncapitalize s = toLower (head s) : tail s         backendLower = uncapitalize $ show backend          upper = show backend+    +    let useTests = True+    let testsDep = if useTests then ", yesod-test" else ""      let runMigration  =           case backend of@@ -100,7 +92,6 @@             Sqlite -> "sqlite"             Postgresql -> "postgresql"             Mysql -> "mysql"-            Tiny -> error "Accessing dbConfigFile for Tiny"      let configPersist =           case backend of@@ -108,16 +99,14 @@             Sqlite -> "SqliteConf"             Postgresql -> "PostgresConf"             Mysql -> "MySQLConf"-            Tiny -> error "Accessing configPersist for Tiny"      putStrLn "That's it! I'm creating your files now..."      let withConnectionPool = case backend of-          Sqlite     -> $(codegen $ "sqliteConnPool")-          Postgresql -> $(codegen $ "postgresqlConnPool")+          Sqlite     -> $(codegen "sqliteConnPool")+          Postgresql -> $(codegen "postgresqlConnPool")           Mysql      -> ""-          MongoDB    -> $(codegen $ "mongoDBConnPool")-          Tiny       -> ""+          MongoDB    -> $(codegen "mongoDBConnPool")          packages =           if backend == MongoDB@@ -130,10 +119,12 @@     let fst3 (x, _, _) = x     year <- show . fst3 . toGregorian . utctDay <$> getCurrentTime -    let writeFile' fp s = do+    let changeFile fileFunc fp s = do             putStrLn $ "Generating " ++ fp-            L.writeFile (dir ++ '/' : fp) $ LT.encodeUtf8 $ LT.pack s+            fileFunc (dir ++ '/' : fp) $ LT.encodeUtf8 $ LT.pack s         mkDir fp = createDirectoryIfMissing True $ dir ++ '/' : fp+        writeFile' = changeFile L.writeFile+        appendFile' = changeFile L.appendFile      mkDir "Handler"     mkDir "templates"@@ -146,33 +137,32 @@     mkDir "Settings"     mkDir "messages"      -    writeFile' ("deploy/Procfile") $(codegen "deploy/Procfile")+    writeFile' "deploy/Procfile" $(codegen "deploy/Procfile")      case backend of-      Sqlite     -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen ("config/sqlite.yml"))-      Postgresql -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen ("config/postgresql.yml"))-      MongoDB    -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen ("config/mongoDB.yml"))-      Mysql      -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen ("config/mysql.yml"))-      Tiny       -> return ()+      Sqlite     -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen "config/sqlite.yml")+      Postgresql -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen "config/postgresql.yml")+      MongoDB    -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen "config/mongoDB.yml")+      Mysql      -> writeFile' ("config/" ++ backendLower ++ ".yml") $(codegen "config/mysql.yml") -    let isTiny = backend == Tiny-        ifTiny a b = if isTiny then a else b+    writeFile' "config/settings.yml" $(codegen "config/settings.yml")+    writeFile' "main.hs" $(codegen "main.hs")+    writeFile' "devel.hs" $(codegen "devel.hs")+    writeFile' (project ++ ".cabal") $(codegen "project.cabal")+    when useTests $+      appendFile' (project ++ ".cabal") $(codegen "cabal_test_suite") -    writeFile' ("config/settings.yml") $(codegen "config/settings.yml")-    writeFile' ("main.hs") $(codegen "main.hs")-    writeFile' ("devel.hs") $(codegen "devel.hs")-    writeFile' (project ++ ".cabal") $ ifTiny $(codegen "tiny/project.cabal") $(codegen "project.cabal")     writeFile' ".ghci" $(codegen ".ghci")     writeFile' "LICENSE" $(codegen "LICENSE")-    writeFile' ("Foundation.hs") $ ifTiny $(codegen "tiny/Foundation.hs") $(codegen "Foundation.hs")-    writeFile' ("Import.hs") $ ifTiny $(codegen "tiny/Import.hs") $(codegen "Import.hs")-    writeFile' "Application.hs" $ ifTiny $(codegen "tiny/Application.hs") $(codegen "Application.hs")-    writeFile' "Handler/Root.hs" $(codegen "Handler/Root.hs")-    unless isTiny $ writeFile' "Model.hs" $(codegen "Model.hs")-    writeFile' "Settings.hs" $ ifTiny $(codegen "tiny/Settings.hs") $(codegen "Settings.hs")+    writeFile' "Foundation.hs" $(codegen "Foundation.hs")+    writeFile' "Import.hs" $(codegen "Import.hs")+    writeFile' "Application.hs" $(codegen "Application.hs")+    writeFile' "Handler/Home.hs" $(codegen "Handler/Home.hs")+    writeFile' "Model.hs" $(codegen "Model.hs")+    writeFile' "Settings.hs" $(codegen "Settings.hs")     writeFile' "Settings/StaticFiles.hs" $(codegen "Settings/StaticFiles.hs")-    writeFile' "templates/default-layout.lucius"-        $(codegen "templates/default-layout.lucius")+    writeFile' "static/css/bootstrap.css"+        $(codegen "static/css/bootstrap.css")     writeFile' "templates/default-layout.hamlet"         $(codegen "templates/default-layout.hamlet")     writeFile' "templates/default-layout-wrapper.hamlet"@@ -181,17 +171,17 @@         $(codegen "templates/normalize.lucius")     writeFile' "templates/homepage.hamlet"         $(codegen "templates/homepage.hamlet")-    writeFile' "config/routes" $ ifTiny $(codegen "tiny/config/routes") $(codegen "config/routes")+    writeFile' "config/routes" $(codegen "config/routes")     writeFile' "templates/homepage.lucius"         $(codegen "templates/homepage.lucius")     writeFile' "templates/homepage.julius"         $(codegen "templates/homepage.julius")-    unless isTiny $ writeFile' "config/models" $(codegen "config/models")+    writeFile' "config/models" $(codegen "config/models")     writeFile' "messages/en.msg" $(codegen "messages/en.msg") -    S.writeFile (dir ++ "/static/js/modernizr.js")-        $(runIO (S.readFile "scaffold/static/js/modernizr.js.cg") >>= \bs ->-            [|S.pack $(return $ LitE $ StringL $ S.unpack bs)|])+    when useTests $ do+      mkDir "tests"+      writeFile' "tests/main.hs" $(codegen "tests/main.hs")      S.writeFile (dir ++ "/config/favicon.ico")         $(runIO (S.readFile "scaffold/config/favicon.ico.cg") >>= \bs -> do@@ -199,7 +189,7 @@             return $ pack `AppE` LitE (StringL $ S.unpack bs))      S.writeFile (dir ++ "/config/robots.txt")-        $(runIO (S.readFile "scaffold/config/robots.txt.cg") >>= \bs -> do+        $(runIO (S.readFile "scaffold/config/robots.txt.cg") >>= \bs ->             [|S.pack $(return $ LitE $ StringL $ S.unpack bs)|])          putStr $(codegenDir "input" "done")
input/database.cg view
@@ -2,13 +2,9 @@ This tool will build in either SQLite or PostgreSQL or MongoDB support for you. We recommend starting with SQLite: it has no dependencies. -We have another option: a tiny project with minimal dependencies.-Mostly this means no database and no authentication.-     s     = sqlite     p     = postgresql     mongo = mongodb-    t     = tiny     mysql = MySQL (experimental)  So, what'll it be? 
− input/site-arg.cg
@@ -1,5 +0,0 @@-Great, we'll be creating ~project~ today, and placing it in ~dir~.-What's going to be the name of your foundation datatype? This name must-start with a capital letter.--Foundation: 
+ input/use-tests.cg view
@@ -0,0 +1,6 @@+Yesod also comes with an optional integration tests tool.+You should always test your application, the only reason+not to use the yesod testing facilities is because you+already have some other testing tool that you like better.++Include tests?: 
main.hs view
@@ -36,7 +36,7 @@         ["touch"] -> touch #endif         "devel":rest -> devel isDev rest-        ["version"] -> putStrLn yesodVersion+        ["version"] -> putStrLn $ "yesod-core version:" ++ yesodVersion         "configure":rest -> rawSystem cmd ("configure":rest) >>= exitWith         _ -> do             putStrLn "Usage: yesod <command>"
scaffold/Application.hs.cg view
@@ -1,6 +1,6 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Application-    ( getApplication+    ( makeApplication     , getApplicationDev     ) where @@ -21,7 +21,7 @@ import Network.HTTP.Conduit (newManager, def)  -- Import all relevant handler modules here.-import Handler.Root+import Handler.Home  -- This line actually creates our YesodSite instance. It is the second half -- of the call to mkYesodData which occurs in Foundation.hs. Please see@@ -32,15 +32,9 @@ -- performs initialization and creates a WAI application. This is also the -- place to put your migrate statements to have automatic database -- migrations handled by Yesod.-getApplication :: AppConfig DefaultEnv Extra -> Logger -> IO Application-getApplication conf logger = do-    manager <- newManager def-    s <- staticSite-    dbconf <- withYamlEnvironment "config/~dbConfigFile~.yml" (appEnv conf)-              Database.Persist.Store.loadConfig >>=-              Database.Persist.Store.applyEnv-    p <- Database.Persist.Store.createPoolConfig (dbconf :: Settings.PersistConfig)~runMigration~-    let foundation = ~sitearg~ conf setLogger s p manager dbconf+makeApplication :: AppConfig DefaultEnv Extra -> Logger -> IO Application+makeApplication conf logger = do+    foundation <- makeFoundation conf setLogger     app <- toWaiAppPlain foundation     return $ logWare app   where@@ -52,10 +46,20 @@     logWare = logCallback (logBS setLogger) #endif +makeFoundation :: AppConfig DefaultEnv Extra -> Logger -> IO ~sitearg~+makeFoundation conf setLogger = do+    manager <- newManager def+    s <- staticSite+    dbconf <- withYamlEnvironment "config/~dbConfigFile~.yml" (appEnv conf)+              Database.Persist.Store.loadConfig >>=+              Database.Persist.Store.applyEnv+    p <- Database.Persist.Store.createPoolConfig (dbconf :: Settings.PersistConfig)~runMigration~+    return $ ~sitearg~ conf setLogger s p manager dbconf+ -- for yesod devel getApplicationDev :: IO (Int, Application) getApplicationDev =-    defaultDevelApp loader getApplication+    defaultDevelApp loader makeApplication   where     loader = loadConfig (configSettings Development)         { csParseExtra = parseExtra
scaffold/Foundation.hs.cg view
@@ -22,23 +22,15 @@ import Yesod.Default.Util (addStaticContentExternal) import Yesod.Logger (Logger, logMsg, formatLogText) import Network.HTTP.Conduit (Manager)-#ifdef DEVELOPMENT-import Yesod.Logger (logLazyText)-#endif import qualified Settings-import qualified Data.ByteString.Lazy as L import qualified Database.Persist.Store+import Settings.StaticFiles import Database.Persist.~importGenericDB~ import Settings (widgetFile, Extra (..)) import Model import Text.Jasmine (minifym) import Web.ClientSession (getKey) import Text.Hamlet (hamletFile)-#if DEVELOPMENT-import qualified Data.Text.Lazy.Encoding-#else-import Network.Mail.Mime (sendmail)-#endif  -- | The site argument for your application. This can be a good place to -- keep settings and values requiring initialization before your application@@ -84,8 +76,11 @@ instance Yesod ~sitearg~ where     approot = ApprootMaster $ appRoot . settings -    -- Place the session key file in the config folder-    encryptKey _ = fmap Just $ getKey "config/client_session_key.aes"+    -- Store session data on the client in encrypted cookies,+    -- default session idle timeout is 120 minutes+    makeSessionBackend _ = do+        key <- getKey "config/client_session_key.aes"+        return . Just $ clientSessionBackend key 120      defaultLayout widget = do         master <- getYesod@@ -99,6 +94,7 @@          pc <- widgetToPageContent $ do             $(widgetFile "normalize")+            addStylesheet $ StaticR css_bootstrap_css             $(widgetFile "default-layout")         hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet") @@ -137,9 +133,9 @@     type AuthId ~sitearg~ = UserId      -- Where to send a user after successful login-    loginDest _ = RootR+    loginDest _ = HomeR     -- Where to send a user after logout-    logoutDest _ = RootR+    logoutDest _ = HomeR      getAuthId creds = runDB $ do         x <- getBy $ UniqueUser $ credsIdent creds@@ -153,15 +149,14 @@      authHttpManager = httpManager --- Sends off your mail. Requires sendmail in production!-deliver :: ~sitearg~ -> L.ByteString -> IO ()-#ifdef DEVELOPMENT-deliver y = logLazyText (getLogger y) . Data.Text.Lazy.Encoding.decodeUtf8-#else-deliver _ = sendmail-#endif- -- This instance is required to use forms. You can modify renderMessage to -- achieve customized and internationalized form validation messages. instance RenderMessage ~sitearg~ FormMessage where     renderMessage _ _ = defaultFormMessage++-- Note: previous versions of the scaffolding included a deliver function to+-- send emails. Unfortunately, there are too many different options for us to+-- give a reasonable default. Instead, the information is available on the+-- wiki:+--+-- https://github.com/yesodweb/yesod/wiki/Sending-email
+ scaffold/Handler/Home.hs.cg view
@@ -0,0 +1,39 @@+{-# LANGUAGE TupleSections, OverloadedStrings #-}+module Handler.Home where++import Import++-- This is a handler function for the GET request method on the HomeR+-- resource pattern. All of your resource patterns are defined in+-- config/routes+--+-- The majority of the code you will write in Yesod lives in these handler+-- functions. You can spread them across multiple files if you are so+-- inclined, or create a single monolithic file.+getHomeR :: Handler RepHtml+getHomeR = do+    (formWidget, formEnctype) <- generateFormPost sampleForm+    let submission = Nothing :: Maybe (FileInfo, Text)+        handlerName = "getHomeR" :: Text+    defaultLayout $ do+        aDomId <- lift newIdent+        setTitle "Welcome To Yesod!"+        $(widgetFile "homepage")++postHomeR :: Handler RepHtml+postHomeR = do+    ((result, formWidget), formEnctype) <- runFormPost sampleForm+    let handlerName = "postHomeR" :: Text+        submission = case result of+            FormSuccess res -> Just res+            _ -> Nothing++    defaultLayout $ do+        aDomId <- lift newIdent+        setTitle "Welcome To Yesod!"+        $(widgetFile "homepage")++sampleForm :: Form (FileInfo, Text)+sampleForm = renderDivs $ (,)+    <$> fileAFormReq "Choose a file"+    <*> areq textField "What's on the file?" Nothing
− scaffold/Handler/Root.hs.cg
@@ -1,17 +0,0 @@-module Handler.Root where--import Import---- This is a handler function for the GET request method on the RootR--- resource pattern. All of your resource patterns are defined in--- config/routes------ The majority of the code you will write in Yesod lives in these handler--- functions. You can spread them across multiple files if you are so--- inclined, or create a single monolithic file.-getRootR :: Handler RepHtml-getRootR = do-    defaultLayout $ do-        h2id <- lift newIdent-        setTitle "~project~ homepage"-        $(widgetFile "homepage")
scaffold/Import.hs.cg view
@@ -6,7 +6,7 @@     , module Data.Monoid     , module Control.Applicative     , Text-#if __GLASGOW_HASKELL__ < 740+#if __GLASGOW_HASKELL__ < 704     , (<>) #endif     ) where@@ -19,7 +19,7 @@ import Data.Text (Text) import Settings.StaticFiles -#if __GLASGOW_HASKELL__ < 740+#if __GLASGOW_HASKELL__ < 704 infixr 5 <> (<>) :: Monoid m => m -> m -> m (<>) = mappend
scaffold/Settings.hs.cg view
@@ -46,7 +46,7 @@ -- -- To see how this value is used, see urlRenderOverride in Foundation.hs staticRoot :: AppConfig DefaultEnv x -> Text-staticRoot conf = [~qq~st|#{appRoot conf}/static|]+staticRoot conf = [st|#{appRoot conf}/static|]   -- The rest of this file contains settings which rarely need changing by a
+ scaffold/cabal_test_suite.cg view
@@ -0,0 +1,19 @@+test-suite integration-tests+    type: exitcode-stdio-1.0+    main-is:        main.hs+    hs-source-dirs: tests .+    ghc-options:     -Wall+    extensions: TemplateHaskell+                QuasiQuotes+                OverloadedStrings+                NoImplicitPrelude+                CPP+                OverloadedStrings+                MultiParamTypeClasses+                TypeFamilies+                GADTs+                GeneralizedNewtypeDeriving+                FlexibleContexts++    build-depends: base                          >= 4          && < 5+                 , yesod-test                    >= 0.1        && < 0.2
scaffold/config/favicon.ico.cg view

binary file changed (1150 → 1342 bytes)

scaffold/config/mongoDB.yml.cg view
@@ -9,7 +9,7 @@ Development:   <<: *defaults -Test:+Testing:   database: ~project~_test   <<: *defaults 
scaffold/config/postgresql.yml.cg view
@@ -9,7 +9,7 @@ Development:   <<: *defaults -Test:+Testing:   database: ~project~_test   <<: *defaults 
scaffold/config/routes.cg view
@@ -4,4 +4,4 @@ /favicon.ico FaviconR GET /robots.txt RobotsR GET -/ RootR GET+/ HomeR GET POST
scaffold/config/settings.yml.cg view
@@ -14,5 +14,7 @@   <<: *defaults  Production:+  host: "*4" # any IPv4 host+  port: 3000   approot: "http://www.example.com"   <<: *defaults
scaffold/config/sqlite.yml.cg view
@@ -5,7 +5,7 @@ Development:   <<: *defaults -Test:+Testing:   database: ~project~_test.sqlite3   <<: *defaults 
scaffold/deploy/Procfile.cg view
@@ -12,62 +12,61 @@ # # * Create an empty package.json #     echo '{ "name": "~project~", "version": "0.0.1", "dependencies": {} }' >> package.json-# -# Postgresql Yesod setup: #-# * add code to read the DATABASE_URL environment variable.-# -#   import System.Environment-#   main = do-#     # parse env variable-#     durl <- getEnv "DATABASE_URL"-#     # pass settings to withConnectionPool instead of directly using loadConnStr-#     defaultMain (fromArgsExtra loadExtra) withYesodHeroku+# Postgresql Yesod setup: # # * add a dependency on the "heroku" package in your cabal file-#     -# * add code in Application.hs to turn the url into connection parameters. The below works for Postgresql. #-#     #ifdef !DEVELOPMENT-#     import qualified Web.Heroku-#     #endif+# * add code in Application.hs to use the heroku package and load the connection parameters.+#   The below works for Postgresql. #+#   #ifndef DEVELOPMENT+#   import qualified Web.Heroku+#   #endif #-#     canonicalizeKey :: (Text, val) -> (Text, val)-#     canonicalizeKey ("dbname", val) = ("database", val)-#     canonicalizeKey pair = pair #-#     toMapping :: [(key, val)] -> DO.Object key val-#     toMapping = DO.Mapping . map (\(key, val) -> (key, DO.Scalar val))+#   makeApplication :: AppConfig DefaultEnv Extra -> Logger -> IO Application+#   makeApplication conf logger = do+#       manager <- newManager def+#       s <- staticSite+#       hconfig <- loadHerokuConfig+#       dbconf <- withYamlEnvironment "config/postgresql.yml" (appEnv conf)+#                 (Database.Persist.Store.loadConfig . combineMappings hconfig) >>=+#                 Database.Persist.Store.applyEnv+#       p <- Database.Persist.Store.createPoolConfig (dbconf :: Settings.PersistConfig)+#       Database.Persist.Store.runPool dbconf (runMigration migrateAll) p+#    let foundation = ~sitearg~ conf setLogger s p manager dbconf+#    app <- toWaiAppPlain foundation+#    return $ logWare app+#  where+##ifdef DEVELOPMENT+#    logWare = logCallbackDev (logBS setLogger)+#    setLogger = logger+##else+#    setLogger = toProduction logger -- by default the logger is set for development+#    logWare = logCallback (logBS setLogger)+##endif #-#     combineMappings :: DO.Object key val -> DO.Object key val -> DO.Object key val-#     combineMappings (DO.Mapping m1) (DO.Mapping m2) = DO.Mapping $ m1 ++ m2-#     combineMappings _ _ = error "Data.Object is not a Mapping."+#   #ifndef DEVELOPMENT+#   canonicalizeKey :: (Text, val) -> (Text, val)+#   canonicalizeKey ("dbname", val) = ("database", val)+#   canonicalizeKey pair = pair #-#     loadHerokuConfig :: DO.TextObject -> IO Settings.PersistConfig-#     loadHerokuConfig ymlenv = do-#     #if DEVELOPMENT-#       let urlMap = DO.Mapping []-#     #else-#       urlMap <- Web.Heroku.dbConnParams >>= return . toMapping . map canonicalizeKey-#     #endif-#       either error return $ Database.Persist.Base.loadConfig (combineMappings urlMap ymlenv)+#   toMapping :: [(Text, Text)] -> AT.Value+#   toMapping xs = AT.Object $ M.fromList $ map (\(key, val) -> (key, AT.String val)) xs+#   #endif #+#   combineMappings :: AT.Value -> AT.Value -> AT.Value+#   combineMappings (AT.Object m1) (AT.Object m2) = AT.Object $ m1 `M.union` m2+#   combineMappings _ _ = error "Data.Object is not a Mapping." #-#     withYesodHeroku :: AppConfig DefaultEnv () -> Logger -> (Application -> IO ()) -> IO ()-#     withYesodHeroku conf logger f = do-#        s <- staticSite-#        dbconf <- withYamlEnvironment "config/postgresql.yml" (appEnv conf) loadHerokuConfig-#        Database.Persist.Base.withPool (dbconf :: Settings.PersistConfig) $ \p -> do-#            Database.Persist.Base.runPool dbconf (runMigration migrateAll) p-#            let h = YesodHeroku conf logger s p-#            defaultRunner (f . logWare) h-#      where-#     #ifdef DEVELOPMENT-#        logWare = logStdoutDev-#     #else-#        logWare = logStdout-#     #endif+#   loadHerokuConfig :: IO AT.Value+#   loadHerokuConfig = do+#   #ifdef DEVELOPMENT+#       return $ AT.Object M.empty+#   #else+#       Web.Heroku.dbConnParams >>= return . toMapping . map canonicalizeKey+#   #endif   
scaffold/main.hs.cg view
@@ -2,7 +2,7 @@ import Yesod.Default.Config (fromArgs) import Yesod.Default.Main   (defaultMain) import Settings             (parseExtra)-import Application          (getApplication)+import Application          (makeApplication)  main :: IO ()-main = defaultMain (fromArgs parseExtra) getApplication+main = defaultMain (fromArgs parseExtra) makeApplication
scaffold/project.cabal.cg view
@@ -32,7 +32,7 @@                      Model                      Settings                      Settings.StaticFiles-                     Handler.Root+                     Handler.Home      ghc-options:   -Wall -threaded -O0     cpp-options:   -DDEVELOPMENT@@ -48,6 +48,7 @@                 GeneralizedNewtypeDeriving                 FlexibleContexts                 EmptyDataDecls+                NoMonomorphismRestriction  executable         ~project~     if flag(library-only)@@ -73,28 +74,32 @@                 GeneralizedNewtypeDeriving                 FlexibleContexts                 EmptyDataDecls+                NoMonomorphismRestriction      build-depends: base                          >= 4          && < 5-                 , yesod                         >= 0.10       && < 0.11-                 , yesod-core                    >= 0.10       && < 0.11-                 , yesod-auth                    >= 0.8        && < 0.9-                 , yesod-static                  >= 0.10       && < 0.11-                 , yesod-default                 >= 0.6        && < 0.7-                 , yesod-form                    >= 0.4        && < 0.5-                 , mime-mail                     >= 0.3.0.3    && < 0.5+                 , yesod                         >= 1.0        && < 1.1+                 , yesod-core                    >= 1.0        && < 1.1+                 , yesod-auth                    >= 1.0        && < 1.1+                 , yesod-static                  >= 1.0        && < 1.1+                 , yesod-default                 >= 1.0        && < 1.1+                 , yesod-form                    >= 1.0        && < 1.1+                 , yesod-test                    >= 0.2        && < 0.3                  , clientsession                 >= 0.7.3      && < 0.8                  , bytestring                    >= 0.9        && < 0.10                  , text                          >= 0.11       && < 0.12-                 , persistent                    >= 0.8        && < 0.9-                 , persistent-~backendLower~     >= 0.8        && < 0.9+                 , persistent                    >= 0.9        && < 0.10+                 , persistent-~backendLower~     >= 0.9        && < 0.10                  , template-haskell-                 , hamlet                        >= 0.10       && < 0.11-                 , shakespeare-css               >= 0.10       && < 0.11-                 , shakespeare-js                >= 0.11       && < 0.12-                 , shakespeare-text              >= 0.11       && < 0.12+                 , hamlet                        >= 1.0        && < 1.1+                 , shakespeare-css               >= 1.0        && < 1.1+                 , shakespeare-js                >= 1.0        && < 1.1+                 , shakespeare-text              >= 1.0        && < 1.1                  , hjsmin                        >= 0.0.14     && < 0.1                  , monad-control                 >= 0.3        && < 0.4-                 , wai-extra                     >= 1.0        && < 1.2-                 , yaml                          >= 0.5        && < 0.6-                 , http-conduit                  >= 1.2        && < 1.3+                 , wai-extra                     >= 1.2        && < 1.3+                 , yaml                          >= 0.7        && < 0.8+                 , http-conduit                  >= 1.4        && < 1.5+                 , directory                     >= 1.1        && < 1.2+                 , warp                          >= 1.2        && < 1.3 +                 ~testsDep~
+ scaffold/static/css/bootstrap.css.cg view
@@ -0,0 +1,3990 @@+/*!+ * Bootstrap v2.0.2+ *+ * Copyright 2012 Twitter, Inc+ * Licensed under the Apache License v2.0+ * http://www.apache.org/licenses/LICENSE-2.0+ *+ * Designed and built with all the love in the world @twitter by @mdo and @fat.+ */+article,+aside,+details,+figcaption,+figure,+footer,+header,+hgroup,+nav,+section {+  display: block;+}+audio,+canvas,+video {+  display: inline-block;+  *display: inline;+  *zoom: 1;+}+audio:not([controls]) {+  display: none;+}+html {+  font-size: 100%;+  -webkit-text-size-adjust: 100%;+  -ms-text-size-adjust: 100%;+}+a:focus {+  outline: thin dotted #333;+  outline: 5px auto -webkit-focus-ring-color;+  outline-offset: -2px;+}+a:hover,+a:active {+  outline: 0;+}+sub,+sup {+  position: relative;+  font-size: 75%;+  line-height: 0;+  vertical-align: baseline;+}+sup {+  top: -0.5em;+}+sub {+  bottom: -0.25em;+}+img {+  height: auto;+  border: 0;+  -ms-interpolation-mode: bicubic;+  vertical-align: middle;+}+button,+input,+select,+textarea {+  margin: 0;+  font-size: 100%;+  vertical-align: middle;+}+button,+input {+  *overflow: visible;+  line-height: normal;+}+button::-moz-focus-inner,+input::-moz-focus-inner {+  padding: 0;+  border: 0;+}+button,+input[type="button"],+input[type="reset"],+input[type="submit"] {+  cursor: pointer;+  -webkit-appearance: button;+}+input[type="search"] {+  -webkit-appearance: textfield;+  -webkit-box-sizing: content-box;+  -moz-box-sizing: content-box;+  box-sizing: content-box;+}+input[type="search"]::-webkit-search-decoration,+input[type="search"]::-webkit-search-cancel-button {+  -webkit-appearance: none;+}+textarea {+  overflow: auto;+  vertical-align: top;+}+.clearfix {+  *zoom: 1;+}+.clearfix:before,+.clearfix:after {+  display: table;+  content: "";+}+.clearfix:after {+  clear: both;+}+.hide-text {+  overflow: hidden;+  text-indent: 100%;+  white-space: nowrap;+}+.input-block-level {+  display: block;+  width: 100%;+  min-height: 28px;+  /* Make inputs at least the height of their button counterpart */++  /* Makes inputs behave like true block-level elements */++  -webkit-box-sizing: border-box;+  -moz-box-sizing: border-box;+  -ms-box-sizing: border-box;+  box-sizing: border-box;+}+body {+  margin: 0;+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;+  font-size: 13px;+  line-height: 18px;+  color: #333333;+  background-color: #ffffff;+}+a {+  color: #0088cc;+  text-decoration: none;+}+a:hover {+  color: #005580;+  text-decoration: underline;+}+.row {+  margin-left: -20px;+  *zoom: 1;+}+.row:before,+.row:after {+  display: table;+  content: "";+}+.row:after {+  clear: both;+}+[class*="span"] {+  float: left;+  margin-left: 20px;+}+.container,+.navbar-fixed-top .container,+.navbar-fixed-bottom .container {+  width: 940px;+}+.span12 {+  width: 940px;+}+.span11 {+  width: 860px;+}+.span10 {+  width: 780px;+}+.span9 {+  width: 700px;+}+.span8 {+  width: 620px;+}+.span7 {+  width: 540px;+}+.span6 {+  width: 460px;+}+.span5 {+  width: 380px;+}+.span4 {+  width: 300px;+}+.span3 {+  width: 220px;+}+.span2 {+  width: 140px;+}+.span1 {+  width: 60px;+}+.offset12 {+  margin-left: 980px;+}+.offset11 {+  margin-left: 900px;+}+.offset10 {+  margin-left: 820px;+}+.offset9 {+  margin-left: 740px;+}+.offset8 {+  margin-left: 660px;+}+.offset7 {+  margin-left: 580px;+}+.offset6 {+  margin-left: 500px;+}+.offset5 {+  margin-left: 420px;+}+.offset4 {+  margin-left: 340px;+}+.offset3 {+  margin-left: 260px;+}+.offset2 {+  margin-left: 180px;+}+.offset1 {+  margin-left: 100px;+}+.row-fluid {+  width: 100%;+  *zoom: 1;+}+.row-fluid:before,+.row-fluid:after {+  display: table;+  content: "";+}+.row-fluid:after {+  clear: both;+}+.row-fluid > [class*="span"] {+  float: left;+  margin-left: 2.127659574%;+}+.row-fluid > [class*="span"]:first-child {+  margin-left: 0;+}+.row-fluid > .span12 {+  width: 99.99999998999999%;+}+.row-fluid > .span11 {+  width: 91.489361693%;+}+.row-fluid > .span10 {+  width: 82.97872339599999%;+}+.row-fluid > .span9 {+  width: 74.468085099%;+}+.row-fluid > .span8 {+  width: 65.95744680199999%;+}+.row-fluid > .span7 {+  width: 57.446808505%;+}+.row-fluid > .span6 {+  width: 48.93617020799999%;+}+.row-fluid > .span5 {+  width: 40.425531911%;+}+.row-fluid > .span4 {+  width: 31.914893614%;+}+.row-fluid > .span3 {+  width: 23.404255317%;+}+.row-fluid > .span2 {+  width: 14.89361702%;+}+.row-fluid > .span1 {+  width: 6.382978723%;+}+.container {+  margin-left: auto;+  margin-right: auto;+  *zoom: 1;+}+.container:before,+.container:after {+  display: table;+  content: "";+}+.container:after {+  clear: both;+}+.container-fluid {+  padding-left: 20px;+  padding-right: 20px;+  *zoom: 1;+}+.container-fluid:before,+.container-fluid:after {+  display: table;+  content: "";+}+.container-fluid:after {+  clear: both;+}+p {+  margin: 0 0 9px;+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;+  font-size: 13px;+  line-height: 18px;+}+p small {+  font-size: 11px;+  color: #999999;+}+.lead {+  margin-bottom: 18px;+  font-size: 20px;+  font-weight: 200;+  line-height: 27px;+}+h1,+h2,+h3,+h4,+h5,+h6 {+  margin: 0;+  font-family: inherit;+  font-weight: bold;+  color: inherit;+  text-rendering: optimizelegibility;+}+h1 small,+h2 small,+h3 small,+h4 small,+h5 small,+h6 small {+  font-weight: normal;+  color: #999999;+}+h1 {+  font-size: 30px;+  line-height: 36px;+}+h1 small {+  font-size: 18px;+}+h2 {+  font-size: 24px;+  line-height: 36px;+}+h2 small {+  font-size: 18px;+}+h3 {+  line-height: 27px;+  font-size: 18px;+}+h3 small {+  font-size: 14px;+}+h4,+h5,+h6 {+  line-height: 18px;+}+h4 {+  font-size: 14px;+}+h4 small {+  font-size: 12px;+}+h5 {+  font-size: 12px;+}+h6 {+  font-size: 11px;+  color: #999999;+  text-transform: uppercase;+}+.page-header {+  padding-bottom: 17px;+  margin: 18px 0;+  border-bottom: 1px solid #eeeeee;+}+.page-header h1 {+  line-height: 1;+}+ul,+ol {+  padding: 0;+  margin: 0 0 9px 25px;+}+ul ul,+ul ol,+ol ol,+ol ul {+  margin-bottom: 0;+}+ul {+  list-style: disc;+}+ol {+  list-style: decimal;+}+li {+  line-height: 18px;+}+ul.unstyled,+ol.unstyled {+  margin-left: 0;+  list-style: none;+}+dl {+  margin-bottom: 18px;+}+dt,+dd {+  line-height: 18px;+}+dt {+  font-weight: bold;+  line-height: 17px;+}+dd {+  margin-left: 9px;+}+.dl-horizontal dt {+  float: left;+  clear: left;+  width: 120px;+  text-align: right;+}+.dl-horizontal dd {+  margin-left: 130px;+}+hr {+  margin: 18px 0;+  border: 0;+  border-top: 1px solid #eeeeee;+  border-bottom: 1px solid #ffffff;+}+strong {+  font-weight: bold;+}+em {+  font-style: italic;+}+.muted {+  color: #999999;+}+abbr[title] {+  border-bottom: 1px dotted #ddd;+  cursor: help;+}+abbr.initialism {+  font-size: 90%;+  text-transform: uppercase;+}+blockquote {+  padding: 0 0 0 15px;+  margin: 0 0 18px;+  border-left: 5px solid #eeeeee;+}+blockquote p {+  margin-bottom: 0;+  font-size: 16px;+  font-weight: 300;+  line-height: 22.5px;+}+blockquote small {+  display: block;+  line-height: 18px;+  color: #999999;+}+blockquote small:before {+  content: '\2014 \00A0';+}+blockquote.pull-right {+  float: right;+  padding-left: 0;+  padding-right: 15px;+  border-left: 0;+  border-right: 5px solid #eeeeee;+}+blockquote.pull-right p,+blockquote.pull-right small {+  text-align: right;+}+q:before,+q:after,+blockquote:before,+blockquote:after {+  content: "";+}+address {+  display: block;+  margin-bottom: 18px;+  line-height: 18px;+  font-style: normal;+}+small {+  font-size: 100%;+}+cite {+  font-style: normal;+}+code,+pre {+  padding: 0 3px 2px;+  font-family: Menlo, Monaco, "Courier New", monospace;+  font-size: 12px;+  color: #333333;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+}+code {+  padding: 2px 4px;+  color: #d14;+  background-color: #f7f7f9;+  border: 1px solid #e1e1e8;+}+pre {+  display: block;+  padding: 8.5px;+  margin: 0 0 9px;+  font-size: 12.025px;+  line-height: 18px;+  background-color: #f5f5f5;+  border: 1px solid #ccc;+  border: 1px solid rgba(0, 0, 0, 0.15);+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  white-space: pre;+  white-space: pre-wrap;+  word-break: break-all;+  word-wrap: break-word;+}+pre.prettyprint {+  margin-bottom: 18px;+}+pre code {+  padding: 0;+  color: inherit;+  background-color: transparent;+  border: 0;+}+.pre-scrollable {+  max-height: 340px;+  overflow-y: scroll;+}+form {+  margin: 0 0 18px;+}+fieldset {+  padding: 0;+  margin: 0;+  border: 0;+}+legend {+  display: block;+  width: 100%;+  padding: 0;+  margin-bottom: 27px;+  font-size: 19.5px;+  line-height: 36px;+  color: #333333;+  border: 0;+  border-bottom: 1px solid #eee;+}+legend small {+  font-size: 13.5px;+  color: #999999;+}+label,+input,+button,+select,+textarea {+  font-size: 13px;+  font-weight: normal;+  line-height: 18px;+}+input,+button,+select,+textarea {+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;+}+label {+  display: block;+  margin-bottom: 5px;+  color: #333333;+}+input,+textarea,+select,+.uneditable-input {+  display: inline-block;+  width: 210px;+  height: 18px;+  padding: 4px;+  margin-bottom: 9px;+  font-size: 13px;+  line-height: 18px;+  color: #555555;+  border: 1px solid #cccccc;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+}+.uneditable-textarea {+  width: auto;+  height: auto;+}+label input,+label textarea,+label select {+  display: block;+}+input[type="image"],+input[type="checkbox"],+input[type="radio"] {+  width: auto;+  height: auto;+  padding: 0;+  margin: 3px 0;+  *margin-top: 0;+  /* IE7 */++  line-height: normal;+  cursor: pointer;+  -webkit-border-radius: 0;+  -moz-border-radius: 0;+  border-radius: 0;+  border: 0 \9;+  /* IE9 and down */++}+input[type="image"] {+  border: 0;+}+input[type="file"] {+  width: auto;+  padding: initial;+  line-height: initial;+  border: initial;+  background-color: #ffffff;+  background-color: initial;+  -webkit-box-shadow: none;+  -moz-box-shadow: none;+  box-shadow: none;+}+input[type="button"],+input[type="reset"],+input[type="submit"] {+  width: auto;+  height: auto;+}+select,+input[type="file"] {+  height: 28px;+  /* In IE7, the height of the select element cannot be changed by height, only font-size */++  *margin-top: 4px;+  /* For IE7, add top margin to align select with labels */++  line-height: 28px;+}+input[type="file"] {+  line-height: 18px \9;+}+select {+  width: 220px;+  background-color: #ffffff;+}+select[multiple],+select[size] {+  height: auto;+}+input[type="image"] {+  -webkit-box-shadow: none;+  -moz-box-shadow: none;+  box-shadow: none;+}+textarea {+  height: auto;+}+input[type="hidden"] {+  display: none;+}+.radio,+.checkbox {+  padding-left: 18px;+}+.radio input[type="radio"],+.checkbox input[type="checkbox"] {+  float: left;+  margin-left: -18px;+}+.controls > .radio:first-child,+.controls > .checkbox:first-child {+  padding-top: 5px;+}+.radio.inline,+.checkbox.inline {+  display: inline-block;+  padding-top: 5px;+  margin-bottom: 0;+  vertical-align: middle;+}+.radio.inline + .radio.inline,+.checkbox.inline + .checkbox.inline {+  margin-left: 10px;+}+input,+textarea {+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);+  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;+  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;+  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;+  -o-transition: border linear 0.2s, box-shadow linear 0.2s;+  transition: border linear 0.2s, box-shadow linear 0.2s;+}+input:focus,+textarea:focus {+  border-color: rgba(82, 168, 236, 0.8);+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);+  outline: 0;+  outline: thin dotted \9;+  /* IE6-9 */++}+input[type="file"]:focus,+input[type="radio"]:focus,+input[type="checkbox"]:focus,+select:focus {+  -webkit-box-shadow: none;+  -moz-box-shadow: none;+  box-shadow: none;+  outline: thin dotted #333;+  outline: 5px auto -webkit-focus-ring-color;+  outline-offset: -2px;+}+.input-mini {+  width: 60px;+}+.input-small {+  width: 90px;+}+.input-medium {+  width: 150px;+}+.input-large {+  width: 210px;+}+.input-xlarge {+  width: 270px;+}+.input-xxlarge {+  width: 530px;+}+input[class*="span"],+select[class*="span"],+textarea[class*="span"],+.uneditable-input {+  float: none;+  margin-left: 0;+}+input,+textarea,+.uneditable-input {+  margin-left: 0;+}+input.span12, textarea.span12, .uneditable-input.span12 {+  width: 930px;+}+input.span11, textarea.span11, .uneditable-input.span11 {+  width: 850px;+}+input.span10, textarea.span10, .uneditable-input.span10 {+  width: 770px;+}+input.span9, textarea.span9, .uneditable-input.span9 {+  width: 690px;+}+input.span8, textarea.span8, .uneditable-input.span8 {+  width: 610px;+}+input.span7, textarea.span7, .uneditable-input.span7 {+  width: 530px;+}+input.span6, textarea.span6, .uneditable-input.span6 {+  width: 450px;+}+input.span5, textarea.span5, .uneditable-input.span5 {+  width: 370px;+}+input.span4, textarea.span4, .uneditable-input.span4 {+  width: 290px;+}+input.span3, textarea.span3, .uneditable-input.span3 {+  width: 210px;+}+input.span2, textarea.span2, .uneditable-input.span2 {+  width: 130px;+}+input.span1, textarea.span1, .uneditable-input.span1 {+  width: 50px;+}+input[disabled],+select[disabled],+textarea[disabled],+input[readonly],+select[readonly],+textarea[readonly] {+  background-color: #eeeeee;+  border-color: #ddd;+  cursor: not-allowed;+}+.control-group.warning > label,+.control-group.warning .help-block,+.control-group.warning .help-inline {+  color: #c09853;+}+.control-group.warning input,+.control-group.warning select,+.control-group.warning textarea {+  color: #c09853;+  border-color: #c09853;+}+.control-group.warning input:focus,+.control-group.warning select:focus,+.control-group.warning textarea:focus {+  border-color: #a47e3c;+  -webkit-box-shadow: 0 0 6px #dbc59e;+  -moz-box-shadow: 0 0 6px #dbc59e;+  box-shadow: 0 0 6px #dbc59e;+}+.control-group.warning .input-prepend .add-on,+.control-group.warning .input-append .add-on {+  color: #c09853;+  background-color: #fcf8e3;+  border-color: #c09853;+}+.control-group.error > label,+.control-group.error .help-block,+.control-group.error .help-inline {+  color: #b94a48;+}+.control-group.error input,+.control-group.error select,+.control-group.error textarea {+  color: #b94a48;+  border-color: #b94a48;+}+.control-group.error input:focus,+.control-group.error select:focus,+.control-group.error textarea:focus {+  border-color: #953b39;+  -webkit-box-shadow: 0 0 6px #d59392;+  -moz-box-shadow: 0 0 6px #d59392;+  box-shadow: 0 0 6px #d59392;+}+.control-group.error .input-prepend .add-on,+.control-group.error .input-append .add-on {+  color: #b94a48;+  background-color: #f2dede;+  border-color: #b94a48;+}+.control-group.success > label,+.control-group.success .help-block,+.control-group.success .help-inline {+  color: #468847;+}+.control-group.success input,+.control-group.success select,+.control-group.success textarea {+  color: #468847;+  border-color: #468847;+}+.control-group.success input:focus,+.control-group.success select:focus,+.control-group.success textarea:focus {+  border-color: #356635;+  -webkit-box-shadow: 0 0 6px #7aba7b;+  -moz-box-shadow: 0 0 6px #7aba7b;+  box-shadow: 0 0 6px #7aba7b;+}+.control-group.success .input-prepend .add-on,+.control-group.success .input-append .add-on {+  color: #468847;+  background-color: #dff0d8;+  border-color: #468847;+}+input:focus:required:invalid,+textarea:focus:required:invalid,+select:focus:required:invalid {+  color: #b94a48;+  border-color: #ee5f5b;+}+input:focus:required:invalid:focus,+textarea:focus:required:invalid:focus,+select:focus:required:invalid:focus {+  border-color: #e9322d;+  -webkit-box-shadow: 0 0 6px #f8b9b7;+  -moz-box-shadow: 0 0 6px #f8b9b7;+  box-shadow: 0 0 6px #f8b9b7;+}+.form-actions {+  padding: 17px 20px 18px;+  margin-top: 18px;+  margin-bottom: 18px;+  background-color: #eeeeee;+  border-top: 1px solid #ddd;+  *zoom: 1;+}+.form-actions:before,+.form-actions:after {+  display: table;+  content: "";+}+.form-actions:after {+  clear: both;+}+.uneditable-input {+  display: block;+  background-color: #ffffff;+  border-color: #eee;+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);+  cursor: not-allowed;+}+:-moz-placeholder {+  color: #999999;+}+::-webkit-input-placeholder {+  color: #999999;+}+.help-block,+.help-inline {+  color: #555555;+}+.help-block {+  display: block;+  margin-bottom: 9px;+}+.help-inline {+  display: inline-block;+  *display: inline;+  /* IE7 inline-block hack */++  *zoom: 1;+  vertical-align: middle;+  padding-left: 5px;+}+.input-prepend,+.input-append {+  margin-bottom: 5px;+}+.input-prepend input,+.input-append input,+.input-prepend select,+.input-append select,+.input-prepend .uneditable-input,+.input-append .uneditable-input {+  *margin-left: 0;+  -webkit-border-radius: 0 3px 3px 0;+  -moz-border-radius: 0 3px 3px 0;+  border-radius: 0 3px 3px 0;+}+.input-prepend input:focus,+.input-append input:focus,+.input-prepend select:focus,+.input-append select:focus,+.input-prepend .uneditable-input:focus,+.input-append .uneditable-input:focus {+  position: relative;+  z-index: 2;+}+.input-prepend .uneditable-input,+.input-append .uneditable-input {+  border-left-color: #ccc;+}+.input-prepend .add-on,+.input-append .add-on {+  display: inline-block;+  width: auto;+  min-width: 16px;+  height: 18px;+  padding: 4px 5px;+  font-weight: normal;+  line-height: 18px;+  text-align: center;+  text-shadow: 0 1px 0 #ffffff;+  vertical-align: middle;+  background-color: #eeeeee;+  border: 1px solid #ccc;+}+.input-prepend .add-on,+.input-append .add-on,+.input-prepend .btn,+.input-append .btn {+  -webkit-border-radius: 3px 0 0 3px;+  -moz-border-radius: 3px 0 0 3px;+  border-radius: 3px 0 0 3px;+}+.input-prepend .active,+.input-append .active {+  background-color: #a9dba9;+  border-color: #46a546;+}+.input-prepend .add-on,+.input-prepend .btn {+  margin-right: -1px;+}+.input-append input,+.input-append select .uneditable-input {+  -webkit-border-radius: 3px 0 0 3px;+  -moz-border-radius: 3px 0 0 3px;+  border-radius: 3px 0 0 3px;+}+.input-append .uneditable-input {+  border-left-color: #eee;+  border-right-color: #ccc;+}+.input-append .add-on,+.input-append .btn {+  margin-left: -1px;+  -webkit-border-radius: 0 3px 3px 0;+  -moz-border-radius: 0 3px 3px 0;+  border-radius: 0 3px 3px 0;+}+.input-prepend.input-append input,+.input-prepend.input-append select,+.input-prepend.input-append .uneditable-input {+  -webkit-border-radius: 0;+  -moz-border-radius: 0;+  border-radius: 0;+}+.input-prepend.input-append .add-on:first-child,+.input-prepend.input-append .btn:first-child {+  margin-right: -1px;+  -webkit-border-radius: 3px 0 0 3px;+  -moz-border-radius: 3px 0 0 3px;+  border-radius: 3px 0 0 3px;+}+.input-prepend.input-append .add-on:last-child,+.input-prepend.input-append .btn:last-child {+  margin-left: -1px;+  -webkit-border-radius: 0 3px 3px 0;+  -moz-border-radius: 0 3px 3px 0;+  border-radius: 0 3px 3px 0;+}+.search-query {+  padding-left: 14px;+  padding-right: 14px;+  margin-bottom: 0;+  -webkit-border-radius: 14px;+  -moz-border-radius: 14px;+  border-radius: 14px;+}+.form-search input,+.form-inline input,+.form-horizontal input,+.form-search textarea,+.form-inline textarea,+.form-horizontal textarea,+.form-search select,+.form-inline select,+.form-horizontal select,+.form-search .help-inline,+.form-inline .help-inline,+.form-horizontal .help-inline,+.form-search .uneditable-input,+.form-inline .uneditable-input,+.form-horizontal .uneditable-input,+.form-search .input-prepend,+.form-inline .input-prepend,+.form-horizontal .input-prepend,+.form-search .input-append,+.form-inline .input-append,+.form-horizontal .input-append {+  display: inline-block;+  margin-bottom: 0;+}+.form-search .hide,+.form-inline .hide,+.form-horizontal .hide {+  display: none;+}+.form-search label,+.form-inline label {+  display: inline-block;+}+.form-search .input-append,+.form-inline .input-append,+.form-search .input-prepend,+.form-inline .input-prepend {+  margin-bottom: 0;+}+.form-search .radio,+.form-search .checkbox,+.form-inline .radio,+.form-inline .checkbox {+  padding-left: 0;+  margin-bottom: 0;+  vertical-align: middle;+}+.form-search .radio input[type="radio"],+.form-search .checkbox input[type="checkbox"],+.form-inline .radio input[type="radio"],+.form-inline .checkbox input[type="checkbox"] {+  float: left;+  margin-left: 0;+  margin-right: 3px;+}+.control-group {+  margin-bottom: 9px;+}+legend + .control-group {+  margin-top: 18px;+  -webkit-margin-top-collapse: separate;+}+.form-horizontal .control-group {+  margin-bottom: 18px;+  *zoom: 1;+}+.form-horizontal .control-group:before,+.form-horizontal .control-group:after {+  display: table;+  content: "";+}+.form-horizontal .control-group:after {+  clear: both;+}+.form-horizontal .control-label {+  float: left;+  width: 140px;+  padding-top: 5px;+  text-align: right;+}+.form-horizontal .controls {+  margin-left: 160px;+  /* Super jank IE7 fix to ensure the inputs in .input-append and input-prepend don't inherit the margin of the parent, in this case .controls */++  *display: inline-block;+  *margin-left: 0;+  *padding-left: 20px;+}+.form-horizontal .help-block {+  margin-top: 9px;+  margin-bottom: 0;+}+.form-horizontal .form-actions {+  padding-left: 160px;+}+table {+  max-width: 100%;+  border-collapse: collapse;+  border-spacing: 0;+  background-color: transparent;+}+.table {+  width: 100%;+  margin-bottom: 18px;+}+.table th,+.table td {+  padding: 8px;+  line-height: 18px;+  text-align: left;+  vertical-align: top;+  border-top: 1px solid #dddddd;+}+.table th {+  font-weight: bold;+}+.table thead th {+  vertical-align: bottom;+}+.table colgroup + thead tr:first-child th,+.table colgroup + thead tr:first-child td,+.table thead:first-child tr:first-child th,+.table thead:first-child tr:first-child td {+  border-top: 0;+}+.table tbody + tbody {+  border-top: 2px solid #dddddd;+}+.table-condensed th,+.table-condensed td {+  padding: 4px 5px;+}+.table-bordered {+  border: 1px solid #dddddd;+  border-left: 0;+  border-collapse: separate;+  *border-collapse: collapsed;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.table-bordered th,+.table-bordered td {+  border-left: 1px solid #dddddd;+}+.table-bordered thead:first-child tr:first-child th,+.table-bordered tbody:first-child tr:first-child th,+.table-bordered tbody:first-child tr:first-child td {+  border-top: 0;+}+.table-bordered thead:first-child tr:first-child th:first-child,+.table-bordered tbody:first-child tr:first-child td:first-child {+  -webkit-border-radius: 4px 0 0 0;+  -moz-border-radius: 4px 0 0 0;+  border-radius: 4px 0 0 0;+}+.table-bordered thead:first-child tr:first-child th:last-child,+.table-bordered tbody:first-child tr:first-child td:last-child {+  -webkit-border-radius: 0 4px 0 0;+  -moz-border-radius: 0 4px 0 0;+  border-radius: 0 4px 0 0;+}+.table-bordered thead:last-child tr:last-child th:first-child,+.table-bordered tbody:last-child tr:last-child td:first-child {+  -webkit-border-radius: 0 0 0 4px;+  -moz-border-radius: 0 0 0 4px;+  border-radius: 0 0 0 4px;+}+.table-bordered thead:last-child tr:last-child th:last-child,+.table-bordered tbody:last-child tr:last-child td:last-child {+  -webkit-border-radius: 0 0 4px 0;+  -moz-border-radius: 0 0 4px 0;+  border-radius: 0 0 4px 0;+}+.table-striped tbody tr:nth-child(odd) td,+.table-striped tbody tr:nth-child(odd) th {+  background-color: #f9f9f9;+}+.table tbody tr:hover td,+.table tbody tr:hover th {+  background-color: #f5f5f5;+}+table .span1 {+  float: none;+  width: 44px;+  margin-left: 0;+}+table .span2 {+  float: none;+  width: 124px;+  margin-left: 0;+}+table .span3 {+  float: none;+  width: 204px;+  margin-left: 0;+}+table .span4 {+  float: none;+  width: 284px;+  margin-left: 0;+}+table .span5 {+  float: none;+  width: 364px;+  margin-left: 0;+}+table .span6 {+  float: none;+  width: 444px;+  margin-left: 0;+}+table .span7 {+  float: none;+  width: 524px;+  margin-left: 0;+}+table .span8 {+  float: none;+  width: 604px;+  margin-left: 0;+}+table .span9 {+  float: none;+  width: 684px;+  margin-left: 0;+}+table .span10 {+  float: none;+  width: 764px;+  margin-left: 0;+}+table .span11 {+  float: none;+  width: 844px;+  margin-left: 0;+}+table .span12 {+  float: none;+  width: 924px;+  margin-left: 0;+}+table .span13 {+  float: none;+  width: 1004px;+  margin-left: 0;+}+table .span14 {+  float: none;+  width: 1084px;+  margin-left: 0;+}+table .span15 {+  float: none;+  width: 1164px;+  margin-left: 0;+}+table .span16 {+  float: none;+  width: 1244px;+  margin-left: 0;+}+table .span17 {+  float: none;+  width: 1324px;+  margin-left: 0;+}+table .span18 {+  float: none;+  width: 1404px;+  margin-left: 0;+}+table .span19 {+  float: none;+  width: 1484px;+  margin-left: 0;+}+table .span20 {+  float: none;+  width: 1564px;+  margin-left: 0;+}+table .span21 {+  float: none;+  width: 1644px;+  margin-left: 0;+}+table .span22 {+  float: none;+  width: 1724px;+  margin-left: 0;+}+table .span23 {+  float: none;+  width: 1804px;+  margin-left: 0;+}+table .span24 {+  float: none;+  width: 1884px;+  margin-left: 0;+}+[class^="icon-"],+[class*=" icon-"] {+  display: inline-block;+  width: 14px;+  height: 14px;+  line-height: 14px;+  vertical-align: text-top;+  background-image: url("../img/glyphicons-halflings.png");+  background-position: 14px 14px;+  background-repeat: no-repeat;+  *margin-right: .3em;+}+[class^="icon-"]:last-child,+[class*=" icon-"]:last-child {+  *margin-left: 0;+}+.icon-white {+  background-image: url("../img/glyphicons-halflings-white.png");+}+.icon-glass {+  background-position: 0      0;+}+.icon-music {+  background-position: -24px 0;+}+.icon-search {+  background-position: -48px 0;+}+.icon-envelope {+  background-position: -72px 0;+}+.icon-heart {+  background-position: -96px 0;+}+.icon-star {+  background-position: -120px 0;+}+.icon-star-empty {+  background-position: -144px 0;+}+.icon-user {+  background-position: -168px 0;+}+.icon-film {+  background-position: -192px 0;+}+.icon-th-large {+  background-position: -216px 0;+}+.icon-th {+  background-position: -240px 0;+}+.icon-th-list {+  background-position: -264px 0;+}+.icon-ok {+  background-position: -288px 0;+}+.icon-remove {+  background-position: -312px 0;+}+.icon-zoom-in {+  background-position: -336px 0;+}+.icon-zoom-out {+  background-position: -360px 0;+}+.icon-off {+  background-position: -384px 0;+}+.icon-signal {+  background-position: -408px 0;+}+.icon-cog {+  background-position: -432px 0;+}+.icon-trash {+  background-position: -456px 0;+}+.icon-home {+  background-position: 0 -24px;+}+.icon-file {+  background-position: -24px -24px;+}+.icon-time {+  background-position: -48px -24px;+}+.icon-road {+  background-position: -72px -24px;+}+.icon-download-alt {+  background-position: -96px -24px;+}+.icon-download {+  background-position: -120px -24px;+}+.icon-upload {+  background-position: -144px -24px;+}+.icon-inbox {+  background-position: -168px -24px;+}+.icon-play-circle {+  background-position: -192px -24px;+}+.icon-repeat {+  background-position: -216px -24px;+}+.icon-refresh {+  background-position: -240px -24px;+}+.icon-list-alt {+  background-position: -264px -24px;+}+.icon-lock {+  background-position: -287px -24px;+}+.icon-flag {+  background-position: -312px -24px;+}+.icon-headphones {+  background-position: -336px -24px;+}+.icon-volume-off {+  background-position: -360px -24px;+}+.icon-volume-down {+  background-position: -384px -24px;+}+.icon-volume-up {+  background-position: -408px -24px;+}+.icon-qrcode {+  background-position: -432px -24px;+}+.icon-barcode {+  background-position: -456px -24px;+}+.icon-tag {+  background-position: 0 -48px;+}+.icon-tags {+  background-position: -25px -48px;+}+.icon-book {+  background-position: -48px -48px;+}+.icon-bookmark {+  background-position: -72px -48px;+}+.icon-print {+  background-position: -96px -48px;+}+.icon-camera {+  background-position: -120px -48px;+}+.icon-font {+  background-position: -144px -48px;+}+.icon-bold {+  background-position: -167px -48px;+}+.icon-italic {+  background-position: -192px -48px;+}+.icon-text-height {+  background-position: -216px -48px;+}+.icon-text-width {+  background-position: -240px -48px;+}+.icon-align-left {+  background-position: -264px -48px;+}+.icon-align-center {+  background-position: -288px -48px;+}+.icon-align-right {+  background-position: -312px -48px;+}+.icon-align-justify {+  background-position: -336px -48px;+}+.icon-list {+  background-position: -360px -48px;+}+.icon-indent-left {+  background-position: -384px -48px;+}+.icon-indent-right {+  background-position: -408px -48px;+}+.icon-facetime-video {+  background-position: -432px -48px;+}+.icon-picture {+  background-position: -456px -48px;+}+.icon-pencil {+  background-position: 0 -72px;+}+.icon-map-marker {+  background-position: -24px -72px;+}+.icon-adjust {+  background-position: -48px -72px;+}+.icon-tint {+  background-position: -72px -72px;+}+.icon-edit {+  background-position: -96px -72px;+}+.icon-share {+  background-position: -120px -72px;+}+.icon-check {+  background-position: -144px -72px;+}+.icon-move {+  background-position: -168px -72px;+}+.icon-step-backward {+  background-position: -192px -72px;+}+.icon-fast-backward {+  background-position: -216px -72px;+}+.icon-backward {+  background-position: -240px -72px;+}+.icon-play {+  background-position: -264px -72px;+}+.icon-pause {+  background-position: -288px -72px;+}+.icon-stop {+  background-position: -312px -72px;+}+.icon-forward {+  background-position: -336px -72px;+}+.icon-fast-forward {+  background-position: -360px -72px;+}+.icon-step-forward {+  background-position: -384px -72px;+}+.icon-eject {+  background-position: -408px -72px;+}+.icon-chevron-left {+  background-position: -432px -72px;+}+.icon-chevron-right {+  background-position: -456px -72px;+}+.icon-plus-sign {+  background-position: 0 -96px;+}+.icon-minus-sign {+  background-position: -24px -96px;+}+.icon-remove-sign {+  background-position: -48px -96px;+}+.icon-ok-sign {+  background-position: -72px -96px;+}+.icon-question-sign {+  background-position: -96px -96px;+}+.icon-info-sign {+  background-position: -120px -96px;+}+.icon-screenshot {+  background-position: -144px -96px;+}+.icon-remove-circle {+  background-position: -168px -96px;+}+.icon-ok-circle {+  background-position: -192px -96px;+}+.icon-ban-circle {+  background-position: -216px -96px;+}+.icon-arrow-left {+  background-position: -240px -96px;+}+.icon-arrow-right {+  background-position: -264px -96px;+}+.icon-arrow-up {+  background-position: -289px -96px;+}+.icon-arrow-down {+  background-position: -312px -96px;+}+.icon-share-alt {+  background-position: -336px -96px;+}+.icon-resize-full {+  background-position: -360px -96px;+}+.icon-resize-small {+  background-position: -384px -96px;+}+.icon-plus {+  background-position: -408px -96px;+}+.icon-minus {+  background-position: -433px -96px;+}+.icon-asterisk {+  background-position: -456px -96px;+}+.icon-exclamation-sign {+  background-position: 0 -120px;+}+.icon-gift {+  background-position: -24px -120px;+}+.icon-leaf {+  background-position: -48px -120px;+}+.icon-fire {+  background-position: -72px -120px;+}+.icon-eye-open {+  background-position: -96px -120px;+}+.icon-eye-close {+  background-position: -120px -120px;+}+.icon-warning-sign {+  background-position: -144px -120px;+}+.icon-plane {+  background-position: -168px -120px;+}+.icon-calendar {+  background-position: -192px -120px;+}+.icon-random {+  background-position: -216px -120px;+}+.icon-comment {+  background-position: -240px -120px;+}+.icon-magnet {+  background-position: -264px -120px;+}+.icon-chevron-up {+  background-position: -288px -120px;+}+.icon-chevron-down {+  background-position: -313px -119px;+}+.icon-retweet {+  background-position: -336px -120px;+}+.icon-shopping-cart {+  background-position: -360px -120px;+}+.icon-folder-close {+  background-position: -384px -120px;+}+.icon-folder-open {+  background-position: -408px -120px;+}+.icon-resize-vertical {+  background-position: -432px -119px;+}+.icon-resize-horizontal {+  background-position: -456px -118px;+}+.dropdown {+  position: relative;+}+.dropdown-toggle {+  *margin-bottom: -3px;+}+.dropdown-toggle:active,+.open .dropdown-toggle {+  outline: 0;+}+.caret {+  display: inline-block;+  width: 0;+  height: 0;+  vertical-align: top;+  border-left: 4px solid transparent;+  border-right: 4px solid transparent;+  border-top: 4px solid #000000;+  opacity: 0.3;+  filter: alpha(opacity=30);+  content: "";+}+.dropdown .caret {+  margin-top: 8px;+  margin-left: 2px;+}+.dropdown:hover .caret,+.open.dropdown .caret {+  opacity: 1;+  filter: alpha(opacity=100);+}+.dropdown-menu {+  position: absolute;+  top: 100%;+  left: 0;+  z-index: 1000;+  float: left;+  display: none;+  min-width: 160px;+  padding: 4px 0;+  margin: 0;+  list-style: none;+  background-color: #ffffff;+  border-color: #ccc;+  border-color: rgba(0, 0, 0, 0.2);+  border-style: solid;+  border-width: 1px;+  -webkit-border-radius: 0 0 5px 5px;+  -moz-border-radius: 0 0 5px 5px;+  border-radius: 0 0 5px 5px;+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);+  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);+  -webkit-background-clip: padding-box;+  -moz-background-clip: padding;+  background-clip: padding-box;+  *border-right-width: 2px;+  *border-bottom-width: 2px;+}+.dropdown-menu.pull-right {+  right: 0;+  left: auto;+}+.dropdown-menu .divider {+  height: 1px;+  margin: 8px 1px;+  overflow: hidden;+  background-color: #e5e5e5;+  border-bottom: 1px solid #ffffff;+  *width: 100%;+  *margin: -5px 0 5px;+}+.dropdown-menu a {+  display: block;+  padding: 3px 15px;+  clear: both;+  font-weight: normal;+  line-height: 18px;+  color: #333333;+  white-space: nowrap;+}+.dropdown-menu li > a:hover,+.dropdown-menu .active > a,+.dropdown-menu .active > a:hover {+  color: #ffffff;+  text-decoration: none;+  background-color: #0088cc;+}+.dropdown.open {+  *z-index: 1000;+}+.dropdown.open .dropdown-toggle {+  color: #ffffff;+  background: #ccc;+  background: rgba(0, 0, 0, 0.3);+}+.dropdown.open .dropdown-menu {+  display: block;+}+.pull-right .dropdown-menu {+  left: auto;+  right: 0;+}+.dropup .caret,+.navbar-fixed-bottom .dropdown .caret {+  border-top: 0;+  border-bottom: 4px solid #000000;+  content: "\2191";+}+.dropup .dropdown-menu,+.navbar-fixed-bottom .dropdown .dropdown-menu {+  top: auto;+  bottom: 100%;+  margin-bottom: 1px;+}+.typeahead {+  margin-top: 2px;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.well {+  min-height: 20px;+  padding: 19px;+  margin-bottom: 20px;+  background-color: #f5f5f5;+  border: 1px solid #eee;+  border: 1px solid rgba(0, 0, 0, 0.05);+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);+}+.well blockquote {+  border-color: #ddd;+  border-color: rgba(0, 0, 0, 0.15);+}+.well-large {+  padding: 24px;+  -webkit-border-radius: 6px;+  -moz-border-radius: 6px;+  border-radius: 6px;+}+.well-small {+  padding: 9px;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+}+.fade {+  -webkit-transition: opacity 0.15s linear;+  -moz-transition: opacity 0.15s linear;+  -ms-transition: opacity 0.15s linear;+  -o-transition: opacity 0.15s linear;+  transition: opacity 0.15s linear;+  opacity: 0;+}+.fade.in {+  opacity: 1;+}+.collapse {+  -webkit-transition: height 0.35s ease;+  -moz-transition: height 0.35s ease;+  -ms-transition: height 0.35s ease;+  -o-transition: height 0.35s ease;+  transition: height 0.35s ease;+  position: relative;+  overflow: hidden;+  height: 0;+}+.collapse.in {+  height: auto;+}+.close {+  float: right;+  font-size: 20px;+  font-weight: bold;+  line-height: 18px;+  color: #000000;+  text-shadow: 0 1px 0 #ffffff;+  opacity: 0.2;+  filter: alpha(opacity=20);+}+.close:hover {+  color: #000000;+  text-decoration: none;+  opacity: 0.4;+  filter: alpha(opacity=40);+  cursor: pointer;+}+.btn {+  display: inline-block;+  *display: inline;+  /* IE7 inline-block hack */++  *zoom: 1;+  padding: 4px 10px 4px;+  margin-bottom: 0;+  font-size: 13px;+  line-height: 18px;+  color: #333333;+  text-align: center;+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);+  vertical-align: middle;+  background-color: #f5f5f5;+  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);+  background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));+  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);+  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);+  background-image: linear-gradient(top, #ffffff, #e6e6e6);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);+  border-color: #e6e6e6 #e6e6e6 #bfbfbf;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+  border: 1px solid #cccccc;+  border-bottom-color: #b3b3b3;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  cursor: pointer;+  *margin-left: .3em;+}+.btn:hover,+.btn:active,+.btn.active,+.btn.disabled,+.btn[disabled] {+  background-color: #e6e6e6;+}+.btn:active,+.btn.active {+  background-color: #cccccc \9;+}+.btn:first-child {+  *margin-left: 0;+}+.btn:hover {+  color: #333333;+  text-decoration: none;+  background-color: #e6e6e6;+  background-position: 0 -15px;+  -webkit-transition: background-position 0.1s linear;+  -moz-transition: background-position 0.1s linear;+  -ms-transition: background-position 0.1s linear;+  -o-transition: background-position 0.1s linear;+  transition: background-position 0.1s linear;+}+.btn:focus {+  outline: thin dotted #333;+  outline: 5px auto -webkit-focus-ring-color;+  outline-offset: -2px;+}+.btn.active,+.btn:active {+  background-image: none;+  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+  background-color: #e6e6e6;+  background-color: #d9d9d9 \9;+  outline: 0;+}+.btn.disabled,+.btn[disabled] {+  cursor: default;+  background-image: none;+  background-color: #e6e6e6;+  opacity: 0.65;+  filter: alpha(opacity=65);+  -webkit-box-shadow: none;+  -moz-box-shadow: none;+  box-shadow: none;+}+.btn-large {+  padding: 9px 14px;+  font-size: 15px;+  line-height: normal;+  -webkit-border-radius: 5px;+  -moz-border-radius: 5px;+  border-radius: 5px;+}+.btn-large [class^="icon-"] {+  margin-top: 1px;+}+.btn-small {+  padding: 5px 9px;+  font-size: 11px;+  line-height: 16px;+}+.btn-small [class^="icon-"] {+  margin-top: -1px;+}+.btn-mini {+  padding: 2px 6px;+  font-size: 11px;+  line-height: 14px;+}+.btn-primary,+.btn-primary:hover,+.btn-warning,+.btn-warning:hover,+.btn-danger,+.btn-danger:hover,+.btn-success,+.btn-success:hover,+.btn-info,+.btn-info:hover,+.btn-inverse,+.btn-inverse:hover {+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);+  color: #ffffff;+}+.btn-primary.active,+.btn-warning.active,+.btn-danger.active,+.btn-success.active,+.btn-info.active,+.btn-inverse.active {+  color: rgba(255, 255, 255, 0.75);+}+.btn-primary {+  background-color: #0074cc;+  background-image: -moz-linear-gradient(top, #0088cc, #0055cc);+  background-image: -ms-linear-gradient(top, #0088cc, #0055cc);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));+  background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);+  background-image: -o-linear-gradient(top, #0088cc, #0055cc);+  background-image: linear-gradient(top, #0088cc, #0055cc);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);+  border-color: #0055cc #0055cc #003580;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-primary:hover,+.btn-primary:active,+.btn-primary.active,+.btn-primary.disabled,+.btn-primary[disabled] {+  background-color: #0055cc;+}+.btn-primary:active,+.btn-primary.active {+  background-color: #004099 \9;+}+.btn-warning {+  background-color: #faa732;+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);+  background-image: -o-linear-gradient(top, #fbb450, #f89406);+  background-image: linear-gradient(top, #fbb450, #f89406);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);+  border-color: #f89406 #f89406 #ad6704;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-warning:hover,+.btn-warning:active,+.btn-warning.active,+.btn-warning.disabled,+.btn-warning[disabled] {+  background-color: #f89406;+}+.btn-warning:active,+.btn-warning.active {+  background-color: #c67605 \9;+}+.btn-danger {+  background-color: #da4f49;+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);+  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);+  background-image: linear-gradient(top, #ee5f5b, #bd362f);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);+  border-color: #bd362f #bd362f #802420;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-danger:hover,+.btn-danger:active,+.btn-danger.active,+.btn-danger.disabled,+.btn-danger[disabled] {+  background-color: #bd362f;+}+.btn-danger:active,+.btn-danger.active {+  background-color: #942a25 \9;+}+.btn-success {+  background-color: #5bb75b;+  background-image: -moz-linear-gradient(top, #62c462, #51a351);+  background-image: -ms-linear-gradient(top, #62c462, #51a351);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);+  background-image: -o-linear-gradient(top, #62c462, #51a351);+  background-image: linear-gradient(top, #62c462, #51a351);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);+  border-color: #51a351 #51a351 #387038;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-success:hover,+.btn-success:active,+.btn-success.active,+.btn-success.disabled,+.btn-success[disabled] {+  background-color: #51a351;+}+.btn-success:active,+.btn-success.active {+  background-color: #408140 \9;+}+.btn-info {+  background-color: #49afcd;+  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);+  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));+  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);+  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);+  background-image: linear-gradient(top, #5bc0de, #2f96b4);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);+  border-color: #2f96b4 #2f96b4 #1f6377;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-info:hover,+.btn-info:active,+.btn-info.active,+.btn-info.disabled,+.btn-info[disabled] {+  background-color: #2f96b4;+}+.btn-info:active,+.btn-info.active {+  background-color: #24748c \9;+}+.btn-inverse {+  background-color: #414141;+  background-image: -moz-linear-gradient(top, #555555, #222222);+  background-image: -ms-linear-gradient(top, #555555, #222222);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));+  background-image: -webkit-linear-gradient(top, #555555, #222222);+  background-image: -o-linear-gradient(top, #555555, #222222);+  background-image: linear-gradient(top, #555555, #222222);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);+  border-color: #222222 #222222 #000000;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+}+.btn-inverse:hover,+.btn-inverse:active,+.btn-inverse.active,+.btn-inverse.disabled,+.btn-inverse[disabled] {+  background-color: #222222;+}+.btn-inverse:active,+.btn-inverse.active {+  background-color: #080808 \9;+}+button.btn,+input[type="submit"].btn {+  *padding-top: 2px;+  *padding-bottom: 2px;+}+button.btn::-moz-focus-inner,+input[type="submit"].btn::-moz-focus-inner {+  padding: 0;+  border: 0;+}+button.btn.btn-large,+input[type="submit"].btn.btn-large {+  *padding-top: 7px;+  *padding-bottom: 7px;+}+button.btn.btn-small,+input[type="submit"].btn.btn-small {+  *padding-top: 3px;+  *padding-bottom: 3px;+}+button.btn.btn-mini,+input[type="submit"].btn.btn-mini {+  *padding-top: 1px;+  *padding-bottom: 1px;+}+.btn-group {+  position: relative;+  *zoom: 1;+  *margin-left: .3em;+}+.btn-group:before,+.btn-group:after {+  display: table;+  content: "";+}+.btn-group:after {+  clear: both;+}+.btn-group:first-child {+  *margin-left: 0;+}+.btn-group + .btn-group {+  margin-left: 5px;+}+.btn-toolbar {+  margin-top: 9px;+  margin-bottom: 9px;+}+.btn-toolbar .btn-group {+  display: inline-block;+  *display: inline;+  /* IE7 inline-block hack */++  *zoom: 1;+}+.btn-group .btn {+  position: relative;+  float: left;+  margin-left: -1px;+  -webkit-border-radius: 0;+  -moz-border-radius: 0;+  border-radius: 0;+}+.btn-group .btn:first-child {+  margin-left: 0;+  -webkit-border-top-left-radius: 4px;+  -moz-border-radius-topleft: 4px;+  border-top-left-radius: 4px;+  -webkit-border-bottom-left-radius: 4px;+  -moz-border-radius-bottomleft: 4px;+  border-bottom-left-radius: 4px;+}+.btn-group .btn:last-child,+.btn-group .dropdown-toggle {+  -webkit-border-top-right-radius: 4px;+  -moz-border-radius-topright: 4px;+  border-top-right-radius: 4px;+  -webkit-border-bottom-right-radius: 4px;+  -moz-border-radius-bottomright: 4px;+  border-bottom-right-radius: 4px;+}+.btn-group .btn.large:first-child {+  margin-left: 0;+  -webkit-border-top-left-radius: 6px;+  -moz-border-radius-topleft: 6px;+  border-top-left-radius: 6px;+  -webkit-border-bottom-left-radius: 6px;+  -moz-border-radius-bottomleft: 6px;+  border-bottom-left-radius: 6px;+}+.btn-group .btn.large:last-child,+.btn-group .large.dropdown-toggle {+  -webkit-border-top-right-radius: 6px;+  -moz-border-radius-topright: 6px;+  border-top-right-radius: 6px;+  -webkit-border-bottom-right-radius: 6px;+  -moz-border-radius-bottomright: 6px;+  border-bottom-right-radius: 6px;+}+.btn-group .btn:hover,+.btn-group .btn:focus,+.btn-group .btn:active,+.btn-group .btn.active {+  z-index: 2;+}+.btn-group .dropdown-toggle:active,+.btn-group.open .dropdown-toggle {+  outline: 0;+}+.btn-group .dropdown-toggle {+  padding-left: 8px;+  padding-right: 8px;+  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);+  *padding-top: 3px;+  *padding-bottom: 3px;+}+.btn-group .btn-mini.dropdown-toggle {+  padding-left: 5px;+  padding-right: 5px;+  *padding-top: 1px;+  *padding-bottom: 1px;+}+.btn-group .btn-small.dropdown-toggle {+  *padding-top: 4px;+  *padding-bottom: 4px;+}+.btn-group .btn-large.dropdown-toggle {+  padding-left: 12px;+  padding-right: 12px;+}+.btn-group.open {+  *z-index: 1000;+}+.btn-group.open .dropdown-menu {+  display: block;+  margin-top: 1px;+  -webkit-border-radius: 5px;+  -moz-border-radius: 5px;+  border-radius: 5px;+}+.btn-group.open .dropdown-toggle {+  background-image: none;+  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);+}+.btn .caret {+  margin-top: 7px;+  margin-left: 0;+}+.btn:hover .caret,+.open.btn-group .caret {+  opacity: 1;+  filter: alpha(opacity=100);+}+.btn-mini .caret {+  margin-top: 5px;+}+.btn-small .caret {+  margin-top: 6px;+}+.btn-large .caret {+  margin-top: 6px;+  border-left: 5px solid transparent;+  border-right: 5px solid transparent;+  border-top: 5px solid #000000;+}+.btn-primary .caret,+.btn-warning .caret,+.btn-danger .caret,+.btn-info .caret,+.btn-success .caret,+.btn-inverse .caret {+  border-top-color: #ffffff;+  border-bottom-color: #ffffff;+  opacity: 0.75;+  filter: alpha(opacity=75);+}+.alert {+  padding: 8px 35px 8px 14px;+  margin-bottom: 18px;+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);+  background-color: #fcf8e3;+  border: 1px solid #fbeed5;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  color: #c09853;+}+.alert-heading {+  color: inherit;+}+.alert .close {+  position: relative;+  top: -2px;+  right: -21px;+  line-height: 18px;+}+.alert-success {+  background-color: #dff0d8;+  border-color: #d6e9c6;+  color: #468847;+}+.alert-danger,+.alert-error {+  background-color: #f2dede;+  border-color: #eed3d7;+  color: #b94a48;+}+.alert-info {+  background-color: #d9edf7;+  border-color: #bce8f1;+  color: #3a87ad;+}+.alert-block {+  padding-top: 14px;+  padding-bottom: 14px;+}+.alert-block > p,+.alert-block > ul {+  margin-bottom: 0;+}+.alert-block p + p {+  margin-top: 5px;+}+.nav {+  margin-left: 0;+  margin-bottom: 18px;+  list-style: none;+}+.nav > li > a {+  display: block;+}+.nav > li > a:hover {+  text-decoration: none;+  background-color: #eeeeee;+}+.nav .nav-header {+  display: block;+  padding: 3px 15px;+  font-size: 11px;+  font-weight: bold;+  line-height: 18px;+  color: #999999;+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);+  text-transform: uppercase;+}+.nav li + .nav-header {+  margin-top: 9px;+}+.nav-list {+  padding-left: 15px;+  padding-right: 15px;+  margin-bottom: 0;+}+.nav-list > li > a,+.nav-list .nav-header {+  margin-left: -15px;+  margin-right: -15px;+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);+}+.nav-list > li > a {+  padding: 3px 15px;+}+.nav-list > .active > a,+.nav-list > .active > a:hover {+  color: #ffffff;+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);+  background-color: #0088cc;+}+.nav-list [class^="icon-"] {+  margin-right: 2px;+}+.nav-list .divider {+  height: 1px;+  margin: 8px 1px;+  overflow: hidden;+  background-color: #e5e5e5;+  border-bottom: 1px solid #ffffff;+  *width: 100%;+  *margin: -5px 0 5px;+}+.nav-tabs,+.nav-pills {+  *zoom: 1;+}+.nav-tabs:before,+.nav-pills:before,+.nav-tabs:after,+.nav-pills:after {+  display: table;+  content: "";+}+.nav-tabs:after,+.nav-pills:after {+  clear: both;+}+.nav-tabs > li,+.nav-pills > li {+  float: left;+}+.nav-tabs > li > a,+.nav-pills > li > a {+  padding-right: 12px;+  padding-left: 12px;+  margin-right: 2px;+  line-height: 14px;+}+.nav-tabs {+  border-bottom: 1px solid #ddd;+}+.nav-tabs > li {+  margin-bottom: -1px;+}+.nav-tabs > li > a {+  padding-top: 8px;+  padding-bottom: 8px;+  line-height: 18px;+  border: 1px solid transparent;+  -webkit-border-radius: 4px 4px 0 0;+  -moz-border-radius: 4px 4px 0 0;+  border-radius: 4px 4px 0 0;+}+.nav-tabs > li > a:hover {+  border-color: #eeeeee #eeeeee #dddddd;+}+.nav-tabs > .active > a,+.nav-tabs > .active > a:hover {+  color: #555555;+  background-color: #ffffff;+  border: 1px solid #ddd;+  border-bottom-color: transparent;+  cursor: default;+}+.nav-pills > li > a {+  padding-top: 8px;+  padding-bottom: 8px;+  margin-top: 2px;+  margin-bottom: 2px;+  -webkit-border-radius: 5px;+  -moz-border-radius: 5px;+  border-radius: 5px;+}+.nav-pills > .active > a,+.nav-pills > .active > a:hover {+  color: #ffffff;+  background-color: #0088cc;+}+.nav-stacked > li {+  float: none;+}+.nav-stacked > li > a {+  margin-right: 0;+}+.nav-tabs.nav-stacked {+  border-bottom: 0;+}+.nav-tabs.nav-stacked > li > a {+  border: 1px solid #ddd;+  -webkit-border-radius: 0;+  -moz-border-radius: 0;+  border-radius: 0;+}+.nav-tabs.nav-stacked > li:first-child > a {+  -webkit-border-radius: 4px 4px 0 0;+  -moz-border-radius: 4px 4px 0 0;+  border-radius: 4px 4px 0 0;+}+.nav-tabs.nav-stacked > li:last-child > a {+  -webkit-border-radius: 0 0 4px 4px;+  -moz-border-radius: 0 0 4px 4px;+  border-radius: 0 0 4px 4px;+}+.nav-tabs.nav-stacked > li > a:hover {+  border-color: #ddd;+  z-index: 2;+}+.nav-pills.nav-stacked > li > a {+  margin-bottom: 3px;+}+.nav-pills.nav-stacked > li:last-child > a {+  margin-bottom: 1px;+}+.nav-tabs .dropdown-menu,+.nav-pills .dropdown-menu {+  margin-top: 1px;+  border-width: 1px;+}+.nav-pills .dropdown-menu {+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.nav-tabs .dropdown-toggle .caret,+.nav-pills .dropdown-toggle .caret {+  border-top-color: #0088cc;+  border-bottom-color: #0088cc;+  margin-top: 6px;+}+.nav-tabs .dropdown-toggle:hover .caret,+.nav-pills .dropdown-toggle:hover .caret {+  border-top-color: #005580;+  border-bottom-color: #005580;+}+.nav-tabs .active .dropdown-toggle .caret,+.nav-pills .active .dropdown-toggle .caret {+  border-top-color: #333333;+  border-bottom-color: #333333;+}+.nav > .dropdown.active > a:hover {+  color: #000000;+  cursor: pointer;+}+.nav-tabs .open .dropdown-toggle,+.nav-pills .open .dropdown-toggle,+.nav > .open.active > a:hover {+  color: #ffffff;+  background-color: #999999;+  border-color: #999999;+}+.nav .open .caret,+.nav .open.active .caret,+.nav .open a:hover .caret {+  border-top-color: #ffffff;+  border-bottom-color: #ffffff;+  opacity: 1;+  filter: alpha(opacity=100);+}+.tabs-stacked .open > a:hover {+  border-color: #999999;+}+.tabbable {+  *zoom: 1;+}+.tabbable:before,+.tabbable:after {+  display: table;+  content: "";+}+.tabbable:after {+  clear: both;+}+.tab-content {+  display: table;+  width: 100%;+}+.tabs-below .nav-tabs,+.tabs-right .nav-tabs,+.tabs-left .nav-tabs {+  border-bottom: 0;+}+.tab-content > .tab-pane,+.pill-content > .pill-pane {+  display: none;+}+.tab-content > .active,+.pill-content > .active {+  display: block;+}+.tabs-below .nav-tabs {+  border-top: 1px solid #ddd;+}+.tabs-below .nav-tabs > li {+  margin-top: -1px;+  margin-bottom: 0;+}+.tabs-below .nav-tabs > li > a {+  -webkit-border-radius: 0 0 4px 4px;+  -moz-border-radius: 0 0 4px 4px;+  border-radius: 0 0 4px 4px;+}+.tabs-below .nav-tabs > li > a:hover {+  border-bottom-color: transparent;+  border-top-color: #ddd;+}+.tabs-below .nav-tabs .active > a,+.tabs-below .nav-tabs .active > a:hover {+  border-color: transparent #ddd #ddd #ddd;+}+.tabs-left .nav-tabs > li,+.tabs-right .nav-tabs > li {+  float: none;+}+.tabs-left .nav-tabs > li > a,+.tabs-right .nav-tabs > li > a {+  min-width: 74px;+  margin-right: 0;+  margin-bottom: 3px;+}+.tabs-left .nav-tabs {+  float: left;+  margin-right: 19px;+  border-right: 1px solid #ddd;+}+.tabs-left .nav-tabs > li > a {+  margin-right: -1px;+  -webkit-border-radius: 4px 0 0 4px;+  -moz-border-radius: 4px 0 0 4px;+  border-radius: 4px 0 0 4px;+}+.tabs-left .nav-tabs > li > a:hover {+  border-color: #eeeeee #dddddd #eeeeee #eeeeee;+}+.tabs-left .nav-tabs .active > a,+.tabs-left .nav-tabs .active > a:hover {+  border-color: #ddd transparent #ddd #ddd;+  *border-right-color: #ffffff;+}+.tabs-right .nav-tabs {+  float: right;+  margin-left: 19px;+  border-left: 1px solid #ddd;+}+.tabs-right .nav-tabs > li > a {+  margin-left: -1px;+  -webkit-border-radius: 0 4px 4px 0;+  -moz-border-radius: 0 4px 4px 0;+  border-radius: 0 4px 4px 0;+}+.tabs-right .nav-tabs > li > a:hover {+  border-color: #eeeeee #eeeeee #eeeeee #dddddd;+}+.tabs-right .nav-tabs .active > a,+.tabs-right .nav-tabs .active > a:hover {+  border-color: #ddd #ddd #ddd transparent;+  *border-left-color: #ffffff;+}+.navbar {+  *position: relative;+  *z-index: 2;+  overflow: visible;+  margin-bottom: 18px;+}+.navbar-inner {+  padding-left: 20px;+  padding-right: 20px;+  background-color: #2c2c2c;+  background-image: -moz-linear-gradient(top, #333333, #222222);+  background-image: -ms-linear-gradient(top, #333333, #222222);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));+  background-image: -webkit-linear-gradient(top, #333333, #222222);+  background-image: -o-linear-gradient(top, #333333, #222222);+  background-image: linear-gradient(top, #333333, #222222);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);+  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);+}+.navbar .container {+  width: auto;+}+.btn-navbar {+  display: none;+  float: right;+  padding: 7px 10px;+  margin-left: 5px;+  margin-right: 5px;+  background-color: #2c2c2c;+  background-image: -moz-linear-gradient(top, #333333, #222222);+  background-image: -ms-linear-gradient(top, #333333, #222222);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));+  background-image: -webkit-linear-gradient(top, #333333, #222222);+  background-image: -o-linear-gradient(top, #333333, #222222);+  background-image: linear-gradient(top, #333333, #222222);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);+  border-color: #222222 #222222 #000000;+  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);+  filter: progid:dximagetransform.microsoft.gradient(enabled=false);+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);+  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);+}+.btn-navbar:hover,+.btn-navbar:active,+.btn-navbar.active,+.btn-navbar.disabled,+.btn-navbar[disabled] {+  background-color: #222222;+}+.btn-navbar:active,+.btn-navbar.active {+  background-color: #080808 \9;+}+.btn-navbar .icon-bar {+  display: block;+  width: 18px;+  height: 2px;+  background-color: #f5f5f5;+  -webkit-border-radius: 1px;+  -moz-border-radius: 1px;+  border-radius: 1px;+  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);+  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);+  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);+}+.btn-navbar .icon-bar + .icon-bar {+  margin-top: 3px;+}+.nav-collapse.collapse {+  height: auto;+}+.navbar {+  color: #999999;+}+.navbar .brand:hover {+  text-decoration: none;+}+.navbar .brand {+  float: left;+  display: block;+  padding: 8px 20px 12px;+  margin-left: -20px;+  font-size: 20px;+  font-weight: 200;+  line-height: 1;+  color: #ffffff;+}+.navbar .navbar-text {+  margin-bottom: 0;+  line-height: 40px;+}+.navbar .btn,+.navbar .btn-group {+  margin-top: 5px;+}+.navbar .btn-group .btn {+  margin-top: 0;+}+.navbar-form {+  margin-bottom: 0;+  *zoom: 1;+}+.navbar-form:before,+.navbar-form:after {+  display: table;+  content: "";+}+.navbar-form:after {+  clear: both;+}+.navbar-form input,+.navbar-form select,+.navbar-form .radio,+.navbar-form .checkbox {+  margin-top: 5px;+}+.navbar-form input,+.navbar-form select {+  display: inline-block;+  margin-bottom: 0;+}+.navbar-form input[type="image"],+.navbar-form input[type="checkbox"],+.navbar-form input[type="radio"] {+  margin-top: 3px;+}+.navbar-form .input-append,+.navbar-form .input-prepend {+  margin-top: 6px;+  white-space: nowrap;+}+.navbar-form .input-append input,+.navbar-form .input-prepend input {+  margin-top: 0;+}+.navbar-search {+  position: relative;+  float: left;+  margin-top: 6px;+  margin-bottom: 0;+}+.navbar-search .search-query {+  padding: 4px 9px;+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;+  font-size: 13px;+  font-weight: normal;+  line-height: 1;+  color: #ffffff;+  background-color: #626262;+  border: 1px solid #151515;+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);+  -webkit-transition: none;+  -moz-transition: none;+  -ms-transition: none;+  -o-transition: none;+  transition: none;+}+.navbar-search .search-query:-moz-placeholder {+  color: #cccccc;+}+.navbar-search .search-query::-webkit-input-placeholder {+  color: #cccccc;+}+.navbar-search .search-query:focus,+.navbar-search .search-query.focused {+  padding: 5px 10px;+  color: #333333;+  text-shadow: 0 1px 0 #ffffff;+  background-color: #ffffff;+  border: 0;+  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);+  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);+  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);+  outline: 0;+}+.navbar-fixed-top,+.navbar-fixed-bottom {+  position: fixed;+  right: 0;+  left: 0;+  z-index: 1030;+  margin-bottom: 0;+}+.navbar-fixed-top .navbar-inner,+.navbar-fixed-bottom .navbar-inner {+  padding-left: 0;+  padding-right: 0;+  -webkit-border-radius: 0;+  -moz-border-radius: 0;+  border-radius: 0;+}+.navbar-fixed-top .container,+.navbar-fixed-bottom .container {+  width: 940px;+}+.navbar-fixed-top {+  top: 0;+}+.navbar-fixed-bottom {+  bottom: 0;+}+.navbar .nav {+  position: relative;+  left: 0;+  display: block;+  float: left;+  margin: 0 10px 0 0;+}+.navbar .nav.pull-right {+  float: right;+}+.navbar .nav > li {+  display: block;+  float: left;+}+.navbar .nav > li > a {+  float: none;+  padding: 10px 10px 11px;+  line-height: 19px;+  color: #999999;+  text-decoration: none;+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);+}+.navbar .nav > li > a:hover {+  background-color: transparent;+  color: #ffffff;+  text-decoration: none;+}+.navbar .nav .active > a,+.navbar .nav .active > a:hover {+  color: #ffffff;+  text-decoration: none;+  background-color: #222222;+}+.navbar .divider-vertical {+  height: 40px;+  width: 1px;+  margin: 0 9px;+  overflow: hidden;+  background-color: #222222;+  border-right: 1px solid #333333;+}+.navbar .nav.pull-right {+  margin-left: 10px;+  margin-right: 0;+}+.navbar .dropdown-menu {+  margin-top: 1px;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.navbar .dropdown-menu:before {+  content: '';+  display: inline-block;+  border-left: 7px solid transparent;+  border-right: 7px solid transparent;+  border-bottom: 7px solid #ccc;+  border-bottom-color: rgba(0, 0, 0, 0.2);+  position: absolute;+  top: -7px;+  left: 9px;+}+.navbar .dropdown-menu:after {+  content: '';+  display: inline-block;+  border-left: 6px solid transparent;+  border-right: 6px solid transparent;+  border-bottom: 6px solid #ffffff;+  position: absolute;+  top: -6px;+  left: 10px;+}+.navbar-fixed-bottom .dropdown-menu:before {+  border-top: 7px solid #ccc;+  border-top-color: rgba(0, 0, 0, 0.2);+  border-bottom: 0;+  bottom: -7px;+  top: auto;+}+.navbar-fixed-bottom .dropdown-menu:after {+  border-top: 6px solid #ffffff;+  border-bottom: 0;+  bottom: -6px;+  top: auto;+}+.navbar .nav .dropdown-toggle .caret,+.navbar .nav .open.dropdown .caret {+  border-top-color: #ffffff;+  border-bottom-color: #ffffff;+}+.navbar .nav .active .caret {+  opacity: 1;+  filter: alpha(opacity=100);+}+.navbar .nav .open > .dropdown-toggle,+.navbar .nav .active > .dropdown-toggle,+.navbar .nav .open.active > .dropdown-toggle {+  background-color: transparent;+}+.navbar .nav .active > .dropdown-toggle:hover {+  color: #ffffff;+}+.navbar .nav.pull-right .dropdown-menu,+.navbar .nav .dropdown-menu.pull-right {+  left: auto;+  right: 0;+}+.navbar .nav.pull-right .dropdown-menu:before,+.navbar .nav .dropdown-menu.pull-right:before {+  left: auto;+  right: 12px;+}+.navbar .nav.pull-right .dropdown-menu:after,+.navbar .nav .dropdown-menu.pull-right:after {+  left: auto;+  right: 13px;+}+.breadcrumb {+  padding: 7px 14px;+  margin: 0 0 18px;+  list-style: none;+  background-color: #fbfbfb;+  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);+  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));+  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);+  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);+  background-image: linear-gradient(top, #ffffff, #f5f5f5);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);+  border: 1px solid #ddd;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+  -webkit-box-shadow: inset 0 1px 0 #ffffff;+  -moz-box-shadow: inset 0 1px 0 #ffffff;+  box-shadow: inset 0 1px 0 #ffffff;+}+.breadcrumb li {+  display: inline-block;+  *display: inline;+  /* IE7 inline-block hack */++  *zoom: 1;+  text-shadow: 0 1px 0 #ffffff;+}+.breadcrumb .divider {+  padding: 0 5px;+  color: #999999;+}+.breadcrumb .active a {+  color: #333333;+}+.pagination {+  height: 36px;+  margin: 18px 0;+}+.pagination ul {+  display: inline-block;+  *display: inline;+  /* IE7 inline-block hack */++  *zoom: 1;+  margin-left: 0;+  margin-bottom: 0;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);+  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);+  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);+}+.pagination li {+  display: inline;+}+.pagination a {+  float: left;+  padding: 0 14px;+  line-height: 34px;+  text-decoration: none;+  border: 1px solid #ddd;+  border-left-width: 0;+}+.pagination a:hover,+.pagination .active a {+  background-color: #f5f5f5;+}+.pagination .active a {+  color: #999999;+  cursor: default;+}+.pagination .disabled span,+.pagination .disabled a,+.pagination .disabled a:hover {+  color: #999999;+  background-color: transparent;+  cursor: default;+}+.pagination li:first-child a {+  border-left-width: 1px;+  -webkit-border-radius: 3px 0 0 3px;+  -moz-border-radius: 3px 0 0 3px;+  border-radius: 3px 0 0 3px;+}+.pagination li:last-child a {+  -webkit-border-radius: 0 3px 3px 0;+  -moz-border-radius: 0 3px 3px 0;+  border-radius: 0 3px 3px 0;+}+.pagination-centered {+  text-align: center;+}+.pagination-right {+  text-align: right;+}+.pager {+  margin-left: 0;+  margin-bottom: 18px;+  list-style: none;+  text-align: center;+  *zoom: 1;+}+.pager:before,+.pager:after {+  display: table;+  content: "";+}+.pager:after {+  clear: both;+}+.pager li {+  display: inline;+}+.pager a {+  display: inline-block;+  padding: 5px 14px;+  background-color: #fff;+  border: 1px solid #ddd;+  -webkit-border-radius: 15px;+  -moz-border-radius: 15px;+  border-radius: 15px;+}+.pager a:hover {+  text-decoration: none;+  background-color: #f5f5f5;+}+.pager .next a {+  float: right;+}+.pager .previous a {+  float: left;+}+.pager .disabled a,+.pager .disabled a:hover {+  color: #999999;+  background-color: #fff;+  cursor: default;+}+.modal-open .dropdown-menu {+  z-index: 2050;+}+.modal-open .dropdown.open {+  *z-index: 2050;+}+.modal-open .popover {+  z-index: 2060;+}+.modal-open .tooltip {+  z-index: 2070;+}+.modal-backdrop {+  position: fixed;+  top: 0;+  right: 0;+  bottom: 0;+  left: 0;+  z-index: 1040;+  background-color: #000000;+}+.modal-backdrop.fade {+  opacity: 0;+}+.modal-backdrop,+.modal-backdrop.fade.in {+  opacity: 0.8;+  filter: alpha(opacity=80);+}+.modal {+  position: fixed;+  top: 50%;+  left: 50%;+  z-index: 1050;+  overflow: auto;+  width: 560px;+  margin: -250px 0 0 -280px;+  background-color: #ffffff;+  border: 1px solid #999;+  border: 1px solid rgba(0, 0, 0, 0.3);+  *border: 1px solid #999;+  /* IE6-7 */++  -webkit-border-radius: 6px;+  -moz-border-radius: 6px;+  border-radius: 6px;+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+  -webkit-background-clip: padding-box;+  -moz-background-clip: padding-box;+  background-clip: padding-box;+}+.modal.fade {+  -webkit-transition: opacity .3s linear, top .3s ease-out;+  -moz-transition: opacity .3s linear, top .3s ease-out;+  -ms-transition: opacity .3s linear, top .3s ease-out;+  -o-transition: opacity .3s linear, top .3s ease-out;+  transition: opacity .3s linear, top .3s ease-out;+  top: -25%;+}+.modal.fade.in {+  top: 50%;+}+.modal-header {+  padding: 9px 15px;+  border-bottom: 1px solid #eee;+}+.modal-header .close {+  margin-top: 2px;+}+.modal-body {+  overflow-y: auto;+  max-height: 400px;+  padding: 15px;+}+.modal-form {+  margin-bottom: 0;+}+.modal-footer {+  padding: 14px 15px 15px;+  margin-bottom: 0;+  text-align: right;+  background-color: #f5f5f5;+  border-top: 1px solid #ddd;+  -webkit-border-radius: 0 0 6px 6px;+  -moz-border-radius: 0 0 6px 6px;+  border-radius: 0 0 6px 6px;+  -webkit-box-shadow: inset 0 1px 0 #ffffff;+  -moz-box-shadow: inset 0 1px 0 #ffffff;+  box-shadow: inset 0 1px 0 #ffffff;+  *zoom: 1;+}+.modal-footer:before,+.modal-footer:after {+  display: table;+  content: "";+}+.modal-footer:after {+  clear: both;+}+.modal-footer .btn + .btn {+  margin-left: 5px;+  margin-bottom: 0;+}+.modal-footer .btn-group .btn + .btn {+  margin-left: -1px;+}+.tooltip {+  position: absolute;+  z-index: 1020;+  display: block;+  visibility: visible;+  padding: 5px;+  font-size: 11px;+  opacity: 0;+  filter: alpha(opacity=0);+}+.tooltip.in {+  opacity: 0.8;+  filter: alpha(opacity=80);+}+.tooltip.top {+  margin-top: -2px;+}+.tooltip.right {+  margin-left: 2px;+}+.tooltip.bottom {+  margin-top: 2px;+}+.tooltip.left {+  margin-left: -2px;+}+.tooltip.top .tooltip-arrow {+  bottom: 0;+  left: 50%;+  margin-left: -5px;+  border-left: 5px solid transparent;+  border-right: 5px solid transparent;+  border-top: 5px solid #000000;+}+.tooltip.left .tooltip-arrow {+  top: 50%;+  right: 0;+  margin-top: -5px;+  border-top: 5px solid transparent;+  border-bottom: 5px solid transparent;+  border-left: 5px solid #000000;+}+.tooltip.bottom .tooltip-arrow {+  top: 0;+  left: 50%;+  margin-left: -5px;+  border-left: 5px solid transparent;+  border-right: 5px solid transparent;+  border-bottom: 5px solid #000000;+}+.tooltip.right .tooltip-arrow {+  top: 50%;+  left: 0;+  margin-top: -5px;+  border-top: 5px solid transparent;+  border-bottom: 5px solid transparent;+  border-right: 5px solid #000000;+}+.tooltip-inner {+  max-width: 200px;+  padding: 3px 8px;+  color: #ffffff;+  text-align: center;+  text-decoration: none;+  background-color: #000000;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.tooltip-arrow {+  position: absolute;+  width: 0;+  height: 0;+}+.popover {+  position: absolute;+  top: 0;+  left: 0;+  z-index: 1010;+  display: none;+  padding: 5px;+}+.popover.top {+  margin-top: -5px;+}+.popover.right {+  margin-left: 5px;+}+.popover.bottom {+  margin-top: 5px;+}+.popover.left {+  margin-left: -5px;+}+.popover.top .arrow {+  bottom: 0;+  left: 50%;+  margin-left: -5px;+  border-left: 5px solid transparent;+  border-right: 5px solid transparent;+  border-top: 5px solid #000000;+}+.popover.right .arrow {+  top: 50%;+  left: 0;+  margin-top: -5px;+  border-top: 5px solid transparent;+  border-bottom: 5px solid transparent;+  border-right: 5px solid #000000;+}+.popover.bottom .arrow {+  top: 0;+  left: 50%;+  margin-left: -5px;+  border-left: 5px solid transparent;+  border-right: 5px solid transparent;+  border-bottom: 5px solid #000000;+}+.popover.left .arrow {+  top: 50%;+  right: 0;+  margin-top: -5px;+  border-top: 5px solid transparent;+  border-bottom: 5px solid transparent;+  border-left: 5px solid #000000;+}+.popover .arrow {+  position: absolute;+  width: 0;+  height: 0;+}+.popover-inner {+  padding: 3px;+  width: 280px;+  overflow: hidden;+  background: #000000;+  background: rgba(0, 0, 0, 0.8);+  -webkit-border-radius: 6px;+  -moz-border-radius: 6px;+  border-radius: 6px;+  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);+}+.popover-title {+  padding: 9px 15px;+  line-height: 1;+  background-color: #f5f5f5;+  border-bottom: 1px solid #eee;+  -webkit-border-radius: 3px 3px 0 0;+  -moz-border-radius: 3px 3px 0 0;+  border-radius: 3px 3px 0 0;+}+.popover-content {+  padding: 14px;+  background-color: #ffffff;+  -webkit-border-radius: 0 0 3px 3px;+  -moz-border-radius: 0 0 3px 3px;+  border-radius: 0 0 3px 3px;+  -webkit-background-clip: padding-box;+  -moz-background-clip: padding-box;+  background-clip: padding-box;+}+.popover-content p,+.popover-content ul,+.popover-content ol {+  margin-bottom: 0;+}+.thumbnails {+  margin-left: -20px;+  list-style: none;+  *zoom: 1;+}+.thumbnails:before,+.thumbnails:after {+  display: table;+  content: "";+}+.thumbnails:after {+  clear: both;+}+.thumbnails > li {+  float: left;+  margin: 0 0 18px 20px;+}+.thumbnail {+  display: block;+  padding: 4px;+  line-height: 1;+  border: 1px solid #ddd;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);+  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);+}+a.thumbnail:hover {+  border-color: #0088cc;+  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);+  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);+  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);+}+.thumbnail > img {+  display: block;+  max-width: 100%;+  margin-left: auto;+  margin-right: auto;+}+.thumbnail .caption {+  padding: 9px;+}+.label {+  padding: 1px 4px 2px;+  font-size: 10.998px;+  font-weight: bold;+  line-height: 13px;+  color: #ffffff;+  vertical-align: middle;+  white-space: nowrap;+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);+  background-color: #999999;+  -webkit-border-radius: 3px;+  -moz-border-radius: 3px;+  border-radius: 3px;+}+.label:hover {+  color: #ffffff;+  text-decoration: none;+}+.label-important {+  background-color: #b94a48;+}+.label-important:hover {+  background-color: #953b39;+}+.label-warning {+  background-color: #f89406;+}+.label-warning:hover {+  background-color: #c67605;+}+.label-success {+  background-color: #468847;+}+.label-success:hover {+  background-color: #356635;+}+.label-info {+  background-color: #3a87ad;+}+.label-info:hover {+  background-color: #2d6987;+}+.label-inverse {+  background-color: #333333;+}+.label-inverse:hover {+  background-color: #1a1a1a;+}+.badge {+  padding: 1px 9px 2px;+  font-size: 12.025px;+  font-weight: bold;+  white-space: nowrap;+  color: #ffffff;+  background-color: #999999;+  -webkit-border-radius: 9px;+  -moz-border-radius: 9px;+  border-radius: 9px;+}+.badge:hover {+  color: #ffffff;+  text-decoration: none;+  cursor: pointer;+}+.badge-error {+  background-color: #b94a48;+}+.badge-error:hover {+  background-color: #953b39;+}+.badge-warning {+  background-color: #f89406;+}+.badge-warning:hover {+  background-color: #c67605;+}+.badge-success {+  background-color: #468847;+}+.badge-success:hover {+  background-color: #356635;+}+.badge-info {+  background-color: #3a87ad;+}+.badge-info:hover {+  background-color: #2d6987;+}+.badge-inverse {+  background-color: #333333;+}+.badge-inverse:hover {+  background-color: #1a1a1a;+}+@-webkit-keyframes progress-bar-stripes {+  from {+    background-position: 0 0;+  }+  to {+    background-position: 40px 0;+  }+}+@-moz-keyframes progress-bar-stripes {+  from {+    background-position: 0 0;+  }+  to {+    background-position: 40px 0;+  }+}+@-ms-keyframes progress-bar-stripes {+  from {+    background-position: 0 0;+  }+  to {+    background-position: 40px 0;+  }+}+@keyframes progress-bar-stripes {+  from {+    background-position: 0 0;+  }+  to {+    background-position: 40px 0;+  }+}+.progress {+  overflow: hidden;+  height: 18px;+  margin-bottom: 18px;+  background-color: #f7f7f7;+  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);+  background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));+  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);+  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);+  background-image: linear-gradient(top, #f5f5f5, #f9f9f9);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);+  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);+  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.progress .bar {+  width: 0%;+  height: 18px;+  color: #ffffff;+  font-size: 12px;+  text-align: center;+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);+  background-color: #0e90d2;+  background-image: -moz-linear-gradient(top, #149bdf, #0480be);+  background-image: -ms-linear-gradient(top, #149bdf, #0480be);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));+  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);+  background-image: -o-linear-gradient(top, #149bdf, #0480be);+  background-image: linear-gradient(top, #149bdf, #0480be);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);+  -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);+  -webkit-box-sizing: border-box;+  -moz-box-sizing: border-box;+  -ms-box-sizing: border-box;+  box-sizing: border-box;+  -webkit-transition: width 0.6s ease;+  -moz-transition: width 0.6s ease;+  -ms-transition: width 0.6s ease;+  -o-transition: width 0.6s ease;+  transition: width 0.6s ease;+}+.progress-striped .bar {+  background-color: #149bdf;+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  -webkit-background-size: 40px 40px;+  -moz-background-size: 40px 40px;+  -o-background-size: 40px 40px;+  background-size: 40px 40px;+}+.progress.active .bar {+  -webkit-animation: progress-bar-stripes 2s linear infinite;+  -moz-animation: progress-bar-stripes 2s linear infinite;+  animation: progress-bar-stripes 2s linear infinite;+}+.progress-danger .bar {+  background-color: #dd514c;+  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);+  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));+  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);+  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);+  background-image: linear-gradient(top, #ee5f5b, #c43c35);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);+}+.progress-danger.progress-striped .bar {+  background-color: #ee5f5b;+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+}+.progress-success .bar {+  background-color: #5eb95e;+  background-image: -moz-linear-gradient(top, #62c462, #57a957);+  background-image: -ms-linear-gradient(top, #62c462, #57a957);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));+  background-image: -webkit-linear-gradient(top, #62c462, #57a957);+  background-image: -o-linear-gradient(top, #62c462, #57a957);+  background-image: linear-gradient(top, #62c462, #57a957);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);+}+.progress-success.progress-striped .bar {+  background-color: #62c462;+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+}+.progress-info .bar {+  background-color: #4bb1cf;+  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);+  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));+  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);+  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);+  background-image: linear-gradient(top, #5bc0de, #339bb9);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);+}+.progress-info.progress-striped .bar {+  background-color: #5bc0de;+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+}+.progress-warning .bar {+  background-color: #faa732;+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);+  background-image: -ms-linear-gradient(top, #fbb450, #f89406);+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);+  background-image: -o-linear-gradient(top, #fbb450, #f89406);+  background-image: linear-gradient(top, #fbb450, #f89406);+  background-repeat: repeat-x;+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);+}+.progress-warning.progress-striped .bar {+  background-color: #fbb450;+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));+  background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);+}+.accordion {+  margin-bottom: 18px;+}+.accordion-group {+  margin-bottom: 2px;+  border: 1px solid #e5e5e5;+  -webkit-border-radius: 4px;+  -moz-border-radius: 4px;+  border-radius: 4px;+}+.accordion-heading {+  border-bottom: 0;+}+.accordion-heading .accordion-toggle {+  display: block;+  padding: 8px 15px;+}+.accordion-inner {+  padding: 9px 15px;+  border-top: 1px solid #e5e5e5;+}+.carousel {+  position: relative;+  margin-bottom: 18px;+  line-height: 1;+}+.carousel-inner {+  overflow: hidden;+  width: 100%;+  position: relative;+}+.carousel .item {+  display: none;+  position: relative;+  -webkit-transition: 0.6s ease-in-out left;+  -moz-transition: 0.6s ease-in-out left;+  -ms-transition: 0.6s ease-in-out left;+  -o-transition: 0.6s ease-in-out left;+  transition: 0.6s ease-in-out left;+}+.carousel .item > img {+  display: block;+  line-height: 1;+}+.carousel .active,+.carousel .next,+.carousel .prev {+  display: block;+}+.carousel .active {+  left: 0;+}+.carousel .next,+.carousel .prev {+  position: absolute;+  top: 0;+  width: 100%;+}+.carousel .next {+  left: 100%;+}+.carousel .prev {+  left: -100%;+}+.carousel .next.left,+.carousel .prev.right {+  left: 0;+}+.carousel .active.left {+  left: -100%;+}+.carousel .active.right {+  left: 100%;+}+.carousel-control {+  position: absolute;+  top: 40%;+  left: 15px;+  width: 40px;+  height: 40px;+  margin-top: -20px;+  font-size: 60px;+  font-weight: 100;+  line-height: 30px;+  color: #ffffff;+  text-align: center;+  background: #222222;+  border: 3px solid #ffffff;+  -webkit-border-radius: 23px;+  -moz-border-radius: 23px;+  border-radius: 23px;+  opacity: 0.5;+  filter: alpha(opacity=50);+}+.carousel-control.right {+  left: auto;+  right: 15px;+}+.carousel-control:hover {+  color: #ffffff;+  text-decoration: none;+  opacity: 0.9;+  filter: alpha(opacity=90);+}+.carousel-caption {+  position: absolute;+  left: 0;+  right: 0;+  bottom: 0;+  padding: 10px 15px 5px;+  background: #333333;+  background: rgba(0, 0, 0, 0.75);+}+.carousel-caption h4,+.carousel-caption p {+  color: #ffffff;+}+.hero-unit {+  padding: 60px;+  margin-bottom: 30px;+  background-color: #eeeeee;+  -webkit-border-radius: 6px;+  -moz-border-radius: 6px;+  border-radius: 6px;+}+.hero-unit h1 {+  margin-bottom: 0;+  font-size: 60px;+  line-height: 1;+  color: inherit;+  letter-spacing: -1px;+}+.hero-unit p {+  font-size: 18px;+  font-weight: 200;+  line-height: 27px;+  color: inherit;+}+.pull-right {+  float: right;+}+.pull-left {+  float: left;+}+.hide {+  display: none;+}+.show {+  display: block;+}+.invisible {+  visibility: hidden;+}
− scaffold/static/js/modernizr.js.cg
@@ -1,4 +0,0 @@-/* Modernizr 2.0.6 (Custom Build) | MIT & BSD- * Build: http://www.modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-iepp-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load- */-;window.Modernizr=function(a,b,c){function H(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=a[b]in l;return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function D(a,b){return!!~(""+a).indexOf(b)}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["&shy;","<style>",a,"</style>"].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},w=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),x,y={}.hasOwnProperty,z;!C(y,c)&&!C(y.call,c)?z=function(a,b){return y.call(a,b)}:z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)};var G=function(c,d){var f=c.join(""),g=d.length;v(f,function(c,d){var f=b.styleSheets[b.styleSheets.length-1],h=f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"",i=c.childNodes,j={};while(g--)j[i[g].id]=i[g];e.touch="ontouchstart"in a||j.touch.offsetTop===9,e.csstransforms3d=j.csstransforms3d.offsetLeft===9,e.generatedcontent=j.generatedcontent.offsetHeight>=1,e.fontface=/src/i.test(h)&&h.indexOf(d.split(" ")[0])===0},g,d)}(['@font-face {font-family:"font";src:url("https://")}',["@media (",o.join("touch-enabled),("),i,")","{#touch{top:9px;position:absolute}}"].join(""),["@media (",o.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join(""),['#generatedcontent:after{content:"',m,'";visibility:hidden}'].join("")],["fontface","touch","csstransforms3d","generatedcontent"]);r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return e.touch},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b].toLowerCase()+"IndexedDB"])return!0;return!!a.indexedDB},r.hashchange=function(){return w("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){return w("dragstart")&&w("drop")},r.websockets=function(){for(var b=-1,c=p.length;++b<c;)if(a[p[b]+"WebSocket"])return!0;return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(https://),url(https://),red url(https://)");return/(url\s*\(.*?){3}/.test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius")},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d);return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){return e.fontface},r.generatedcontent=function(){return e.generatedcontent},r.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}}catch(e){}return c},r.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}catch(d){}return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webworkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var I in r)z(r,I)&&(x=I.toLowerCase(),e[x]=r[I](),u.push((e[x]?"":"no-")+x));e.input||H(),A(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,e._prefixes=o,e._domPrefixes=p,e.hasEvent=w,e.testProp=function(a){return E([a])},e.testAllProps=F,e.testStyles=v,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+u.join(" "):"");return e}(this,this.document),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
+ scaffold/templates/boilerplate-wrapper.hamlet.cg view
@@ -0,0 +1,42 @@+\<!doctype html>+\<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->+\<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->+\<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->+\<!--[if gt IE 8]><!-->+<html class="no-js" lang="en"> <!--<![endif]-->+    <head>+        <meta charset="UTF-8">++        <title>#{pageTitle pc}+        <meta name="description" content="">+        <meta name="author" content="">++        <meta name="viewport" content="width=device-width,initial-scale=1">++        ^{pageHead pc}++        \<!--[if lt IE 9]>+        \<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>+        \<![endif]-->++        <script>+          document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/,'js');+    <body>+        <div id="container">+            <header>+            <div id="main" role="main">+              ^{pageBody pc}+            <footer>++        \<!-- Change UA-XXXXX-X to be your site's ID -->+        <script>+            window._gaq = [['_setAccount','UAXXXXXXXX1'],['_trackPageview'],['_trackPageLoadTime']];+            YepNope.load({+            \  load: ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js'+            });+        \<!-- Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6.  chromium.org/developers/how-tos/chrome-frame-getting-started -->+        \<!--[if lt IE 7 ]>+            <script src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js">+            <script>+                window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})+        \<![endif]-->
− scaffold/templates/default-layout.lucius.cg
@@ -1,3 +0,0 @@-body {-    font-family: sans-serif;-}
scaffold/templates/homepage.hamlet.cg view
@@ -1,2 +1,38 @@ <h1>_{MsgHello}-<h2 ##{h2id}>You do not have Javascript enabled.++<ol>+  <li>Now that you have a working project you should use the #+    <a href="http://www.yesodweb.com/book/">Yesod book</a> to learn more. #+    You can also use this scaffolded site to explore some basic concepts.++  <li> This page was generated by the #{handlerName} handler in #+    <em>Handler/Root.hs</em>.++  <li> The #{handlerName} handler is set to generate your site's home screen in Routes file #+    <em>config/routes</em>++  <li> The HTML you are seeing now is actually composed by a number of <em>widgets</em>, #+    most of them are brought together by the <em>defaultLayout</em> function which #+    is defined in the <em>Foundation.hs</em> module, and used by <em>#{handlerName}</em>. #+    All the files for templates and wigdets are in <em>templates</em>.++  <li>+    A Widget's Html, Css and Javascript are separated in three files with the #+    <em>.hamlet</em>, <em>.lucius</em> and <em>.julius</em> extensions. ++  <li ##{aDomId}>If you had javascript enabled then you wouldn't be seeing this.+    +  <li #form>+    This is an example trivial Form. Read the #+    <a href="http://www.yesodweb.com/book/forms">Forms chapter</a> #+    on the yesod book to learn more about them.+    $maybe (info,con) <- submission+      <div .message>+        Your file's type was <em>#{fileContentType info}</em>. You say it has: <em>#{con}</em>+    <form method=post action=@{HomeR}#form enctype=#{formEnctype}>+      ^{formWidget}+      <input type="submit" value="Send it!">++  <li> And last but not least, Testing. In <em>tests/main.hs</em> you will find a #+    test suite that performs tests on this page. #+    You can run your tests by doing: <pre>cabal install --enable-tests && cabal test</pre>
scaffold/templates/homepage.julius.cg view
@@ -1,1 +1,1 @@-document.getElementById("#{h2id}").innerHTML = "<i>Added from JavaScript.</i>";+document.getElementById("#{aDomId}").innerHTML = "This text was added by the Javascript part of the homepage widget.";
scaffold/templates/homepage.lucius.cg view
@@ -1,6 +1,6 @@ h1 {     text-align: center }-h2##{h2id} {+h2##{aDomId} {     color: #990 }
+ scaffold/tests/main.hs.cg view
@@ -0,0 +1,20 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module Main where++import Import+import Settings+import Yesod.Logger (defaultDevelopmentLogger)+import Yesod.Default.Config+import Yesod.Test+import Application (makeFoundation)++main :: IO a+main = do+    conf <- loadConfig $ (configSettings Testing) { csParseExtra = parseExtra }+    logger <- defaultDevelopmentLogger+    foundation <- makeFoundation conf logger+    app <- toWaiAppPlain foundation+    runTests app (connPool foundation) homeSpecs
− scaffold/tiny/Application.hs.cg
@@ -1,57 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Application-    ( getApplication-    , getApplicationDev-    ) where--import Import-import Settings (parseExtra)-import Settings.StaticFiles (staticSite)-import Yesod.Default.Config-import Yesod.Default.Main (defaultDevelApp)-import Yesod.Default.Handlers (getFaviconR, getRobotsR)-#if DEVELOPMENT-import Yesod.Logger (Logger, logBS)-import Network.Wai.Middleware.RequestLogger (logCallbackDev)-#else-import Yesod.Logger (Logger, logBS, toProduction)-import Network.Wai.Middleware.RequestLogger (logCallback)-#endif-import Network.Wai (Application)---- Import all relevant handler modules here.-import Handler.Root---- This line actually creates our YesodSite instance. It is the second half--- of the call to mkYesodData which occurs in Foundation.hs. Please see--- the comments there for more details.-mkYesodDispatch "~sitearg~" resources~sitearg~---- This function allocates resources (such as a database connection pool),--- performs initialization and creates a WAI application. This is also the--- place to put your migrate statements to have automatic database--- migrations handled by Yesod.-getApplication :: AppConfig DefaultEnv Extra -> Logger -> IO Application-getApplication conf logger = do-    s <- staticSite-    let foundation = ~sitearg~ conf setLogger s-    app <- toWaiAppPlain foundation-    return $ logWare app-  where-#ifdef DEVELOPMENT-    logWare = logCallbackDev (logBS setLogger)-    setLogger = logger-#else-    setLogger = toProduction logger -- by default the logger is set for development-    logWare = logCallback (logBS setLogger)-#endif---- for yesod devel-getApplicationDev :: IO (Int, Application)-getApplicationDev =-    defaultDevelApp loader getApplication-  where-    loader = loadConfig (configSettings Development)-        { csParseExtra = parseExtra-        }-
− scaffold/tiny/Foundation.hs.cg
@@ -1,99 +0,0 @@-module Foundation-    ( ~sitearg~ (..)-    , Route (..)-    , ~sitearg~Message (..)-    , resources~sitearg~-    , Handler-    , Widget-    , module Yesod.Core-    , module Settings-    , liftIO-    ) where--import Prelude-import Yesod.Core hiding (Route)-import Yesod.Default.Config-import Yesod.Default.Util (addStaticContentExternal)-import Yesod.Static-import Settings.StaticFiles-import Yesod.Logger (Logger, logMsg, formatLogText)-import qualified Settings-import Settings (Extra (..), widgetFile)-import Control.Monad.IO.Class (liftIO)-import Web.ClientSession (getKey)-import Text.Hamlet (hamletFile)---- | The site argument for your application. This can be a good place to--- keep settings and values requiring initialization before your application--- starts running, such as database connections. Every handler will have--- access to the data present here.-data ~sitearg~ = ~sitearg~-    { settings  :: AppConfig DefaultEnv Extra-    , getLogger :: Logger-    , getStatic :: Static -- ^ Settings for static file serving.-    }---- Set up i18n messages. See the message folder.-mkMessage "~sitearg~" "messages" "en"---- This is where we define all of the routes in our application. For a full--- explanation of the syntax, please see:--- http://docs.yesodweb.com/book/web-routes-quasi/------ This function does three things:------ * Creates the route datatype ~sitearg~Route. Every valid URL in your---   application can be represented as a value of this type.--- * Creates the associated type:---       type instance Route ~sitearg~ = ~sitearg~Route--- * Creates the value resources~sitearg~ which contains information on the---   resources declared below. This is used in Handler.hs by the call to---   mkYesodDispatch------ What this function does *not* do is create a YesodSite instance for--- ~sitearg~. Creating that instance requires all of the handler functions--- for our application to be in scope. However, the handler functions--- usually require access to the ~sitearg~Route datatype. Therefore, we--- split these actions into two functions and place them in separate files.-mkYesodData "~sitearg~" $(parseRoutesFile "config/routes")---- Please see the documentation for the Yesod typeclass. There are a number--- of settings which can be configured by overriding methods here.-instance Yesod ~sitearg~ where-    approot = ApprootMaster $ appRoot . settings--    -- Place the session key file in the config folder-    encryptKey _ = fmap Just $ getKey "config/client_session_key.aes"--    defaultLayout widget = do-        master <- getYesod-        mmsg <- getMessage--        -- We break up the default layout into two components:-        -- default-layout is the contents of the body tag, and-        -- default-layout-wrapper is the entire page. Since the final-        -- value passed to hamletToRepHtml cannot be a widget, this allows-        -- you to use normal widget features in default-layout.--        pc <- widgetToPageContent $ do-            $(widgetFile "normalize")-            $(widgetFile "default-layout")-        hamletToRepHtml $(hamletFile "templates/default-layout-wrapper.hamlet")--    -- This is done to provide an optimization for serving static files from-    -- a separate domain. Please see the staticroot setting in Settings.hs-    urlRenderOverride y (StaticR s) =-        Just $ uncurry (joinPath y (Settings.staticRoot $ settings y)) $ renderRoute s-    urlRenderOverride _ _ = Nothing--    messageLogger y loc level msg =-      formatLogText (getLogger y) loc level msg >>= logMsg (getLogger y)--    -- This function creates static content files in the static folder-    -- and names them based on a hash of their content. This allows-    -- expiration dates to be set far in the future without worry of-    -- users receiving stale content.-    addStaticContent = addStaticContentExternal (const $ Left ()) base64md5 Settings.staticDir (StaticR . flip StaticRoute [])--    -- Place Javascript at bottom of the body tag so the rest of the page loads first-    jsLoader _ = BottomOfBody
− scaffold/tiny/Import.hs.cg
@@ -1,18 +0,0 @@-module Import-    ( module Prelude-    , module Foundation-    , (<>)-    , Text-    , module Data.Monoid-    , module Control.Applicative-    ) where--import Prelude hiding (writeFile, readFile)-import Foundation-import Data.Monoid (Monoid (mappend, mempty, mconcat))-import Control.Applicative ((<$>), (<*>), pure)-import Data.Text (Text)--infixr 5 <>-(<>) :: Monoid m => m -> m -> m-(<>) = mappend
− scaffold/tiny/Settings.hs.cg
@@ -1,60 +0,0 @@--- | Settings are centralized, as much as possible, into this file. This--- includes database connection settings, static file locations, etc.--- In addition, you can configure a number of different aspects of Yesod--- by overriding methods in the Yesod typeclass. That instance is--- declared in the ~project~.hs file.-module Settings-    ( widgetFile-    , staticRoot-    , staticDir-    , Extra (..)-    , parseExtra-    ) where--import Prelude-import Text.Shakespeare.Text (st)-import Language.Haskell.TH.Syntax-import Yesod.Default.Config-import qualified Yesod.Default.Util-import Data.Text (Text)-import Data.Yaml-import Control.Applicative---- | The location of static files on your system. This is a file system--- path. The default value works properly with your scaffolded site.-staticDir :: FilePath-staticDir = "static"---- | The base URL for your static files. As you can see by the default--- value, this can simply be "static" appended to your application root.--- A powerful optimization can be serving static files from a separate--- domain name. This allows you to use a web server optimized for static--- files, more easily set expires and cache values, and avoid possibly--- costly transference of cookies on static files. For more information,--- please see:---   http://code.google.com/speed/page-speed/docs/request.html#ServeFromCookielessDomain------ If you change the resource pattern for StaticR in ~project~.hs, you will--- have to make a corresponding change here.------ To see how this value is used, see urlRenderOverride in ~project~.hs-staticRoot :: AppConfig DefaultEnv a ->  Text-staticRoot conf = [~qq~st|#{appRoot conf}/static|]--widgetFile :: String -> Q Exp-#if DEVELOPMENT-widgetFile = Yesod.Default.Util.widgetFileReload-#else-widgetFile = Yesod.Default.Util.widgetFileNoReload-#endif--data Extra = Extra-    { extraCopyright :: Text-    , extraAnalytics :: Maybe Text -- ^ Google Analytics-    }--parseExtra :: DefaultEnv -> Object -> Parser Extra-parseExtra _ o = Extra-    <$> o .:  "copyright"-    <*> o .:? "analytics"-
− scaffold/tiny/config/routes.cg
@@ -1,7 +0,0 @@-/static StaticR Static getStatic--/favicon.ico FaviconR GET-/robots.txt RobotsR GET--/ RootR GET-
− scaffold/tiny/project.cabal.cg
@@ -1,83 +0,0 @@-name:              ~project~-version:           0.0.0-license:           BSD3-license-file:      LICENSE-author:            ~name~-maintainer:        ~name~-synopsis:          The greatest Yesod web application ever.-description:       I'm sure you can say something clever here if you try.-category:          Web-stability:         Experimental-cabal-version:     >= 1.6-build-type:        Simple-homepage:          http://~project~.yesodweb.com/--Flag dev-    Description:   Turn on development settings, like auto-reload templates.-    Default:       False--Flag library-only-    Description:   Build for use with "yesod devel"-    Default:       False--library-    if flag(library-only)-        Buildable: True-    else-        Buildable: False-    exposed-modules: Application-    other-modules:   Foundation-                     Import-                     Settings-                     Settings.StaticFiles-                     Handler.Root--    ghc-options:   -Wall -threaded -O0-    cpp-options:   -DDEVELOPMENT--    extensions: TemplateHaskell-                QuasiQuotes-                OverloadedStrings-                NoImplicitPrelude-                CPP-                OverloadedStrings-                MultiParamTypeClasses-                TypeFamilies--executable         ~project~-    if flag(library-only)-        Buildable: False--    if flag(dev)-        cpp-options:   -DDEVELOPMENT-        ghc-options:   -Wall -threaded -O0-    else-        ghc-options:   -Wall -threaded -O2--    main-is:       main.hs--    extensions: TemplateHaskell-                QuasiQuotes-                OverloadedStrings-                NoImplicitPrelude-                CPP-                OverloadedStrings-                MultiParamTypeClasses-                TypeFamilies--    build-depends: base                          >= 4          && < 5-                 , yesod-core                    >= 0.10       && < 0.11-                 , yesod-static                  >= 0.10       && < 0.11-                 , yesod-default                 >= 0.6        && < 0.7-                 , clientsession                 >= 0.7.3      && < 0.8-                 , bytestring                    >= 0.9        && < 0.10-                 , text                          >= 0.11       && < 0.12-                 , template-haskell-                 , hamlet                        >= 0.10       && < 0.11-                 , shakespeare-text              >= 0.11       && < 0.12-                 , wai                           >= 1.1        && < 1.2-                 , wai-extra                     >= 1.1        && < 1.2-                 , transformers                  >= 0.2        && < 0.3-                 , monad-control                 >= 0.3        && < 0.4-                 , yaml                          >= 0.5        && < 0.6-
yesod.cabal view
@@ -1,6 +1,6 @@ name:            yesod-version:         0.10.2-license:         BSD3+version:         1.0.0+license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com> maintainer:      Michael Snoyman <michael@snoyman.com>@@ -19,46 +19,45 @@  extra-source-files:   input/*.cg-  scaffold/templates/default-layout.lucius.cg-  scaffold/templates/homepage.lucius.cg   scaffold/Model.hs.cg-  scaffold/Import.hs.cg-  scaffold/Foundation.hs.cg   scaffold/LICENSE.cg+  scaffold/project.cabal.cg   scaffold/mongoDBConnPool.cg-  scaffold/tiny/Import.hs.cg-  scaffold/tiny/Foundation.hs.cg-  scaffold/tiny/project.cabal.cg-  scaffold/tiny/Application.hs.cg-  scaffold/tiny/config/routes.cg-  scaffold/tiny/Settings.hs.cg-  scaffold/templates/normalize.lucius.cg+  scaffold/main.hs.cg   scaffold/postgresqlConnPool.cg+  scaffold/Foundation.hs.cg   scaffold/sqliteConnPool.cg+  scaffold/cabal_test_suite.cg+  scaffold/Import.hs.cg   scaffold/.ghci.cg-  scaffold/project.cabal.cg+  scaffold/tests/main.hs.cg+  scaffold/Settings.hs.cg+  scaffold/Settings/StaticFiles.hs.cg   scaffold/Application.hs.cg-  scaffold/templates/homepage.julius.cg+  scaffold/deploy/Procfile.cg   scaffold/templates/homepage.hamlet.cg+  scaffold/static/css/bootstrap.css.cg   scaffold/templates/default-layout.hamlet.cg+  scaffold/templates/homepage.julius.cg   scaffold/templates/default-layout-wrapper.hamlet.cg   scaffold/deploy/Procfile.cg   scaffold/main.hs.cg   scaffold/devel.hs.cg-  scaffold/Handler/Root.hs.cg+  scaffold/Handler/Home.hs.cg+  scaffold/templates/normalize.lucius.cg+  scaffold/templates/boilerplate-wrapper.hamlet.cg+  scaffold/templates/homepage.lucius.cg+  scaffold/messages/en.msg.cg   scaffold/config/models.cg+  scaffold/config/mysql.yml.cg   scaffold/config/sqlite.yml.cg   scaffold/config/settings.yml.cg   scaffold/config/favicon.ico.cg   scaffold/config/postgresql.yml.cg-  scaffold/config/mysql.yml.cg-  scaffold/config/mongoDB.yml.cg   scaffold/config/routes.cg   scaffold/config/robots.txt.cg-  scaffold/Settings.hs.cg-  scaffold/Settings/StaticFiles.hs.cg-  scaffold/messages/en.msg.cg-  scaffold/static/js/modernizr.js.cg+  scaffold/config/mongoDB.yml.cg+  scaffold/devel.hs.cg   flag ghc7@@ -73,20 +72,20 @@         cpp-options:     -DGHC7     else         build-depends:   base                  >= 4        && < 4.3-    build-depends:   yesod-core                >= 0.10.1   && < 0.11-                   , yesod-auth                >= 0.8.1    && < 0.9-                   , yesod-json                >= 0.3.1    && < 0.4-                   , yesod-persistent          >= 0.3.1    && < 0.4-                   , yesod-form                >= 0.4.1    && < 0.5+    build-depends:   yesod-core                >= 1.0      && < 1.1+                   , yesod-auth                >= 1.0      && < 1.1+                   , yesod-json                >= 1.0      && < 1.1+                   , yesod-persistent          >= 1.0      && < 1.1+                   , yesod-form                >= 1.0      && < 1.1                    , monad-control             >= 0.3      && < 0.4-                   , transformers              >= 0.2.2    && < 0.3-                   , wai                       >= 1.1      && < 1.2-                   , wai-extra                 >= 1.1      && < 1.3+                   , transformers              >= 0.2.2    && < 0.4+                   , wai                       >= 1.2      && < 1.3+                   , wai-extra                 >= 1.2      && < 1.3                    , wai-logger                >= 0.1.2-                   , hamlet                    >= 0.10     && < 0.11-                   , shakespeare-js            >= 0.11     && < 0.12-                   , shakespeare-css           >= 0.10     && < 0.11-                   , warp                      >= 1.1      && < 1.2+                   , hamlet                    >= 1.0      && < 1.1+                   , shakespeare-js            >= 1.0      && < 1.1+                   , shakespeare-css           >= 1.0      && < 1.1+                   , warp                      >= 1.2      && < 1.3                    , blaze-html                >= 0.4.1.3  && < 0.5     exposed-modules: Yesod     ghc-options:     -Wall@@ -101,7 +100,7 @@         cpp-options:     -DWINDOWS     build-depends:     parsec             >= 2.1          && < 4                      , text               >= 0.11         && < 0.12-                     , shakespeare-text   >= 0.11         && < 0.12+                     , shakespeare-text   >= 1.0          && < 1.1                      , bytestring         >= 0.9.1.4  && < 0.10                      , time               >= 1.1.4                      , template-haskell