diff --git a/Annex/Content.hs b/Annex/Content.hs
--- a/Annex/Content.hs
+++ b/Annex/Content.hs
@@ -56,6 +56,7 @@
 import Types.Key
 import Utility.DataUnits
 import Utility.CopyFile
+import Utility.Metered
 import Config
 import Git.SharedRepository
 import Annex.Perms
@@ -658,8 +659,9 @@
 			Annex.Branch.commit "update"
 
 {- Downloads content from any of a list of urls. -}
-downloadUrl :: [Url.URLString] -> FilePath -> Annex Bool
-downloadUrl urls file = go =<< annexWebDownloadCommand <$> Annex.getGitConfig
+downloadUrl :: Key -> MeterUpdate -> [Url.URLString] -> FilePath -> Annex Bool
+downloadUrl k p urls file = concurrentMeteredFile file (Just p) k $
+	go =<< annexWebDownloadCommand <$> Annex.getGitConfig
   where
 	go Nothing = do
 		a <- ifM commandProgressDisabled
@@ -697,18 +699,21 @@
 				)
 		)
 
-{- Blocks writing to an annexed file, and modifies file permissions to
- - allow reading it, per core.sharedRepository setting. -}
+{- Normally, blocks writing to an annexed file, and modifies file
+ - permissions to allow reading it.
+ -
+ - When core.sharedRepository is set, the write bits are not removed from
+ - the file, but instead the appropriate group write bits are set. This is
+ - necessary to let other users in the group lock the file.
+ -}
 freezeContent :: FilePath -> Annex ()
 freezeContent file = unlessM crippledFileSystem $
 	withShared go
   where
 	go GroupShared = liftIO $ modifyFileMode file $
-		removeModes writeModes .
-		addModes [ownerReadMode, groupReadMode]
+		addModes [ownerReadMode, groupReadMode, ownerWriteMode, groupWriteMode]
 	go AllShared = liftIO $ modifyFileMode file $
-		removeModes writeModes .
-		addModes readModes
+		addModes (readModes ++ writeModes)
 	go _ = liftIO $ modifyFileMode file $
 		removeModes writeModes .
 		addModes [ownerReadMode]
diff --git a/Annex/ReplaceFile.hs b/Annex/ReplaceFile.hs
--- a/Annex/ReplaceFile.hs
+++ b/Annex/ReplaceFile.hs
@@ -27,9 +27,10 @@
 replaceFile file action = do
 	misctmpdir <- fromRepo gitAnnexTmpMiscDir
 	void $ createAnnexDirectory misctmpdir
-	let basetmp = takeFileName file
+	filemax <- liftIO $ fileNameLengthLimit misctmpdir
+	let basetmp = take (filemax `div` 2) (takeFileName file)
 	withTmpDirIn misctmpdir basetmp $ \tmpdir -> do
-		let tmpfile = tmpdir <> basetmp
+		let tmpfile = tmpdir </> basetmp
 		action tmpfile
 		liftIO $ replaceFileFrom tmpfile file
 
diff --git a/Assistant/Threads/XMPPClient.hs b/Assistant/Threads/XMPPClient.hs
--- a/Assistant/Threads/XMPPClient.hs
+++ b/Assistant/Threads/XMPPClient.hs
@@ -7,7 +7,7 @@
 
 module Assistant.Threads.XMPPClient where
 
-import Assistant.Common
+import Assistant.Common hiding (ProtocolError)
 import Assistant.XMPP
 import Assistant.XMPP.Client
 import Assistant.NetMessager
diff --git a/Assistant/WebApp/Common.hs b/Assistant/WebApp/Common.hs
--- a/Assistant/WebApp/Common.hs
+++ b/Assistant/WebApp/Common.hs
@@ -13,5 +13,5 @@
 import Assistant.WebApp.Form as X
 import Assistant.WebApp.Types as X
 import Assistant.WebApp.RepoId as X
-import Utility.Yesod as X hiding (textField, passwordField, insertBy, replace, joinPath, deleteBy, delete, insert, Key, Option)
+import Utility.Yesod as X hiding (textField, passwordField, insertBy, replace, joinPath, deleteBy, delete, insert, Key, Option, PermissionDenied)
 import Data.Text as X (Text)
diff --git a/Assistant/WebApp/Configurators/Preferences.hs b/Assistant/WebApp/Configurators/Preferences.hs
--- a/Assistant/WebApp/Configurators/Preferences.hs
+++ b/Assistant/WebApp/Configurators/Preferences.hs
@@ -118,5 +118,5 @@
 
 inAutoStartFile :: Annex Bool
 inAutoStartFile = do
-	here <- fromRepo Git.repoPath
+	here <- liftIO . absPath =<< fromRepo Git.repoPath
 	any (`equalFilePath` here) <$> liftIO readAutoStartFile
diff --git a/Backend/Hash.hs b/Backend/Hash.hs
--- a/Backend/Hash.hs
+++ b/Backend/Hash.hs
@@ -108,17 +108,16 @@
 
 {- A key's checksum is checked during fsck. -}
 checkKeyChecksum :: Hash -> Key -> FilePath -> Annex Bool
-checkKeyChecksum hash key file = go `catchHardwareFault` hwfault
+checkKeyChecksum hash key file = catchIOErrorType HardwareFault hwfault $ do
+	fast <- Annex.getState Annex.fast
+	mstat <- liftIO $ catchMaybeIO $ getFileStatus file
+	case (mstat, fast) of
+		(Just stat, False) -> do
+			filesize <- liftIO $ getFileSize' file stat
+			showAction "checksum"
+			check <$> hashFile hash file filesize
+		_ -> return True
   where
-	go = do
-		fast <- Annex.getState Annex.fast
-		mstat <- liftIO $ catchMaybeIO $ getFileStatus file
-		case (mstat, fast) of
-			(Just stat, False) -> do
-				filesize <- liftIO $ getFileSize' file stat
-				showAction "checksum"
-				check <$> hashFile hash file filesize
-			_ -> return True
 	expected = keyHash key
 	check s
 		| s == expected = True
diff --git a/BuildFlags.hs b/BuildFlags.hs
--- a/BuildFlags.hs
+++ b/BuildFlags.hs
@@ -67,6 +67,8 @@
 #endif
 #ifdef WITH_CONCURRENTOUTPUT
 	, "ConcurrentOutput"
+#else
+#warning Building without ConcurrentOutput
 #endif
 #ifdef WITH_DNS
 	, "DNS"
diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,30 @@
+git-annex (5.20151208) unstable; urgency=medium
+
+  * Build with -j1 again to get reproducible build.
+  * Display progress meter in -J mode when copying from a local git repo,
+    to a local git repo, and from a remote git repo.
+  * Display progress meter in -J mode when downloading from the web.
+  * map: Improve display of git remotes with non-ssh urls, including http
+    and gcrypt. 
+  * When core.sharedRepository is set, annex object files are not made mode
+    444, since that prevents a user other than the file owner from locking
+    them. Instead, a mode such as 664 is used in this case.
+  * tahoe: Include tahoe capabilities in whereis display.
+  * import: Changed to honor annex.largefiles settings.
+  * addurl, importfeed: Changed to honor annex.largefiles settings,
+    when the content of the url is downloaded. (Not when using --fast or
+    --relaxed.)
+  * webapp: Fix bugs that could result in a relative path such as "."
+    being written to ~/.config/git-annex/autostart, and ignore any such 
+    relative paths in the file.
+    This was a reversion caused by the relative path changes in 5.20150113.
+  * dropunused: Make more robust when trying to drop an object that has
+    already been dropped.
+  * Fix reversion in handling of long filenames, particularly when using
+    addurl/importfeed, which was introduced in the previous release.
+
+ -- Joey Hess <id@joeyh.name>  Tue, 08 Dec 2015 11:14:03 -0400
+
 git-annex (5.20151116) unstable; urgency=medium
 
   * Use concurrent-output library when configured with -fConcurrentOutput.
diff --git a/Command/Add.hs b/Command/Add.hs
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -73,14 +73,18 @@
 startSmall :: FilePath -> CommandStart
 startSmall file = do
 	showStart "add" file
+	next $ next $ addSmall file
+
+addSmall :: FilePath -> Annex Bool
+addSmall file = do
 	showNote "non-large file; adding content to git repository"
-	next $ performAdd file
+	addFile file
 
-performAdd :: FilePath -> CommandPerform
-performAdd file = do
+addFile :: FilePath -> Annex Bool
+addFile file = do
 	ps <- forceParams
 	Annex.Queue.addCommand "add" (ps++[Param "--"]) [file]
-	next $ return True
+	return True
 
 {- The add subcommand annexes a file, generating a key for it using a
  - backend, and then moving it into the annex directory and setting up
@@ -97,7 +101,7 @@
 				| otherwise -> do
 					showStart "add" file
 					next $ if isSymbolicLink s
-						then performAdd file
+						then next $ addFile file
 						else perform file
 	addpresent key = ifM isDirect
 		( do
diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs
--- a/Command/AddUrl.hs
+++ b/Command/AddUrl.hs
@@ -29,6 +29,7 @@
 import Types.UrlContents
 import Config
 import Annex.Content.Direct
+import Annex.FileMatcher
 import Logs.Location
 import Utility.Metered
 import qualified Annex.Transfer as Transfer
@@ -252,9 +253,9 @@
 				tmp <- fromRepo $ gitAnnexTmpObjectLocation key
 				showOutput
 				ok <- Transfer.notifyTransfer Transfer.Download (Just file) $
-					Transfer.download webUUID key (Just file) Transfer.forwardRetry Transfer.noObserver $ const $ do
+					Transfer.download webUUID key (Just file) Transfer.forwardRetry Transfer.noObserver $ \p -> do
 						liftIO $ createDirectoryIfMissing True (parentDir tmp)
-						downloadUrl [videourl] tmp
+						downloadUrl key p [videourl] tmp
 				if ok
 					then do
 						cleanup webUUID quviurl file key (Just tmp)
@@ -294,9 +295,9 @@
 downloadWeb :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
 downloadWeb url urlinfo file = do
 	let dummykey = addSizeUrlKey urlinfo $ Backend.URL.fromUrl url Nothing
-	let downloader f _ = do
+	let downloader f p = do
 		showOutput
-		downloadUrl [url] f
+		downloadUrl dummykey p [url] f
 	showAction $ "downloading " ++ url ++ " "
 	downloadWith downloader dummykey webUUID url file
 
@@ -335,17 +336,28 @@
 addSizeUrlKey urlinfo key = key { keySize = Url.urlSize urlinfo }
 
 cleanup :: UUID -> URLString -> FilePath -> Key -> Maybe FilePath -> Annex ()
-cleanup u url file key mtmp = do
-	when (isJust mtmp) $
-		logStatus key InfoPresent
-	setUrlPresent u key url
-	Command.Add.addLink file key Nothing
-	whenM isDirect $ do
-		void $ addAssociatedFile key file
-		{- For moveAnnex to work in direct mode, the symlink
-		 - must already exist, so flush the queue. -}
-		Annex.Queue.flush
-	maybe noop (moveAnnex key) mtmp
+cleanup u url file key mtmp = case mtmp of
+	Nothing -> go
+	Just tmp -> do
+		largematcher <- largeFilesMatcher
+		ifM (checkFileMatcher largematcher file)
+			( go
+			, do
+				liftIO $ renameFile tmp file
+				void $ Command.Add.addSmall file
+			)
+  where
+	go = do
+		when (isJust mtmp) $
+			logStatus key InfoPresent
+		setUrlPresent u key url
+		Command.Add.addLink file key Nothing
+		whenM isDirect $ do
+			void $ addAssociatedFile key file
+			{- For moveAnnex to work in direct mode, the symlink
+			 - must already exist, so flush the queue. -}
+			Annex.Queue.flush
+		maybe noop (moveAnnex key) mtmp
 
 nodownload :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
 nodownload url urlinfo file
diff --git a/Command/DropUnused.hs b/Command/DropUnused.hs
--- a/Command/DropUnused.hs
+++ b/Command/DropUnused.hs
@@ -14,6 +14,7 @@
 import qualified Git
 import Command.Unused (withUnusedMaps, UnusedMaps(..), startUnused)
 import Annex.NumCopies
+import Annex.Content
 
 cmd :: Command
 cmd = command "dropunused" SectionMaintenance
@@ -37,14 +38,20 @@
 	withUnusedMaps (start from numcopies) (rangesToDrop o)
 
 start :: Maybe Remote -> NumCopies -> UnusedMaps -> Int -> CommandStart
-start from numcopies = startUnused "dropunused" (perform from numcopies) (performOther gitAnnexBadLocation) (performOther gitAnnexTmpObjectLocation)
+start from numcopies = startUnused "dropunused"
+	(perform from numcopies)
+	(performOther gitAnnexBadLocation)
+	(performOther gitAnnexTmpObjectLocation)
 
 perform :: Maybe Remote -> NumCopies -> Key -> CommandPerform
 perform from numcopies key = case from of
 	Just r -> do
 		showAction $ "from " ++ Remote.name r
 		Command.Drop.performRemote key Nothing numcopies r
-	Nothing -> Command.Drop.performLocal key Nothing numcopies []
+	Nothing -> ifM (inAnnex key)
+		( Command.Drop.performLocal key Nothing numcopies []
+		, next (return True)
+		)
 
 performOther :: (Key -> Git.Repo -> FilePath) -> Key -> CommandPerform
 performOther filespec key = do
diff --git a/Command/Import.hs b/Command/Import.hs
--- a/Command/Import.hs
+++ b/Command/Import.hs
@@ -19,6 +19,8 @@
 import Types.Key
 import Annex.CheckIgnore
 import Annex.NumCopies
+import Types.FileMatcher
+import Annex.FileMatcher
 
 cmd :: Command
 cmd = withGlobalOptions (jobsOption : fileMatchingOptions) $ notBareRepo $
@@ -64,10 +66,11 @@
 	inrepops <- liftIO $ filter (dirContains repopath) <$> mapM absPath (importFiles o)
 	unless (null inrepops) $ do
 		error $ "cannot import files from inside the working tree (use git annex add instead): " ++ unwords inrepops
-	withPathContents (start (duplicateMode o)) (importFiles o)
+	largematcher <- largeFilesMatcher
+	withPathContents (start largematcher (duplicateMode o)) (importFiles o)
 
-start :: DuplicateMode -> (FilePath, FilePath) -> CommandStart
-start mode (srcfile, destfile) =
+start :: FileMatcher Annex -> DuplicateMode -> (FilePath, FilePath) -> CommandStart
+start largematcher mode (srcfile, destfile) =
 	ifM (liftIO $ isRegularFile <$> getSymbolicLinkStatus srcfile)
 		( do
 			ma <- pickaction
@@ -124,7 +127,10 @@
 		liftIO $ if mode == Duplicate || mode == SkipDuplicates
 			then void $ copyFileExternal CopyAllMetaData srcfile destfile
 			else moveFile srcfile destfile
-		Command.Add.perform destfile
+		ifM (checkFileMatcher largematcher destfile)
+			( Command.Add.perform destfile
+			, next $ Command.Add.addSmall destfile 
+			)
 	notoverwriting why = do
 		warning $ "not overwriting existing " ++ destfile ++ " " ++ why
 		stop
diff --git a/Command/Map.hs b/Command/Map.hs
--- a/Command/Map.hs
+++ b/Command/Map.hs
@@ -15,6 +15,7 @@
 import qualified Git.Url
 import qualified Git.Config
 import qualified Git.Construct
+import qualified Remote
 import qualified Annex
 import Annex.UUID
 import Logs.UUID
@@ -46,7 +47,9 @@
 	liftIO $ writeFile file (drawMap rs umap trusted)
 	next $ next $
 		ifM (Annex.getState Annex.fast)
-			( return True
+			( do
+				showLongNote $ "left map in " ++ file
+				return True
 			, do
 				showLongNote $ "running: dot -Tx11 " ++ file
 				showOutput
@@ -164,9 +167,8 @@
 {- Checks if two repos are the same. -}
 same :: Git.Repo -> Git.Repo -> Bool
 same a b
-	| both Git.repoIsSsh = matching Git.Url.authority && matching Git.repoPath
-	| both Git.repoIsUrl && neither Git.repoIsSsh = matching show
-	| neither Git.repoIsSsh = matching Git.repoPath
+	| both Git.repoIsUrl = matching Git.Url.scheme && matching Git.Url.authority && matching Git.repoPath
+	| neither Git.repoIsUrl = matching Git.repoPath
 	| otherwise = False
   where
 	matching t = t a == t b
@@ -192,7 +194,13 @@
 tryScan :: Git.Repo -> Annex (Maybe Git.Repo)
 tryScan r
 	| Git.repoIsSsh r = sshscan
-	| Git.repoIsUrl r = return Nothing
+	| Git.repoIsUrl r = case Git.remoteName r of
+		-- Can't scan a non-ssh url, so use any cached uuid for it.
+		Just n -> Just <$> (either
+			(const (pure r))
+			(liftIO . setUUID r . Remote.uuid)
+			=<< Remote.byName' n)
+		Nothing -> return $ Just r
 	| otherwise = liftIO $ safely $ Git.Config.read r
   where
 	pipedconfig pcmd params = liftIO $ safely $
diff --git a/Config/Files.hs b/Config/Files.hs
--- a/Config/Files.hs
+++ b/Config/Files.hs
@@ -26,8 +26,11 @@
 readAutoStartFile :: IO [FilePath]
 readAutoStartFile = do
 	f <- autoStartFile
-	nub . map dropTrailingPathSeparator . lines
+	filter valid . nub . map dropTrailingPathSeparator . lines
 		<$> catchDefaultIO "" (readFile f)
+  where
+	-- Ignore any relative paths; some old buggy versions added eg "."
+	valid = isAbsolute
 
 modifyAutoStartFile :: ([FilePath] -> [FilePath]) -> IO ()
 modifyAutoStartFile func = do
@@ -42,12 +45,16 @@
  - present, it's moved to the top, so it will be used as the default
  - when opening the webapp. -}
 addAutoStartFile :: FilePath -> IO ()
-addAutoStartFile path = modifyAutoStartFile $ (:) path
+addAutoStartFile path = do
+	path' <- absPath path
+	modifyAutoStartFile $ (:) path'
 
 {- Removes a directory from the autostart file. -}
 removeAutoStartFile :: FilePath -> IO ()
-removeAutoStartFile path = modifyAutoStartFile $
-	filter (not . equalFilePath path)
+removeAutoStartFile path = do
+	path' <- absPath path
+	modifyAutoStartFile $
+		filter (not . equalFilePath path')
 
 {- The path to git-annex is written here; which is useful when cabal
  - has installed it to some awful non-PATH location. -}
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -18,8 +18,9 @@
 	if [ "$(CABAL)" = ./Setup ]; then ghc --make Setup; fi
 	$(CABAL) configure --ghc-options="$(shell Build/collect-ghc-options.sh)"
 
+# -j1 is used for reproducible build
 git-annex: Build/SysConfig.hs
-	$(CABAL) build
+	$(CABAL) build -j1
 	ln -sf dist/build/git-annex/git-annex git-annex
 
 man/%.1: doc/%.mdwn
@@ -242,8 +243,7 @@
 	$(MAKE) -C standalone/android
 
 # We bypass cabal, and only run the main ghc --make command for a
-# fast development built. Note: Does not rebuild C libraries, or link
-# executable.
+# fast development built.
 fast: dist/caballog
 	@$$(grep 'ghc --make' dist/caballog | head -n 1 | sed -e 's/-package-id [^ ]*//g' -e 's/-hide-all-packages//') -O0 -j -dynamic
 	@ln -sf dist/build/git-annex/git-annex git-annex
diff --git a/Messages/Progress.hs b/Messages/Progress.hs
--- a/Messages/Progress.hs
+++ b/Messages/Progress.hs
@@ -29,8 +29,8 @@
 
 {- Shows a progress meter while performing a transfer of a key.
  - The action is passed a callback to use to update the meter. -}
-metered :: Maybe MeterUpdate -> Key -> AssociatedFile -> (MeterUpdate -> Annex a) -> Annex a
-metered combinemeterupdate key _af a = case keySize key of
+metered :: Maybe MeterUpdate -> Key -> (MeterUpdate -> Annex a) -> Annex a
+metered combinemeterupdate key a = case keySize key of
 	Nothing -> nometer
 	Just size -> withOutputType (go $ fromInteger size)
   where
@@ -66,11 +66,19 @@
 
 {- Use when the progress meter is only desired for concurrent
  - output; as when a command's own progress output is preferred. -}
-concurrentMetered :: Maybe MeterUpdate -> Key -> AssociatedFile -> (MeterUpdate -> Annex a) -> Annex a
-concurrentMetered combinemeterupdate key af a = withOutputType go
+concurrentMetered :: Maybe MeterUpdate -> Key -> (MeterUpdate -> Annex a) -> Annex a
+concurrentMetered combinemeterupdate key a = withOutputType go
   where
-	go (ConcurrentOutput _) = metered combinemeterupdate key af a
-	go _ = a (fromMaybe (const noop) combinemeterupdate)
+	go (ConcurrentOutput _) = metered combinemeterupdate key a
+	go _ = a (fromMaybe nullMeterUpdate combinemeterupdate)
+
+{- Poll file size to display meter, but only for concurrent output. -}
+concurrentMeteredFile :: FilePath -> Maybe MeterUpdate -> Key -> Annex a -> Annex a
+concurrentMeteredFile file combinemeterupdate key a = withOutputType go
+  where
+	go (ConcurrentOutput _) = metered combinemeterupdate key $ \p ->
+		watchFileSize file p a
+	go _ = a
 
 {- Progress dots. -}
 showProgressDots :: Annex ()
diff --git a/Remote/External.hs b/Remote/External.hs
--- a/Remote/External.hs
+++ b/Remote/External.hs
@@ -369,12 +369,8 @@
 startExternal externaltype = do
 	errrelayer <- mkStderrRelayer
 	liftIO $ do
-		(Just hin, Just hout, Just herr, pid) <- createProcess $
-			(proc cmd [])
-				{ std_in = CreatePipe
-				, std_out = CreatePipe
-				, std_err = CreatePipe
-				}
+		(Just hin, Just hout, Just herr, pid) <- 
+			createProcess p `catchIO` runerr
 		fileEncoding hin
 		fileEncoding hout
 		fileEncoding herr
@@ -390,7 +386,14 @@
 			}
   where
 	cmd = externalRemoteProgram externaltype
+	p = (proc cmd [])
+		{ std_in = CreatePipe
+		, std_out = CreatePipe
+		, std_err = CreatePipe
+		}
 
+	runerr _ = error ("Cannot run " ++ cmd ++ " -- Make sure it's in your PATH and is executable.")
+
 	checkearlytermination Nothing = noop
 	checkearlytermination (Just exitcode) = ifM (inPath cmd)
 		( error $ unwords [ "failed to run", cmd, "(" ++ show exitcode ++ ")" ]
@@ -503,9 +506,9 @@
 	mkmulti (u, s, f) = (u, s, mkSafeFilePath f)
 
 retrieveUrl :: Retriever
-retrieveUrl = fileRetriever $ \f k _p -> do
+retrieveUrl = fileRetriever $ \f k p -> do
 	us <- getWebUrls k
-	unlessM (downloadUrl us f) $
+	unlessM (downloadUrl k p us f) $
 		error "failed to download content"
 
 checkKeyUrl :: Git.Repo -> CheckPresent
diff --git a/Remote/Git.hs b/Remote/Git.hs
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -421,7 +421,7 @@
 
 {- Tries to copy a key's content from a remote's annex to a file. -}
 copyFromRemote :: Remote -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex (Bool, Verification)
-copyFromRemote r key file dest p = concurrentMetered (Just p) key file $
+copyFromRemote r key file dest p = concurrentMetered (Just p) key $
 	copyFromRemote' r key file dest
 
 copyFromRemote' :: Remote -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex (Bool, Verification)
@@ -440,12 +440,13 @@
 					copier <- mkCopier hardlink params
 					runTransfer (Transfer Download u key)
 						file noRetry noObserver 
-						(\p -> copier object dest p checksuccess)
-	| Git.repoIsSsh (repo r) = unVerified $ feedprogressback $ \feeder -> do
+						(\p -> copier object dest (combineMeterUpdate p meterupdate) checksuccess)
+	| Git.repoIsSsh (repo r) = unVerified $ feedprogressback $ \p -> do
 		direct <- isDirect
-		Ssh.rsyncHelper (Just feeder) 
+		Ssh.rsyncHelper (Just (combineMeterUpdate meterupdate p))
 			=<< Ssh.rsyncParamsRemote direct r Download key dest file
-	| Git.repoIsHttp (repo r) = unVerified $ Annex.Content.downloadUrl (keyUrls r key) dest
+	| Git.repoIsHttp (repo r) = unVerified $
+		Annex.Content.downloadUrl key meterupdate (keyUrls r key) dest
 	| otherwise = error "copying from non-ssh, non-http remote not supported"
   where
 	{- Feed local rsync's progress info back to the remote,
@@ -522,7 +523,7 @@
 			)
 	| Git.repoIsSsh (repo r) =
 		ifM (Annex.Content.preseedTmp key file)
-			( fst <$> concurrentMetered Nothing key af
+			( fst <$> concurrentMetered Nothing key
 				(copyFromRemote' r key af file)
 			, return False
 			)
@@ -533,17 +534,19 @@
 
 {- Tries to copy a key's content to a remote's annex. -}
 copyToRemote :: Remote -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool
-copyToRemote r key file p = concurrentMetered (Just p) key file $ copyToRemote' r key file
+copyToRemote r key file meterupdate = 
+	concurrentMetered (Just meterupdate) key $
+		copyToRemote' r key file
 
 copyToRemote' :: Remote -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool
-copyToRemote' r key file p
+copyToRemote' r key file meterupdate
 	| not $ Git.repoIsUrl (repo r) =
 		guardUsable (repo r) (return False) $ commitOnCleanup r $
 			copylocal =<< Annex.Content.prepSendAnnex key
 	| Git.repoIsSsh (repo r) = commitOnCleanup r $
 		Annex.Content.sendAnnex key noop $ \object -> do
 			direct <- isDirect
-			Ssh.rsyncHelper (Just p)
+			Ssh.rsyncHelper (Just meterupdate)
 				=<< Ssh.rsyncParamsRemote direct r Upload key object file
 	| otherwise = error "copying to non-ssh repo not supported"
   where
@@ -563,10 +566,11 @@
 				ensureInitialized
 				copier <- mkCopier hardlink params
 				let verify = Annex.Content.RemoteVerify r
-				runTransfer (Transfer Download u key) file noRetry noObserver $ const $
-					Annex.Content.saveState True `after`
+				runTransfer (Transfer Download u key) file noRetry noObserver $ \p ->
+					let p' = combineMeterUpdate meterupdate p
+					in Annex.Content.saveState True `after`
 						Annex.Content.getViaTmp verify key
-							(\dest -> copier object dest p (liftIO checksuccessio))
+							(\dest -> copier object dest p' (liftIO checksuccessio))
 			)
 
 fsckOnRemote :: Git.Repo -> [CommandParam] -> Annex (IO Bool)
@@ -638,19 +642,8 @@
   where
 	sameDeviceIds a b = (==) <$> getDeviceId a <*> getDeviceId b
 	getDeviceId f = deviceID <$> liftIO (getFileStatus $ parentDir f)
-	docopy = liftIO $ bracket
-		(forkIO $ watchfilesize zeroBytesProcessed)
-		(void . tryIO . killThread)
-		(const $ copyFileExternal CopyTimeStamps src dest)
-	watchfilesize oldsz = do
-		threadDelay 500000 -- 0.5 seconds
-		v <- catchMaybeIO $ toBytesProcessed <$> getFileSize dest
-		case v of
-			Just sz
-				| sz /= oldsz -> do
-					p sz
-					watchfilesize sz
-			_ -> watchfilesize oldsz
+	docopy = liftIO $ watchFileSize dest p $
+		copyFileExternal CopyTimeStamps src dest
 #endif
 	dorsync = Ssh.rsyncHelper (Just p) $
 		rsyncparams ++ [File src, File dest]
diff --git a/Remote/Helper/Special.hs b/Remote/Helper/Special.hs
--- a/Remote/Helper/Special.hs
+++ b/Remote/Helper/Special.hs
@@ -155,8 +155,8 @@
 specialRemote' cfg c preparestorer prepareretriever prepareremover preparecheckpresent baser = encr
   where
 	encr = baser
-		{ storeKey = \k f p -> cip >>= storeKeyGen k f p
-		, retrieveKeyFile = \k f d p -> cip >>= unVerified . retrieveKeyFileGen k f d p
+		{ storeKey = \k _f p -> cip >>= storeKeyGen k p
+		, retrieveKeyFile = \k _f d p -> cip >>= unVerified . retrieveKeyFileGen k d p
 		, retrieveKeyFileCheap = \k f d -> cip >>= maybe
 			(retrieveKeyFileCheap baser k f d)
 			-- retrieval of encrypted keys is never cheap
@@ -183,12 +183,12 @@
 	safely a = catchNonAsync a (\e -> warning (show e) >> return False)
 
 	-- chunk, then encrypt, then feed to the storer
-	storeKeyGen k f p enc = safely $ preparestorer k $ safely . go
+	storeKeyGen k p enc = safely $ preparestorer k $ safely . go
 	  where
 		go (Just storer) = preparecheckpresent k $ safely . go' storer
 		go Nothing = return False
 		go' storer (Just checker) = sendAnnex k rollback $ \src ->
-			displayprogress p k f $ \p' ->
+			displayprogress p k $ \p' ->
 				storeChunks (uuid baser) chunkconfig k src p'
 					(storechunk enc storer)
 					checker
@@ -204,10 +204,10 @@
 					storer (enck k) (ByteContent encb) p
 
 	-- call retriever to get chunks; decrypt them; stream to dest file
-	retrieveKeyFileGen k f dest p enc =
+	retrieveKeyFileGen k dest p enc =
 		safely $ prepareretriever k $ safely . go
 	  where
-		go (Just retriever) = displayprogress p k f $ \p' ->
+		go (Just retriever) = displayprogress p k $ \p' ->
 			retrieveChunks retriever (uuid baser) chunkconfig
 				enck k dest p' (sink dest enc)
 		go Nothing = return False
@@ -227,8 +227,8 @@
 
 	chunkconfig = chunkConfig cfg
 
-	displayprogress p k f a
-		| displayProgress cfg = metered (Just p) k f a
+	displayprogress p k a
+		| displayProgress cfg = metered (Just p) k a
 		| otherwise = a p
 
 {- Sink callback for retrieveChunks. Stores the file content into the
diff --git a/Remote/S3.hs b/Remote/S3.hs
--- a/Remote/S3.hs
+++ b/Remote/S3.hs
@@ -249,8 +249,8 @@
 	Nothing -> \_ _ _ -> do
 		warnMissingCredPairFor "S3" (AWS.creds $ uuid r)
 		return False
-	Just geturl -> fileRetriever $ \f k _p ->
-		unlessM (downloadUrl [geturl k] f) $
+	Just geturl -> fileRetriever $ \f k p ->
+		unlessM (downloadUrl k p [geturl k] f) $
 			error "failed to download content"
 
 retrieveCheap :: Key -> AssociatedFile -> FilePath -> Annex Bool
diff --git a/Remote/Tahoe.hs b/Remote/Tahoe.hs
--- a/Remote/Tahoe.hs
+++ b/Remote/Tahoe.hs
@@ -75,7 +75,7 @@
 		, lockContent = Nothing
 		, checkPresent = checkKey u hdl
 		, checkPresentCheap = False
-		, whereisKey = Nothing
+		, whereisKey = Just (getWhereisKey u)
 		, remoteFsck = Nothing
 		, repairRepo = Nothing
 		, config = c
@@ -230,6 +230,12 @@
 
 getCapability :: UUID -> Key -> Annex (Maybe Capability)
 getCapability u k = getRemoteState u k
+
+getWhereisKey :: UUID -> Key -> Annex [String]
+getWhereisKey u k = disp <$> getCapability u k
+  where
+	disp Nothing = []
+	disp (Just c) = [c]
 
 {- tahoe put outputs a single line, containing the capability. -}
 parsePut :: String -> Maybe Capability
diff --git a/Remote/Web.hs b/Remote/Web.hs
--- a/Remote/Web.hs
+++ b/Remote/Web.hs
@@ -72,7 +72,7 @@
 		}
 
 downloadKey :: Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex (Bool, Verification)
-downloadKey key _file dest _p = unVerified $ get =<< getWebUrls key
+downloadKey key _af dest p = unVerified $ get =<< getWebUrls key
   where
 	get [] = do
 		warning "no known url"
@@ -84,13 +84,13 @@
 			case downloader of
 				QuviDownloader -> do
 #ifdef WITH_QUVI
-					flip downloadUrl dest
+					flip (downloadUrl key p) dest
 						=<< withQuviOptions Quvi.queryLinks [Quvi.httponly, Quvi.quiet] u'
 #else
 					warning "quvi support needed for this url"
 					return False
 #endif
-				_ -> downloadUrl [u'] dest
+				_ -> downloadUrl key p [u'] dest
 
 downloadKeyCheap :: Key -> AssociatedFile -> FilePath -> Annex Bool
 downloadKeyCheap _ _ _ = return False
diff --git a/Test.hs b/Test.hs
--- a/Test.hs
+++ b/Test.hs
@@ -83,6 +83,7 @@
 import qualified Utility.Exception
 import qualified Utility.Hash
 import qualified Utility.Scheduled
+import qualified Utility.Scheduled.QuickCheck
 import qualified Utility.HumanTime
 import qualified Utility.ThreadScheduler
 import qualified Utility.Base64
@@ -157,7 +158,7 @@
 	, testProperty "prop_parse_show_TrustLog" Logs.Trust.prop_parse_show_TrustLog
 	, testProperty "prop_hashes_stable" Utility.Hash.prop_hashes_stable
 	, testProperty "prop_mac_stable" Utility.Hash.prop_mac_stable
-	, testProperty "prop_schedule_roundtrips" Utility.Scheduled.prop_schedule_roundtrips
+	, testProperty "prop_schedule_roundtrips" Utility.Scheduled.QuickCheck.prop_schedule_roundtrips
 	, testProperty "prop_past_sane" Utility.Scheduled.prop_past_sane
 	, testProperty "prop_duration_roundtrips" Utility.HumanTime.prop_duration_roundtrips
 	, testProperty "prop_metadata_sane" Types.MetaData.prop_metadata_sane
diff --git a/Utility/Exception.hs b/Utility/Exception.hs
--- a/Utility/Exception.hs
+++ b/Utility/Exception.hs
@@ -20,7 +20,8 @@
 	catchNonAsync,
 	tryNonAsync,
 	tryWhenExists,
-	catchHardwareFault,
+	catchIOErrorType,
+	IOErrorType(..)
 ) where
 
 import Control.Monad.Catch as X hiding (Handler)
@@ -88,11 +89,11 @@
 	v <- tryJust (guard . isDoesNotExistError) a
 	return (eitherToMaybe v)
 
-{- Catches only exceptions caused by hardware faults.
- - Ie, disk IO error. -}
-catchHardwareFault :: MonadCatch m => m a -> (IOException -> m a) -> m a
-catchHardwareFault a onhardwareerr = catchIO a onlyhw
+{- Catches only IO exceptions of a particular type.
+ - Ie, use HardwareFault to catch disk IO errors. -}
+catchIOErrorType :: MonadCatch m => IOErrorType -> (IOException -> m a) -> m a -> m a
+catchIOErrorType errtype onmatchingerr a = catchIO a onlymatching
   where
-	onlyhw e
-		| ioeGetErrorType e == HardwareFault = onhardwareerr e
+	onlymatching e
+		| ioeGetErrorType e == errtype = onmatchingerr e
 		| otherwise = throwM e
diff --git a/Utility/FileSystemEncoding.hs b/Utility/FileSystemEncoding.hs
--- a/Utility/FileSystemEncoding.hs
+++ b/Utility/FileSystemEncoding.hs
@@ -29,6 +29,7 @@
 import qualified Data.Hash.MD5 as MD5
 import Data.Word
 import Data.Bits.Utils
+import Data.List
 import Data.List.Utils
 import qualified Data.ByteString.Lazy as L
 #ifdef mingw32_HOST_OS
@@ -125,12 +126,12 @@
 
 {- Like encodeW8 and decodeW8, but NULs are passed through unchanged. -}
 encodeW8NUL :: [Word8] -> FilePath
-encodeW8NUL = join nul . map encodeW8 . split (s2w8 nul)
+encodeW8NUL = intercalate nul . map encodeW8 . split (s2w8 nul)
   where
 	nul = ['\NUL']
 
 decodeW8NUL :: FilePath -> [Word8]
-decodeW8NUL = join (s2w8 nul) . map decodeW8 . split nul
+decodeW8NUL = intercalate (s2w8 nul) . map decodeW8 . split nul
   where
 	nul = ['\NUL']
 
diff --git a/Utility/FreeDesktop.hs b/Utility/FreeDesktop.hs
--- a/Utility/FreeDesktop.hs
+++ b/Utility/FreeDesktop.hs
@@ -59,7 +59,7 @@
 	| null l = ""
 	| otherwise = (intercalate ";" $ map (escapesemi . toString) l) ++ ";"
   where
-	escapesemi = join "\\;" . split ";"
+	escapesemi = intercalate "\\;" . split ";"
 
 genDesktopEntry :: String -> String -> Bool -> FilePath -> Maybe String -> [String] -> DesktopEntry
 genDesktopEntry name comment terminal program icon categories = catMaybes
diff --git a/Utility/Metered.hs b/Utility/Metered.hs
--- a/Utility/Metered.hs
+++ b/Utility/Metered.hs
@@ -18,7 +18,9 @@
 import System.Posix.Types
 import Data.Int
 import Data.Bits.Utils
+import Control.Concurrent
 import Control.Concurrent.Async
+import Control.Monad.IO.Class (MonadIO)
 
 {- An action that can be run repeatedly, updating it on the bytes processed.
  -
@@ -29,6 +31,9 @@
 nullMeterUpdate :: MeterUpdate
 nullMeterUpdate _ = return ()
 
+combineMeterUpdate :: MeterUpdate -> MeterUpdate -> MeterUpdate
+combineMeterUpdate a b = \n -> a n >> b n
+
 {- Total number of bytes processed so far. -}
 newtype BytesProcessed = BytesProcessed Integer
 	deriving (Eq, Ord, Show)
@@ -145,6 +150,23 @@
   where
 	k = 1024
 	chunkOverhead = 2 * sizeOf (1 :: Int) -- GHC specific
+
+{- Runs an action, watching a file as it grows and updating the meter. -}
+watchFileSize :: (MonadIO m, MonadMask m) => FilePath -> MeterUpdate -> m a -> m a
+watchFileSize f p a = bracket 
+	(liftIO $ forkIO $ watcher zeroBytesProcessed)
+	(liftIO . void . tryIO . killThread)
+	(const a)
+  where
+	watcher oldsz = do
+		v <- catchMaybeIO $ toBytesProcessed <$> getFileSize f
+		newsz <- case v of
+			Just sz | sz /= oldsz -> do
+				p sz
+				return sz
+			_ -> return oldsz
+		threadDelay 500000 -- 0.5 seconds
+		watcher newsz
 
 data OutputHandler = OutputHandler
 	{ quietMode :: Bool
diff --git a/Utility/Path.hs b/Utility/Path.hs
--- a/Utility/Path.hs
+++ b/Utility/Path.hs
@@ -89,7 +89,7 @@
 upFrom :: FilePath -> Maybe FilePath
 upFrom dir
 	| length dirs < 2 = Nothing
-	| otherwise = Just $ joinDrive drive (join s $ init dirs)
+	| otherwise = Just $ joinDrive drive (intercalate s $ init dirs)
   where
 	-- on Unix, the drive will be "/" when the dir is absolute, otherwise ""
 	(drive, path) = splitDrive dir
@@ -149,7 +149,7 @@
 relPathDirToFileAbs :: FilePath -> FilePath -> FilePath
 relPathDirToFileAbs from to
 	| takeDrive from /= takeDrive to = to
-	| otherwise = join s $ dotdots ++ uncommon
+	| otherwise = intercalate s $ dotdots ++ uncommon
   where
 	s = [pathSeparator]
 	pfrom = split s from
@@ -288,7 +288,6 @@
 	if l <= 0
 		then return 255
 		else return $ minimum [l, 255]
-  where
 #endif
 
 {- Given a string that we'd like to use as the basis for FilePath, but that
diff --git a/Utility/SafeCommand.hs b/Utility/SafeCommand.hs
--- a/Utility/SafeCommand.hs
+++ b/Utility/SafeCommand.hs
@@ -14,6 +14,7 @@
 import Data.String.Utils
 import System.FilePath
 import Data.Char
+import Data.List
 import Control.Applicative
 import Prelude
 
@@ -85,7 +86,7 @@
 shellEscape f = "'" ++ escaped ++ "'"
   where
 	-- replace ' with '"'"'
-	escaped = join "'\"'\"'" $ split "'" f
+	escaped = intercalate "'\"'\"'" $ split "'" f
 
 -- | Unescapes a set of shellEscaped words or filenames.
 shellUnEscape :: String -> [String]
diff --git a/Utility/Scheduled.hs b/Utility/Scheduled.hs
--- a/Utility/Scheduled.hs
+++ b/Utility/Scheduled.hs
@@ -23,12 +23,10 @@
 	toRecurrance,
 	toSchedule,
 	parseSchedule,
-	prop_schedule_roundtrips,
 	prop_past_sane,
 ) where
 
 import Utility.Data
-import Utility.QuickCheck
 import Utility.PartialPrelude
 import Utility.Misc
 
@@ -38,6 +36,7 @@
 import Data.Time.Calendar
 import Data.Time.Calendar.WeekDate
 import Data.Time.Calendar.OrdinalDate
+import Data.Time.Format ()
 import Data.Tuple.Utils
 import Data.Char
 import Control.Applicative
@@ -336,41 +335,6 @@
 	(rws, tws) = separate (== "at") (words s)
 	recurrance = unwords rws
 	scheduledtime = unwords tws
-
-instance Arbitrary Schedule where
-	arbitrary = Schedule <$> arbitrary <*> arbitrary
-
-instance Arbitrary ScheduledTime where
-	arbitrary = oneof
-		[ pure AnyTime
-		, SpecificTime 
-			<$> choose (0, 23)
-			<*> choose (1, 59)
-		]
-
-instance Arbitrary Recurrance where
-	arbitrary = oneof
-		[ pure Daily
-		, Weekly <$> arbday
-		, Monthly <$> arbday
-		, Yearly <$> arbday
-		, Divisible
-			<$> positive arbitrary
-			<*> oneof -- no nested Divisibles
-				[ pure Daily
-				, Weekly <$> arbday
-				, Monthly <$> arbday
-				, Yearly <$> arbday
-				]
-		]
-	  where
-		arbday = oneof
-			[ Just <$> nonNegative arbitrary
-			, pure Nothing
-			]
-
-prop_schedule_roundtrips :: Schedule -> Bool
-prop_schedule_roundtrips s = toSchedule (fromSchedule s) == Just s
 
 prop_past_sane :: Bool
 prop_past_sane = and
diff --git a/Utility/Scheduled/QuickCheck.hs b/Utility/Scheduled/QuickCheck.hs
new file mode 100644
--- /dev/null
+++ b/Utility/Scheduled/QuickCheck.hs
@@ -0,0 +1,51 @@
+{- quickcheck for scheduled activities
+ - 
+ - Copyright 2013-2014 Joey Hess <id@joeyh.name>
+ -
+ - License: BSD-2-clause
+ -}
+
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module Utility.Scheduled.QuickCheck where
+
+import Utility.Scheduled
+import Utility.QuickCheck
+
+import Control.Applicative
+import Prelude
+
+instance Arbitrary Schedule where
+	arbitrary = Schedule <$> arbitrary <*> arbitrary
+
+instance Arbitrary ScheduledTime where
+	arbitrary = oneof
+		[ pure AnyTime
+		, SpecificTime 
+			<$> choose (0, 23)
+			<*> choose (1, 59)
+		]
+
+instance Arbitrary Recurrance where
+	arbitrary = oneof
+		[ pure Daily
+		, Weekly <$> arbday
+		, Monthly <$> arbday
+		, Yearly <$> arbday
+		, Divisible
+			<$> positive arbitrary
+			<*> oneof -- no nested Divisibles
+				[ pure Daily
+				, Weekly <$> arbday
+				, Monthly <$> arbday
+				, Yearly <$> arbday
+				]
+		]
+	  where
+		arbday = oneof
+			[ Just <$> nonNegative arbitrary
+			, pure Nothing
+			]
+
+prop_schedule_roundtrips :: Schedule -> Bool
+prop_schedule_roundtrips s = toSchedule (fromSchedule s) == Just s
diff --git a/Utility/Tmp.hs b/Utility/Tmp.hs
--- a/Utility/Tmp.hs
+++ b/Utility/Tmp.hs
@@ -88,8 +88,9 @@
 		makenewdir (tmpdir </> template) (0 :: Int)
 	makenewdir t n = do
 		let dir = t ++ "." ++ show n
-		either (const $ makenewdir t $ n + 1) (const $ return dir)
-			=<< tryIO (createDirectory dir)
+		catchIOErrorType AlreadyExists (const $ makenewdir t $ n + 1) $ do
+			createDirectory dir
+			return dir
 
 {- It's not safe to use a FilePath of an existing file as the template
  - for openTempFile, because if the FilePath is really long, the tmpfile
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,30 @@
+git-annex (5.20151208) unstable; urgency=medium
+
+  * Build with -j1 again to get reproducible build.
+  * Display progress meter in -J mode when copying from a local git repo,
+    to a local git repo, and from a remote git repo.
+  * Display progress meter in -J mode when downloading from the web.
+  * map: Improve display of git remotes with non-ssh urls, including http
+    and gcrypt. 
+  * When core.sharedRepository is set, annex object files are not made mode
+    444, since that prevents a user other than the file owner from locking
+    them. Instead, a mode such as 664 is used in this case.
+  * tahoe: Include tahoe capabilities in whereis display.
+  * import: Changed to honor annex.largefiles settings.
+  * addurl, importfeed: Changed to honor annex.largefiles settings,
+    when the content of the url is downloaded. (Not when using --fast or
+    --relaxed.)
+  * webapp: Fix bugs that could result in a relative path such as "."
+    being written to ~/.config/git-annex/autostart, and ignore any such 
+    relative paths in the file.
+    This was a reversion caused by the relative path changes in 5.20150113.
+  * dropunused: Make more robust when trying to drop an object that has
+    already been dropped.
+  * Fix reversion in handling of long filenames, particularly when using
+    addurl/importfeed, which was introduced in the previous release.
+
+ -- Joey Hess <id@joeyh.name>  Tue, 08 Dec 2015 11:14:03 -0400
+
 git-annex (5.20151116) unstable; urgency=medium
 
   * Use concurrent-output library when configured with -fConcurrentOutput.
diff --git a/debian/rules b/debian/rules
--- a/debian/rules
+++ b/debian/rules
@@ -25,4 +25,10 @@
 override_dh_fixperms:
 	dh_fixperms -Xld-linux
 
+# Do not add "ldconfig" trigger since all libraries in the standalone build
+# are private copies and the trigger activate-noawait trigger may not work
+# on elderly distributions (e.g. squeeze)
+override_dh_makeshlibs:
+	dh_makeshlibs --noscripts
+
 endif
diff --git a/doc/bugs/20151116_tests_fail_on_OS_X.mdwn b/doc/bugs/20151116_tests_fail_on_OS_X.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/20151116_tests_fail_on_OS_X.mdwn
@@ -0,0 +1,40 @@
+Test output on OS X. Btw, the previous version works:
+
+```
+OK (4.87s)
+    map:                                            OK (0.33s)
+    uninit:                                         Deleted branch git-annex (was 9a28b38).
+OK (0.38s)
+    uninit (in git-annex branch):                   Switched to branch 'git-annex'
+OK (0.26s)
+    upgrade:                                        OK (0.21s)
+    whereis:                                        OK (0.61s)
+    hook remote:                                    OK (0.91s)
+    directory remote:                               OK (0.85s)
+    rsync remote:                                   OK (1.40s)
+    bup remote:                                     Reinitialized existing Git repository in /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/.bup/
+Initialized empty Git repository in /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/tmprepo0/dir/
+  content cannot be completely removed from bup remote
+OK (2.62s)
+    crypto:                                         OK (4.16s)
+    preferred content:                              OK (1.97s)
+    add subdirs:                                    Merge made by the 'recursive' strategy.
+ conflictor.variant-cc12 | 1 +
+ conflictor/subfile      | 1 +
+ 2 files changed, 2 insertions(+)
+ create mode 120000 conflictor.variant-cc12
+ create mode 120000 conflictor/subfile
+To /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/repo
+   e4d3d14..60148c4  git-annex -> synced/git-annex
+   efda76d..f76baae  master -> synced/master
+OK (0.55s)
+    addurl:                                         git-annex: .git/annex/objects/2Q/J8/SHA256E-s3--2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae/SHA256E-s3--2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae: createSymbolicLink: invalid argument (File name too long)
+FAIL (0.29s)
+      addurl failed on file:///private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/tmprepo0/myurl
+
+2 out of 150 tests failed (126.13s)
+  (This could be due to a bug in git-annex, or an incompatability
+   with utilities, such as git, installed on this system.)
+```
+
+> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn b/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn
--- a/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn
+++ b/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn
@@ -23,3 +23,4 @@
 ### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
 
 
+> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn b/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn
@@ -0,0 +1,28 @@
+### Please describe the problem.
+git-annex ignores changing of remote location in .git/config
+
+### What steps will reproduce the problem?
+1. Change Hostname of previously working remote so that the existing remote will no longer work and produce "ssh: connect to host <DNS hostname> port 22: Network is unreachable" errors.
+2. Stop all running git-annex processes.
+3. Edit DNS name in corresponding remote .git/config.
+4. Restart git-annex.
+5. Turns out: git-annex still uses the old remote's DNS name.
+
+### What version of git-annex are you using? On what operating system?
+newest one available.
+5.20151116-gbe86081 
+
+### Please provide any additional information below.
+See following entry in log, occurring plenty often:
+[[!format sh """
+ssh: connect to host some.unreachable.dns.net port 22: Network is unreachable
+rsync: connection unexpec
+  rsync failed -- run git annex again to resume file transfer
+tedly closed (0 bytes received so far) [Receiver]
+rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+Trust me I love git-annex. Had dreams of something like git-annex for almost 10 years. I instantly got stuck on git-annex when I have read the first few sentences about it. Since then, things in my life have changed in a quite serious manner.
+
+THANKS for your help!
diff --git a/doc/bugs/Unable_to_take_transfer_lock.mdwn b/doc/bugs/Unable_to_take_transfer_lock.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/Unable_to_take_transfer_lock.mdwn
@@ -0,0 +1,41 @@
+### Please describe the problem.
+
+`git annex get --from=myremote' show "transfer already in progress, or unable to take transfer lock".
+
+**Likely Problem discovered!** I copied the whole remote repo (was residing on a Linux machine accessed via SMB) and pasted it into my Mac. The problem was resolved. It is likely something to do with the fact that Mac OS filesystem is **case-insensitive**. I discovered this issue when I tried to copy that remote repo with ``cp`` rather than ``tar``ing it first.
+
+
+### What steps will reproduce the problem?
+
+Remote is on a Linux machine.
+Do `git annex get' on a Mac OS.
+Do the same on another Linux machine.
+
+The git annex client on the Linux machine works.
+Mac OS doesn't.
+
+rsync version for all machines: 3.1.1
+
+### What version of git-annex are you using? On what operating system?
+
+git-annex 5.20151019
+
+Lubuntu 15.10.
+Mac OS X 10.11.1 (El Capitan)
+
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+# End of transcript or log.
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+Yes.
+
+It's wonderful. This should be a problem with Mac OS.
diff --git a/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn b/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn
@@ -0,0 +1,9 @@
+### Please describe the problem.
+
+Due to the very unstable kernel on my laptop atm I need to reboot quite frequently... and this issue with annex assistant immediately starting synchronizing (although I did disable all synchronizations in webapp, so it would be another issue I guess), I wanted just to disable autostart of git-annex altogether.  I have removed $HOME/.config/autostart/git-annex.desktop but to my surprise upon gnome crashing/relogin I had the same ssh key passphrase dialog and that file reappeared.
+
+### What version of git-annex are you using? On what operating system?
+
+5.20151116+gitg5416a1a-1~ndall+1
+
+[[!meta author=yoh]]
diff --git a/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn b/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn
@@ -0,0 +1,36 @@
+### Please describe the problem.
+
+git-annex's WebDAV support does not like (aka it does not work) the WebDAV server of the freenet cloud.
+    
+### What steps will reproduce the problem?
+
+My first attempt was:
+
+    WEBDAV_USERNAME='XXX' WEBDAV_PASSWORD='XXX' git annex initremote webdav type=webdav url='https://webmail.freenet.de/webdav' encryption=none
+    initremote webdav (testing WebDAV server...) 
+    git-annex: WebDAV test failed: StatusCodeException (Status {statusCode = 401, statusMessage = "Unauthorized"}) [("Date","Fri, 04 Dec 2015 12:20:57 GMT"),("Server","Apache/2.2.16 (Debian)"),("WWW-Authenticate","Basic realm=\"MD-Cloud\""),
+    ("Vary","Accept-Encoding"),("Content-Encoding","gzip"),("Content-Length","20"),("Connection","close"),("Content-Type","text/html; charset=iso-8859-15"),("X-Response-Body-Start",""),("X-Request-URL","MKCOL https://webmail.freenet.de:443/webdav/tmp")]
+    (CJ {expose = []}): user error failed
+    git-annex: initremote: 1 failed
+
+Ok this fails (what is the error?). However, it does create a folder "tmp" in the "cloud". A second attempt yields another error:
+
+    WEBDAV_USERNAME='XXX' WEBDAV_PASSWORD='XXX' git annex initremote webdav type=webdav url='https://webmail.freenet.de/webdav' encryption=none
+    initremote webdav (testing WebDAV server...) 
+    git-annex: WebDAV test failed: StatusCodeException (Status {statusCode = 501, statusMessage = "Not Implemented"}) [("Date","Fri, 04 Dec 2015 12:21:22 GMT"),("Server","Apache/2.2.16 (Debian)"),("Content-Length","349"),("Connection","close"),
+    ("Content-Type","application/xml; charset=utf-8"),("X-Response-Body-Start","<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<d:error xmlns:d=\"DAV:\" xmlns:s=\"http://sabredav.org/ns\">\n  <s:exception>Sabre\\DAV\\Exception\\NotImplemented</s:exception>\n  
+    <s:message>This server is not compatible with OS/X finder. Consider using a different WebDAV client or webserver.</s:message>\n  <s:sabredav-version>1.8.6</s:sabredav-version>\n</d:error>\n"),("X-Request-URL","PUT https://webmail.freenet.de:443/webdav
+    /tmp/git-annex-test")] (CJ {expose = []}): user error failed
+    git-annex: initremote: 1 failed
+
+which is I guess the same. The WebDAV server does support writing and locking files. I tried writing using davfs2 and locking-unlocking using cadaver. I guess in the end that it's the server's fault, but it would be great to know what exactly fails at this point :).
+
+### What version of git-annex are you using? On what operating system?
+
+git-annex version: 5.20151116-gbe86081
+
+Gentoo Linux
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+First time trying WebDAV support.
diff --git a/doc/bugs/git-annex_creates_many_zombies.mdwn b/doc/bugs/git-annex_creates_many_zombies.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/git-annex_creates_many_zombies.mdwn
@@ -0,0 +1,33 @@
+### Please describe the problem.
+
+In a debian unstable docker container, I run `git-annex assistant --auto` on a few repositories.
+
+After a few days, I have many (> 10000 right now) zombie processes:
+
+    % ps x | grep "git-annex.*defunct" | wc -l
+    10325
+
+### What steps will reproduce the problem?
+
+Keep `git-annex assistant` running.
+
+### What version of git-annex are you using? On what operating system?
+
+Binary version 5.20151116-gbe86081 on Debian Linux unstable (up-to-date from a few days ago when my docker container started)
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+# End of transcript or log.
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+I couldn't live without git-annex to synchronize my documents over multiple hosts and archives :-)
+
+> [[done]]; this is a docker bug if anything, and I really don't see any
+> way git-annex can solve it. --[[Joey]]
diff --git a/doc/bugs/regression_with_S3_creds_not_used.mdwn b/doc/bugs/regression_with_S3_creds_not_used.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/regression_with_S3_creds_not_used.mdwn
@@ -0,0 +1,59 @@
+### Please describe the problem.
+
+I am having a problem on Windows in which the AWS access credentials are stored but not used. When I have the ```AWS_ACCESS_KEY_ID``` and ```AWS_SECRET_ACCESS_KEY``` variables are set, everything works correctly. However if I open a new window that doesn't have envs set, git annex sync --content fails with a Forbidden message. Looking in the creds directory, I see plaintext creds stored.
+
+### What steps will reproduce the problem?
+
+```
+# set AWS_ACCESS_KEY_ID=thing1
+# set AWS_SECRET_ACCESS_KEY=thing2
+# git init test
+# cd test
+# git annex init
+# git annex initremote s3cloud type=S3 encryption=pubkey keyid=key embedcreds=yes
+ ... everything works, annex-uuid is created, etc ...
+
+# now open a new window, navigate to proper repo
+
+# git annex sync --content
+
+... forbidden messages
+
+# Reset the env vars
+... sync works as normal ...
+```
+
+Note that this fails *silently* when using the webapp. The app shows percentage of upload, and the uploads "complete" but the log shows:
+
+```
+  S3Error {s3StatusCode = Status {statusCode = 403, statusMessage = "Forbidden"}, s3ErrorCode = "InvalidAccessKeyId", s3ErrorMessage = "The AWS Access Key Id you provided does not exist in our records.", s3ErrorResource = Nothing, s3ErrorHostId = Just "/MfOhrvmoi1uTsuJDaV2c+3jxqt+/cAC8KBvGkbE+os1BAPAw/bLeNHiUF8kbSJ+2cMuNO+0mzQ=", s3ErrorAccessKeyId = Just "redacted", s3ErrorStringToSign = Nothing, s3ErrorBucket = Nothing, s3ErrorEndpointRaw = Nothing, s3ErrorEndpoint = Nothing}
+```
+
+### What version of git-annex are you using? On what operating system?
+
+I'm on Windows:
+
+```
+git-annex version: 5.20151019-gcc50c00
+build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feed
+s Quvi TDFA TorrentParser Database
+key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384
+SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEI
+N256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
+remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glac
+ier ddar hook external
+```
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+# End of transcript or log.
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+I have successfully used git annex on linux and mac, and it is great!
diff --git a/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn b/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn
@@ -0,0 +1,38 @@
+### Please describe the problem.
+
+``git annex info`` shows a local repo as "not here" (withou the ``[here]`` tag), and shows a remote repo with the ``[here]`` tag.
+
+I had to manually edit `.git/config` to set my local repo's UUID to the correct one.
+
+> Well, git-annex can only display information that you've told it. 
+> In this case you seem to have done something wrong with UUIDs, and so it
+> displayed [here] next to the UUID of the local repo, as it's supposed to.
+> There's no bug here I think. [[done]] --[[Joey]]
+
+### What steps will reproduce the problem?
+
+I just ``git annex dead`` an old repo, and ``git annex semitrust`` a new repo by the same name as the old repo.
+
+
+### What version of git-annex are you using? On what operating system?
+
+5.20150731-1build1
+
+Lubuntu 15.10
+
+
+### Please provide any additional information below.
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+# End of transcript or log.
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+Yes, lots of luck (need more skill).
+
+git-annex may need more error catches to prevent a wrong order of commands from corrupting a repo. But still, git annex works great.
diff --git a/doc/coding_style.mdwn b/doc/coding_style.mdwn
--- a/doc/coding_style.mdwn
+++ b/doc/coding_style.mdwn
@@ -98,3 +98,16 @@
 or vertical whitespace around your code, making it hard to fit enough of it
 on the screen, consider finding a better abstraction, so the code that
 does fit on the screen is easily understandable. ;)
+
+-----
+
+Note for emacs users: You can put the following snippet into a file called 
+`.dir-locals.el` at root of git-annex's source tree to use tabs for indentation:
+
+	((nil . ((indent-tabs-mode . t)
+	         (tab-width . 8)
+	         (fill-column . 80)))
+	 ;; Warn about spaces used for indentation:
+	 (haskell-mode . ((eval . (highlight-regexp "^ *")))))
+
+Also consider [haskell-tab-indent-mode](https://spwhitton.name/tech/code/haskell-tab-indent/).  The standard indentation modes that come with haskell-mode do not work well with tabs for indentation.  This mode works well for hacking on git-annex.
diff --git a/doc/devblog/day_338__week_in_review.mdwn b/doc/devblog/day_338__week_in_review.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_338__week_in_review.mdwn
@@ -0,0 +1,16 @@
+Monday: Some finishing touches on the pid locking support, and released
+5.20151116. After the release I noticed that concurrent downloads didn't
+always include a progress meter, and made the necessary changes to fix
+that.
+
+Wednesday: This was a day of minor bug fixing and responding to questions
+etc. Message backlog got down below 90, not bad.
+
+Thursday: I've been distracted from coding today with an idea of making
+some new stickers. Hexagonal this time, and even better, composable...
+So they can show git-annex getting as big as you want. ;)
+
+[[stickers/hex.svg]]
+
+The design is done, see [[stickers]], and seems to work well, and even
+better is easy to modify. May find time to get these printed at some point.
diff --git a/doc/devblog/day_339_smudging_out_direct_mode.mdwn b/doc/devblog/day_339_smudging_out_direct_mode.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_339_smudging_out_direct_mode.mdwn
@@ -0,0 +1,61 @@
+I'm considering ways to get rid of direct mode, replacing it with something
+better implemented using [[todo/smudge]] filters.
+
+## git-lfs
+
+I started by trying out git-lfs, to see what I can learn from it. My
+feeling is that git-lfs brings an admirable simplicity to using git with
+large files. For example, it uses a push-hook to automatically
+upload file contents before pushing a branch.
+
+But its simplicity comes at the cost of being centralized. You can't make a
+git-lfs repository locally and clone it onto other drive and have the local
+repositories interoperate to pass file contents around. Everything has to
+go back through a centralized server. I'm willing to pay complexity costs
+for decentralization.
+
+Its simplicity also means that the user doesn't have much control over what
+files are present in their checkout of a repository. git-lfs downloads
+all the files in the work tree. It doesn't have facilities for dropping
+files to free up space, or for configuring a repository to only want to get
+a subset of files in the first place. Some of this could be added to it 
+I suppose.
+
+I also noticed that git-lfs uses twice the disk space, at least when
+initially adding files. It keep a copy of the file in .git/lfs/objects/,
+in addition to the copy in the working tree. That copy seems to be
+necessary due to the way git smudge filters work, to avoid data loss. Of
+course, git-annex manages to avoid that duplication when using symlinks,
+and its direct mode also avoids that duplication (at the cost of some
+robustness). I'd like to keep git-annex's single local copy feature 
+if possible.
+
+## replacing direct mode
+
+Anyway, as smudge/clean filters stand now, they can't be used to set up
+git-annex symlinks; their interface doesn't allow it. But, I was able to
+think up a design that uses smudge/clean filters to cover the same use
+cases that direct mode covers now.
+
+Thanks to the clean filter, adding a file with `git add` would check in a
+small file that points to the git-annex object.
+
+In the same repository, you could also use `git annex add` to check
+in a git-annex symlink, which would protect the object from modification,
+in the good old indirect mode way. `git annex lock` and `git annex unlock` 
+could switch a file between those two modes.
+
+So this allows mixing directly writable annexed files and locked down
+annexed files in the same repository. All regular git commands and all
+git-annex commands can be used on both sorts of files. Workflows could
+develop where a file starts out unlocked, but once it's done, is locked to
+prevent accidental edits and archived away or published.
+
+That's much more flexible than the current direct mode, and I think it will
+be able to be implemented in a simpler, more scalable, and robust way too.
+I can lose the direct mode merge code, and remove hundreds of lines of
+other special cases for direct mode.
+
+The downside, perhaps, is that for a repository to be usable on a crippled
+filesystem, all the files in it will need to be unlocked. A file can't
+easily be unlocked in one checkout and locked in another checkout.
diff --git a/doc/devblog/day_340__post_turkey_catchup.mdwn b/doc/devblog/day_340__post_turkey_catchup.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_340__post_turkey_catchup.mdwn
@@ -0,0 +1,9 @@
+Spent a couple of days catching up on backlog, and my backlog is down to 80
+messages now. Lowest in recent memory.
+
+Made the annex.largefiles config be honored by `git annex import`, `git
+annex addurl`, and even `git annex importfeed`.
+
+Planning to dive into smudge filters soon. The design seems ready to go,
+although there is some complication in needing to keep track of mappings
+between worktree files and annex keys.
diff --git a/doc/devblog/day_341__starting_smudge.mdwn b/doc/devblog/day_341__starting_smudge.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_341__starting_smudge.mdwn
@@ -0,0 +1,24 @@
+I've gotten git-annex working as a smudge/clean filter today in the
+`smudge` branch. It works ok in a local git repository. `git add` lets
+git-annex decide if it wants to annex a file's content, and checking out
+branches and other git commands involving those files works pretty well.
+
+It can sometimes be slow; git's smudge interface necessarily needs to
+copy the content of files around, particularly when checking out files,
+and so it's never going to be as fast as the good old git-annex symlink
+approach. Most of the slow parts are things that can't be done in direct
+mode repos though, like switching branches, so that isn't a regression.
+
+No git-annex commands to manage the annexed content work yet. That
+will need a key to worktree file mapping to be maintained, and implementing
+that mapping and ensuring its always consistent is probably going to be
+the harder part of this.
+
+Also there's the question of how to handle upgrades from direct mode
+repositories. This will be an upgrade from annex.version 5 to 6, and you
+won't want to do it until all computers that have clones of a repository
+have upgraded to git-annex 6.x, since older versions won't be able to work
+with the upgraded repository. So, the repository upgrade will need to be
+run manually initially, and it seems I'll need to keep supporting direct
+mode for v5 repos in a transition period, which will probably be measured
+in years.
diff --git a/doc/devblog/day_342__continuing_smudge.mdwn b/doc/devblog/day_342__continuing_smudge.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/devblog/day_342__continuing_smudge.mdwn
@@ -0,0 +1,30 @@
+Made a lot of progress today. Implemented the database mapping a key to its
+associated files.  As expected this database, when updated by the
+smudge/clean filters, is not always consistent with the current git work tree.
+In particular, commands like `git mv` don't update the database with the
+new filename. So queries of the database will need to do some additional
+work first to get it updated with any staged changes. But the database is
+good enough for a proof of concept, I hope.
+
+Then I got git-annex commands treating smudged files as annexed files.
+So this works:
+
+	joey@darkstar:~/tmp/new>git annex init
+	init  ok
+	(recording state in git...)
+	joey@darkstar:~/tmp/new>cp ~/some.mp3 .
+	joey@darkstar:~/tmp/new>git add some.mp3
+	joey@darkstar:~/tmp/new>git diff --cached
+	diff --git a/some.mp3 b/some.mp3
+	new file mode 100644
+	index 0000000..2df8868
+	--- /dev/null
+	+++ b/some.mp3
+	@@ -0,0 +1 @@
+	+/annex/objects/SHA256E-s191213--e4b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.mp3
+	joey@darkstar:~/tmp/new>git annex whereis some.mp3
+	whereis some.mp3 (1 copy) 
+	  	7de17427-329a-46ec-afd0-0a088f0d0b1b -- joey@darkstar:~/tmp/new [here]
+	ok
+
+get/drop don't yet update the smudged files, and that's the next step.
diff --git a/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment b/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment
new file mode 100644
--- /dev/null
+++ b/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="jckuester@11e9fceb442172b6db63320bb545797a47a4c103"
+ nickname="jckuester"
+ subject="error during &quot;git clone git://git.kitenet.net/git-annex&quot;"
+ date="2015-11-22T15:38:57Z"
+ content="""
+error: unable to create file doc/bugs/On_Lubuntu_14.04_assistant_fails_to_create_new_setup_or_actually_work___40__fixed_by_regular_lxsession_package_update_from_2014-06-30__41__.mdwn (File name too long)
+fatal: unable to checkout working tree
+"""]]
diff --git a/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment b/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment
new file mode 100644
--- /dev/null
+++ b/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2015-11-30T19:13:34Z"
+ content="""
+I guess you guys with the badly limited filename lenghs are using encfs or
+something like that. encfs is [really shoddy](https://defuse.ca/audits/encfs.htm),
+and I feel kind of like someone is complaining that the git repo can't be
+checked out on MS-DOS. 
+8.3 filenames are so 1985, and 128 filenames are so.. 1995?
+"""]]
diff --git a/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn b/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn
@@ -0,0 +1,9 @@
+I am confused on how to invoke the web app. I am learning how to use this tool, however I don't feel quite confident yet. I wanted to test out the web app, to play around with configurations and auto syncing, however I stumbled over this:
+
+    ➜  ~  git annex help webapp // works fine
+    ➜  ~  git annex webapp
+    Invalid argument `webapp' // uhh what.
+
+git-annex-webapp didn't work either.
+
+I installed with brew. El Capitan, latest update as of right now.
diff --git a/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn b/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn
@@ -0,0 +1,8 @@
+Hi,
+
+I am currently trying to move nearly all of my files into git-annex, and I was wondering if there is a (plumbing-level?) way to easily figure out if a file I find on a random hard disk is already contained in my annex repository?
+
+I.e., is there an easy way to compute the key for a file (which is not in an annex) and look up if the file is already contained in a given annex repository? I've looked a bit at the plumbing-level commands but none seem to exactly fit the bill :-/
+
+Cheers,
+Alex
diff --git a/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn b/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn
@@ -0,0 +1,21 @@
+I use the command line almost every hour, I'm familiar with it. But it's a pita on the phone.
+
+I'd like to create an "graphical" Android application that lists/browses the repo's content and allows the user to manipulate the files/directories.
+
+git-annex for Android (5.0) is installed and working fine. I was messing around (on my rooted phone) with the rwx permissions to run the git-annex binary from my app as it's a different user and has no access to those binaries by default. But no success yet: 
+
+```
+shell@jfltexx:/storage/sdcard1/repo $ /data/data/ga.androidterm/lib/lib.git-annex.so list
+
+lib.git-annex.so: git: createProcess: runInteractiveProcess: exec: permission denied (Permission denied)
+```
+
+Question 1: How should I set up the permissions to be able to successfully run any git-annex command from my (non-commercial, private) Android app?
+
+Question 2: What if I include all the git-annex binaries in my app as a resource and write them to disk after install and execute them? (Permissions should work.)
+
+
+Use case: family videos are stored in a repo at home. This repo is cloned to my phone's sdcard. I want to browse the repo on my phone and mark some directories to be transferred from home to phone. My app would be a simple frontend for git-annex where you can browse and do some basic stuff: get, drop, manipulate metadata (and of course start playing a video).
+
+Thank you for any ideas,
+Bence
diff --git a/doc/forum/assistant_and_archive_folder.mdwn b/doc/forum/assistant_and_archive_folder.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/forum/assistant_and_archive_folder.mdwn
@@ -0,0 +1,13 @@
+I have a setup with a windows desktop and a linux laptop with both an annex repository, interconnected via a backup repository in the middle (connected via ssh).
+Both computers are setup as clients and all 3 machines are running the assistant.
+
+Today i tried creating an archive folder and a putting some files in it. To my understanding those files should have been dropped in the 2 machines but kept on the server.. instead I have them copied on each machine. Listing where the files are on both computers shows that both know that themselves and the server have a copy, but they don't know anything about each other.
+
+AFAIK it looks like the bug reported in https://git-annex.branchable.com/forum/question_about_assistant_and___47__archive__47__/
+
+laptop: git-annex version: 5.20151116+gitg5416a1a-1~ndall+1
+
+server: git-annex version: 5.20151109-g08bb3b1
+
+windows: the latest build on the website
+
diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn
--- a/doc/git-annex.mdwn
+++ b/doc/git-annex.mdwn
@@ -789,16 +789,26 @@
 
 * `annex.largefiles`
 
-  Allows configuring which files `git annex add` and the assistant consider
-  to be large enough to need to be added to the annex. By default,
-  all files are added to the annex.
+  Allows configuring which files are considered to be large enough to
+  need to be added to the annex. By default, all specified files are added
+  to the annex, but configuring this can cause the small files to be
+  checked into git, without using the annex.
 
   The value is a preferred content expression. See [[git-annex-preferred-content]](1)
   for details.
 
   Example:
 
-        	annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)
+	annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)
+
+  This setting is checked by `git annex add`, `git annex import` and the assistant.
+  It's also used by `git annex addurl` and `git annex importfeed` when
+  downloading files.
+
+  It can be useful to temporarily override it via -c at the command line.
+  For example:
+
+  	git annex add -c annex.largefiles='include=*' 99kbfile
 
 * `annex.numcopies`
 
diff --git a/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment b/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="eren.m.dursun@73116dce47e54243c7ee1637f1289afb02f07f4b"
+ nickname="eren.m.dursun"
+ subject="Re: Compatibility with recent version of Git for Windows"
+ date="2015-11-29T19:24:03Z"
+ content="""
+To install git-annex next to 64bit git on Windows:
+
+Start cmd.exe with administrator privileges and run
+mklink /J \"C:\Program Files (x86)\Git\" \"C:\Program Files\Git\"
+to add a sym-link. Install git-annex.
+"""]]
diff --git a/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment b/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment
new file mode 100644
--- /dev/null
+++ b/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2015-11-30T19:05:36Z"
+ content="""
+@eren, some of the programs included with git-annex need to use libraries
+from Git for Windows. In particular, I think you'll find that rsync doesn't
+work if you use the 64 bit Git for Windows.
+"""]]
diff --git a/doc/logo.mdwn b/doc/logo.mdwn
--- a/doc/logo.mdwn
+++ b/doc/logo.mdwn
@@ -11,3 +11,11 @@
 [[logo-old.svg]]
 
 [[logo-old-bw.svg]]
+
+----
+
+	Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>
+	           2010 Joey Hess <id@joeyh.name>
+		   2013 John Lawrence
+	License: other
+	  Free to modify and redistribute with due credit, and obviously free to use.
diff --git a/doc/news/version_5.20150930.mdwn b/doc/news/version_5.20150930.mdwn
deleted file mode 100644
--- a/doc/news/version_5.20150930.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-git-annex 5.20150930 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Added new linux standalone "ancient" build to support kernels
-     like 2.6.32.
-   * info: Don't allow use in a non-git-annex repository, since it
-     uses the git-annex branch and would create it if it were missing.
-   * assistant: When updating ~/.ssh/config, preserve any symlinks.
-   * webapp: Remove the "disable remote" feature from the UI.
-   * S3: When built with aws-0.13.0, supports using more storage classes.
-     In particular, storageclass=STANDARD\_IA to use Amazon's
-     new Infrequently Accessed storage, and storageclass=NEARLINE
-     to use Google's NearLine storage.
-   * Improve ~/.ssh/config modification code to not add trailing spaces
-     to lines it cannot parse.
-   * Fix a crash at direct mode merge time when .git/index doesn't exist
-     yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of
-     a repository.
-   * status: Show added but not yet committed files.
-   * Added stack.yaml to support easy builds from source with stack."""]]
diff --git a/doc/news/version_5.20151208.mdwn b/doc/news/version_5.20151208.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/news/version_5.20151208.mdwn
@@ -0,0 +1,24 @@
+git-annex 5.20151208 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * Build with -j1 again to get reproducible build.
+   * Display progress meter in -J mode when copying from a local git repo,
+     to a local git repo, and from a remote git repo.
+   * Display progress meter in -J mode when downloading from the web.
+   * map: Improve display of git remotes with non-ssh urls, including http
+     and gcrypt.
+   * When core.sharedRepository is set, annex object files are not made mode
+     444, since that prevents a user other than the file owner from locking
+     them. Instead, a mode such as 664 is used in this case.
+   * tahoe: Include tahoe capabilities in whereis display.
+   * import: Changed to honor annex.largefiles settings.
+   * addurl, importfeed: Changed to honor annex.largefiles settings,
+     when the content of the url is downloaded. (Not when using --fast or
+     --relaxed.)
+   * webapp: Fix bugs that could result in a relative path such as "."
+     being written to ~/.config/git-annex/autostart, and ignore any such
+     relative paths in the file.
+     This was a reversion caused by the relative path changes in 5.20150113.
+   * dropunused: Make more robust when trying to drop an object that has
+     already been dropped.
+   * Fix reversion in handling of long filenames, particularly when using
+     addurl/importfeed, which was introduced in the previous release."""]]
diff --git a/doc/not.mdwn b/doc/not.mdwn
--- a/doc/not.mdwn
+++ b/doc/not.mdwn
@@ -52,7 +52,7 @@
 
 * Similarly, git-annex is not [git-lfs](https://github.com/github/git-lfs),
   which also uses git smudge filters, and appears to lack git-annex's
-  widely distributed storage.
+  widely distributed storage and partial checkouts.
 
 * git-annex is also not [boar](http://code.google.com/p/boar/),
   although it shares many of its goals and characteristics. Boar implements
diff --git a/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment b/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment
new file mode 100644
--- /dev/null
+++ b/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="cantora@432fae6be728a32ac472387df86a8922f059d4a6"
+ nickname="cantora"
+ subject="How to view configuration of special remotes?"
+ date="2015-12-08T08:29:12Z"
+ content="""
+I don't remember which gpg key my s3 remote is using, but I can't seem to get git annex to tell me about the configuration of my s3 remote, which has the gpg key ID that I need to find (I need to restore it from many backed up keys, but need to know which one). Is there a way to view the remote metadata? I was hoping to see a command like `git annex remoteinfo NAME`. (git annex version: `5.20140408-gb37d538`).
+"""]]
diff --git a/doc/special_remotes/bup/comment_15_91e34a0087eaec6ad3c393179621a471._comment b/doc/special_remotes/bup/comment_15_91e34a0087eaec6ad3c393179621a471._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_15_91e34a0087eaec6ad3c393179621a471._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://woid.cryptobitch.de/foobar"
- subject="obnam"
- date="2015-11-12T11:50:52Z"
- content="""
-Will obnam work as well with git-annex for backups?
-"""]]
diff --git a/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment b/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment
new file mode 100644
--- /dev/null
+++ b/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="encryptio@2557a3f5b4ef0cddf8f011d7dbb3e76d46ed9c79"
+ nickname="encryptio"
+ subject="git-annex-remote-b2"
+ date="2015-12-04T03:19:29Z"
+ content="""
+I wrote an external remote for [Backblaze's B2](https://www.backblaze.com/b2/cloud-storage.html) object storage service: [git-annex-remote-b2](https://github.com/encryptio/git-annex-remote-b2). I can't be arsed to write a full page on it, but the README covers everything an experienced git-annex user needs to know to use it.
+"""]]
diff --git a/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment b/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment
new file mode 100644
--- /dev/null
+++ b/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment
@@ -0,0 +1,30 @@
+[[!comment format=mdwn
+ username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
+ nickname="rob.syme"
+ subject="Finding IPFS hash"
+ date="2015-11-18T14:55:33Z"
+ content="""
+The use case is only very silly - I just wanted to look directly at the data stored at that IPFS hash - it was not important and certainly not worth changing the way git-annex stores its keys.
+
+On a new machine with a new version of git-annex, I can no longer initialize a new IFPS remote:
+
+    ⟫ ipfs version
+    ipfs version 0.3.10-dev
+
+    ⟫ git annex version
+    git-annex version: 5.20151116-gbe86081
+    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput DNS Feeds Quvi TDFA TorrentParser Database
+    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
+    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
+    local repository version: 5
+    supported repository version: 5
+    upgrade supported from repository versions: 0 1 2 4
+
+    ⟫ git annex initremote ipfs type=external externaltype=ipfs encryption=none
+    initremote ipfs 
+    git-annex: git-annex-remote-ipfs: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)
+    failed
+    git-annex: initremote: 1 failed
+
+It looks like I'm missing a binary somewhere, but I'm not sure which one is missing.
+"""]]
diff --git a/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment b/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment
new file mode 100644
--- /dev/null
+++ b/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2015-11-18T16:22:51Z"
+ content="""
+@rob.syme I think that error message is pretty clear: git-annex-remote-ipfs
+is not present in your PATH or perhaps is not executable.
+
+(Still, the error message could be improved a bit, doing that now.)
+"""]]
diff --git a/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment b/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment
new file mode 100644
--- /dev/null
+++ b/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
+ nickname="rob.syme"
+ subject="git-annex-remote-ipfs"
+ date="2015-11-19T14:46:03Z"
+ content="""
+Silly me - I messed up my bashrc. Fixed now, thanks!
+"""]]
diff --git a/doc/stickers.mdwn b/doc/stickers.mdwn
new file mode 100644
--- /dev/null
+++ b/doc/stickers.mdwn
@@ -0,0 +1,21 @@
+Hexagonal sticker design using the [[logo]] with add-on tiles to expand
+the annex.
+
+[[stickers/hex.svg]]
+[download hex.svg](hex.svg)
+
+[[stickers/hexdemos.svg]]
+[download hexdemos.svg](hexdemos.svg)
+
+This complies with <https://github.com/terinjokes/StickerConstructorSpec/>
+and so is intended to combine with other hexagonal stickers.
+
+Some of the add-on tiles contain enough white-space to add other art work
+as desired.
+
+It includes some smaller tiles that can bridge between hexagonal and
+square/regtangular stickers, as illustrated in
+<https://github.com/terinjokes/StickerConstructorSpec/issues/13>.
+
+License: Same as git-annex [[logo]]; Joey would appreciate spare 
+git-annex stickers mailed his way, but does not require it. ;)
diff --git a/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment b/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment
new file mode 100644
--- /dev/null
+++ b/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="http://bret.io/"
+ subject="Woo!  "
+ date="2015-11-19T23:48:01Z"
+ content="""
+Rad! Cant wait to add it to:
+
+<img src=\"https://camo.githubusercontent.com/0133cd5cab79bd8e9945d0e89337e2041d157076/68747470733a2f2f63312e737461746963666c69636b722e636f6d2f312f3732302f32313339393337353133395f303564383938316231395f622e6a7067\" height=\"400\">
+
+I like the idea of adapters too :)
+
+https://www.stickermule.com/ and https://hexi.pics/help_en both print high quality spec compliant stickers.
+"""]]
diff --git a/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment b/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment
new file mode 100644
--- /dev/null
+++ b/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="CandyAngel"
+ subject="comment 2"
+ date="2015-11-20T08:37:39Z"
+ content="""
+I don't usually like any decals on my stuff.. but I've never come across this before and it looks interesting. I'm really tempted..
+
+However, I wouldn't be able to do it without having some nice way of dealing with tolerance stacking. The overlapping stickers (bottom-right) on the photo above would drive me mad! :)
+
+I went ahead and [raised an issue](https://github.com/terinjokes/StickerConstructorSpec/issues/18) in case they want to deal with this in the specification by having a(some?) guide specification(s) too.
+"""]]
diff --git a/doc/stickers/hex.svg b/doc/stickers/hex.svg
new file mode 100644
--- /dev/null
+++ b/doc/stickers/hex.svg
@@ -0,0 +1,1017 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="220mm"
+   height="110mm"
+   viewBox="0 0 779.52757 389.76378"
+   id="svg5535"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="hex.svg">
+  <defs
+     id="defs5537">
+    <clipPath
+       id="clip1">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 0,340.15625 481.89062,0 L 481.89062,0 0,0 0,340.15625 Z m 0,0"
+         id="path7" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.32"
+     inkscape:cx="201.37678"
+     inkscape:cy="300.86122"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showguides="true"
+     inkscape:window-width="800"
+     inkscape:window-height="730"
+     inkscape:window-x="0"
+     inkscape:window-y="12"
+     inkscape:window-maximized="0"
+     units="mm">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3730" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5540">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="guides"
+     style="display:inline"
+     transform="translate(0,-662.59842)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 325.6126,1538.1481 518.7035,1339.6027"
+       id="path4177"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 325.8853,1538.6936 76.9091,-132.8182"
+       id="path3841"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 401.9762,1538.9663 325.3398,1405.0572"
+       id="path3843"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 401.4307,1538.6936 209.9762,1338.5118"
+       id="path4179"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:none;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 231.27273,631.81675 153.81818,498.18039"
+       id="path3851"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 441.2489,1339.0572 c 0.5455,268.3636 0.5455,268.3636 0.5455,268.3636"
+       id="path4171"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 171.7944,1404.5118 153.2727,1.0909"
+       id="path3849"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 286.8853,1339.0572 -76.9091,133.0909"
+       id="path3847"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4193"
+       d="m 517.4996,1338.5586 c 0.5454,268.3636 0.5454,268.3636 0.5454,268.3636"
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 479.6507,1539.6233 0,-220.6174"
+       id="path4232"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 441.0812,1472.8981 77.5246,133.0646"
+       id="path4230"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 517.0631,1472.8981 c -75.2105,133.4503 -75.2105,133.4503 -75.2105,133.4503"
+       id="path4228"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 516.5216,1472.1481 326.158,1272.5118"
+       id="path4293"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 287.1891,1472.5124 210.8215,1338.2907"
+       id="path4314"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 632.7035,1273.0572 C 442.3398,1472.6936 442.3398,1472.6936 442.3398,1472.6936"
+       id="path4310"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 210.0502,1472.5124 402.5118,1273.1083"
+       id="path4325"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 287.5748,1207.9259 -77.1389,263.0437"
+       id="path4341"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 94.7275,1271.1798 286.032,1472.5124"
+       id="path4339"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 305.4307,1372.3299 -121.6363,69.8182"
+       id="path4367"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 249.2489,1405.0572 0,80.7273"
+       id="path4365"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="304.93979"
+       y="592.7428"
+       id="text5006"
+       sodipodi:linespacing="50%"><tspan
+         sodipodi:role="line"
+         id="tspan5010"
+         x="304.93979"
+         y="592.7428" /></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot5012"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+         id="flowRegion5014"><rect
+           id="rect5016"
+           width="132.58252"
+           height="37.565048"
+           x="174.56699"
+           y="544.12921" /></flowRegion><flowPara
+         id="flowPara5018" /></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot5020"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+         id="flowRegion5022"><rect
+           id="rect5024"
+           width="159.09903"
+           height="70.710678"
+           x="150.26019"
+           y="519.82239" /></flowRegion><flowPara
+         id="flowPara5026" /></flowRoot>    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="243.06796"
+       y="583.90393"
+       id="text5028"
+       sodipodi:linespacing="50%"><tspan
+         sodipodi:role="line"
+         id="tspan5030"
+         x="243.06796"
+         y="583.90393" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="303.64539"
+       y="1196.0898"
+       id="text5032"
+       sodipodi:linespacing="100%"><tspan
+         sodipodi:role="line"
+         id="tspan5034"
+         x="303.64539"
+         y="1196.0898">workshop</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:80.00000119%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="795.43005"
+       y="817.12488"
+       id="text5052"
+       sodipodi:linespacing="80.000001%"><tspan
+         sodipodi:role="line"
+         id="tspan5054"
+         x="795.43005"
+         y="817.12488">&lt;- cut</tspan><tspan
+         sodipodi:role="line"
+         x="795.43005"
+         y="835.12488"
+         id="tspan5056">after</tspan><tspan
+         sodipodi:role="line"
+         x="795.43005"
+         y="853.12488"
+         id="tspan5058">printing -&gt;</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="834.16504"
+       y="53.573872"
+       id="text5060"
+       sodipodi:linespacing="100%"><tspan
+         sodipodi:role="line"
+         id="tspan5062"
+         x="834.16504"
+         y="53.573872" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="1068.3942"
+       y="556.28259"
+       id="text5064"
+       sodipodi:linespacing="100%"><tspan
+         sodipodi:role="line"
+         id="tspan5066"
+         x="1068.3942"
+         y="556.28259" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="31.25"
+       y="1105.4872"
+       id="text3511"
+       sodipodi:linespacing="100%"><tspan
+         sodipodi:role="line"
+         id="tspan3513"
+         x="31.25"
+         y="1105.4872">(remove yellow borders before printing)</tspan></text>
+  </g>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-662.59842)">
+    <path
+       d="m 288.0751,1205.5751 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3770"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 172.3513,1271.5836 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3772"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 403.2324,1272.7809 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3776"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3780"
+       style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 403.0232,1405.6381 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z" />
+    <path
+       d="m 518.2852,1472.9918 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3782"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccccc"
+       id="path1927"
+       d="m 361.244,1519.695 c -4.9886,-0.6427 -10.1226,-5.3595 -10.8399,-10.8931 -0.6879,-4.6263 0.3046,-10.0263 4.1288,-13.0794 1.6773,-1.1432 3.959,-2.4242 5.971,-2.2718 0.06,2.0481 -0.06,4.5376 0,6.5857 -2.3965,0.2668 -4.7163,2.9908 -4.6681,5.4849 0.059,3.2457 1.4952,6.2278 4.6179,7.1992 3.4541,1.1622 7.4079,0.8316 10.6054,-1.1006 2.6413,-2.058 2.8857,-5.8898 1.5042,-8.8058 -0.6214,-1.6046 -1.961,-2.7827 -3.7792,-2.7777 l 0,5.7124 -5.1268,0 0,-12.2981 15.5251,0 0,4.4225 -4.2524,0.039 c 3.9682,2.2621 4.3749,7.1442 4.1716,10.5313 0.1429,5.8185 -5.6054,10.5624 -11.3067,11.1967 -2.0627,0.1546 -3.808,0.1628 -6.5509,0.054 z"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc"
+       id="path1925"
+       d="m 350.1524,1491.0078 -0.033,-6.454 29.1036,0 0,6.485 -29.0677,-0.031 z"
+       style="fill:#40bf4c;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccc"
+       id="path1917"
+       d="m 361.2446,1482.2867 0,-6.9069 -11.283,0 0,-6.0105 11.283,0 0,-7.7504 6.7486,0 0,7.7504 11.2302,0 0,6.0105 -11.2302,0 -0.1112,6.8925 -6.6374,0.014 z"
+       style="fill:#ff0000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
+       id="path2836"
+       sodipodi:nodetypes="cccccccc"
+       inkscape:transform-center-x="-7.5938808"
+       inkscape:transform-center-y="-14.892703" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path4173"
+       d="m 381.5079,1472.0799 c 13.1692,0.9841 18.358,-2.9516 32.181,-19.8195"
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       inkscape:transform-center-y="-14.892703"
+       inkscape:transform-center-x="-7.5938808"
+       sodipodi:nodetypes="cccccccc"
+       id="path4234"
+       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:transform-center-y="-14.892703"
+       inkscape:transform-center-x="-7.5938808"
+       sodipodi:nodetypes="cccccccc"
+       id="path4234-6"
+       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g4200"
+       transform="matrix(-1,0,0,1,672.584,839.94568)">
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+         id="path4202"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-7.5938808"
+         inkscape:transform-center-y="-14.892703" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4204"
+         d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="295"
+       y="612.36218"
+       id="text4210"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4214"
+         x="295"
+         y="612.36218" /></text>
+    <g
+       id="g4296"
+       transform="translate(56.158,839.78592)">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path3369"
+         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
+         id="path4288"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-4.9547788"
+         inkscape:transform-center-y="-2.0479419" />
+    </g>
+    <g
+       id="g4268"
+       transform="translate(78.15537,281.85591)">
+      <path
+         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3778"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4262">
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4264"
+           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           inkscape:transform-center-y="-18.010798"
+           inkscape:transform-center-x="0.7747508"
+           sodipodi:nodetypes="cccccccc"
+           id="path4266"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <g
+       id="g4278"
+       transform="matrix(-1,0,0,1,682.6161,291.09305)">
+      <g
+         id="g4865">
+        <path
+           transform="matrix(-1,0,0,1,646.48904,412.98535)"
+           inkscape:connector-curvature="0"
+           id="path4276"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 183.90007,86.85828 77.00875,0 38.505,66.6925 -38.505,66.6925 -77.00875,0 -38.505,-66.6925 38.505,-66.6925 z" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
+           id="path4280"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           id="path4282"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="0.7747508"
+           inkscape:transform-center-y="-18.010798" />
+      </g>
+      <g
+         id="g4870">
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4874"
+           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           inkscape:transform-center-y="-18.010798"
+           inkscape:transform-center-x="0.7747508"
+           sodipodi:nodetypes="cccccccc"
+           id="path4876"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       id="path4286"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 518.3442,1339.9866 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
+    <g
+       id="g4300"
+       transform="matrix(-1,0,0,1,903.4486,839.49381)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
+         id="path4302"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:transform-center-y="-2.0479419"
+         inkscape:transform-center-x="-4.9547788"
+         sodipodi:nodetypes="cccccccc"
+         id="path4304"
+         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       id="path4306"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 633.9707,1406.4858 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
+    <path
+       d="m 633.9707,1273.1689 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4308"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g4329" />
+    <g
+       id="g4353" />
+    <g
+       id="g4386"
+       transform="translate(56.158,839.78592)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
+         id="path4388"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:transform-center-y="-2.0479419"
+         inkscape:transform-center-x="-4.9547788"
+         sodipodi:nodetypes="cccccccc"
+         id="path4390"
+         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g4400"
+       transform="translate(391.60209,6.75397)">
+      <g
+         transform="translate(111.34978,210.75404)"
+         id="g4375">
+        <path
+           d="m 231.07321,499.9747 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path626"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4319"
+           d="m 249.29398,597.77999 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 249.2985,533.94593 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
+           id="path4321"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="-0.8537788"
+           inkscape:transform-center-y="-5.2672031" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+           d="m 192.65946,503.68994 c -5.55525,6.2109 -9.2174,75.03571 -47.31146,41.52113"
+           id="path4347"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:transform-center-y="-5.2672031"
+           inkscape:transform-center-x="-0.8537788"
+           sodipodi:nodetypes="cccccccc"
+           id="path4349"
+           d="m 136.1536,533.7696 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+           d="m 137.82586,596.30242 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
+           id="path4359"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:transform-center-y="-1.9921231"
+           inkscape:transform-center-x="3.1470162"
+           sodipodi:nodetypes="cccccccc"
+           id="path4361"
+           d="m 192.94014,632.35933 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.83015,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4394"
+         d="m 342.11112,710.63678 -39.34085,66.72517"
+         style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4396"
+         d="m 226.78843,777.74764 75.98184,-0.3857"
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4398"
+         d="M 342.11112,843.70142 303.54166,777.36195"
+         style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(245.16964,204.81767)"
+       id="g4622">
+      <path
+         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4624"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#000000;fill-opacity:1"
+         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
+         id="path4626"
+         sodipodi:nodetypes="ccccccccccccccccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#40bf4c;fill-opacity:1"
+         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
+         id="path4628"
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ff0000;fill-opacity:1"
+         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
+         id="path4630"
+         sodipodi:nodetypes="ccccccccccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+         id="path4632"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+         id="path4634"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-7.5938808"
+         inkscape:transform-center-y="-14.892703" />
+      <g
+         transform="matrix(-1,0,0,1,445.15327,89.614307)"
+         id="g4636">
+        <path
+           inkscape:transform-center-y="-14.892703"
+           inkscape:transform-center-x="-7.5938808"
+           sodipodi:nodetypes="cccccccc"
+           id="path4638"
+           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+           id="path4640"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       transform="translate(1119.7747,19.39156)"
+       id="g4642">
+      <g
+         id="g4644"
+         transform="translate(77.454547,62.727274)">
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4646"
+           d="m -106.81811,732.93789 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m -106.81359,669.10383 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
+           id="path4648"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="-0.8537788"
+           inkscape:transform-center-y="-5.2672031" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m -125.35075,635.04064 -39.34085,66.72517"
+           id="path4650"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m -125.35075,768.10528 -38.56946,-66.33947"
+           id="path4652"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+      </g>
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f9ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -48.545453,698.36219 39.272726,65.45455 -38.727276,66"
+         id="path4654"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="translate(1120.3201,-101.15389)"
+       id="g4656">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
+         id="path4658"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:transform-center-y="-5.2672031"
+         inkscape:transform-center-x="-0.8537788"
+         sodipodi:nodetypes="cccccccc"
+         id="path4660"
+         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m -174.40071,884.06059 75.981839,-0.3857"
+         id="path4662"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4664"
+         d="m -99.000001,883.54402 39.81818,-66.81819"
+         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4666"
+         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
+         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(1121.9565,-101.69934)"
+       id="g4668">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
+         id="path4670"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:transform-center-y="-1.9921231"
+         inkscape:transform-center-x="3.1470162"
+         sodipodi:nodetypes="cccccccc"
+         id="path4672"
+         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m -178.49162,893.69696 75.98184,-0.3857"
+         id="path4674"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4676"
+         d="m -103.90909,893.18039 40.909087,67.09091"
+         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4678"
+         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
+         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4722"
+       transform="translate(-68.56602,362.48887)">
+      <path
+         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4384"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="csc"
+         inkscape:connector-curvature="0"
+         id="path4692"
+         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+         id="path4694"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-0.4755438"
+         inkscape:transform-center-y="-5.8683169" />
+    </g>
+    <g
+       id="g4711"
+       transform="matrix(-1,0,0,1,318.82406,215.12694)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4713"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
+         id="path4715"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="csc" />
+      <path
+         inkscape:transform-center-y="-5.8683169"
+         inkscape:transform-center-x="-0.4755438"
+         sodipodi:nodetypes="cccccccc"
+         id="path4717"
+         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="matrix(-1,0,0,1,991.43724,158.30858)"
+       id="g4743">
+      <g
+         id="g4745"
+         transform="translate(111.34978,210.75404)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path4747"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 231.07321,499.9747 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+           d="m 249.29398,597.77999 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
+           id="path4749"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:transform-center-y="-5.2672031"
+           inkscape:transform-center-x="-0.8537788"
+           sodipodi:nodetypes="cccccccc"
+           id="path4751"
+           d="m 249.2985,533.94593 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4753"
+           d="m 192.65946,503.68994 c -5.55525,6.2109 -9.2174,75.03571 -47.31146,41.52113"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 136.1536,533.7696 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
+           id="path4755"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="-0.8537788"
+           inkscape:transform-center-y="-5.2672031" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4757"
+           d="m 137.82586,596.30242 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 192.94014,632.35933 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.83015,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
+           id="path4759"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="3.1470162"
+           inkscape:transform-center-y="-1.9921231" />
+      </g>
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 342.11112,710.63678 -39.34085,66.72517"
+         id="path4761"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 226.78843,777.74764 75.98184,-0.3857"
+         id="path4763"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 342.11112,843.70142 303.54166,777.36195"
+         id="path4765"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <g
+       id="g4767"
+       transform="matrix(-1,0,0,1,926.46374,167.44204)">
+      <g
+         transform="translate(77.454547,62.727274)"
+         id="g4769">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+           d="m -106.81811,732.93789 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
+           id="path4771"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:transform-center-y="-5.2672031"
+           inkscape:transform-center-x="-0.8537788"
+           sodipodi:nodetypes="cccccccc"
+           id="path4773"
+           d="m -106.81359,669.10383 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4775"
+           d="m -125.35075,635.04064 -39.34085,66.72517"
+           style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4777"
+           d="m -125.35075,768.10528 -38.56946,-66.33947"
+           style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         id="path4779"
+         d="m -48.545453,698.36219 39.272726,65.45455 -38.727276,66"
+         style="fill:none;fill-rule:evenodd;stroke:#f9ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4781"
+       transform="matrix(-1,0,0,1,925.91828,46.89659)">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4783"
+         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
+         id="path4785"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-0.8537788"
+         inkscape:transform-center-y="-5.2672031" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4787"
+         d="m -174.40071,884.06059 75.981839,-0.3857"
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -99.000001,883.54402 39.81818,-66.81819"
+         id="path4789"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
+         id="path4791"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g4793"
+       transform="matrix(-1,0,0,1,924.28192,46.35114)">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4795"
+         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
+         id="path4797"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="3.1470162"
+         inkscape:transform-center-y="-1.9921231" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4799"
+         d="m -178.49162,893.69696 75.98184,-0.3857"
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -103.90909,893.18039 40.909087,67.09091"
+         id="path4801"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
+         id="path4803"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       id="path4858"
+       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 287.2562,1338.4273 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="9.375"
+       y="558.61218"
+       id="text5571"
+       sodipodi:linespacing="100%"><tspan
+         sodipodi:role="line"
+         id="tspan5573"
+         x="9.375"
+         y="558.61218">git-annex tiling stickers</tspan><tspan
+         sodipodi:role="line"
+         x="9.375"
+         y="593.61218"
+         id="tspan5577">compliant with</tspan><tspan
+         sodipodi:role="line"
+         x="9.375"
+         y="628.61218"
+         id="tspan5575">https://github.com/terinjokes/StickerConstructorSpec/</tspan></text>
+  </g>
+</svg>
diff --git a/doc/stickers/hexdemos.svg b/doc/stickers/hexdemos.svg
new file mode 100644
--- /dev/null
+++ b/doc/stickers/hexdemos.svg
@@ -0,0 +1,628 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:ns2="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg3720"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="hexdemos.svg">
+  <defs
+     id="defs3722">
+    <clipPath
+       id="clip1">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 0,340.15625 481.89062,0 L 481.89062,0 0,0 0,340.15625 Z m 0,0"
+         id="path7" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="375"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="768"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata3725">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g10"
+       clip-path="url(#clip1)"
+       style="clip-rule:nonzero;display:inline"
+       transform="matrix(0.10894991,0,0,0.10894991,528.54623,740.43302)">
+      <path
+         id="path12"
+         d="M 0,340.15625 113.38672,170.07812 0,0 85.039062,0 198.42578,170.07812 85.039062,340.15625 0,340.15625 Z m 0,0"
+         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path14"
+         d="M 113.38672,340.15625 226.77344,170.07812 113.38672,0 l 85.03906,0 226.76953,340.15625 -85.03906,0 -70.86328,-106.29688 -70.86719,106.29688 -85.03906,0 z m 0,0"
+         style="fill:#82a7ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path16"
+         d="m 387.40234,240.94531 -37.79297,-56.6914 132.28125,-0.004 0,56.69531 -94.48828,0 z m 0,0"
+         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path18"
+         d="m 330.71094,155.90625 -37.79688,-56.691406 188.97656,-0.0039 0,56.695316 -151.17968,0 z m 0,0"
+         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       style="display:inline"
+       transform="matrix(0.47991457,0,0,0.47991457,210.94383,674.58843)"
+       id="Layer_1"
+       ns2:layer="yes"
+       ns2:dimmedPercent="50"
+       ns2:rgbTrio="#4F008000FFFF">
+      <g
+         id="g7">
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 51.986,57.297 c -1.797,0.025 0.34,0.926 2.686,1.287 0.648,-0.506 1.236,-1.018 1.76,-1.516 -1.461,0.358 -2.948,0.366 -4.446,0.229"
+           id="path9" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 61.631,54.893 c 1.07,-1.477 1.85,-3.094 2.125,-4.766 -0.24,1.192 -0.887,2.221 -1.496,3.307 -3.359,2.115 -0.316,-1.256 -0.002,-2.537 -3.612,4.546 -0.496,2.726 -0.627,3.996"
+           id="path11" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 65.191,45.629 c 0.217,-3.236 -0.637,-2.213 -0.924,-0.978 0.335,0.174 0.6,2.281 0.924,0.978"
+           id="path13" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 45.172,1.399 c 0.959,0.172 2.072,0.304 1.916,0.533 1.049,-0.23 1.287,-0.442 -1.916,-0.533"
+           id="path15" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="M 47.088,1.932 46.41,2.072 47.041,2.016 47.088,1.932"
+           id="path17" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 32.372,59.764 -0.252,1.26 c 1.181,1.604 2.118,3.342 3.626,4.596 -1.085,-2.118 -1.891,-2.993 -3.374,-5.856"
+           id="path21" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 35.164,59.654 c -0.625,-0.691 -0.995,-1.523 -1.409,-2.352 0.396,1.457 1.207,2.709 1.962,3.982 l -0.553,-1.63"
+           id="path23" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 84.568,48.916 -0.264,0.662 c -0.484,3.438 -1.529,6.84 -3.131,9.994 1.77,-3.328 2.915,-6.968 3.395,-10.656"
+           id="path25" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="M 45.527,0.537 C 46.742,0.092 48.514,0.293 49.803,0 48.123,0.141 46.451,0.225 44.8,0.438 l 0.727,0.099"
+           id="path27" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="m 2.872,23.219 c 0.28,2.592 -1.95,3.598 0.494,1.889 1.31,-2.951 -0.512,-0.815 -0.494,-1.889"
+           id="path29" />
+        <path
+           style="fill:#a80030"
+           inkscape:connector-curvature="0"
+           ns2:knockout="Off"
+           d="M 0,35.215 C 0.563,33.487 0.665,32.449 0.88,31.449 -0.676,33.438 0.164,33.862 0,35.215"
+           id="path31" />
+      </g>
+    </g>
+    <g
+       id="g4533"
+       transform="matrix(-1,0,0,-1,337.47913,1609.9151)">
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4511"
+         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
+         id="path4513"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-0.8537788"
+         inkscape:transform-center-y="-5.2672031" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4515"
+         d="m -174.40071,884.06059 75.981839,-0.3857"
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -99.000001,883.54402 39.81818,-66.81819"
+         id="path4517"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
+         id="path4519"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g4591"
+       transform="translate(184.79893,205.58643)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4573"
+         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccccccccc"
+         id="path4575"
+         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
+         style="fill:#000000;fill-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccc"
+         id="path4577"
+         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
+         style="fill:#40bf4c;fill-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccc"
+         id="path4579"
+         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
+         style="fill:#ff0000;fill-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4581"
+         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         inkscape:transform-center-y="-14.892703"
+         inkscape:transform-center-x="-7.5938808"
+         sodipodi:nodetypes="cccccccc"
+         id="path4583"
+         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4585"
+         transform="matrix(-1,0,0,1,445.15327,89.614307)">
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+           id="path4587"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="-7.5938808"
+           inkscape:transform-center-y="-14.892703" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4589"
+           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+    </g>
+    <g
+       transform="translate(12.550131,294.22209)"
+       id="g4612">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4614"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
+      <g
+         id="g4616">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
+           id="path4618"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           id="path4620"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="0.7747508"
+           inkscape:transform-center-y="-18.010798" />
+      </g>
+    </g>
+    <g
+       id="g4680"
+       transform="matrix(1,0,0,-1,127.78383,1360.044)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4682"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
+      <g
+         id="g4684">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
+           id="path4686"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           id="path4688"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="0.7747508"
+           inkscape:transform-center-y="-18.010798" />
+      </g>
+    </g>
+    <g
+       transform="matrix(1,2.0107719e-5,2.0107719e-5,-1,-101.29487,1223.1898)"
+       id="g4727">
+      <g
+         id="g4853"
+         transform="matrix(-0.9999191,0.01271977,-0.01271977,-0.9999191,626.31079,1260.0115)"
+         inkscape:transform-center-x="-16.572815"
+         inkscape:transform-center-y="-15.467961">
+        <path
+           inkscape:connector-curvature="0"
+           id="path4729"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+           d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
+           id="path4731"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="csc" />
+        <path
+           inkscape:transform-center-y="-5.8683169"
+           inkscape:transform-center-x="-0.4755438"
+           sodipodi:nodetypes="cccccccc"
+           id="path4733"
+           d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <g
+       transform="matrix(0.52225441,0.85278973,-0.85278973,0.52225441,588.38542,265.88987)"
+       id="g4735">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4737"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
+         id="path4739"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="csc" />
+      <path
+         inkscape:transform-center-y="-5.8683169"
+         inkscape:transform-center-x="-0.4755438"
+         sodipodi:nodetypes="cccccccc"
+         id="path4741"
+         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="matrix(0.52823316,0.84909936,0.84909936,-0.52823316,-149.77447,1484.5351)"
+       id="g4831">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
+         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
+         id="path4833"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:transform-center-y="-1.9921231"
+         inkscape:transform-center-x="3.1470162"
+         sodipodi:nodetypes="cccccccc"
+         id="path4835"
+         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m -178.49162,893.69696 75.98184,-0.3857"
+         id="path4837"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4839"
+         d="m -103.90909,893.18039 40.909087,67.09091"
+         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4841"
+         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
+         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4843"
+       transform="matrix(-0.48344807,-0.87537304,-0.87537304,0.48344807,910.12857,689.09663)"
+       inkscape:transform-center-x="48.4375"
+       inkscape:transform-center-y="-140.625">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4845"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
+      <g
+         id="g4847">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
+           id="path4849"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           id="path4851"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="0.7747508"
+           inkscape:transform-center-y="-18.010798" />
+      </g>
+    </g>
+    <g
+       transform="matrix(-1,0,0,1,629.2069,294.58461)"
+       id="g4878">
+      <g
+         id="g4880">
+        <path
+           d="m 183.90007,86.85828 77.00875,0 38.505,66.6925 -38.505,66.6925 -77.00875,0 -38.505,-66.6925 38.505,-66.6925 z"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4882"
+           inkscape:connector-curvature="0"
+           transform="matrix(-1,0,0,1,646.48904,412.98535)" />
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4884"
+           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           inkscape:transform-center-y="-18.010798"
+           inkscape:transform-center-x="0.7747508"
+           sodipodi:nodetypes="cccccccc"
+           id="path4886"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+      <g
+         id="g4888">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
+           id="path4890"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           id="path4892"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="0.7747508"
+           inkscape:transform-center-y="-18.010798" />
+      </g>
+    </g>
+    <g
+       transform="matrix(0,1,-1,0,962.67982,79.118649)"
+       id="g4906">
+      <path
+         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4908"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#000000;fill-opacity:1"
+         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
+         id="path4910"
+         sodipodi:nodetypes="ccccccccccccccccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#40bf4c;fill-opacity:1"
+         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
+         id="path4912"
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#ff0000;fill-opacity:1"
+         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
+         id="path4914"
+         sodipodi:nodetypes="ccccccccccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+         id="path4916"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+         id="path4918"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-7.5938808"
+         inkscape:transform-center-y="-14.892703" />
+      <g
+         transform="matrix(-1,0,0,1,445.15327,89.614307)"
+         id="g4920">
+        <path
+           inkscape:transform-center-y="-14.892703"
+           inkscape:transform-center-x="-7.5938808"
+           sodipodi:nodetypes="cccccccc"
+           id="path4922"
+           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
+           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
+           id="path4924"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       id="g4926"
+       transform="matrix(0.00271106,0.99999633,-0.99999633,0.00271106,872.97406,-95.227214)"
+       inkscape:transform-center-x="-104.62014"
+       inkscape:transform-center-y="7.2910125">
+      <path
+         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4928"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g4930">
+        <path
+           sodipodi:nodetypes="cc"
+           inkscape:connector-curvature="0"
+           id="path4932"
+           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           inkscape:transform-center-y="-18.010798"
+           inkscape:transform-center-x="0.7747508"
+           sodipodi:nodetypes="cccccccc"
+           id="path4934"
+           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <g
+       id="g4946"
+       transform="matrix(1,2.0107719e-5,2.0107719e-5,-1,-18.687743,786.98373)">
+      <g
+         inkscape:transform-center-y="-21.861258"
+         inkscape:transform-center-x="-6.0002714"
+         transform="matrix(-0.85808244,-0.51351196,0.51351196,-0.85808244,202.35599,1269.6551)"
+         id="g4948">
+        <path
+           d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4950"
+           inkscape:connector-curvature="0" />
+        <path
+           sodipodi:nodetypes="csc"
+           inkscape:connector-curvature="0"
+           id="path4952"
+           d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+           id="path4954"
+           sodipodi:nodetypes="cccccccc"
+           inkscape:transform-center-x="-0.4755438"
+           inkscape:transform-center-y="-5.8683169" />
+      </g>
+    </g>
+    <g
+       id="g4956"
+       transform="matrix(-0.87044162,0.49227164,-0.49227164,-0.87044162,888.94556,730.52873)">
+      <path
+         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
+         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path4958"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="csc"
+         inkscape:connector-curvature="0"
+         id="path4960"
+         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
+         id="path4962"
+         sodipodi:nodetypes="cccccccc"
+         inkscape:transform-center-x="-0.4755438"
+         inkscape:transform-center-y="-5.8683169" />
+    </g>
+    <rect
+       style="fill:#006e93;fill-opacity:1;fill-rule:evenodd;stroke:#009453;stroke-width:2.09441543;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.80000019;stroke-opacity:1"
+       id="rect5559"
+       width="74.023422"
+       height="96.675735"
+       x="515.27136"
+       y="627.57892"
+       rx="0"
+       ry="0" />
+    <rect
+       ry="0"
+       rx="0"
+       y="627.59033"
+       x="437.39053"
+       height="96.652977"
+       width="75.657951"
+       id="rect5569"
+       style="fill:#ff7f26;fill-opacity:1;fill-rule:evenodd;stroke:#ff5739;stroke-width:2.11716366;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.80000019;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn b/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn
--- a/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn
+++ b/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn
@@ -2,3 +2,5 @@
 
 N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning
 [[!meta author=yoh]]
+
+> [[done]] --[[Joey]]
diff --git a/doc/todo/smudge.mdwn b/doc/todo/smudge.mdwn
--- a/doc/todo/smudge.mdwn
+++ b/doc/todo/smudge.mdwn
@@ -15,6 +15,10 @@
 > git to handle this sort of case in an efficient way.. just needs someone
 > to do the work. --[[Joey]] 
 
+>> Update 2015: git status only calls the clean filter for files
+>> that the index says are modified, so this is no longer a problem.
+>> --[[Joey]]
+
 ----
 
 The clean filter is run when files are staged for commit. So a user could copy
@@ -36,35 +40,26 @@
 and have it use git-annex when .gitattributes says to. Also, annexed
 files can be directly modified without having to `git annex unlock`.
 
-### design
+### configuration
 
 In .gitattributes, the user would put something like "* filter=git-annex".
 This way they could control which files are annexed vs added normally.
 
-(git-annex could have further controls to allow eg, passing small files
-through to regular processing. At least .gitattributes is a special case,
-it should never be annexed...)
-
-For files not configured this way, git-annex could continue to use
-its symlink method -- this would preserve backwards compatability,
-and even allow mixing the two methods in a repo as desired.
-
-To find files in the repository that are annexed, git-annex would do
-`ls-files` as now, but would check if found files have the appropriate
-filter, rather than the current symlink checks. To determine the key
-of a file, rather than reading its symlink, git-annex would need to
-look up the git blob associated with the file -- this can be done
-efficiently using the existing code in `Branch.catFile`.
-
-The clean filter would inject the file's content into the annex, and hard
-link from the annex to the file. Avoiding duplication of data.
+It would also be good to allow using this without having to specify
+the files in .gitattributes. Just use "* filter=git-annex" there, and then
+let git-annex decide which files to annex and which to pass through the
+smudge and clean filters as-is. The smudge filter can just read a little of
+its input to see if it's a pointer to an annexed file. The clean filter
+could apply annex.largefiles to decide whether to annex a file's content or
+not.
 
-The smudge filter can't do that, so to avoid duplication of data, it
-might always create an empty file. To get the content, `git annex get`
-could be used (which would hard link it). A `post-checkout` hook might
-be used to set up hard links for all currently available content.
+For files not configured this way in .gitattributes, git-annex could
+continue to use its symlink method -- this would preserve backwards
+compatability, and even allow mixing the two methods in a repo as desired.
+(But not switching an existing repo between indirect and direct modes;
+the user decides which mode to use when adding files to the repo.)
 
-#### clean
+### clean
 
 The trick is doing it efficiently. Since git a2b665d, v1.7.4.1,
 something like this works to provide a filename to the clean script:
@@ -100,7 +95,7 @@
 > but it seems to avoid this problem.
 > --[[Joey]]
 
-#### smudge
+### smudge
 
 The smudge script can also be provided a filename with %f, but it
 cannot directly write to the file or git gets unhappy.
@@ -108,18 +103,220 @@
 > Still the case in 2015. Means an unnecesary read and pipe of the file
 > even if the content is already locally available on disk. --[[Joey]]
 
-### dealing with partial content availability
+### partial checkouts
 
-The smudge filter cannot be allowed to fail, that leaves the tree and
-index in a weird state. So if a file's content is requested by calling
-the smudge filter, the trick is to instead provide dummy content,
-indicating it is not available (and perhaps saying to run "git-annex get").
+.. Are very important, otherwise a repo can't scale past the size of the
+smallest client's disk!
 
-Then, in the clean filter, it has to detect that it's cleaning a file
-with that dummy content, and make sure to provide the same identifier as
-it would if the file content was there. 
+It would be nice if the smudge filter could hard link or symlink a work
+tree file to the annex object.
 
+But currently, the smudge filter can't modify the work tree file on its own
+-- git always modifies the file after getting the output of the smudge
+filter, and will stumble over any modifications that the smudge filter
+makes. And, it's important that the smudge filter never fail as that will
+leave the repo in a bad state.
+
+Seems the best that can be done is for the smudge filter to copy from the
+annex object when the object is present. When it's not present, the smudge
+filter should provide a pointer to its content.
+
+The clean filter should detect when it's operating on that pointer file.
+
 I've a demo implementation of this technique in the scripts below.
+
+### deduplication
+
+.. Is nice; needing 2 copies of every annexed file is annoying.
+
+Unfortunately, when using smudge/clean, `git merge` does not preserve a
+smudged file in the work tree when renaming it. It instead deletes the old
+file and asks the smudge filter to smudge the new filename.
+
+So, copies need to be maintained in .git/annex/objects, though it's ok
+to use hard links to the work tree files.
+
+Even if hard links are used, smudge needs to output the content of an
+annexed file, which will result in duplication when merging in renames of
+files.
+
+### design
+
+Goal: Get rid of current direct mode, using smudge/clean filters instead to
+cover the same use cases, more flexibly and robustly.
+
+Use case 1:
+
+A user wants to be able to edit files, and git-add, git commit,
+without needing to worry about using git-annex to unlock files, add files,
+etc.
+
+Use case 2:
+
+Using git-annex on a crippled filesystem that does not support symlinks.
+
+Data:
+
+* An annex pointer file has as its first line the git-annex key
+  that it's standing in for. Subsequent lines of the file might
+  be a message saying that the file's content is not currently available.
+  An annex pointer file is checked into the git repository the same way
+  that an annex symlink is checked in.
+* A file map is  maintained by git-annex, to keep track of the keys
+  that are used by files in the working tree.
+
+Configuration: 
+
+* .gitattributes tells git which files to use git-annex's smudge/clean
+  filters with. Typically, all files except for dotfiles:
+
+	* filter=annex
+	.* !filter
+
+* annex.largefiles tells git-annex which files should in fact be put in 
+  the annex. Other files are passed through the smudge/clean as-is and
+  have their contents stored in git.
+
+* annex.direct is repurposed to configure how the assistant adds files.
+  When set to true, they're added unlocked.
+
+git-annex clean:
+
+* Run by `git add` (and diff and status, etc), and passed the
+  filename, as well as fed the file content on stdin.
+
+  Look at configuration to decide if this file's content belongs in the
+  annex. If not, output the file content to stdout.
+
+  Generate annex key from filename and content from stdin.
+
+  Hard link .git/annex/objects to the file, if it doesn't already exist.
+  (On platforms not supporting hardlinks, copy the file to
+  .git/annex/objects.)
+
+  This is done to prevent losing the only copy of a file when eg
+  doing a git checkout of a different branch, or merging a commit that
+  renames or deletes a file. But, no attempt is made to 
+  protect the object from being modified. If a user wants to
+  protect object contents from modification, they should use
+  `git annex add`, not `git add`, or they can `git annex lock` after adding,.
+
+  There could be a configuration knob to cause a copy to be made to
+  .git/annex/objects -- useful for those crippled filesystems. It might
+  also drop that copy once the object gets uploaded to another repo ...
+  But that gets complicated quickly.
+
+  Update file map.
+
+  Output the pointer file content to stdout.
+
+git-annex smudge:
+
+* Run by eg `git checkout`
+  and passed the filename, as well as fed the pointer file content on stdin.
+
+  Update file map.
+
+  When an object is present in the annex, outputs its content to stdout.
+  Otherwise, outputs the file pointer content.
+
+git annex direct/indirect:
+
+  Previously these commands switched in and out of direct mode.
+  Now they become no-ops.
+
+git annex lock/unlock:
+
+  Makes sense for these to change to switch files between using
+  git-annex symlinks and pointers. So, this provides both a way to
+  transition repositories to using pointers, and a cleaner unlock/lock
+  for repos using symlinks.
+
+  unlock will stage a pointer file, and will copy the content of the object
+  out of .git/annex/objects to the work tree file. (Might want a --hardlink
+  switch.)
+  
+  lock will replace the current work tree file with the symlink, and stage it.
+  Note that multiple work tree files could point to the same object.
+  So, if the link count is > 1, replace the annex object with a copy of
+  itself to break such a hard link. Always finish by locking down the
+  permissions of the annex object.
+
+#### file map
+
+The file map needs to map from `Key -> [File]`. `File -> Key`
+seems useful to have, but in practice is not worthwhile.
+
+Drop and get operations need to know what files in the work tree use a
+given key in order to update the work tree.
+
+git-annex commands that look at annex symlinks to get keys to act on will
+need fall back to either consulting the file map, or looking at the staged
+file to see if it's a pointer to a key. So a `File -> Key` map is a possible
+optimisation.
+
+Question: If the smudge/clean filters update the file map incrementally
+based on the pointer files they generate/see, will the result
+always be consistent with the content of the working tree?
+
+This depends on when git calls the smudge/clean filters and on what.
+In particular:
+
+* Does the clean filter always get called when adding a relevant 
+  file to git? Yes.
+* Is the clean filter called at any other time? Yes, for example
+  git diff will clean relevant modified files to generate the diff.
+  So, the clean filter may see file versions that have not yet been staged
+  in git.
+* Is the clean filter ever passed content not in the work tree?
+  I don't think so, but not 100% sure.
+* Is the smudge filter always called when git updates a relevant file
+  in the work tree? Yes.
+* Is the smudge filter called at any other time? Seems unlikely but then
+  there could be situations with a detached work tree or such.
+* Does git call any useful hooks when removing a file from the work tree,
+  or converting it to not be annexed?
+  No!
+
+From this analysis, any file map generated by the smudge/clean filters
+is necessary potentially innaccurate. It may list deleted files.
+It may or may not reflect current unstaged changes from the work tree.
+
+Follows that any use of the file map needs to verify the info from it,
+and throw out bad cached info (updating the map to match reality). 
+
+When downloading a key, check if the files listed in the file map are
+still pointer files in the work tree, and only replace them with the
+content if so. 
+
+When dropping a key, check if the files listed for it in the file map are
+unmodified in the work tree, and are staged as pointers to the key,
+and only reset them to the pointers if so. Note that this means that
+a modified work tree file that has not yet been staged, but that
+corresponds to a key, won't be reset when the key is dropped.
+This is probably not a big deal; the user will either add the
+file, which will add the key back, or reset the file.
+
+Does the `File -> Key` map have any benefits given this innaccuracy?
+Answer seems to be no; any answer that map gives may be innaccurate and
+needs to be verified by looking at actual repo content, so might as well
+just look at the repo content in the first place..
+
+#### Upgrading
+
+annex.version changes to 6
+
+Upgrade should be handled automatically.
+
+On upgrade, update .gitattributes with a stock configuration, unless
+it already mentions "filter=annex".
+
+Upgrading a direct mode repo needs to switch it out of bare mode, and
+needs to run `git annex unlock` on all files (or reach the same result).
+So will need to stage changes to all annexed files.
+
+When a repo has some clones indirect and some direct, the upgraded repo
+will have all files unlocked, necessarily in all clones.
 
 ----
 
diff --git a/git-annex.cabal b/git-annex.cabal
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -1,5 +1,5 @@
 Name: git-annex
-Version: 5.20151116
+Version: 5.20151208
 Cabal-Version: >= 1.8
 License: GPL-3
 Maintainer: Joey Hess <id@joeyh.name>
diff --git a/man/git-annex-clean.1 b/man/git-annex-clean.1
new file mode 100644
--- /dev/null
+++ b/man/git-annex-clean.1
@@ -0,0 +1,33 @@
+.TH git-annex-clean 1
+.SH NAME
+git-annex-clean \- git filter driver for git-annex
+.PP
+.SH SYNOPSIS
+git annex clean
+.PP
+.SH DESCRIPTION
+When git-annex is used as a git filter driver, this command is run
+by git commands such as \fBgit add\fP. It generates a file that
+is added to the git repository and points to the git-annex object
+containing the content of a large file.
+.PP
+To configure git to use git-annex as a git filter driver, place the
+following in the .gitattributes file:
+.PP
+ * filter=annex
+\&.* !filter
+.PP
+The annex.largefiles config is consulted to decide if a given file should
+be added to git as\-is, or if its content are large enough to need to use
+git-annex.
+.PP
+.SH SEE ALSO
+git-annex(1)
+.PP
+git-annex\-smudge(1)
+.PP
+.SH AUTHOR
+Joey Hess <id@joeyh.name>
+.PP
+.PP
+
diff --git a/man/git-annex-smudge.1 b/man/git-annex-smudge.1
new file mode 100644
--- /dev/null
+++ b/man/git-annex-smudge.1
@@ -0,0 +1,44 @@
+.TH git-annex-smudge 1
+.SH NAME
+git-annex-smudge \- git filter driver for git-annex
+.PP
+.SH SYNOPSIS
+git annex smudge [\-\-clean] file
+.PP
+.SH DESCRIPTION
+This command lets git-annex be used as a git filter driver which lets
+annexed files in the git repository to be unlocked at all times, instead
+of being symlinks.
+.PP
+When adding a file with \fBgit add\fP, the annex.largefiles config is
+consulted to decide if a given file should be added to git as\-is,
+or if its content are large enough to need to use git-annex. To force a
+file that would normally be added to the annex to be added to git as\-is,
+this can be temporarily overridden. For example:
+.PP
+ git \-c annex.largefiles='exclude=*' add myfile
+.PP
+The git configuration to use this command as a filter driver is as follows.
+This is normally set up for you by git-annex init, so you should
+not need to configure it manually.
+.PP
+ [filter "annex"]
+         smudge = git-annex smudge %f
+         clean = git-annex smudge \-\-clean %f
+.PP
+To make git use that filter driver, it needs to be configured in
+the .gitattributes file or in \fB.git/config/attributes\fP. The latter
+is normally configured when a repository is initialized, with the following
+contents:
+.PP
+ * filter=annex
+\&.* !filter
+.PP
+.SH SEE ALSO
+git-annex(1)
+.PP
+.SH AUTHOR
+Joey Hess <id@joeyh.name>
+.PP
+.PP
+
diff --git a/man/git-annex.1 b/man/git-annex.1
--- a/man/git-annex.1
+++ b/man/git-annex.1
@@ -674,9 +674,10 @@
 The default reserve is 1 megabyte.
 .IP
 .IP "\fBannex.largefiles\fP"
-Allows configuring which files \fBgit annex add\fP and the assistant consider
-to be large enough to need to be added to the annex. By default,
-all files are added to the annex.
+Allows configuring which files are considered to be large enough to
+need to be added to the annex. By default, all specified files are added
+to the annex, but configuring this can cause the small files to be
+checked into git, without using the annex.
 .IP
 The value is a preferred content expression. See git-annex\-preferred\-content(1)
 for details.
@@ -684,6 +685,15 @@
 Example:
 .IP
  annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h)
+.IP
+This setting is checked by \fBgit annex add\fP, \fBgit annex import\fP and the assistant.
+It's also used by \fBgit annex addurl\fP and \fBgit annex importfeed\fP when
+downloading files.
+.IP
+It can be useful to temporarily override it via \-c at the command line.
+For example:
+.IP
+ git annex add \-c annex.largefiles='include=*' 99kbfile
 .IP
 .IP "\fBannex.numcopies\fP"
 This is a deprecated setting. You should instead use the
